ITPub博客

首页 > 数据库 > Oracle > 基于tsm的oracle数据库备份及恢复

基于tsm的oracle数据库备份及恢复

原创 Oracle 作者:lygle 时间:2014-05-07 16:45:17 0 删除 编辑

1.文件系统备份恢复操作

1.1 使用备份命令来备份文件系统

命令使用方法如下:  

全备份/tmp下的所有文件:

dsmc selective /tmp/* -subdir=yes

增量备份/tmp下的所有文件:

dsmc incremental /tmp/* -subdir=yes

1.2 使用命令行来恢复文件系统

命令使用方法如下:

恢复/tmp下的所有文件:

dsmc restore /tmp/* –subdir=yes

将/tmp/test1目录下的内容恢复到/tmp/test2/test1这个目录下

dsmc restore /tmp/test1/*  /tmp/test2/ -subdir=yes

显示某一文件的所有可恢复版本:

dsmc restore /tmp/test.out –pick –inactive

恢复某一目录在某一时间点状态:

dsmc restore –pitd=12/31/2006 –pitt=13:00:00 /tmp/

dsmc restore  GVSHX504_virtual_jukebox_53154ff0.iso –pick –inactive

 

1.3 现阶段文件系统备份脚本

         现阶段采用服务器上/ptfs/fs/script/下的

full_hostname.sh,incre_hostname.sh

使用tivoli帐号登录服务器后执行以下命令进行备份。

全备命令如下:

$sudo full_hostname.sh

增量备份命令如下:

$sudo incre_hostname.sh

2.数据库备份操作

2.1 备份Oracle数据文件

通过rman执行备份脚本如下:

RMAN> run

2> {

3> allocate channel t1 type 'sbt_tape' parms

4> 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

5> backup

6> filesperset 5

7> format 'df_%t_%s_%p'

8> (database);

9> }

2.2 数据库全备份

         数据库全备份包括数据文件,控制文件,spfile文件,归档日志文件,执行备份脚本如下:

run{

allocate channel t1 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

allocate channel t2 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

backup full tag 'dbfull' format 'dbfull_%t_%s_%p' diskratio=0 database include current controlfile;

sql 'alter system archive log current';

backup format 'arch%t_%s_%p' diskratio=0 archivelog all delete input;

release channel t1;

release channel t2;

}

2.3 删除过期备份

         删除90天以前的备份,执行脚本如下:

Run{

allocate channel for maintenance type 'sbt_tape' parms

'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

crosscheck backup;

crosscheck archivelog all;

report obsolete;

delete noprompt obsolete recovery window of 90 days;

delete noprompt expired backup;

release channel;

}

2.4 数据库增量备份

         备份脚本如下:

run{

allocate channel t1 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

allocate channel t2 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

backup incremental level 1 tag 'dbincr' format '%d_full_%s_%p' filesperset 5 diskratio=0 database include current controlfile;

sql 'alter system archive log current';

backup format 'arch%t_%s_%p' diskratio=0 archivelog all delete input;

release channel t1;

release channel t2;

}

2.5 查看已备份的数据

    查看数据库备份:

    RMAN>list backup of database;

    查看归档日志备份:

    RMAN>list backup of archivelog all;

2.6 现阶段数据库备份脚本s

现阶段脚本采用服务器上/ptfs/oracle/script/full或arch或incre)下的

full_hostname.sh,incre_hostname.sh,arch_hostname.sh

使用tivoli帐号登录服务器后执行以下命令进行备份。

全备命令如下:

$sudo full_hostname.sh

增量备份命令如下:

$sudo incre_hostname.sh

归档日志备份命令如下:

$sudo arch_hostname.sh

3.数据库恢复操作

3.1 恢复前准备

    输入dsmadmc进入TSM管理界面

    查找数据库备份所在存储池的磁带

TSMSERVER> q vol stg=hreccp_pool f=d

查询磁带中离所需恢复的时间最近的全备以及全备之后的增量备份和归档日志文件

TSMSERVER> q cont 912abfl5

检查驱动器是否备占用

    TSMSERVER> q mount

3.2 恢复spfile文件

    设置数据库DBID

    RMAN> set dbid=123456789

    使用缺省pfile启动数据库到nomount状态

    RMAN>startup nomont;

    从备份集中恢复spfile,执行命令如下:

run {

allocate channel c1 type 'sbt_tape' parms

 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

restore spfile to '/oracle/HHQ/102_64/dbs/ctl_restore.bak' from 'c-3146837030';

release channel c1;

}

         重新启动数据库到nomount状态

3.3 恢复控制文件

         从备份集中恢复控制文件,执行脚本如下:

run {

allocate channel c1 type 'sbt_tape' parms

 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

restore controlfile to '/oracle/HHQ/102_64/dbs/ctl_restore.bak' from

 'c-3146837030';

release channel c1;

}

    使用SQLPLUS,将数据库状态修改为MOUNT

    SQL>alter database open;

3.4 恢复数据文件

         从备份集中恢复数据文件,执行脚本如下:

run {

allocate channel c1 type 'sbt_tape' parms

 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

restore database from 'c-3146837030';

release channel c1;

}

3.5 以resetlogs方式打开数据库

使用recover对数据进行恢复到某一时点,打开数据库

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL TIME

'2013-06-05 16:57:31'

SQL> ALTER DATABASE OPEN RESETLOGS;

使用recover将数据恢复到最后一个归档日志结束,打开数据库

SQL> RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE;

SQL> ALTER DATABASE OPEN RESETLOGS;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28673746/viewspace-1156103/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-02-27

  • 博文量
    129
  • 访问量
    408516