创建一个DataGuard的物理备库
默认的Oracle Data Guard配置的手动过程。它包括以下主要内容:准备主数据库
创建物理备用数据库
Post-Creation Steps
创建物理备库的CDB
在主库创建PDB
1.1创建主库
Table 3-1 主库的配置和要求如下:
Reference | Task |
---|---|
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_n和FAL_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数据)的服务(以备转换成备库时使用)。
参数如下表:
Database | DB_UNIQUE_NAME | Oracle Net Service Name |
---|---|---|
Primary | chicago | chicago |
Physical standby | boston | boston |
Example 3-1 表中的配置例子: 主库 主角色初始化参数
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
这些参数控制redo数据和传输到备库中,并且在备库中被归档到本地归档日志。
SERVICE=boston ASYNC //如上内容中指定的是异步传输
Example 3-2 主库 备角色参数配置参数
FAL_SERVER=boston DB_FILE_NAME_CONVERT='boston','chicago' LOG_FILE_NAME_CONVERT='/boston/','/chicago/' STANDBY_FILE_MANAGEMENT=AUTOExample 3-2所示
Parameter | Recommended Setting |
---|---|
DB_NAME | 主库指定主库创建数据库时的数据库名,一个物理备库指定主库的DB_NAME |
DB_UNIQUE_NAME | 为每个数据库指定一个唯一的名字,这个名字和数据库不变,即使是发生角色切换,也不会引起这个名字的变更 |
LOG_ARCHIVE_CONFIG | 在OracleData Guard配置中DG_CONFIG必须在每个库中设置来启用full的Data Guard功能,在每个数据库设置DG_CONFIG项的字符串中包含DB_UNIQUE_NAME,在列表中每个名称用逗号隔开。 |
CONTROL_FILES | 指定主数据库的控制文件路径,建议指定两个 |
LOG_ARCHIVE_DEST_n | 指定主库和备库要归档的redo数据. In Example 3-1:
注:如果配置了快速恢复区(初始化参数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(%R) |
FAL_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_log
oracle@Sol_ORA:/oracle$ cd archive_log/
oracle@Sol_ORA:/oracle/archive_log$ ls
oracle@Sol_ORA:/oracle/archive_log$ pwd
/oracle/archive_log
oracle@Sol_ORA:/oracle/archive_log$ exit
SQL> archive log list;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 816
当前日志序列 818
SQL> alter system set log_archive_dest_1='location=/oracle/archive_log' scope=spfile;
系统已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
SP2-0642: SQL*Plus 内部错误状态 2133, 上下文 3114:0:0
继续执行将不安全
ORA-03114: 未连接到 ORACLE
SQL> exit
从 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 断开
oracle@Sol_ORA:~$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on 星期五 10月 25 16:44:34 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 2538741760 bytes
Fixed Size 2757504 bytes
Variable Size 855641216 bytes
Database Buffers 1660944384 bytes
Redo 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 是创建物理备库时,主库和备库所需要做的内容
Reference | Task | Database |
---|---|---|
创建主数据库数据文件的备份副本 | Primary | |
创建备库的控制文件 | Primary | |
床件备库的参数文件 | Primary | |
从主库拷贝文件到备库 | Primary | |
Standby | ||
启动物理备库 | Standby | |
验证物理备用数据库是正确运行 | 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=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
.
.
.
参数设置必须主库和备库的吻合,可以用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_LOG LGWR 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
转载请注明出处