本文指导物理备用数据库的创建,包括以下主题:
准备主库
创建物理备用数据库
更多准备
1、在创建备库之前准备主库
1.1强制记录日志模式
SQL>alter database force logging;
1.2创建一个口令文件
DATA GUARD配置中的每一个数据库都需要一个口令文件,用来传输日志的sys用户的密码在所有系统中必须是一致的。
1.3设置主库的初始化参数文件
在主库中,你需要定义一些控制日志传输服务的初始化参数。当主库被转换成备库角色的时候,你需要增加一些额外的参数来控制日志数据的接收和日志应用服务。下面是一个主库的初始化参数文件示例,这个示例展现一个主库在芝加哥,一个物理备用数据库在波士顿的DATA GUARD配置。当芝加哥的数据库运行在主库角色或者从库角色时,这些示例中的参数是有效的。配置使用的名称如下:
Database DB_UNIQUE_NAME Oracle Net Service Name
Primary chicago chicago
Physical standby boston boston
主库: Primary Role Initialization Parameters
DB_NAME=chicago
DB_UNIQUE_NAME=chicago
SERVICE_NAMES=chicago
LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'
CONTROL_FILES='/arch1/chicago/control1.ctl', '/arch2/chicago/control2.ctl'
LOG_ARCHIVE_DEST_1=
'LOCATION=/arch1/chicago/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=chicago'
LOG_ARCHIVE_DEST_2=
'SERVICE=boston
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
这些参数控制日志传输服务如何传输日志数据以及日志数据在本地的归档。注意示例假定使用默认的ARCn进程传输日志数据,如果你指定LGWR进程传输日志数据,需要包括NET_TIMEOUT参数在LOG_ARCHIVE_DEST_2参数。
下面一个例子显示当主库转换为从库时的一些其他参数,这些参数当主库转换为从库时起作用:
FAL_SERVER=boston
FAL_CLIENT=chicago
DB_FILE_NAME_CONVERT=
'/arch1/boston/','/arch1/chicago/','/arch2/boston/','/arch2/chicago/'
LOG_FILE_NAME_CONVERT=
'/arch1/boston/','/arch1/chicago/','/arch2/boston/','/arch2/chicago/'
STANDBY_FILE_MANAGEMENT=AUTO
下面提供对每一个初始化参数的简单解释:
DB_NAME--指定一个8个字符的名称,对于所有备用数据库使用相同的名称
DB_UNIQUE_NAME--为每一个数据库指定一个唯一的名称
SERVICE_NAMES--为备用数据库指定一个与主库不同的服务名,如果你不明确指定不同的服务名,并且主库和从库位于同一系统中,相同的global name(由数据库名和域名组成DB_NAME,DB_DOMAIN),会对两个数据库有效
LOG_ARCHIVE_CONFIG--指定DG_CONFIG列出主库和备库的DB_UNIQUE_NAME,可以动态添加备库。
LOG_ARCHIVE_DEST_n--指定重做数据在主库和从库的归档位置,示例中的LOG_ARCHIVE_DEST_1归档主库的本地联机重做日志文件到本地归档日志文件/arch1/chicago/,LOG_ARCHIVE_DEST_2只对于主库角色有效,传输重做数据到远端物理备用目标boston。注意:如果配置了闪回恢复区(DB_RECOVERY_FILE_DEST),并且你没有使用LOCATION属性配置本地归档目标,Data Guard 自动使用LOG_ARCHIVE_DEST_10初始化参数作为本地归档的默认目标。
REMOTE_LOGIN_PASSWORDFILE--在主库和备库为sys用户设置相同的密码,这个参数的推荐设置是EXCLUSIVE或者SHARED
FAL_SERVER--指定FAL server(一般运行在主库角色的数据库)的网络服务名,当Chicago数据库运行在备用角色时,它使用这个参数指定的服务器来获取缺少的日志数据
FAL_CLIENT--指定Chicago数据库的网络服务名,FAL server Boston 复制缺少的重做日志文件到Chicago备用数据库
STANDBY_FILE_MANAGEMENT--设置成AUTO,当主库数据文件增加或删除时,自动改变备用数据库
警告:小心初始化参数文件中的参数,如果主库与从库的目录位置不同的话。
1.4归档
主库必须工作在归档模式
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
2、创建一个物理备用数据库
2.1创建主库数据文件的副本
2.2创建备用数据库的控制文件
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/boston.ctl';
注意:不能使用同样的控制文件
2.3为备用数据库准备初始化参数文件
第一步,复制主库的初始化参数文件到从库
SQL> CREATE PFILE='/tmp/initboston.ora' FROM SPFILE;
第二步,设置参数
下例显示备用数据库的初始化参数
DB_NAME=chicago
DB_UNIQUE_NAME=boston
SERVICE_NAMES=bostonLOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'
CONTROL_FILES='/arch1/boston/control1.ctl', '/arch2/boston/control2.ctl'
DB_FILE_NAME_CONVERT=
'/arch1/chicago/','/arch1/boston/','/arch2/chicago/','/arch2/boston/'
LOG_FILE_NAME_CONVERT=
'/arch1/chicago/','/arch1/boston/','/arch2/chicago/','/arch2/boston/'LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1=
'LOCATION=/arch1/boston/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_2=
'SERVICE=chicago
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=chicago'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
STANDBY_FILE_MANAGEMENT=AUTO
INSTANCE_NAME=boston
FAL_SERVER=chicago
FAL_CLIENT=boston另外,确保COMPATIBLE参数被设置成相同的值。如果值不同,数据传输服务不可用。
2.4从主库复制文件到从库
数据文件
控制文件
初始化参数文件
2.5设置环境
第一步,创建windows服务
WINNT> oradim -NEW -SID boston -INTPWD password -STARTMODE manual
第二步,创建密码文件
第三步,配置主库和从库的监听器
第四步,备库断开连接的监测
在备库SQLNET.ORA文件中SQLNET.EXPIRE_TIME=2
第五步,创建oracle网络服务名
第六步,为备库创建spfile
SQL> CREATE SPFILE FROM PFILE='initboston.ora';
2.6启动物理备用数据库
第一步,启动数据库到只读模式
SQL> STARTUP OPEN READ ONLY;
第二步,为物理备用数据库增加一个新的临时文件
SQL> ALTER TABLESPACE TEMP1 ADD TEMPFILE
2> '/arch1/boston/temp01.dbf'
3> SIZE 40M REUSE;
第三步,开始日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
第四步,测试物理备用数据库的归档操作
直到日志切换,重做日志才传输到远端备用位置。
SQL> ALTER SYSTEM SWITCH LOGFILE;
2.7验证备用数据库工作正常
首先检查备用数据库存在的归档重做日志文件,然后强制日志切换归档一些主库的联机重做日志,再检查从库。
第一步,检验已存在的归档日志文件
在从库,查询V$ARCHIVED_LOG视图
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME
2 FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIME NEXT_TIME
---------- ------------------ ------------------
8 11-JUL-02 17:50:45 11-JUL-02 17:50:53
9 11-JUL-02 17:50:53 11-JUL-02 17:50:58
10 11-JUL-02 17:50:58 11-JUL-02 17:51:03
3 rows selected.
第二步,日志切换归档当前的联机重做日志文件
在主库
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
第三步,验证新的重做数据被归档到备用数据库
在备用数据库,查询V$ARCHIVED_LOG视图
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME
2> FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIME NEXT_TIME
---------- ------------------ ------------------
8 11-JUL-02 17:50:45 11-JUL-02 17:50:53
9 11-JUL-02 17:50:53 11-JUL-02 17:50:58
10 11-JUL-02 17:50:58 11-JUL-02 17:51:03
11 11-JUL-02 17:51:03 11-JUL-02 18:34:11
4 rows selected.
第四步,验证新的归档日志文件被应用
在备用数据库,查询V$ARCHIVED_LOG视图来验证归档日志文件被应用
SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG
2 ORDER BY SEQUENCE#;
SEQUENCE# APP
--------- ---
8 YES
9 YES
10 YES
11 YES
3、更多的准备
3.1升级数据保护模式
3.2配置备用重做日志
当备用数据库运行在最高保护模式和最高可用性模式时需要备用重做日志文件。但是,推荐在所有备用数据库配置备用日志文件,因为在失败转移时Data Guard可以应用更多的重做数据。备用日志文件存在在主库和从库并且有相同的大小和名称。
3.3启用闪回数据库
启用闪回数据库,在失败转移之后,不需要重建主库。闪回数据库类似于基于时间点的数据库恢复,闪回数据库比基于时间点的恢复更快,你可以在主库,从库,或者两者同时启用闪回数据库。