搭建环境:
OS :RHEL 5.4 Oracle版本:10g R2 ORACLE_HOME=/u01/app/oracle
虚拟机1 hostname :dg1 IP:192.168.0.103
虚拟机2 hostname :dg2 IP:192.168.0.104
参数规划
数据库 db_name sid instance_name service_names db_unique_name fal_server fal_client
主 库 dg1 dg1 dg1 dg1 dg1 dg2 dg1
备库 dg1 dg1 dg1 dg2 dg2 dg1 dg2
注意:搭建10g DG时数据库版本必须一致,包括小版本,且操作系统平台之间必须满足 一定要求具体可以参见
http://czmmiao.iteye.com/blog/1447643
主库上的操作
将主库至于foce logging状态
[oracle@dg1 ~]$ sqlplus / as sysdba;
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jan 25 19:56:11 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 373293056 bytes
Fixed Size 1219496 bytes
Variable Size 138413144 bytes
Database Buffers 230686720 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database force logging;
Database altered.
关闭force logging模式的语法如下
alter database no force logging ;
执行force logging的原因:有一些DDL语句可以通过指定NOLOGGING子句的方式避免写REDO(目的是提高速度,某些时候确实有效)。指定数据库为Force Logging模式后,数据库将会记录除临时表空间或临时回滚段外所有的操作,而忽略类似NOLOGGING之类的指定参数。如果在执行Force Logging时有NOLOGGING之类的语句在执行,那么Force Logging会等待,直到这类语句全部执行。
Force Logging是作为固定参数保存在控制文件中,因此其不受重启之类操作的影响(只执行一次即可),如果想取消,可以通过ALTER DATABASE NO FORCE LOGGING语句关闭强制记录。
注意:force logging并不比一般的logging 记录的日志多,数据库在force logging状态下,nologging选项将无效,因为nologging将破坏dataguard的可恢复性.force logging
强制数据库在任何状态下必须记录日志而已。
并处于归档模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oradata/archive
Oldest online log sequence 40
Next log sequence to archive 42
Current log sequence 42
查看需要拷贝的数据文件
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/czmmiao/system01.dbf
/u01/app/oracle/oradata/czmmiao/undotbs01.dbf
/u01/app/oracle/oradata/czmmiao/sysaux01.dbf
/u01/app/oracle/oradata/czmmiao/users01.dbf
/u01/app/oracle/oradata/czmmiao/example.dbf
/u01/app/oracle/oradata/czmmiao/nk_tbs.dbf
6 rows selected.
查看需要拷贝的临时文件
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/czmmiao/temp01.dbf
/u01/app/oracle/oradata/czmmiao/temp.dbf
2 rows selected.
利用主库的控制文件创建备库的控制文件
SQL> alter database create standby controlfile as '/u01/app/oracle/dbs/standby.ctl';
Database altered.
利用主库的spfile创建pfile,主要是为了便于参数的修改
SQL> create pfile from spfile;
File created.
关闭主库
SQL> shutdown immediate;
Database dismounted.
ORACLE instance shut down.
主库参数文件配置
在主库的pfile增加如下几行,其中红色的需要特别注意
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg1,dg2)'
*.log_archive_dest_1='LOCATION=/u01/app/oradata/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg1 ' #这个参数的意义为: 在数据库dg1上log_archive_dest_1对主备库上的联机日志都有效,这里的 db_unique_name可以省略
*.log_archive_dest_2='SERVICE=dg2 LGWR ASYNC=40960 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg2 '
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=2
*.log_archive_start=true
*.service_names='dg1 '
*.db_name='dg1 '
*.db_unique_name='dg1 '
*.fal_client='dg1 '
*.fal_server='dg2 '
注意:这里的fal_client、fal_server参数是针对主库转换为备库之后而言的。
将所需文件拷贝到dg2上
[oracle@dg1 dbs]$ more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 dg1 localhost.localdomain localhost
192.168.0.104 dg2
192.168.0.103 dg1
拷贝数据文件和日志文件
[oracle@dg1 oradata]$ pwd
/u01/app/oradata
[oracle@dg1 oradata]$ ls
archive dg1
这里采用关闭主库进行数据文件拷贝的方式,当然也可以采用rman备份的方式进行拷贝,采用rman的方式可以不用关闭主库。
[oracle@dg1 oradata]$ scp -r dg1/ dg2:/u01/app/oradata/
拷贝admin下的文件,主要是为了拷贝这个目录的目录结构
[oracle@dg1 app]$ pwd
/u01/app
[oracle@dg1 app]$ ls
admin flash_recovery_area oracle oradata oraInventory
[oracle@dg1 app]$ scp -r admin/ dg2:/u01/app/
在主库上创建口令文件
[oracle@dg1 app]$ orapwd file=/u01/app/oracle/dbs/orapwdg1 password=oracle entries=5
拷贝口令文件,参数文件到备库上
[oracle@dg1 oracle]$ scp orapwdg1 initdg1 dg2:/u01/app/oracle/dbs
登陆到备机,重命名口令文件
[oracle@dg2 oracle]$ mv orapwdg1 orapwdg2
下面为采用rman备份创建备库的简要步骤如下,供读者参考
主库操作
RMAN>backup database format '/home/oracle/full_%U.dbf';
$scp 备份文件 dg2:/home/oracle/
创建standby controlfile,一定要在备份后创建
SQL>alter database create standby controlfile as '/home/oracle/st.ctl';
$scp st.ctl dg2:/home/oracle/
备库操作
RMAN>restore database
RMAN>recover database
即可
配置主库的listener.ora和tnsname.ora
listener.ora
[oracle@dg1 admin]$ pwd
/u01/app/oracle/network/admin
[oracle@dg1 admin]$ cat listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = dg1 )
(ORACLE_HOME = /u01/app/oracle )
# (PROGRAM = extproc)
(GLOBAL_DBNAME=dg1 )
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = dg1 )(PORT = 1521))
)
)
tnsname.ora
DG1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.103 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dg1 )
(INSTANCE_NAME = dg1 )
)
)
DG2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.104 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = dg1 )
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
重启监听程序
[oracle@dg1 admin]$ lsnrctl stop
[oracle@dg1 admin]$ lsnrctl start
利用pfile创建spfile
[oracle@dg1 ~]$ sqlplus / as sysdba;
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jan 25 19:56:11 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile;
File created.
至此在主库上的操作告一段落
备库操作
备库参数文件
*.control_files='/u01/app/oradata/dg1/standby.ctl' ##确保控制文件置于该目录下
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg1,dg2)'
*.log_archive_dest_1='LOCATION=/u01/app/oradata/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg2 ' #确保 /u01/app/oradata/archive该路径存在
*.log_archive_dest_2='SERVICE=dg2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg1 ' #同上
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=2
*.log_archive_start=true
*.service_names='dg2 '
*.db_name='dg1 '
*.db_unique_name='dg2 '
*.fal_client='dg2 '
*.fal_server='dg1 '
配置备库上的listener.ora和tnsname.ora
lstener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = dg2 )
(GLOBAL_DBNAME= dg2 )
(ORACLE_HOME = /u01/app/oracle )
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.104 )(PORT = 1521))
)
)
tnsname.ora和主库上的一模一样,建议直接从主库上拷贝避免出错
重启监听程序
[oracle@dg1 admin]$ lsnrctl stop
[oracle@dg1 admin]$ lsnrctl start
至此备库上的操作完成
测试 DG
依次打开主库和备库
主库:
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN;
备库:
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT
FROM SESSION;
在主库上
SQL>archive log list;
SQL>alter system archive log current;
SQL>archive log list;
主库进行日志切换:
SQL>Alter system switch logfile;
然后分别查看主库和备库的 目录下是否产生了同样的归档日志文件。
执行如下SQL
select max(sequence#) from v$archived_log;
select max(sequence#) from v$log_history;
select group#,sequence#,archived,status from v$log;
select name,sequence#,applied from v$archived_log;
select sequence#,applied from v$archived_log;
亦可在主库进行一些DML操作然后在备库上进行验证,具体操作如下
主库
SQL> select * from dg;
ID NAME
---------- ---------------------------------------------------------------------
1 czm
SQL> insert into dg values(2,'czm');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from dg;
ID NAME
---------- ---------------------------------------------------------------------
1 czm
2 czm
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
备库上以read only方式打开
SQL> alter database recover managed standby database cancel;
SQL> alter database read only;
SQL> select * from dg;
ID NAME
---------- ---------------------------------------------------------------------
1 czm
2 czm
至此DG顺利搭建成功
参考至:百度文库《ORACLE_10G_DATAGUARD_配置物理STANDBY手记2》
http://docs.oracle.com/cd/B19306_01/server.102/b14239/log_arch_dest_param.htm
http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10823/log_arch_dest_param.htm#98301
http://blog.csdn.net/tianlesoftware/article/details/5989638
http://www.itpub.net/thread-1054909-1-1.html
http://www.linuxidc.com/Linux/2011-09/42721.htm
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
相关推荐
### Oracle 11g R2 Data Guard -- Howto #### 数据守护(Data Guard)概念与管理 Oracle Data Guard 是一种全面的数据保护解决方案,为 Oracle 数据库提供了强大的容灾能力。它能够确保数据的高可用性和灾难恢复,...
在Linux环境下,Oracle 11g R2 Data Guard是一种高可用性和灾难恢复解决方案,它通过在不同的物理或逻辑位置维护一个或多个备用数据库,来保护关键业务数据免受硬件故障、自然灾害或其他潜在的数据丢失风险。...
在Oracle 10g R2版本中,RAC与ASM(Automatic Storage Management)和Data Guard结合,构建了一个强大的企业级容灾解决方案。 ASM是Oracle提供的一种集成的存储管理解决方案,它简化了存储管理,集成了磁盘管理和...
在Oracle 9i R2版本中,Data Guard引入了多项新特性,极大地提升了其功能和灵活性。 ##### 1. Logical Standby Database 在9i R2之前,Data Guard的备用数据库只能运行在只读或恢复模式下。物理备用数据库...
从提供的文件内容中,我们可以提取出关于Oracle Data Guard和备用数据库(Standby DBs)支持数据库滚动升级(DB Rolling Upgrades)的知识点。下面将详细介绍这些知识点: 首先,Oracle Data Guard是一个数据库容灾...
### Windows环境下配置Oracle 11g R2 Data Guard详细过程 #### 1. 服务器环境配置 本配置指南适用于在Windows环境下配置Oracle 11g R2 Data Guard。以下是具体的服务器环境设置: - **硬件环境**:两台PC机 - **...
本手册主要介绍了如何在Oracle 10g R2版本中配置RAC与ASM以及Data Guard来实现高可用性和灾难恢复。通过详细的步骤和最佳实践,读者可以了解到如何构建一个稳定可靠的Oracle RAC环境,并在此基础上搭建Data Guard以...
Oracle RAC(Real Application Clusters)10g R2、ASM(Automatic Storage Management)和Data Guard是Oracle数据库系统中用于高可用性和灾难恢复的关键技术。本手册将详细讲解如何配置和管理这些组件,以实现一个...
本书详细介绍了Oracle Data Guard 11g R2的配置与管理方法,对于希望通过Oracle Data Guard来增强数据库可用性和灾难恢复能力的读者来说,是一个极好的学习资源。 首先,Oracle Data Guard是Oracle公司提供的一种...
其次,Data Guard功能在10g中得到了加强,提供了物理和逻辑 standby 数据库,以实现灾难恢复和数据保护。通过实时应用日志传输,Data Guard可以在主数据库发生问题时快速切换到standby数据库,最大限度地减少数据...
4. Data Guard:Oracle Data Guard是一种高可用性和灾难恢复解决方案,通过创建物理或逻辑 standby databases,提供保护和故障切换能力。在主数据库出现问题时,standby database可以立即接管。 5. Flashback ...
### Oracle 11g Data Guard 配置详解 ...以上步骤详细介绍了如何在Oracle 11g R2中配置Data Guard,实现数据的热备份功能。通过这些步骤,可以有效地保障数据库的安全性和高可用性,为企业的业务连续性提供强大的支持。
Oracle 10G Data Guard 是一种高可用性和灾难恢复解决方案,它通过创建一个或多个备用数据库来保护生产数据库免受数据丢失和停机时间的影响。在CentOS 4.4环境下配置10G Data Guard,你需要遵循以下步骤: 1. **...
综上所述,Oracle Data Guard 10g R2提供了一整套强大且灵活的特性,以保障数据库系统的稳定性和安全性。通过合理配置和管理,企业可以构建出适应各种业务需求的高可用架构。这份手册将深入探讨这些概念和技术,帮助...
Oracle高可用体系主要包括RAC(Real Application Clusters)、Data Guard以及GoldenGate三种技术。这三种技术旨在为Oracle数据库提供不同的高可用性和灾难恢复方案。 1. **RAC(Real Application Clusters)** - *...
通过以上步骤,可以成功地在Oracle 11g R2环境中使用ADG技术搭建物理Data Guard集群。这不仅可以提高数据的安全性和可用性,还可以提供灾难恢复能力,从而为企业级应用提供强大的支持。需要注意的是,在实际部署过程...
- Oracle Data Guard提供了一套全面的灾难恢复解决方案,包括物理 standby、logical standby 和 flash recovery area,确保数据的安全性和高可用性。 11. Replication: - Oracle的复制功能允许数据库之间的数据...
9. **Oracle 10g R2新特性**:可能会特别强调这个版本的新功能,比如自动存储管理(Automatic Storage Management, ASM)、Advanced Queuing (AQ) 和 Data Mining等。 10. **企业管理器**:Oracle Enterprise ...
【Oracle 11g RAC + DG 项目实战】是一个关于如何在Oracle 11g Release 2 (11.2.0.3.0)环境下实施Real Application Clusters (RAC) 和Data Guard (DG) 的技术文档。这个实战项目主要在Oracle Enterprise Linux 5.5 ...