9i下创建standby database 步骤
2024-07-21 02:07:02
供稿:网友
 
最近,对oracle 9i下的data guard进行了测试,发现9i作standby时更方便了
先整理出来,如下:
操作环境:windows 2000 professional + serveice pack 4
数据库:oracle 9201
主库sid:pormals
从库sid:pormals
oracle安装采用omf结构
1.主从两机的操作系统和相同pack
2.在主从库上建立数据库,选择只安装software
3.在主库上,通过dbca建立数据库,除了字符集选择 zhs16gbk外,全部使用缺省方式 
4.在从库上,手工创建和主库相同目录
5.关闭主库数据库,备份数据文件到从库 
确定需要copy过去的数据文件以及redo log 
sqlplus /nolog 
sql> conn / as sysdba; 
sql> select file_name from dba_data_files; 
确定所要copy数据文件
sql> select member from v$logfile; 
确定所要copy联机日至文件
sql> shutdown immediate; 
copy 上面选出的所有文件到从库上相应的目录. 
6.打开主库数据库,修改为归档方式(oracle9i用户操作) 
手工创建归档目录c:/oracle/arch
sqlplus /nolog 
sql> conn / as sysdba; 
connected. 
sql> startup mount; 
sql> alter database archivelog; 
sql> archive log start; 
sql> archive log list; 
sql> alter database open; 
sql> alter system set log_archive_dest_1='location=c:/oracle/arch'; 
sql> alter system set log_archive_format='%t_%s.dbf' scope=spfile; 
sql> alter system set log_archive_start=true scope=spfile; 
重新启动数据库,使修改结果生效
sql> shutdown immediate; 
察看归档模式
sql> startup 
sql> archive log list; 
7.在主库上制作从库control file 
sqlplus /nolog 
sql> conn / as sysdba; 
sql> alter database create standby controlfile as 'c:/oracle/control01.ctl'; 
copy主库c:/oracle/control01.ctl 到从库 c:/oracle/oradata/poramals/目录下
8.配置主库listener.ora和tnsnames.ora文件 
可以用net manager配置或者直接编辑c:/oracle/ora92/network/admin/listener.ora和tnsname.ora文件
也即正常为主库配置侦听和连接到主库(primary)、主库到从库(standby)的网络服务名
9.配置从库listener.ora和tnsnames.ora文件 
可以用net manager配置或者直接编辑c:/oracle/ora92/network/admin/listener.ora和tnsname.ora文件
也即正常为从库配置侦听和连接到从库到主库(primary)、直接到从库(standby)的网络服务名
10.启动主从库的listener 
分别在主从库上执行如下命令
lsnrctl start
看主从库listener是否正常启动 
11 检查主从库tnsnames.ora配置 
主库 tnsping standby 
从库 tnsping primary 
看分别到主从库的服务名是否配置正确
12.在主库上创建pfile,因为9i缺省使用spfile 
sqlplus /nolog 
sql> conn / as sysdba; 
connected. 
sql> create pfile='c:/oracle/ora92/database/initporamls.ora' from spfile; 
13.copy 刚才创建的c:/oracle/ora92/database.ora/initpormals.ora 到从库相应目录 
14.修改从库刚才copy的initpormals.ora文件 
主要修改添加:
修改control_files使它符合你的控制文件的实际路径
添加:
standby_archive_dest=’location=c:/oracle tarch’
fal_server=’primary’
fal_client=’standby’
standby_file_management=’auto’
其中standby_file_management不是必须要,但是为了后面主库添加文件,从库能自动处理,加上这个参数,避免麻烦。 
同时收工建立从库的相关归档日志路径c:/oracle tarch。 
15.copy 主库的c:/oracle/ora92/database/pwdpormals.ora到从库相应目录 
16.创建从库实例名 dos>oradim -new -sid pormals 
17.启动从库 
sqlplus /nolog 
sql> startup nomount; 
sql> alter database mount standby database; 
将从库置为standby模式 
sql> alter database recover managed standby database disconnect from session;
18.在主库上设置到从库的归档 
sql> alter system set log_archive_dest_2='service=standby mandatory reopen=60'; 
sql> select *from v$log; 
切换当前联机日志
sql> alter system switch logfile; 
sql> select *from v$log;  
察看从库后台日志 
c:/oracle/admin/pormals/bdump/pormals_arler. 
看当前归档日志是否已经正常完成恢复 
至此data guard配置完成。 
19.测试一下 
在主库上 
sql> create user test identified by 密码; 
sql> grant connect ,resource to test ; 
sql> conn test/密码@primary; 
sql> create table test(name varchar2(20)); 
sql> insert into test values('hi,data guard'); 
sql> commit; 
sql> conn / as sysdba 
sql> alter system switch logfile; 
察看从库日志 
c:/oracle/admin/poramls/bdump/pormals_alert.ora
看当前归档日志是否已经正常完成恢复 
已只读方式打开从库察看是否insert into test values('hi,data guard');已经生效。
在从库上 
sql> conn / as sysdba; 
sql> alter database recover managed standby database cancel; 
sql> alter database open read only; 
sql> conn test/密码
sql> select * from test; 
察看是否insert into test values('hi,data guard');已经生效。
如果生效说明已经完全正常工作,data guard到此完全配置完毕。 
再次置从库在恢复模式 
sql> alter database recover managed standby database disconnect from session; 
注:
1、关于启动关闭顺序 
启动的时候,先从库的listener,然后启动从库,然后启动主库的listener 接着是主库 关闭的时候正好相反,先关闭主库,然后是从库。
2、一些常用的view 
v$archive_dest_status 这里面会纪录到standby 的状态和恢复到那个日志
v$archive_gap 这里面会纪录当前从库mrp进程恢复需要的胆识还没有传到从库得日志
v$archived_log 这里面会纪录所有已经归档到从库的日志,并且记录该日志是否已经恢复
v$database 会纪录系统的保护状态和是否处于force logging状态
v$managed_standby (physical standby databases only) 会纪录当前从库的一些进程情况和进程的process id,如rfs,mrp等
v$standby_log (physical standby databases only) 会纪录当前从库的standby redo log的一些情况。