創建物理備庫
?
機器名 ? ? ? ? ? ? ? ? ? ? | a1 ? ? ? ? ? ? ? ? ? ? | a2 ? ? ? ? ? ? ? ? ? ? |
IP: ? ? ? ? ? ? ? ? ? ? | 192.168.1.10 ? ? ? ? ? ? ? ? ? ? | 192.168.1.20 ? ? ? ? ? ? ? ? ? ? |
Net_Name ? ? ? ? ? ? ? ? ? ? | a1 ? ? ? ? ? ? ? ? ? ? | a2 ? ? ? ? ? ? ? ? ? ? |
SID ? ? ? ? ? ? ? ? ? ? | a1 ? ? ? ? ? ? ? ? ? ? | a2 ? ? ? ? ? ? ? ? ? ? |
DB_UNIQUE_NAME ? ? ? ? ? ? ? ? ? ? | a1 ? ? ? ? ? ? ? ? ? ? | a2 ? ? ? ? ? ? ? ? ? ? |
?
注:主節點上創建數據庫a1,備節點上只安裝oracle軟件不創建任何數據庫;
1.配置listener.ora
主節點listener.ora:
?
SID_LIST_LISTENER=
?? (SID_LIST=
?????? (SID_DESC=
????????? (GLOBAL_DBNAME=a1)
????????? (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
????????? (SID_NAME=a1)
?????? )
?? )
LISTENER =
? (ADDRESS_LIST=
?????? (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=1521))
?????? (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))
? )
?
備節點listener.ora:
SID_LIST_LISTENER=
?? (SID_LIST=
?????? (SID_DESC=
????????? (GLOBAL_DBNAME=a1)
????????? (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
????????? (SID_NAME=a1)
?????? )
?? )
LISTENER =
? (ADDRESS_LIST=
?????? (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.20)(PORT=1521))
?????? (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))
? )
?
2.配置tnsnames.ora(主備節點的tnsname.ora內容一樣:)
?
?
a1=
?(DESCRIPTION =
??? (ADDRESS_LIST =
??? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
??? )
???? (CONNECT_DATA =
????? (SERVICE_NAME = a1)
???? )
?)
a2=
?(DESCRIPTION =
??? (ADDRESS_LIST =
??? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.20)(PORT = 1521))
??? )
???? (CONNECT_DATA =
????? (SERVICE_NAME = a2)
???? )
?)
?
?3.在主庫啟用歸檔并且啟用強制歸檔
? 步驟1:alter database force logging;
?????????????? archive log list;
? 步驟2:在mount狀態下
????????????? alter database archivelog;
? 步驟3:alter database open;
????????????? archive log list;
?
4.在主庫上創建密碼文件
?orapwd file='/u01/app/oracle/product/11.2.0/db_1/dbs/orapwa1.ora' password=xyc entries=10
?
5.創建standby redo log
alter database add standby logfile
group 4 ('/u01/app/oracle/oradata/a1/standby_redo04a.log','/u01/app/oracle/oradata/a1/standby_redo04b.log') size 50m,
group 5 ('/u01/app/oracle/oradata/a1/standby_redo05a.log','/u01/app/oracle/oradata/a1/standby_redo05b.log') size 50m,
group 6 ('/u01/app/oracle/oradata/a1/standby_redo06a.log','/u01/app/oracle/oradata/a1/standby_redo06b.log') size 50m,
group 7 ('/u01/app/oracle/oradata/a1/standby_redo07a.log','/u01/app/oracle/oradata/a1/standby_redo07b.log') size 50m;
?
注意:
Oracle 建議你在創建 standby 時就考慮 standby redolog 配置的問題。standby redologs 與 online redologs
非常類似,應該說兩者只是服務對象不同,其它參數屬性甚至操作的命令格式幾乎都一樣,你在設計 standby
redologs 的時候完全可以借鑒創建 online redologs 的思路,比如多個文件組啦,每組多個文件冗余之類的。
除些之外呢,oracle 提供了一些標準的建議如下:
? 確保 standby redo log 的文件大小與 primary 數據庫 online redo log 文件大小相同。
這個很好理解的吧,就是為了接收和應用方便嘛。
? 創建適當的日志組
一般而言, standby redo 日志文件組數要比 primary 數據庫的 online redo 日志文件組數至少多一個。
推薦 standby redo 日志組數量基于 primary 數據庫的線程數(這里的線程數可以理解為 rac 結構中的 rac
節點數)。
有一個推薦的公式可以做參考:(每線程的日志組數+1)*最大線程數
例如 primary 數據庫有兩個線程,每個線程分配兩組日志,則 standby 日志組數建議為 6 組,使用
這個公式可以降低 primary 數據庫實例 LGWR 進程鎖住的可能性。
提示:邏輯 standby 數據庫有可能需要視工作量增加更多的 standby redo log 文件(或增加歸檔進程),
因為邏輯 standby 需要同時寫 online redo log 文件。
?
?
6.在主庫創建pfile,然后修改:
create pfile from spfile;
?
修改pfile
主庫:
DB_UNIQUE_NAME='a1'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(a1,a2)'
log_archive_dest_1='location=/archive1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=a1'
log_archive_dest_2='service=a2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=a2'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
fal_server=a2
fal_client=a1
remote_login_passwordfile='EXCLUSIVE'
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
db_file_name_convert='/u01/app/oracle/oradata/a1','/u01/app/oracle/oradata/a1'
log_file_name_convert='/u01/app/oracle/oradata/a1/','/u01/app/oracle/oradata/a1'
STANDBY_FILE_MANAGEMENT=AUTO
備庫:
DB_UNIQUE_NAME='a2'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(a1,a2)'
log_archive_dest_1='location=/archive1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=a2'
log_archive_dest_2='service=a1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=a1'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
fal_server=a1
fal_client=a2
remote_login_passwordfile='EXCLUSIVE'
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
db_file_name_convert='/u01/app/oracle/oradata/a1','/u01/app/oracle/oradata/a1'
log_file_name_convert='/u01/app/oracle/oradata/a1/','/u01/app/oracle/oradata/a1'
STANDBY_FILE_MANAGEMENT=AUTO
7.創建standby數據控制文件
alter database create standby controlfile as '/u01/app/oracle/oradata/a1/standby.ctl';
?8 8.
SQL> startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/inita1.ora';
ORACLE instance started.
99
Total System Global Area? 417546240 bytes
Fixed Size????????????????? 2213936 bytes
Variable Size???????????? 335546320 bytes
Database Buffers?????????? 75497472 bytes
Redo Buffers??????????????? 4288512 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile;
?
File created.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
?
9.拷貝數據文件,standby controlfile,密碼文件,參數文件,至a2服務器上相關位置
10.,修改參數文件和修改standby controlfile名字做備庫控制文件?
a1.__db_cache_size=75497472
a1.__java_pool_size=16777216
a1.__large_pool_size=4194304
a1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
a1.__pga_aggregate_target=150994944
a1.__sga_target=268435456
a1.__shared_io_pool_size=0
a1.__shared_pool_size=155189248
a1.__streams_pool_size=8388608
*.audit_file_dest='/u01/app/oracle/admin/a1/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/a1/control01.ctl','/u01/app/oracle/oradata/a1/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='a1'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=a1XDB)'
*.memory_target=419430400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
DB_UNIQUE_NAME='a2'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(a1,a2)'
log_archive_dest_1='location=/archive1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=a2'
log_archive_dest_2='service=a1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=a1'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
fal_server=a1
fal_client=a2
remote_login_passwordfile='EXCLUSIVE'
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
db_file_name_convert='/u01/app/oracle/oradata/a1','/u01/app/oracle/oradata/a1'
log_file_name_convert='/u01/app/oracle/oradata/a1/','/u01/app/oracle/oradata/a1'
STANDBY_FILE_MANAGEMENT=AUTO
?
?
[oracle@a2 a1]$ cp standby.ctl control01.ctl
[oracle@a2 a1]$ cp standby.ctl control02.ctl
[oracle@a2 a1]$ cp standby.ctl control03.ctl
?
?
11.確定監聽,tns正常后,啟動備庫到mount狀態
startup mount
12.
備庫上執行以下命令使備庫自動應用已歸檔的日志
?ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
?
13.
驗證:
.在主備庫上看當前已歸檔日志
SQL> select sequence#,first_time,next_time from v$archived_log order by sequence#;
如果主庫的歸檔日志已傳送到備機,并被備庫成功就用,表示DATAGUARD已配置成功.
?
?
?
?
?
?
?
?
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
