设为首页 收藏本站

运维网

查看: 525|回复: 0

[经验分享] 搭建ORACLE DataGuard(使用RMAN备份)

[复制链接]

尚未签到

发表于 2018-9-8 09:54:19 | 显示全部楼层 |阅读模式
  搭建ORACLE DataGuard(使用RMAN备份)
  背景:线上的oracle运行多时,没有做双机;为了确保服务的不间断,现对该oracle做DG双机。
  操作系统:windows 2008
  数据库:11.1.0.6
  注意:在搭建前要确保各个服务器间可以相互ping同,特别是域名也要能相互ping同。
  一、信息收集
  1.配置信息收集
  说明  主机名    IP地址     db_name    sid   DB_UNIQUE_NAME    Service_name
  主库   dg1   192.168.0.11     orcl     orcl      ORCLDG1       orcl
  备库   dg2   192.168.0.22     orcl     orcl      ORCLDG2       orcl
  2.主库信息收集
  2.1查看数据库版本信息
  SQL> SELECT * FROM V$VERSION;
  2.2查看数据库状态
  SQL> SELECT NAME,OPEN_MODE,DATABASE_ROLE,FORCE_LOGGING,LOG_MODE,FLASHBACK_ON FROM V$DATABASE;
  SQL> SHOW PARAMETER NAME;
  二、准备工作
  1.备库安装oracle数据库软件,不创建数据库,保证两个数据库的安装路径一致;
  备库设置环境变量:
  ORACLE_HOME为D:\app\Administrator\product\11.1.0\db_1
  ORACLE_SID 为orcl
  2.备库使用ORACLE"配置和移植工具"中的Net Configuration Assistant工具创建监听;
  使用ORACLE"配置和移植工具"中的Database Configuration Assistant工具建立数据库orcl;
  3.主备库创建目录
  CMD> MD D:\app\Administrator\product\11.1.0\archive\arch
  CMD> MD D:\app\Administrator\oradata\dg
  三、搭建DATAGUARD
  1.配置主备库的listener.ora 和tnsnames.ora 文件
  1.1修改listener.ora文件
  LISTENER =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521))
  )
  )
  ####主备库都新增内容
  SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = orcl)
  (ORACLE_HOME = D:\app\Administrator\product\11.1.0\db_1)
  (SID_NAME = orcl)
  )
  )
  ADR_BASE_LISTENER = D:\app\Administrator
  #####
  1.2修改tnsnames.ora 文件
  主备库都新增如下内容
  ORCLDG1 =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl)#这里是listener.ora中配置的GLOBAL_DBNAME
  )
  )
  ORCLDG2 =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.22)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl)
  )
  )
  1.3重启主备库的监听
  CMD>lsnrctl stop
  CMD>lsnrctl start
  1.4检查SQL*Net配置
  在主数据库和备用数据库中使用以下命令检查SQL*Net配置
  CMD>tnsping ORCLDG1
  CMD>tnsping ORCLDG2
  1.5主备间互相测试远程登录
  CMD>sqlplus sys/pwd@ORCLDG1 as sysdba
  CMD>sqlplus sys/pwd@ORCLDG2 as sysdba
  2.修改主库参数

  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>  ---还可延迟同步为DEFER,但那样会出现日志同步到了备库,但是没有立即应用。

  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>  注:
  1)在DataGuar备库,没有特殊情况一定要将standby_file_management参数设为AUTO,并且设置db_file_name_convert和log_file_name_convert的值。
  若standby_file_management=MANUAL,即使主备库数据文件路径一致,主库添加数据文件,备库也不会自动添加,必须手动完成。
  若standby_file_management=AUTO,主库添加数据文件,备库会根据db_file_name_convert参数自动将数据文件创建到正确路径。
  2)db_file_name_convert和log_file_name_convert是用来在线转化数据和standby日志文件的位置。主要用在物理standby数据库和rman数据库复制和TSPITR的操作。
  它们的作用是:主库备库路径不相同的情况,备库会根据这两个参数将数据文件和redo文件创建到正确位置。
  3)db_file_name_convert和log_file_name_convert指定时都必须是目录,不能为文件,否则启动数据库时会有ORA-01678的错误。
  3.主库启用FORCE LOGGING模式

  SQL>>  4.开启归档模式
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP MOUNT;

  SQL>>
  SQL>>  5.主库做全备份,并传输备份集到备库的相同位置
  CMD> RMAN TARGET /
  RUN
  {
  ALLOCATE CHANNEL C0 DEVICE TYPE DISK;
  ALLOCATE CHANNEL C1 DEVICE TYPE DISK;
  ALLOCATE CHANNEL C2 DEVICE TYPE DISK;
  ALLOCATE CHANNEL C3 DEVICE TYPE DISK;
  CONFIGURE CONTROLFILE AUTOBACKUP ON;
  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\backup\%F';
  BACKUP FULL DATABASE FORMAT 'D:\backup\ora11g_full_db_%d_%T_%u.bak' INCLUDE CURRENT CONTROLFILE FOR STANDBY;
  BACKUP ARCHIVELOG ALL FORMAT 'D:\backup\ora11g_arc_%s_%p_%t.bak';
  }
  如果主库备份盘空间不足可以使用压缩备份,但耗时稍长;
  压缩备份:
  将上面脚本中BACKUP FULL DATABASE FORMAT 修改为BACKUP AS COMPRESSED BACKUPSET FULL DATABASE FORMAT即可备份时间较长,在备份过程中可以继续下面的配置.
  6.拷贝主库的密码文件到备库相应位置
  密码文件默认位置:D:\app\Administrator\product\11.1.0\db_1\database\PWDorcl.ora
  如果不存在按如下方法可以生成该文件
  CMD> ORAPWD FILE='$ORACLE_HOME/dbs/PWD%ORACLE_SID%' PASSWORD=xxxx ENTRIES=10 FORCE=Y
  7.生成备库PFILE文件
  7.1在主库生成备库PFILE文件:
  SQL> CREATE PFILE='D:\app\Administrator\product\11.1.0\db_1\dbs\init2.ora' FROM SPFILE;
  7.2将生成的init2.ora拷贝到备库相应位置
  7.3修改init2.ora文件
  注意:修改以下下参数(和配置主库时修改的参数项一样,值要具体而定)
  #DG CONFIG
  *.log_archive_config='dg_config=(ORCLDG1,ORCLDG2)'
  *.log_archive_dest_1='LOCATION=D:\app\Administrator\product\11.1.0\archive\arch LGWR VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCLDG2'
  *.log_archive_dest_2='SERVICE=ORCLDG1 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLDG1'
  *.standby_file_management='AUTO'
  *.log_archive_dest_state_1='ENABLE'
  *.log_archive_dest_state_2='ENABLE'
  *.fal_server='ORCLDG1'
  *.fal_client='ORCLDG2'
  *.db_unique_name='ORCLDG2'
  *.local_listener='ORCLDG2'
  8.备库应用init2.ora
  8.1使用init2.ora启动备库
  SQL> STARTUP PFILE='D:\app\Administrator\product\11.1.0\db_1\dbs\init2.ora';
  8.2使用init2.ora生成SPFILE
  SQL>CREATE SPFILE FROM PFILE='D:\app\Administrator\product\11.1.0\db_1\dbs\init2.ora';
  9.主备库添加standby redo log
  9.1查看重做日志信息
  查看日志组成员
  SQL> SELECT MEMBER FROM V$LOGFILE;
  查看日志大小
  SQL> SELECT GROUP#,BYTES/1024/1024,MEMBERS FROM V$LOG;
  查看standby redo log
  SQL> SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
  9.2新增standby redo log

  SQL>>
  SQL>>
  SQL>>
  SQL>>  Standby redo log的组数参考公式:(online redo log组数 + 1) * 数据库线程数;单机线程数为1,RAC一般为2。Standby redo log的组成员数和大小也尽量和online redo log一样。
  10.进行备库的恢复
  拷贝主库的RMAN备份D:\backup到备库的D:\下
  注意:
  1)这里虽然是恢复备库,但是需要在主库上执行RMAN命令;
  2)恢复时请将备分生成后主库上生成的归档日志文件拷贝到备库相应位置,这样在备库恢复时会将这些差异的数据一同恢复到备库。
  10.1备库启动到nomount状态
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP NOMOUNT;
  10.2在主库执行备库的恢复
  CMD> RMAN TARGET /
  RMAN> CONNECT AUXILIARY sys/pwd@ORCLDG2
  RMAN> DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK DORECOVER;
  11.备库启用
  启动备库到(备用状态的)mount模式,RMAN还原完成会自启动到mount状态

  SQL>>  设置备库为应用日志状态

  SQL>>  取消备库自动恢复

  SQL>>  启动备库到readonly模式

  SQL>>  设置备库为时时应用日志状态

  SQL>>  12.备库恢复临时表空间
  重用前查看临时表空间信息
  SQL>SELECT FILE#,NAME,STATUS FROM V$TEMPFILE;
  SQL>SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_TEMP_FILES;
  现有临时表空间数据文件下线

  SQL>>  删除现有临时表空间

  SQL>>  重用临时表空间

  SQL>>  重后查看临时表空间信息
  SQL>SELECT FILE#,NAME,STATUS FROM V$TEMPFILE;
  SQL>SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_TEMP_FILES;
  提示:文章中用到的路径等具体的信息请根据自身环境进行修改。
  参考:
  blog.chinaunix.net/uid-23284114-id-4142519.html
  blog.itpub.net/25105315/viewspace-710330/
  blog.csdn.net/hj402555749/article/details/17654769
  blog.itpub.net/12679300/viewspace-1127775/
  blog.csdn.net/yuzhenhuan01/article/details/6450565
  blog.chinaunix.net/uid-15108676-id-4134935.html
  blog.csdn.net/sunjiapeng/article/details/38849123


运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

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

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

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

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


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


独家合作伙伴: 青云cloud

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