1 操作系统环境

  此处隐藏具体信息

System IP-address db_name db_version Comment
        Target DB
        Auxiliary DB

2 复制数据库前的准备工作

 

2.1 standby 端安装数据库软件

2.2 primary 与standby 端生成密码文件

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=

2.3 修改参数文件

  如果standby端,不需要后期的日志应用,那么无需配置dataguard相关参数。只配置db_name参数即可启动到nomount状态。

db_name=
compatible='11.2.0.4.0'
db_create_file_dest=
#control_files=
#db_block_size=
备注: 

If OMF were not used , we must configure the Parameter control_files manually.

If the target database's db_block_size is not the default 8192, we must configure the auxiliary database as same as the target.

If undo_tablespace is set , the value in auxiliary must the same with the target.

如果作为standby 使用,还需要添加dataguard相关参数:

*.db_name='&db_name'
*.db_unique_name='&db_unique_name'
*.fal_client='primary_tns'
*.fal_server='standby_tns'
*.log_archive_config='DG_CONFIG=(primary_tns,standby_tns)'
*.log_archive_dest_1='LOCATION=/data/oracle/product/11.2.0/dbhome_1/dbs/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=&db_unique_name'
*.log_archive_dest_2='SERVICE=upgdbs LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=&db_unique_name'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.log_file_name_convert='/data/oracle/oradata','/data/oracle/oradata'
*.db_file_name_convert='/data/oracle/oradata','/data/oracle/oradata'
*.standby_file_management='auto'
Note 
其中log_file_name_convert 参数在standby端必须要设置,即使primary 与standby 的文件存储路径完全一致。 否则在duplicate命令处理redo log时会提示:

RMAN-05535: WARNING: All redo log files were not defined properly.
ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 7 thread 0: '/data/oracle/oradata/redo701.log'

2.4 网络配置

  在这一步中所有需要配置的文件都在 $ORACLE_HOME/network/admin/中.

  • Listener
  由于standby 端只有软件,实例无法启动到mount状态,此时PMON进程无法完成自动注册。远程客户端只有通过静态监听,才能连接该实例。
RMAN-04006: error from auxiliary database: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

  静态监听:

sid_list_listener =
(sid_list =
(sid_desc =
(global_dbname= )
(sid_name= )
(oracle_home=/opt/app/oracle/product/11.2./dbhome_1)
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = ))
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = ))
)
) ADR_BASE_LISTENER = /opt/app/oracle
  • TNS
target_db =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = )
)
) auxiliary_db =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = )
)
)
Notes 
Be sure to fill the blank with right value, such as service_name, host

2.5 创建standby redo log

假如目标库是作为standby 使用的,那必须在主库创建好standby redolog. 否则在duplicate过程中会提示: 添加standby redo log 示例:

alter database add logfile group No. ('member1','member2') size 2G;

3 Auxiliary 库启动到nomount

sqlplus sys/oracle@auxiliary_db as sysdba
startup nomount;
exit

4 主库启动到open状态

sqlplus sys/oracle@target_db as sysdba
startup
select dbid,open_mode from v$database;

5 复制新库

  在执行复制之前,需要考虑以下两点问题:

  1. auxiliary 库是否使用的是spfile.如果不是的话,先创建一个spfile>
  2. 如果primary 与standby 两端数据文件路径,日志文件路径不同,可以通过下面SQL 为RMAN生成"set newname for " 语句
select 'set newname for datafile '||file_id||' to ''&&path'||tablespace_name||'_'||rank() over (partition by tablespace_name order by file_id)||'.dbf'';'
from dba_data_files
union all
select 'set newname for tempfile '||file_id||' to ''&&path'||tablespace_name||'_'||rank() over (partition by tablespace_name order by file_id)||'.dbf'';'
from dba_temp_files
示例1: 
可用于复制数据库(非dataguard)
su - oracle
rman target sys/oracle@target_db sys/oracle@auxiliary_db
run
{
allocate auxiliary channel c1 type disk;
allocate auxiliary channel c2 type disk;
allocate auxiliary channel c3 type disk;
set newname for database to '/data/oradata/%b';
duplicate target database to &ORACLE_SID from active database;
logfile
group 1 ('/data/oradata/redo1.log') size 2G,
group 2 ('/data/oradata/redo2.log') size 2G,
group 3 ('/data/oradata/redo3.log') size 2G;
release channel c1;
release channel c2;
release channel c3;
}

示例2

可用于搭建standby(,适用于dataguard)
run
{
allocate channel cl1 type disk;
allocate channel cl2 type disk;
allocate channel cl3 type disk;
allocate auxiliary channel c1 type disk;
allocate auxiliary channel c2 type disk;
allocate auxiliary channel c3 type disk;
duplicate target database for standby from active database nofilenamecheck dorecover;
release channel c1;
release channel c2;
release channel c3;
release channel cl1;
release channel cl2;
release channel cl3;
}
note 
  1. 手动分配复制通道时(allocate channel) 必须要加上allocate auxiliary channel,否则会提示:

    RMAN-05503: at least one auxiliary channel must be allocated to execute this command
    
  2. 如果数据库没有做过全备,则duplicate命令必须带关键词" from active database",否则会提示:
    RMAN-06024: no backup or copy of the control file found to restore
    
  3. 如果duplicate命令中使用关键词" from active database",则必须为主库分配通道。否则会提示:
    RMAN-06034: at least 1 channel must be allocated to execute this command
    
  4. 相关路径必须存在,比如控制文件路径不存在,在恢复时会提示:
    ORA-17628: Oracle error 19505 returned by remote Oracle server

