ITPub博客

首页 > 数据库 > Oracle > RMAN备份恢复搭建ADG 11G rac-单机

RMAN备份恢复搭建ADG 11G rac-单机

原创 Oracle 作者:一鸣_x88 时间:2021-08-08 21:11:33 1 删除 编辑

oracle dg raman 备份还原方式
1.主库确保开启归档

2.启动主库的强制日志
SQL> select force_logging from v$database;
FOR
---
NO
SQL> alter database force logging;

Database altered.

3.配置主库静态监听
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.8.10)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = test)
  (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
  (SID_NAME = test)
  )
  )

4.配置备库静态监听
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.8.101)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = testdg)
  (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
  (SID_NAME = testdg)
  )
  )
 
lsnrctl stop ---lsnrctl start

5.配置两端的tnsnames.ora
TEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.8.10 )(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = test)
    )
  )

TESTDG =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.8.101 )(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = testdg)
    )
  )
--tnsping 进行测试
--登录测试


6、将主库密码文件传输到备库
[oracle@localhost dbs]$ scp orapwtest 172.16.8.101:$ORACLE_HOME/dbs  --注意11g RAC的密码文件在本地,以上的版本需要从ASM里面复制出来,复制的方式参考duplicate方式里面的命令。
[oracle@localhost dbs]$ mv orapwtest orapwtestdg  --注意改名字
sqlplus sys/Oracle@test as sysdba
sqlplus sys/Oracle@testdg as sysdba


7.更改主库参数
alter system set log_archive_config='dg_config=(orcl,orcldg)'; --不用配置
alter system set fal_server=testdg; --不做双向可以不用配置
alter system set fal_client=test; --不做双向可以不用配置
alter system set log_archive_dest_2='service=testdg lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=testdg' scope=both;
alter system set standby_file_management=auto;
alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;
alter system set db_file_name_convert='/u01/app/oracle/oradata','+DATA' scope=spfile;
alter system set log_file_name_convert='/u01/app/oracle/oradata','+DATA' scope=spfile;



8.主库创建pfile
SQL> create pfile='/tmp/pfile.txt' from spfile='+DATA/test/spfiletest.ora';

9.将主库创建的pfile复制到备库的dbs下
[oracle@localhost ~]$ scp /tmp/pfile.txt 172.16.8.101:$ORACLE_HOME/dbs/inittestdg.ora

修改备库参数
*.audit_file_dest='/u01/app/oracle/admin/testdg/adump'   --根据本地实例名建立目录
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/testdg/control01.ctl'#Restore Controlfile   --根据本地路径配置,控制文件名自定义。不用在乎源文件名是什么。
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata/testdg'   --OMF配置
*.db_domain=''
*.db_name='test'   --一定要和主库一样否则在还原的时候会报错
*.db_unique_name='testdg'  --需要加上此参数
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
*.fal_server='test'
*.log_archive_dest_1='LOCATION=/home/oracle/arch'   --必须配置项
*.memory_target=1603272704
*.open_cursors=300
*.processes=150
*.recyclebin='OFF'
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'            --此参数需要注意
*.undo_tablespace='UNDOTBS1'

~                           
[oracle@localhost ~]$ mkdir -p /u01/app/oracle/admin/testdg/adump
[oracle@localhost ~]$ mkdir -p /u01/app/oracle/oradata
[oracle@localhost ~]$ mkdir -p /home/oracle/arch

10.备库启动到nomount状态
[oracle@localhost dbs]$ export ORACLE_SID=testdg


11.主库备份
rman target=/
run{
 allocate channel ch1 type disk;
 allocate channel ch2 type disk;
 allocate channel ch3 type disk;
 CROSSCHECK BACKUP;
 CROSSCHECK ARCHIVELOG ALL;
 DELETE NOPROMPT OBSOLETE;
 DELETE NOPROMPT EXPIRED BACKUP;
 DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
 backup as compressed backupset  database format '/home/oracle/back/DB_%d_%T_%s.rman' SKIP INACCESSIBLE PLUS ARCHIVELOG format '/home/oracle/back/ARC_%d_%T_%e.rman';
 release channel ch1;
 release channel ch2;
 release channel ch3;
}

