系统环境:win7 64,oracle11.2.0.1 64位。
大概步骤(db_name=dgdb,主库instance=primary,db_unique_name=primary,备库instance_name=standby,db_unique_name=standby,网络服务名tns主库为primary,备库为standby):
1、用dbca创建主库(如果已有主库可省略这一步)
2、设置主库参数:
2.1修改主库为归档模式
sql>alter database archivelog;
2.2打开主库强制日志
sql>alter database force logging;
2.3设置dataguard有关参数
log_archive_config='DG_CONFIG=(primary,standby)'
log_archive_dest_1='LOCATION=d:\dataguard\arch\primary
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary'
log_archive_dest_2='SERVICE=standby ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=standby'
db_unique_name='primary'
fal_server='standby' --预备将来作为备库使用
standby_file_management='AUTO'
3、关闭主库,重启到mount状态
sql>shutdown immediate;
sql>startup mount;
4、创建备用数据库日志
sql>alter database add standby logfile
'd:\dataguard\oradata\pri_sty_redo01.log' size 50m;
5、创建备用数据库控制文件
sql>alter database create standby controlfile as
'd:\dataguard\oradata\standby\control01.ctl';
将生成的control01.ctl复制为第二个控制文件control02.ctl
6、备份主库到备库数据目录(直接拷贝就可以),包括主库的数据文件,联机日志,standby日志(如果有的话),归档日志,但不能包括控制文件。控制文件要使用第5步中创建的。
7、主库可以打开了(也可以最后打开)
sql>alter database open;
8、创建主库的参数文件给备库使用
sql>create pfile='d:\dataguard\initp.ora' from spfile;
以上,主库的配置结束
9、配置监听及tnsname
在tnsnames.ora中配置primary和standby网络服务名,其service_name应该与db_unique_name相同。
可以参考select * from global_name
测试并保证能够联通
在win7 64和oracle11g
64下,需要修改sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (NONE),
否则有可能出现ACCESS_VIOLATION异常,导致主备库日志不能同步。
10、修改第8步中的参数文件
log_archive_config='DG_CONFIG=(primary,standby)'
log_archive_dest_1='LOCATION=d:\dataguard\arch\standby
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
log_archive_dest_2='SERVICE=primary ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=primary' --##这个如果只做备机的话可以不设
db_unique_name='standby'
fal_server='primary' --预备将来作为备库使用
log_file_name_convert='primary','standby' --##文件路径映射
db_file_name_convert='primary','standby'
11、创建备库实例
c:\>oradim -new -sid standby
12、将主库的passwd文件复制成备库的文件
13、启动备库
set oracle_sid=standby
sqlplus
/nolog
sql>conn sys/sys@standby as
sysdba
sql>startup nomount pfile='d:\dataguard\initp.ora'
sql>create spfile from pfile='d:\dataguard\initp.ora';
sql>shutdown abort
sql>startup mount
sql>create pfile='d:\dataguard\inits.ora' from
spfile --##看看参数是否有遗漏
14、开始恢复
查看如果没有standby日志的话,需要创建
sql>select * from
v$stadby_Log;
sql>alter database
open;
sql>alter database
recover managed standby database using current
logfile disconnect from session;
等待一会,看看是否同步。
15、查看主机的日志同步情况
sql>select * from v$archive_dest;