使用RMAN进行表空间TSPITR自动恢复

使用RMAN进行表空间TSPITR自动恢复
使用RMAN进行表空间TSPITR自动恢复

使用RMAN进行表空间TSPITR自动恢复

Oracle发展到今天,在备份还原领域已经构建了完善的解决方案体系。绝大多数情况下,我们的备份还原需求都可以用Oracle成熟方案实现的。TSPITR (Tablespace Point In Time Recover)数据表空间定点恢复是我们在实践中偶尔会使用的一种恢复场景。本篇就围绕这个问题进行讨论实验。

1、TSPITR

严格的说TSPITR是一种相对细粒度的不完全恢复技术。我们通常见到的还原操作,都是将所有的表空间和数据还原到相同的一个时间点上,无论是否是故障恢复点。而TSPITR则是以表空间为粒度单元,单独将某个表空间内容还原到一个特定可恢复时间点上。

举一个例子:一个Oracle数据库运行在归档模式下,在夜间零时保留一份完全备份。早上七点时候,某个特定表空间上数据表(单个表独占表空间)发生一个误操作,数据损坏。要求在不伤害其他数据表数据的情况下,将表空间数据恢复到早上六点。

这样部分数据恢复的场景,就是TSPITR的典型应用。我们在实际场景中,常常希望恢复部分的数据到过去时间点上,而不希望对现有数据进行补录。

TSPITR目前最方便的方法是使用RMAN进行自动的恢复。其使用前提为两个,一个是必须存在相应的备份集合,另一个是表空间对象是“self-contain”,也就是其他表空间中不包括与这个表空间对象相关的对象数据。

恢复步骤和原理如下:

???RMAN三个对象集合:catalog、target和auxiliary。其中auxiliary 就是用于辅助target各种备份还原要求的操作数据库。这个库在TSPITR中扮演临时数据还原作用的;

???首先完成数据检查工作,确定备份集合和表空间完整性;

???当前时间是T1,如果需要将数据还原为T0。使用RMAN提取备份数据集合,还原到auxiliary上形成一个新的实例数据库。选择性应用归档日志序列,还原auxiliary到TO时间点;

???使用expdp工具从auxiliary中导出目标表空间为dump对象。注意:还原auxiliary并不是100%重建target,而是选择系统运行表空间和目标表空间;

???在target数据库中删除原表空间。使用impdp工具导入dump文件进入target数据库;

???清理环境,将创建的auxiliary数据库删除;

这种系列操作,我们如果使用RMAN命令系列是可以逐步完成的。自动化RMAN 的TSPITR操作也是对这个过程的完全自动化运行。下面我们通过实验来进行演示操作。

2、环境准备

我们选择Oracle 11gR2进行试验。

SQL> select * from v$version;

BANNER

-----------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE 11.2.0.1.0 Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 – Production

SQL> select log_mode from v$database;

LOG_MODE

------------

ARCHIVELOG

创建实验表空间和实验数据表T。注意:由于我们使用的是11.2.0.1版本,如果使用sys用户进行测试,会引起Bug 12411104 : RMAN DUPLICATE RMAN-05548 WHEN CONNECTED TO TARGET。为避免问题,我们切换入scott用户执行。

SQL> create tablespace tsptiptbl datafile size 100m autoextend off

2 extent management local uniform size 1m

3 segment space management auto;

Tablespace created

--切换到scott用户进行试验,这个很重要!!(在11.2.0.1版本上)SQL> conn scott/tiger@wilson ;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as scott

SQL> create table t tablespace tsptiptbl as select * from dba_objects;

Table created

保留一个备份集合。

BS Key Type LV Size Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------

---------------

142 Full 1.33G DISK 00:02:52 16 -FEB-14

BP Key: 142 Status: AVAILABLE Compressed: NO Tag: TAG20140216T191156

Piece Name:

/u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_m f_nnndf_TAG20140216T191156_9j177yk1_.bkp

List of Datafiles in backup set 142

(篇幅原因,有省略……)

BS Key Size Device Type Elapsed Time Completion Time

------- ---------- ----------- ------------

---------------

143 21.50K DISK 00:00:00 16-FEB-14

BP Key: 143 Status: AVAILABLE Compressed: NO Tag: TAG20140216T191454

Piece Name:

/u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_m f_annnn_TAG20140216T191454_9j17fgd3_.bkp

List of Archived Logs in backup set 143

Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- --------- ---------- ---------

1 497 5398705 16-FEB-14

5398798 16-FEB-14

BS Key Type LV Size Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------

---------------

144 Full 9.67M DISK 00:00:04 16 -FEB-14

BP Key: 144 Status: AVAILABLE Compressed: NO Tag: TAG20140216T191455

Piece Name:

/u01/flash_recovery_area/WILSON/autobackup/2014_02_16/o1_ mf_s_839704495_9j17flq9_.bkp

SPFILE Included: Modification time: 16-FEB-14

SPFILE db_unique_name: WILSON

Control File Included: Ckp SCN: 5398809 Ckp time: 16-FEB-14

3、误操作过程

当前时间,我们通过logseq编号进行表示。

SQL> select sequence#, status from v$log;

SEQUENCE# STATUS

---------- ----------------

502 INACTIVE

503 CURRENT

501 INACTIVE

SQL> create table t tablespace TSPTIPTBL as select * from dba_objects;

Table created

SQL> alter system switch logfile;

System altered

SQL> select sequence#, status from v$log;

SEQUENCE# STATUS

---------- ----------------

502 INACTIVE

503 ACTIVE

504 CURRENT

切换日志,到下一个日志对象中出现误操作。

SQL> alter system switch logfile;

System altered

SQL> select sequence#, status from v$log;

SEQUENCE# STATUS

---------- ----------------

505 CURRENT

503 ACTIVE

504 ACTIVE

SQL> truncate table t;

Table truncated

SQL> alter system switch logfile;

System altered

SQL> select sequence#, status from v$log;

SEQUENCE# STATUS

---------- ----------------

505 ACTIVE