Duplicate 复制数据库 搭建Dataguard的更多相关文章

  1. Duplicate复制数据库并创建物理StandBy(spfile+不同实例名+不同路径)

    过程和Duplicate复制数据库并创建物理StandBy类似,只是不需要重启数据库. 目的:创建standby,不重启源数据库 1设定环境如下: Primary数据库 IP 172.17.22.16 ...

  2. 11g 使用rman duplicate复制数据库,创建辅助实例

    一,创建所需目录 1)创建审计文件目录 PROD1@dbrac1 /dsg/oracle11$ cd $ORACLE_BASE/admin PROD1@dbrac1 /u01/app/oracle/a ...

  3. Oracle 11gR2使用RMAN duplicate复制数据库

    11g的RMAN duplicate 个人感觉比10g的先进了很多,10g需在rman备份的基础上进行复制,使用RMAN duplicate创建一个数据完全相同但DBID不同的数据库.而11g的RMA ...

  4. Duplicate复制数据库并创建物理StandBy(spfile+不同实例名)

    过程和Duplicate复制数据库并创建物理StandBy类似,只是不需要重启数据库. 目的:创建standby,不重启源数据库 1设定环境如下: Primary数据库 IP 172.17.22.16 ...

  5. Duplicate复制数据库并创建物理StandBy(spfile版本)

    过程和Duplicate复制数据库并创建物理StandBy类似,只是不需要重启数据库. 目的:创建standby,不重启源数据库 1设定环境如下: Primary数据库 IP 172.17.22.16 ...

  6. Oracle 11gR2 使用RMAN Duplicate复制数据库

    Oracle 11gR2 使用RMAN Duplicate复制数据库     前言:     上周刚做完一个项目,用户要求RAC的数据库可以自己主动备份到另外一个单节点上,单节点可以正常拿起来就能用. ...

  7. 使用rman中的duplicate复制数据库

    目标库和复制库环境: OS: Linux Red Hat AS 4 DB Version: 10.2.0.1   1.目标库和复制库信息 Rman 中的目标库(target database)指的是被 ...

  8. Duplicate复制数据库并创建物理StandBy(pfile版本)

    1设定环境如下: Primary数据库 IP 172.17.22.16 SID orcl Standby数据库 IP 172.17.22.17 SID orcl 设置提示,以区分操作的位置 prima ...

  9. RMAN_学习实验2_RMAN Duplicate复制数据库过程(案例)

    待整理 对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用.实现这个功能我们可以借助rm ...

随机推荐

  1. wx小程序-起航!

     手动创建 入口配置文件 app    页面文件新创建一个文件夹 然后在里面分类 1.文件夹名可以不一样,但是里面的wxml,wxss,json 等文件名必须保持一致 2.app.json 入口文件, ...

  2. 2017-2018-2 20165234 实验二 《Java面向对象程序设计》实验报告

    一.实验报告封面 课程:Java程序设计  班级:1652班  姓名:刘津甫  学号:20165234 指导教师:娄嘉鹏  实验日期:2018年4月13日 实验时间:15:35 - 17:15  实验 ...

  3. pythonのSocket

    TCP/IP 三次握手 第一次 A向B 发送 syn 请求 然后B给A返回 syn + ack A收到后,给B返回ack 握手成功. Socket 网络编程 实现通信 要通过IP+Port Socke ...

  4. 使用CORS方式跨域

    什么是CORS CORS(Cross-Origin Resource Sharing 跨源资源共享),当一个请求url的协议.域名.端口三者之间任意一与当前页面地址不同即为跨域. ===前端 不需要携 ...

  5. Matlab 读取 ROS bag 文件指定消息数据

    近期在接触Ros的时候遇到了一些问题,如何将rosbag中的信息提取出来进行进一步处理呢? 如三维点位置信息,视频信息(如果有的话)等等. 我采用的是MATLAB 读取bag信息 filepath=f ...

  6. Three.js基础探寻四——立方体、平面与球体

    前面简单介绍了webGL和Three.js的背景以及照相机的设定,接下来介绍一些Three.js中的几何形状. 1.立方体 虽然这一形状的名字叫立方体(CubeGeometry),但它其实是长方体,也 ...

  7. Pytorch Visdom

    fb官方的一些demo 一.  show something 1.  vis.image:显示一张图片 viz.image( np.random.rand(3, 512, 256), opts=dic ...

  8. NMON使用以及nmon_analyse生成分析报表

    在我们监控我们的操作系统的时候如果可以把各个硬件的监控信息生成形象化的分析报表图对于我们来说是件太好的事情了,而通过ibm的nom和nmon_analyser两者的结合完全可以实现我们的要求.首先对n ...

  9. Class的isAssignableFrom方法

    Class类的isAssignableFrom是个不常用的方法,感觉这个方法的名字取得不是很好,所以有必要在此解析一下,以免在看源码时产生歧义,这个方法的签名如下: public native boo ...

  10. ibevent 和 libev 提高网络应用性能【转】

    转自:https://www.cnblogs.com/kunhu/p/3632285.html 构建现代的服务器应用程序需要以某种方法同时接收数百.数千甚至数万个事件,无论它们是内部请求还是网络连接, ...