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博客 ” ,链接:https://blog.itpub.net/31324783/viewspace-2122466/
,如需转载,请注明出处,否则将追究法律责任。