准备两台设备,以我的为例一台source  ip:192.168.3.66和一台duplicate ip:192.168.3.77

1》基于备份集复制数据库,目录结构都一样(active database网络)

1.在duplicate端检查有没有亚参文件(如果没有的话就创建)

cd $ORACLE_HOME/dbs

touch dummy.ora

编辑vi dummy.ora添加

db_name='prod'

2.在source端复制一个口令文件(前提是在source有orapwprod口令文件,或者自己在duplicate自己创建一个)

scp $ORACLE_HOME/dbs/orapwprod 192.168.3.77:$ORACLE_HOME/dbs

3.检查duplicate必要的文件目录(如果没有创建)

mkdir -p /u01/admin/prod/adump
mkdir -p /u01/flash_recovery_area
mkdir -p /u01/arch/prod
mkdir -p /u01/oracle/dbs
mkdir -p /u01/oradata/prod

4.配置监听器source(可静态可动态)和duplicate(静态):

两端的tns一样如下:

VBOX77 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.77)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = prod)
)
)

VBOX66 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.66)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = prod)
)
)

5.检查两端的连通性:

两边检查如下

sqlplus sys/oracle@vbox66 as sysdba

sqlplus sys/oracle@vbox77 as sysdba

6.在duplicate端重新登录sys用户sqlplus / as sysdba

SYS@prod>startup pfile=/u01/oracle/dbs/dummy.ora nomount

7.在source端

rman target sys/oracle@vbox66 auxiliary sys/oracle@vbox77

RMAN> duplicate target database to prod from active database spfile nofilenamecheck;

8.完成检验。


2》基于备份集复制数据库,目录结构不一样(active database网络)

1.在duplicate端检查有没有亚参文件(如果没有的话就创建)

cd $ORACLE_HOME/dbs

touch dummy.ora

编辑vi dummy.ora添加

db_name='auxprod'(这里我们换一个实例名)

注意:还要把.bash_profile中的ORACLE_SID实例名改成auxprod,然后生效。

2.在source端复制一个口令文件(前提是在source有orapwprod口令文件,或者自己在duplicate自己创建一个)

scp $ORACLE_HOME/dbs/orapwprod 192.168.3.77:$ORACLE_HOME/dbs

改口令名:mv orapwprod orapwauxprod

3.

因为是基于不同目录,所以在root下在新建一个目录/u02

mkdir /u02

chown -R oracle:oinstall /u02              ------如果这里不授权在后面会遇到权限问题

创建新目录:

mkdir -p /u02/arch1                             ----放归档

mkdir -p /u02/admin/auxprod/adump   -----审计文件

mkdir -p /u02/oradata/auxprod            ---放控制文件,数据文件等

4.配置监听器和tns(注意1》中与相同目录配置的区别)

duplicate端:

配置监听器 内容如下:

[oracle@wjm admin]$ vi listener.ora

# listener.ora Network Configuration File: /u01/oracle/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = wjm)(PORT = 1521))

)

)

ADR_BASE_LISTENER = /u01

SID_LIST_LISTENER =

(SID_DESC =

(GLOBAL_DBNAME= auxprod)

(ORACLE_HOME = /u01/oracle)

(SID_NAME = auxprod)

)

)

重启监听

lsnrctl stop

lsnrctl start

配置文件tnsnames.ora 内容如下:

[oracle@wjm admin]$ vi tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/oracle/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

vbox66 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.66)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = prod)

)

)

auxprod =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.77)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = auxprod)

)

)

5.检查两端的连通性:

两边检查如下

sqlplus sys/oracle@vbox66 as sysdba

sqlplus sys/oracle@vbox77 as sysdba

6.在duplicate端重新登录sys用户sqlplus / as sysdba

SYS@prod>startup pfile=/u01/oracle/dbs/dummy.ora nomount

7.在source端

