欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RAC—单机异地备份

程序员文章站 2022-04-09 12:47:08
...

RAC—单机异地备份

适用场景: 从RAC复制数据库实例到异地单机上  

原理

以rac端为Primary库,异地单机端为Standby库搭建DataGurd,从而实现数据库的异地备份功能。
且只要不断开dg连接,Standby库端将会一直与Primary库同步

环境

  • RAC端

    1. SCAN IP:172.18.23.155

    2. RAC1

      • 公共IP:172.18.23.151
      • 操作系统:Red Hat Enterprise Linux Server release 5.864bit
      • 数据库版本:oracle11.2.0.4.0 - 64bit
      • 数据库名:DG
      • 节点名:DG1
    3. RAC2

      • 公共IP:172.18.23.152
      • 操作系统:Red Hat Enterprise Linux Server release 5.864bit
      • 数据库版本:oracle11.2.0.4.0 - 64bit
      • 数据库名:DG
      • 节点名:DG2
  • DG端

    • IP:172.18.25.153
    • 操作系统:Red Hat Enterprise Linux Server release 5.864bit
    • 数据库版本:oracle11.2.0.4.0 - 64bit
    • 数据库名:DG

配置监听(Primary&Standby)

  • Standby: 配置静态监听
    编辑备库listener.ora文件路径:
/u01/app/oracle/base/product/11.2.0/dbhome_1/network/admin/listener.ora

主要添加了静态监听配置(SID_LIST_LISTENER):
RAC—单机异地备份

  • 配置tns文件(Primary&Standby)
    在Primary库上编辑tnsnames.ora文件路径:
/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

主要添加了Standby库的tns信息:

RAC—单机异地备份
* 在Standby库上编辑tnsnames.ora文件
路径:

/u01/app/oracle/base/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

内容:与Primary库一致(可直接从Primary库复制)

  • **文件
    将Primary库的**文件复制至Standby库(或直接新建)
    路径:
/u01/app/oracle/base/product/11.2.0/dbhome_1/dbs/orapwDG

创建**文件(不推荐):
在Standby库执行:

orapwd file=$ORACLE_HOME/dbs/orapwDG password=密码 entries=5

创建安装路径

在Standby库中使用oracle用户
Standby库中根目录($ORACLE_BASE)的路径为:

/u01/app/oracle/base

创建主目录

mkdir /u01/app/oracle/base/admin/DG;
mkdir /u01/app/oracle/base/admin/DG/adump;
mkdir /u01/app/oracle/base/admin/DG/bdump;
mkdir /u01/app/oracle/base/admin/DG/cdump;
mkdir /u01/app/oracle/base/admin/DG/dpump;
mkdir /u01/app/oracle/base/admin/DG/pfile;

创建快速恢复区

mkdir /u01/app/oracle/base/fast_recovery_area/dg;
mkdir /u01/app/oracle/base/fast_recovery_area/dg/onlinelog;

创建数据区

mkdir /u01/app/oracle/base/oradata/dg;

配置spfile文件

  • 查看Primary库的datafile路径
    使用sqlplus / as sysdba命令进入sql:
select file#,name from v$datafile;

RAC—单机异地备份

  • 查看Primary库的logfile路径
    使用sqlplus / as sysdba命令进入sql:
select member from v$logfile;

RAC—单机异地备份

在Standby库上创建spfile

  • 在指定路径创建pfile文件
vim /u01/app/oracle/base/my.ora

内容:

db_name= DG
db_file_name_convert=('+DATA/dg','/u01/app/oracle/base/oradata/dg')
log_file_name_convert=('+DATA/dg/onlinelog','/u01/app/oracle/base/fast_recovery_area/dg/onlinelog','+FRA/dg/onlinelog','/u01/app/oracle/base/fast_recovery_area/dg/onlinelog')

注意比较Primary库中datafile和logfile的路径与从库中此文件路径的差异,并根据差异配置下一步中pfile文件的db_file_name_convert和log_file_name_convert。第一个参数为Primary库路径,第二个参数为相对应的Standby库的路径。如路径一致可以不配。

  • 根据pfile来修改Standby库的spfile
    在Standby库使用oracle用户:
export ORACLE_SID=DG
sqlplus / as sysdba

进入sql后:

create spfile from pfile=’/u01/app/oracle/base/initDG.ora’;

启动Standby库至nomount状态

startup nomount;

使用rman复制数据库到异地单机

  • 使用rman工具连接主备库
    在Primary库使用oracle用户:
rman target sys/123456@DG auxiliary sys/123456@DGDG
  • 开启deplicate复制
RMAN> duplicate target database for standby from active database nofilenamecheck;

如果复制过程中没有报错,执行结果最后一行显示Finished Duplicate Db 那么就复制成功了,此时,两端的数据库就是一样的了。

检测

在Standby库上执行

SQL>alter database open;
SQL>alter database recover managed standby database disconnect from session;

随便查看某张表,Primary和Standby的数据是一样的。

  • 在Primary库上执行
SQL>create table t(id int);
SQL>insert into t values(1);
SQL>commit;
SQL>alter system switch logfile;

以上是建一张新表,插入一条数据,并提交,写入磁盘触发MRP进程.

  • 在Standby库上执行
SQL>select * from t;

会有一条数据,说明已经同步Primary最新的变更。