使用 RMAN 备份Oracle数据库

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

由于oracle9i以后exp 不再支持 inctype ,在不脱机情况下增量备份只有靠rman来实现,所以搜集了一些网上rman的资料供大家参考。

一、Oracle RMAN快速入门指南

前言

这篇文章主要介绍RMAN的常用方法,其中包含了作者一些自己的经验,里面的实验也基本全在WIN 2K和ORACLE 8.1.6环境下测试成功(因为这个环境比较容易实现)。

本文借鉴了网上一些高手的相关文章,希望大侠们不要见怪,此处一并谢过。

这篇文章主要是在北京出差期间写的,回到家后整理修改了一下,时间比较仓促,同时因为篇幅有限,一些技术细节不能一一覆盖了,只希望能够帮助新手入门的作用,想真正熟练掌握RMAN,必须经过较长时间的实践磨练才可以,尤其需要在工程中获得宝贵的故障解决经验。

1.什么是RMAN

RMAN可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。

注意:RMAN不能用于备份初始化参数文件和口令文件。

RMAN启动数据库上的Oracle服务器进程来进行备份或还原。备份、还原、恢复是由这些进程驱动的。

RMAN可以由OEM的Backup Manager GUI来控制,但在本文章里不作重点讨论。

2. Terminology专业词汇解释

2.1. Backup sets备份集合

备份集合有下面的特性:
包括一个或多个数据文件或归档日志
以oracle专有的格式保存
有一个完全的所有的备份片集合构成
构成一个完全备份或增量备份

2.2. Backup pieces备份片

一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能大于使用的文件系统所支持的文件长度的最大值。

2.3. Image copies镜像备份

镜像备份是独立文件(数据文件、归档日志、控制文件)的备份。它很类似操作系统级的文件备份。它不是备份集或备份片,也没有被压缩。

2.4. Full backup sets全备份集合

全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被备份的,也就是说,oracle 进行备份集合的压缩。

2.5. Incremental backup sets增量备份集合

增量备份是指备份一个或多个数据文件的自从上一次同一级别的或更低级别的备份以来被修改过的数据块。 与完全备份相同,增量备份也进行压缩。

2.6. File multiplexing

不同的多个数据文件的数据块可以混合备份在一个备份集中。

2.7. Recovery catalog resyncing 恢复目录同步

使用恢复管理器执行backup、copy、restore或者switch命令时,恢复目录自动进行更新,但是有关日志与归档日志信息没有自动记入恢复目录。需要进行目录同步。使用resync catalog命令进行同步。

RMAN>resync catalog;

RMAN-03022:正在编译命令:resync
RMAN-03023:正在执行命令:resync
RMAN-08002:正在启动全部恢复目录的 resync
RMAN-08004:完成全部 resync

3. 恢复目录

3.1.恢复目录的概念

恢复目录是由RMAN使用、维护的用来放置备份信息的仓库。RMAN利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。

恢复目录可以存在于ORACLE数据库的计划中。

虽然恢复目录可以用来备份多个数据库,建议为恢复目录数据库创建一个单独的数据库。

恢复目录数据库不能使用恢复目录备份自身。

3.2.建立恢复目录

第一步,在目录数据库中创建恢复目录所用表空间:

SQL> create tablespace rman_ts datafile "d:\oracle\oradata\rman\rman_ts.dbf" size 20M;

表空间已创建。

第二步,在目录数据库中创建RMAN 用户并授权:

SQL> create user rman identified by rman default tablespace rman_ts temporary 
  tablespace temp quota unlimited on rman_ts;

用户已创建。

SQL> grant recovery_catalog_owner to rman;

授权成功。

SQL> grant connect, resource to rman;

授权成功。

第三步,在目录数据库中创建恢复目录

C:\>rman catalog rman/rman

恢复管理器:版本8.1.6.0.0 - Production

RMAN-06008:连接到恢复目录数据库
RMAN-06428:未安装恢复目录

RMAN>create catalog tablespace rman_ts;

RMAN-06431:恢复目录已创建

注意:虽然使用RMAN不一定必需恢复目录,但是推荐使用。因为恢复目录记载的信息大部分可以通过控制文件来记载,RMAN在恢复数据库时使用这些信息。不使用恢复目录将会对备份恢复操作有限制。

3.3.使用恢复目录的优势

可以存储脚本;