506 CURRENT

504 ACTIVE

恢复目标是将表空间TSPTIPTBL恢复到logseq=504位置上。4、TSPITR操作

自动操作的第一步,要确定auxiliary数据库的临时存放位置。

[root@bspdev /]# mkdir /aux

[root@bspdev /]# ls -l | grep aux

drwxr-xr-x 2 root root 4096 Feb 16 19:33 aux [root@bspdev /]# chown oracle:oinstall aux

[root@bspdev /]# ls -l | grep aux

drwxr-xr-x 2 oracle oinstall 4096 Feb 16 19:33 aux

在数据库启动open状态,我们就可以进行特定表空间的恢复。代码过程日志比较长,笔者在步骤中进行注释说明。

--直接使用控制文件作为catalog源;

RMAN> connect target /

connected to target database: WILSON (DBID=3906514064) using target database control file instead of recovery catalog

RMAN> recover tablespace tsptiptbl until logseq 504 auxiliary destination '/aux'; --指定恢复需求

Starting recover at 16-FEB-14

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=50 device type=DISK

RMAN-05026: WARNING: presuming following set of tablespaces applies to specified point-in-time

--设置auxiliary需要恢复的范围

List of tablespaces expected to have UNDO segments

Tablespace SYSTEM

Tablespace UNDOTBS1

Creating automatic instance, with SID='bvua' –随机sid设置

initialization parameters used for automatic instance: db_name=WILSON

db_unique_name=bvua_tspitr_WILSON

compatible=11.2.0.0.0

db_block_size=8192

db_files=200

sga_target=280M

processes=50

db_create_file_dest=/aux

log_archive_dest_1='location=/aux'

#No auxiliary parameter file used

starting up automatic instance WILSON

Oracle instance started

Total System Global Area 292933632 bytes

Fixed Size 1336092 bytes

Variable Size 100666596 bytes

Database Buffers 184549376 bytes

Redo Buffers 6381568 bytes

Automatic instance created

--self contained检查

Running TRANSPORT_SET_CHECK on recovery set tablespaces TRANSPORT_SET_CHECK completed successfully

--运行第一个脚本

contents of Memory Script:

{

# set requested point in time

set until logseq 504 thread 1;

# restore the controlfile

restore clone controlfile;

# mount the controlfile

sql clone 'alter database mount clone database';

# archive current online log

sql 'alter system archive log current';

# avoid unnecessary autobackups for structural changes during TSPITR

sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';

}

executing Memory Script

executing command: SET until clause

Starting restore at 16-FEB-14

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=19 device type=DISK

channel ORA_AUX_DISK_1: starting datafile backup set restore

channel ORA_AUX_DISK_1: restoring control file

channel ORA_AUX_DISK_1: reading from backup piece

/u01/flash_recovery_area/WILSON/autobackup/2014_02_16/o1_ mf_s_839704495_9j17flq9_.bkp

channel ORA_AUX_DISK_1: piece

handle=/u01/flash_recovery_area/WILSON/autobackup/2014_02 _16/o1_mf_s_839704495_9j17flq9_.bkp tag=TAG20140216T191455 channel ORA_AUX_DISK_1: restored backup piece 1

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:06

output file

name=/aux/WILSON/controlfile/o1_mf_9j1dbxfk_.ctl Finished restore at 16-FEB-14

sql statement: alter database mount clone database

sql statement: alter system archive log current

sql statement: begin

dbms_backup_restore.AutoBackupFlag(FALSE); end;

--运行第二个脚本

contents of Memory Script:

{

# set requested point in time

set until logseq 504 thread 1;

plsql <<<-- tspitr_2

declare

sqlstatement varchar2(512);

offline_not_needed exception;

pragma exception_init(offline_not_needed, -01539);

begin

sqlstatement := 'alter tablespace '|| 'TSPTIPTBL' ||' offline immediate';

krmicd.writeMsg(6162, sqlstatement);

krmicd.execSql(sqlstatement);

exception

when offline_not_needed then

null;

end; >>>;

# set destinations for recovery set and auxiliary set datafiles

set newname for clone datafile 1 to new;

set newname for clone datafile 3 to new;

set newname for clone datafile 2 to new;

set newname for clone tempfile 1 to new;

set newname for datafile 12 to

"/u01/oradata/WILSON/datafile/o1_mf_tsptiptb_9j17231x _.dbf";

# switch all tempfiles

switch clone tempfile all;

# restore the tablespaces in the recovery set and the auxiliary set

restore clone datafile 1, 3, 2, 12;

switch clone datafile all;

}

executing Memory Script

executing command: SET until clause

sql statement: alter tablespace TSPTIPTBL offline immediate

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

renamed tempfile 1 to

/aux/WILSON/datafile/o1_mf_temp_%u_.tmp in control file

Starting restore at 16-FEB-14

using channel ORA_AUX_DISK_1

--只还原最重要的相关文件:system、sysaux和undo

channel ORA_AUX_DISK_1: starting datafile backup set restore

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_AUX_DISK_1: restoring datafile 00001 to

/aux/WILSON/datafile/o1_mf_system_%u_.dbf

channel ORA_AUX_DISK_1: restoring datafile 00003 to

/aux/WILSON/datafile/o1_mf_undotbs1_%u_.dbf

channel ORA_AUX_DISK_1: restoring datafile 00002 to

/aux/WILSON/datafile/o1_mf_sysaux_%u_.dbf

channel ORA_AUX_DISK_1: restoring datafile 00012 to

/u01/oradata/WILSON/datafile/o1_mf_tsptiptb_9j17231x_.dbf channel ORA_AUX_DISK_1: reading from backup piece

/u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_m f_nnndf_TAG20140216T191156_9j177yk1_.bkp

channel ORA_AUX_DISK_1: piece

handle=/u01/flash_recovery_area/WILSON/backupset/2014_02_ 16/o1_mf_nnndf_TAG20140216T191156_9j177yk1_.bkp

tag=TAG20140216T191156

