oracle9i(9204)data guard(dg)_logical standby_failover操作指南
1,複製,註冊任何missing的歸檔日誌(對於於主庫)
在將要用於轉化為(failover為新主庫的邏輯備庫上),為簡略以下皆稱為
column file_name format a55
SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L
2> WHERE NEXT_CHANGE# NOT IN
3> (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#)
4> ORDER BY THREAD#,SEQUENCE#;
THREAD# SEQUENCE# FILE_NAME
---------- ---------- -----------------------------------------------
1 6 /disk1/oracle/dbs/log-1292880008_6.arc
1 10 /disk1/oracle/dbs/log-1292880008_10.arc
根據以上查詢到的記錄(如正常,每個thread只有一條記錄),僅複製及註冊以上大於每條記錄的資料(也就是7,11)
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/log-1292880008_7.arc';
Database altered.
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/log-1292880008_11.arc';
Database altered.
2,複製,註冊源於主庫(此時主庫已經玩完了,沒用了)的線上日誌online redo logs
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE --提示ora-01289,說明已在邏輯備庫上面應用或者註冊了
2> '/disk1/oracle/dbs/online_log1.log';
ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/online_log1.log'
*
ERROR at line 1:
ORA-01289: cannot add duplicate logfile
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/online_log2.log';
Database altered.
3,註冊部分已經歸檔的重作日誌(如果存在的話)---說實話,沒太理解
Depending on the nature of the emergency, you might not have access to any files on the primary database.
To look for a partially filled archived redo log, query the DBA_LOGSTDBY_LOG view on the logical standby database in the same directory where the other
archived redo logs are located.
If a partially filled archived redo log exists, its sequence number will be one greater than the last registered archived redo log. For example:
SQL> COLUMN FILE_NAME FORMAT a55
SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L
2> ORDER BY THREAD#,SEQUENCE#;
THREAD# SEQUENCE# FILE_NAME
---------- ---------- -----------------------------------------------------
1 3 /disk1/oracle/dbs/db1loga-1292880008_3.arc
1 4 /disk1/oracle/dbs/archlogb-1292880008_4.arc
1 5 /disk1/oracle/dbs/archlogb-1292880008_5.arc
1 6 /disk1/oracle/dbs/archlogb-1292880008_6.arc
1 7 /disk1/oracle/dbs/archlogb-1292880008_7.arc
1 8 /disk1/oracle/dbs/archlogb-1292880008_8.arc
1 9 /disk1/oracle/dbs/archlogb-1292880008_9.arc
1 10 /disk1/oracle/dbs/archlogb-1292880008_10.arc
8 rows selected.
If a partially filled archived log exists, register it. For example:
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/log-1292880008_11.arc';
Database altered.
4,關閉應用延遲間隔(因主庫不能用,以上相關操作皆在備庫進行)
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
Database altered.
SQL> EXECUTE DBMS_LOGSTDBY.APPLY_UNSET('APPLY_DELAY');
PL/SQL procedure successfully completed.
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
Database altered.
5,確保所有日誌應用
SQL> SELECT APPLIED_SCN, NEWEST_SCN FROM DBA_LOGSTDBY_PROGRESS;--兩列資料相同就好
APPLIED_SCN NEWEST_SCN
----------- ----------
190725 190725
6,啟用新的主庫
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
SQL> ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE;
7,如dg配置比較複雜,有多個邏輯備庫存在,進行完第6步,你想把以前的多個邏輯備庫加入到新的dg環境中,操作如下
Follow these steps to define a database link to the new primary database that will be used during future switchover operations:
1. Create a database link on each logical standby database.---在每個邏輯備庫上(failover後)
Use the DBMS_LOGSTDBY.GUARD_BYPASS_ON procedure to bypass the database guard and allow modifications to the tables in the logical standby database. For example:
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_ON;
SQL> CREATE DATABASE LINK location1
2> CONNECT TO IDENTIFIED BY USING 'location1';
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_OFF;
The database user account specified in the CREATE DATABASE LINK statement must have the SELECT_CATALOG_ROLE role granted to it on the primary database.
See Also:
Oracle9i Supplied PL/SQL Packages and Types Reference for more information about the DBMS_LOGSTDBY package and Oracle9i Database Administrator's Guide for more information about creating database links.
2. Verify the database link.
On the logical standby database, verify that the database link was configured correctly by executing the following query using the database link:
SQL> SELECT * FROM DBA_LOGSTDBY_PARAMETERS@location1;
If the query succeeds, then you have verified that the database link created in step 1 can be used to perform. a switchover.
On the new primary database
Enable archiving redo logs to all remote logical standby destinations. For example:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
To ensure that this change will persist if the new primary database is later restarted, update the appropriate initialization parameter file or server parameter file. In general, when the database operates in the primary role, you must enable archiving redo logs to remote destinations, and when the database operates in the standby role, you must disable archiving redo logs to remote destinations.
On all logical standby databases
Begin log apply services by issuing this SQL statement on all logical standby databases:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY location1;
When this statement completes, all remaining archived redo logs will have been applied. Depending on the work to be done, this operation can take some time to complete.
If the ORA-16109 error is returned, you must re-create the logical standby database from a backup copy of the new primary database, and then add it to the Data Guard configuration.
The following example shows a failed attempt to start log apply services on a logical standby database in the new configuration where location1 points to the new primary database:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY location1;
ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY location1
*
ERROR at line 1:
ORA-16109: failed to apply log data from previous primary
在將要用於轉化為(failover為新主庫的邏輯備庫上),為簡略以下皆稱為
column file_name format a55
SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L
2> WHERE NEXT_CHANGE# NOT IN
3> (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#)
4> ORDER BY THREAD#,SEQUENCE#;
THREAD# SEQUENCE# FILE_NAME
---------- ---------- -----------------------------------------------
1 6 /disk1/oracle/dbs/log-1292880008_6.arc
1 10 /disk1/oracle/dbs/log-1292880008_10.arc
根據以上查詢到的記錄(如正常,每個thread只有一條記錄),僅複製及註冊以上大於每條記錄的資料(也就是7,11)
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/log-1292880008_7.arc';
Database altered.
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/log-1292880008_11.arc';
Database altered.
2,複製,註冊源於主庫(此時主庫已經玩完了,沒用了)的線上日誌online redo logs
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE --提示ora-01289,說明已在邏輯備庫上面應用或者註冊了
2> '/disk1/oracle/dbs/online_log1.log';
ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/online_log1.log'
*
ERROR at line 1:
ORA-01289: cannot add duplicate logfile
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/online_log2.log';
Database altered.
3,註冊部分已經歸檔的重作日誌(如果存在的話)---說實話,沒太理解
Depending on the nature of the emergency, you might not have access to any files on the primary database.
To look for a partially filled archived redo log, query the DBA_LOGSTDBY_LOG view on the logical standby database in the same directory where the other
archived redo logs are located.
If a partially filled archived redo log exists, its sequence number will be one greater than the last registered archived redo log. For example:
SQL> COLUMN FILE_NAME FORMAT a55
SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L
2> ORDER BY THREAD#,SEQUENCE#;
THREAD# SEQUENCE# FILE_NAME
---------- ---------- -----------------------------------------------------
1 3 /disk1/oracle/dbs/db1loga-1292880008_3.arc
1 4 /disk1/oracle/dbs/archlogb-1292880008_4.arc
1 5 /disk1/oracle/dbs/archlogb-1292880008_5.arc
1 6 /disk1/oracle/dbs/archlogb-1292880008_6.arc
1 7 /disk1/oracle/dbs/archlogb-1292880008_7.arc
1 8 /disk1/oracle/dbs/archlogb-1292880008_8.arc
1 9 /disk1/oracle/dbs/archlogb-1292880008_9.arc
1 10 /disk1/oracle/dbs/archlogb-1292880008_10.arc
8 rows selected.
If a partially filled archived log exists, register it. For example:
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/log-1292880008_11.arc';
Database altered.
4,關閉應用延遲間隔(因主庫不能用,以上相關操作皆在備庫進行)
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
Database altered.
SQL> EXECUTE DBMS_LOGSTDBY.APPLY_UNSET('APPLY_DELAY');
PL/SQL procedure successfully completed.
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
Database altered.
5,確保所有日誌應用
SQL> SELECT APPLIED_SCN, NEWEST_SCN FROM DBA_LOGSTDBY_PROGRESS;--兩列資料相同就好
APPLIED_SCN NEWEST_SCN
----------- ----------
190725 190725
6,啟用新的主庫
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
SQL> ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE;
7,如dg配置比較複雜,有多個邏輯備庫存在,進行完第6步,你想把以前的多個邏輯備庫加入到新的dg環境中,操作如下
Follow these steps to define a database link to the new primary database that will be used during future switchover operations:
1. Create a database link on each logical standby database.---在每個邏輯備庫上(failover後)
Use the DBMS_LOGSTDBY.GUARD_BYPASS_ON procedure to bypass the database guard and allow modifications to the tables in the logical standby database. For example:
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_ON;
SQL> CREATE DATABASE LINK location1
2> CONNECT TO
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_OFF;
The database user account specified in the CREATE DATABASE LINK statement must have the SELECT_CATALOG_ROLE role granted to it on the primary database.
See Also:
Oracle9i Supplied PL/SQL Packages and Types Reference for more information about the DBMS_LOGSTDBY package and Oracle9i Database Administrator's Guide for more information about creating database links.
2. Verify the database link.
On the logical standby database, verify that the database link was configured correctly by executing the following query using the database link:
SQL> SELECT * FROM DBA_LOGSTDBY_PARAMETERS@location1;
If the query succeeds, then you have verified that the database link created in step 1 can be used to perform. a switchover.
On the new primary database
Enable archiving redo logs to all remote logical standby destinations. For example:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
To ensure that this change will persist if the new primary database is later restarted, update the appropriate initialization parameter file or server parameter file. In general, when the database operates in the primary role, you must enable archiving redo logs to remote destinations, and when the database operates in the standby role, you must disable archiving redo logs to remote destinations.
On all logical standby databases
Begin log apply services by issuing this SQL statement on all logical standby databases:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY location1;
When this statement completes, all remaining archived redo logs will have been applied. Depending on the work to be done, this operation can take some time to complete.
If the ORA-16109 error is returned, you must re-create the logical standby database from a backup copy of the new primary database, and then add it to the Data Guard configuration.
The following example shows a failed attempt to start log apply services on a logical standby database in the new configuration where location1 points to the new primary database:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY location1;
ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY location1
*
ERROR at line 1:
ORA-16109: failed to apply log data from previous primary
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-628040/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【DG】Data Guard搭建(physical standby)
- 【DG】Data Guard主備庫Failove切換AI
- 【DG】Data Guard主備庫Switchover切換
- 【ASK_ORACLE】Oracle Data Guard(一)DG架構Oracle架構
- Oracle DG建立Logical Standby DatabaseOracleDatabase
- 12c DG新特性 - Active Data Guard Far Sync (Doc ID 2179719.1)
- G008-ORACLE-DG ORACLE 19C Active Data Guard DML RedirectionOracle
- Oracle Data Guard Broker元件Oracle元件
- Oracle Data Guard簡介Oracle
- 單機搭建Data Guard
- 2.3.1.1.3 Application Containers Use Case: Logical Data WarehouseAPPAI
- bd_ticket_guard_client_dataclient
- Oracle Data Guard和Broker概述Oracle
- 1 關於 Oracle Data GuardOracle
- 2 Oracle Data Guard 安裝Oracle
- 1 Oracle Data Guard Broker 概念Oracle
- Oracle 19C Data Guard基礎運維-07 failover後閃回恢復dg架構Oracle運維AI架構
- 使用Data Guard Broker進行Data Guard物理備用庫配置(Oracle 19c)Oracle
- Bd-Ticket-Guard-Client-Data逆向client
- 8 Oracle Data Guard Broker 屬性Oracle
- 9 Oracle Data Guard 故障診斷Oracle
- oracle 11g data guard維護Oracle
- 4.1.6 Oracle Restart 與 Oracle Data Guard 整合OracleREST
- 【DATAGUARD】Oracle19c Data Guard BrokerOracle
- 2 開始實用 Oracle Data GuardOracle
- 19 Oracle Data Guard 相關檢視Oracle
- 6 Oracle Data Guard Protection Modes 保護模式Oracle模式
- 15 Oracle Data Guard Scenarios 保護場景OracleiOS
- A Oracle Data Guard Broker 升級和降級Oracle
- DG的切換操作
- Oracle 12.2 How to Generate AWRs in Active Data Guard Standby DatabasesOracleDatabase
- Oracle Data Guard Feature 12cR2系列(二)Oracle
- Oracle Data Guard Feature 12cR2系列(一)Oracle
- dg切換操作文件
- oracle dg切換操作示例Oracle
- 使用Broker管理Data Guard——停用、改保護模式等模式
- [20221111]19c配置Data Guard Broker問題.txt
- 18 與Oracle Data Guard 相關的SQL語句OracleSQL
- 需要了解的Data Guard理論知識(一)