創建Oracle dataguard logical standby database

1.1 創建physical standby數據庫

--具體步驟參見前面創建物理備庫部分

1.2 停止physical standby的redo apply

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

1.3 準備主庫的角色切換

$ mkdir /u01/app/flash_recovery_area/GUARD1/arch2

SQL> alter system set LOG_ARCHIVE_DEST_3='LOCATION=/u01/app/flash_recovery_area/GUARD1/arch2 VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=guard1' scope=both;

--該參數爲將來主庫轉換爲邏輯備庫而設置,當guard1爲主庫時該參數忽略;爲邏輯備庫是接收主庫的重做數據放在location下。

1.4 找出主庫中沒有唯一邏輯標識的表,添加主鍵約束

SQL> SELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE
  WHERE (OWNER, TABLE_NAME) NOT IN
   (SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED)
  AND BAD_COLUMN = 'Y'

SQL> ALTER TABLE mytab ADD PRIMARY KEY (id, name) RELY DISABLE;

--RELY DISABLE主鍵約束假定表的主鍵是唯一的,但插入數據時並不會效驗約束的完整性。

1.5 建立重做數據字典

--SQL Apply時LogMiner必須要使用字典
SQL> EXECUTE DBMS_LOGSTDBY.BUILD;

--因爲邏輯STANDBY對象的默認表空間是SYSTEM表空間,爲了減少對系統表空間的影響,也可以另外創建一個表空間存放字典數據。
SQL> CREATE TABLESPACE logminer DATAFILE '/u01/app/oradata/guard1/logminer01.dbf' size 50M;
SQL> EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE('logminer');

2 創建邏輯備庫

2.1 轉換到physical standby到logical standby數據庫

SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY guard3;

Database altered.

--當然guard3也可以和原db_unique_name相同,如相同2.2步可以省略

2.2 創建一個新的密碼文件

2.3 爲logical standby調整初始化參數

SQL> SHUTDOWN;
SQL> STARTUP MOUNT;
ORACLE instance started.

Total System Global Area  205520896 bytes
Fixed Size                  1218532 bytes
Variable Size              67110940 bytes
Database Buffers          134217728 bytes
Redo Buffers                2973696 bytes
Database mounted.

SQL> alter system set LOG_ARCHIVE_DEST_1= 'LOCATION=/u01/app/flash_recovery_area/GUARD2/arch VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=guard2' scope=both;

SQL> alter system set LOG_ARCHIVE_DEST_2= 'SERVICE=guard1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=guard1' scope=both;

SQL> alter system set LOG_ARCHIVE_DEST_3= 'LOCATION=/u01/app/flash_recovery_area/GUARD2/arch2 VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=guard2' scope=both;

--數據庫爲主庫時,LOG_ARCHIVE_DEST_1爲主庫在線日誌歸檔路徑;爲備庫時用作本地在線日誌歸檔路徑。邏輯備庫自己也產生重做日誌,因此不論主備庫該路徑都接收本地在線日誌的歸檔。
--數據庫爲主庫時,LOG_ARCHIVE_DEST_2指示日誌傳輸到遠端的standby數據庫;爲備庫時該參數忽略。
--數據庫爲主庫時,LOG_ARCHIVE_DEST_3該參數忽略;爲備庫時該路徑爲接收從主庫歸檔的在線日誌。

2.4 打開邏輯備庫

SQL> ALTER DATABASE OPEN RESETLOGS;

Database altered.

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Database altered.

--因爲前面2.1步生成了新的db_name,第一次打開備庫時需要加上resetlogs選項。

3 主備庫切換

3.1 確認主庫是否能夠切換

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
TO STANDBY

3.2 準備將主庫切換爲邏輯備庫

SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO LOGICAL STANDBY;

Database altered.

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER

--這時的狀態已經變爲準備切換

3.3 準備將邏輯備庫切換爲主庫

SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO PRIMARY;

Database altered.

--該語句將會在邏輯備庫上開啓重做日誌傳輸服務。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER

3.4 確認當前的主庫已經準備好接收新主庫的重做日誌

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
TO LOGICAL STANDBY

3.5 將主庫切換成邏輯備庫

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;

Database altered.

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
NOT ALLOWED

3.6 將邏輯備庫切換成主庫

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

3.7 在備庫上開啓SQL Apply

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

Database altered.


4 插入數據

4.1 在主庫上插入數據

SQL> select * from scott.dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> insert into scott.dept values(50, 'TEST', 'BEIJING');

1 row created.

SQL> commit;

Commit complete.

4.2 模擬日誌切換

SQL> alter system archive log current;

System altered.

4.3 查看告警日誌文件

Sun Nov  2 02:19:15 2008
LOGMINER: Parameters summary for session# = 1
LOGMINER: Number of processes = 3, Transaction Chunk Size = 201
LOGMINER: Memory Size = 30M, Checkpoint interval = 150M
LOGMINER: session# = 1, reader process P000 started with pid=25 OS id=6296
LOGMINER: session# = 1, builder process P001 started with pid=26 OS id=6298
LOGMINER: session# = 1, preparer process P002 started with pid=27 OS id=6300
Sun Nov  2 02:19:15 2008
LOGMINER: Begin mining logfile: /u01/app/flash_recovery_area/GUARD1/arch2/1_6_669689482.dbf
Sun Nov  2 02:19:15 2008
LOGMINER: Turning ON Log Auto Delete
Sun Nov  2 02:19:15 2008
LOGMINER: End mining logfile: /u01/app/flash_recovery_area/GUARD1/arch2/1_6_669689482.dbf
LOGSTDBY Analyzer process P003 started with pid=28 OS id=6306
LOGSTDBY Apply process P004 started with pid=29 OS id=6308
LOGSTDBY Apply process P007 started with pid=31 OS id=6314
LOGSTDBY Apply process P006 started with pid=30 OS id=6312
LOGSTDBY Apply process P008 started with pid=32 OS id=6316
LOGSTDBY Apply process P005 started with pid=22 OS id=6310
Sun Nov  2 02:19:16 2008
Primary database is in MAXIMUM PERFORMANCE mode
RFS[10]: Successfully opened standby log 4: '/u01/app/oradata/guard1/redo04.log'
Sun Nov  2 02:19:16 2008
RFS[7]: Archived Log: '/u01/app/flash_recovery_area/GUARD1/arch2/1_7_669689482.dbf'
Sun Nov  2 02:19:16 2008
RFS LogMiner: Registered logfile [/u01/app/flash_recovery_area/GUARD1/arch2/1_7_669689482.dbf] to LogMiner session id [1]
Sun Nov  2 02:19:17 2008
LOGMINER: Begin mining logfile: /u01/app/flash_recovery_area/GUARD1/arch2/1_7_669689482.dbf
Sun Nov  2 02:19:17 2008
LOGMINER: End mining logfile: /u01/app/flash_recovery_area/GUARD1/arch2/1_7_669689482.dbf
Sun Nov  2 02:19:18 2008
LOGMINER: Log Auto Delete - deleting: /u01/app/flash_recovery_area/GUARD1/arch2/1_6_669689482.dbf
Deleted file /u01/app/flash_recovery_area/GUARD1/arch2/1_6_669689482.dbf

--這裏摘錄一段備庫應用歸檔日誌記錄。

4.3 在備庫上驗證數據應用

SQL> select * from scott.dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 TEST           BEIJING


--end--

發佈了52 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章