记载较长时间的备份恢复操作;

4. 启动RMAN

RMAN为交互式命令行处理界面,也可以从企业管理器中运行。

为了使用下面的实例,先检查环境符合:

  the target database is called "his" and has the same TNS alias
user rman has been granted "recovery_catalog_owner "privileges
目标数据库的连接用户为internal帐号,或者以其他SYSDBA类型帐号连接  
the recovery catalog database is called "rman" and has the same TNS alias
the schema containing the recovery catalog is "rman" (same password)

在使用RMAN前,设置NLS_DATE_FORMAT 和NLS_LANG环境变量,很多RMAN LIST命令的输出结果是与日期时间相关的,这点在用户希望执行以时间为基准的恢复工作也很重要。

下例是环境变量的示范:

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS

为了保证RMAN使用时能连接恢复目录,恢复目录数据库必须打开,目标数据库至少要STARTED(unmount),否则RMAN会返回一个错误,目标数据库必须置于归档模式下。

4.1.使用不带恢复目录的RMAN

设置目标数据库的 ORACLE_SID ,执行:

% rman nocatalog
RMAN> connect target
RMAN> connect target internal/<PASSWORD>@his

4.2.使用带恢复目录的RMAN

% rman rman_ts rman/rman@rman
RMAN> connect target

% rman rman_ts rman/rman@rman target internal/<PASSWORD>@his

4.3.使用RMAN

一旦连接到目标数据库,可以通过交互界面或者事先存储的脚本执行指定RMAN命令,下面是一个使用RMAN交互界面的实例:

RMAN> resync catalog;
RMAN-03022:正在编译命令:resync
RMAN-03023:正在执行命令:resync
RMAN-08002:正在启动全部恢复目录的 resync
RMAN-08004:完成全部 resync

使用脚本的实例:

RMAN> execute script alloc_1_disk;

创建或者替代存储的脚本:

RMAN> replace script alloc_1_disk { 
   2> allocate channel d1 type disk;
   3> }

5.注册或者注销目标数据库

5.1.注册目标数据库

数据库状态:

恢复目录状态:打开

目标数据库:加载或者打开

目标数据库在第一次使用RMAN之前必须在恢复目录中注册:

第一步,启动恢复管理器,并且连接目标数据库:

C:\>rman target internal/oracle@his catalog rman/rman@rman
恢复管理器:版本8.1.6.0.0 - Production
RMAN-06005:连接到目标数据库:HIS (DBID=3021445076)
RMAN-06008:连接到恢复目录数据库

第二步,注册数据库:

RMAN> register database;
RMAN-03022:正在编译命令:register
RMAN-03023:正在执行命令:register
RMAN-08006:注册在恢复目录中的数据库
RMAN-03023:正在执行命令:full resync
RMAN-08002:正在启动全部恢复目录的resync
RMAN-08004:完成全部resync

5.2.注销目标数据库

RMAN提供了一个注销工具,叫DBMS_RCVCAT工具包,请注意一旦注销了该目标数据库,就不可以使用恢复目录中含有的备份集来恢复数据库了。

为了能注销数据库,需要获得数据库的标识码(DB_ID)和数据库键值(DB_KEY)。其中连接目标数据库时将会获得DB_ID。

C:\>rman target internal/oracle@his catalog rman/rman@rman
恢复管理器:版本8.1.6.0.0 - Production
RMAN-06005:连接到目标数据库:HIS (DBID=3021445076)
RMAN-06008:连接到恢复目录数据库

其中DBID=3021445076,利用DBID=3021445076查询数据库键值码,连接到目标数据库,查询db表:

SQL> select * from db;

  DB_KEY     DB_ID      CURR_DBINC_KEY
  ---------- ---------- --------------
  1          3021445076 2

获得DB_KEY=1,这样,该目标数据库DB_KEY=1,DBID=3021445076,利用两个值使用DBMS_RCVCAT工具包就可以注销数据库:

SQL> execute dbms_rcvcat.unregisterdatabase(1,3021445076);
PL/SQL 过程已成功完成。

至此,注销数据库操作完成。

6.操作已有的备份

6.1.加入目录数据库

数据库状态:

恢复目录:打开

目标数据库:加载或者打开

如果存在8.x版本以前创建的备份数据想注册到目标数据库,可以采用如下手工方式加入到恢复目录中