12.主库创建备库控制文件
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/back/testdg.ctl';
--此操作在数据库里面执行,不在rman

13.将备份的文件拷贝到备库
[oracle@localhost ~]$ scp /home/oracle/back 172.16.8.101:/home/oracle/back

14.备库还原
14.1 备库还原控制文件
RESTORE STANDBY CONTROLFILE FROM '/home/oracle/back/testdg.ctl';
alter database mount;
-- RAMAN里面执行,注意在此步骤备库alert日志会有报错,报错的内容为主库的联机日志路径和备库不同。但是可以启动到mount。先不用管还原操作执行完成之后在启动就不会有这个报错了。

14.2 还原数据库
restore database;


15.备库修改联机日志和standby log
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
 alter database add standby logfile group 4 size 50m;
 alter database add standby logfile group 5 size 50m;
 alter database add standby logfile group 6 size 50m;
 alter database add standby logfile group 7 size 50m;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
 SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                  IS_
---------- ------- ------- -----------------------------------------
     3       ONLINE  +DATA/test/onlinelog/group_3.263.1079743149                
     2       ONLINE  +DATA/test/onlinelog/group_2.262.1079743145                
     1       ONLINE  +DATA/test/onlinelog/group_1.261.1079743141                
     4       STANDBY +DATA/test/onlinelog/group_4.270.1080060905                
     5       STANDBY +DATA/test/onlinelog/group_5.271.1080060921                
     6       STANDBY +DATA/test/onlinelog/group_6.272.1080060937                
     7       STANDBY +DATA/test/onlinelog/group_7.273.1080060951    
    
    
16.开启数据库进行数据同步
recover managed standby database using current logfile disconnect from session;
recover managed standby database cancel;
alter database open;
alter database recover managed standby database using current logfile disconnect;

17.测试数据插入
完成





故障总结
1.备库需要在切归档的时候才能同步数据
原因:注意在备份之前就已经建立的standby log,在还原的时候会按照主库的日志路径还原,因备库没有相同的路径。虽然会报错但是不影响使用,直接现象为不能实时同步。
解决办法:将备库的standby log删除,重新建立问题解决。
ERROR: slave communication error with ASM
WARNING: Cannot delete Oracle managed file +DATA/test/onlinelog/group_7.273.1080060951
Errors in file /u01/app/oracle/diag/rdbms/testdg/testdg/trace/testdg_ora_32425.trc:
ORA-01265: Unable to delete LOG +DATA/test/onlinelog/group_7.273.1080060951
+DATA/test/onlinelog/group_7.273.1080060951
Completed: alter database drop standby logfile group 7
Mon Aug 09 02:37:53 2021


2.在备库做还原的时候报错
原因是在修改备库的参数文件时,修改了db_name和主库不一致导致还原报错。
解决办法:alter system set fal_server=test; 问题解决



3.alert日志中报错
原因是参数文件,修改时没有修改归档路径,只要参数文件写磁盘组,数据库就会启动asmb进程
WARNING: failed to start ASMB (ASM instance not found)
ORA-15077: could not locate ASM instance serving a required diskgroup
ORA-29701: unable to connect to Cluster Synchronization Service

4.执行16步时报错,原因是主库的日志不能传输到备库。
主库报错信息:
TNS-00511: No listener
    nt secondary err code: 111
    nt OS err code: 0
Error 12541 received logging on to the standby
Check whether the listener is up and running.
FAL[server, ARC0]: FAL archive failed, see trace file.
ARCH: FAL archive failed. Archiver continuing
ORACLE Instance test - Archival Error. Archiver continuing.

备库报错信息:
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1:
'/u01/app/oracle/oradata/TESTDG/datafile/o1_mf_system_jk0gqlfz_.dbf

解决办法:因为在中途重启过备库服务器,忘记启动备库监听导致网络异常,监听启动后在执行16步操作问题解决。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69978820/viewspace-2785874/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle 作业管理
下一篇: ORACLE 11G单机
请登录后发表评论 登录
全部评论

注册时间:2020-07-09

  • 博文量
    8
  • 访问量
    9455