1、此实验有三个目的
1、使用RMAN的duplicate创建物理备库
2、主库db_name与db_unique_name不同时,
主库要启动到mount状态,才能搭建备库。
3、主库db_name与db_unique_name相同时,
主库开启时(支持业务不中断
),可以创建备库。
2、容灾基本概念
1、阵列的复制技术(硬件)
通过在阵列之间进行复制,异地保存数据(要求:两边的系统配臵一致,用于大数据量的环境,备份方,可以不设主机,只需要存储设备。 对存储设备和网络环境要求比较高。比如 EMC 存储)
2、基于逻辑卷的复制技术(操作系统层面)
lv(logical volumn)的镜像技术来实现
通过 TCP/IP 网络传输逻辑卷上数据的变化(要求:两边的软、硬件环境必须一致,一般用于大数据量的传递,如 IBM AIX 的逻辑卷的复制技术)
3、基于 Oracle 的 redo log 的复制(在应用层)
1)Data Guard
2)Gold Gate
3)stream
逻辑复制: 将主库的 redo log 传递到备库后,然后利用 logminer 的工具,从 redo log 中解析出 sql 语句,在备库执行,保证和主库同步。(主库和备库可以 是不同的环境,备库可以处于读写状态)
逻辑备库可以看作是一个单独的库(数据库名和 DBID 和主库都不一样)。
物理复制:将主库的 redo log 传递到备库后,备库对 redo log 日志进行 recovery ,来和主库保持一致。(主库和备库必须是相同的环境,备库一般处于只读状态) 物理的备库和主库是一样的(比如:数据库名、DBID)
4、Oracle Data Guard
----Oracle 成本最低的容灾技术(Oracle 企业版自动支持,通过主库和备库来实现容灾;一般主库处于生产环境,备库处于备份状态,或者可以利用备库做数据查询、生成报表、数据备份等减轻主库的压力)
---主库将 redo log 传递到备库上,备库对 redo log 进行应用(物理---RECOVERY,逻辑-----应用 sql 语句),来保持和主库的同步。
DG 环境:(备库最多可以有 9 个)
1) 主库和备库之间都是单实例
2) 主库是 RAC ,备库是单实例
3) 主库是 RAC,备库也是 RAC (MAA 实现最高可用性)
------DG 的模式
1、物理 DG: 备库接收到主库的 redo log后,做 recover;要求备库环境和主库换将必须一致,备库一般处于 mount 状态,如果 open,只能处于只读状态,并且在 open 状态下不能再做 recover。(一般对于物理 DG,可以利用备库进行备份,减轻主库的压力)
2、逻辑 DG: 备库收到主库的 redo log 后,对 redo log 抽取 sql 然后进行应用;备库环境可以和主库不一致。备库可以进入 open(读写状态),可以在备库上做查询、报表打印等操作,减轻主库压力;建立逻辑备库之前,必须先建立物理的备库
- ---环境
- --系统
- oracle Linux 5.6
- --oracle版本
- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
-
- --一、启动到mount状态下创建备库,主库中db_unique_name和DB_NAME不同
-
- --配置说明
- primary db
- DB_NAME=ENMOEDU
- DB_UNIQUE_NAME=ENMOEDU1
- standby db
- DB_NAME=ENMOEDU
- DB_UNIQUE_NAME=ENMOEDU2
-
- --启动至归档,启动强制记日志
- SYS@ENMOEDU>startup mount;
- SYS@ENMOEDU>alter database archivelog;
- SYS@ENMOEDU>alter database force logging;
- SYS@ENMOEDU>alter database open;
- /*
- 默认情况下数据库操作会记录redo log,但是在一些特定的情况下可以使用nologging来不生成redo信息
- (1)表的批量INSERT(通过/*+APPEND */提示使用“直接路径插入“。或采用SQL*Loader直接路径加载)。表数据不生成redo,但是
- 所有索引修改会生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。
- (2)LOB操作(对大对象的更新不必生成日志)。
- (3)通过CREATE TABLE AS SELECT创建表
- (4)各种ALTERe TABLE操作,如MOVE和SPLIT
- (5)在一些表迁移和表空间迁移中,可以使用alter table a nologging;或者alter tablespace snk nologging;在操作完成后再修改回logging状态。
- 这里需要多说一句,如果你使用nologging导入大批量数据,以后对这些数据的修改会在redo或者archive log中,但是基准的数据是没有的,所以一旦介质损坏是无法完全恢复的,必须在使用nologging完成切换回logging后,做一次全备或者0级备份。
- */
-
- --在备库上添加 standby log
- alter database add standby logfile group 4 '/u01/app/oracle/oradata/ENMOEDU/std_redo04.log' size 50M;
- alter database add standby logfile group 5 '/u01/app/oracle/oradata/ENMOEDU/std_redo05.log' size 50M;
- alter database add standby logfile group 6 '/u01/app/oracle/oradata/ENMOEDU/std_redo06.log' size 50M;
- alter database add standby logfile group 7 '/u01/app/oracle/oradata/ENMOEDU/std_redo07.log' size 50M;
-
- --配置tnsnames
- --主库
- [oracle@prod1 admin]$ vi tnsnames.ora
- ENMOEDU2 =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = ENMOEDU)
- )
- )
-
- ENMOEDU1 =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.101)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = ENMOEDU)
- )
- )
- --备库配置静态监听
- [oracle@prod2 admin]$ vi listener.ora
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (GLOBAL_DBNAME = ENMOEDU)
- (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
- (SID_NAME = ENMOEDU)
- )
- )
-
- ---主库创建pfile
- SYS@ENMOEDU>create pfile from spfile;
- --修改pfile
- DB_UNIQUE_NAME=ENMOEDU1
- LOG_ARCHIVE_CONFIG='DG_CONFIG=(ENMOEDU1,ENMOEDU2)'
- DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/ENMOEDU','/u01/app/oracle/oradata/E
- NMOEDU'
- LOG_FILE_NAME_CONVERT=
- '/u01/arch/','/u01/arch/'
- LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
- LOG_ARCHIVE_DEST_1=
- 'LOCATION=/u01/arch/
- VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
- DB_UNIQUE_NAME=ENMOEDU1'
- LOG_ARCHIVE_DEST_2=
- 'SERVICE=ENMOEDU2 ASYNC
- VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
- DB_UNIQUE_NAME=ENMOEDU2'
- LOG_ARCHIVE_DEST_STATE_1=ENABLE
- LOG_ARCHIVE_DEST_STATE_2=ENABLE
- REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
- STANDBY_FILE_MANAGEMENT=AUTO
- FAL_SERVER=ENMOEDU2
- fal_client=ENMOEDU1
-
- --通过修改后的pfile重建spfile,启动数据库
- SYS@ENMOEDU>create spfile from pfile;
- SYS@ENMOEDU>startup mount;
-
-
- --创建相关目录
- mkdir -p /u01/arch/
-
- --拷贝主库文件
- [oracle@prod1 u01]$ scp /u01/app/oracle/product/11.2.0/db_1/dbs/ * 192.168.56.102:/u01/app/oracle/product/11.2.0/db_1/dbs
- --备库启动到nomount
- 注:db_name=ENMOEDU
- DB_UNIQUE_NAME=ENMOEDU2
- LOG_ARCHIVE_CONFIG='DG_CONFIG=(ENMOEDU2,ENMOEDU1)'
- DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/ENMOEDU','/u01/app/oracle/oradata/ENMOEDU'
- LOG_FILE_NAME_CONVERT=
- '/u01/arch/','/u01/arch/'
- LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
- LOG_ARCHIVE_DEST_1=
- 'LOCATION=/u01/arch/
- VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
- DB_UNIQUE_NAME=ENMOEDU2'
- LOG_ARCHIVE_DEST_2=
- 'SERVICE=ENMOEDU1 SYNC
- VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
- DB_UNIQUE_NAME=ENMOEDU1'
- LOG_ARCHIVE_DEST_STATE_1=ENABLE
- LOG_ARCHIVE_DEST_STATE_2=ENABLE
- REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
- STANDBY_FILE_MANAGEMENT=AUTO
- FAL_SERVER=ENMOEDU1
- fal_client=ENMOEDU2
-
- --rman恢复备库
- [oracle@prod1 u01]$rman target sys/oracle@enmoedu1 auxiliary sys/oracle@enmoedu2
-
- RMAN>duplicate target database for standby from active database dorecover nofilenamecheck;
- DORECOVER:从目标数据库用归档日志备份恢复备用数据库。
- 一旦备用数据库的创建完成,RMAN将对备用数据库应用主数据库中的所有归档日志,一直到RMAN中注册的最新的归档日志。
- nofilenamecheck 告诉主库和备库有相同的文件名称
-
- duplicate target database for standby from active database nofilenamecheck;
-
-
- 备库在 mount下做 media recover
-
- SYS@ENMOEDU>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
-
-
- --SYS@ENMOEDU>alter database recover managed standby database disconnect from session;
- --SYS@ENMOEDU>alter database recover managed standby database cancel;关闭日志传输
- --SYS@ENMOEDU>alter database recover managed standby database disconnect from session;
-
- --备库
- SYS@ENMOEDU2>alter database open;
- --主库
- SYS@ENMOEDU1>alter database open;
-
- select GROUP#,SEQUENCE#,MEMBERS,STATUS from v$log;
- select max(sequence#) from v$archived_log;
- --主库
- SYS@ENMOEDU>select name,PROTECTION_MODE,DATABASE_ROLE ,SWITCHOVER_STATUS from v$database;
-
- NAME PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS
- --------- -------------------- ---------------- --------------------
- ENMOEDU MAXIMUM PERFORMANCE PRIMARY FAILED DESTINATION----此种状态为失败(原因监听没开,或是主库没有启动到mount)
- --查看进程,看有没有LNS进程,如果没有
- select PROCESS,STATUS from v$managed_standby;
-
- --查看数据库状态
-
- SYS@ENMOEDU>select NAME,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
-
-
-
-
- --二、主库启动状态下创建备库,主库中db_unique_name和DB_NAME相同
-
- --(环境已配置完成,创建相关目录已完成)
-
- --配置说明
- primary db
- DB_NAME=ENMOEDU
- DB_UNIQUE_NAME=ENMOEDU
- standby db
- DB_NAME=ENMOEDU
- DB_UNIQUE_NAME=ENMOEDU2
-
- --主库参数文件
-
- DB_UNIQUE_NAME=ENMOEDU
- LOG_ARCHIVE_CONFIG='DG_CONFIG=(ENMOEDU,ENMOEDU2)'
- DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/ENMOEDU','/u01/app/oracle/oradata/ENMOEDU'
- LOG_FILE_NAME_CONVERT=
- '/u01/arch/','/u01/arch/'
- LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
- LOG_ARCHIVE_DEST_1=
- 'LOCATION=/u01/arch/
- VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
- DB_UNIQUE_NAME=ENMOEDU'
- LOG_ARCHIVE_DEST_2=
- 'SERVICE=ENMOEDU2 SYNC
- VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
- DB_UNIQUE_NAME=ENMOEDU2'
- LOG_ARCHIVE_DEST_STATE_1=ENABLE
- LOG_ARCHIVE_DEST_STATE_2=ENABLE
- REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
- STANDBY_FILE_MANAGEMENT=AUTO
- FAL_SERVER=ENMOEDU2
- fal_client=ENMOEDU
-
- --主库启动业务可以继续
-
-
- --备库参数文件
-
- DB_UNIQUE_NAME=ENMOEDU2
- LOG_ARCHIVE_CONFIG='DG_CONFIG=(ENMOEDU,ENMOEDU2)'
- DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/ENMOEDU','/u01/app/oracle/oradata/ENMOEDU'
- LOG_FILE_NAME_CONVERT=
- '/u01/arch/','/u01/arch/'
- LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
- LOG_ARCHIVE_DEST_1=
- 'LOCATION=/u01/arch/
- VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
- DB_UNIQUE_NAME=ENMOEDU'
- LOG_ARCHIVE_DEST_2=
- 'SERVICE=ENMOEDU2 SYNC
- VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
- DB_UNIQUE_NAME=ENMOEDU2'
- LOG_ARCHIVE_DEST_STATE_1=ENABLE
- LOG_ARCHIVE_DEST_STATE_2=ENABLE
- REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
- STANDBY_FILE_MANAGEMENT=AUTO
- FAL_SERVER=ENMOEDU2
- fal_client=ENMOEDU
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31324783/viewspace-2122466/,如需转载,请注明出处,否则将追究法律责任。