channel ORA_AUX_DISK_1: restored backup piece 1

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:08:05

Finished restore at 16-FEB-14

datafile 1 switched to datafile copy

input datafile copy RECID=27 STAMP=839710037 file

name=/aux/WILSON/datafile/o1_mf_system_9j1dchvb_.dbf datafile 3 switched to datafile copy

input datafile copy RECID=28 STAMP=839710037 file

name=/aux/WILSON/datafile/o1_mf_undotbs1_9j1dchwb_.dbf datafile 2 switched to datafile copy

input datafile copy RECID=29 STAMP=839710037 file

name=/aux/WILSON/datafile/o1_mf_sysaux_9j1dchwm_.dbf

--脚本三:完成aux构建

contents of Memory Script:

{

# set requested point in time

set until logseq 504 thread 1;

# online the datafiles restored or switched

sql clone "alter database datafile 1 online";

sql clone "alter database datafile 3 online";

sql clone "alter database datafile 2 online";

sql clone "alter database datafile 12 online";

# recover and open resetlogs

recover clone database tablespace "TSPTIPTBL", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog;

alter clone database open resetlogs;

}

executing Memory Script

executing command: SET until clause

sql statement: alter database datafile 1 online

sql statement: alter database datafile 3 online

sql statement: alter database datafile 2 online

sql statement: alter database datafile 12 online

Starting recover at 16-FEB-14

using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 498 is already on disk as file

/u01/flash_recovery_area/WILSON/archivelog/2014_02_16/o1_

mf_1_498_9j17t9c5_.arc

archived log for thread 1 with sequence 499 is already on disk as file

/u01/flash_recovery_area/WILSON/archivelog/2014_02_16/o1_

mf_1_499_9j17vtmf_.arc

archived log for thread 1 with sequence 500 is already on disk as file

/u01/flash_recovery_area/WILSON/archivelog/2014_02_16/o1_

mf_1_500_9j1blznh_.arc

archived log for thread 1 with sequence 501 is already on disk as file

/u01/flash_recovery_area/WILSON/archivelog/2014_02_16/o1_ mf_1_501_9j1bm5go_.arc

archived log for thread 1 with sequence 502 is already on disk as file

/u01/flash_recovery_area/WILSON/archivelog/2014_02_16/o1_ mf_1_502_9j1bmsb4_.arc

archived log for thread 1 with sequence 503 is already on disk as file

/u01/flash_recovery_area/WILSON/archivelog/2014_02_16/o1_ mf_1_503_9j1d153j_.arc

channel ORA_AUX_DISK_1: starting archived log restore to default destination

channel ORA_AUX_DISK_1: restoring archived log

archived log thread=1 sequence=497

channel ORA_AUX_DISK_1: reading from backup piece

/u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_m f_annnn_TAG20140216T191454_9j17fgd3_.bkp

channel ORA_AUX_DISK_1: piece

handle=/u01/flash_recovery_area/WILSON/backupset/2014_02_ 16/o1_mf_annnn_TAG20140216T191454_9j17fgd3_.bkp

tag=TAG20140216T191454

channel ORA_AUX_DISK_1: restored backup piece 1

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

archived log file name=/aux/1_497_796001920.dbf thread=1 sequence=497

channel clone_default: deleting archived log(s)

archived log file name=/aux/1_497_796001920.dbf

RECID=342 STAMP=839710046

archived log file

name=/u01/flash_recovery_area/WILSON/archivelog/2014_02_1 6/o1_mf_1_498_9j17t9c5_.arc thread=1 sequence=498

archived log file

name=/u01/flash_recovery_area/WILSON/archivelog/2014_02_1 6/o1_mf_1_499_9j17vtmf_.arc thread=1 sequence=499 archived log file

name=/u01/flash_recovery_area/WILSON/archivelog/2014_02_1 6/o1_mf_1_500_9j1blznh_.arc thread=1 sequence=500 archived log file

name=/u01/flash_recovery_area/WILSON/archivelog/2014_02_1 6/o1_mf_1_501_9j1bm5go_.arc thread=1 sequence=501 archived log file

name=/u01/flash_recovery_area/WILSON/archivelog/2014_02_1 6/o1_mf_1_502_9j1bmsb4_.arc thread=1 sequence=502 archived log file

name=/u01/flash_recovery_area/WILSON/archivelog/2014_02_1 6/o1_mf_1_503_9j1d153j_.arc thread=1 sequence=503 media recovery complete, elapsed time: 00:00:39

Finished recover at 16-FEB-14

database opened

--脚本5:抽取数据

contents of Memory Script:

{

# make read only the tablespace that will be exported sql clone 'alter tablespace TSPTIPTBL read only';

# create directory for datapump import

sql "create or replace directory TSPITR_DIROBJ_DPDIR as ''

/aux''";

# create directory for datapump export

sql clone "create or replace directory

TSPITR_DIROBJ_DPDIR as ''

/aux''";

}

executing Memory Script

sql statement: alter tablespace TSPTIPTBL read only

sql statement: create or replace directory

TSPITR_DIROBJ_DPDIR as ''/aux''

sql statement: create or replace directory

TSPITR_DIROBJ_DPDIR as ''/aux''

Performing export of metadata...

EXPDP> Starting "SYS"."TSPITR_EXP_bvua":

EXPDP> Processing object type

TRANSPORTABLE_EXPORT/PLUGTS_BLK

EXPDP> Processing object type

TRANSPORTABLE_EXPORT/TABLE

EXPDP> Processing object type

TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

EXPDP> Master table "SYS"."TSPITR_EXP_bvua" successfully loaded/unloaded

EXPDP>

********************************************************* *********************

EXPDP> Dump file set for SYS.TSPITR_EXP_bvua is:

EXPDP> /aux/tspitr_bvua_45849.dmp

EXPDP>

********************************************************* *********************

EXPDP> Datafiles required for transportable tablespace TSPTIPTBL:

EXPDP> /u01/oradata/WILSON/datafile/o1_mf_tsptipt b_9j17231x_.dbf

