当前位置:  数据库>oracle

通过RMAN 异机克隆数据库

    来源: 互联网  发布时间:2017-06-11

    本文导语: 使用RMAN进行复制时,RMAN会连接目标数据库和辅助实例,如果使用了catalog备份的还会连接恢复目录。RMAN连接了目标数据库才能够访问其控制文件中记录的备份的详细信息,连接辅助实例才能够在辅助实例上分配一个或多个通道...

使用RMAN进行复制时,RMAN会连接目标数据库和辅助实例,如果使用了catalog备份的还会连接恢复目录。RMAN连接了目标数据库才能够访问其控制文件中记录的备份的详细信息,连接辅助实例才能够在辅助实例上分配一个或多个通道进程,9i开始会自动创建通道; 要连接辅助实例就先要启动辅助实例,就需要一个pfile参数文件,由目标数据库creata pfile from spfile得来,由于没有控制文件,所以只能启动到nomount阶段,RMAN会生成到这个辅助实例的sysdba连接。

连接了目标库和辅助实例后,就可以使用duplicate命令,复制数据库,复制过程一般分为以下阶段:1,rman确定备份的状态和位置2,rman在辅助实例上分配辅助通道,3,在辅助实例上还原数据文件,4,构建新的控制文件 5,rman还原归档日志,并进行恢复 6,rman重置辅助库的DBID(唯一标识一个数据库),并以open resetlogs打开数据库。

--------------------------------------推荐阅读 --------------------------------------

RMAN 配置归档日志删除策略

Oracle基础教程之通过RMAN复制数据库

RMAN备份策略制定参考内容

RMAN备份学习笔记

Oracle数据库备份加密 RMAN加密

--------------------------------------分割线 --------------------------------------

平台准备:
      Oracle Linux  +  Oracle 11G
    目标库:
      ORACLE_HOME=/uoracle/app
      ORACLE_BASE=/orabase
      ORACLE_SID= orcl
      IP : 192.168.0.45
    辅助库:
      ORACLE_HOME=/uoracle/app
      ORACLE_BASE=/orabase
      ORACLE_SID=orcl
      IP : 192.168.0.46     

操作步骤(异机和同机复制,步骤基本一样):
      1:运行辅助实例的服务器需要先安装好相应的oracle客户端,且ORACLE_BASE 和ORACLE_HOME目录和目标库相同;
      2:构建辅助数据库目录结构;
      3:创建参数文件,复制过来,并进行相应修改;
      4:创建辅助实例口令文件,orapwd
      5:配置监听及tnsname文件
      6:目标库进行备份,并拷贝到辅助实例服务其上,或同NFS挂载过去;
      7:使用pfile启动辅助实例到nomount,并退出会话;
      8:duplicate命令复制数据库;
      9: 创建spfile
具体实现:
1:安装客户端
 2:构建辅助数据库目录结构(根据参数文件中涉及到的目录来构建辅助库的目录结构)
[oracle@orclA ~]$ echo $ORACLE_BASE
/orabase
[oracle@orclA ~]$ cd /orabase
[oracle@orclA orabase]$ mkdir ./oradata/orcl -p
[oracle@orclA orabase]$mkdir ./fast_recovery_area/orcl -p # 重新构建控制文件,存放控制文件
[oracle@orclA orabase]$ pwd
/orabase
[oracle@orclA orabase]$ mkdir ./admin/orcl -p
[oracle@orclA orabase]$ cd ./admin/orcl/
[oracle@orclA orcl]$ mkdir {a,b,c,d,u}dump
[oracle@orclA orcl]$ mkdir pfile

3:创建参数文件,复制过来,并进行相应修改
  3.1: 目标库上创建pfile,并拷贝到辅助库上 ?/dbs 目录下(必须是$ORACLE_HOME/dbs 目录下,否则识别不到)
          SQL> create pfile='/tmp/initorcl.ora' from spfile;
          SQL> scp  /tmp/initorcl.ora  192.168.0.46:/oracle/home/dbs
  3.2: 对参数文件进行相应修改
        由于这里是进行异机复制,目录结构及实例名都一样,所以没有进行修改
  3.3: 使用pfile启动数据库到nomount 状态,进行测试,并创建spfile
                   
SQL> startup pfile='/uoracle/app/dbs/initorcl.ora'>ORACLE instance started.
Total System Global Area 1.0055E+10 bytes
Fixed Size                  2237008 bytes
Variable Size            3154120112 bytes
Database Buffers        6878658560 bytes
Redo Buffers              19767296 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile;
File created.

4:为辅助实例创建口令文件,密码与源库一致
[oracle@orclA bin]$ pwd
/uoracle/app/bin
[oracle@orclA bin]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=admin123;
[oracle@orclA bin]$
[oracle@orclA bin]$ ls /uoracle/app/dbs/orapworcl
/uoracle/app/dbs/orapworcl


5:配置监听及tnsname文件
源库上:
[root@bzdb ~]# cat /uoracle/app/network/admin/listener.ora
# listener.ora Network Configuration File: /uoracle/app/network/admin/listener.ora
# Generated by Oracle configuration tools.


orcl =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.45)(PORT = 1521))
    )
  )


ADR_BASE_LISTENER = /orabase


[root@bzdb ~]# cat /uoracle/app/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /uoracle/app/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.45)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


AUXORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.46)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )     

更多详情见请继续阅读下一页的精彩内容:

 


    
 
 

您可能感兴趣的文章:

  • 请问如何用windows服务器通过网络来批量克隆linux系统?
  • 现在java开发中流行通过什么方式实现对数据库操作?就好像Visual Stadio通过ADO访问数据库。
  • java中的数据库结果集可以被赋值吗,可以通过结果集的方法来更新数据库字段吗?
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • 怎样通过表单将输入的日期取出,并保存到数据库中
  • 大家有多少web application是直接连接数据库的?又有多少是通过weblogic或websphere之类连接的?
  • 不想通过jdbc-odbc桥,连接数据库,该怎么做?
  • 通过jdbc-odbc bridge连结数据库问题
  • 如何通过jdbc将文件放到数据库里?
  • 怎样通过Ip地址连接Sql server 数据库?
  • 通过备份记录获取数据库的增长情况
  • 通过JDBC连接数据库,执行抄作后,关闭了连接,数据服务器端的进程还在,怎麽处理?
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • jsp怎么通过jdbc连接db2数据库?
  • 通过JDBC如何与SYBASE数据库的连接?
  • Linux/UNIX下,C++程序通过那些步骤访问Oracle或者Sybase SQL数据库?
  • 通过dbi使用perl连接mysql数据库的方法
  • 通过JDBC存取数据库,该怎样得到结果集的总数?
  • 怎么样才能不通过jdbc-odbc直接连到数据库,以sql7为例。
  • 请问applet如何通过javabean访问数据库?给个例子,谢谢
  • 为什么我通过jdbc-odbc桥连接到access数据库的时候resultset只能向后移不能前移或作其它移动???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过javascript库JQuery实现页面跳转功能代码
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • linux下通过crond实现自动执行程序
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • 通过docker commit命令保存对docker容器的修改
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • 通过docker run命令运行新的docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 通过docker ps命令检查运行中的docker镜像
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • Session id实现通过Cookie来传输方法及代码参考
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 通过docker search命令搜索可用docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • Python3通过request.urlopen实现Web网页图片下载
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,