准备主数据库用于创建备用数据库
创建备用数据库前,首先包保证主库的配置符合要求。需要执行以下操作:
开启Forced Logging
将主库配置到FORCE LOGGING模式,在主库执行以下操作:
SQL> ALTER DATABASE FORCE LOGGING;
配置Redo传输认证
Oracle Data Guard使用Oracle Net会话在成员之间传输Redo数据和控制信息。会话通过SSL协议或密码文件进行身份认证。
以下情况下,使用SSL认证:
- 数据库是同一Oracle Internet Directory(OID)企业域的成员,它允许使用当前用户数据库连接。
LOG_ARCHIVE_DEST_n
和数据库对应的FAL_SERVER
参数配置为使用SSL连接。- 数据库成员使用
Oracle wallet
而且使用硬件安全模块。
如果不使用SSL,所有节点使用密码文件进行认证。
配置主库接收Redo数据
如果是首次将备用数据库添加到主库中,最好将主库配置为接收Redo数据。如果必要,主数据库可以快速切换为备用角色并开始接收Redo数据。
可以使用ALTER DATABASE ADD STANDBY LOGFILE
语句,如:
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dbs/slog1.rdo') SIZE 500M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dbs/slog2.rdo') SIZE 500M;
设置主库初始化参数:
在主数据库上,您定义在数据库处于主角色时控制重做传输服务的初始化参数。当主数据库转换为备用角色时,您需要添加其他参数来控制重做数据的接收和应用服务。
以下示例显示了您在主数据库上维护的主角色初始化参数。此示例表示一个 Oracle Data Guard 配置,其中一个主数据库位于芝加哥,一个物理备用数据库位于波士顿。此示例中显示的参数对于以主数据库或备用数据库角色运行的 Chicago 数据库有效。配置示例使用下表中显示的名称:
数据库角色 | DB_UNIQUE_NAME | 服务名 |
---|---|---|
主库 | chicago | chicago |
物理备库 | boston | boston |
这些参数控制重做传输服务如何将重做数据传输到备用系统以及在本地文件系统上归档重做数据。
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
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=boston'
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
下面显示了主数据库上的其他备用角色初始化参数。这些参数在主数据库转换为备用角色时生效。
FAL_SERVER=boston
DB_FILE_NAME_CONVERT='/boston/','/chicago/'
LOG_FILE_NAME_CONVERT='/boston/','/chicago/'
STANDBY_FILE_MANAGEMENT=AUTO
开启归档
如果归档没有打开,执行以下命令在主库开启归档:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
一步一步创建一个物理备用数据库
创建一个主库数据文件的副本
实际上可以使用任何主数据库的备份副本来创建备用数据库(如数据泵),主要保证有必要的归档和Redo文件来完全恢复数据库。
Oracle建议使用RMAN方式。
创建备用数据库的控制文件
为备库创建控制文件,如下所示(主库可以不OPEN,但至少在MOUNT状态):
SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/boston.ctl';
创建备用数据库的参数文件
执行以下步骤创建备库参数文件:
- 从主库SPFILE创建PFILE:
SQL> CREATE PFILE='/tmp/initboston.ora' FROM SPFILE;
- 修改上文创建的参数文件中的参数值:
.
.
.
DB_NAME=chicago
DB_UNIQUE_NAME=boston
LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'
CONTROL_FILES='/arch1/boston/control1.ctl', '/arch2/boston/control2.ctl'
DB_FILE_NAME_CONVERT='/chicago/','/boston/'
LOG_FILE_NAME_CONVERT='/chicago/','/boston/'
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1=
'LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_2=
'SERVICE=chicago ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=chicago'
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
STANDBY_FILE_MANAGEMENT=AUTO
FAL_SERVER=chicago
.
.
.
将数据文件复制到备用数据库服务器
将上文创建的“数据库备份”、“备用控制文件”、“备库参数文件”传输到备用数据库服务器。
配置操作系统环境以支持备用数据库
- 如果备用数据库在Windows系统上,使用oradim创建Windows服务。如:
oradim –NEW –SID boston –STARTMODE manual
- 复制主库密码文件到备库。如果是使用SSL,这步是可选的,但如果不是必需复制密码文件。每次更改权限或密码后(如SYSDBA、SYSOPER),比如重新复制密码文件。如果使用ASM磁盘组,则密码文件必需复制到ASM磁盘组中。
- 为备库配置监听。
- 配置Oracle Net服务名。
- 为备库创建参数文件。
SQL> CREATE SPFILE FROM PFILE='initboston.ora';
- 如果主库有加密wallet,也需要复制到备库,并配置备库使用。
启动备用数据库
- 在备库上,执行以下命令:
SQL> STARTUP MOUNT;
- 在备库上恢复先前复制的备份文件。
- 在备库上启动Redo应用:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
验证备用数据库
在备用数据库上,查询 V$MANAGED_STANDBY 视图以验证是否正在从主数据库传输重做并应用于备用数据库。 例如:
SQL> SELECT CLIENT_PROCESS, PROCESS, THREAD#, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY WHERE CLIENT_PROCESS='LGWR' OR PROCESS='MRP0';
CLIENT_PROCESS PROCESS THREAD# SEQUENCE# STATUS
-------------- --------- ---------- ---------- ------------
N/A MRP0 1 80 APPLYING_LOG
LGWR RFS 1 80 IDLE
创建物理备用数据库:后续步骤
截至目前,物理备库搭建完毕,后续可能的步骤包括:
- 更改数据保护模式。
- 启动数据库闪回。
以上可选任务不在此赘述。