首页 > 数据库 > Oracle > RMAN备份恢复搭建ADG 11G rac-单机
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/ ,如需转载,请注明出处,否则将追究法律责任。