试验环境primary server:
windows2000 server + oracle 10.0.1.0.2
oracle_sid:dgtest
oracle_home: d:\oracle\product\10.1.0\db_1standby server:
windows xp pro + oracle 10.0.1.0.2oracle_sid:dgtestoracle_home: d:\oracle\product\10.1.0\db_1
配置步骤首先,装好primary和standby上的oracle,建sid同为dgtest的库,所有设置完全相同。然后停止shutdown两台上的oracle,将primary上的所有数据文件,控制文件,redo文件和password文件都copy到standby机器的相应位置。(还可以利用热备,rman等来建立初始standby库),这样,我们就拥有了两台完全一样的oracle server
1. 在primary database上设置force loggingsql>alter database force logging;
2. 修改primary databse的初始化参数db_unique_name=’primary’control_files='d:\oracle\product\oradata\control01.ctl','d:\oracle\product\oradata\control02.ctl','d:\oracle\product\oradata\control03.ctl'log_archive_dest_1= 'location= d:\oracle\product\arch’log_archive_dest_2= 'service=standby'log_archive_dest_state_1=enablelog_archive_dest_state_2=enableremote_login_passwordfile=exclusivelog_archive_format='arc%s%t%r.arc'fal_server=standbyfal_client=primarystandby_file_management=autolock_name_space ----这是当主数据库和备用数据在同一台机上时要设该参数,设为备用数据库的sid
3. 设置primary database为archivelog模式sql>shutdown immediate;sql>startup mount;sql>alter database archivelog;sql>alter database open:
4. 在primary database上创建standby database的控制文件sql>shutdown immedaite;sql>startup mount;sql>alter database create standby controlfile as ‘d:\oracle\product\oradata\controlstandby.ctl’sql>alter database open;然后将该controlfile复制到standby server的对应位置
5. 修改standby databse的初始化参数db_unique_name=’standby’control_files='d:\oracle\product\oradata\controlstandby.ctl'log_archive_dest_1= 'location= d:\oracle\product\arch’log_archive_dest_2= 'service=primary'log_archive_dest_state_1=enablelog_archive_dest_state_2=enablestandby_archive_dest=’ d:\oracle\product\arch’
remote_login_passwordfile=exclusivefal_server=primaryfal_client=standbystandby_file_management=autodb_file_name_convert ----当primary和standby的数据文件路径不一致时使用log_file_name_convert ----当primary和standby的数据文件路径不一致时使用lock_name_space ----当主数据库和备用数据在同一台机上时设为备用数据库的sid
具体参数的说明请参考oracle在线文档
6. 设置primary database和standby database的tnsnames.oraprimary = (description = (address_list = (address = (protocol = tcp)(host = primary_server)(port = 1521)) ) (connect_data = (service_name = dgtest) ) )standby = (description = (address_list = (address = (protocol = tcp)(host = standby_server)(port = 1521)) ) (connect_data = (service_name = dgtest) ) )
7. 启动standby database sql>startup nomount pfile=’d:\oracle\product\initdgtest.ora’sql>alter database mount standby database;
8. 启动primary databasesql>startup pfile=’d:\oracle\product\initdgtest.ora’
9. 启动standby database到recover manage模式sql>alter database recover managed standby database disconnect from session;
switchover
在primary上
1. sql>select switchover_status from v$database switchover_status的值入股是to standby,可以直接switchover,如果是sessions active, 则需要在switchover的命令后面加上with session shutdown
2. sql>alter database commit to switchover to physical standby;
3. sql>shutdowm immediate;
4. sql>startup mount;
在standby上
1. sql> select switchover_status from v$database
switchover_status的值入股是to primary,可以直接switchover,如果是sessions active, 则需要在switchover的命令后面加上with session shutdown
2. sql>alter database commit to switchover to primary;
3. sql>shutdown immediate;
4. sql>startup;
要想顺利的实现switchover,最好在每台server上都同时设置好primary和standby的一些初始化参数,虽然其中一些参数只有在primary或者standby其中之一上起作用
failover
在standby上
1. sql>alter database recover managed standby database finish; or sql>alter database recover managed standby database finish skip standby logfile;
2. sql>alter database commit to switchover to primary;
3. sql>shutdown immediate;
4. sql>startup;
相关视图
v$archive_dest
v$archive_dest_status v$log_history v$archvied_log v$managed_standby v$archive_gap
常见问题
1. 日志无法传送 sql>select dest_name,status,error from v$archive_dest; 察看相应的归档路径的状态是否valid,否则根据error信息进行处理
2. 无法使用alter database重命名data file在standby上,当设置standby_file_management为auto时,不允许下列操作alter database renamealter database add/drop logfilealter database add/drop standby logfile memberalter database create datafile as
3. switchover失败sql>alter database commit to switchover to physical standbyora-01093:alter database close only permitted with no session connected察看引起该错误的活动sessionsql> select sid,process,program from v$session where type='user' and sid<>(select distinct sid from v$mystat);断开该session,或者使用如下命令来做switchoversql>lter database commit to switchover to physical standby with session shutdown;
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器