Networker恢复oracle单节点

Networker备份oracle单节点

http://blog.itpub.net/70004783/viewspace-2845335/


在异机恢复数据库。

此处在机器oracle203上创建一个表空间hf,创建用户hf01,并用hf01创建表格test,插入了2条数据。

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD/system01.dbf
/u01/app/oracle/oradata/PROD/sysaux01.dbf
/u01/app/oracle/oradata/PROD/undotbs01.dbf
/u01/app/oracle/oradata/PROD/pdbseed/system01.dbf
/u01/app/oracle/oradata/PROD/pdbseed/sysaux01.dbf
/u01/app/oracle/oradata/PROD/users01.dbf
/u01/app/oracle/oradata/PROD/pdbseed/undotbs01.dbf
/u01/app/oracle/oradata/PROD/pdb/system01.dbf
/u01/app/oracle/oradata/PROD/pdb/sysaux01.dbf
/u01/app/oracle/oradata/PROD/pdb/undotbs01.dbf
/u01/app/oracle/oradata/PROD/pdb/users01.dbf
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD/pdb/hf01.dbf
12 rows selected.
SQL> alter session set container = pdb;
Session altered.
SQL> desc hf01.test;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(38)
 NAME                                               VARCHAR2(10)
SQL>

现在备份一下,准备接下来的恢复实验



创建异机恢复的系统,为方便,此处我和oracle203上部署一样

但是仅仅安装数据库文件,开启监听,没有进行dbca的创建。

此处的恢复系统为oracle204,并添加客户端,添加客户端参照

http://blog.itpub.net/70004783/viewspace-2845335/


我这里添加客户端选择的是


我这里oracle没安装好,所以选择的是filesystem







oracle恢复过程

在oracle204机器上,创建最简单的c参数文件

[oracle@oracle204 dbs]$ cat initprod.ora
*.db_name='prod'
*.sga_target=1496m
[oracle@oracle204 dbs]$ pwd
/u01/app/oracle/product/19c/db_1/dbs


启动数据库到nomount状态

