Oracle-DG配置災備數據庫

 1.     在主庫進行下面配置

1.1  確認主數據庫運行在歸檔模式下

              使用下面命令確定主數據庫處於歸檔模式下:

                     SQL> archive log list;

              如果主數據庫未處於歸檔模式下,使用下面命令設置主數據庫:

                     SQL> shutdown immediate;  --立即關閉數據庫

                     SQL> startup mount;                     --開啓數據庫到mount狀態

                     SQL> alter database archivelog;   --將數據庫修改爲歸檔模式

                     SQL> alter database open;     --將數據庫修改爲open狀態

1.2  確認主庫強制寫日誌

                     SQL> select force_logging from v$database; --查看數據庫是否處於歸檔模式

                     SQL> alter database force logging;     --修改模式爲強制寫日誌,所有sql語句nologging操作時 也會強制寫日誌

1.3  配置主數據庫的監聽文件與傳輸文件

              配置監聽文件

                     [oracle@oracle1 ~]$ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/listener.ora

                     SID_LIST_LISTENER =

                                   (SID_LIST =

                                          (SID_DESC =

                                                 (GLOBAL_DBNAME = TEST)

                                                 (ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1)

                                   (SID_NAME = TEST)

                                          )

                                   )

 

                            LISTENER =

                                   (DESCRIPTION =

                                   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.101)(PORT = 1521))

                            )

              配置傳輸文件

                     [oracle@oracle1 ~]$ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/tnsnames.ora

                            DB102 =

                                   (DESCRIPTION =

                                          (ADDRESS_LIST =

                                                 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.102)(PORT = 1521))

                                          )

                                   (CONNECT_DATA =

                                          (SERVICE_NAME = TEST)

                                   )

                            )

              啓動監聽服務

                     [oracle@oracle1 ~]$ lsnrctl status       //查看監聽服務狀態

                     [oracle@oracle1 ~]$ lsnrctl start  //開啓監聽服務

1.4  修改主數據庫的參數文件(spfile

              建立pfile文件

                     SQL> create pfile from spfile

              pfile中加入下面內容

                     vim /oracle/app/oracle/product/10.2.0/db_1/dbs/initTEST.ora

                            DB_UNIQUE_NAME=TEST      --show parameter DB_UNIQUE_NAME確認主庫名稱

                            LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB101,DB102)' --此處爲主庫網絡連接串(tnsnames.ora)

                            LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST'  --主庫的歸檔日誌路徑

                            LOG_ARCHIVE_DEST_2='SERVICE=DB102 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'

                            FAL_SERVER=DB101 --網絡異常恢復後自動將延遲的歸檔日誌傳輸到備庫,此處爲主庫網絡連接串(tnsnames.ora)

                            FAL_CLIENT=DB102

                            STANDBY_FILE_MANAGEMENT=AUTO       --默認只傳遞數據,此作用主庫把新創建的數據文件也傳到備庫

              重啓數據庫

                     SQL> shutdown immediate

                     SQL> startup pfile='/oracle/app/oracle/praoduct/10.2.0/db_1/dbs/initTEST.ora'

                     或模擬spfile失效

                     [oracle@oracle1 ~]$ mv /oracle/app/oracle/praoduct/10.2.0/db_1/dbs/spfileTEST.ora spfile.TEST.ora.bak

                     SQL> startup

              查看建立的pfile文件是否生效

                     SQL> show parameter fal

              如果生效,pfile生效,使用pfile重建spfile

                     create spfile from pfile

1.5  全庫備份主數據庫(應該在從庫配置完成(2.4)後進行)

              備份主數據庫

                     RMAN> backup full database format='/home/oracle/db_bak/%U' include current controlfile for standby;

              還原從數據庫(需要先執行2.5操作)

                     RMAN> connect auxiliary sys/123456@DB102       --連接從庫

                     RMAN> duplicate target database for standby nofilenamecheck;   --還原從數據庫

2.     配置災備數據庫

