Oracle11gR2 Dataguard搭建

來源:互聯網
上載者:User

標籤:des   io   ar   os   使用   sp   for   檔案   資料   

資料庫版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0主庫ip:192.168.133.133   instance_name:orcl    service_name:pdb    主機名稱:dg1備庫ip:192.168.133.134   instance_name:orcl    service_name:sdb     主機名稱:dg2(注意,在虛擬機器上進行操作,網路連接方式最好選擇host only,這樣內部網路才會穩定,主庫備庫間的通訊才更加正常)  --修改主備庫hosts檔案:主庫:[[email protected] ~]# cat /etc/hosts127.0.0.1                         dg1 localhost: :1                                   localhost6.localdomain6 localhost6192.168.133.133             dg1192.168.133.134             dg2 備庫:[[email protected] ~]# cat /etc/hosts127.0.0.1                        dg2 localhost: :1                                  localhost6.localdomain6 localhost6192.168.133.133            dg1192.168.133.134            dg2  --看看防火牆是否關閉:[[email protected] ~]# /etc/init.d/iptables status 
Firewall is stopped.  --搭建DG前的準備工作:開啟資料庫logging和archivelog modeSQL>alter database force logging;檢查:SQL>select force_logging from v$database;(應為YES)檢查資料庫是否處于歸檔模式:SQL>select log_mode from v$database;如果資料庫沒有處于歸檔模式,那麼將資料庫shutdow immediate;重啟到mount,執行SQL>alter database archivelog;SQL>alter database open;SQL>archive log list;  --配置主備庫的監聽和網路服務名:主庫:listener.ora:SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (GLOBAL_DBNAME = pdb)      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)      (SID_NAME = orcl)    )  ) LISTENER =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))  ) ADR_BASE_LISTENER = /u01/app/oracle tnsnames.ora:PDB =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.133)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = pdb)    )  ) SDB =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.134)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = sdb)    )  ) ORCL =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))    )    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = orcl)    )  ) 備庫:listener.ora:SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (GLOBAL_DBNAME = sdb)      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)      (SID_NAME = orcl)    )  ) LISTENER =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = dg2)(PORT = 1521))  ) ADR_BASE_LISTENER = /u01/app/oracle tnsnames.ora:PDB =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.133)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = pdb)    )  ) SDB =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.134)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = sdb)    )  )  --啟動主備庫的監聽:lsnrctl start  --建立備庫的口令檔案:如果主庫中有就直接使用scp命令拷貝到備庫所在伺服器相應目錄中,如果沒有就使用orapwd命令建立:
orapwd  file=xxx   password=xxx  entries=xx  --建立主備庫的pfile,添加相應的參數:主庫:SQL>create pfile from spfile;[[email protected] dbs]$ vi initorcl.ora添加如下內容:*.instance_name=orcl*.db_unique_name=pdb*.log_archive_config=‘dg_config=(pdb,sdb)‘*.fal_server=sdb*.fal_client=pdb*.log_archive_dest_2=‘service=sdb lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=sdb‘*.LOG_ARCHIVE_DEST_STATE_1=ENABLE*.LOG_ARCHIVE_DEST_STATE_2=ENABLE*.STANDBY_FILE_MANAGEMENT=AUTO 如果主備庫的資料檔案及記錄檔不在同一個目錄,則需要添加如下兩個參數檔案,路徑為先遠程後本地:

*.DB_FILE_NAME_CONVERT=‘/u01/oradata/sdb/‘,‘/u01/oradata/pdb/‘

*.LOG_FILE_NAME_CONVERT=‘/u01/oradata/sdb/‘,‘/u01/oradata/pdb/‘

 備庫:使用scp命令將主庫的pfile拷貝到備庫所在伺服器相同目錄下,並修改如下參數:[[email protected] dbs]$ vi initorcl.ora*.instance_name=orcl*.db_unique_name=sdb*.log_archive_config=‘dg_config=(pdb,sdb)‘*.fal_server=pdb*.fal_client=sdb*.log_archive_dest_2=‘service=pdb lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=pdb‘*.LOG_ARCHIVE_DEST_STATE_1=ENABLE*.LOG_ARCHIVE_DEST_STATE_2=ENABLE*.STANDBY_FILE_MANAGEMENT=AUTO  --建立備庫相應的目錄(以下是我的路徑):資料檔案和記錄檔目錄/u01/app/oracle/oradata/orcl/閃回區目錄:/u01/app/oracle/flash_recovery_area/orcl警報記錄檔目錄:/u01/app/oracle/diag/rdbms/sdb/orcl/trace歸檔記錄檔目錄:/ss/archivelog/orcl  --備庫:以pfile建立spfile並啟動資料庫到nomount:SQL>startrup nomount pfile=‘/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora‘SQL>create spfile from pfile;SQL>shutdown immediate;SQL>startup nomount  --檢測主備庫的網路連通性:主庫:SQL> conn sys/[email protected] as sysdba 