[oracle@oracle204 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Dec 6 10:35:18 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> startup nomount


在Networker查询最新的备份,确定rman恢复脚本。



首先从备份集恢复参数文件


依据查询的参数对应修改这一行

send 'NSR_ENV=( NSR_CLIENT= oracle203,NSR_SERVER= backserver,NSR_DATA_VOLUME_POOL= bstindex)';


RMAN> set dbid=502085259
executing command: SET DBID
RMAN> run
{
allocate channel t1 type 'SBT_TAPE';
send 'NSR_ENV=( NSR_CLIENT=oracle203,NSR_SERVER=backserver,NSR_DATA_VOLUME_POOL=bstindex)';
restore spfile from autobackup;
release channel t1;
}2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13>
using target database control file instead of recovery catalog
allocated channel: t1
channel t1: SID=178 device type=SBT_TAPE
channel t1: NMDA Oracle v19.2.1.2
sent command to channel: t1
Starting restore at 2021-12-06 10:27:05
channel t1: looking for AUTOBACKUP on day: 20211206
channel t1: AUTOBACKUP found: c-502085259-20211206-01
channel t1: restoring spfile from AUTOBACKUP c-502085259-20211206-01
channel t1: SPFILE restore from AUTOBACKUP complete
Finished restore at 2021-12-06 10:37:10
released channel: t1
RMAN> ^C


利用恢复的参数文件重启到nomount状态,准备恢复控制文件。

[oracle@oracle204 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Dec 6 10:48:11 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup nomount;
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
SQL>

报错文件夹不存在,肯定是参数文件有些文件夹文件系统还没有,则创建

[oracle@oracle204 dbs]$ strings spfileprod.ora >> test.txt
[oracle@oracle204 dbs]$ cat test.txt
prod.__data_transfer_cache_size=0
prod.__db_cache_size=2902458368
prod.__inmemory_ext_roarea=0
prod.__inmemory_ext_rwarea=0
prod.__java_pool_size=33554432
prod.__large_pool_size=16777216
prod.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
prod.__pga_aggregate_target=1275068416
prod.__sga_target=3825205248
prod.__shared_io_pool_size=134217728
prod.__shared_pool_size=721420288
prod.__streams_pool_size=0
prod.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle
/admin/prod/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/PROD/control01.ctl','/u01/app/oracle/oradata/PROD/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_name='prod'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=prodXDB)'
*.enable_pluggable_database=true
*.local_listener='LISTENER_PROD'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=1214m
*.processes=3
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=3641m
*.undo_tablespace='UNDOTBS1'
[oracle@oracle204 dbs]$

创建参数文件有,但系统里面没有的文件夹 

[oracle@oracle204 dbs]$ mkdir -p /u01/app/oracle/admin/prod/adump
[oracle@oracle204 dbs]$ mkdir -p /u01/app/oracle/oradata/PROD/


再次用新的参数文件重启系统到nomount状态,准备恢复控制文件。

SQL> startup nomount;
ORACLE instance started.
Total System Global Area 3825204656 bytes
Fixed Size                  9141680 bytes
Variable Size             771751936 bytes
Database Buffers         3036676096 bytes
Redo Buffers                7634944 bytes
SQL>



Networker查看spfile所在的备份集,其实和上面恢复spfile是同一个备份集

RMAN> set dbid=502085259
executing command: SET DBID
RMAN> run
{
allocate channel t1 type 'SBT_TAPE';
send 'NSR_ENV=( NSR_CLIENT=oracle203,NSR_SERVER=backserver,NSR_DATA_VOLUME_POOL=bstindex)';
restore controlfile from 'c-502085259-20211206-01';
release channel t1;
}2> 3> 4> 5> 6> 7>
using target database control file instead of recovery catalog
allocated channel: t1
channel t1: SID=21 device type=SBT_TAPE
channel t1: NMDA Oracle v19.2.1.2
sent command to channel: t1
Starting restore at 2021-12-06 10:58:58
channel t1: restoring control file
channel t1: restore complete, elapsed time: 00:10:15
output file name=/u01/app/oracle/oradata/PROD/control01.ctl
output file name=/u01/app/oracle/oradata/PROD/control02.ctl
Finished restore at 2021-12-06 11:09:14
released channel: t1
RMAN>


启动数据库到mount状态,restore数据文件。

RMAN> alter database mount;
Statement processed
RMAN> run
{
allocate channel t1 type 'SBT_TAPE';
send 'NSR_ENV=( NSR_CLIENT=oracle203,NSR_SERVER=backserver,NSR_DATA_VOLUME_POOL=bstindex)';
restore database;
release channel t1;
}2> 3> 4> 5> 6> 7>
allocated channel: t1
channel t1: SID=258 device type=SBT_TAPE
channel t1: NMDA Oracle v19.2.1.2
sent command to channel: t1
Starting restore at 2021-12-06 11:15:53
channel t1: starting datafile backup set restore
channel t1: specifying datafile(s) to restore from backup set
channel t1: restoring datafile 00001 to /u01/app/oracle/oradata/PROD/system01.dbf
channel t1: restoring datafile 00003 to /u01/app/oracle/oradata/PROD/sysaux01.dbf
channel t1: restoring datafile 00004 to /u01/app/oracle/oradata/PROD/undotbs01.dbf
channel t1: restoring datafile 00007 to /u01/app/oracle/oradata/PROD/users01.dbf
channel t1: reading from backup piece PROD_190g1kk1_1_1
channel t1: piece handle=PROD_190g1kk1_1_1 tag=TAG20211206T085529
channel t1: restored backup piece 1
channel t1: restore complete, elapsed time: 00:10:25
channel t1: starting datafile backup set restore
channel t1: specifying datafile(s) to restore from backup set
channel t1: restoring datafile 00009 to /u01/app/oracle/oradata/PROD/pdb/system01.dbf
channel t1: restoring datafile 00010 to /u01/app/oracle/oradata/PROD/pdb/sysaux01.dbf
channel t1: restoring datafile 00011 to /u01/app/oracle/oradata/PROD/pdb/undotbs01.dbf
channel t1: restoring datafile 00012 to /u01/app/oracle/oradata/PROD/pdb/users01.dbf
channel t1: restoring datafile 00013 to /u01/app/oracle/oradata/PROD/pdb/hf01.dbf
channel t1: reading from backup piece PROD_1a0g1l78_1_1
channel t1: piece handle=PROD_1a0g1l78_1_1 tag=TAG20211206T085529
channel t1: restored backup piece 1
channel t1: restore complete, elapsed time: 00:10:15
channel t1: starting datafile backup set restore
channel t1: specifying datafile(s) to restore from backup set
channel t1: restoring datafile 00005 to /u01/app/oracle/oradata/PROD/pdbseed/system01.dbf
channel t1: restoring datafile 00006 to /u01/app/oracle/oradata/PROD/pdbseed/sysaux01.dbf
channel t1: restoring datafile 00008 to /u01/app/oracle/oradata/PROD/pdbseed/undotbs01.dbf
channel t1: reading from backup piece PROD_1b0g1lqf_1_1
channel t1: piece handle=PROD_1b0g1lqf_1_1 tag=TAG20211206T085529
channel t1: restored backup piece 1
channel t1: restore complete, elapsed time: 00:10:15
Finished restore at 2021-12-06 11:46:48
released channel: t1
RMAN>


recover数据库

RMAN> run
{
allocate channel t1 type 'SBT_TAPE';
send 'NSR_ENV=( NSR_CLIENT=oracle203,NSR_SERVER=backserver,NSR_DATA_VOLUME_POOL=bstindex)';
recover database;
release channel t1;
}2> 3> 4> 5> 6> 7>
allocated channel: t1
channel t1: SID=258 device type=SBT_TAPE
channel t1: NMDA Oracle v19.2.1.2
sent command to channel: t1
Starting recover at 2021-12-06 11:52:27
starting media recovery
channel t1: starting archived log restore to default destination
channel t1: restoring archived log
archived log thread=1 sequence=18
channel t1: reading from backup piece PROD_1d0g1n0b_1_1
channel t1: piece handle=PROD_1d0g1n0b_1_1 tag=TAG20211206T093611
channel t1: restored backup piece 1
channel t1: restore complete, elapsed time: 00:10:15
archived log file name=/u01/app/oracle/product/19c/db_1/dbs/arch1_18_1090421175.dbf thread=1 sequence=18
unable to find archived log
archived log thread=1 sequence=19
released channel: t1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/06/2021 12:02:46
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 19 and starting SCN of 2648001
RMAN>


这是因为Oracle不会自动截断日志,会不断要求找下一个归档日志,因此需要在RMAN脚本中指定截断  

根据报错提示,在recover脚本中添加until sequence 19,再次使用RMAN脚本recover数据库

RMAN> run
{
allocate channel t1 type 'SBT_TAPE';
send 'NSR_ENV=( NSR_CLIENT=oracle203,NSR_SERVER=backserver,NSR_DATA_VOLUME_POOL=bstindex)';
recover database until sequence 19 ;
release channel t1;
}2> 3> 4> 5> 6> 7>
allocated channel: t1
channel t1: SID=258 device type=SBT_TAPE
channel t1: NMDA Oracle v19.2.1.2
sent command to channel: t1
Starting recover at 2021-12-06 12:05:29
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 2021-12-06 12:05:30
released channel: t1
RMAN>


recover成功后,打开数据库,并resetlogs

RMAN> alter database open resetlogs;
Statement processed
RMAN>


查询备份的数据,看是否正确。


请使用浏览器的分享功能分享到微信等