Oracle12cR1 DataGuard物理备库详细说明

来源:互联网 发布:支持mirrorlink的软件 编辑:程序博客网 时间:2024/05/05 00:18

创建一个DataGuard的物理备库

默认的Oracle Data Guard配置手动过程它包括以下主要内容

    准备主数据库

    创建物理备用数据库

    Post-Creation Steps

    创建物理备库CDB

    主库创建PDB


1.1创建主库

Table 3-1 主库的配置和要求如下:

ReferenceTask

Section 3.1.1

Enable Forced Logging

Section 3.1.2

Configure Redo Transport Authentication

Section 3.1.3

Configure the Primary Database to Receive Redo Data

Section 3.1.4

Set Primary Database Initialization Parameters

Section 3.1.5

Enable Archiving

1.1.1 启用强制登录

SQL> alter database force logging;数据库已更改。

1.1.2 配置redo数据的传输验证

在一个Data guard配置中,用Oracle Net的session来传输redo数据和控制成员之间的信息,安全传输用安全套接字协议(SSL)或者远程验证密码文件。

用SSL传输redo data

    这些库必须是同一个域的成员(OID Oracle Internet Directory),允许使用当前用户数据库链接

    LOG_ARCHIVE_DEST_nFAL_SERVER必须对应到Oracle Net的传输标识来配置SSL。

    有支持安全传输的硬件模块或者Oracle wallet 和证书。

如果不支持SSL就必须配置一个用户远程认真的密码文件

1.1.3 配置主库接受redo数据

给主库创建备库接受redo的redo数据文件(为了以后主库切换到备库时使用)

创建备库redo log数据

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dataguard/Predodata1.rdo') SIZE 1024M;数据库已更改。SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dataguard/Predodata2.rdo') SIZE 1024M;数据库已更改。

删除 redo log数据文件(示例)

SQL> alter database drop standby logfile ('/oracle/dataguard/Predodata1.rdo');数据库已更改。SQL> alter database drop standby logfile ('/oracle/dataguard/Predodata2.rdo');数据库已更改。

1.1.4 设置主库的初始化参数

用主库的初始化参数可以控制redo数据的传输服务,还可以用额外参数控制一个应用(应用redo数据)的服务(以备转换成备库时使用)。

参数如下表:

DatabaseDB_UNIQUE_NAMEOracle Net Service NamePrimarychicagochicagoPhysical standbybostonboston
Example 3-1 表中的配置例子:主库 主角色初始化参数

DB_NAME=chicagoDB_UNIQUE_NAME=chicagoLOG_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=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arc
这些参数控制redo数据和传输到备库中,并且在备库中被归档到本地归档日志。

SERVICE=boston ASYNC     //如上内容中指定的是异步传输

Example 3-2 主库 备角色参数配置参数

FAL_SERVER=bostonDB_FILE_NAME_CONVERT='boston','chicago'LOG_FILE_NAME_CONVERT='/boston/','/chicago/' STANDBY_FILE_MANAGEMENT=AUTO
Example 3-2所示


ParameterRecommended SettingDB_NAME主库指定主库创建数据库时的数据库名,一个物理备库指定主库的DB_NAMEDB_UNIQUE_NAME为每个数据库指定一个唯一的名字,这个名字和数据库不变,即使是发生角色切换,也不会引起这个名字的变更LOG_ARCHIVE_CONFIGOracleData Guard配置中DG_CONFIG必须在每个库中设置来启用full的Data Guard功能,在每个数据库设置DG_CONFIG项的字符串中包含DB_UNIQUE_NAME,在列表中每个名称用逗号隔开。CONTROL_FILES指定主数据库的控制文件路径,建议指定两个LOG_ARCHIVE_DEST_n指定主库和备库要归档的redo数据. In Example 3-1:

  • LOG_ARCHIVE_DEST_1 主库从onlie redo log数据产生的归档日志文件在 /arch1/chicago/.

  • LOG_ARCHIVE_DEST_2 只适用于的主角色此目标redo数据传输到远程物理备用目的地boston.

