分类: Oracle
2014-02-26 14:36:50
Oracle10gR2在管理方面比起Oracle9i来说,有了相当大的改进,很多组件的安装配置过程都被简化了。简单的操作能够减少很多不必要的失误,对于提高系统的可用性也是很有帮助的。Logical Standby现在能够由physical standby直接转化而来,这一点改进很重要,不但简化了配置的过程,也为Oracle11g利用physical standby做滚动升级打下了基础,滚动升级的另外一个基础是Flashback database。Oracle很多特性在刚推出的时候看是改进不大,但真正产生化学作用往往会在更新的版本中体现。
一、创建物理备库
关于物理备库的创建,已经有过很多文章了,所以这里就不打算再重复整个过程了。可以参考我以前做试验的时候一点记录
上面两篇文章试验的版本都是9201的,但是物理备库在9i和10g的配置过程基本一致。不同的是,Oracle10g引入了一些新的参数和属性,可以简化switchover操作。所以参数的设置我这里再贴一个例子。
主库:
*.db_name=’ning’
*.db_unique_name=’NING’
*.fal_client=’NING’
*.fal_server=’STANDBY’
*.log_archive_dest_1=’location=f:\oracle\arch\ning valid_for=(all_logfiles,all_roles) db_unique_name=ning’
*.log_archive_dest_2=’service=standby valid_for=(online_logfiles,primary_role) db_unique_name=ning’
*.log_archive_dest_state_2=’ENABLE’
备库:
*.db_name=’STANDBY’
*.db_unique_name=’standby’
*.fal_client=’standby’
*.fal_server=’ning’
*.log_archive_dest_1=’location=f:\oracle\arch\standby valid_for=(all_logfiles,all_roles) db_unique_name=standby’
*.log_archive_dest_2=’service=ning valid_for=(online_logfiles,primary_role) db_unique_name=standby’
*.log_archive_dest_state_2=’ENABLE’
Oracle9i的lock_name_space参数主要用在主备库在同一台server的时候用来区分instance的,因为物理备库的db_name和主库需要保持一致的。这个参数在Oracle10g中已经废弃,使用db_unique_name替代。但是db_unique_name的作用已经被放大,即使主备库在不同的server上,也建议设置,这样通过在归档路径参数中设置valid_for和db_unique_name属性,可以做到switchover后,即使主备角色转换, 还是可以使用同一套参数文件。至于控制文件,转换为逻辑备库的时候,会根据主库的控制文件参数重设。
二、转换物理备库为逻辑备库
首先停止物理备库的redo apply
alter database recover managed standby database cancel;
然后在主库为logminer生成数据字典信息到日志中,这个步骤需要使用闪回查询技术对数据字典信息执行一致性读,故undo_retention需要设置时间长一些 ,不然可能碰到ora-01555。
exec dbms_logstdby.build;
归档主库当前日志,确保包含数据字典信息的归档传递到备库
alter system archive log current;
执行转换语句,逻辑备库的db_name不需要和主库保持一致,所以这里可以根据需要选择备库的名字。如果使用的是spfile,还会自动修改db_name参数。
alter database recover to logical standby test;
重启逻辑备库
shutdown immediate;
startup mount;
alter database open resetlogs;
启动sql apply
alter database start logical standby apply;
如果要启动实时应用特性,需要先在备库添加standby redo logfile
alter database add standby logfile ‘f:\oracle\oradata\standby\standbyredo01.log’ size 10m;
alter database add standby logfile ‘f:\oracle\oradata\standby\standbyredo02.log’ size 10m;
alter database add standby logfile ‘f:\oracle\oradata\standby\standbyredo03.log’ size 10m;
alter database add standby logfile ‘f:\oracle\oradata\standby\standbyredo04.log’ size 10m;
启动real time sql apply
alter database stop logical standby apply;
alter database start logical standby apply immediate;