Logical Standby Database的配置步驟.
Logical Standby Database的配置步驟.
一:首先要確認主資料庫處於歸檔模式
Archive log list
如果是沒有歸檔的話要做如下操作
Shutdown immediate
Startup mount
Alter database archivelog;
Alter system archive log start
Archive log list
Alter database open
後:將主資料庫置為FORCE LOGGING模式.在主資料庫建立之後做如下操作:
ALTER DATABASE FORCE LOGGING;
確認主資料庫是歸檔的並定義好本地歸檔.如下:
SQL >ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=e:oracleoradataorclarchive MANDATORY' SCOPE=BOTH;(路徑根據實際的生產環境來確定)
二: 確認LOG_PARALLELISM初始化引數值
Logical Standby Database要求此引數的值為1,是個預設值.如果查出來的引數值為1則不需要做修改,如果不是1值則要用ALTER SYSTEM SET命令做修改.具體操作如下:
SQL>SHOW PARAMETER LOG_PARALLELISM ------檢視引數的當前值
SQL>ALTER SYSTEM SET LOG_PARALLELISM=1 SCOPE=BOTH;
修改完以後要關閉資料庫並重新啟動此引數才有效.
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP
三:確認支援的資料型別和表(略):
四:確認主資料庫可以補足日誌(Supplemental Logging)
SQL> SELECT SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;
SUP SUP
--- ---
NO NO (NO值表示此時主資料庫是不支援補足日誌的)
使主資料庫可以補足日誌
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;(這條語句將有關由主資料修改的行唯一資訊可以透過日誌傳到備用資料庫中並做Log Apply)
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
確認一下主資料庫此時支援補足日誌
SQL> SELECT SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;
SUP SUP
--- ---
YES YES (YES值表示此時主資料庫是支援補足日誌的)
SUPPLEMENTAL_LOG_DATA_PK:支援補足日誌,其資訊是primary key
SUPPLEMENTAL_LOG_DATA_UI:支援補足日誌,其資訊是unique index
五:在主資料庫建立一個交替的表空間.
並用DBMS_LOGMNR_D.SET_TABLESPACE將某些表放到這個表空間中.因為在邏輯備用資料庫中有一些表是屬於SYS和SYSTEM使用者的,而這些是放在表空間的.這些表可能在一段時間後記錄猛增.為了使SYSTEM表空間不會被用滿而導致資料庫DOWN機,建立這個交替的表空間來存放這些表.
SQL>CREATE TABLESPACE logmnrts DATAFILE '/disk1/oracle/dbs/logmnrts.dbf'
SIZE 25M AUTOEXTEND ON MAXSIZE 2048M
SEGMENT SPACE MANAGEMENT AUTO;(根據實際的生產環境具體修改)
SQL>EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE('logmnrts');
(上面一步EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE('logmnrts');可以在以後的維護中再做相應的維護)
六:建立邏輯備用資料庫
確認主資料庫的資料檔案和日誌檔案(冷備資料庫)
在主資料庫中透過查詢V$DATAFILE獲得資料檔案的位置
SQL> select name from v$datafile;
關閉資料庫:SQL>SHUTDOWN IMMEDIATE
將前面得到的資料檔案複製到一個臨時的位置 F:ORACLE
啟動資料庫到MOUNT狀態下:SQL>STARTUP MOUNT
為邏輯備用資料庫建立一個備份的控制檔案:
ALTER DATABASE BACKUP CONTROLFILE TO
f:oraclebkcontrol.ora';
七: 將主資料庫放在restricted session模式下
ALTER SYSTEM ENABLE RESTRICTED SESSION;
建立Logminer字典(Logical Standby Database在分解REDO LOG為SQL語句時需要Logminer工具,而這個工具在使用之前需要建立Logminer字典):
SQL> ALTER DATABASE OPEN;
SQL> EXECUTE DBMS_LOGSTDBY.BUILD;
取消主資料庫的restricted session模式使使用者可以執行DML和DDL語句:
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
八:檢視最近的歸檔日誌(在後面的邏輯備用資料庫的建立過程中需要用到)
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
-----------------------------------------------------------------
E:ORACLEORADATAORCLARCHIVE1_19.DBF
九:為備用資料庫建立準備初始化引數:
SQL> CREATE PFILE='f:oracleinitstdby.ora' FROM SPFILE;
在備用資料庫伺服器修改初始化引數(剛複製過來的初始化引數檔案)修改後的值大概如下:
在備用資料庫一端建立一個新的例項.如下操作:
oradim –new –sid standby –startmode auto
在主資料配置qlnet.ora檔案.配置完之後分別如下:
SQLNET.EXPIRE_TIME=2
db_name='bak'
log_archive_dest_1='LOCATION=E:oracleoradatabakarch MANDATORY'
standby_archive_dest='E:oracleoradatabakarch1'
log_archive_start=TRUE
lock_name_space=bak
這些的地方都是主要的地方!
在主資料庫和備用資料庫用lsnrctl start和lsnrctl stop啟動和關閉監聽器.然後在主資料庫用tnsping standby和在備用資料庫用tnsping orcl試看兩個庫是否是通的.
用初始化引數檔案啟動資料庫到MOUNT狀態下.
SQL> STARTUP MOUNT PFILE= f:oracleadminstandbypfileinitstdby.ora;
十:在備用資料庫開啟DATA GUARD
SQL> ALTER DATABASE GUARD ALL;
SQL> ALTER DATABASE OPEN RESETLOGS;(ALTER DATABASE OPEN)
十一:使用DBNEWID(nid)工具來重設資料庫名.
要先關閉資料庫並把資料庫啟動為MOUNT狀態:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT PFILE= f:oracleinitstdby.ora;
用DBNEWID工具,操作如下(這個是在命令列下操作):
nid TARGET=SYS/oracled@orcl DBNAME=standby
然後再關閉資料庫:SQL>SHUTDOWN IMMEDIATE
改變初始化引數: db_name=standby
啟動資料庫為MOUNT狀態:SQL>STARTUP MOUNT;
為備用資料庫建立SERVER PARAMETER FILE:
SQL>CREATE SPFILE FROM PFILE= f:oracleinitstdby.ora;
關閉資料庫然後用SPFILE重啟動資料庫:
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP MOUNT
SQL>ALTER DATABASE OPEN RESETLOGS;
十二:給備用資料庫建立一個新的臨時檔案(屬於臨時表空間)
先檢視備用庫中是否有臨時檔案,如果沒有就直接建立,如果有要刪除重新建立.(因為從主庫的冷備份複製過來的臨時檔案在備用庫中是不能用的.所以得重建)相應操作如下:
SQL> SELECT * FROM V$TEMPFILE;-------檢視是否有臨時檔案
no rows selected
SQL> ALTER DATABASE TEMPFILE 'tempfilename' DROP;------刪除重建前的臨時檔案
SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE
2> CONTENTS ='TEMPORARY';--------檢視臨時檔案所屬的臨時表空間名
TABLESPACE_NAME
--------------------------------
TEMP
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE
2> 'f:oraclestandbytemp01.dbf'
3> SIZE 40M REUSE;--------給這個臨時表空間重建一個臨時檔案
十三:註冊歸檔日誌和啟動SQL Apply Services
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> ' e:oracleoradataorclarc0004.001';------將最近的歸檔日誌註冊到Logical Standby Database.這裡的e:oracleoradatastdarch ARCH1069826922_21.DBF是在前面得到的.
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY INITIAL;-----啟動redo logs apply,用執行SQL語句的方式來apply redo logs.就是SQL Apply Services.到於INITIAL是第一次啟動SQL Apply Services時要寫的.後面的可以直接用如下操作
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;----停止
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;----啟動
十四:在主資料庫配置遠端歸檔.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='SERVICE=payroll3' SCOPE=BOTH;
--------配置遠端歸檔目錄
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_3=ENABLE SCOPE=BOTH;
--------配置這個歸檔目錄的狀態為可用
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;----對當前日誌進行歸檔,啟動遠端歸檔.
十五:測試!
查日誌是否已經被註冊到Logical Standby Database中.連線到備用資料庫並查詢DBA_LOGSTDBY_LOG檢視.
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY HH24:MI:SS';
Session altered.
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, DICT_BEGIN, DICT_END
FROM DBA_LOGSTDBY_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIME NEXT_TIME DIC DIC
---------- ------------------- ------------------- --- ---
22 23-11月-04 14:00:17 23-11月-04 14:26:58 NO NO
1 rows selected.
連線到主資料庫並歸檔部分日誌.
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
System altered.
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
System altered.
再查詢一下DBA_LOGSTDBY_LOG檢視.
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY HH24:MI:SS';
Session altered.
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, DICT_BEGIN, DICT_END
2 FROM DBA_LOGSTDBY_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIME NEXT_TIME DIC DIC
---------- ------------------- ------------------- --- ---
22 23-11月-04 14:00:17 23-11月-04 14:26:58 NO NO
23 23-11月-04 14:26:58 23-11月-04 14:33:33 NO NO
2 rows selected.
(可以看到多出來一個新的歸檔日誌)
檢查日誌中的資料是否Apply到邏輯備用資料庫中
在邏輯備用資料庫中查詢DBA_LOGSTDBY_STATS檢視來檢查日誌中的資料是否正被正確地Appled.
SQL> COLUMN NAME FORMAT A30
SQL> COLUMN VALUE FORMAT A30
SQL> SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME = 'coordinator state';
NAME VALUE
------------------------------ ------------------------------
coordinator state INITIALIZING
在上面的輸出中,coordinator程式正在初始化,這表明Log Apply Service正準備Apply SQL.但是日誌中的資料還沒有開始被Applied到邏輯備用資料庫中.
查V$LOGSTDBY看當前的SQL Apply活動狀態.連線到邏輯備用資料庫中,查詢V$LOGSTDBY檢視.
SQL> COLUMN STATUS FORMAT A50
SQL> COLUMN TYPE FORMAT A12
SQL> SELECT TYPE, HIGH_SCN, STATUS FROM V$LOGSTDBY;
TYPE HIGH_SCN STATUS
------------ ---------- --------------------------------------------------
COORDINATOR ORA-16115: loading Log Miner dictionary data
READER ORA-16127: stalled waiting for additional transact
ions to be applied
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9879835/viewspace-1009570/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建立 Logical Standby DatabaseDatabase
- manage logical standby databaseDatabase
- 監控Logical standby databaseDatabase
- Oracle DG建立Logical Standby DatabaseOracleDatabase
- 建立Data guard logical standby database須知Database
- [江楓]In Memory Undo與logical standby databaseDatabase
- DG物理standby,switchover步驟
- 4 Creating a Logical Standby Database 建立邏輯備庫Database
- DG物理standby,failover步驟AI
- RAC DATABASE關機步驟Database
- Data Guard - Snapshot Standby Database配置Database
- 配置 Oracle 10g RAC primary + RAC logical standbyOracle 10g
- Oracle 9i R2 配置 Logical StandbyOracle
- DataGuard:Logical Standby Switchover
- DataGuard:Logical Standby FailoverAI
- Logical Standby的維護操作_SKIP
- Logical Standby中Job的處理
- standby databaseDatabase
- alter database recover to logical standby xxx 很長時間,為什麼Database
- Convert a Physical Standby Database into a Snapshot Standby DatabaseDatabase
- ORACLE10g DataGuard 配置Physical Standby DatabaseOracleDatabase
- standby database to primary database.Database
- Data Guard學習之物理standby建立步驟
- hacmp 5.5配置步驟ACM
- Physical Standby Database 切換到 Snapshot Standby DatabaseDatabase
- standby 資料庫的切換步驟的官方版本資料庫
- Standby Database的工作原理Database
- [zt] Oracle如何配置邏輯備用資料庫(Logical Standby)Oracle資料庫
- Standby Database ---09Database
- 物理Standby資料庫及邏輯Standby資料庫(Physical Standby & Logical Standby)資料庫
- ORACLE10G DG配置下Physical Standby Database的管理OracleDatabase
- 在Logical Standby上處理DDL及DML , ORA-16224: Database Guard is enabledDatabase
- 1.1 Logical Structure of Database ClusterStructDatabase
- 主庫儲存宕掉切換到standby的步驟
- RAC環境LOGICAL STANDBY的SWITCHOVER切換
- Mac OS 配置Maven步驟MacMaven
- 配置 Windows Terminal 步驟Windows
- 建立Oracle 11g logical standbyOracle