轻松搞定dataguard

1. 安装oracle,创建primary数据库 

2. 设置primary库force logging. 
PRIMARY>alter database force logging; 
Database altered. 

3. 创建密码文件 
[oracle@PRIMARY]orapwd file=orapwprimary password=xxxxxxx; 

4. 修改有关data guard的参数 
PRIMARY> show parameter log_archive_config 
PRIMARY> alter system set log_archive_config='DG_CONFIG=(zxdb,zxdbdg1)'; 
System altered. 

PRIMARY>alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/zxdb/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zxdb'; 
System altered. 



5. 添加standby log group 
PRIMARY>alter database add standby logfile group 4('/u01/app/oracle/oradata/zxdb/standbylog/group_4_1.log','/u01/app/oracle/oradata/zxdb/standbylog/group_4_2.log') size 30m; 

Database altered. 

PRIMARY>alter database add standby logfile group 5('/u01/app/oracle/oradata/zxdb/standbylog/group_5_1.log','/u01/app/oracle/oradata/zxdb/standbylog/group_5_2.log') size 30m; 

Database altered. 

创建成功后,在v$standby_log可以看到新加入的两个standby logfile的group, 在v$log里查询可以看到新添加进去的4个standby logfile。 

6. 修改参数 
fal_server zxdbdg 
fal_client zxdb 
standby_file_management auto 
log_archive_dest_state_2 enable 
log_archive_max_processes 

7. 创建standby控制文件 
PRIMARY> alter database create standby controlfile as '/u01/app/oracle/standby.ctl'; 

8. 导出spfile为pfile 
PRIMARY> create pfile='/u01/app/oracle/init.ora' from spfile; 

9. 复制数据库,可以物理拷贝,也可以用RMAN。 

10. scp拷贝pfile和standby controlfile到备考机器 
scp /u01/app/oracle/standby.ctl oracle:dg /u01/app/oracle/oradata/zxdb/controlfile/control1.ctl 
scp /u01/app/oracle/init.ora oracle:dg /u01/app/oracle/product/10.2.0/db_1/dbs/initzxdb.ora 

11. 修改pfile 
db_unique_name zxdbdg 
control_files /u01/app/oracle/oradata/zxdb/controlfile/standby.ctl 
log_archive_dest_1 LOCATION=/u01/app/oracle/oradata/zxdb/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zxdbdg 
log_archive_dest_2 SERVICE=zxdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=zxdb 
fal_server zxdb 
fal_client zxdbdg 

12. 在备库上pfile为spfile 
STANDBY> create spfile='/u01/app/oracle/product/10.2.0/db_1/dbs/spfilezxdb.ora' from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initzxdb.ora' 

13. 在主机上建立tns service zxdb和zxdbdg这里是上面fal指定的 
zxdb = 
(DESCRIPTION = 
(ADDRESS_LIST = 
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.129)(PORT = 1521)) 

(CONNECT_DATA = 
(SERVICE_NAME = zxdb) 



zxdbdg = 
(DESCRIPTION = 
(ADDRESS_LIST = 
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.130)(PORT = 1521)) 

(CONNECT_DATA = 
(SERVICE_NAME = zxdb) 



14 在备课上配置同上的tnsname 
zxdb = 
(DESCRIPTION = 
(ADDRESS_LIST = 
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.129)(PORT = 1521)) 

(CONNECT_DATA = 
(SERVICE_NAME = zxdb) 



zxdbdg = 
(DESCRIPTION = 
(ADDRESS_LIST = 
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.130)(PORT = 1521)) 

(CONNECT_DATA = 
(SERVICE_NAME = zxdb) 




15. 启动备库 
STANDBY> start mount 

16. 应用redo 
STANDBY> recover managed standby database 
这里注意,这个事handle的。所以关掉session的话,会停止住。 
一般我们都是用disconnect来解决这个问题 
STANDBY> recover managed standby database disconnect from session 

测试dg 
在主库上insert data并且commit 
ID NAME 
--------------------------------------- ---------- 
1 test1 
2 test2 
3 test3 
4 test4 

查看主库v$archived_log 
PRIMARY> select RECID, STAMP, NAME, DEST_ID, SEQUENCE#, STANDBY_DEST, ARCHIVED, APPLIED from v$archived_log; 
11 712946684 /u01/app/oracle/oradata/zxdb/archivelog/1_11_712892825.dbf 1 11 NO YES NO 
12 712946692 zxdbdg1 2 11 YES YES YES 
13 712948030 /u01/app/oracle/oradata/zxdb/archivelog/1_12_712892825.dbf 1 12 NO YES NO 
14 712948031 zxdbdg1 2 12 YES YES YES 



在备库上查看v$archived_log 
STANDBY> create table test.testobject as select * from dba_tables; 
STANDBY> alter database open read only; 
SQL> select RECID, STAMP, NAME, DEST_ID, SEQUENCE#, STANDBY_DEST, ARCHIVED, APPLIED from v$archived_log; 

RECID STAMP NAME DEST_ID SEQUENCE# STANDBY_DEST ARCHIVED APPLIED 
---------- ---------- -------------------------------------------------------------------------------- ---------- ---------- ------------ -------- ------- 
1 712946690 /u01/app/oracle/oradata/zxdb/archivelog/1_11_712892825.dbf 1 11 NO YES YES 
2 712948028 /u01/app/oracle/oradata/zxdb/archivelog/1_12_712892825.dbf 2 12 NO YES YES 

STANDBY> select RECID, STAMP, NAME, DEST_ID, SEQUENCE#, STANDBY_DEST, ARCHIVED, APPLIED from v$archived_log; 

ID NAME 
--------------------------------------- ---------- 
1 test1 
2 test2 
3 test3 
4 test4 
这里已经成功了apply到备库上去了。 

实验2 
PRIMARY> create table test.testobject as select * from dba_tables; 
PRIMARY> commit 
观察alert日志,没有归档的提示信息 
redo日志没有满,所以没有切换 
PRIMARY> insert into test.testobject select * from test.testobject; 
多执行了几次,在alert日志,出现归档的信息。 

用上面的方法查询,和主库一致。 

STANDBY>select process,client_process,sequence#,status from v$managed_standby; 

PROCESS CLIENT_P SEQUENCE# STATUS 
--------- -------- ---------- ------------ 
ARCH ARCH 0 CONNECTED 
ARCH ARCH 0 CONNECTED 
ARCH ARCH 17 CLOSING 
ARCH ARCH 0 CONNECTED 
RFS N/A 0 IDLE 
MRP0 N/A 18 WAIT_FOR_LOG 
RFS LGWR 19 IDLE 
RFS UNKNOWN 0 IDLE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值