Connected. 
SQL> conn sys/[email protected] as sysdba 
Connected.備庫:SQL> conn sys/[email protected] as sysdba 
Connected. 
SQL> conn sys/[email protected] as sysdba 
Connected.  --使用rman備份資料庫:備份當前控制檔案:RMAN>backup format ‘/ss/backup/controlfile_%U‘ current controlfile for standby;備份資料檔案和歸檔記錄檔:RMAN>backup format ‘/ss/backup/db_%U‘ database plus archivelog;  --把備份組拷貝到和主庫一樣的目錄/ss/backup/下:scp   /ss/backup/*   [email protected]:/ss/backup/  --physical standby database的建立--上面的步驟中我們已經將備庫啟動到nomount了,開啟rman,使用rman的rman duplicate建立備用資料庫:[[email protected] ~]$rman target sys/[email protected] auxiliary /RMAN>duplicate target database for standby nofilenamecheck;備用資料庫完成之後,資料庫會自動開啟到mount:SQL>select status from v$instance;(如果主備目錄不同:duplicate target database for standby;如果主備目錄相同:duplicate target database for standby nofilenamecheck;)   --修改備庫為恢複管理員模式,使備庫可以應用主庫的redo資料,實現同步:SQL>alter database recover managed standby database disconnect from session;或SQL>alter database recover managed standby database using current logfile disconnect from session;  --檢查是否有錯誤資訊出現:SQL>select error from v$archive_dest where target=‘STANDBY‘;  --檢查備庫日誌應用情況:SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;    SEQUENCE# FIRST_TIM NEXT_TIME APPLIED---------- --------- --------- ---------        30 01-NOV-14 01-NOV-14 YES        31 01-NOV-14 01-NOV-14 YES        32 01-NOV-14 02-NOV-14 YES        33 02-NOV-14 02-NOV-14 YES        34 02-NOV-14 02-NOV-14 YES        35 02-NOV-14 02-NOV-14 YES        36 02-NOV-14 02-NOV-14 YES        37 02-NOV-14 02-NOV-14 YES --在主庫切換日誌,在備庫中查看日誌應用情況: SEQUENCE# FIRST_TIM NEXT_TIME APPLIED---------- --------- --------- ---------        30 01-NOV-14 01-NOV-14 YES        31 01-NOV-14 01-NOV-14 YES        32 01-NOV-14 02-NOV-14 YES        33 02-NOV-14 02-NOV-14 YES        34 02-NOV-14 02-NOV-14 YES        35 02-NOV-14 02-NOV-14 YES        36 02-NOV-14 02-NOV-14 YES        37 02-NOV-14 02-NOV-14 YES        38 02-NOV-14 03-NOV-14 IN-MEMORY  --為主備庫分別建立standby記錄檔(至少比redo log多一組):取消備庫日誌應用:SQL>alter database recover managed standby database cancel;主庫:SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo01.log‘ size 50m;SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo02.log‘ size 50m;SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo03.log‘ size 50m;SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo04.log‘ size 50m;SQL> select group#,status,member from v$logfile;     GROUP# STATUS MEMBER---------- ------- --------------------------------------------------         3 /u01/app/oracle/oradata/orcl/redo03.log         2 /u01/app/oracle/oradata/orcl/redo02.log         1 /u01/app/oracle/oradata/orcl/redo01.log         4 /u01/app/oracle/oradata/orcl/stdredo01.log         5 /u01/app/oracle/oradata/orcl/stdredo02.log         6 /u01/app/oracle/oradata/orcl/stdredo03.log         7 /u01/app/oracle/oradata/orcl/stdredo04.log7 rows selected. 備庫:SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo01.log‘ size 50m;SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo02.log‘ size 50m;SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo03.log‘ size 50m;SQL>alter database add standby logfile ‘/u01/app/oracle/oradata/orcl/stdredo04.log‘ size 50m;SQL> select group#,status,member from v$logfile;SQL> select group#,status,member from v$logfile;     GROUP# STATUS MEMBER---------- ------- --------------------------------------------------------------------------------         3 /u01/app/oracle/flash_recovery_area/SDB/onlinelog/o1_mf_3_b5bt92v2_.log         2 /u01/app/oracle/flash_recovery_area/SDB/onlinelog/o1_mf_2_b5bt90kf_.log         1 /u01/app/oracle/flash_recovery_area/SDB/onlinelog/o1_mf_1_b5bt8yfc_.log         4 /u01/app/oracle/oradata/orcl/stdredo01.log         5 /u01/app/oracle/oradata/orcl/stdredo02.log         6 /u01/app/oracle/oradata/orcl/stdredo03.log         7 /u01/app/oracle/oradata/orcl/stdredo04.log 7 rows selected.  --啟用備庫日誌應用:SQL>alter database recover managed standby database disconnect from session; --在備庫中確定相關進程是否全部啟動:SQL> select process,status from v$managed_standby; PROCESS STATUS--------- ------------ARCH CLOSINGARCH CLOSINGARCH CONNECTEDARCH CLOSINGRFS IDLERFS IDLERFS IDLEMRP0 WAIT_FOR_LOGRFS IDLE 9 rows selected.  --同步驗證:--查看備庫是否存在日誌斷點:SQL> select * from v$archive_gap; no rows selected如果存在日誌斷點,就要到主庫中找到這些日誌:SQL> select sequence#,name from v$archived_log t1,v$archive_gap t2 where t1.thread#=t2.thread#;找到這些記錄檔之後,將這些檔案拷貝到備庫,並註冊到備庫進行應用:SQL>alter database register logfile ‘xxx‘; 主庫:SQL> alter tablespace test add datafile ‘/u01/app/oracle/oradata/orcl/test02.dbf‘ size 10m autoextend off; Tablespace altered. SQL> alter system switch logfile; System altered. SQL> select name from v$datafile; NAME--------------------------------------------------------------------------------/u01/app/oracle/oradata/orcl/system01.dbf/u01/app/oracle/oradata/orcl/sysaux01.dbf/u01/app/oracle/oradata/orcl/undotbs01.dbf/u01/app/oracle/oradata/orcl/users01.dbf/u01/app/oracle/oradata/orcl/example01.dbf/u01/app/oracle/oradata/orcl/users02.dbf/u01/app/oracle/oradata/orcl/test01.dbf/u01/app/oracle/oradata/orcl/users03.dbf/u01/app/oracle/oradata/orcl/users04.dbf/u01/app/oracle/oradata/orcl/test02.dbf10 rows selected. 備庫:查看備庫警報記錄檔:Datafile #10: ‘/u01/app/oracle/oradata/orcl/test02.dbf‘ SQL> select name from v$datafile;NAME --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/u01/app/oracle/oradata/orcl/system01.dbf/u01/app/oracle/oradata/orcl/sysaux01.dbf/u01/app/oracle/oradata/orcl/undotbs01.dbf/u01/app/oracle/oradata/orcl/users01.dbf/u01/app/oracle/oradata/orcl/example01.dbf/u01/app/oracle/oradata/orcl/users02.dbf/u01/app/oracle/oradata/orcl/test01.dbf/u01/app/oracle/oradata/orcl/users03.dbf/u01/app/oracle/oradata/orcl/users04.dbf/u01/app/oracle/oradata/orcl/test02.dbf 10 rows selected.  --修改主庫的保護模式和保護層級:--查看主庫保護模式和保護層級:SQL> select protection_mode,protection_level from v$database; PROTECTION_MODE                       PROTECTION_LEVEL--------------------                            --------------------MAXIMUM PERFORMANCE        MAXIMUM PERFORMANCE 如果不是處於maximum availability高可用模式,就關閉主庫重啟到mount,修改為高可用模式:SQL>shutdown immediate;SQL>alter database mountSQL>alter database set standby database to maximize availability;(alter database set standby database to maximize {protection | availability | performance } )SQL>select protection_mode,protection_level from v$database;SQL>alter database open;只需修改主庫,會自動應用同步到備庫。  至此,Datagurad已經搭建成功。

 

Oracle11gR2 Dataguard搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.