1. 准备主数据库
1.1 启用合适的日志记录模式
在创建物理备数据库时,需要配置主数据库适合于Data Guard配置的日志记录模式(注意日志记录模式与归档模式的区别,归档模式是指对系统产生的日志是否进行归档或不归档)。数据库缺省的日志模式允许数据在load过程中采取nologged的方式,可能会导致在备数据库中遗失数据,需要手工干涉来纠正,因此不适合含有备数据库的数据库。可以将主数据库的日志模式配置成以下模式:
1) FORCE LOGGING模式,禁止所有load操作采用nonlogged方式。由于加载数据需要复制到redo日志,会导致载入过程变慢。使用以下命令启用FORCE LOGGING模式:
SQL> ALTER DATABASE FORCE LOGGING;
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
2) STANDBY NOLOGGING FOR DATA AVAILABILITY模式,load操作会将载入数据通过它自己的连接发送到各个备数据库。commit操作将会延迟直到所有备数据库作为Active Data Guard环境中运行管理恢复的一部分操作已经将数据应用完成为止。
SQL> ALTER DATABASE SET STANDBY NOLOGGING FOR DATA AVAILABILITY;
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
3)STANDBY NOLOGGING FOR LOAD PERFORMANCE模式,与上面的模式类似,不过在load的过程中如果网络速度不能跟上将数据载入到主数据库的速度时将停止将数据发送到备数据库。在这种模式下,备数据库可能会遗失数据,但是各个备数据库作为Active Data Guard环境中运行管理恢复的一部分操作会自动从主数据库获取数据。
SQL> ALTER DATABASE SET STANDBY NOLOGGING FOR LOAD PERFORMANCE;
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
1.2. 配置Redo传输认证
Oracle Data Guard使用Oracle Net会话在成员之间进行redo数据和控制信息的传输。Redo传输会话通过SSL(Secure Sockets Layer)协议或远程登录密码文件进行认证。
在以下条件下,使用SSL在两个数据库之间来认证redo传输会话:
1)数据库属于相同的Oracle Internet Directory(OID)企业域成员,允许使用当前的用户数据库链接
2)数据库的初始化参数LOG_ARCHIVE_DEST_n和FAL_SERVER使用SSL的Oracle Net连接描述符
3)每个数据库有一个Oracle wallet或包含一个DN(distinguished name)与数据库的OID条目中的DN相匹配的用户认证的支持的硬件安全模块
如果以上SSL认证要求不满足,那么Oracle Data Guard的每个成员之间必须配置使用远程的登录密码文件,同时每个物理备数据库在配置中必须包含有主数据库最新的密码文件副本。
启用密码文件认证用户步骤:
1) 创建密码文件(当密码文件存储在ASM磁盘组中时,可以在多个数据库实例之间共享,可选:RAC安装时默认已在ASM组上创建密码文件)
#orapwd FILE=filename FORMAT=12.2
2) 设置REMOTE_LOGIN_PASSWORDFILE初始化参数为exclusive(缺省值,更改需要重启数据库)。
3) 使用SYS用户连接数据库,创建相应的用户和密码,给用户分配相应的权限
SQL> GRANT SYSDBA to mydba;
4) 使用密码文件进行验证
SQL> CONNECT mydba as SYSDBA
注:从Oracle 12.2.0.1版本开始,主数据库的密码文件更改会自动传送到备数据库。唯一的例外是far sync实例,更新的密码文件必须手动复制到far sync实例,因为far sync实例只接收redo数据,不会应用它。一旦far sync实例中的密码文件获得更新,redo数据将会自动传送到far sync实例配置的接收redo日志的所有备数据库。密码文件在应用redo数据时会在备数据库上更新。
1.3. 配置主数据库接收redo数据
最佳实践是将备数据库第一次加到Oracle Data Guard配置中时配置主数据库接收redo数据,这样在需要的情况下主数据库可以快速转换为备数据库的角色和开始接收redo数据。
在主数据库上创建standby redo log步骤:
SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/oracle/dbs/slog1.rdo’) SIZE 500M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/oracle/dbs/slog2.rdo’) SIZE 500M;
1.4. 配置主数据库的初始化参数
在主数据库中,需要定义当数据库处于主数据库角色时控制redo传输服务的初始化参数,还需要增加当数据库转换成备数据库角色时用来控制接收redo数据和apply服务的其他参数。
下面的示例列出了主数据库作为主角色的初始化参数,示例中主数据库位于Chicago,备数据库位于Boston。示例是Chicago数据库的参数,既适用于其作为主数据库的角色也适用于作为备数据库的角色。示例使用的名称如下表所示:

DB_NAME=chicago
DB_UNIQUE_NAME=chicago
LOG_ARCHIVE_CONFIG=’DG_CONFIG=(chicago,boston)’
CONTROL_FILES=‘/arch1/chicago/control1.ctl’, ‘/arch2/chicago/control2.ctl’
LOG_ARCHIVE_DEST_1=
‘LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=chicago’
LOG_ARCHIVE_DEST_2=
‘SERVICE=boston ASYNC

本文详述了配置Oracle DataGuard以实现主备数据库间数据安全传输的步骤,包括启用日志记录模式、配置Redo传输认证、设置主数据库接收redo数据、调整初始化参数,并详细阐述了创建物理备数据库的流程,如创建控制文件、参数文件、备份数据文件的恢复等。此外,还强调了启动RedoApply和确认备库运行正常的方法。
最低0.47元/天 解锁文章
954