如果配置了快速恢复区初始化参数DB_RECOVERY_FILE_DEST你有没有明确配置本地归档目的地的位置属性Oracle Data Guard的会自动使用LOG_ARCHIVE_DEST_1初始化参数(如果尚未设置)默认本地归档目的地另外的LOG_ARCHIVE_DEST_n的完整信息,请参见Chapter 17 。

REMOTE_LOGIN_PASSWORDFILE此参数必须设置为EXCLUSIVE或SHARED如果远程登录,密码文件是用来管理用户进行身份验证redo传输会话LOG_ARCHIVE_FORMAT指定一个归档日志文件的格式,线程%T序列号(RESETLOGSID%RFAL_SERVER指定Oracle Net服务FAL服务器的名称通常是指主库运行所在角色chicago数据库运行在备用角色,它用boston库作为FAL服务器从中提取(请求)缺少的归档重做日志文件如果Boston是无法自动发送丢失的日志文件DB_FILE_NAME_CONVERT指定备库数据文件的路径名和文件名的位置,随后是主库的数据文件的路径名和文件名的位置。此参数将主库的数据文件路径名和文件名都转换成备库所能使用的路径名和数据文件名。注意,该参数仅用于路径名转换物理备用数据库多对路径可以指定此参数LOG_FILE_NAME_CONVERT指定备用数据库online redo日志文件,随后是主库的online redo日志文件此参数主数据库日志文件转换成备用数据库上的路径名多对路径可以指定此参数STANDBY_FILE_MANAGEMENT当此值设置为AUTO,则主库进行删除或者添加data file时,备库也将随机执行此操作

1.1.5 Enable Archiving

oracle@Sol_ORA:/oracle$ mkdir archive_logoracle@Sol_ORA:/oracle$ cd archive_log/oracle@Sol_ORA:/oracle/archive_log$ lsoracle@Sol_ORA:/oracle/archive_log$ pwd/oracle/archive_logoracle@Sol_ORA:/oracle/archive_log$ exitSQL> archive log list;数据库日志模式             非存档模式自动存档             禁用存档终点            USE_DB_RECOVERY_FILE_DEST最早的联机日志序列     816当前日志序列           818SQL> alter system set log_archive_dest_1='location=/oracle/archive_log' scope=spfile;系统已更改。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup mountSP2-0642: SQL*Plus 内部错误状态 2133, 上下文 3114:0:0继续执行将不安全ORA-03114: 未连接到 ORACLESQL> exit从 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 断开oracle@Sol_ORA:~$ sqlplus / as sysdbaSQL*Plus: Release 12.1.0.1.0 Production on 星期五 10月 25 16:44:34 2013Copyright (c) 1982, 2013, Oracle.  All rights reserved.已连接到空闲例程。SQL> startup mountORACLE 例程已经启动。Total System Global Area 2538741760 bytesFixed Size                  2757504 bytesVariable Size             855641216 bytesDatabase Buffers         1660944384 bytesRedo Buffers               19398656 bytes数据库装载完毕。SQL> alter database archivelog;数据库已更改。SQL> alter database open;数据库已更改。SQL> archive log list;数据库日志模式            存档模式自动存档             启用存档终点            /oracle/archive_log最早的联机日志序列     816下一个存档日志序列   818当前日志序列           818 

.2 Step-by-Step Instructions for Creating a Physical Standby Database

如下将一步一步进行介绍创建一个物理备库

    数据库管理员认证

    数据库的初始化参数

    管理重做日志,数据文件和控制文件

    管理归档重做日志

    快速恢复

    Oracle网络配置

3-2 是创建物理备库时,主库和备库所需要做的内容

ReferenceTaskDatabase

Section 3.2.1

创建主数据库数据文件的备份副本

Primary

Section 3.2.2

创建备库的控制文件

Primary

Section 3.2.3

床件备库的参数文件

Primary

Section 3.2.4

从主库拷贝文件到备库

Primary

Section 3.2.5

设置环境以支持备用数据库

Standby

Section 3.2.6

启动物理备库

Standby

Section 3.2.7

验证物理备用数据库是正确运行

Standby

1.2.1 创建主库的副本

Oracle推荐用RMAN来创建

1.2.2 为备库创建一个控制文件

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/boston.ctl';数据库已更改。

1.2.3 创建备库的参数文件

Step 1   Create a parameter file (PFILE) from 主库

SQL> create pfile='/tmp/TESTM_pfile.ora' from spfile;文件已创建。

创建完成后,修改此参数文件,给备库用。

Step 1  修改创建的额参数文件的参数

必须对参数文件做相应的修改,参考1.1.4例子

此处,物理备库的初始化参数如下:

...DB_NAME=chicagoDB_UNIQUE_NAME=bostonLOG_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.arcLOG_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=EXCLUSIVESTANDBY_FILE_MANAGEMENT=AUTOFAL_SERVER=chicago...
参数设置必须主库和备库的吻合,可以用show parameter 命令来查看这些参数

参数解释如上表Example 3-2所示

1.2.4 拷贝主库文件到备库

将如上产生的文件拷贝的备库:

  • 拷贝1.2.1中创建的数据文件
  • 拷贝1.2.2中创建的备库控制文件
  • 拷贝1.2.4中川件参数文件

1.2.5 设置环境支持备库

Step 1 创建密码文件

orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=admin

Step 2 将密码文件拷贝到备库

Step 3 创建主库和备库的listen

Step 4 创建oracle net service名

Step 5 创建一个主库的参数文件

SQL> CREATE SPFILE FROM PFILE='initboston.ora';
Step 6 Copy the primary database encryption wallet to the standby database system

If the primary database has a database encryption wallet, copy it to the standby database system and configure the standby database to use this wallet.

Note:

The database encryption wallet must be copied from the primary database system to each standby database system whenever the master encryption key is updated.

Encrypted data in a standby database cannot be accessed unless the standby database is configured to point to a database encryption wallet or hardware security module that contains the current master encryption key from the primary database.

1.2.6 启动物理备库

在备库

SQL> STARTUP MOUNT;
还原主库数据到备库

启用redo应用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE - > DISCONNECT FROM SESSION;

1.2.7 验证物理备库的正常运行

V$MANAGED_STANDBY视图可以查看redo数据的复制和应用状态

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_LOGLGWR           RFS       1          80         IDLE
如上表明redo传输线真工作正常

查询输出也应显示MRP一行如果MRP状态显示APPLYING_LOG序列#等于主数据库目前正在发送的序列号,然后在待机已经解决所有的差距,目前实时应用模式

1.3 Post-Creation Steps

物理备库上的数据保护

升级数据保护模式

启用闪回数据库

1.4 创建一个物理备库的CDB

可以创建一个多用户容器数据库CDB

数据库角色定义CDB级别而不是个别容器级别

如果执行切换或故障转移操作,整个CDB进行角色转变

任何的DDL和角色的转换必须在root下做,因为它的作用域是真个的CBD,PDBs没有角色

CBD物理备库SQL语句的语法一般非容器数据库一样,有如下特殊情况是不一样的:

    ALTER DATABASE RECOVER MANAGED STANDBY功能只在ROOT容器它不允许PDB

    角色相关联整个CDB单个PDBs没有自己的角色因此,下面的角色转变的DDL物理备用相关影响整个CDB

        ALTERDATABASE SWITCHOVER TO target_db_name

        ALTER DATABASE ACTIVATE PHYSICAL STANDBY

    ALTER PLUGGABLE DATABASE RECOVER这个语句不支持(待机恢复始终处于CDB级别

    管理多用户环境,你必须有CDB_DBA角色

    Oracle建议备用数据库自己的密钥库

1.5 在主库创建一个PBD


已经在主库和物理备库的环境下,应该注意一下几点:

dataguard必须配置为auto

如果数据文件位于ASM中然后使用ASMCMD实用程序备用数据库,将文件复制到以下位置

<db_create_file_dest>/<db_unique_name>/<GUID>/datafile
参数的GUID全局唯一标识符分配在PDB一旦被分配它不改变找到的GUID参数从原来的源容器后再拔下PDB查询视图V $CONTAINERS下面的示例显示如何找到PDBPDB容器ID源容器GUID参数值3

SELECT guid  FROM V$CONTAINERS WHERE con_id=3; GUID D98C12257A951FC4E043B623F00A7AF5
例子:

+DATAFILE/BOSTON/D98C12257A951FC4E043B623F00A7AF5/datafile


#################################

翻译:john

转载请注明出处

原创粉丝点击