RMAN> catalog datafilecopy "/oracle/ .... /system01.dbf";

使用如下命令显示恢复目录中包含的文件

RMAN> list copy of database;

6.2.从目录数据库中删除

第一步:查看备份信息:

RMAN>list backup;
RMAN-03022:正在编译命令:list

备份集列表

关键字  Recid      标记       LV 集合标记   集合计数   完成时间
------- ---------- ---------- -- ---------- ---------- ----------------------
1104    2          501364455  0  501364446  2          06-8月 -03

备份段列表

关键字  Pc# Cp# 状态        完成时间               段名
------- --- --- ----------- ---------------------- ------------------------
1106    1   1   AVAILABLE   06-8月 -03             D:\ORACLE\ORA81\DATABASE\02EU4DMU_1_1

数据文件包括列表

文件 名称                                  LV 类型 检查点SCN  检查点时间
---- ------------------------------------- -- ---- ---------- -------------
   3 D:\ORACLE\ORADATA\HIS\USERS01.DBF      0 Full 160052     06-8月 -03

备份集的关键字为1104。

第二步:定义delete通道:

RMAN>allocate channel for delete type disk;
RMAN-03022:正在编译命令:allocate
RMAN-03023:正在执行命令:allocate
RMAN-08030:分配的通道:delete
RMAN-08500:通道 delete:sid=19 devtype=DISK

第三步:删除backupset备份集

RMAN>change backupset 1104 delete;
RMAN-03022:正在编译命令:change
RMAN-08073:已删除备份段
RMAN-08517:备份段 handle=D:\ORACLE\ORA81\DATABASE\02EU4DMU_1_1 recid=2 stamp=50 1364447
RMAN-03023:正在执行命令:partial resync
RMAN-08003:启动部分恢复目录的 resync
RMAN-08005:完成部分 resync

注意:部分执行删除备份集、备份片或者维护恢复目录的命令,需要先指定通道,如:

RMAN>allocate channel for delete type disk;

RMAN>allocate channel for maintenance type disk;

7.在非归档模式下备份

数据库状态:

恢复目录:打开

目标数据库:例程启动或者数据库加载

恢复目录数据库需要打开,目标数据库必须启动(或者加载)。因为目标数据库不在归档模式下,所以当进行备份恢复操作的时候数据库无法打开。不可以将表空间置于热备份模式上进行等同于文件系统级的拷贝,如果在非归档模式,数据库打开的状态下不能进行数据文件的备份。

7.1.数据库完全备份

RMAN> run {
   2> # backup the complete database to disk
   3> allocate channel dev1 type disk;
   4> backup
   5> full
   6> tag full_db_backup
   7> format "/oracle/backups/db_t%t_s%s_p%p"
   8> (database);
   9> release channel dev1;
  10> }