EXPDP> Job "SYS"."TSPITR_EXP_bvua" successfully completed at 20:50:20

Export completed

--脚本六

contents of Memory Script:

{

# shutdown clone before import

shutdown clone immediate

# drop target tablespaces before importing them back

sql 'drop tablespace TSPTIPTBL including contents keep datafiles';

}

executing Memory Script

database closed

database dismounted

Oracle instance shut down

sql statement: drop tablespace TSPTIPTBL including contents keep datafiles

Performing import of metadata...

IMPDP> Master table "SYS"."TSPITR_IMP_bvua" successfully loaded/unloaded

IMPDP> Starting "SYS"."TSPITR_IMP_bvua":

IMPDP> Processing object type

TRANSPORTABLE_EXPORT/PLUGTS_BLK

IMPDP> Processing object type

TRANSPORTABLE_EXPORT/TABLE

IMPDP> Processing object type

TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

IMPDP> Job "SYS"."TSPITR_IMP_bvua" successfully completed at 20:51:43

Import completed

--脚本七:收尾还原

contents of Memory Script:

{

# make read write and offline the imported tablespaces sql 'alter tablespace TSPTIPTBL read write';

sql 'alter tablespace TSPTIPTBL offline';

# enable autobackups after TSPITR is finished

sql 'begin dbms_backup_restore.AutoBackupFlag(TRUE); end;';

}

executing Memory Script

sql statement: alter tablespace TSPTIPTBL read write sql statement: alter tablespace TSPTIPTBL offline

sql statement: begin

dbms_backup_restore.AutoBackupFlag(TRUE); end;

Removing automatic instance

Automatic instance removed

auxiliary instance file

/aux/WILSON/datafile/o1_mf_temp_9j1dwtx1_.tmp deleted auxiliary instance file

/aux/WILSON/onlinelog/o1_mf_3_9j1dwm37_.log deleted auxiliary instance file

/aux/WILSON/onlinelog/o1_mf_2_9j1dwfc7_.log deleted auxiliary instance file

/aux/WILSON/onlinelog/o1_mf_1_9j1dw7xk_.log deleted auxiliary instance file

/aux/WILSON/datafile/o1_mf_sysaux_9j1dchwm_.dbf deleted auxiliary instance file

/aux/WILSON/datafile/o1_mf_undotbs1_9j1dchwb_.dbf deleted auxiliary instance file

/aux/WILSON/datafile/o1_mf_system_9j1dchvb_.dbf deleted auxiliary instance file

/aux/WILSON/controlfile/o1_mf_9j1dbxfk_.ctl deleted Finished recover at 16-FEB-14

最后,我们检查数据表T情况。

SQL> select count(*) from t;

select count(*) from t

ORA-00376: 此时无法读取文件 12

ORA-01110: 数据文件 12:

'/u01/oradata/WILSON/datafile/o1_mf_tsptiptb_9j17231x_.db f'

检查表空间情况。

--状态是offline

ORACLE11G RMAN备份恢复到异机数据库

ORACLE11G RMAN备份恢复到异机数据库 1. 主数据库环境 操作系统版本 : Centos6.7 x64 数据库版本 : Oracle 11.2.0.4 x64 数据库名 : prb 数据库SID : prb db_unique_name : prb instance_name : prb IP : 10.0.8.100 2. 备库环境 操作系统版本 : Centos6.7 x64 数据库版本 : Oracle 11.2.0.4 x64 (只安装oracle数据库软件,no netca dbca) 数据库名 : prb 数据库SID : prb db_unique_name: prb instance_name : prb IP:10.0.8.101 将参数文件备份、控制文件备份、数据文件备份、以及归档备份到目标主机 1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构。 2 目标机器只需要安装oracle只安装oracle数据库软件,no netca dbca 3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标机器并在控制文件中注册,再见行恢复测试。 备份数据库 backup format '/u01/prb/rmanbk/fulldb_%d_%U' database include current controlfile plus archivelog delete input; orapwd file='/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwprb' password=oracle entries=10 force=y 1rman 连接到源数据库 prd-db1-> rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Wed Aug 17 19:23:27 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: PRB (DBID=1906641159) RMAN> 2 分别列出参数文件备份,控制文件备份,数据文件备份,以及归档备份的名字 参数文件备份如下: RMAN> list backup of spfile; using target database control file instead of recovery catalog List of Backup Sets ===================

rman整库备份还原

整库丢失 1登录rman rman target / 2 备份数据库和归档文件 backup database plus archivelog all; 3 产看备份情况 list backup; 4模拟数据变化 create table test31 as select * from dba_users; alter system switch logfile; create table test32 as select * from dba_users; alter system switch logfile; create table test33 as select * from dba_users; 5删除整个数据库 cd /home/app/oracle/oradata rm –rf ora

数据库已经损坏 6根据数据库启动流程,首先恢复spfile vi initora.ora i db_name='ora' :wq -bash-4.2$ sqlplus / as sysdba shut immediate force; 还原数据库 找到备份文件 rman target / 进入rman设置dbid为备份片的id set dbid=1589493431

还原数据库 恢复控制文件 restore controlfile from autobackup; 设置数据库为mount状态 alter database mount; 恢复数据库 restore database; recover database; Starting recover at 22-MAR-18 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 10 is already on disk as file /home/archivelog/1_10_971265017.dbf archived log for thread 1 with sequence 11 is already on disk as file /home/archivelog/1_11_971265017.dbf archived log file name=/home/archivelog/1_10_971265017.dbf thread=1 sequence=10 archived log file name=/home/archivelog/1_11_971265017.dbf thread=1 sequence=11 unable to find archived log

oracle 备份恢复语句整理(最全)

Oracle备份恢复场景总结 一、数据文件、表空间恢复 1、数据库文件恢复 1>场景一: 问题描述: test.dbf丢失,有RMAN备份。 重启报错: Startup; ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: data file 5: '/oracle/app/oracle/oradata/orcl/test01.dbf' run{ startup mount; allocate channel ch00 type 'SBT_TAPE'; restore datafile 5; recoverdatafile 5; alter database open; release channel ch00; }

