Chinaunix首页 | 论坛 | 博客
  • 博客访问: 898619
  • 博文数量: 206
  • 博客积分: 10276
  • 博客等级: 上将
  • 技术积分: 2358
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-01 02:41
文章分类

全部博文(206)

文章存档

2014年(1)

2013年(1)

2012年(2)

2011年(10)

2010年(14)

2009年(15)

2008年(33)

2007年(90)

2006年(40)

我的朋友

分类: Oracle

2008-09-05 07:53:29

接上

 

4.4.3  非归档模式下的  BACKUP  备份与恢复

 

 

恢复目录:    打开

目标数据库:例程启动,数据库加载,mount  不能 open

因为目标数据库不在归档模式下,所以当进行备份/恢复操作的时候数据库无法打

开。目标数据库只能在  MOUNT 状态不能 Open,所以属于脱机备份。

非归档模式不备份 redo日志,只有完全备份和 readonly/offline表空间和数据文件 备份是有意义的,所以非归档模式最好不用 RMAN进行备份,备份语法与归档模式相同,所以这里只做简单介绍。

4.4.3.1  全库备份

 

例:  使用默认的设置脱机全备份的语句

 

RMAN> shutdown immediate;

RMAN> startup mount;

RMAN> backup database;

RMAN> startup;

 

例:不使用默认的设置执行脱机备份操作  ,在备份命令中指定备份选项

 

 

RMAN> shutdown immediate;

RMAN> startup mount;

RMAN> run {

allocate channel c1 type disk format '/xxx/ming_%U';

 

allocate channel c2 type disk format '/xxx/ming_%U';

backup full tag full_db_backup format "/backups/db_t%t_s%s_p%p" (database);

backup current controlfile;

release channel c1 ;

release channel c2 ;

}

 

在这个例子中,我们分配了两个通道,备份位置是在/xxx。默认情况下,如果备份数据

文件 1 (SYSTEM  表空间),控制文件和参数文件也会备份。可以通过下面的命令显示恢复目录中记载的备份集信息: RMAN> list backupset of database;

 

4.4.3.2  全库备份的恢复

 

$ rman target /

RMAN> startup mount

RMAN> restore database;

RMAN> recover database;

RMAN> alter database open resetlogs;

 

4.4.3.3  表空间备份

 

只有 readonly/offline表空间的备份才有意义。

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;

 

 

4.4.3.4  表空间备份的恢复

 

RMAN> RUN{

sql "alter tablespace xx offline immediate;"

restore tablespace xx;

recover tablespace xx;

 

sql "alter tablespace xx online;"

}

 

4.4.3.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> }

 

注:数据库完全备份将自动备份控制文件。(或者备份时加 include current controlfile)

 

4.4.4  归档模式下的BACKUP备份与完全恢复

 

要用  RMAN  进行联机备份操作,数据库就必须位于  ARCHIVELOG  模式。恢复 目录必须打开,目标数据库例程必须启动,数据库加载或者打开。

这部分只介绍完全恢复,不完全恢复见下一节。

4.4.4.1  整库备份与恢复备份命令:

只备份数据文件  (如果 configure controlfile autobackup  on;  将自动包括控件文件,

SPFILE)

RMAN> backup database;

同时备份归档日志,然后将备份后的归档日志删除

RMAN> backup database plus archivelog delete input;

明确指定同时备份控件文件:

RMAN> run{

allocate channel c1 type disk;

sql 'alter system archive log current';

backup full database include current controlfile tag 'dbfull'

format '/u06/oracle/rmanback/full_%u_%s_%p';

sql 'alter system archive log current';

release channel c1;

}

 

可以用 RMAN plus archvielog 选项简化数据库备份:

RMAN> run {

2> backup database

3> format '/xxfull%d_%T_%s'

4> plus archivelog

5> format '/xx/arch_%d_%T_%s'

6> delete all input;

7> }

 

完全恢复:

目标数据库必须是 mount状态

$ rman target /

RMAN> startup mount

RMAN> restore database;

RMAN> recover database;

RMAN> alter database open;

 

4.4.4.3  表空间的备份与恢复

 

备份命令:

RMAN> backup tablespace users ;

例:

RMAN> RUN{

allocate channel c1 type disk;

backup tablespace users tag 'ts_users' format '/oracle/rmanback/ts_%u_%s_%p' ;

release channel c1;

}

 

恢复:

如果我们只丢失了特定的表空间的数据文件,那么我们可以选择只恢复这个表空间,而 不是恢复整个数据库。表空间恢复可以在不关闭数据库的情况下进行,只需要将需要恢复的表空间 offline

 

RMAN> RUN{

sql "alter tablespace xx offlineimmediate;"

restore tablespace xx;

recover tablespace xx;

sql "alter tablespace xx online;"

}

 

恢复到一个不同的位置:

 

RMAN> RUN{

sql "alter tablespace xx offline immediate;"

SET NEWNAME for datafile 1 to '/xx';

restore tablespace xx;

switch datafile 1;

recover tablespace xx;

sql "alter tablespace tbs1 online;"

}

 

4.4.4.3  数据文件的备份与恢复

 

备份命令:

RMAN> backup datafile 3;

RMAN> backup datafile 'D:\ORAC LE\ORADATA\TEST\TEST.DB';

 

恢复命令:

数 据文件 恢复与表 空间恢 复类 似 。假设数 据文件 号 为  5  的文件丢失 ,文 件名 是:

'E:\ORACLE\ORADATA\USERS.DBF'  那么我们恢复的时候可以指定文件号,也可以指定

文件名。

 

RMAN> run {

2> allocate channel dev1 type disk;

3> sql "alter tablespace users offline immediate";

4> restore datafile 4;    --或者  restore 'E:\ORACLE\ORADATA\USERS.DBF'

5> recover datafile 4;

6> sql "alter tablespace users online";

7> release channel dev1;

8> }

 

恢复到一个不同的位置:

$ rman target /

RMAN> startup mount

RMAN> RUN{

sql "alter tablespace users offline immediate";

SET NEWNAME for datafile 9 to '/xx/user01.dbf';

restore datafile 9;

switch datafile all;

recover datafile 9;

sql "alter tablespace users online";

}

 

待续。。。。。。 

阅读(1083) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~