Logical Standby配置:
以下數據類(lèi)型不被支持:
NCLOB
LONG
LONG RAW
BFILE
ROWID
UROWID
檢查不被支持的表:
SQL> SELECT DISTINCT OWNER,TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED ORDER BY OWNER,TABLE_NAME;
以下操作不被支持:
ALTER DATABASE
ALTER SESSION
ALTER SNAPSHOT
ALTER SNAPSHOT LOG
ALTER SYSTEM SWITCH LOG
CREATE CONTROL FILE
CREATE DATABASE
CREATE DATABASE LINK
CREATE PFILE FROM SPFILE
CREATE SCHEMA AUTHORIZATION
CREATE SNAPSHOT
CREATE SNAPSHOT LOG
CREATE SPFILE FROM PFILE
CREATE TABLE AS SELECT FROM A CLUSTER TABLE
DROP DATABASE LINK
DROP SNAPSHOT
DROP SNAPSHOT LOG
EXPLAIN
LOCK TABLE
RENAME
SET CONSTRAINTS
SET ROLE
SET TRANSACTION
高級隊列的管理和物化視圖的刷新不被支持(DBMS_AQADM ,DBMS_MVIEW_REFRESH)
Logical Standby要求每張表應該有Primary key 或者Unique index ,如果必須有沒(méi)有唯一性標示的表,那么可以激活Primary庫的supplemental logging屬性,但是這樣將會(huì )在redo log中記錄該表中每一條記錄的所有字段作為標示,會(huì )大大增加redo log的記錄量。
檢查沒(méi)有唯一性標示的表:
SQL> SELECT OWNER, TABLE_NAME,BAD_COLUMN FROM DBA_LOGSTDBY_NOT_UNIQUE WHERE TABLE_NAME NOT IN (SELECT TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED);
如果可以確認表中有唯一標示的字段,但是又不想真正創(chuàng )建主鍵或者索引來(lái)增加更新的開(kāi)銷(xiāo),那么可以創(chuàng )建disabled RELY類(lèi)型的約束,比如:
SQL> ALTER TABLE mytab ADD PRIMARY KEY (id, name) RELY DISABLE;
檢查supplemental logging是否已經(jīng)被激活。
SQL> SELECT SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;用以下方法激活Primary庫的supplemental logging屬性:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
激活supplemental logging屬性以后,作一次日志切換,保證當前日志中不包含非追加日志數據(nonsupplemental log)。
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
創(chuàng )建一個(gè)新的表空間,用于LogMiner,否則Logical Standby需要的對象將默認創(chuàng )建在SYSTEM表空間中。
SQL> CREATE TABLESPACE logmnrts DATAFILE ‘/disk1/oracle/dbs/logmnrts.dbf‘ SIZE
SQL> EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE(‘logmnrts‘);
關(guān)閉Primary,備份所有數據文件,傳到Standby
啟動(dòng)Primary,創(chuàng )建logical standby database的數據字典
SQL> EXECUTE DBMS_LOGSTDBY.BUILD;
檢查需要上傳到Standby上的歸檔日志信息
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE (SEQUENCE#=(SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN = ‘YES‘ AND STANDBY_DEST= ‘NO‘));
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/orcl/archive/1_29.dbf
修改Primary和Standby上的tnsnames.ora和listener.ora,配置方法跟Physical Standby中一樣。
修改Standby上初始化參數中的fal_server和fal_client值。
設置Standby數據庫
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE GUARD ALL;
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE ‘/opt/oracle/oradata/orcl/archive/1_29.dbf‘;
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY INITIAL;
初次啟動(dòng)Standby需要APPLY INITIAL,以后直接運行以下SQL啟動(dòng)和關(guān)閉Standby日志應用。
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
在Primary作日志歸檔,測試整個(gè)環(huán)境是否設置成功。
檢查Standby的日志應用情況:
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=59323

