目 录
第一章 引言 4
1.1. 编写目的 4
1.2. 定义、首字母缩写词和缩略语 4
第二章 安装主、备库ORACLE软件 4
2.1. 安装前规划 4
2.2. 修改/ETC/HOSTS(主、备) 4
2.3. 检查并建立相关目录(主、备) 4
2.3.1. 数据文件目录 4
2.3.2. 归档日志文件目录 5
2.3.3. 临时备份文件目录 5
2.4. 做好数据备份 5
第三章 DATAGUARD配置 5
3.1. SQLPLUS登录主库,修改为强制归档模式,并修改相关参数 5
3.2. 重启主库至OPEN状态并开启归档模式 6
3.3. 编辑主库及备库的TNSNAME.ORA文件 6
3.4. 在主库上生成备库的参数文件 6
3.5. 将主库的密码、参数文件拷贝至备库 6
3.6. 在主库上生成“造目录”文件 7
3.6.1. 在主库 7
3.6.2. 在备库 7
3.7. 在备库上更改参数文件TESTDBWB.PFILE,修改其中主备库相关参数 7
3.8. 在备库修改LISTENER.ORA加入如下静态监听 8
3.9. 在备库上使用修改的配置文件启动备库数据库 9
3.10. 在主库进入RMAN模式 9
3.11. 在备库上创建SPFILE文件 9
3.12. 在主库和备库上增加STANDBY REDOLOGFILE文件 10
3.13. 查询主库状态 10
3.14. 在备节点开启ADG同步状态 10
3.15. 主备库查询比对 11
3.16. 同步检查 11
3.16.1. 在主库: 11
3.16.2. 在备库: 11
3.16.3. 在主库: 11
第一章 引言
1.1. 编写目的
本文档描述了配置Oracle Dataguard的详细步骤,编写的目的是为了使用者能够快速进行ORACLE DataGuard的配置,以便实现数据的容灾或其他查询等目的。.
1.2. 定义、首字母缩写词和缩略语
第二章 安装主、备库Oracle软件
2.1. 安装前规划
主库(DB1) 备库(DB2)
192.168.14.40 192.168.14.41
db_unique_name=testdbwb40 db_unique_name=testdbwb41
ORACLE_SID=testdbwb
Max Performance
在搭建DataGuard之前需要先在主、备库上安装好oracle 10gr2/11gr2软件,并在主库上创建好实例。
检查防火墙是否关闭,如没关闭
Service iptables stop
Chkconfig iptanles off
2.2. 修改/etc/hosts(主、备)
192.168.14.40 db1
192.168.14.41 db2
2.3. 检查并建立相关目录(主、备)
目录必须主备都有,且须确保空间够用、权限正确
2.3.1. 数据文件目录
在主库通过SQL查询
#su - oracle
s q l p l u s / a s s y s d b a S Q L > s e l e c t n a m e f r o m v sqlplus / as sysdba SQL>select name from v sqlplus/assysdbaSQL>selectnamefromvdatafile;
本例为:/u02/oradata/testdbwb
在备库
#mkdir -p /u02/oradata/testdbwb
#chown -R oracle:oinstall /u02/oradata/testdbwb
2.3.2. 归档日志文件目录
#mkdir -p /u02/arch (依实际情况修改)
#chown -R oracle:oinstall /u02/arch
2.3.3. 临时备份文件目录
#mkdir -p /u02/rmans
#chown -R oracle:oinstall /u02/rmans
2.4. 做好数据备份
在正式配置之前做好数据备份工作
- 将主库备库的pfile备份
- 将主库备库的密码文件备份
- 主库数据文件备份(用rman)
第三章 DataGuard配置
3.1. sqlplus登录主库,修改为强制归档模式,并修改相关参数
#su - oracle
$sqlplus / as sysdba
SQL> ALTER DATABASE FORCE LOGGING;
alter system set db_unique_name=testdbwb40 scope=spfile;
alter system set log_archive_config=‘DG_CONFIG=(testdbwb40,testdbwb41)’ scope=spfile;
alter system set log_archive_dest_1=‘LOCATION=/u02/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=testdbwb40’ scope=spfile;
alter system set log_archive_dest_2=‘SERVICE=testdbwb41 ASYNC NOAFFIRM REOPEN=60 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=testdbwb41’ scope=spfile;
alter system set log_archive_dest_state_1=‘ENABLE’ scope=spfile;
alter system set log_archive_dest_state_2=‘ENABLE’ scope=spfile;
alter system set fal_server=‘testdbwb41’ scope=spfile;
alter system set standby_file_management=auto scope=spfile;
alter system set remote_login_passwordfile=‘EXCLUSIVE’ scope=spfile;
alter system set log_file_name_convert =’/u02/oradata/testdbwb/’,’/u02/oradata/testdbwb/’ scope=spfile;
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /archivelog
Oldest online log sequence 443
Current log sequence 444
3.2. 重启主库至open状态并开启归档模式
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog; (如果已经开启,此步可略)
SQL> alter database open;
3.3. 编辑主库及备库的tnsname.ora文件
$ cd $ORACLE_HOME/network/admin
$ vi tnsnames.ora(无此文件则新建)
testdbwb40 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.14.40)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = testdbwb)
)
)
testdbwb41 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.14.41)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = testdbwb)
)
)
配完后一定要tnsping一下对方
tnsping testdbwb41
tnsping fapdnwb40
3.4. 在主库上生成备库的参数文件
$sqlplus / as sysdba
create pfile=’/u02/rmans/testdbwb.pfile’ from spfile;
3.5. 将主库的密码、参数文件拷贝至备库
#su - oracle
scp -P 22 /u02/rmans/testdbwb.pfile 192.168.14.41:/u02/rmans
scp -P 22 /u01/app/oracle/product/11.2.0/db/dbs/orapwtestdbwb 192.168.14.41:/u01/app/oracle/product/11.2.0/db/dbs/
3.6. 在主库上生成“造目录”文件
3.6.1. 在主库
$su - oracle
$for d in find /u01/app/oracle -type d -name testdbwb
; do find $d -type d | sed -e ‘s/40/41/g’ -e ‘s/^/mkdir -p /g’ >> md; done;
将md文件拷到备库
$scp -P 22 md 192.168.14.41:/u02/rmans
3.6.2. 在备库
#su - oracle
$cd /u02/rmans
$sh md
3.7. 在备库上更改参数文件testdbwb.pfile,修改其中主备库相关参数
#su - oracle
$cd /u02/rmans
$vi testdbwb.pfile
主要是2点修改
1、 将testdbwb40与testdbwb41对调
2、 将*.log_archive_dest_state_2=‘DEFER’
testdbwb.__db_cache_size=10838081536
testdbwb.__java_pool_size=134217728
testdbwb.__large_pool_size=67108864
testdbwb.__oracle_base=’/u01/app/oracle’#ORACLE_BASE set from environment
testdbwb.__pga_aggregate_target=4294967296
testdbwb.__sga_target=12884901888
testdbwb.__shared_io_pool_size=0
testdbwb.__shared_pool_size=1778384896
testdbwb.__streams_pool_size=0
*._enable_automatic_sqltune=FALSE
*._enable_NUMA_optimization=FALSE
*._optim_peek_user_binds=FALSE
*.audit_file_dest=’/u01/app/oracle/admin/testdbwb/adump’
*.audit_trail=‘NONE’
*.compatible=‘11.2.0.4.0’
*.control_files=’/u02/oradata/testdbwb/control01.ctl’,’/u02/oradata/testdbwb/control02.ctl’
*.db_block_size=8192
*.db_domain=’’
*.db_name=‘testdbwb’
*.db_unique_name=‘testdbwb41’
*.db_writer_processes=4
*.deferred_segment_creation=FALSE
*.diagnostic_dest=’/u01/app/oracle’
*.fal_server=‘testdbwb40’
*.log_archive_config=‘DG_CONFIG=(testdbwb41,testdbwb40)’
*.log_archive_dest_1=‘LOCATION=/u02/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=testdbwb41’
*.log_archive_dest_2=‘SERVICE=testdbwb40 ASYNC NOAFFIRM REOPEN=60 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=testdbwb40’
*.log_archive_dest_state_1=‘ENABLE’
*.log_archive_dest_state_2=‘DEFER’
*.max_dump_file_size=‘10G’
*.memory_target=0
*.open_cursors=32000
*.optimizer_dynamic_sampling=5
*.optimizer_index_cost_adj=10
*.optimizer_mode=‘ALL_ROWS’
*.parallel_execution_message_size=8192
*.pga_aggregate_target=4294967296
*.processes=2000
*.recyclebin=‘ON’
*.remote_login_passwordfile=‘EXCLUSIVE’
*.result_cache_max_result=5
*.result_cache_max_size=62914560
*.result_cache_mode=‘AUTO’
*.sec_case_sensitive_logon=FALSE
*.session_cached_cursors=150
*.sga_max_size=12884901888
*.sga_target=12884901888
*.standby_file_management=‘AUTO’
*.undo_tablespace=‘UNDOTBS1’
3.8. 在备库修改listener.ora加入如下静态监听
#su - oracle
$cd $ORACLE_HOME/network/admin/
$vi listener.ora(无此文件则新建)
SID_LIST_listener=
(SID_LIST=
(SID_DESC=
(SID_NAME=testdbwb)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db)))
$lsnrctl start
3.9. 在备库上使用修改的配置文件启动备库数据库
#su - oracle
$sqlplus / as sysdba
startup nomount pfile=’/u02/rmans/testdbwb.pfile’
3.10. 在主库进入rman模式
#su - oracle
$rman
RMAN> CONNECT TARGET SYS/xxxxxx@testdbwb40;
RMAN> CONNECT AUXILIARY SYS/xxxxxxx@testdbwb41;
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate AUXILIARY channel c4 type disk;
allocate AUXILIARY channel c5 type disk;
allocate AUXILIARY channel c6 type disk;
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
NOFILENAMECHECK;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
}
3.11. 在备库上创建spfile文件
#su - oracle
$sqlplus / as sysdba
SQL>create spfile from pfile=’/u02/rmans/testdbwb.pfile’;
SQL>shutdown immediate
SQL>exit
s q l p l u s / a s s y s d b a S Q L > s t a r t u p 3.12. 在 主 库 和 备 库 上 增 加 s t a n d b y r e d o l o g f i l e 文 件 如 果 r e d o l o g 有 N 组 , s t a n d b y r e d o l o g 则 为 N + 1 组 。 如 下 是 r e l o g l o g 有 5 组 的 情 况 , 所 以 s t a n d b y r e d o l o g 有 6 组 。 大 小 为 52428800 b y t e s 。 此 信 息 可 从 v sqlplus / as sysdba SQL>startup 3.12. 在主库和备库上增加standby redologfile文件 如果redo log有N组,standby redo log则为N+1组。如下是relog log有5组的情况,所以standby redo log有6组。大小为52428800bytes。此信息可从v sqlplus/assysdbaSQL>startup3.12.在主库和备库上增加standbyredologfile文件如果redo