【51CTO.com独家特稿】Oracle 10g数据卫士是一个强大的确保企业数据高可用、数据保护和灾难恢复的工具,我已经使用网格控制台和SQL命令在数据卫士/后备数据库上工作好几年了,我最近的经历是半年前为一个实验室信息管理系统(LIMS)利用数据卫士手动创建物理后备数据库,我每天都要维护它,它工作得很好,我想在这里与其他DBA分享我的经验。
在这个例子中数据库的版本是10.2.0.3,主备数据库位于不同机器上,主数据库叫做PRIM,后备数据库叫做STAN,我使用了闪存恢复区和OMF。
一、在你开始之前:
1、 确保主备数据库的操作系统和平台架构是相同的。
2、 在后备服务器上只安装Oracle数据库软件,不要例子数据库,如果需要补丁请应用,确保主备数据库的版本一致,Oracle home也要相同。
3、 在放入生产环境之前,在测试环境中先测试一下后备数据库的创建。
二、在主数据库上:
1、启用主数据库的强制日志记录:
SQL> ALTER DATABASE FORCE LOGGING;
2、如果没有密码文件,先要创建它:
2.1)检查密码文件是否存在:
SQL> select * from v$pwfile_users;
2.2)如果不存在,就创建一个。
在windwos平台上:
$cd %ORACLE_HOME%\database $orapwd file=pwdPRIM.ora password=xxxxxxxx force=y |
(注意:用sys用户的密码替换这里的xxxxxxxx)
在Unix平台上:
$Cd $ORACLE_HOME/dbs $Orapwd file=pwdPRIM.ora password=xxxxxxxx force=y |
(注意:用sys用户的密码替换这里的xxxxxxxx)
3、配置备用重做日志
3.1)备用重做日志文件的大小应与当前主数据库在线重做日志文件大小匹配,使用下面的命令找出在线重做日志文件的大小:
SQL> select bytes from v$log;BYTES ---------- 52428800 52428800 52428800 |
3.2)使用下面的命令确定你当前的日志文件组:
SQL> select group#, member from v$logfile;
3.3)创建备用重做日志文件组
我的主数据库原来有3个重做日志文件组,使用下面的命令创建3个备用重做日志文件组:
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M; SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M; SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M; |
3.4)使用下面的命令检查日志组创建是否成功:
SQL>select * from v$standby_log;
4、 在主数据库上启用归档
如果你的主数据库没有工作在归档日志模式,请开启为归档日志模式:
SQL>shutdown immediate; SQL>startup mount; SQL>alter database archivelog; SQL>alter database open; SQL>archive log list; |
5、 设置主数据库初始化参数
从服务器参数文件(spfile)创建一个文本初始化参数文件(pfile),添加新的主角色参数:
5.1)从spfile创建pfile
在Windows平台上: SQL>create pfile=’\database\pfilePRIM.ora’ from spfile; (注意:用你的Oracle home路径替换‘’中的内容) 在Unix平台上: SQL>create pfile=’/dbs/pfilePRIM.ora’ from spfile; (注意:用你的Oracle home路径替换‘’中的内容) |
5.2)编辑pfilePRIM.ora文件,添加主备角色参数:(这里的路径来自Windows系统,Unix系统做响应的修改)
db_name=PRIM db_unique_name=PRIM LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STAN)' LOG_ARCHIVE_DEST_1= 'LOCATION=F:\Oracle\flash_recovery_area\PRIM\ARCHIVELOG VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIM' LOG_ARCHIVE_DEST_2= 'SERVICE=STAN LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STAN' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE LOG_ARCHIVE_FORMAT=%t_%s_%r.arc LOG_ARCHIVE_MAX_PROCESSES=30 remote_login_passwordfile='EXCLUSIVE' FAL_SERVER=STAN FAL_CLIENT=PRIM STANDBY_FILE_MANAGEMENT=AUTO # Specify the location of the standby DB datafiles followed by the primary location; DB_FILE_NAME_CONVERT='E:\oracle\product\10.2.0\oradata\STAN\DATAFILE',' E:\oracle\product\10.2.0\oradata\PRIM\DATAFILE' # Specify the location of the standby DB online redo log files followed by the primary location LOG_FLE_NAME_CONVERT=’ E:\oracle\product\10.2.0\oradata\STAN\ONLINELOG’,’ E:\oracle\product\10.2.0\oradata\PRIM\ONLINELOG’,’ F:\Oracle\flash_recovery_area\STAN\ONLINELOG’,’ F:\Oracle\flash_recovery_area\PRIM\ONLINELOG’ |
6、 从pfile创建spfile,然后使用新的spfile重启主数据库
数据卫士必须使用spfile,创建spfile然后重启数据库:
在Windows平台上:
SQL> shutdown immediate; SQL> startup nomount pfile=’\database\pfilePRIM.ora’; SQL>create spfile from pfile=’\database\pfilePRIM.ora’; --使用新创建的spfile启动主数据库 SQL>shutdown immediate; SQL>Startup; |
(注意:用你的Oracle home路径替换‘’中的内容)
在Unix平台上:
SQL> shutdown immediate; SQL> startup nomount pfile=’/dbs/pfilePRIM.ora’; SQL>create spfile from pfile=’/dbs/pfilePRIM.ora’; --使用新创建的spfile启动主数据库 SQL>shutdown immediate; SQL>Startup; |
(注意:用你的Oracle home路径替换‘’中的内容)