2>场景二 问题描述: 模拟test表空间损坏,删除数据文件(恢复到新目录) 旧目录:/oracle/app/oracle/oradata 新目录: /home/oracle run{ allocate channel ch00 type 'SBT_TAPE'; sql 'alter database datafile 5 offline'; setnewname for datafile 5 to '/home/oracle/test01.dbf'; restoredatafile 5; switchdatafile 5; recoverdatafile 5; sql 'alter database datafile 4 online'; release channel ch00; } 说明: set newname for 告诉RMAN 还原数据文件的新位置在哪里。这个命令在restore 前出现。 switch datafile更新controlfile,记录这个新位置。这个命令要在recover 前出现

Oracle 11g 基于RMAN的备份与恢复

Oracle 11g 基于RMAN的备份与恢复 备份整个数据库 C:\Users\huangluxiang>rman target/ RMAN> backup database; RMAN> exit (退出) (1)重做日志损坏 SQL> conn /as sysdba 已连接到空闲例程。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 1071333376 bytes Fixed Size 1375792 bytes Variable Size 729809360 bytes Database Buffers 335544320 bytes Redo Buffers 4603904 bytes 数据库装载完毕。 SQL> recover database until cancel; 完成介质恢复。 SQL> alter database open resetlogs; 数据库已更改。 SQL> archive log list; 数据库日志模式存档模式 自动存档启用 存档终点USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 备注:恢复Oracle数据库,应该备份整个数据库 (2)数据库丢失数据文件,控制文件,重做日志文件 C:\Users\huangluxiang>rman target/ RMAN> restore controlfile from autobackup; RMAN>alter database mount; RMAN> restore database; SQL> conn /as sysdba 已连接。 SQL> recover database using backup controlfile until cancel; ORA-00279: 更改990116 (在12/13/2013 14:06:05 生成) 对于线程1 是必需的 ORA-00289: 建议: C:\APP\HUANGLUXIANG\FLASH_RECOVERY_AREA\DLNU\ARCHIVELOG\2013_12_13\ O1_MF_1_5_%U_ .ARC ORA-00280: 更改990116 (用于线程1) 在序列#5 中 指定日志: {=suggested | filename | AUTO | CANCEL}

RMAN备份及恢复

Linux下Oracle9i RMAN备份及恢复步骤介 1、切换服务器设置归档模式,如果已经是归档模式可跳过此步: %sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL> shutdown immediate; (立即关闭数据库) SQL> startup mount (启动实例并加载数据库,但不打开) SQL> alter database archivelog; (更改数据库为归档模式) SQL> alter database open; (打开数据库) SQL> alter system archive log start; (启用自动归档) SQL> exit (退出) 2、连接: %rman target=sys/password@mydb (启动恢复管理器) 3、基本设置: RMAN> configure default device type to disk; (设置默认的备份设备为磁盘) RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数) RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份) RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式) 4、查看所有设置:

RMAN备份与恢复之完全备份和增量备份

