设为首页 收藏本站
查看: 890|回复: 0

[经验分享] ORACLE 11G 之Rman Duplicating a database

[复制链接]
累计签到:2 天
连续签到:2 天
发表于 2018-9-14 12:56:07 | 显示全部楼层 |阅读模式
  Oracle 11 g2 版本下,duplicating a database 有两种方法:
  1. Active database duplication
  2. Backup-based duplication
  通过duplicate 一个数据库的好处在于:
  Test backup and recovery procedures
  Test an upgrade to a new>
  Test the effect of applications on database performance
  Create a standby database
  Generate reports
  先学习基于Backup-based duplication ,比较好理解一些,测试环境:异机同目录
  环境准备前提:
  现在有两台oracle server,一台:192.168.1.249  一台:192.168.1.248
  让192.168.1.249 作为primary A, 192.168.1.248上就作为auxiliary B
  为了操作的便捷,我就以auxiliary B为主要操作点来完成duplicate操作
  一:在primary A上操作
  现在呢,就通过dbca来创建一个新的oracle database_name和SID,也是再通观的学习下oracle 创建表和插入数据
  通过dbca,会默认创建一个表空间和临时表空间,测试的就不再创建表空间了,创建表空间的语法:
  create tablespace  空间名称  datafile ' 数据文件的路径'   大小>
  创建一个表:
  create table employees (employee_id number(6), first_name varchar2(20),last_name varchar2(25),phone_number varchar2(15),salary  number(8,2),department_id number(4), constraint emp_salary_min check (salary > 0) );
  在创建表的过程中插入了一些约束
  插入数据:
  insert into  employees (employee_id,first_name,last_name,phone_number,salary,department_id) values (1189,'wang','ying',18920782475,4900,2);
  insert into  employees (employee_id,first_name,last_name,phone_number,salary,department_id) values (1109,'zhang','ying',18920482475,4900,3);
  随意插入两条数据就好了,证明表里有数据就好
  二:启动监听和打开数据库:
  分别执行:
  Lsnrctl start
  Sqlplus / as sysdba
  Startup;
  三:在B上通过netmgr实现远程库A的访问,也就是修改
  /opt/oracle/product/11.2.0/dbhome_1/network/admin下的
  Tnsnames.ora 和listener.ora  文件
  Netmgr
  配置listener
  
DSC0000.png

DSC0001.png

  
  之后点击关闭窗口,保存退出
  之后来尝试下是否在B server上能连接到Aserver上的test05库
  [oracle@test1 ~]$ rman
  RMAN> connect target sys/biao_123@test05;
  
  RMAN 连接的格式是:   username/password@监听名(就是上步netmgr建立的到A库上的监听名称)
  connected to target database: TEST05 (DBID=4183336084) (表示连接成功)
  注意:如果这一步,你不记得在安装database的时候,记录的sys、system的密码的话,解决办法:
  在目标数据库上,在操作系统的级别登陆数据库是不需要密码的
  所以可以使用sqlplus / as sysdba (登录)
  更改user sys和system的密码
  Alter user sys>
  四:对主库做备份,完整备份
  备份脚本:
  run {
  ########backup databse datafile####
  allocate channel ch1 type disk
  maxpiecesize=4G;
  crosscheck backup;
  delete expired backup;
  backup
  incremental level 0 database
  tag 'full_weekly_backup' format '/opt/oracle/rman/backup/dbf_%n_%I_%U.bkp';
  delete obsolete;
  #########backup archive log #####
  sql ">
  backup
  archivelog all
  format '/opt/oracle/rman/backup/arc_%n_%I_%U.arch'
  delete  all input;
  delete obsolete;
  release channel ch1 ;
  }
  
  这个是大致写了一点的备份脚本,通过RMAN去执行RUN就可以了
  在主库A上创建PFILE
  Sqlplus登录
  Create pfile from spfile (创建test05 库的PFILE文件 inittest05.ora ),之后将这个文件同步到auxiliary B上:路径?/dbs/下 (如果没有这个文件,auxiliary B上无法识别到test05 这个数据库)
  问号”?”代表的是ORACLE_HOME
  需要将备份后的文件同步到auxiliary B上,所以需要在B上创建和A一样的rman路径
  注意:因为我们之前插入的数据很少,数据文件很少,通过scp copy就行了。如果是正式的数据库的话,你备份的文件可能是几十GB,甚至会上T,这样的话,基于RMAN-Based duplicate 一个数据库就会占用很多的资源,这个问题等下我们会讲述到,
  五:配置auxiliary B库
  创建和primary A库一样的备份路径
  Mkdir -p /opt/oracle/rman/backup
  Mkdir -p /opt/oracle/oradata/test05 (数据库 文件的存放位置)
  mkdir -p /opt/oracle/admin/test05/{pfile,adump,bdump}
  
  将primary A上刚才RMAN备份的文件全部copy过来(这一步是必须要的)
  之后,就是要通过RMAN 来进行duplicate 了
  在此之前,需要将auxiliary B 将数据库置于nomount状态
  先shutdown immediate
  再 startup nomount pfile=?/dbs/inittest05.ora;
  
  使用RMAN
  RMAN> connect target sys/biao_123@test05; (连接到主库上)
  
  connected to target database: TEST05 (DBID=4183336084)
  RMAN> connect auxiliary / ; (auxiliary 标记)
  connected to auxiliary database: TEST05 (not mounted)
  
  DUPLICATE CASE
  duplicate target database to test05 nofilenamecheck
  Logfile
  ‘/opt/oracle/oradata/test05/redo1.dbf’>
  ‘/opt/oracle/oradata/test05/redo2.dbf’>
  如果RMAN备份的文件很大的话,这个执行的时间是比较长的
  在duplicate 日志的输出过程中:
  >
  说明在duplicate的过程中已经对database进行 resetlogs了,这里指的是archive log 都会清空
  executing Memory Script
  
  database opened  (数据库已经打开,通过SQL*PLUS 可以直接操作)
  Finished Duplicate Db at 07-AUG-13
  以上的日志输出表示我们的操作时正确的,成功的
  下面就是在auxiliary B上使用SQL * PLUS操作 auxiliary test05 库了
  这样,基于RMAN-based 操作就完成了
  错误解决一:
  [oracle@test1 ~]$ netmgr
  Xlib: connection to ":0.0" refused by server
  Xlib: No protocol specified
  Exiting
  java.lang.NullPointerException
  解决办法:切换到root 账户下,执行命令
  [ root@test1 rman]# export DISPLAY=:0.0
  [root@test1 rman]# xhost  +
  access control disabled, clients can connect from any host (提示这个是正确的)
  之后再切换到oracle账户下,执行netmgr
  错误解决二:
  ORA-19504: failed to create file "/opt/oracle/oradata/test05/system01.dbf"
  ORA-27040: file create error, unable to create file
  Linux-x86_64 Error: 2: No such file or directory
  
  failover to previous backup
  这个错误表示,一要么是没有空间,要么是没有恰当的权限
  没有权限的话呢
  Mkdir -p /opt/oracle/oradata/test05
  Chown -R oracle:oinstall /opt/oracle/test05
  错误解决三:
  ORA-09925: Unable to create audit trail file
  解决办法:
  mkdir -p /opt/oracle/admin/test05/{pfile,adump,bdump}
  运维转DBA,新手学习交流群:329638713
  
  
  
  
  
  
  
  
  
  
  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-582853-1-1.html 上篇帖子: 安装Linux个下的Oracle服务器 下篇帖子: ORACLE 体系结构知识总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表