DUPLICATE TARGET DATABASE
TO auxprod
FROM ACTIVE DATABASE
SPFILE
SET DB_NAME 'auxprod'
SET LOG_ARCHIVE_DEST_1='location=/u02/arch1'
SET CONTROL_FILES=
'/u02/oradata/auxprod/control01.ctl',
'/u02/oradata/auxprod/control02.ctl'
SET AUDIT_FILE_DEST='/u02/admin/auxprod/adump'
SET DB_FILE_NAME_CONVERT '/u01/oradata/prod','/u02/oradata/auxprod'
SET LOG_FILE_NAME_CONVERT '/u01/oradata/prod','/u02/oradata/auxprod'
NOFILENAMECHECK;

8.完成检验。

博主当时配置不同目录复制库遇到的错误:

1.在.bash_profile中ORACLE_SID没有改

2.口令文件命名错误

3.

ERROR:
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
ORA-01075: you are currently logged on

授权问题重新给/u01和/u02授权

chown -R oracle:oinstall /u01

chown -R oracle:oinstall /u02

注:在一个数据库上也可以复制方法同上。


3》在上面是基于备份集的复制,接下来是基于备份来复制库

基于备份来复制一个数据库
在原来的source设备上做一个全备+归档备份到/home/oracle/myrman
将source设备上的全备scp到另外一个设备duplicate上/home/oracle/rman
在source设备上select member from v$logfile;中的日志复制到另一个duplicate设备/home/oracle/rman
将duplicate中.bash_profile文件ORALCE_SID改为auxprod
在duplicate设备中打开rman target/
startup nomount;(提示缺少spfile文件)
--打开/u01/flash_recovery_area找到文件
restore spfile from '/home/oracle/rman/o1_mf_s_951945765_ds0no68m_.bkp';
startup force nomount;
连接SYS@auxprod>
show parameter controlfile
alter system set control_files='/u03/oradata/auxprod/control01.ctl','/u03/oradata/auxprod/control02.ctl','/u03/oradata/auxprod/control03.ctl' scope=spfile;
然后再rman中
restore controlfile from '/home/oracle/rman/o1_mf_s_951945765_ds0no68m_.bkp';
alter database mount;
catalog start with '/home/oracle/rman'
在source中批处理后执行
select 'set newname for datafile '||''''||' to '||''''||replace(name,'/u02/oradata/auxprod/','/u03/oradata/auxprod/')||''';' from v$datafile;
set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/system01.dbf';
set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/sysaux01.dbf';
set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/undotbs01.dbf';
set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/users01.dbf';
set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/example01.dbf';
alter database rename file '/u02/oradata/auxprod/redo03.log' to '/u03/oradata/auxprod/redo03.log';
alter database rename file '/u02/oradata/auxprod/redo02.log' to '/u03/oradata/auxprod/redo02.log';
alter database rename file '/u02/oradata/auxprod/redo01.log' to '/u03/oradata/auxprod/redo01.log';

restore database;
recover database;
alter database open resetlogs;

转载于:https://www.cnblogs.com/wjmbk/p/7858146.html