完全备份: 完全备份是指对数据库中使用过的所有数据块进行备份,当然,没有使用过的数据块是不做备份的。在进行完全备份时,RMAN将数据文件中所有的非空白数据块都复制到备份集中。在RMAN中,可以对数据文件进行完全备份或者增量备份,但是对控制文件和日志文件只能进行完全备份。在一个完全数据库备份中,将所有的数据库文件,复制到闪回恢复区。 完全备份实例: 【例】通过BACKUP FULL语句,对数据库执行完全备份。使用TAG参数和FORMAT参数,指定备份文件位置以及备份文件的名称格式。如下: RMAN>RUN{ 2> #BACKUP THE COMPLETE DATABASE 3> ALLOCATE CHANNEL ch1 TYPE DISK; 4> BACKUP FULL 5> TAG full_db_backup FORMAT"E:\app\backup\db_t%t_s%s_p%p" (database); 6> RELEASE CHANNEL ch1; 7> } 【例】在RMAN中执行LIST命令,查看建立的备份集与备份段信息,如下: RMAN> LIST BACKUP OF DATABASE; 增量备份: 增量备份就是将那些与前一次备份相比发生变化的数据块复制到备份集中。进行增量备份时,RMAN会读取整个数据文件,通过RMAN可以为单独的数据文件、表空间、或者整个数据库进行增量备份。在RMAN中建立的增量备份可以具有不同的级别,每个级别都使用一个不小于0的整数来标识,也就是在BACKUP命令中使用LEVEL关键字指定的,例如LEVEL = 0表示备份级别为0,LEVEL = 1表示备份级别为1。 增量备份的方式:

2016年9月1日rman备份恢复脚本

rman备份恢复 1.通过rman备份文件恢复spfile 2.通过rman备份文件恢复controlfile 3.通过rman备份文件恢复datafile 4.利用恢复回来的controlfile和datafile生成redolog 5.测试交易是否存在,并全备 我系统环境所有的文件如下: [oracle@fowaydbs]$ pwd /opt/oracle/10g/dbs [oracle@fowaydbs]$ ls initdw.ora init.ora [oracle@fowaydbs]$ls /opt/oracle/oradata 已没有任何资料 [oracle@fowaydbs]$ls /opt/oracle/admin 已没有任何资料 [oracle@fowaydbs] ls /opt/oracle/flash_recovery_area/ ORCL [oracle@fowaydbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/

2008_07_18 [oracle@fowaydbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_ 18/ o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp 在我这台电脑上, ,系统中所有的ORCL相关的数据文件,参数文件,日志文件,控制文件全部不在了, 没有其他可用的备份文件了,只有rman备份的文件在,这可怎么办呢? 没办法只能恢复了,可怎么恢复呢? 要恢复数据文件用rman备份? 能吗? 当然不能了,因为restore 必须在mount or open状态下. 参数文件,控制文件都没有怎么mount? 要mount必须有参数文件,控制文件,为此我们必须解决这2个难题了. 在解决难题前先准备ORCL的必须的目录: [oracle@fowaydbs]mkdir /opt/oracle/oradata/orcl

rman备份恢复操作命令

首先确定/u02/rman目录是否存在 export ORACLE_SID=数据库实例名 rman备份操作: 使用sys用户登录rman rman target sys/syscode #进入rman run{ #备份数据库 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/u02/rman/test_%U'; ALLOCATE CHANNEL CH2 DEVICE TYPE DISK FORMAT '/u02/rman/test_%U'; BACKUP incremental level 0 DATABASE plus archivelog delete input; RELEASE CHANNEL CH1; RELEASE CHANNEL CH2; } list backupset; #备份完毕,记录scn (备份时记录备份完成的SCN号,此SCN号作为数据库恢复的时间点,必须记录下来) #SCN号类似如下: rman 恢复操作 1、首次进行恢复 使用sys用户登录rman rman target sys/syscode #进入rman shutdown immediate #停止数据库 startup mount; #启动实例 run{ set until scn ********; #**为备份时记录的SCN号 restore database; #还原数据库 recover database; #恢复数据库 sql 'alter database open resetlogs'; #打开数据库 } 2、多次恢复 在使用备份文件恢复数据库,用open resetlogs方式打开数据之后,如果需要再次恢复数据库,需要指定数据库的incarnation. 使用sys用户登录rman rman target sys/syscode #进入rman shutdown immediate #停止数据库 startup mount; #启动实例 list backupset; #选择scn (备份时记录备份完的SCN号) #SCN号类似如下:

RMAN增量备份与恢复

增量备份计划案例 一、增量备份计划关键命令 星期日: RMAN> backup incremental level=0 database; 星期一: RMAN> backup incremental level=2 database; 星期二: RMAN> backup incremental level=2 database; 星期三: RMAN> backup incremental level=1 database; 星期四: RMAN> backup incremental level=2 database; 星期五: RMAN> backup incremental level=2 database; 星期六: RMAN> backup incremental level=2 database; 二、增量备份计划与恢复实例: 恢复管理器: Release 10.2.0.1.0 - Production on 星期六3月22 14:47:30 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到目标数据库: ORCL (DBID=1177145004) RMAN> backup incremental level=0 database; 启动backup 于22-3月-08 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道ORA_DISK_1: sid=122 devtype=DISK 通道ORA_DISK_1: 启动增量级别0 数据文件备份集 通道ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件fno=00001 name=C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF 输入数据文件fno=00003 name=C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF 输入数据文件fno=00007 name=C:\ORACLE\ORADATA\ORCL\PERFSTAT.DBF 输入数据文件fno=00005 name=C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF 输入数据文件fno=00002 name=C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF 输入数据文件fno=00004 name=C:\ORACLE\ORADATA\ORCL\USERS01.DBF 输入数据文件fno=00006 name=C:\ORACLE\ORADATA\ORCL\TTT.DBF 通道ORA_DISK_1: 正在启动段 1 于22-3月-08 通道ORA_DISK_1: 已完成段 1 于22-3月-08 段句柄=C:\ORACLE\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_03_22\O1 _MF_NNND0_TAG20080322T144756_3Y9BWXK2_.BKP 标记=TAG20080322T144756 注释=NONE 通道ORA_DISK_1: 备份集已完成, 经过时间:00:01:45 完成backup 于22-3月-08 启动Control File and SPFILE Autobackup 于22-3月-08 段

oracle备份与恢复机制

谈ORACLE备份与恢复 经常听到有人说,某数据库备份方法好,某备份方法不好,或者说现在都流行用rman 来备份了,逻辑备份已经过时了,冷备份就更不值一提了,其实数据库的备份从来没有什么好坏之分、没有过时之说,合适才是最重要的,自己好才是真的好.各种方法各有长短,谁也代替不了谁,只有根据实际情况搭配使用,才能发挥最大的作用,否则只能是东施效颦. 1 . o r ac 1 e的备份,包括no a r chi v e I og模式的备份(冷备份)、arch i velog模式的备份(热备份、rman备份)、逻辑备份(不分模式). 1.1.冷备份: ~ 1)关闭数据库 s hu t d o wn; -一2)备份数据文件、控制文件、重做日志文件 一-A、查找备份文件的位置 SELEC T * FROM VSDATAFIL E ; —査数据文件 s el e ct * f r om v$cont r o 1 f il e ; —查控制文件 s e le c t * f r om vSlogf i 1 e; —査日志文件 ~ B、备份数据文件、控制文件、重做日志文件 $ copy D:\oracle\o r a data\or a 9 \ *. dbf d: \ b a k \ *. *; $ cop y D:\ora cle \ oradat a \ora9 \ *? c t 1 d : \ b a k\*? *: $ copy D:\oracle \o r adata\o r a9\*? I og d:\bak\*? *; 1.2.热备份: ~ 1)查询备份的数据文件与哪一个表空间有关 SELECT V$TAF3LESPACE ? NAME, VS DATAFILE. NAME FROM V$TA B LES P ACE J OIN V$DATAF I LE USING(TS#); ~ 2)备份数据文件 a 1 t er tablespace 表空间BEGIN BACKUP; $ COPY数据文件存放路径

一次曲折的rman控制文件恢复

一次曲折的rman控制文件恢复 用rman备份一个最新的控制文件 rman target / catalog rman/rman@catdb RMAN>backup current controlfile format = '/oracle/backup/backup_%U'; 破坏控制文件 select name from v$controlfile; /dev/rctrlfile1 /dev/rctrlfile2 /dev/rctrlfile3 用dd把控制文件都搞坏,如下: # dd if=/dev/zero of=/dev/rctrlfile1 bs=32k --- --- 没有归档当前的redo log。 SQL> shutdown abort; ORACLE instance shut down. 尝试正常启动数据库 SQL> startup ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 2094904 bytes Variable Size 100665544 bytes Database Buffers 58720256 bytes Redo Buffers 6291456 bytes ORA-00205: error in identifying control file, check alert log for more info

报错,把数据库启动到nomount状态 SQL> shutdown ORA-01507: database not mounted ORACLE instance shut down. SQL> startup nomount ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 2094904 bytes Variable Size 100665544 bytes Database Buffers 58720256 bytes Redo Buffers 6291456 bytes SQL> 连接rman,准备恢复数据库文件。 ibmchen$[/oracle]rman target / catalog rman/rman@catdb Recovery Manager: Release 10.2.0.5.0 - Production on Wed Mar 14 16:18:09 2012 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: orac (not mounted) connected to recovery catalog database 检查是否打开CONTROLFILE AUTOBACKUP ON RMAN> show all; RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

rman备份常用操作语句

rman备份常用操作语句 2009-08-12 23:21:57| 分类:rman|字号订阅 drop tablespace tbs_rman including contents and datafiles; create tablespace tbs_rman datafile '/oradata/liutest/tbs_rman01.dbf'size 300M; create user rmanuser identified by rman default tablespace tbs_rman temporary tablespace temp; grant recovery_catalog_owner to rmanuser; select * from session_privs; select * from sesseion_roles; rman catalog rmanuser/rman rman>create catalog tablespace tbs_rman; rman>r egister database; rman>list incarnation; -- (可以看出有几个目标数据库注册此RMAN备份) rman>report schema; rman>list backup; rman>list copy; --全备份full backupset rman>run{ allocate channel d1 device type disk; backup as compressed backupset format='/rmanbak/full_%d_%U' tag='fullbak' channel=d1 database plus archivelog delete input; } rman>crosscheck copy; rman>delete expired copy; --0级备份 run{ allocate channel d1 device type disk;

RMAN备份经典理解

ORACLE RMAN增量备份经典理解2014-03-29 09:37:46 分类:Oracle Oracle中,增量备份时分等级的,级别从0开始,一级一级递增,不过实际上用的最多的也就是0级和1级了,0级增量备份是后面级别的增量备份的基础,0级备份实际上就是一个完全备份,与普通的完全备份唯一的不同点是0级备份可以作为其他级别增量备份的基础,而普通的完全备份是不能的。 从级别1开始,Oracle的增量备份分为差异增量备份和积累增量备份两种,其中差异增量备份备份的是自上一次同级别的差异备份或者是上一次更高级别的备份完成之后的数据库发生改变的数据块;而积累增量备份则是备份的自上一次上一级增量备份完成以来数据库发生改变的数据块。在《Backup and Recovery User’s Guide》的“增量备份”一节中有两幅图很形象的描述了这两个增量备份之间的异同: 差异增量备份图示

积累增量备份图示 -------------------------------------------------------------------------------------> > rman 全备与0、1级增量备份 1、简单来说,rman全库备份只需要backup database;(未压缩),或者backup as compressed backupset database; (压缩)。即可完全备份,如下: RMAN> backup database; Starting backup at 08-OCT-13 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1

RMAN工具使用

RMAN工具使用 作者: 苏俊华 创建日期: 201-10-19 更新日期: 201-12-05 文档编号: 版本: 1.0 批准: 〈广东移动项目经理〉 〈HAND 项目经理〉 拷贝编号:____

文档控制 更新记录 审阅 分发 备注: 出于文档管理的目的,如果您收到了本文档的电子版本,请打印出来并在封面的相应位 置写上您的名字。 出于文档管理的目的,如果您收到了本文档的纸介质版本,请在封面写上您的名字。

目录 文档控制 (2) RMAN工具使用 (4) 1.1.1 RMAN查看信息 (4) 1.1.1.1 恢复目录相关视图 (4) 1.1.1.2 动态视图 (4) 1.1.1.3 list命令 (5) 1.1.2 配置RMAN (5) 1.1.3 RMAN管理和维护 (6) 1.1.3.1 同步命令 (6) 1.1.3.2 注销数据库 (6) 1.1.3.3 重新启动备份 (7) 1.1.3.4 备份数据命令 (7) 1.1.3.5 脚本及自动运行 (7) 1.1.3.6 查看备份状态 (8) 1.1.3.7 删除过时的备份 (8) 1.1.4 RMAN备份与恢复 (10) 1.1.4.1 归档模式下的backup完全备份与恢复 (10) 1.1.4.1.1 整库备份与恢复 (10) 1.1.4.1.2 表空间备份与恢复 (10) 1.1.4.1.3 数据文件的备份与恢复 (11) 1.1.4.1.4 归档日志的备份与恢复 (11) 1.1.4.1.5 联机日志的备份与恢复 (11) 1.1.4.2 归档模式下的backup部分备份与恢复 (12) 1.1.4.2.1 SCN恢复 (12) 1.1.4.2.2 时间点恢复 (12) 已解决及未解决的问题 (13) 未解决的问题 (13) 已解决的问题 (13)

ORACLE数据库备份与恢复详解

ORACLE数据库备份与恢复详解 Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示 三种方式各有优点,我们做个比较(这个是用Fireworks画的,有点糙):

$A: 现在先来介绍一下逻辑备份方式的方法,利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。理论基础:Oracle 提供的Export和Import具有三种不同的操作方式(就是备份的数据输出(入)类型): 1,表方式(T) 可以将指定的表导出备份; 2,全库方式(Full) 将数据库中的所有对象导出; 3,用户方式(U) 可以将指定的用户相应的所有数据对象导出; *在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,但是它必须作为System来完成增量的导入导出,而且只能是对整个数据库进行实施。增量导出又可以分为三种类别: 1,完全增量导出(完全备份)(Complete Export) 这种方式将把整个数据库文件导出备份;exp system/manager inctype=complete file=20041125.dmp(为了方便检索和事后的查询,通常我们将备份文件以日期或者其他有明确含义的字符命名) 2,增量型增量导出(增量备份)(Incremental Export) 这种方式将只会备份上一次备份后改变的结果;exp system/manager inctype=incremental file=20041125.dmp 3,累积型增量导出(差异备份)(Cumulate Export) 这种方式的话,是导出自上次完全增量导出后数据库变化的信息。exp system/manager inctype=cumulative file=20041125.dmp 通常情况下,DBA们所要做的,就是按照企业指定或者是自己习惯的标准(如果是自己指定的标准,建议写好计划说明),一般,我们采用普遍认可的下面的方式进行每天的增量备份: Mon:完全备份(A) Tue:增量导出(B) Wed:增量导出(C) Thu:增量导出(D)

基于Rman的备份与恢复

基于Rman的测试 为了配合公司产品的功能测试,特完成此文档(公司产品相关测试部分已剔除)。本文档主要是介绍rman工具的基本使用,此处只做全库的备份,以及不完全恢复,数据库模式为归档模式。 1Rman工具的简单介绍 Rman全称Recover Manager是oracle提供的一款备份恢复数据库或数据库组件(表空间、数据文件、控制文件以及参数文件等)的工具。并且rman还可以对数据库的归档日志进行管理。 2 数据库备份与恢复 Rman提供两种备份模式,一种是将备份数据信息写入到本地的控制文件中,另一种是恢复目录方式:这种方式是将备份数据库信息写入到本地控制文件和catalog(恢复目录)中,oracle推荐使用第二种方式。Catalog一般创建在另外的一个数据库中,这样备份的数据库崩溃后不影响其恢复。使用第一种方式,如果数据库崩溃,而且没有控制文件的备份,这种情况下就没有办法进行恢复操作。这里使用恢复目录方式进行操作。 1)Catalog的创建 恢复目录所在数据库为rmandb,创建的恢复目录为tsp_rman,连接用户为rman/rman a)创建恢复目录 Create tablespace tsp_rman datafile ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\SCHINATEST\rman01.DBF’ size 120m; b)创建用户 Create user rman identified by rman; c)授权

