在ocm的考试中,dg的安装本来是件很容易的事情,因为grid control安装完成后,只要一路next下去就可以完成安装。不过也有可能运气比较衰的时候,像我,在虚拟机的安装过程中,总是报错:
同时,在gc的$ORACLE_BASE/OracleHomes/oms10g/sysman/log/中看到:
1 2 3 4 5 6 7 |
2010-07-16 10:52:01,679 [EMUI_10_52_01_/console/database/dataguard/create] ERROR jobs.dbclone checkSetFileError.77 - DatabaseFileAttributes.checkSetFileError(): Null database file! 2010-07-16 10:52:01,680 [EMUI_10_52_01_/console/database/dataguard/create] ERROR jobs.dbclone setControlfiles.158 - DatabaseFileAttributes.setDatafiles(): Invalid control file! 2010-07-16 10:52:01,752 [EMUI_10_52_01_/console/database/dataguard/create] ERROR jobs.dbclone getControlFileNames.614 - DatabaseFileAttributes.getDatafileNames(): null datafile names! …… 2010-07-16 10:58:42,011 [Thread-25] ERROR jobs.dbclone getFileFromEMD.858 - DBCloneVerify.getFileFromEMD(): Exception: /oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora: java.io.IOException: No space left on device 2010-07-16 10:58:42,014 [Thread-25] ERROR jobs.dbclone updateNetworkConfigFiles.1180 - DBCloneObject.updateNetworkConfigFiles(): Exception: java.lang.Exception: /oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora: java.io.IOException: No space left on device 2010-07-16 10:58:44,557 [EMUI_10_58_44_/console/database/dataguard/create] ERROR em.dataguard onEvent.1038 - CreateConfigController: Exception: oracle.sysman.db.dg.util.VxxStandbyException: /oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora: java.io.IOException: No space left on device |
查询metalink似乎是个bug(Bug 7342584),于是,从最简单的角度出发,我觉得手工建dg。
手工建dg的方式也比较简单。对于考试的库,由于比较小,我们可以用hot backup的方式也进行复制。以下是操作的方式:
1.由于我们的主库(ocmdb)和备库(dg2)都是在同一的机器上(奇数机),因此,有几个convert的参数需要配置,结合其他要调整的参数,在这里,我在主库上改了如下几个参数:
1 2 3 4 5 6 7 8 9 10 11 12 |
alter system set fal_client=dg2 scope=spfile; alter system set fal_server=ocmdb scope=spfile; alter system set log_archive_dest='' scope=spfile; alter system set log_archive_dest_1='LOCATION=/oracle/app/oracle/arch/ocmdb' scope=spfile; alter system set log_archive_dest_2='SERVICE=dg2_site1 optional' scope=spfile; alter system set standby_archive_dest='/oracle/app/oracle/arch/dg2' scope=spfile; alter system set standby_file_management=auto scope=both; alter system set db_file_name_convert='/oracle/app/oracle/oradata/ocmdb/dfile', '/oracle/app/oracle/oradata/dg2/dfile'; alter system set log_file_name_convert='/oracle/app/oracle/oradata/ocmdb/lfile','/oracle/app/oracle/oradata/dg2/lfile'; |
将以上参数create pfile from spfile。
2.将pfile rename成initdg2.ora,同时修改下面几行:
*.db_name=’ocmdb’
*.db_unique_name=ocmdb_site1
*.instance_name=’dg2′
再修改控制文件的名字
生成备库的密码文件,然后用该pfile启动备库到nomount状态。
3.配置tnsnames.ora,在里面添加备库的信息。
4.在备库alter system register,使得备库在主库能动态注册。
5.在主库做几次checkpoint,检查scn是否一致:select CHECKPOINT_CHANGE#,CONTROLFILE_CHANGE# from v$database;和select distinct CHECKPOINT_CHANGE# from v$datafile_header;。再运行alter database begin backup。
6.alter database create standby controlfile as ‘某路径’;
7.将控制文件复制到对应的路径,将数据文件、日志文件复制到对应路径。
8.启动备库,alter database mount standby database;alter database recover managed standby database disconnect from session;
9.检查RFS服务是否对日志的传送情况和mrp进程是否apply了传送的日志。
5条评论
貌似没配standby redo log,没配real time apply,也没设置最大保护模式。^_^
报错信息应该是主库节点没足够空间了放clone的临时文件了。
re fsm:不是的,空间很足够。
用的是最大可用的模式,传输的是arch,不需要standby redo log。最大保护模式,为了图省事,没继续配置。:P
必须要配置standby redo log的
因为,等下要在主机做个操作,切换到备机,再做个操作,再切换回主机。
另外,不建议这个部分用手工,60分钟,要配置的东西太多,出错就麻烦
还是图形吧
我记得我们那次,5个人,图形,全部ok的
这个有个问题要注意,就是standby_file_management,必须设成auto