行#
2: 表明该行为注释行(#是注释符)
3&9: See section 15 - Channels通道定义
5: Full backup (default if full or incremental not specified)完全备份模式(缺省模式)
6: Meaningful string (<=30 chars)(备份集标识,<=30个字符)
7: Filename to use for backup pieces, including substitution variables. 备份片使用的文件名,可以包含代替变量。
8: Indicates all files including controlfiles are to be backed up表明备份所有数据文件包括控制文件

通过下面的命令显示恢复目录中记载的备份集信息:

RMAN> list backupset of database;

7.2.备份表空间

RMAN> run {
   2> allocate channel dev1 type disk;
   3> backup
   4> tag tbs_users_read_only
   5> format "/oracle/backups/tbs_users_t%t_s%s"
   6> (tablespace users)
   7> }

使用下列命令来显示恢复目录中该表的备份信息:

RMAN> list backupset of tablespace users;

假设USERS表空间在备份后被置为READ ONLY表空间,以后的全库备份就可以不用备份该表空间,为了达到这个目的,可以在以后的备份中指定"skip readonly"。

注意,目标数据库不需要一定打开,只要加载就可以,因为表空间的信息存储在控制文件中。

7.3.备份单独数据文件

RMAN> run {
   2> allocate channel dev1 type "SBT_TAPE";
   3> backup
   4> format "%d_%u"
   5> (datafile "/oracle/dbs/sysbigdb.dbf");
   6> release channel dev1;
   7> }

行#
2: 使用MML(media manager layer)分配磁带驱动器,必须指定类型为SBT_TAPE;

注意因为没有指定标识,所以标识为空;

使用下面的命令显示恢复目录中备份的表空间:

 RMAN> list backupset of datafile 1;

7.4.备份数据文件

RMAN> run {
   2> allocate channel dev1 type "SBT_TAPE";
   3> copy datafile "/oracle/dbs/temp.dbf" to "/oracle/backups/temp.dbf";
   4> release channel dev1;
   5> }

使用下面的命令显示恢复目录中的文件拷贝:

RMAN> list copy of datafile "/oracle/dbs/temp.dbf";

拷贝数据文件和备份数据文件是不一样的,数据文件拷贝是一个该文件的镜像。文件的备份产生一个备份集。

7.5.备份控制文件

RMAN> run { 
   2> allocate channel dev1 type "SBT_TAPE";
   3> backup
   4> format "cf_t%t_s%s_p%p"
   5> tag cf_monday_night
   6> (current controlfile);
   7> release channel dev1;
   8> }

注意:数据库完全备份将自动备份控制文件。

8.归档模式下的备份

数据库状态:

恢复目录:打开

目标数据库:例程启动,数据库加载或者打开

备份操作使用的命令与非归档模式下基本一样。

8.1. Backing up archived logs 备份归档日志

下面的脚本备份归档日志:

RMAN> run {
   2> allocate channel dev1 type disk;
   3> backup
   4> format "/oracle/backups/log_t%t_s%s_p%p"
   5> (archivelog all)
   6> release channel dev1;
   7> }

下面的脚本归档日志从# 90 to 100:

RMAN> run {
   2> allocate channel dev1 type disk;
   3> backup
   4> format "/oracle/backups/log_t%t_s%s_p%p"
   5> (archivelog from logseq=90 until logseq=100 thread 1);
   6> release channel dev1;
   7> }

下面的脚本备份在24小时内产生的归档日志,在备份完成后会自动删除归档日志。如果备份失败,归档日志不会被删除。

RMAN> run {
   2> allocate channel dev1 type disk;
   3> backup
   4> format "/oracle/backups/log_t%t_s%s_p%p"
   5> (archivelog from time "sysdate-1" all delete input);
   6> release channel dev1;
   7> }

使用下面的命令显示恢复目录中的归档日志:

RMAN> list backupset of archivelog all;

注意:RMAN找到归档日志后会备份指定日志,如果无法找到日志,它也不会返回错误信息。

8.2. Backing up the online logs 备份联机日志

联机日志不能用RMAN来备份,必须先将其归档。

为了实现这点,必须在RMAN中执行如下SQL语句:

RMAN> run {
   2> allocate channel dev1 type disk;
   3> sql "alter system archive log current";
   4> backup
   5> format "/oracle/backups/log_t%t_s%s_p%p"
   6> (archivelog from time "sysdate-1" all delete input);
   7> release channel dev1;
   8> }

上面的脚本可以在执行完一个完整的联机数据库备份后执行,确保所有的重做日志可以将数据库恢复到一个一致性的状态。

注意:不可以标识归档日志备份集。

9. 增量备份

N级别增量备份备份从最近的N级别或者更小级别以来的所有更改过的数据块内容。增量备份分为两种,一种是累积增量备份,一种是非累积增量备份。

累积增量备份包括自最后一次在更低级别进行备份以来所有改动过的数据块。

非累积增量备份包括自前一次在同级或者更低级别进行备份以来改动过的数据块。

9.1. Level 0--增量备份策略的基础

Level 0 是增量备份策略的基础--the basis of the incremental backup strategy

RMAN> run {
   2> allocate channel dev1 type disk;
   3> backup
   4> incremental level 0
   5> filesperset 4
   6> format "/oracle/backups/sunday_level0_%t"
   7> (database);
   8> release channel dev1;
   9> }

Line#
4: 0级备份
5: 定义每个backupset 的最大文件数

使用LIST语句查看,数据库备份集的列表显示中, "type" 将显示 "Incremental","LV"列将显示"0" 。

9.2. 使用增量备份的案例

一个典型的增量备份案例如下:
星期天晚上 - level 0 backup performed
星期一晚上 - level 2 backup performed
星期二晚上 - level 2 backup performed
星期三晚上 - level 1 backup performed
星期四晚上 - level 2 backup performed
星期五晚上 - level 2 backup performed
星期六晚上 - level 2 backup performed
星期天晚上 - level 0 backup performed

10. 恢复

恢复案例如下:

10.1. Database open,datafile deleted 数据库打开时,文件被删除

数据文件在数据库打开时被删除。有两种方法可以对打开的数据库进行恢复:还原数据文件或者表空间。下面两个实例显示了该方法:

(a) Datafile recovery 数据文件恢复

RMAN> run {
   2> allocate channel dev1 type disk;
   3> sql "alter tablespace users offline immediate";
   4> restore datafile 4;
   5> recover datafile 4;
   6> sql "alter tablespace users online";
   7> release channel dev1;
   8> }

(b) Tablespace recovery 表空间恢复

RMAN> run {
   2> allocate channel dev1 type disk;
   3> sql "alter tablespace users offline immediate";
   4> restore tablespace users;
   5> recover tablespace users;
   6> sql "alter tablespace users online";
   7> release channel dev1;
   8> }

注意:如果还原系统表空间文件,数据库必须关闭,因为系统表空间不可以脱机。

10.2. Complete restore (lost online redo) and rollforward - database closed 完全还原(丢失联机日志)并且前滚 - 数据库关闭

RMAN> run {
   2> allocate channel dev1 type disk;
   3> set until logseq=105 thread=1;
   4> restore controlfile to "/oracle/dbs/ctrltargdb.ctl";
   5> replicate controlfile from "/oracle/dbs/ctrltargdb.ctl";
   6> restore database;
   7> sql "alter database mount";
   8> recover database;
   9> sql "alter database open resetlogs";
  10> release channel dev1;
  11> }

Notes:
"set until" 命令指明恢复到指定的日志文件。这一点在数据文件恢复时很重要,否则RMAN将试图恢复最近的数据文件,该数据文件可能在指定的日志以前。
"replicate controlfile" 复制还原的控制文件到INIT.ORA指定的控制文件。

如果数据库使用WITH RESETLOGS打开,则需要使用RESET DATABASE命令注册改变后的数据库。在使用RESETLOGS命令打开数据库后强烈建议做一个完全的数据库备份。

10.3. 还原数据文件的子集,完全恢复

RMAN> run {
   2> allocate channel dev1 type disk;
   3> sql "alter database mount";
   4> restore datafile 2;
   5> restore datafile 3;
   6> restore archivelog all;
   7> recover database;
   8> sql "alter database open";
   9> release channel dev1;
  10> }

11. 脚本

创建或者取代脚本:

RMAN> create script alloc_disk {
   2> # Allocates one disk
   3> allocate channel dev1 type disk;
   4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;
   5> }

RMAN> replace script rel_disk {
   2> # releases disk
   3> release channel dev1;
   5> }

RMAN> replace script backup_db_full {
   2> # Performs a complete backup 
   3> execute script alloc_disk;
   4> backup
   5> .....
   6> execute script rel_disk;
   7> }

前两个脚本分别用来分配和回收通道。

alloc_disk 脚本还额外指定了备份片的最大兆字节数,备份时可以同时打开的输入文件的最大数目,以及每秒钟读每个输入文件的数据缓冲区的最大数目。

第三个脚本调用先前存储的两个脚本进行数据库备份。

运行存储脚本的示范:

RMAN> run {
   2> execute script backup_db_full;
   3> }

注意:存储的脚本必须在{ .... execute <script>; ....}命令中调用。

12. Corruption detection

RMAN可以备份包含损坏数据块的数据文件,查询视图V$BACK_CORRUPTION和V$COPY_CORRUPTION可以获得有关坏数据的信息。

通过设置 set maxcorrupt 可以跳过指定个数的坏块来避免备份失败。

RMAN> replace script backup_db_full {
   2> # Performs a complete backup
   3> execute script alloc_disk;
   4> set maxcorrupt for datafile 1 to 0;
   5> backup
   6> .....
   7> execute script rel_disk;
   8> }

上面的脚本maxcorrupt for datafile 1 to 0设置为0,所以如果有错误数据块在数据文件1中发现,上面的脚本执行就会失败。

13. 通道

一个通道是RMAN和目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的I/O类型

通道控制命令可以用来:
控制RMAN使用的O/S资源
影响并行度
指定I/O带宽的限制值(设置limit read rate参数)
定义备份片大小的限制(设置limit kbytes)
指定当前打开文件的限制值(设置limit maxopenfiles)

14. Report & list commands

14.1. List

list命令查询恢复目录并且产生格式化的查询内容:

 RMAN> list backupset of datafile 1;

  

  Key File Type LV Completion_time Ckp SCN Ckp Time

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

  165 1  Full Oct 03 11:24 32022 Oct 03 11:24

  208 1  Full Oct 24 14:27 52059 Oct 24 14:26

  219 1  Full Oct 24 14:31 52061 Oct 24 14:31

  << other entries here >>

  

  RMAN> list backupset of archivelog all;

  

  Key Thrd Seq Completion time

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

  179 1 94 Oct 03 11:26

  179 1 95 Oct 03 11:26

  << other entries here >>

14.2. Report

REPORT命令同样可以查询恢复目录,但是REPORT命令语法可以构建获得更为有用的信息的指令,REPORT命令输出可以保存到消息日志文件中,但是必须在连接恢复目录时指定MSGLOG或者LOG选项。

可以列出所有数据库中不能恢复的文件列表:

 RMAN> report unrecoverable database;

显示全部数据文件:

RMAN> report schema;
RMAN-03022:正在编译命令:report 数据库模式报表
文件    千字节     表空间    RB     segs 名称 
1       121472     SYSTEM    YES    D:\ORACLE\ORADATA\HIS\SYSTEM01.DBF 
2       327680     RBS       YES    D:\ORACLE\ORADATA\HIS\RBS01.DBF 
3       110592     USERS     NO     D:\ORACLE\ORADATA\HIS\USERS01.DBF 
4       73728      TEMP      NO     D:\ORACLE\ORADATA\HIS\TEMP01.DBF 
5       12288      TOOLS     NO     D:\ORACLE\ORADATA\HIS\TOOLS01.DBF 
6       59392      INDX      NO     D:\ORACLE\ORADATA\HIS\INDX01.DBF

15. 小提示

经常同步恢复目录

确认删除不需要的归档日志

二、rman总结

备份策略简单原则
rman作为oracle备份最为方便的工具,以下就总结几条常用的命令,希望能方便大家,也希望可以申请授权: 
1、首先使用rman前,需要建一个目录数据库 
2、create tablespce rman datafile '/data/oradata/test/rman.dbf' size 20m; 
3、create user rman identified by rman default tablespace rman temporary tablespace temp; 
4、grant connect,resource,recovery_catalog_ower to rman; 
以上建库和建用户基本成功,接着: 
1、rman target sys/manager@ora8 catalog rman/rman@rman 
2、register database (同步数据库,如果数据库做了alter database open resetlogs,就需要reset database,如果有库结构变化,就需要 

resync catalog) 
3、create script back { 
allocate channel n1 type disk; 
backup database 
format '/data/backup/ora8_%d_%s_%p'; 
release channel n1;} 
4、如果是备份固定的文件或表空间也可以 
create script back_file{ 
allocate channel n1 type disk; 
copy  
datafile 4 to '/data/backup/users.dbf'; 
release channel n1;} 
create script back_tablespace{ 
allocate channel m1 type disk; 
backup tablespace users 
format '/data/backup/users_%t_%s_%p'; 
release channel n1;} 
使用copy就是文件镜像保存,使用backup就是用oracle专有的格式保存,支持压缩等等,此处就不细说了! 
5、执行备份 
run{execute script back;} 
等等! 
以上说了备份数据库,下面是恢复数据库 
1、rman target sys/manager@ora8 catalog rman/rman@rman 
2、run{ 
allcote channel n1 type disk; 
sql "alter tablespce users offline immediate"; 
restore tablespace users; 
recover tablespace users; 
sql "alter tablespace user online"; 
release channel n1;} 
3、run{ 
allocate channel n1 type disk; 
restore database; 
recover database; 
sql "alter database open resetlogs"; 
release channel n1;} 
4、run{ 
allocate channel n1 type disk; 
restore datafile 4; 
release channel n1;} 

以上都是一些基本的rman操作,如有错误之处,希望被指出














本文转自xiaocao1314051CTO博客,原文链接:http://blog.51cto.com/xiaocao13140/1933642 ,如需转载请自行联系原作者


相关文章
|
12天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
50 11
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
18天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
13天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
87 15
|
6天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
13天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
17天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
25天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
39 1

推荐镜像

更多
下一篇
DataWorks