Active DataGuard 安裝手冊
硬件規劃
| 選項 | 備庫 | 主庫 |
|---|---|---|
| HOSTNAME | rac01 | rac02 |
| IP | 172.30.170.201 | 172.30.170.221 |
| DB_UNIQUE_NAME | DAADG | DAPRI |
| DB VERSION | 11.2.0.4 | 11.2.0.4 |
| OS VERSION | RedHat 6.5 | RedHat 6.5 |
主庫配置
-
檢查數據庫歸檔模式,日志模式,若沒有開啟,請開啟歸檔模式和日志模式
SQL> startup mount; SQL> alter database archivelog; SQL> alter database open; SQL> alter database force logging; SQL> select name,OPEN_MODE,LOG_MODE,FORCE_LOGGING from v$database; NAME OPEN_MODE LOG_MODE FOR --------- -------------------- ------------ --- DAPRI READ WRITE ARCHIVELOG YES -
配置監聽 –這里要注意分清配置的tnsnames.ora 是Oracle 用戶下的tnsnames.ora,筆主有一次配置到grid里面,然后Oracle用戶下的使用了遺留的參數,導致了rman duplicate 到了原主庫… … 我艸。
[oracle@rac02 admin]$ pwd /u01/app/oracle/product/11.2.0/db_1/network/admin [oracle@rac02 admin]$ vi tnsnames.ora DAPRI = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.221)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAPRI) ) ) DAADG = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.201)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAADG) ) ) # 測試監聽配置是否正確 [oracle@rac02 admin]$ tnsping DAADG Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.201)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAADG))) OK (0 msec) [oracle@rac02 admin]$ tnsping DAPRI Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.221)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAPRI))) OK (10 msec) -
參數文件配置
SQL> show parameter db_unique_name; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string DAPRI SQL> alter system set log_archive_config='DG_CONFIG=(DAPRI,DAADG)'; System altered. SQL> alter system set log_archive_dest_2='SERVICE=DAADG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAADG'; System altered. SQL> alter system set log_archive_dest_state_2 = defer; System altered. SQL> alter system set fal_server = 'DAADG'; System altered. SQL> alter system set fal_client = 'DAPRI'; System altered. SQL> alter system set standby_file_management= auto; System altered. -- 為使配置參數正確,需要重啟數據庫 SQL> shutdown immediate SQL> startup -- 核對相關參數是否設置正確 SQL> show parameter log_archive_config; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_config string DG_CONFIG=(DAPRI,DAADG) SQL> show parameter log_archive_dest_2; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_2 string SERVICE=DAADG LGWR ASYNC VALID _FOR=(ONLINE_LOGFILES,PRIMARY_ ROLE) DB_UNIQUE_NAME=DAADG SQL> show parameter log_archive_dest_state_2; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_state_2 string DEFER SQL> show parameter fal_server; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ fal_server string DAADG SQL> show parameter fal_client; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ fal_client string DAPRI SQL> show parameter standby_file_management; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ standby_file_management string AUTO -
創建PFILE 參數文件,并傳輸到備庫/home/oracle/DAPRI目錄下,注意修改用戶組
SQL> create pfile='/home/oracle/DAPRI.ora' from spfile; File created.傳輸到備庫命令(略)
-
創建standby控制文件,并傳輸到備庫/home/oracle/DAPRI目錄下,注意修改用戶組
SQL> alter database create standby controlfile as '/home/oracle/control01.ctl';
Database altered.
- 將密碼文件傳輸到備庫/home/oracle/DAPRI 目錄下,注意修改用戶組
若不知數據庫的SYS、SYSTEM等用戶密碼,可以通過orapwd file=xxx password=xxx 進行修改。
?4,5,6 步完成后,備庫上應該有如下文件
[oracle@rac01 DAPRI]$ ll total 9528 -rw-r----- 1 oracle oinstall 9748480 Jun 7 07:46 control01.ctl -rw-r--r-- 1 oracle oinstall 1218 Jun 7 07:47 DAPRI.ora -rw-r----- 1 oracle oinstall 1536 Jun 7 07:48 orapwDAPRI
- 在主庫上增加standby log:
-- ACE 建議 standby logfile 建立的時候比主庫的redo log 多一組,大小一樣
alter database add standby logfile thread 1 '/u01/app/oracle/oradata/DAPRI/stdredo11.log' size 200m;
alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo12.log' size 200m;
alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo13.log' size 200m;
alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo14.log' size 200m;
備庫配置:
-
監聽配置
[oracle@rac01 admin]$ pwd /u01/app/oracle/product/11.2.0/db_1/network/admin [oracle@rac01 admin]$ vi tnsnames.ora [oracle@rac01 admin]$ tnsping DAADG Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.201)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAADG))) OK (0 msec) [oracle@rac01 admin]$ tnsping DAPRI Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.221)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAPRI))) -
/home/oracle/DAPRI/DAPRI.ora參數文件配置
? a. 核對DAPRI.__oracle_base 目錄是否存在
mkdir -pv /u01/app/oracle? b. 核對audit_file_dest 目錄是否存在
mkdir -pv /u01/app/oracle/admin/DAPRI/adump? c. 核對control_files目錄是否存在
mkdir -pv /u01/app/oracle/oradata/DAPRI/ mkdir -pv /u01/app/oracle/fast_recovery_area/DAPRI/? d. 核對db_recovery_file_dest目錄是否存在
mkdir -pv /u01/app/oracle/fast_recovery_area? e. 修改如下參數
參數 修改前 修改后 **.fal_client *.fal_client=‘DAPRI’ *.fal_client=‘DAADG’ *.fal_server *.fal_server=‘DAADG’ *.fal_server=‘DAPRI’ *.log_archive_dest_2 *.log_archive_dest_2=‘SERVICE=DAADG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAADG’ *.log_archive_dest_2=‘SERVICE=DAPRI LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAPRI’ 其它參數可根據需求可選變更。
? f. 增加*.db_unique_name='DAADG’參數
完成配置后配置對比如下
修改前配置:
DAPRI.__db_cache_size=1845493760 DAPRI.__java_pool_size=16777216 DAPRI.__large_pool_size=33554432 DAPRI.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment DAPRI.__pga_aggregate_target=822083584 DAPRI.__sga_target=2432696320 DAPRI.__shared_io_pool_size=0 DAPRI.__shared_pool_size=503316480 DAPRI.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/DAPRI/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='/u01/app/oracle/oradata/DAPRI/control01.ctl','/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='DAPRI' *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=4385144832 *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=DAPRIXDB)' *.fal_client='DAPRI' *.fal_server='DAADG' *.log_archive_config='DG_CONFIG=(DAPRI,DAADG)' *.log_archive_dest_2='SERVICE=DAADG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAADG' *.log_archive_dest_state_2='DEFER' *.open_cursors=300 *.pga_aggregate_target=809500672 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=2428502016 *.standby_file_management='AUTO' *.undo_tablespace='UNDOTBS1'修改完成后配置如下:
DAPRI.__db_cache_size=1845493760 DAPRI.__java_pool_size=16777216 DAPRI.__large_pool_size=33554432 DAPRI.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment DAPRI.__pga_aggregate_target=822083584 DAPRI.__sga_target=2432696320 DAPRI.__shared_io_pool_size=0 DAPRI.__shared_pool_size=503316480 DAPRI.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/DAPRI/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='/u01/app/oracle/oradata/DAPRI/control01.ctl','/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='DAPRI' *.db_unique_name='DAADG' *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=4385144832 *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=DAPRIXDB)' *.fal_client='DAPRI' *.fal_server='DAADG' *.log_archive_config='DG_CONFIG=(DAPRI,DAADG)' *.log_archive_dest_2='SERVICE=DAPRI LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAPRI' *.log_archive_dest_state_2='DEFER' *.open_cursors=300 *.pga_aggregate_target=809500672 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=2428502016 *.standby_file_management='AUTO' *.undo_tablespace='UNDOTBS1'?
將修改完的DAPRI.ora 文件拷貝到$ORACLE_HOME/dbs 目錄下:
[oracle@rac01 DAPRI]$ cp -av DAPRI.ora /u01/app/oracle/product/11.2.0/db_1/dbs/initDAPRI.ora `DAPRI.ora' -> `/u01/app/oracle/product/11.2.0/db_1/dbs/initDAPRI.ora' -
密碼文件移動到$ORACLE_HOME/dbs合適目錄
[oracle@rac01 DAPRI]$ cp -av orapwDAPRI /u01/app/oracle/product/11.2.0/db_1/dbs/ `orapwDAPRI' -> `/u01/app/oracle/product/11.2.0/db_1/dbs/orapwDAPRI'
完成第三、四 步,文件如下:
[oracle@rac01 DAPRI]$ ls $ORACLE_HOME/dbs hc_DAADG.dat initDAPRI.ora init.ora lkDAADG orapwDAADG orapwDAPRI spfileDAADG.ora
- 通過STANDBY控制文件將備庫mount 到備庫
? a. 將控制文件移動到2.5 配置文件中控制文件的路徑
[oracle@rac01 DAPRI]$ cp -av control01.ctl /u01/app/oracle/oradata/DAPRI/control01.ctl `control01.ctl' -> `/u01/app/oracle/oradata/DAPRI/control01.ctl' [oracle@rac01 DAPRI]$ cp -av control01.ctl /u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl `control01.ctl' -> `/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl'
? b. 啟動到DAPRI數據庫mount 狀態,測試參數文件、控制文件是否正常:
# 修改ORACLE_SID環境變量,確保ORACLE_SID 修改為DAPRI,修改后結果如下:
[oracle@rac01 DAPRI]$ cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_SID=DAPRI
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1/
export PATH=$ORACLE_HOME/bin:$PATH
# 使環境變量生效
[oracle@rac01 DAPRI]$ source ~/.bash_profile
[oracle@rac01 DAPRI]$ echo $ORACLE_SID
DAPRI
[oracle@rac01 DAPRI]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Jun 7 08:44:51 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 2421825536 bytes
Fixed Size 2255632 bytes
Variable Size 620758256 bytes
Database Buffers 1778384896 bytes
Redo Buffers 20426752 bytes
Database mounted.
? 5. 數據庫數據恢復
-- 這里采用duplicate 方式復制數據庫,需要先把數據庫給關機成nomount 狀態
SQL> startup nomount pfile=‘/u01/app/oracle/product/11.2.0/db_1/dbs/initDAPRI.ora’;
ORACLE instance started.
Total System Global Area 2421825536 bytes
Fixed Size 2255632 bytes
Variable Size 620758256 bytes
Database Buffers 1778384896 bytes
Redo Buffers 20426752 bytes
SQL> exit
-- 直接執行 rman target sys/123.com@DAPRI auxiliary sys/123.com@DAADG 將會報錯
[oracle@rac01 dbs]$ rman target sys/123.com@DAPRI auxiliary sys/123.com@DAADG
Recovery Manager: Release 11.2.0.4.0 - Production on Tue Jun 7 09:01:09 2022
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DAPRI (DBID=3173553946)
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04006: error from auxiliary database: ORA-12528: TNS:listener: all appropriate instances are blocking new connections
這是因為實例雖然啟動,但是沒有注冊到監聽。實例是通過PMON進程注冊到監聽上的,而PMON進程需要在MOUNT狀態下才會啟動。因此造成了上面的錯誤。本文檔采用靜態配置:
[oracle@rac01 dbs]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
ADR_BASE_LISTENER = /u01/app/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DAADG )
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = DAADG)
)
)
[oracle@rac01 dbs]$ lsnrctl stop
[oracle@rac01 dbs]$ lsnrctl start
[oracle@rac01 dbs]$ rman target sys/123.com@DAPRI auxiliary sys/123.com@DAADG
Recovery Manager: Release 11.2.0.4.0 - Production on Tue Jun 7 09:38:42 2022
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DAPRI (DBID=3173553946)
connected to auxiliary database: DAPRI (not mounted)
RMAN> duplicate target database for standby from active database nofilenamecheck;
Starting Duplicate Db at 07-JUN-22
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=63 device type=DISK
contents of Memory Script:
{
backup as copy reuse
targetfile '/u01/app/oracle/product/11.2.0/db_1/dbs/orapwDAPRI' auxiliary format
'/u01/app/oracle/product/11.2.0/db_1/dbs/orapwDAADG' ;
}
executing Memory Script
Starting backup at 07-JUN-22
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=197 device type=DISK
Finished backup at 07-JUN-22
contents of Memory Script:
{
backup as copy current controlfile for standby auxiliary format '/u01/app/oracle/oradata/DAPRI/control01.ctl';
restore clone controlfile to '/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl' from
'/u01/app/oracle/oradata/DAPRI/control01.ctl';
}
executing Memory Script
Starting backup at 07-JUN-22
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying standby control file
output file name=/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_DAPRI.f tag=TAG20220607T101015 RECID=4 STAMP=1106734215
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 07-JUN-22
Starting restore at 07-JUN-22
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 07-JUN-22
contents of Memory Script:
{
sql clone 'alter database mount standby database';
}
executing Memory Script
sql statement: alter database mount standby database
contents of Memory Script:
{
set newname for tempfile 1 to
"/u01/app/oracle/oradata/DAPRI/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"/u01/app/oracle/oradata/DAPRI/system01.dbf";
set newname for datafile 2 to
"/u01/app/oracle/oradata/DAPRI/sysaux01.dbf";
set newname for datafile 3 to
"/u01/app/oracle/oradata/DAPRI/undotbs01.dbf";
set newname for datafile 4 to
"/u01/app/oracle/oradata/DAPRI/users01.dbf";
backup as copy reuse
datafile 1 auxiliary format
"/u01/app/oracle/oradata/DAPRI/system01.dbf" datafile
2 auxiliary format
"/u01/app/oracle/oradata/DAPRI/sysaux01.dbf" datafile
3 auxiliary format
"/u01/app/oracle/oradata/DAPRI/undotbs01.dbf" datafile
4 auxiliary format
"/u01/app/oracle/oradata/DAPRI/users01.dbf" ;
sql 'alter system archive log current';
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /u01/app/oracle/oradata/DAPRI/temp01.dbf in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting backup at 07-JUN-22
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u01/app/oracle/oradata/DAPRI/system01.dbf
output file name=/u01/app/oracle/oradata/DAPRI/system01.dbf tag=TAG20220607T101023
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u01/app/oracle/oradata/DAPRI/sysaux01.dbf
output file name=/u01/app/oracle/oradata/DAPRI/sysaux01.dbf tag=TAG20220607T101023
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/u01/app/oracle/oradata/DAPRI/undotbs01.dbf
output file name=/u01/app/oracle/oradata/DAPRI/undotbs01.dbf tag=TAG20220607T101023
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u01/app/oracle/oradata/DAPRI/users01.dbf
output file name=/u01/app/oracle/oradata/DAPRI/users01.dbf tag=TAG20220607T101023
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 07-JUN-22
sql statement: alter system archive log current
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=4 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=5 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=6 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=7 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/users01.dbf
Finished Duplicate Db at 07-JUN-22
實戰TIPS:
由于默認的duplicate 操作只分配單通道進行RMAN 的數據文件恢復,若恢復大的數據庫將無法利用現有硬件優勢,遂推薦通過分配多通道的方式進行數據文件恢復
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux3 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux4 DEVICE TYPE DISK;
duplicate target database for standby from active database nofilenamecheck;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
RELEASE CHANNEL c3;
RELEASE CHANNEL c4;
RELEASE CHANNEL aux1;
RELEASE CHANNEL aux2;
RELEASE CHANNEL aux3;
RELEASE CHANNEL aux4;
}
-
備庫添加standby logfile
-- ACE 建議 standby logfile 建立的時候比主庫的redo log 多一組,大小一樣 alter database add standby logfile thread 1 '/u01/app/oracle/oradata/DAPRI/stdredo11.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo12.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo13.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo14.log' size 200m;
? 7. 備庫啟動DG 日志應用
? 在備庫 MOUNT 狀態下執行如下命令,在執行完第五步后數據庫是處于MOUNT狀態的:
? SQL> alter database recover managed standby database using current logfile disconnect from session;
主庫參數檢查
? 將log_archive_dest_state_2 = defer 改成 log_archive_dest_state_2 = enable , 啟動日志傳輸
alter system set log_archive_dest_state_2 = enable
備庫啟動ADG
? 在備庫執行如下命令:
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 2421825536 bytes
Fixed Size 2255632 bytes
Variable Size 620758256 bytes
Database Buffers 1778384896 bytes
Redo Buffers 20426752 bytes
Database mounted.
Database opened.
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
READ ONLY PHYSICAL STANDBY
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
最后:
? 檢查數據庫日志傳輸是否有問題:
SQL> select status,instance_name from gv$instance;
STATUS INSTANCE_NAME
------------ ----------------
OPEN DAPRI
SQL> select open_mode,name,DATABASE_ROLE from v$database;
OPEN_MODE NAME DATABASE_ROLE
-------------------- --------- ----------------
READ ONLY WITH APPLY DAPRI PHYSICAL STANDBY
SQL> show parameter db_unique
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string DAADG
SQL> select process,status,SEQUENCE#,BLOCK# from v$managed_standby;
PROCESS STATUS SEQUENCE# BLOCK#
--------- ------------ ---------- ----------
ARCH CLOSING 9 1
ARCH CONNECTED 0 0
ARCH CONNECTED 0 0
ARCH CLOSING 8 1
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 10 291
MRP0 APPLYING_LOG 10 291
8 rows selected.
到此, ADG 單庫到單庫搭建完畢。
### 補充 RAC --> 單臺DG 搭法一致,區別點在于:
主庫:
- 修改主庫參數時,要把RAC所有節點都修改了(alter system set xxxx=xxxx sid = ‘*’);
- 在配置RAC 節點的FAL_CLIENT時, 配置的tnsnames.ora該改成RAC node 的真實IP;
例:
RAC01 realip 10.XX.X.121
RAC02 realip 10.XX.X.123
DG IP 10.XX.X.126
RAC01配置:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string rac01p
RAC02配置:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string rac02p
rac01p =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.121)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac )
)
)
rac02p =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac )
)
)
備庫
3. 由于從主庫中拷貝的參數文件為RAC集群的參數文件,遂在配置時需要將備庫的oracle_sid 參數改成RAC 節點的SID
4. 由于從主庫中拷貝的參數文件為RAC集群的參數文件,遂需要額外修改部分參數,修改后如下:
修改參數:
*.cluster_database=false
sid1.local_listener = 監聽地址修改成備庫的主機IP
sid2.local_listener(去掉)
額外增加參數:
*.db_unique_name='xxxxx'
額外去除參數:
*.remote_listener
- 在配置DG節點的FAL_SERVER時, 配置的tnsnames.ora該配置成多個RAC節點的真實IP;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_server string rac
rac =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.121)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac )
- 如果主備的內存參數不一致,需要修改內存參數的值,已適配備庫。




