oracle rac搭建单实例DG步骤(阅读全篇后再做)
环境介绍
主库:
主机名 | rac01 | rac02 |
实体IP | 10.206.132.232 | 10.206.132.233 |
私有IP | 192.168.56.12 | 192.168.56.13 |
虚拟IP | 10.206.132.237 | 10.206.132.238 |
SCAN IP | 10.206.132.239 | |
实例名 | racdb1 | racdb2 |
数据库名 | racdb | |
数据文件目录 | DGDATA01,DGDATA02(ASM磁盘) |
备库:
主机名 | dr-rac |
实体IP | 10.206.132.245 |
虚拟IP | 10.206.132.246 |
实例名 | racdb |
数据库名 | racdb |
数据文件目录 | /oradata01/racdb/,/oradata02/racdb |
数据文件目录备库和主库的ASM目录数量和大小要一致,后面会讲原因
1.安装oracle软体(和rac数据库的软体版本一致,本实验使用的是11GR2)
2.主库开启归档并打开force logging
打开force logging
SQL> alter database force logging; Database altered. SQL> select force_logging from v$database; FOR
---
YES
打开归档
关闭数据库(两个节点执行)
$ sqlplus / as sysdba
SQL> shutdown immediate;
将数据库打开至mount状态(两个节点执行)
SQL> startup mount;
修改数据库的归档模式(任一节点即可)
SQL> alter database archivelog;
修改归档路径(两个节点执行)
SQL> alter system set log_archive_dest_1='location=/archlog/racdb';
打开数据库(两个节点)
SQL> alter database open;
3.主库全备(任一节点执行)
$ rman target / run{
allocate channel c1 device type disk format '/oggdata/backup/full_%d_%T_%s_%p.bak';
allocate channel c2 device type disk format '/oggdata/backup/full_%d_%T_%s_%p.bak';
allocate channel c3 device type disk format '/oggdata/backup/full_%d_%T_%s_%p.bak';
sql 'alter system archive log current';
backup as compressed backupset database plus archivelog;
backup current controlfile;
backup spfile;
}
4.将全备文件传送至备库
$ scp * 10.206.132.245:/data/backup
6.将主库的参数文件传送至备库
SQL> create pfile='/tmp/initracdb.ora' from spfile; $ scp /tmp/initracdb.ora 10.206.132.245:/oracle/11204/dbs
根据实际的情况,RAC的参数文件和单实例的参数文件有一定的差别,所以我一般会从一个单实例数据库创建一个pfile传送过来并修改
7.修改参数文件并创建参数文件所需目录
其中以双下划线开头的是oracle自动内存管理生成的,可以直接删除,如
testdb.__db_cache_size=1862270976
testdb.__java_pool_size=16777216
testdb.__large_pool_size=33554432
testdb.__oracle_base='/oracle'#ORACLE_BASE set from environment
testdb.__pga_aggregate_target=838860800
testdb.__sga_target=2483027968
testdb.__shared_io_pool_size=0
testdb.__shared_pool_size=503316480
testdb.__streams_pool_size=33554432
其中以单下划线开头的是隐含参数,根据实际情况修改
修改SGA,PGA
修改控制文件位置
*.control_files='/oradata01/racdb/control01.ctl','/oradata01/racdb/control02.ctl'
创建目录
*.audit_file_dest='/oracle/admin/racdb/adump'
*.db_recovery_file_dest='/oracle/fast_recovery_area'
其他参数根据实际情况修改,删除或者添加
8.创建spfile并打开实例
SQL> create spfile from pfile;
SQL> startup nomount;
9.还原standby controlfile
进入主库查看controlfile的备份片
[oracle@rac01 ~]$ rman target /
RMAN> list backup of controlfile;
------------------------------------------------------------------------------------
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
26 Full 17.67M DISK 00:00:01 15-APR-20
BP Key: 26 Status: AVAILABLE Compressed: NO Tag: TAG20200415T150050
Piece Name: /oggdata/backup/full_RACDB_20200415_26_1.bak
Control File Included: Ckp SCN: 558979 Ckp time: 15-APR-20
------------------------------------------------------------------------------------
备库进入rman进行还原
[oracle@dr-rac dbs]$ rman target /
RMAN> restore standby controlfile from '/data/backup/full_RACDB_20200415_26_1.bak';
10.将数据库启动至mount状态并进行数据库还原(备库)
mount数据库
[oracle@dr-rac dbs]$ sqlplus / as sysdba
SQL> alter database mount;
此时遇到了一个问题,在RAC数据库中数据文件(包括临时表空间,在线联机日志)是在ASM磁盘内的,例如+DGDATA01等,在单实例上面是系统目录,如何对应
查看当前数据文件的状态
SQL> select name from v$datafile; NAME
--------------------------------------------------------------------------------
+DGDATA01/racdb/datafile/system.260.1037709075
+DGDATA01/racdb/datafile/sysaux.261.1037709079
+DGDATA01/racdb/datafile/undotbs1.262.1037709081
+DGDATA01/racdb/datafile/undotbs2.264.1037709089
+DGDATA01/racdb/datafile/users.265.1037709091
+DGDATA02/racdb/datafile/mytbs01.dbf SQL> select name from v$tempfile; NAME
--------------------------------------------------------------------------------
+DGDATA01/racdb/tempfile/temp.263.1037709085 SQL> select member from v$logfile; MEMBER
--------------------------------------------------------------------------------
+DGDATA01/racdb/redo01.log
+DGDATA01/racdb/redo02.log
+DGDATA01/racdb/redo03.log
+DGDATA01/racdb/redo04.log
因此我们需要在RMAN中将恢复的目录对应起来(下面的脚本根据自己实际情况进行修改)
DECLARE
dir VARCHAR2 (100); CURSOR dbfs
IS
SELECT FILE_NAME FROM DBA_DATA_FILES;
BEGIN
FOR dbf IN dbfs
LOOP
SELECT SUBSTR (dbf.FILE_NAME, 2, INSTR (dbf.FILE_NAME, '/', 1) - 2) INTO DIR FROM DUAL;
IF (DIR = 'DGDATA01') THEN
DBMS_OUTPUT.PUT_LINE('SET NEWNAME FOR DATAFILE '''||dbf.FILE_NAME||''' TO ''/oradata01'||substr(dbf.file_name,instr(dbf.file_name,'/',1),length(dbf.file_name))||''';');
ELSIF (DIR = 'DGDATA02') THEN
DBMS_OUTPUT.PUT_LINE('SET NEWNAME FOR DATAFILE '''||dbf.FILE_NAME||''' TO ''/oradata02'||substr(dbf.file_name,instr(dbf.file_name,'/',1),length(dbf.file_name))||''';');
END IF;
END LOOP;
END; ----------------------------------------------------------------------------------------------------------------------
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/system.260.1037709075' TO '/oradata01/racdb/datafile/system.260.1037709075';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/sysaux.261.1037709079' TO '/oradata01/racdb/datafile/sysaux.261.1037709079';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/undotbs1.262.1037709081' TO '/oradata01/racdb/datafile/undotbs1.262.1037709081';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/undotbs2.264.1037709089' TO '/oradata01/racdb/datafile/undotbs2.264.1037709089';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/users.265.1037709091' TO '/oradata01/racdb/datafile/users.265.1037709091';
SET NEWNAME FOR DATAFILE '+DGDATA02/racdb/datafile/mytbs01.dbf' TO '/oradata02/racdb/datafile/mytbs01.dbf';
----------------------------------------------------------------------------------------------------------------------
使用RMAN进行数据库的还原(备库),恢复之前要在对应的目录下建立子文件夹(如racdb/datafile)
[oracle@dr-rac dbs]$ rman target /
RMAN> catalog start with '/data/backup'; run {
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/system.260.1037709075' TO '/oradata01/racdb/datafile/system.260.1037709075';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/sysaux.261.1037709079' TO '/oradata01/racdb/datafile/sysaux.261.1037709079';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/undotbs1.262.1037709081' TO '/oradata01/racdb/datafile/undotbs1.262.1037709081';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/undotbs2.264.1037709089' TO '/oradata01/racdb/datafile/undotbs2.264.1037709089';
SET NEWNAME FOR DATAFILE '+DGDATA01/racdb/datafile/users.265.1037709091' TO '/oradata01/racdb/datafile/users.265.1037709091';
SET NEWNAME FOR DATAFILE '+DGDATA02/racdb/datafile/mytbs01.dbf' TO '/oradata02/racdb/datafile/mytbs01.dbf';
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
restore database;
release channel c1;
release channel c2;
release channel c3;
}
11.修改controlfile中redo和tempfile的位置,以便打开后自动创建(前提还是要创建好对应的目录,否则一会儿数据库打不开)
SQL> alter database rename file '+DGDATA01/racdb/tempfile/temp.263.1037709085' to '/oradata01/racdb/tempfile/temp.263.1037709085';
DECLARE
dir VARCHAR2 (100); CURSOR LFS
IS
SELECT MEMBER FROM v$logfile;
BEGIN
FOR LF IN LFS
LOOP
SELECT SUBSTR (LF.MEMBER, 2, INSTR (LF.MEMBER, '/', 1) - 2) INTO DIR FROM DUAL;
IF (DIR = 'DGDATA01') THEN
DBMS_OUTPUT.PUT_LINE('ALTER DATABASE RENAME FILE '''||LF.MEMBER||''' TO ''/oradata01'||substr(LF.MEMBER,instr(LF.MEMBER,'/',1),length(LF.MEMBER))||''';');
ELSIF (DIR = 'DGDATA02') THEN
DBMS_OUTPUT.PUT_LINE('ALTER DATABASE RENAME FILE '''||LF.MEMBER||''' TO ''/oradata02'||substr(LF.MEMBER,instr(LF.MEMBER,'/',1),length(LF.MEMBER))||''';');
END IF;
END LOOP;
END; -------------------------------------------------------------------------------
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/redo01.log' TO '/oradata01/racdb/redo01.log';
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/redo02.log' TO '/oradata01/racdb/redo02.log';
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/redo03.log' TO '/oradata01/racdb/redo03.log';
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/redo04.log' TO '/oradata01/racdb/redo04.log';
-------------------------------------------------------------------------------
12.打开数据库
这时候报错
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '+DGDATA01/racdb/datafile/system.260.1037709075'
这是因为控制文件中的datafile的路径没有改变,两种办法解决
第一种,修改控制文件中数据文件的路径
DECLARE
dir VARCHAR2 (100); CURSOR dbfs
IS
SELECT FILE_NAME FROM DBA_DATA_FILES;
BEGIN
FOR dbf IN dbfs
LOOP
SELECT SUBSTR (dbf.FILE_NAME, 2, INSTR (dbf.FILE_NAME, '/', 1) - 2) INTO DIR FROM DUAL;
IF (DIR = 'DGDATA01') THEN
DBMS_OUTPUT.PUT_LINE('ALTER DATABASE RENAME FILE '''||dbf.FILE_NAME||''' TO ''/oradata01'||substr(dbf.file_name,instr(dbf.file_name,'/',1),length(dbf.file_name))||''';');
ELSIF (DIR = 'DGDATA02') THEN
DBMS_OUTPUT.PUT_LINE('ALTER DATABASE RENAME FILE '''||dbf.FILE_NAME||''' TO ''/oradata02'||substr(dbf.file_name,instr(dbf.file_name,'/',1),length(dbf.file_name))||''';');
END IF;
END LOOP;
END;
-----------------------------------------------------------------------------
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/datafile/system.260.1037709075' TO '/oradata01/racdb/datafile/system.260.1037709075';
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/datafile/sysaux.261.1037709079' TO '/oradata01/racdb/datafile/sysaux.261.1037709079';
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/datafile/undotbs1.262.1037709081' TO '/oradata01/racdb/datafile/undotbs1.262.1037709081';
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/datafile/undotbs2.264.1037709089' TO '/oradata01/racdb/datafile/undotbs2.264.1037709089';
ALTER DATABASE RENAME FILE '+DGDATA01/racdb/datafile/users.265.1037709091' TO '/oradata01/racdb/datafile/users.265.1037709091';
ALTER DATABASE RENAME FILE '+DGDATA02/racdb/datafile/mytbs01.dbf' TO '/oradata02/racdb/datafile/mytbs01.dbf';
-----------------------------------------------------------------------------
第二种,在还原控制文件之前,我们在参数文件中加入如下两个参数
alter system set log_file_name_convert='+DGDATA01/racdb/','/oradata01/racdb/','+DGDATA02/racdb/','/oradata02/racdb/' scope=spfile;
alter system set db_file_name_convert='+DGDATA01/racdb/datafile/','/oradata01/racdb/datafile/','+DGDATA02/racdb/datafile/','/oradata02/racdb/datafile/' scope=spfile;
第二种还原的控制文件中datafile和logfile自动会定位到正确的目录,同时在第十步中也不需要前面NET NEWNAME,直接还原即可,因此强烈建议这两个参数在还原控制文件之前加入。
参数一定要注意,前面最后加/,后面也要加/,否则替换的时候会出错,例如'+DGDATA01/racdb/','/oradata01/racdb',会把+DGDATA01/racdb/redo01.log对应成/oradata01/racdbredo01.log
再次打开数据时,又报错了
SQL> alter database open;
alter database open
*
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: '/oradata01/racdb/datafile/system.260.1037709075'
这是因为我们没有恢复数据库,使用rman恢复数据库,有两种方法
第一种,恢复数据库(这里面的SCN也可以从RMAN的list backup of archivelog all里面看到归档的最高SCN)
恢复之前要加上这两个参数的原因可以看后面的试验
SQL> alter system set db_file_name_convert='+DGDATA01/racdb/datafile','/oradata01/racdb/datafile','+DGDATA02/racdb/datafile','/oradata02/racdb/datafile' scope=spfile;
SQL> alter system set standby_file_management=auto;
查看主库当前的SCN
SQL> select current_scn from v$database;
主库归档当前的REDO
SQL> alter system archive log current;
将主库的归档传送至备库
$ scp /archlog/readb/* 10.206.132.245:/oradata02/archlog
备库恢复
RMAN> catalog start with '/oradata02/archlog';
RMAN> recover database until scn 565400;
打开数据库
SQL> alter database open;
第二种,不用管,继续配置DG库,之后会自动将归档传过来并应用
13.配置备库的监听
从其他库copy过来一个修改即可
$ cd /oracle/11204/network/admin/
$ scp listener.ora 10.206.132.245:`pwd`
$ vi listener.ora
$ lsnrctl star
14.将主库(任一节点)的口令文件传过来
$ cd $ORACLE_HOME/dbs
$ scp orapwracdb1 10.206.132.245:/oracle/11204/dbs/orapwracdb
15.修改主库的TNS(加入自己和备库的TNS)并传送到另一个节点和备库
$ vi tnsnames.ora
-------------------------------------------------------------------------------
RACDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.206.132.239)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
) STANDBY_RACDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.206.132.245)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
-------------------------------------------------------------------------------
$ scp tnsnames.ora 10.206.132.233:/oracle/home/network/admin/
$ scp tnsnames.ora 10.206.132.245:/oracle/11204/network/admin
16.修改备库的参数
alter system set db_unique_name='standby_racdb' scope=spfile;
alter system set db_file_name_convert='+DGDATA01/racdb/datafile','/oradata01/racdb/datafile','+DGDATA02/racdb/datafile','/oradata02/racdb/datafile' scope=spfile;
alter system set log_file_name_convert='+DGDATA01/racdb/','/oradata01/racdb','+DGDATA02/racdb','/oradata02/racdb' scope=spfile;
重啟數據庫
alter system set log_archive_config='dg_config=(racdb,standby_racdb)';
alter system set log_archive_dest_1='LOCATION=/oradata02/archlog valid_for=(all_logfiles,all_roles) db_unique_name=standby_racdb';
alter system set log_archive_dest_2='service=racdb async valid_for=(online_logfiles, primary_role) db_unique_name=racdb';
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=enable;
alter system set fal_server=racdb;
alter system set fal_client=standby_racdb;
alter system set standby_file_management=auto;
alter system set log_archive_max_processes=30;
18.修改主库参数(我的参数文件时共享的,因此修改一个节点即可)
alter system set db_file_name_convert='/oradata01/racdb/datafile','+DGDATA01/racdb/datafile','/oradata02/racdb/datafile','+DGDATA02/racdb/datafile' scope=spfile;
alter system set log_file_name_convert='/oradata01/racdb','+DGDATA01/racdb/','/oradata02/racdb','+DGDATA02/racdb' scope=spfile;
重啟數據庫(根据实际业务,可以先修改,等无业务期间重启实例)
alter system set log_archive_config='dg_config=(racdb,standby_racdb)';
alter system set log_archive_dest_1='LOCATION=/archlog/racdb valid_for=(all_logfiles,all_roles) db_unique_name=racdb';
alter system set log_archive_dest_2='service=standby_racdb async valid_for=(online_logfiles, primary_role) db_unique_name=standby_racdb';
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=enable;
alter system set fal_server=standby_racdb;
alter system set fal_client=racdb;
alter system set standby_file_management=auto;
alter system set log_archive_max_processes=30;
19.打开备库的日志应用
SQL> alter database recover managed standby database disconnect;
20.新建表并插入数据测试
create table testdg(id number);
insert into testdg values (1);
commit;
#因为没有添加standby_logfile因此无法实时应用,需要切换归档
alter system archive log current;
同时发现REDO产生了,应该是修改主库参数文件后传送过来或备库应用日志的时候产生的。
tempfile是在备库打开(open)的时候产生的。
实验
主备目录不相同的情况下,如果全备之后,增加了数据文件或者修改了数据文件的大小,在恢复备库的时候,会发生什么
试验一:主库全备后,增加数据文件的大小
alter database datafile '+DGDATA02/racdb/datafile/mytbs01.dbf' resize 2g; alter system archive log current; select current_scn from v$database;
614673 alter system archive log current; $ scp 2_17_1037709071.dbf 2_18_1037709071.dbf 1_30_1037709071.dbf 1_31_1037709071.dbf 10.206.132.245:/oradata02/archlog RMAN> catalog start with '/oradata02/archlog'; SQL> shutdown immediate; SQL> startup mount; RMAN> recover database until scn 614673; # cd /oradata02/racdb/datafile
# du -sh mytbs01.dbf
----------------------------------------
2.1G mytbs01.dbf
----------------------------------------
通过上述实验,发现只要数据文件已经被还原,那么增加数据文件的大小会自动应用到对应的目录上面(感觉应该是根据的数据文件号)
实验二:主库全备后,增加数据文件
alter tablespace mytbs add datafile '+DGDATA02/racdb/datafile/mytbs02.dbf' size 1g; alter system archive log current; select current_scn from v$database;
615468 alter system archive log current; $ scp 2_19_1037709071.dbf 2_20_1037709071.dbf 1_32_1037709071.dbf 1_33_1037709071.dbf 10.206.132.245:/oradata02/archlog RMAN> catalog start with '/oradata02/archlog'; SQL> shutdown immediate; SQL> startup mount; RMAN> recover database until scn 615468; creating datafile file number=7 name=+DGDATA02/racdb/datafile/mytbs02.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/16/2020 08:24:27
RMAN-20505: create datafile during recovery
ORA-01119: error in creating database file '+DGDATA02/racdb/datafile/mytbs02.dbf'
ORA-17502: ksfdcre:3 Failed to create file +DGDATA02/racdb/datafile/mytbs02.dbf
ORA-15001: diskgroup "DGDATA02" does not exist or is not mounted
ORA-15077: could not locate ASM instance serving a required diskgroup
ORA-29701: unable to connect to Cluster Synchronization Service
RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile '/oradata02/archlog/2_19_1037709071.dbf'
ORA-00283: recovery session canceled due to errors
ORA-01274: cannot add datafile '+DGDATA02/racdb/datafile/mytbs02.dbf' - file could not be created 此時,我們加入參數
SQL> alter system set db_file_name_convert='+DGDATA01/racdb/datafile','/oradata01/racdb/datafile','+DGDATA02/racdb/datafile','/oradata02/racdb/datafile' scope=spfile;
SQL> shutdown immediate;
SQL> startup mount;
RMAN> recover database until scn 615468; Starting recover at 16-APR-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=67 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/16/2020 08:29:08
RMAN-06094: datafile 7 must be restored RMAN> restore datafile 7; Starting restore at 16-APR-20
using channel ORA_DISK_1 RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/16/2020 08:29:44
RMAN-06085: must use SET NEWNAME command to restore datafile /oracle/11204/dbs/UNNAMED00007 run{
SET NEWNAME FOR DATAFILE '/oracle/11204/dbs/UNNAMED00007' TO '/oradata02/racdb/datafile/mytbs02.dbf';
restore datafile 7;
} datafile 7 is already restored to file /oradata02/racdb/datafile/mytbs02.dbf
restore not done; all files read only, offline, or already restored
Finished restore at 16-APR-20 進入系統,發現/oradata02/racdb/datafile/mytbs02.dbf已經存在,此時,我們只需要修改數據文件即可 SQL> alter database rename file '/oracle/11204/dbs/UNNAMED00007' to '/oradata02/racdb/datafile/mytbs02.dbf'; 此時再次測試
alter tablespace mytbs add datafile '+DGDATA02/racdb/datafile/mytbs03.dbf' size 1g; alter system archive log current; select current_scn from v$database;
616851 alter system archive log current; $ scp 2_21_1037709071.dbf 2_22_1037709071.dbf 1_34_1037709071.dbf 1_35_1037709071.dbf 10.206.132.245:/oradata02/archlog RMAN> catalog start with '/oradata02/archlog'; RMAN> recover database until scn 616851; RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/16/2020 08:55:11
RMAN-20505: create datafile during recovery
ORA-01119: error in creating database file '+DGDATA02/racdb/datafile/mytbs03.dbf'
ORA-17502: ksfdcre:3 Failed to create file +DGDATA02/racdb/datafile/mytbs03.dbf
ORA-15001: diskgroup "DGDATA02" does not exist or is not mounted
ORA-15077: could not locate ASM instance serving a required diskgroup
ORA-29701: unable to connect to Cluster Synchronization Service
RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile '/oradata02/archlog/1_34_1037709071.dbf'
ORA-00283: recovery session canceled due to errors
ORA-01274: cannot add datafile '+DGDATA02/racdb/datafile/mytbs03.dbf' - file could not be created run{
SET NEWNAME FOR DATAFILE '/oracle/11204/dbs/UNNAMED00008' TO '/oradata02/racdb/datafile/mytbs03.dbf';
restore datafile 8;
} SQL> alter database rename file '/oracle/11204/dbs/UNNAMED00008' to '/oradata02/racdb/datafile/mytbs03.dbf'; RMAN> recover database until scn 616851;
通过实验发现,在主库全备后增加数据文件在恢复的时候由于目录不对应,会报错
此时决定加入另外一个参数alter system set standby_file_management=auto,看恢复的时候是否可以自动创建对应的文件
SQL> alter system set db_file_name_convert='+DGDATA01/racdb/datafile','/oradata01/racdb/datafile','+DGDATA02/racdb/datafile','/oradata02/racdb/datafile' scope=spfile;
SQL> alter system set standby_file_management=auto;
SQL> shutdown immediate;
SQL> startup mount;
RMAN> catalog start with '/oradata02/archlog';
RMAN> recover database until scn 616851;
全备是在经过试验之前的,也就是没有mytbs02.dbf,mytbs03.dbf,mytbs04.dbf,增加两个db_file_name_convert,standby_file_management参数后,恢复过程没有报错,因此这两个参数应该在恢复之前加上。
oracle rac搭建单实例DG步骤(阅读全篇后再做)的更多相关文章
- oracle rac与单实例DG切换
1.主库查看状态(RAC库) SQL> select database_role,switchover_status from v$database; DATABASE_ROLE SWITCHO ...
- Oracle - 给rac创建单实例dg,并做主从切换
一.概述 本文将介绍如何给rac搭建单节点的dg,以及如何对其进行角色转换.预先具备的知识(rac搭建,单实例-单实例dg搭建) 二.实验环境介绍 主库rac(已安装rac,并已有数据库orcl)ra ...
- Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置
Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置 [大型连续免费公开课]Oracle 18c rac+dg+13.3的em ...
- oracle 11g r2 rac到单实例的dg
oracle 11g r2 rac到单实例的dg 1 主备环境说明 rac环境--primary CentOS release 6.5 (Final)hostname rac1 rac2ip 10.* ...
- oracle 单实例DG(搭建篇一)
一,介绍 lodding... 二,安装前环境配置 01,依赖包的安装: yum install binutils-* yum install compat-libstdc++-* yum insta ...
- oracle rac切换到单实例DG后OGG的处理
在RAC切换到单实例DG后,将OGG目录复制过去,在使用alter extract ext_name,begin now的时候报错 2016-04-10 11:27:03 WARNING OGG-01 ...
- ORACLE11g R2【RAC+ASM→单实例FS】
ORACLE11g R2[RAC+ASM→单实例FS] 11g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境: primary standby OS Hostnam ...
- ORACLE10g R2【RAC+ASM→单实例FS】
ORACLE10g R2[RAC+ASM→单实例FS] 10g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境: primary standby OS Hostnam ...
- 搭建rac对单实例的MAA
一:实验环境 系统:redhat 4 三台计算机rac1,rac2,dg. --其中rac为主库,单实例为备库 已在虚拟机里搭建好集群环境(rac1,rac2); dg计算机里还没有建任何数据库(只安 ...
随机推荐
- java 系统属性设置
一.语法: java -Dproperty=value 二.注意事项: value如果有空格,需用使用双引号如:java -Dfoo="some string" 三.常见使用地方: ...
- setfacl命令的基本用法
setfacl命令的基本用法 1.setfacl的用途 setfacl命令可以用来细分linux下的文件权限. chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录 ...
- Python开发的面试准备
1.is和==的区别: is比较的是id,对象的内存地址 = =比较的是值 2.按字典中的value值进行排序 sorted(dict.items(), key = lambda x: x[1]) 3 ...
- Ubuntu虚拟机无网络连接的问题
记录一下: 通过dhcp动态分配ip地址. sudo dhclient -v 应该就能解决了.
- python函数收集不确定数量的值
python写函数的时候,有时候会不确定到底传入多少值. 首先是,*args,单星号参数收集参数: 1 #!usr/bin/python 2 #-*-coding:utf-8-*- 3 4 #定义一个 ...
- C# 委托、事件、表达式树理解
1.什么是委托? 委托是一种动态调用方法的类型,属于引用型. 委托是对方法的抽象和封装.委托对象实质上代表了方法的引用(即内存地址) 所有的异步都是委托 委托就是函数当入参 委托被各种语法糖遮 ...
- 使用Ubuntu手动安装NextCloud
p.p1 { margin: 0; font: 11px Menlo; color: rgba(0, 0, 0, 1) } span.s1 { font-variant-ligatures: no-c ...
- 记一次Apache的代码导致生产服务耗时增加
引言 二狗:二胖快醒醒,赶紧看看刚才报警邮件,你上次写的保存用户接口耗时(<二胖的参数校验坎坷之路>)大大上升,赶紧排查下原因. 二胖:好的,马上看,内心戏可十足(心里却在抱怨,大中午的搅 ...
- JAVA顺序结构和选择结构
顺序结构 JAVA的基本结构就是顺序结构,除非特别指明,否则按顺序一句一句执行 顺序结构是最简单的算法结构 语句和语句直接,框与框直接就是按从上到下的顺序执行的,它是由若干个依次执行的处理步骤组成的, ...
- 配置NFS实现nginx动静分离
案例子任务一.安装配置NFS服务器 步骤1:使用docker容器配置NFS服务器 启动centos容器并进入 docker run -d --privileged centos:v1 /usr/sbi ...