1 基本环境
1.1 源端
操作系统版本:Red Hat Enterprise Linux Server release 5.8 (Tikanga)
操作系统内核版本:Linux oradba 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
数据库版本:Oracle Database Enterprise for linux 64bit(10.2.0.5.0)
Oracle基础目录:ORACLE_BASE=/app/oracle
集群件宿主目录:ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
数据库宿主目录:ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db
1.2 目标端
操作系统版本:Red Hat Enterprise Linux Server release 5.8 (Tikanga)
操作系统内核版本:Linux oradba 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
数据库版本:Oracle Database Enterprise for linux 64bit(10.2.0.5.0)
Oracle基础目录:ORACLE_BASE=/app/oracle
数据库宿主目录:ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db
2 源端数据库结构
2.1 数据库名称
SQL> select name from v$database;
NAME
---------------------------------------------
TCCM
2.2 日志模式
SQL> select log_mode from v$database;
LOG_MODE
------------------------
ARCHIVELOG
2.3 参数文件
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +ARC/tccm/spfiletccm.ora
2.4 控制文件
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DATA/tccm/controlfile/current.256.852041897
+ARC/tccm/controlfile/current.256.852041897
2.5 重做日志
THREAD# GROUP# MEMBER SIZES
---------- ---------- --------------------------------------------- ----------
1 1 +DATA/tccm/onlinelog/group_1.257.852044107 300
1 2 +ARC/tccm/onlinelog/group_2.258.852044055 300
1 2 +DATA/tccm/onlinelog/group_2.258.852044055 300
1 3 +ARC/tccm/onlinelog/group_3.260.852044009 300
1 3 +DATA/tccm/onlinelog/group_3.266.852044007 300
1 1 +ARC/tccm/onlinelog/group_1.257.852044109 300
2 6 +DATA/tccm/onlinelog/group_6.268.852043729 300
2 5 +ARC/tccm/onlinelog/group_5.262.852043681 300
2 5 +DATA/tccm/onlinelog/group_5.267.852043681 300
2 6 +ARC/tccm/onlinelog/group_6.263.852043729 300
2 4 +DATA/tccm/onlinelog/group_4.265.852043983 300
THREAD# GROUP# MEMBER SIZES
---------- ---------- --------------------------------------------- ----------
2 4 +ARC/tccm/onlinelog/group_4.259.852043985 300
2.6 数据文件
FILE# NAME
---------- ---------------------------------------------
1 +DATA/tccm/datafile/system.259.852041899
2 +DATA/tccm/datafile/undotbs1.260.852041903
3 +DATA/tccm/datafile/sysaux.261.852041905
4 +DATA/tccm/datafile/undotbs2.263.852041907
5 +DATA/tccm/datafile/users.264.852041909
6 +DATA/tccm/datafile/test.269.852046259
7 +DATA/tccm/datafile/kts_kd_com_dx.dbf
8 +DATA/tccm/datafile/kts_kd_sale_dx.dbf
9 +DATA/tccm/datafile/kts_kd_his_dx.dbf
10 +DATA/tccm/datafile/kts_kd_bank_dx.dbf
11 +DATA/tccm/datafile/kts_fsms.dbf
FILE# NAME
---------- ---------------------------------------------
12 +DATA/tccm/datafile/kts_fsms_his.dbf
13 +DATA/tccm/datafile/kfcs.dbf
14 +DATA/tccm/datafile/dgtest.277.883135239
2.7 临时文件
SQL> select file#,name from v$tempfile;
FILE# NAME
---------- ---------------------------------------------
1 +DATA/tccm/tempfile/temp.262.852046113
2.8 归档参数情况
SQL> select inst_id,name,value from gv$parameter where name like 'log_archive_dest_%' and value!='enable' and value is not null;
INST_ID NAME VALUE
---------- ------------------------------ -----------------------------------
1 log_archive_dest_1 location=+ARC
2 log_archive_dest_1 location=+ARC
2.9 诊断文件的位置
SQL> select name,value from v$parameter where name like '%dest';
NAME VALUE
-------------------- ---------------------------------------------
background_dump_dest /app/oracle/admin/tccm/bdump
user_dump_dest /app/oracle/admin/tccm/udump
core_dump_dest /app/oracle/admin/tccm/cdump
audit_file_dest /app/oracle/admin/tccm/adump
3 源数据库备份
3.1 备份脚本
run
{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
crosscheck backup;
crosscheck archivelog all;
backup full database format '/oraback/rman/TCZB_%t_%d_%I_%s.db';
sql 'alter system switch logfile';
sql 'alter system checkpoint';
backup archivelog all format '/oraback/rman/TCZB_%t_%d_%I_%s.arc';
backup current controlfile format '/oraback/rman/TCZB_%t_%d_%I_%s.ctl';
backup spfile format '/oraback/rman/TCZB_%t_%d_%I_%s_%p.spfile';
delete noprompt obsolete;
delete noprompt expired backup;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
3.2 生成的备份集
TCZB_883218978_TCCM_1582065125_745.db
TCZB_883218978_TCCM_1582065125_746.db
TCZB_883218978_TCCM_1582065125_747.db
TCZB_883218978_TCCM_1582065125_748.db
TCZB_883218993_TCCM_1582065125_749.db
TCZB_883218994_TCCM_1582065125_750.db
TCZB_883219002_TCCM_1582065125_751.arc
TCZB_883219002_TCCM_1582065125_752.arc
TCZB_883219002_TCCM_1582065125_753.arc
TCZB_883219002_TCCM_1582065125_754.arc
TCZB_883219038_TCCM_1582065125_755.arc
TCZB_883219042_TCCM_1582065125_756.ctl
TCZB_883219043_TCCM_1582065125_757_1.spfile
4 目标数据库的准备工作
4.1 创建相关目录
4.1.1 创建数据文件目录
4.1.1.1 创建数据库目录
SQL> alter diskgroup data add directory '+DATA/TCCM';
Diskgroup altered.
4.1.1.2 创建归档日志目录
SQL> alter diskgroup data add directory '+DATA/TCCM/ARCHIVELOG';
Diskgroup altered.
4.1.1.3 创建控制文件目录
SQL> alter diskgroup data add directory '+DATA/TCCM/CONTROLFILE';
Diskgroup altered.
4.1.1.4 创建数据文件目录
SQL> alter diskgroup data add directory '+DATA/TCCM/DATAFILE';
Diskgroup altered.
4.1.1.5 创建REDO日志目录
SQL> alter diskgroup data add directory '+DATA/TCCM/ONLINELOG';
Diskgroup altered.
4.1.1.6 创建参数文件目录
SQL> alter diskgroup data add directory '+DATA/TCCM/PARAMETERFILE';
Diskgroup altered.
4.1.1.7 创建临时文件目录
SQL> alter diskgroup data add directory '+DATA/TCCM/TEMPFILE';
Diskgroup altered.
4.1.1.8 其他ASM磁盘组的处理
SQL> alter diskgroup arc add directory '+ARC/TCCM';
Diskgroup altered.
SQL> alter diskgroup arc add directory '+ARC/TCCM/ARCHIVELOG';
Diskgroup altered.
SQL> alter diskgroup arc add directory '+ARC/TCCM/CONTROLFILE';
Diskgroup altered.
SQL> alter diskgroup arc add directory '+ARC/TCCM/DATAFILE';
Diskgroup altered.
SQL> alter diskgroup arc add directory '+ARC/TCCM/ONLINELOG';
Diskgroup altered.
SQL> alter diskgroup arc add directory '+ARC/TCCM/PARAMETERFILE';
Diskgroup altered.
SQL> alter diskgroup arc add directory '+arc/TCCM/TEMPFILE';
Diskgroup altered.
4.1.2 创建诊断文件的位置
mkdir -p /app/oracle/admin/tccm/bdump
mkdir -p /app/oracle/admin/tccm/udump
mkdir -p /app/oracle/admin/tccm/cdump
mkdir -p /app/oracle/admin/tccm/adump
4.2 复制备份集
复制源数据库位于/oraback/rman目录下的备份集到目标库的/home/oracle/oraback目录下
备份集文件的名称为:
TCZB_883218978_TCCM_1582065125_745.db
TCZB_883218978_TCCM_1582065125_746.db
TCZB_883218978_TCCM_1582065125_747.db
TCZB_883218978_TCCM_1582065125_748.db
TCZB_883218993_TCCM_1582065125_749.db
TCZB_883218994_TCCM_1582065125_750.db
TCZB_883219002_TCCM_1582065125_751.arc
TCZB_883219002_TCCM_1582065125_752.arc
TCZB_883219002_TCCM_1582065125_753.arc
TCZB_883219002_TCCM_1582065125_754.arc
TCZB_883219038_TCCM_1582065125_755.arc
TCZB_883219042_TCCM_1582065125_756.ctl
TCZB_883219043_TCCM_1582065125_757_1.spfile
由于有标记能够明显的区分出哪个是什么类型的文件。
5 恢复过程
5.1 目标数据库创建密码文件
$ORACLE_HOME/dbs/$ orapwd file=orapwetax password=oracle entries=2
5.2 恢复参数文件
全损坏恢复中的参数文件恢复非常重要,只有参数文件恢复成功,才能恢复控制文件和数据文件
5.2.1 DBID的发现
查看备份集
TCZB_883218978_TCCM_1582065125_745.db
TCZB_883218978_TCCM_1582065125_746.db
TCZB_883218978_TCCM_1582065125_747.db
TCZB_883218978_TCCM_1582065125_748.db
TCZB_883218993_TCCM_1582065125_749.db
TCZB_883218994_TCCM_1582065125_750.db
TCZB_883219002_TCCM_1582065125_751.arc
TCZB_883219002_TCCM_1582065125_752.arc
TCZB_883219002_TCCM_1582065125_753.arc
TCZB_883219002_TCCM_1582065125_754.arc
TCZB_883219038_TCCM_1582065125_755.arc
TCZB_883219042_TCCM_1582065125_756.ctl
TCZB_883219043_TCCM_1582065125_757_1.spfile
注意在全部都损坏的情况下要恢复数据库,必须要有dbid,我们在备份脚本中的%I的参数指定的就是为dbid,我们看这里的dbid为1582065125
5.2.2 设定ORACLE_SID
$export ORA_RMAN_SGA_TARGET=350
$ export ORACLE_SID=tccm
$ rman target / nocatalog
Recovery Manager: Release 10.2.0.5.0 - Production on Mon Jun 1 15:52:43 2015
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database (not started)
5.2.3 将数据库启动到nomount状态
RMAN> startup nomount
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/app/oracle/product/10.2.0/db/dbs/inittccm.ora'
starting Oracle instance without parameter file for retrival of spfile
Oracle instance started
Total System Global Area 369098752 bytes
Fixed Size 2096312 bytes
Variable Size 109052744 bytes
Database Buffers 247463936 bytes
Redo Buffers 10485760 bytes
5.2.4 设定数据库DBID
RMAN> set dbid=1582065125
executing command: SET DBID
5.2.5 使用spfile文件的备份创建出pfile
由于我们的源环境是RAC环境,所以这里要先创建出pfile文件然后修改部分参数。
RMAN> restore spfile to pfile '$ORACLE_HOME/dbs/inittccm.ora' from '/home/oracle/oraback/TCZB_883219043_TCCM_1582065125_757_1.spfile';
Starting restore at 24-JUN-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=34 devtype=DISK
channel ORA_DISK_1: autobackup found: /home/oracle/oraback/TCZB_883219043_TCCM_1582065125_757_1.spfile
channel ORA_DISK_1: SPFILE restore from autobackup complete
Finished restore at 24-JUN-15
RMAN> shutdown immediate
Oracle instance shut down
RMAN> quit
Recovery Manager complete.
5.2.6 查看生成的文件
drwxr-x--- 2 oracle oinstall 4096 Jun 24 20:13 .
drwxr-x--- 61 oracle oinstall 4096 Jun 24 17:16 ..
-rw-rw---- 1 oracle oinstall 1179 Jun 24 19:53 ab_+ASM.dat
-rw-r----- 1 oracle oinstall 1057 Jun 24 20:13 alert_tccm.log
-rw-rw---- 1 oracle oinstall 1544 Jun 24 19:53 hc_+ASM.dat
-rw-rw---- 1 oracle oinstall 1544 Jun 24 20:13 hc_tccm.dat
-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r----- 1 oracle oinstall 8385 Jun 24 19:56 init.ora
-rw-r--r-- 1 oracle oinstall 1540 Jun 24 20:12 inittccm.ora
-rw-rw---- 1 oracle oinstall 24 Jun 24 17:17 lk+ASM
-rw-r----- 1 oracle oinstall 1536 Jun 24 17:17 orapw+ASM
-rw-r----- 1 oracle oinstall 1536 Jun 24 19:07 orapwtccm
-rw-r----- 1 oracle oinstall 1536 Jun 24 17:18 spfile+ASM.ora
5.2.7 修改文件的部分参数
5.2.7.1 源文件
tccm1.__db_cache_size=7230980096 //与下一行合并tccm.__db_cache_size=7230980096
tccm2.__db_cache_size=8120172544
tccm1.__java_pool_size=16777216 //与下一行合并tccm.__java_pool_size=16777216
tccm2.__java_pool_size=16777216
tccm1.__large_pool_size=16777216 //与下一行合并tccm.__large_pool_size=16777216
tccm2.__large_pool_size=16777216
tccm1.__shared_pool_size=2348810240 //与下一行合并tccm.__shared_pool_size=2348810240
tccm2.__shared_pool_size=1459617792
tccm1.__streams_pool_size=33554432 //与下一行合并tccm.__streams_pool_size=33554432
tccm2.__streams_pool_size=33554432
*.audit_file_dest='/app/oracle/admin/tccm/adump'
*.background_dump_dest='/app/oracle/admin/tccm/bdump'
*.cluster_database_instances=2 //删除
*.cluster_database=TRUE //更改为*.cluster_database=false
*.compatible='10.2.0.5.0'
*.control_files='+DATA/tccm/controlfile/control01.ctl','+ARC/tccm/controlfile/control02.ctl'
*.core_dump_dest='/app/oracle/admin/tccm/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='tccm'
*.db_recovery_file_dest='+ARC'
*.db_recovery_file_dest_size=32212254720
*.dispatchers='(PROTOCOL=TCP) (SERVICE=tccmXDB)'
tccm1.instance_number=1 //删除
tccm2.instance_number=2 //删除
*.job_queue_processes=10
tccm1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.183)(PORT=1521))' //删除
tccm2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.184)(PORT=1521))' //删除
*.log_archive_dest_1='location=+ARC'
*.open_cursors=300
*.pga_aggregate_target=1667235840
*.processes=600
*.remote_listener='LISTENERS_TCCM' //删除
*.remote_login_passwordfile='exclusive'
*.sessions=170
*.sga_target=9663676416
tccm2.thread=2 //删除
tccm1.thread=1 //删除
*.undo_management='AUTO'
tccm1.undo_tablespace='UNDOTBS1' //与下一行合并*.undo_tablespace='UNDOTBS1'
tccm2.undo_tablespace='UNDOTBS2' //删除
*.user_dump_dest='/app/oracle/admin/tccm/udump'
5.2.7.2 修改后的文件
*.__db_cache_size=7230980096
*.__java_pool_size=16777216
*.__large_pool_size=16777216
*.__shared_pool_size=2348810240
*.__streams_pool_size=33554432
*.audit_file_dest='/app/oracle/admin/tccm/adump'
*.background_dump_dest='/app/oracle/admin/tccm/bdump'
*.cluster_database=false
*.compatible='10.2.0.5.0'
*.control_files='+DATA/tccm/controlfile/control01.ctl','+ARC/tccm/controlfile/control02.ctl'
*.core_dump_dest='/app/oracle/admin/tccm/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='tccm'
*.db_recovery_file_dest='+ARC'
*.db_recovery_file_dest_size=32212254720
*.dispatchers='(PROTOCOL=TCP) (SERVICE=tccmXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=+ARC'
*.open_cursors=300
*.pga_aggregate_target=1667235840
*.processes=600
*.remote_login_passwordfile='exclusive'
*.sessions=170
*.sga_target=9663676416
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/app/oracle/admin/tccm/udump'
5.2.8 启动数据库到nomount状态
$export ORACLE_SID=tccm
$sqlplus /nolog
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Jun 24 20:29:12 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup pfile='$ORACLE_HOME/dbs/inittccm.ora' nomount;
ORACLE instance started.
Total System Global Area 9663676416 bytes
Fixed Size 2112048 bytes
Variable Size 2415920592 bytes
Database Buffers 7230980096 bytes
Redo Buffers 14663680 bytes
5.2.9 生成spfile文件
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 9663676416 bytes
Fixed Size 2112048 bytes
Variable Size 2415920592 bytes
Database Buffers 7230980096 bytes
Redo Buffers 14663680 bytes
SQL> show parameter spfile
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
/app/oracle/product/10.2.0/db/
dbs/spfiletccm.ora
5.3 恢复控制文件
5.3.1 数据库启动到nomount状态
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2096632 bytes
Variable Size 385876488 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14680064 bytes
5.3.2 恢复控制文件
在上一节中我们已经指定了控制文件的参数为
*.control_files='+DATA/tccm/controlfile/control01.ctl','+ARC/tccm/controlfile/control02.ctl'
$rman target / nocatalog
Recovery Manager: Release 10.2.0.5.0 - Production on Wed Jun 24 20:31:52 2015
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: tccm (not mounted)
using target database control file instead of recovery catalog
RMAN> restore controlfile from '/home/oracle/oraback/TCZB_883219042_TCCM_1582065125_756.ctl';
Starting restore at 24-JUN-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=649 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:09
output filename=+DATA/tccm/controlfile/control01.ctl
output filename=+ARC/tccm/controlfile/control02.ctl
Finished restore at 24-JUN-15
5.3.3 将数据库启动到mount状态
RMAN> startup mount;
database is already started
database mounted
released channel: ORA_DISK_1
5.3.4 查看控制文件中记载的各物理组件的位置
5.3.4.1 参数文件
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /app/oracle/product/10.2.0/db/
dbs/spfiletccm.ora
5.3.4.2 数据文件
SQL> select file#,name from v$datafile;
FILE# NAME
---------- ---------------------------------------------
1 +DATA/tccm/datafile/system.259.852041899
2 +DATA/tccm/datafile/undotbs1.260.852041903
3 +DATA/tccm/datafile/sysaux.261.852041905
4 +DATA/tccm/datafile/undotbs2.263.852041907
5 +DATA/tccm/datafile/users.264.852041909
6 +DATA/tccm/datafile/test.269.852046259
7 +DATA/tccm/datafile/kts_kd_com_dx.dbf
8 +DATA/tccm/datafile/kts_kd_sale_dx.dbf
9 +DATA/tccm/datafile/kts_kd_his_dx.dbf
10 +DATA/tccm/datafile/kts_kd_bank_dx.dbf
11 +DATA/tccm/datafile/kts_fsms.dbf
FILE# NAME
---------- ---------------------------------------------
12 +DATA/tccm/datafile/kts_fsms_his.dbf
13 +DATA/tccm/datafile/kfcs.dbf
14 +DATA/tccm/datafile/dgtest.277.883135239
5.3.4.3 临时文件
SQL> select file#,name from v$tempfile;
FILE# NAME
---------- ---------------------------------------------
1 +DATA1/etax/tempfile/temp.276.880987427
5.3.4.4 控制文件
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DATA/tccm/controlfile/control01.ctl
+ARC/tccm/controlfile/control02.ctl
5.3.4.5 重做日志
THREAD# GROUP# MEMBER SIZES
---------- ---------- --------------------------------------------- ----------
1 1 +DATA/tccm/onlinelog/group_1.257.852044107 300
1 2 +ARC/tccm/onlinelog/group_2.258.852044055 300
1 2 +DATA/tccm/onlinelog/group_2.258.852044055 300
1 3 +ARC/tccm/onlinelog/group_3.260.852044009 300
1 3 +DATA/tccm/onlinelog/group_3.266.852044007 300
1 1 +ARC/tccm/onlinelog/group_1.257.852044109 300
2 6 +DATA/tccm/onlinelog/group_6.268.852043729 300
2 5 +ARC/tccm/onlinelog/group_5.262.852043681 300
2 5 +DATA/tccm/onlinelog/group_5.267.852043681 300
2 6 +ARC/tccm/onlinelog/group_6.263.852043729 300
2 4 +DATA/tccm/onlinelog/group_4.265.852043983 300
THREAD# GROUP# MEMBER SIZES
---------- ---------- --------------------------------------------- ----------
2 4 +ARC/tccm/onlinelog/group_4.259.852043985 300
几个物理组件除了控制文件和参数文件之外,datafile,tempfile,redofile位置均在原位置,目标环境与生产环境相同,所以不用做rename更改
5.4 恢复数据文件
5.4.1 将数据库启动到mount状态
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2096632 bytes
Variable Size 385876488 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14680064 bytes
Database mounted.
SQL> quit
5.4.2 进入RMAN
5.4.2.1 查看数据库的结构
RMAN> report schema;
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 0 SYSTEM *** +DATA/tccm/datafile/system.259.852041899
2 0 UNDOTBS1 *** +DATA/tccm/datafile/undotbs1.260.852041903
3 0 SYSAUX *** +DATA/tccm/datafile/sysaux.261.852041905
4 0 UNDOTBS2 *** +DATA/tccm/datafile/undotbs2.263.852041907
5 0 USERS *** +DATA/tccm/datafile/users.264.852041909
6 0 TEST *** +DATA/tccm/datafile/test.269.852046259
7 0 KTS_KD_COM_DX *** +DATA/tccm/datafile/kts_kd_com_dx.dbf
8 0 KTS_KD_SALE_DX *** +DATA/tccm/datafile/kts_kd_sale_dx.dbf
9 0 KTS_KD_HIS_DX *** +DATA/tccm/datafile/kts_kd_his_dx.dbf
10 0 KTS_KD_BANK_DX *** +DATA/tccm/datafile/kts_kd_bank_dx.dbf
11 0 KTS_FSMS *** +DATA/tccm/datafile/kts_fsms.dbf
12 0 KTS_FSMS_HIS *** +DATA/tccm/datafile/kts_fsms_his.dbf
13 0 KFCS *** +DATA/tccm/datafile/kfcs.dbf
14 0 DGTEST *** +DATA/tccm/datafile/dgtest.277.883135239
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 0 TEMP 0 +DATA/tccm/tempfile/temp.262.852046113
5.4.2.2 查看备份集的情况
RMAN> list backup of database;
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
745 Full 22.80M DISK 00:00:10 24-JUN-15
BP Key: 745 Status: EXPIRED Compressed: NO Tag: TAG20150624T103618
Piece Name: /oraback/rman/TCZB_883218978_TCCM_1582065125_746.db
List of Datafiles in backup set 745
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
7 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kts_kd_com_dx.dbf
9 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kts_kd_his_dx.dbf
12 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kts_fsms_his.dbf
13 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kfcs.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
746 Full 736.00K DISK 00:00:10 24-JUN-15
BP Key: 746 Status: EXPIRED Compressed: NO Tag: TAG20150624T103618
Piece Name: /oraback/rman/TCZB_883218978_TCCM_1582065125_745.db
List of Datafiles in backup set 746
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
5 Full 29421203 24-JUN-15 +DATA/tccm/datafile/users.264.852041909
6 Full 29421203 24-JUN-15 +DATA/tccm/datafile/test.269.852046259
我们看到备份集的位置均在/oraback/rman目录下,但我们真实的备份集是在/home/oracle/oraback目录下,所以现在的备份集记录均无效,需要验证备份集后,将失效备份集清除,然后将新的备份集位置注册到控制文件中。
5.4.2.2.1 验证备份集
RMAN> crosscheck backup;
5.4.2.2.2 清除无用备份集RMAN> delete noprompt expired backup;
5.4.2.2.3 查看备份集RMAN> list backup;
5.4.2.2.4 注册新位置的备份集目标机的备份集复制到了/home/oracle/oraback/目录下,将这个目录注册到控制文件的记录中。
RMAN> catalog start with '/home/oracle/oraback/';
searching for all files that match the pattern /home/oracle/oraback/
List of Files Unknown to the Database
=====================================
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_754.arc
File Name: /home/oracle/oraback/TCZB_883219043_TCCM_1582065125_757_1.spfile
File Name: /home/oracle/oraback/TCZB_883219042_TCCM_1582065125_756.ctl
File Name: /home/oracle/oraback/TCZB_883218994_TCCM_1582065125_750.db
File Name: /home/oracle/oraback/TCZB_883218993_TCCM_1582065125_749.db
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_745.db
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_753.arc
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_748.db
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_751.arc
File Name: /home/oracle/oraback/TCZB_883219038_TCCM_1582065125_755.arc
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_746.db
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_752.arc
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_747.db
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_754.arc
File Name: /home/oracle/oraback/TCZB_883219043_TCCM_1582065125_757_1.spfile
File Name: /home/oracle/oraback/TCZB_883219042_TCCM_1582065125_756.ctl
File Name: /home/oracle/oraback/TCZB_883218994_TCCM_1582065125_750.db
File Name: /home/oracle/oraback/TCZB_883218993_TCCM_1582065125_749.db
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_745.db
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_753.arc
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_748.db
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_751.arc
File Name: /home/oracle/oraback/TCZB_883219038_TCCM_1582065125_755.arc
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_746.db
File Name: /home/oracle/oraback/TCZB_883219002_TCCM_1582065125_752.arc
File Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_747.db
5.4.2.2.5 查看备份集情况
RMAN> list backup;
745 Full 22.80M DISK 00:00:10 24-JUN-15
BP Key: 764 Status: AVAILABLE Compressed: NO Tag: TAG20150624T103618
Piece Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_746.db
List of Datafiles in backup set 745
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
7 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kts_kd_com_dx.dbf
9 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kts_kd_his_dx.dbf
12 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kts_fsms_his.dbf
13 Full 29421204 24-JUN-15 +DATA/tccm/datafile/kfcs.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
746 Full 736.00K DISK 00:00:10 24-JUN-15
BP Key: 759 Status: AVAILABLE Compressed: NO Tag: TAG20150624T103618
Piece Name: /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_745.db
List of Datafiles in backup set 746
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
5 Full 29421203 24-JUN-15 +DATA/tccm/datafile/users.264.852041909
6 Full 29421203 24-JUN-15 +DATA/tccm/datafile/test.269.852046259
通过注册后看到备份集的位置是正确的了,现在可以使用备份集了。
5.4.3 转储数据文件
在转储数据文件时直接更换文件的位置,并转储数据文件。
RMAN> restore database;
Starting restore at 24-JUN-15
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to +DATA/tccm/datafile/undotbs1.260.852041903
restoring datafile 00008 to +DATA/tccm/datafile/kts_kd_sale_dx.dbf
restoring datafile 00010 to +DATA/tccm/datafile/kts_kd_bank_dx.dbf
restoring datafile 00014 to +DATA/tccm/datafile/dgtest.277.883135239
channel ORA_DISK_1: reading from backup piece /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_747.db
channel ORA_DISK_1: restored backup piece 1
piece handle=/home/oracle/oraback/TCZB_883218978_TCCM_1582065125_747.db tag=TAG20150624T103618
channel ORA_DISK_1: restore complete, elapsed time: 00:00:08
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to +DATA/tccm/datafile/system.259.852041899
restoring datafile 00003 to +DATA/tccm/datafile/sysaux.261.852041905
restoring datafile 00004 to +DATA/tccm/datafile/undotbs2.263.852041907
restoring datafile 00011 to +DATA/tccm/datafile/kts_fsms.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_748.db
channel ORA_DISK_1: restored backup piece 1
piece handle=/home/oracle/oraback/TCZB_883218978_TCCM_1582065125_748.db tag=TAG20150624T103618
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00007 to +DATA/tccm/datafile/kts_kd_com_dx.dbf
restoring datafile 00009 to +DATA/tccm/datafile/kts_kd_his_dx.dbf
restoring datafile 00012 to +DATA/tccm/datafile/kts_fsms_his.dbf
restoring datafile 00013 to +DATA/tccm/datafile/kfcs.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_746.db
channel ORA_DISK_1: restored backup piece 1
piece handle=/home/oracle/oraback/TCZB_883218978_TCCM_1582065125_746.db tag=TAG20150624T103618
channel ORA_DISK_1: restore complete, elapsed time: 00:00:08
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00005 to +DATA/tccm/datafile/users.264.852041909
restoring datafile 00006 to +DATA/tccm/datafile/test.269.852046259
channel ORA_DISK_1: reading from backup piece /home/oracle/oraback/TCZB_883218978_TCCM_1582065125_745.db
channel ORA_DISK_1: restored backup piece 1
piece handle=/home/oracle/oraback/TCZB_883218978_TCCM_1582065125_745.db tag=TAG20150624T103618
channel ORA_DISK_1: restore complete, elapsed time: 00:00:16
Finished restore at 24-JUN-15
5.4.4 恢复数据文件
由于我们使用的备份的控制文件进行的恢复,所以我们在执行恢复的时候要执行基于控制文件的恢复。
5.4.4.1.1 RMAN 恢复
RMAN> recover database;
RMAN-06054: media recovery requesting unknown log: thread 1 seq 289 lowscn 29421358
做基于日志序列号的恢复
RMAN> run
{
set until sequence 289;
recover database;
}
executing command: SET until clause
Starting recover at 24-JUN-15
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:02
Finished recover at 24-JUN-15
5.5 REDO文件
SQL> select l.thread#,l.group#,f.member,l.bytes from v$log l,v$logfile f where l.group#=f.group#;
THREAD# GROUP# MEMBER BYTES
---------- ---------- --------------------------------------------- ----------
1 1 +ARC/tccm/onlinelog/group_1.257.852044109 314572800
1 1 +DATA/tccm/onlinelog/group_1.257.852044107 314572800
1 2 +DATA/tccm/onlinelog/group_2.258.852044055 314572800
1 2 +ARC/tccm/onlinelog/group_2.258.852044055 314572800
1 3 +DATA/tccm/onlinelog/group_3.266.852044007 314572800
1 3 +ARC/tccm/onlinelog/group_3.260.852044009 314572800
2 4 +DATA/tccm/onlinelog/group_4.265.852043983 314572800
2 4 +ARC/tccm/onlinelog/group_4.259.852043985 314572800
2 5 +DATA/tccm/onlinelog/group_5.267.852043681 314572800
2 5 +ARC/tccm/onlinelog/group_5.262.852043681 314572800
2 6 +DATA/tccm/onlinelog/group_6.268.852043729 314572800
THREAD# GROUP# MEMBER BYTES
---------- ---------- --------------------------------------------- ----------
2 6 +ARC/tccm/onlinelog/group_6.263.852043729 314572800
select l.thread#,l.group#,f.member,l.status from v$log l,v$logfile f where l.group#=f.group# order by 1,2;
THREAD# GROUP# MEMBER STATUS
---------- ---------- --------------------------------------------- ----------
1 1 +ARC/tccm/onlinelog/group_1.257.852044109 INACTIVE
1 1 +DATA/tccm/onlinelog/group_1.257.852044107 INACTIVE
1 2 +DATA/tccm/onlinelog/group_2.258.852044055 CURRENT
1 2 +ARC/tccm/onlinelog/group_2.258.852044055 CURRENT
1 3 +DATA/tccm/onlinelog/group_3.266.852044007 INACTIVE
1 3 +ARC/tccm/onlinelog/group_3.260.852044009 INACTIVE
2 4 +DATA/tccm/onlinelog/group_4.265.852043983 INACTIVE
2 4 +ARC/tccm/onlinelog/group_4.259.852043985 INACTIVE
2 5 +DATA/tccm/onlinelog/group_5.267.852043681 CURRENT
2 5 +ARC/tccm/onlinelog/group_5.262.852043681 CURRENT
2 6 +DATA/tccm/onlinelog/group_6.268.852043729 INACTIVE
THREAD# GROUP# MEMBER STATUS
---------- ---------- --------------------------------------------- ----------
2 6 +ARC/tccm/onlinelog/group_6.263.852043729 INACTIVE
5.6 打开数据库
必须以resetlogs方式打开数据库
SQL> alter database open resetlogs;
Database altered.
5.7 删除第二线程的重做日志
由于我们这里只有单个实例所有thread2的现成重做没有意义,这里做删除
5.7.1 查看全部重做日志
SQL> select thread#,group#,status from v$log;
THREAD# GROUP# STATUS
---------- ---------- ----------
1 1 CURRENT
1 2 UNUSED
1 3 UNUSED
2 4 CURRENT
2 5 UNUSED
2 6 UNUSED
rows selected
5.7.2 删除非当前日志
SQL> alter database disable thread 2;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
SQL> alter database drop logfile group 6;
Database altered.
5.7.3 删除第二线程的当前日志
5.7.3.1 重新启动数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 9663676416 bytes
Fixed Size 2112048 bytes
Variable Size 2415920592 bytes
Database Buffers 7230980096 bytes
Redo Buffers 14663680 bytes
Database mounted.
Database opened.
5.7.3.2 查看日志状态
SQL> select thread#,group#,status from v$log;
THREAD# GROUP# STATUS
---------- ---------- ----------
1 1 CURRENT
1 2 UNUSED
1 3 UNUSED
2 4 INACTIVE
5.7.3.3 删除日志
SQL> alter system archive log current;
System altered.
SQL> alter database drop logfile group 4;
Database altered.
5.7.3.4 再次查看日志状态
SQL> select thread#,group#,status from v$log;
THREAD# GROUP# STATUS
---------- ---------- ----------
1 1 ACTIVE
1 2 ACTIVE
1 3 CURRENT
附录
1 遇到的问题
1.1 RMAN不能nomount
$export ORACLE_SID=tccm
[orabk][oracle]>/home/oracle$rman target / nocatalog
Recovery Manager: Release 10.2.0.5.0 - Production on Wed Jun 24 20:04:43 2015
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database (not started)
RMAN> startup nomount;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/app/oracle/product/10.2.0/db/dbs/inittccm.ora'
starting Oracle instance without parameter file for retrival of spfile
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 06/24/2015 20:04:47
RMAN-04014: startup failed: ORA-04031: unable to allocate 4128 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","kglsim hash table bkts")
这个问题通过手动建立参数文件的方法来解决
1176443.1文档对此有详细解释,解决方法:
1- Create temporary init.ora file (/oracle/product/11.2.0/db_1/dbs/initTEST.ora) with the following parameters:
db_name=
large_pool_size=100m
shared_pool_size=250m
db_cache_size=10m
2- Set environment variable ORA_RMAN_SGA_TARGET before executing rman. For example:
$ export ORA_RMAN_SGA_TARGET=350
此次实施用第二种方法解决了这个问题。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20516214/viewspace-1716367/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20516214/viewspace-1716367/