2.1  在災備數據庫服務器中安裝Oracle軟件,保證服務器的環境變量、數據庫的實例名、數據庫的字符集與主數據庫相同。

              在主數據庫中使用下面命令查看主數據庫的字符集:

                     SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

2.2  配置從庫監聽服務與傳輸文件

              配置監聽文件

                     [oracle@oracle2 ~]$ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/listener.ora

                            SID_LIST_LISTENER =

                                   (SID_LIST =

                                          (SID_DESC =

                                                 (GLOBAL_DBNAME = TEST)

                                                 (ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1)

                                   (SID_NAME = TEST)

                                          )

                                   )

 

                            LISTENER =

                                   (DESCRIPTION =

                                   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.102)(PORT = 1521))

                            )

              配置傳輸文件

                     [oracle@oracle2 ~]$ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/tnsnames.ora

                            DB101 =

                                   (DESCRIPTION =

                                          (ADDRESS_LIST =

                                                 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.101)(PORT = 1521))

                                          )

                                   (CONNECT_DATA =

                                          (SERVICE_NAME = TEST)

                                   )

                            )

              開啓監聽

                     [oracle@oralce2 ~]$ lsnrctl start

2.3  配置從庫的spfile,追加下面內容

                     DB_UNIQUE_NAME=TEST      --show parameter DB_UNIQUE_NAME

                     LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB101,DB102)'

                     LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST'

                     LOG_ARCHIVE_DEST_2='SERVICE=DB101 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'

                     FAL_SERVER=DB102

                     FAL_CLIENT=DB101

                     STANDBY_FILE_MANAGEMENT=AUTO

2.4  關閉數據庫並重新開啓到nomount狀態

                     SQL> startup nomount force;

2.5  還原從庫,使從庫與主庫數據保持一致

              複製密碼文件

                     [oracle@oracle2 ~]$ scp [email protected]:/$ORACLE_HOME/dbs/orapwTEST $ORACLE_HOME/dbs/

              將主庫備份的文件拷貝到從庫

                     [oracle@oracle2 ~]$ mkdir -pv /home/oracle/db_bak/

                     [oracle@oracle2 ~]$ scp [email protected]:/home/oracle/db_bak/*  /home/oracle/db_bak/

              回覆完成,從數據庫自動開啓到mount狀態

                     SQL> select open_mode from v$database;      --查看數據庫狀態

 

3.     測試主數據庫與災備數據庫之間的通訊

3.1  在主數據庫上切換日誌組並查詢進程

              當查詢結果含有LNS,說明主數據庫能夠像災備數據庫傳遞日誌文件

                     SQL> alter system switch logfile;  --切換日誌組

                     SQL> select process from v$managed_standby;     --查看進程

                            PROCESS

                            ---------

                            ARCH

                            ARCH

                            LNS

3.2         在災備數據庫中查看是否能夠正常開啓RFS進程

                     SQL> SQL> select process from v$managed_standby;

                            PROCESS

                            ---------

                            ARCH

                            ARCH

                            RFS

                            RFS

3.3         開啓災備數據庫的MRP恢復進程

                     SQL> alter database recover managed standby database disconnect from session;

 

4.     驗證災備

4.1  在主數據庫中建立表或插入數據

4.2         切換主數據庫的在線日誌組

4.3         關閉備份庫的MRP進程並將備份庫更改爲open狀態,驗證

              關閉Mrp進程

                     SQL> alter database recover managed standby database cancel;

PS.

=================================================

1)備用數據庫在日誌恢復過程中(MRP進程存在期間)數據庫處於MOUNTED狀態,此時備用數據庫無法打開供讀取使用

2)打開備用數據庫

     停止備用庫的日誌恢復進程MRP

     alter database recover managed standby database cancel;

     open備用數據庫,備用數據庫默認打開爲只讀方式

     alter database open;

3)重新啓動備用數據庫的MRP進程,數據庫自動從OPEN狀態轉換到MOUNT 狀態

     alter database recover managed standby database disconnect from session;

4mrp進程停止期間,只要RFS進程存在,那麼不影響日誌的接收

====================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章