Grant connect, resource, recovery_catalog_owner to rman; 2)连接到Rman 使用以下命令进行rman工具的连接: 连接时需要sysdba系统权限 Rman sys/oracle@schinatest catalog rman/rman@rmandb 说明: Schinatest是准备备份的目标数据库,rmandb是恢复目录数据库 3)查看目标数据库的归档模式 以dba用户登录oracle,查看目标数据库的归档模式:此处是归档模式 SQL> archive log list; 图 3.1 查看归档模式 因为一般情况下,真正使用场景中的数据库都为归档模式,而且非归档模式下使用rman有一些限制,所以此处只做归档模式下的测试。如果数据库是非归档模式,需改成归档模式。 4)注册目标数据库 只有在恢复目录中注册的数据库才能进行备份与恢复操作,注册很简单,连接到rman工具后,使用register database命令进行注册即可 5)配置Rman的使用参数 使用show all命令显示rman的全部配置参数:

LINUX-下ORACLE利用rman备份迁移数据库

第一医院数据库迁移的实施步骤 利用RMAN备份正式库 全库备份及控制文件 RMAN>run{ allocate channel c1 device type disk; sql 'alter system archive log current'; backup as compressed backupset database format '+ FRA/DYYY/BACKUPSET/db_%d_%T_%U'; sql 'alter system archive log current'; backup current controlfile format '+ FRA/DYYY/controlfile/cntrl_%s_%p_%s'; release channel c1; } 生成数据库还原脚本restoredatafil e.sql 检查是否有增加数据文件select count(*)from v$datafile; 如果有增加数据库文件必须重新生成 sqlplus /nolog conn /as sysdba set serveroutput on; set linesize 200 spool restore_datafile.rman declare cursor df is select file#, name from v$datafile; begin dbms_output.put_line('run'); dbms_output.put_line('{'); for dfrec in df loop dbms_output.put_line('set newname for datafile ' || dfrec.file# || ' to ''' || https://www.360docs.net/doc/1b16308946.html, ||''' ;'); end loop; dbms_output.put_line('restore database;'); dbms_output.put_line('switch datafile all;'); dbms_output.put_line('}'); end; / spool off

