首先,这并不是一篇十分详尽的安装dataguard文章,因为这样的文章网上很多,写这篇文章的初衷在于证实个人的一些想法,同时希望能对那些没有Unix环境而又想做dataguard测试的朋友有所帮助。整个过程只是一个简单的描述,把需要注意的地方用我的理解注释一下而已。其中某些章节piner在《Oracle 9i备用数据库配置使用参考手册》中描述得很清楚,我就不再螯述了,直接引用,在此感谢。
Platform: Windows2003(physical standby),WindowsXP(primary)
Oracle: physical standby和primary 都是9.2.0.6
整个过程大体分为以下几个步骤:
1、 建立备用库的controlfile
在主库中 SQL〉alter database create standby controlfile as ‘e:backupstdctl01.ctl’
2、 配置备用库的tnsnames.ora文件
PRIMARYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = testdb)
(SERVER = DEDICATED)
)
)
STANDBYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = testdb)
(SERVER = DEDICATED)
)
)
用tnsping测试以上tnsname.
3、 配置备用库的parameter file :inittestdb.ora
备用库的参数文件需要改动地方很少,
*.control_files='e:oracleoradatatestdbstdctl01.CTL','e:oracleoradatatestdbstdctl02.CTL','e:oracleoradatatestdbstdctl03.CTL' (指向1步骤建立的standby controlfile)
*.db_file_name_convert='d:oracleoradata','e:oracleoradata'(如果两数据库的目录结构不一样)
*.log_file_name_convert=='d:oracleoradata','e:oracleoradata'(如果两数据库的目录结构不一样)
其余参数按照默认亦可,几个比较重要的参数如下(建议修改)
*.log_archive_dest_1='location=e:oracleora92databasearchive'
*.log_archive_dest_2='service=standbydb LGWR REOPEN=300'
(设定这两个参数是为了当主库switchover为备用库,备用库switchover为主库,仍然可以进行日志的传输,这样新的主库仍旧可以切回备用库,新的备用库仍旧可以切回主库)
*.remote_archive_enable=TRUE (默认值)
*.standby_archive_dest='e:oracleora92databasearchive'
*.fal_server='PRIMARYDB' (连接主库的tnsname)
*.fal_client='STANDBYDB' (连接备用库的tnsname)
备注:不配置fal_server和fal_client也是可以的,Oracle9i具有自动补齐archivelog缺失(gap)的功能
*.DB_FILE_NAME_CONVERT
db_file_name_convert 主库和备用库的数据文件转换目录对映,如果有多个对映,逐一指明对映关系。
格式:*.db_file_name_convert=主库数据文件目录,备用库数据文件目录
例如:
一对一映射设定
*.db_file_name_convert='d:oracleoradata','e:oracleoradata'
多对多映射设定时,所有相对应路径都一一写出来
LOG_FILE_NAME_CONVERT
指明主库和备用库的log文件转换目录对映。
格式为:*. log_file_name_convert=主库log目录,备用库目录
例如:
*.log_file_name_convert=='d:oracleoradata','e:oracleoradata'
standby_file_management
这个参数也是9i的新参数,可以自动同步数据文件。
例如:
standby_file_management =auto
如果用到了该参数,将有如下限制
ALTER DATABASE RENAME
ALTER DATABASE ADD/DROP LOGFILE
ALTER DATABASE ADD/DROP STANDBY LOGFILE MEMBER
ALTER DATABASE CREATE DATAFILE AS
4、 建立物理备用库
有两种方法:
方法一 使用主库的冷备份
1) 把冷备份拷贝到备用库服务器上
2) 在备用库服务器上建立与主库服务器相同的目录结构
3) 在备用库服务器上定义ORACLE_SID环境变量 set ORACLE_SID=testdb
4) 在备用库服务器上用oradim建立service:oradim –new –sid %ORACLE_SID%
(备注:SID可以和主库不一样,SID只是用于在操作系统上标识Instance,而一个Instance可以打开任意一个数据库,所以只要备用库的db name和主库一样就可以)
5) 在备用库服务器上生成密码文件:
orapwd file=%ORACLE_HOME%databasepwd<sid>.ora password=sys
方法二 使用主库的热全备份(若使用这种方法1步骤中的standby controlfile要在做完热备后创建,因为此时才会有记录热备文件信息)
1) 在主库服务器上使用rman热全备主库,e.g.
RMAN>connect taget /
RMAN>backup database format=’e:backupbackup.bak’
2) 在主库服务器上 SQL〉alter database create standby controlfile as ‘e:backupstdctl01.ctl’,并拷贝到备用库服务器上inittestdb.ora中control_files指定的路径下.并复制多份
3) 在主库服务器上拷贝热备文件到备用库服务器上相同的路径下,本例为e:backup下
4) 在备用库服务器上set ORACLE_SID=testdb
5) 在备用库服务器上用oradim建立service:oradim –new –sid %ORACLE_SID%
6) 在备用库服务器上生成密码文件:
orapwd file=%ORACLE_HOME%databasepwd<sid>.ora password=sys
7) 在备用库服务器上使用standby controlfile恢复数据库
启动到mount 下
SQL> connect / as sysdba
Connected to an idle instance.
SQL>startup nomount pfile=e:oracleora92databaseinittestdb.ora
SQL>alter database mount standby database;
在RMAN中
RMAN> connect target /
RMAN> restore database;(此时数据会恢复到e:oracleoradatatestdb下,因为我们在inittestdb.ora中指定了db_file_name_convert参数)
SQL> recover standby database;(如果有需要恢复的日志可以运行此命令,本例可以跳过)
到此我们的物理备用库已经创建完毕,就差启动了,那么主库如何知道备用库的位置及又以什么方式(保护模式)传递redo的呢?请接着往下看
5、 配置主库的tnsnames.ora文件
STANDBYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = testdb)
(SERVER = DEDICATED)
)
)
6、 配置主库的参数文件:inittestdb.ora
*.log_archive_dest_1='location=d:oracleora92databasearchive' (指定主库日志的归档路径)
*.log_archive_dest_2='service=standbydb LGWR REOPEN=300' (指定主库日志的第二归档路径,即通过主库tnsnames.ora文件中定义的standbydb连接指向备用库)
7、 启动物理备用库
在备用库服务器上
SQL> connect / as sysdba
Connected to an idle instance.
SQL>startup nomount pfile=e:oracleora92databaseinittestdb.ora
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;(启动MRP进程,把归档日志应用到备份库上,注意:不管采用什么保护模式,在备用日志或者当前正在归档的日志中的内容是不能马上被应用的,必须当归档完成后才由MRPn进程应用到备用数据库)
8、 启动主库
主库的启动和一般数据库的启动没有区别,在主库服务器上
SQL> connect / as sysdba
Connected to an idle instance.
SQL>startup pfile=e:oracleora92databaseinittestdb.ora
查看全文