`
frank1998819
  • 浏览: 765040 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

在一台主机上实现部署Oracle 11g物理Active Data Guard的全过程(转)

 
阅读更多

本文记录了在一台主机上实现部署Oracle11g物理Active Data Guard的全过程,部署完毕后备库处于默认的最大性能模式。同时带大家一同体验一下Active Data Guard实时查询(Real-time query)特性。
操作系统版本信息:
原文:http://www.itpub.net/thread-1591214-1-1.html

  1. ora11g@secdb /home/oracle$ cat /etc/redhat-release
  2. Red Hat Enterprise Linux Server release 5.5 (Tikanga)

Oracle数据库版本信息:

  1. sys@ora11g> select * from v$version;
  2. BANNER
  3. ----------------------------------------------------------------------
  4. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
  5. PL/SQL Release 11.2.0.1.0 - Production
  6. CORE 11.2.0.1.0 Production
  7. TNS for Linux: Version 11.2.0.1.0 - Production
  8. NLSRTL Version 11.2.0.1.0 - Production
复制代码


1.Oracle 11g Data Guard主库配置过程
1)确保主库处于FORCE LOGGING模式
调整方法如下:
(1)查看当前数据库是否处于FORCE LOGGING模式

  1. sys@ora11g> col force_logging for a15
  2. sys@ora11g> select force_logging from v$database;
  1. FORCE_LOGGING
  2. ---------------
  3. NO
复制代码


此处表明数据库运行在非FORCE LOGGING模式。

(2)调整数据库为FORCE LOGGING模式

  1. sys@ora11g> alter database force logging;
  1. Database altered.
复制代码


(3)再次查看当前数据库是否处于FORCE LOGGING模式

  1. sys@ora11g> select force_logging from v$database;
  1. FORCE_LOGGING
  2. ---------------
  3. YES
复制代码


OK,FORCE LOGGING模式调整完毕。

2)配置Redo传输认证
Data Guard使用Oracle Net会话在主库和备库之间传输redo数据和控制信息,因此需要基于SSL(Secure Sockets Layer )或者密码文件进行认证。当SSL认证无法满足时使用密码文件进行认证,因此需要确保所有备库的密码文件与主库保持一致。备库可以通过拷贝主库密码文件的方法完成。

3)配置主库用于接收Redo数据
此步骤是可选步骤,Oracle建议在配置主库的时候就预见到总有一天它会成为备库(例如进行主备库之间的switchover切换),要求当主库成为备库之后不需要做其他配置就可以顺畅地接收主库传过来的Redo数据。这也是Oracle最佳实践的一种体现。
(1)查看日志组日志成员大小
创建的Standby Redo Log大小要与主库的Redo大小保持一致。

  1. sys@ora11g> select group#, bytes from v$log;
  2. GROUP# BYTES
  3. ---------- ----------
  4. 1 52428800
  5. 2 52428800
  6. 3 52428800
复制代码


此时主库每组日志的日志成员大小都是50M。因此创建的Standby Redo Log大小也是50M。

(2)创建适当数量的Standby Redo Log组数
公式如下:
如果主库是单实例数据库:Standby Redo Log组数=主库日志组总数+1
如果住口是RAC数据库:Standby Redo Log组数=(所有节点中日志组数最大值 + 1) * RAC节点数

从上面日志组查询结果可见,此数据库是一个单实例的数据库,包含三组日志。因此Standby Redo Log组数=3+1=4。
需要创建四组Standby Redo Log日志。

(3)确认数据库参数MAXLOGFILES和MAXLOGMEMBERS不会限制Standby Redo Log创建
MAXLOGFILES和MAXLOGMEMBERS这两参数是在使用“CREATE DATABASE”语句创建数据库时做的限制,用于限制数据库日志文件的最大数量和日志组的最大数量。
如果在创建数据库时没有注意这个问题会导致Standby Redo Log无法创建的问题,解决方法只能是创新创建主库或者重新创建主库的控制文件。所以,一定要做好前期的规划。

(4)创建Standby Redo Log

  1. sys@ora11g> alter database add standby logfile ('/u01/app/oracle/oradata/ora11g/stdb_redo01.log') size 50m;
  2. Database altered.
  3. sys@ora11g> alter database add standby logfile ('/u01/app/oracle/oradata/ora11g/stdb_redo02.log') size 50m;
  4. Database altered.
  5. sys@ora11g> alter database add standby logfile ('/u01/app/oracle/oradata/ora11g/stdb_redo03.log') size 50m;
  6. Database altered.
  7. sys@ora11g> alter database add standby logfile ('/u01/app/oracle/oradata/ora11g/stdb_redo04.log') size 50m;
  8. Database altered.
复制代码


(5)验证查看Standby Redo Log创建结果

  1. sys@ora11g> select group#,thread#,sequence#,archived,status from v$standby_log;
  2. GROUP# THREAD# SEQUENCE# ARC STATUS
  3. ---------- ---------- ---------- --- ----------
  4. 4 0 0 YES UNASSIGNED
  5. 5 0 0 YES UNASSIGNED
  6. 6 0 0 YES UNASSIGNED
  7. 7 0 0 YES UNASSIGNED
复制代码


4)设置主库的参数文件
我这里的主库的实例名字是ora11g,备库的实例名约定为ora11gdg。
连接主库的Oracle网络服务名是ora11g,备库的网络服务名是ora11gdg。

(1)Oracle网络服务名配置信息如下

  1. ora11g@secdb /home/oracle$ vi $ORACLE_HOME/network/admin/tnsnames.ora
  2. ORA11G =
  3. (DESCRIPTION =
  4. (ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
  5. (CONNECT_DATA =
  6. (SERVER = DEDICATED)
  7. (SERVICE_NAME = ora11g)
  8. )
  9. )
  10. ORA11GDG =
  11. (DESCRIPTION =
  12. (ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
  13. (CONNECT_DATA =
  14. (SERVER = DEDICATED)
  15. (SERVICE_NAME = ora11gdg)
  16. )
  17. )
复制代码


(2)生成主库的pfile文件并编辑

  1. sys@ora11g> create pfile from spfile;
  2. File created.
  3. ora11g@secdb /home/oracle$ cd $ORACLE_HOME/dbs
  4. ora11g@secdb /u01/app/oracle/product/11.2.0/db_1/dbs$ ls -ltr
  5. total 36K
  6. -rw-r--r-- 1 oracle oinstall 2.8K May 15 2009 init.ora
  7. drwx------ 2 oracle oinstall 4.0K Mar 15 19:37 peshm_DBUA0_0/
  8. drwx------ 2 oracle oinstall 4.0K Mar 15 19:40 peshm_ora11g_0/
  9. -rw-rw---- 1 oracle oinstall 1.6K Mar 15 21:28 hc_DBUA0.dat
  10. -rw-r----- 1 oracle oinstall 24 Mar 15 21:32 lkORA11G
  11. -rw-rw---- 1 oracle oinstall 1.6K Mar 15 21:35 hc_ora11g.dat
  12. -rw-r----- 1 oracle oinstall 1.5K Mar 15 21:35 orapwora11g
  13. -rw-r----- 1 oracle oinstall 2.5K Mar 15 21:42 spfileora11g.ora
  14. -rw-r--r-- 1 oracle oinstall 924 Mar 15 21:45 initora11g.ora
  15. ora11g@secdb /oracle/ora11gR2/product/11.2.0/dbhome_1/dbs$ vi initora11g.ora
复制代码


(3)主库配置——当是主库角色时需要的参数

  1. DB_NAME=ora11g
  2. DB_UNIQUE_NAME=ora11g
  3. LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora11g,ora11gdg)'
  4. control_files='/u01/app/oracle/oradata/ora11g/control01.ctl','/u01/app/oracle/oradata/ora11g/control02.ctl'
  5. LOG_ARCHIVE_DEST_1=
  6. 'LOCATION=/home/oracle/arch/ora11g/
  7. VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  8. DB_UNIQUE_NAME=ora11g'
  9. LOG_ARCHIVE_DEST_2=
  10. 'SERVICE=ora11gdg ASYNC
  11. VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  12. DB_UNIQUE_NAME=ora11gdg'
  13. LOG_ARCHIVE_DEST_STATE_1=ENABLE
  14. LOG_ARCHIVE_DEST_STATE_2=ENABLE
  15. REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
  16. LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
复制代码


(4)主库配置——当是备库角色时需要的参数

  1. FAL_CLIENT=ora11g
  2. FAL_SERVER=ora11gdg
  3. DB_FILE_NAME_CONVERT='ora11gdg','ora11g'
  4. LOG_FILE_NAME_CONVERT='ora11gdg','ora11g'
  5. STANDBY_FILE_MANAGEMENT=AUTO
复制代码


(5)创建所需要的目录

  1. ora11g@secdb /home/oracle$ mkdir -p /home/oracle/arch/ora11g
  2. ora11g@secdb /home/oracle$ mkdir -p /home/oracle/arch/ora11gdg
复制代码


5)数据库运行在归档模式
如果数据库为运行在归档模式下,按照如下步骤调整数据库为归档模式。
(1)查看是否为归档模式

  1. sys@ora11g> archive log list;
  2. Database log mode No Archive Mode
  3. Automatic archival Disabled
  4. Archive destination USE_DB_RECOVERY_FILE_DEST
  5. Oldest online log sequence 4
  6. Current log sequence 6
复制代码


结果显示“Database log mode”内容“No Archive Mode”表明数据库未运行在归档模式下。

(2)停止数据库并启动到mount状态

  1. sys@ora11g> shutdown immediate;
  2. Database closed.
  3. Database dismounted.
  4. ORACLE instance shut down.
  5. sys@ora11g> startup mount;
  6. ORACLE instance started.
  7. Total System Global Area 535662592 bytes
  8. Fixed Size 1337720 bytes
  9. Variable Size 402654856 bytes
  10. Database Buffers 125829120 bytes
  11. Redo Buffers 5840896 bytes
  12. Database mounted.
复制代码


(3)启用归档

  1. sys@ora11g> alter database archivelog;
  2. Database altered.
复制代码


(4)调整数据库为open状态

  1. sys@ora11g> alter database open;
  2. Database altered.
复制代码


2.Oracle 11g Data Guard物理备库创建过程
1)创建主库数据文件的备份
最常用的方法是使用RMAN工具完成,这样可以实现不停库的部署;还可以使用冷备完成。
因为这里实现的是主库和备库都在一台主机上,因此,这里使用冷备的方式生成数据文件的备份,并放到备库对应的目录下。
(1)关闭数据库

  1. sys@ora11g> shutdown immediate;
  2. Database closed.
  3. Database dismounted.
  4. ORACLE instance shut down.
复制代码


(2)主库数据文件的备份

  1. ora11g@secdb /home/oracle$ cd /u01/app/oracle/oradata/ora11g/
  2. ora11g@secdb /u01/app/oracle/oradata/ora11g$ ls -l
  3. total 1.7G
  4. -rw-r----- 1 oracle oinstall 9.4M Mar 15 21:47 control01.ctl
  5. -rw-r----- 1 oracle oinstall 9.4M Mar 15 21:47 control02.ctl
  6. -rw-r----- 1 oracle oinstall 51M Mar 15 21:46 redo01.log
  7. -rw-r----- 1 oracle oinstall 51M Mar 15 21:46 redo02.log
  8. -rw-r----- 1 oracle oinstall 51M Mar 15 21:47 redo03.log
  9. -rw-r----- 1 oracle oinstall 51M Mar 15 21:46 stdb_redo01.log
  10. -rw-r----- 1 oracle oinstall 51M Mar 15 21:46 stdb_redo02.log
  11. -rw-r----- 1 oracle oinstall 51M Mar 15 21:46 stdb_redo03.log
  12. -rw-r----- 1 oracle oinstall 51M Mar 15 21:46 stdb_redo04.log
  13. -rw-r----- 1 oracle oinstall 501M Mar 15 21:47 sysaux01.dbf
  14. -rw-r----- 1 oracle oinstall 681M Mar 15 21:47 system01.dbf
  15. -rw-r----- 1 oracle oinstall 30M Mar 15 21:39 temp01.dbf
  16. -rw-r----- 1 oracle oinstall 91M Mar 15 21:47 undotbs01.dbf
  17. -rw-r----- 1 oracle oinstall 5.1M Mar 15 21:47 users01.dbf
复制代码


这里使用tar方法生成数据文件的备份tar包,当然可以使用其他方法来完成,比如直接把数据文件拷贝到其他目录下。

  1. ora11g@secdb /u01/app/oracle/oradata/ora11g$ tar -cvf ora11g_cold_backup_datafiles.tar *.dbf
  2. sysaux01.dbf
  3. system01.dbf
  4. temp01.dbf
  5. undotbs01.dbf
  6. users01.dbf
  7. ora11g@secdb /u01/app/oracle/oradata/ora11g$ ls -l ora11g_cold_backup_datafiles.tar
  8. -rw-r--r-- 1 oracle oinstall 1.3G Mar 15 21:48 ora11g_cold_backup_datafiles.tar
复制代码


2)创建备库的控制文件
此时数据库处于关闭状态。
(1)创建备库ora11gdg控制文件存放的目录

  1. ora11g@secdb /home/oracle$ mkdir -p /u01/app/oracle/oradata/ora11gdg
复制代码


(2)生成主库spfile,以便在重启主库时使主库参数调整生效。

  1. sys@ora11g@> create spfile from pfile;
  2. File created.
复制代码


(3)启动主数据库到mount状态,创建备库的控制文件。

  1. sys@ora11g@> startup mount;
  2. ORACLE instance started.
  3. Total System Global Area 313860096 bytes
  4. Fixed Size 1336232 bytes
  5. Variable Size 239078488 bytes
  6. Database Buffers 67108864 bytes
  7. Redo Buffers 6336512 bytes
  8. Database mounted.
  9. sys@ora11g@> alter database create standby controlfile as '/u01/app/oracle/oradata/ora11gdg/control01.ctl';
  10. Database altered.
复制代码


拷贝生成备库的第二个控制文件。

  1. sys@ora11g@> ! cp /u01/app/oracle/oradata/ora11gdg/control01.ctl /u01/app/oracle/oradata/ora11gdg/control02.ctl
  2. sys@ora11g@> alter database open;
  3. Database altered.
复制代码


此时主库已经处于Open状态,可对外提供服务。

3)创建备库参数文件
根据主库的pfile文件进行调整。调整后的内容如下。
(1)拷贝主库参数文件生成备库pfile

  1. ora11g@secdb /home/oracle$ cd $ORACLE_HOME/dbs
  2. ora11g@secdb /oracle/ora11gR2/product/11.2.0/dbhome_1/dbs$ cp initora11g.ora initora11gdg.ora
复制代码


(2)调整备库pfile文件内容

  1. ora11g@secdb /oracle/ora11gR2/product/11.2.0/dbhome_1/dbs$ vi initora11gdg.ora
复制代码


(3)备库配置——当是备库角色时需要的参数

  1. DB_NAME=ora11g
  2. DB_UNIQUE_NAME=ora11gdg
  3. LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora11g,ora11gdg)'
  4. control_files='/u01/app/oracle/oradata/ora11gdg/control01.ctl','/u01/app/oracle/oradata/ora11gdg/control02.ctl'
  5. FAL_CLIENT=ora11gdg
  6. FAL_SERVER=ora11g
  7. DB_FILE_NAME_CONVERT='ora11g','ora11gdg'
  8. LOG_FILE_NAME_CONVERT='ora11g','ora11gdg'
  9. STANDBY_FILE_MANAGEMENT=AUTO
  10. LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
复制代码


(4)备库配置——当是主库角色时需要的参数

  1. LOG_ARCHIVE_DEST_1=
  2. 'LOCATION=/home/oracle/arch/ora11gdg/
  3. VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  4. DB_UNIQUE_NAME=ora11gdg'
  5. LOG_ARCHIVE_DEST_2=
  6. 'SERVICE=ora11g ASYNC
  7. VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  8. DB_UNIQUE_NAME=ora11g'
  9. LOG_ARCHIVE_DEST_STATE_1=ENABLE
  10. LOG_ARCHIVE_DEST_STATE_2=ENABLE
  11. REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
复制代码


同时调整与路径相关的错误参数内容。同时创建确实的路径。

  1. $ mkdir -p /u01/app/oracle/admin/ora11gdg/adump
复制代码


4)拷贝备份文件到备库数据文件存放目录
把备份的tar包移动到ora11gdg存放数据文件目录中,解tar包生成备库的数据文件。

  1. ora11g@secdb /u01/app/oracle/product/11.2.0/db_1/dbs$ cd $ORACLE_BASE/oradata/ora11gdg
  2. ora11g@secdb /u01/app/oracle/oradata/ora11gdg$ mv ../ora11g/ora11g_cold_backup_datafiles.tar .
  3. ora11g@secdb /u01/app/oracle/oradata/ora11gdg$ tar -xvf ora11g_cold_backup_datafiles.tar
  4. sysaux01.dbf
  5. system01.dbf
  6. temp01.dbf
  7. undotbs01.dbf
  8. users01.dbf
  9. ora11g@secdb /u01/app/oracle/oradata/ora11gdg$ ls -l
  10. total 2.6G
  11. -rw-r----- 1 oracle oinstall 9.4M Mar 15 21:49 control01.ctl
  12. -rw-r----- 1 oracle oinstall 9.4M Mar 15 21:49 control02.ctl
  13. -rw-r--r-- 1 oracle oinstall 1.3G Mar 15 21:48 ora11g_cold_backup_datafiles.tar
  14. -rw-r----- 1 oracle oinstall 501M Mar 15 21:47 sysaux01.dbf
  15. -rw-r----- 1 oracle oinstall 681M Mar 15 21:47 system01.dbf
  16. -rw-r----- 1 oracle oinstall 30M Mar 15 21:39 temp01.dbf
  17. -rw-r----- 1 oracle oinstall 91M Mar 15 21:47 undotbs01.dbf
  18. -rw-r----- 1 oracle oinstall 5.1M Mar 15 21:47 users01.dbf
复制代码


5)备库环境设置
(1)生成备库的密码文件
由于是在一台主机上部署Data Guard,因此这里仅需拷贝主库的密码文件生成备库密码文件即可。

  1. ora11g@secdb /u01/app/oracle/oradata/ora11gdg$ cd $ORACLE_HOME/dbs
  2. ora11g@secdb /u01/app/oracle/product/11.2.0/db_1/dbs$ cp orapwora11g orapwora11gdg
复制代码


(2)验证网络服务名是否完整及正确

  1. ora11g@secdb /home/oracle$ cat $ORACLE_HOME/network/admin/tnsnames.ora
  2. ORA11G =
  3. (DESCRIPTION =
  4. (ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
  5. (CONNECT_DATA =
  6. (SERVER = DEDICATED)
  7. (SERVICE_NAME = ora11g)
  8. )
  9. )
  10. ORA11GDG =
  11. (DESCRIPTION =
  12. (ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
  13. (CONNECT_DATA =
  14. (SERVER = DEDICATED)
  15. (SERVICE_NAME = ora11gdg)
  16. )
  17. )
复制代码


(3)生成备库spfile

  1. ora11g@secdb /home/oracle$ export ORACLE_SID=ora11gdg
  2. ora11gdg@secdb /home/oracle$ sqlplus / as sysdba
  3. SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 15 21:56:31 2012
  4. Copyright (c) 1982, 2009, Oracle. All rights reserved.
  5. Connected to an idle instance.
  6. sys@ora11gdg@> create spfile from pfile;
  7. File created.
复制代码


6)启动物理备库
(1)启动物理备库

  1. sys@ora11gdg@> startup mount;
  2. ORACLE instance started.
  3. Total System Global Area 313860096 bytes
  4. Fixed Size 1336232 bytes
  5. Variable Size 209718360 bytes
  6. Database Buffers 96468992 bytes
  7. Redo Buffers 6336512 bytes
  8. Database mounted.
复制代码


(2)创建standby redo log file用于接收主库传过来的日志
由于主库已经提前创建好了4组standby redo log file,备库会根据LOG_FILE_NAME_CONVERT参数转换后自动创建与之对应的standby redo log file日志组。因此此步骤可省略。

(3)备库创建创建在线日志
备库会自动创建与主库对应的Redo日志组。因此此步骤可省略。

(4)启动Redo Apply

  1. sys@ora11gdg@> alter database recover managed standby database using current logfile disconnect from session;
  2. Database altered.
复制代码


7)验证备库处于正常运行中

(1)查看已存在的归档日志文件

  1. sys@ora11gdg@> select sequence#, first_time, next_time from v$archived_log order by sequence#;
  2. SEQUENCE# FIRST_TIME NEXT_TIME
  3. ---------- ----------------- -----------------
  4. 6 20120315 21:40:46 20120315 21:49:23
  5. 7 20120315 21:49:23 20120315 21:49:26
  6. 8 20120315 21:49:26 20120315 21:59:37
复制代码


(2)主库切换一次日志

  1. ora11gdg@secdb /home/oracle$ export ORACLE_SID=ora11g
  2. ora11g@secdb /home/oracle$ sqlplus / as sysdba
  3. SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 15 22:04:47 2012
  4. Copyright (c) 1982, 2009, Oracle. All rights reserved.
  5. Connected to:
  6. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
  7. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  8. sys@ora11g> alter system switch logfile;
  9. System altered.
复制代码


(3)验证备库是否收到归档日志

  1. ora11g@secdb /home/oracle$ export ORACLE_SID=ora11gdg
  2. ora11gdg@secdb /home/oracle$ sqlplus / as sysdba
  3. SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 15 22:05:12 2012
  4. Copyright (c) 1982, 2009, Oracle. All rights reserved.
  5. Connected to:
  6. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
  7. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  8. sys@ora11gdg@> select sequence#, first_time, next_time from v$archived_log order by sequence#;
  9. SEQUENCE# FIRST_TIME NEXT_TIME
  10. ---------- ----------------- -----------------
  11. 6 20120315 21:40:46 20120315 21:49:23
  12. 7 20120315 21:49:23 20120315 21:49:26
  13. 8 20120315 21:49:26 20120315 21:59:37
  14. 9 20120315 21:59:37 20120315 22:04:51
复制代码


(4)验证接收到的Redo是否被应用到物理备库

  1. sys@ora11gdg@> select sequence#,applied from v$archived_log order by sequence#;
  2. SEQUENCE# APPLIED
  3. ---------- ---------
  4. 6 YES
  5. 7 YES
  6. 8 YES
  7. 9 YES
复制代码


Oracle 11g物理Data Guard到此创建完毕。

3.Oracle 11g Data Guard物理备库创建完毕后续任务
1)建议根据具体应用需求调整数据保护模式级别。
关于Dataguard三种保护模式内容请参见文章《【DataGuard】Oracle Dataguard三种保护模式特点总结》(http://space.itpub.net/519536/viewspace-573342

2)建议开启数据库的闪回功能。

4.体验Active Data Guard实时查询(Real-time query)特性
以创建表空间、用户以及表为例体验一下Oracle 11g物理Active Data Guard实时查询(Real-time query)特性。

1.调整备库为“READ ONLY WITH APPLY”状态
调整备库为“READ ONLY WITH APPLY”状态,这体现的便是Oracle 11g物理Active Data Guard功能中的“Active”真实含义。
1)查看备库当前状态

  1. ora11gdg@secdb /home/oracle$ sqlplus / as sysdba
  1. SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 16 11:54:52 2012
  1. Copyright (c) 1982, 2009, Oracle. All rights reserved.
  1. Connected to:
  2. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
  3. With the Partitioning, OLAP, Data Mining and Real Application Testing options

  1. sys@ora11gdg@> select open_mode from v$database;

  1. OPEN_MODE
  2. --------------------
  3. MOUNTED

复制代码


此时备库处于MOUNT状态。

2)取消备库的自动恢复

  1. sys@ora11gdg@> alter database recover managed standby database cancel;
  2. Database altered.
复制代码


3)OPEN备库调整为“READ ONLY”状态

  1. sys@ora11gdg@> alter database open;
  1. Database altered.
  1. sys@ora11gdg@> select open_mode from v$database;
  2. OPEN_MODE
  3. --------------------
  4. READ ONLY

复制代码


4)在“READ ONLY”状态下进一步启动备库的恢复

  1. sys@ora11gdg@> alter database recover managed standby database using current logfile disconnect;
  2. Database altered.
复制代码


选项“USING CURRENT LOGFILE”的含义是当备库收到日志后,尽快完成恢复。

  1. sys@ora11gdg@> select open_mode from v$database;
  2. OPEN_MODE
  3. --------------------
  4. READ ONLY WITH APPLY
复制代码


状态“READ ONLY WITH APPLY”即表示此时备库处于Read Only状态的同时可以接受主库传过来的日志进行恢复,以便达到备库可以即时查看到主库变化的目的。

2.体验实时查询(Real-time query)特性
1)主库上创建表空间、用户以及表并初始化数据
(1)创建表空间并查看表空间创建结果和状态

  1. sys@ora11g> create tablespace secooler_tbs datafile '/u01/app/oracle/oradata/ora11g/secooler_tbs01.dbf' size 10m;
  2. Tablespace created.
  3. sys@ora11g> select * from v$tablespace where name = 'SECOOLER_TBS';
  4. TS# NAME INC BIG FLA ENC
  5. ---------- ------------------------------ --- --- --- ---
  6. 8 SECOOLER_TBS YES NO YES
  7. sys@ora11g> select ts#,status,bytes,name from v$datafile where ts# = 8;
  8. TS# STATUS BYTES NAME
  9. ---------- ------- ---------- ------------------------------
  10. 8 ONLINE 10485760 /u01/app/oracle/oradata/ora11g
  11. /secooler_tbs01.dbf
复制代码


(2)创建用户并授权

  1. sys@ora11g> create user secooler identified by secooler default tablespace secooler_tbs;
  2. User created.
  3. sys@ora11g> grant dba to secooler;
  4. Grant succeeded.
复制代码


(3)创建表并初始化数据

  1. sys@ora11g> conn secooler/secooler
  2. Connected.
  3. secooler@ora11g> create table t (x varchar2(8));
  4. Table created.
  5. secooler@ora11g> insert into t values ('Secooler');
  6. 1 row created.
  7. secooler@ora11g> commit;
  8. Commit complete.
  9. secooler@ora11g> select * from t;
  10. X
  11. --------
  12. Secooler
复制代码


2)此时观察ora11g实例的alert日志记录了如下信息

  1. Fri Mar 16 11:56:36 2012
  2. create tablespace secooler_tbs datafile '/u01/app/oracle/oradata/ora11g/secooler_tbs01.dbf' size 10m
  3. Fri Mar 16 11:56:48 2012
  4. Completed: create tablespace secooler_tbs datafile '/u01/app/oracle/oradata/ora11g/secooler_tbs01.dbf' size 10m
复制代码


3)几乎与此同时(1秒)备库ora11gdg实例的警告日志中记录了如下信息

  1. Fri Mar 16 11:56:37 2012
  2. Recovery created file /u01/app/oracle/oradata/ora11gdg/secooler_tbs01.dbf
  3. Successfully added datafile 5 to media recovery
  4. Datafile #5: '/u01/app/oracle/oradata/ora11gdg/secooler_tbs01.dbf'
复制代码


可见,备库已经接受到主库的这个变化,并把这个变化在备库应用完毕。

4)验证主库所创建表空间、用户以及表并初始化数据是否在备库应用成功
(1)查看备库表空间

  1. sys@ora11gdg> select * from v$tablespace where name = 'SECOOLER_TBS';
  2. TS# NAME INC BIG FLA ENC
  3. ---------- ------------------------------ --- --- --- ---
  4. 8 SECOOLER_TBS YES NO YES
  5. sys@ora11gdg> select ts#,status,bytes,name from v$datafile where ts# = 8;
  6. TS# STATUS BYTES NAME
  7. ---------- ------- ---------- ------------------------------
  8. 8 RECOVER 10485760 /u01/app/oracle/oradata/ora11g
  9. dg/secooler_tbs01.dbf
复制代码


创建成功,但是此时备库数据文件的状态是“RECOVER”。

(2)查看备库用户及数据是否存在

  1. sys@ora11gdg> conn secooler/secooler
  2. Connected.
  3. secooler@ora11g> set lines 80
  4. secooler@ora11g> desc t;
  5. Name Null? Type
  6. ------------------ -------- ----------------------------
  7. X VARCHAR2(8)
  8. secoolerdg@ora11g> select * from t;
  9. X
  10. --------
  11. Secooler
复制代码


主库上的变化已经即使的在备库上得到应用。
这便是Oracle 11g物理Active Data Guard实时查询(Real-time query)特性的体现。

5.小结

文章详细记录了在Oracle 11gR2环境上部署物理Data Guard的过程和注意事项,供大家参考。
在部署或者管理Oracle 11g Data Guard环境时需要时刻清醒的认识到你操作的对象是主库还是备库,防止由于混乱导致潜在故障发生。

Good luck.

secooler
12.03.15

-- The End --

分享到:
评论

相关推荐

    Oracle 11g物理Active Data Guard详细过程

    本文将详细介绍如何在一个主机上实现Oracle 11g物理Active Data Guard的部署过程,最终使备用数据库处于最大性能模式。 #### 二、环境准备 - **操作系统**: Red Hat Enterprise Linux Server release 5.5 (Tikanga)...

    部署Oracle 11g物理Active Data Guard

    Oracle 11g Physical Active Data Guard 是一种高可用性和灾难恢复解决方案,允许在主数据库和备用数据库之间实时传输重做日志,以保持数据的一致性。在这个详细过程中,我们将在同一台主机上配置该环境,尽管这并不...

    Oracle Data Guard 11g完全参考手册

    《Oracle Data Guard 11g完全参考手册》由多位顶尖Oracle专家联袂撰写。这本精品指南全面介绍Data Guard无与伦比的数据保护、可用性和灾难恢复功能,详细讲解Data Guard基础知识,列出最佳的配置、监视、维护和故障...

    Oracle 11gR2使用Active Data Guard 搭建物理 Data Guard.

    大牛出手,全是干货,Oracle 11gR2使用Active Data Guard 搭建物理 Data Guard。 注:文档打开密码见压缩包注释 看不到注释的 文档打开密码 tianlesoftware

    ORACLE ACTIVE DATA GUARD技术白皮书.docx

    Oracle Active Data Guard是Oracle数据库企业版中的一项高级数据保护技术,旨在为关键业务数据库提供实时数据保护和高可用性。该技术通过维护一个与主数据库同步的物理备用数据库,确保在主数据库出现故障时,可以...

    大牛教你配置Oracle 11g Active Dataguard

    Oracle 11g Active Data Guard 是Oracle数据库系统中一种高级的数据保护和灾难恢复技术,它在主数据库运行的同时,创建并维护一个或多个只读的物理 standby 数据库。Active Data Guard 提供了实时的数据保护,使得在...

    Oracle 11.2.0.3 使用 ADG 搭建Data Guard 案例

    Oracle 11.2.0.3 数据保护技术在企业级数据库管理中扮演着至关重要的角色,其中Active Data Guard(ADG)是Oracle提供的一种高级数据保护解决方案,用于构建高可用性和灾难恢复策略。本案例将详细介绍如何使用ADG来...

    ORACLE19c中的Active Data Guard的使用.pdf

    Active Data Guard 是 Oracle 数据库中的一项关键技术,它属于 Data Guard 的一种增强功能,旨在实现主数据库(Primary Database)与备数据库(Standby Database)之间的数据同步,并允许备数据库在同步过程中对外...

    Oracle11g中文文档.zip

    Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g:可管理性概述.pdf ...

    oracle11g官方中文文档完整版

    Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf ...

    Oracle 11.2.0.3 RAC 与 RAC 之间搭建Data Guard 案例 -- Aative Data Guard 案例

    RAC允许多台服务器共享同一个数据库实例,提供高可用性和负载均衡,而Data Guard则是一种灾难恢复解决方案,通过创建物理或逻辑备用数据库来保护主数据库免受数据丢失或系统故障的影响。本案例将探讨如何在两个RAC...

    官方资料:Oracle Active Data Guard新特性_白皮书.pdf

    使用物理备用数据库进行致据库滚动升 级和备用数据库优先修补•跨越任意距商实现枣致据丟失的灾难恢 H保护而不会影响性能• Active Data Guard 足 Oracle 数据库企 业版包含的基本Da丨a Guard功能的一 个超集。

    Oracle数据库Data Guard技术介绍.pptx

    Oracle 数据库 Data Guard 技术是一种高可用性和灾难恢复解决方案,旨在保护 Oracle 数据库免受故障和数据丢失的影响。该技术通过在主数据库和备用数据库之间传输 redo 数据来实现高可用性和灾难恢复。 Data ...

    Oracle 11g R2 RAC + DG高端实战[黄伟-专题]

    DG高端实战[黄伟-专题]》是一份详尽的实战指南,主要讲述如何在OEL5.5(Oracle Enterprise Linux 5.5)的64位系统上安装和配置Oracle 11g R2(版本**.*.*.*.0),涉及RAC和Active Data Guard的配置和管理。...

    Oracle 11g 官方中文文档集萃【完整版】

    Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf ...

    oracle10gr2_data_guard.rar_data guard_oracle_oracle data guard

    在Oracle 10g Release 2(10gR2)中,Data Guard的功能进一步增强,为管理员提供了更精细的控制和更高的数据安全性。 一、Data Guard基础概念 1. 主数据库(Primary Database):正常运行并处理事务的数据库。 2. ...

    Oracle Active Data Guard提高关键业务事务的服务质量

    在此背景下,Oracle Active Data Guard技术应运而生,提供了一种简化操作、提高性能的解决方案。 Oracle Active Data Guard是一种高级数据库选件,隶属于Oracle数据库企业版。它通过维护生产数据库的一个实时只读...

    Oracle 12c 部署Data Guard,Switchover和Failover

    Broker是Oracle Data Guard中的一个组件,用于管理Data Guard配置,实现了从单一控制台对物理备用数据库进行监控和操作。配置Broker包括启用Broker功能、启动备用数据库、打开PDB库以及使用Broker创建主备库的详细...

    oracle11g官方文档中文版

    Oracle 11g 官方中文文档 包括: Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g 中的分区.pdf Oracle 数据库...

    Oracle 11g R2版本中Data Guard的备用数据库类型分析.pdf

    如果启用Oracle Active Data Guard,物理备用数据库可以在保持实时查询功能的同时进行重做应用,这意味着用户可以得到与主数据库同步的查询结果,这是11g R2版本的新特性。 2. 逻辑备用数据库 与物理备用数据库不同...

Global site tag (gtag.js) - Google Analytics