Oracle深度学习笔记RMAN备份常用命令

31.Oracle深度学习笔记——RMAN备份常用命令 连接到目标数据库 (不使用恢复目录数据库) $rman target / nocatalog 显示rman配置 RMAN> show all; 报告目标数据库的物理结构 REPORT RMAN> report schema; 报告陈旧备份 RMAN> report obsolete; 报告不可恢复的数据文件 RMAN> report unrecoverable; RMAN> report need backup; RMAN> report need backup days=1; RMAN> report need backup incremental=3; 说明:需要多少个增量备份文件才能恢复的数据文件。 RMAN> report need backup redundancy=2; 说明:报告冗余文件小于2次的数据文件 RMAN> report need backup recovery window of 2 days; 报告出恢复需要2天的归档日志的数据文件。 备份脚本 run{ allocate channel c1 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp'; allocate channel c2 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp'; backup (datafile 5 channel c1) (datafile 6 channel c2); release channel c1; release channel c2; }

RMAN的备份与恢复步骤详解

在这里没有讨论多么深入的RMAN技术,也没有告诉大家这样去编写备份脚本,这并不是我的初衷,我只想把我会的写出来,和大家一起学习,一起进步,谢谢。 1、切换服务器归档模式,如果已经是归档模式可跳过此步:%sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL> shutdown immediate; (立即关闭数据库) SQL> startup mount (启动实例并加载数据库,但不打开) SQL> alter database archivelog; (更改数据库为归档模式) SQL> alter database open; (打开数据库) SQL> alter system archive log start; (启用自动归档) SQL> exit (退出) 2、连接:%rman target=rman/rman@mydb (启动恢复管理器) 3、基本设置:RMAN> configure default device type to disk; (设置默认的备份设备为磁盘) RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数) RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)

RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份) RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式) 4、查看所有设置: RMAN> show all 5、查看数据库方案报表: RMAN> report schema; 6、备份全库: RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志) 7、备份表空间: RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志) 8、备份归档日志:

相关文档
最新文档