oracle复制数据库相关推荐

  1. oracle怎样复制数据库,oracle复制数据库

    准备两台设备,以我的为例一台source  ip:192.168.3.66和一台duplicate ip:192.168.3.77 1>基于备份集复制数据库,目录结构都一样(active dat ...

  2. oracle复制数据库文件不动,复制数据库中需要注意的几点事项

    任务简介: 此次复制的生产库数文件为9.18TB,实际分配的数据大小为5.16TB,使用RMAN压缩备份后为1.1TB. 复制端数据库采用单实例ASM存储方式管理,数据库版本为11.2.0.4. 数据 ...

  3. oracle复制数据库文件,史上最简单的方法复制或迁移Oracle数据库

    在DBA的日常工作中,经常需要重装或在新机器上安装Oracle,但每次安装所浪费的时间.精力以及失败的挫折都在考验着DBA的承受能力,本文着重介绍了一个简单的复制和迁移Oracle数据库的方法,详细内 ...

  4. oracle复制数据库文件,ORACLE数据库文件转移到另一台机器的方法

    ORACLE数据库教程文件转移到另一台机器的方法 因为恢复视频数据导致空间不足而终止,需要转移部分数据文件到别的硬盘里.在参照部分 网络资料,结合自己的实践,总结出Oracle数据文件转移方法. 1) ...

  5. Oracle 11g新特性之 - 使用RMAN复制数据库

    Oracle 11g新特性之 - 使用RMAN复制数据库 Oracle 11g新特性之 - 使用RMAN复制数据库 - 1 Oracle 11g新特性之 - 使用RMAN复制数据库 - 2 Oracl ...

  6. [转]Oracle DB 复制数据库

    • 列出创建副本数据库的目的 • 选择用于复制数据库的方法 • 使用RMAN 复制数据库 • 使用RMAN 备份复制数据库 • 基于正在运行的实例复制数据库 使用副本数据库 • 使用副本数据库可执行以 ...

  7. oracle10g数据库复制,oracle -10g 中Duplicate 复制数据库

    oracle --10g 中Duplicate 复制数据库 本次实验通过duplicate命令,在本机环境中创建一个复制数据库.目标数据库为hongye.复制数据库为catdb. 环境别名设置: al ...

  8. oracle copy database,oracle 11g duplicate from active database 复制数据库(二)

    下面介绍将数据库复制到远程主机相同目录结构的操作步骤 1.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项: .手动创建密码文件,对于duplica ...

  9. oracle 11g rman catalog,Oracle 11g RMAN复制数据库的测试

    RMAN支持两种类型复制:活动数据库复制和基于备份的复制,主要用来建立测试库.分别进行测试 我们把要复制的数据库称为源数据库(SOURCE DB=orcl),复制后的数据库成为目标数据库(TARGET ...

最新文章

  1. 企业金融云存储建设之路
  2. 内存泄漏检测工具(转载)
  3. gyp linux,gyp编译工具
  4. 计算机刷帖知识点,09计算机408分(沙滩帖)
  5. 三维家可以导入别人的方案吗_广州深圳天津形位公差检测三维缺陷检测服务
  6. matlab能用矩阵操作就不要用for循环
  7. OSG+VS2013+Win7 环境搭建,osgvs2013
  8. 【转】由投影重建图像:滤波反投影、FDK、TFDK三维重建算法理论基础
  9. HTML判断如果并且,将html转换为js,并且其中含有判断语句
  10. UVa 10118 免费糖果(记忆化搜索+哈希)
  11. Mac基础知识:在mac上怎么使用程序坞
  12. JDBC常用API和使用
  13. CCNA学习笔记 基础知识回顾(4)
  14. smart原则_目标管理:OKR与SMART原则的异同
  15. 什么云服务器可以挂虚拟鼠标,云服务器 模拟鼠标
  16. 了解记录管理系统RMS
  17. linux禁调usb,Linux主机禁用USB接口
  18. php 调用 百度句法分析,【原创源码】百度新版翻译API调用使用范例
  19. 微信小程序引入字体图标 1
  20. 高效领导者提升思考力的5个底层法则

热门文章

  1. 深度剖析 MTI是什么?MTI有什么价值?
  2. grep 正则表达式的使用
  3. 第三十届ACM国际大学生程序设计竞赛全程采访 - 赴美首日
  4. php编程轻薄本,轻薄本好用,但接口太少,需要HUB来发挥功能
  5. 慧通教育——python进阶习题第一关(一)
  6. Linux系统中常用软件的安装(os7)
  7. centos重启网络服务失败
  8. springboot毕设项目房产中介管理yjk0h(java+VUE+Mybatis+Maven+Mysql)
  9. Electron自定义软件卸载流程
  10. flair_初学者极客:使用表格将Flair添加到Word文档