备份及恢复(Zt)

备份及恢复

所有参见内容都在附件05_backup/下。

5.1 export与import方式

参见dmp/backup.sh。

见《工具》对exp和imp的描述

数据库中的对象是比较多的,但除了表以外占用的空间不大,所以当表中记录数量达到一定规模后,以用户的方式一下子把数据exp出来就显得不够灵活。考虑以下的策略,先exp出除表数据以外的所有对象,再分别exp出每张表的数据。
[@more@] 所有参见内容都在附件05_backup/下。

5.1 export与import方式

参见dmp/backup.sh。

见《工具》对exp和imp的描述

数据库中的对象是比较多的,但除了表以外占用的空间不大,所以当表中记录数量达到一定规模后,以用户的方式一下子把数据exp出来就显得不够灵活。考虑以下的策略,先exp出除表数据以外的所有对象,再分别exp出每张表的数据。

exp dbuser所有的数据对象

exp dbuser/oracle file=dbuser.dmp log=user.log owner=user buffer=2048000 rows=n

exp单张表的数据

sqlplus -s dbuser/oracle </dev/null

set colsep |;

set echo off;

set feedback off;

set heading off;

set pagesize 0;

set linesize 1000;

set termout off;

set trimout on;

set trimspool on;

spool tables.txt;

select table_name from user_tables;

spool off;

exit;

EOF

for table in $(cat tables.txt)

do

exp dbuser/oracle file=${table}_$(date '+%Y%m%d').dmp tables=$table direct=y

done

5.2 冷备份

shutdown数据库,将所有和本实例有关的文件,包括datafile,controlfile,redolog,archived redolog,initora.ora等全部备份。恢复时只要将这些文件放回从前的目录,startup数据库即可。

5.3 联机全备份+日志备份

5.3.1 设置

如果数据库实例原来没有使用归档日志功能,则必须进行配置修改

initoradb.ora:

log_archive_start = true #实例启动时同时启动归档进程。

log_archive_dest_1= "location=/appl/oracle/oradata/orafe/arch/arch" #归档日志目录。

打开归档日志功能:

shutdown数据库

sqlplus "/ as sysdba"

SQL>startup mount

SQL>alter database archivelog;

SQL>alter database open;

可用archive log list查看状态,去除归档日志功能的命令为alter database noarchivelog。

5.3.2 步骤

参见online/full.sh、daily.sh,以osdba组的用户执行

联机全备份:

数据库处于open状态,依次对各个表空间备份

sqlplus "/ as sysdba"

SQL>alter tablespace system begin backup;

复制此tablespace各个datafile

SQL>alter tablespace system end backup;

注意:据推测,begin backup是对tablespace冻结写入,end backup是解除冻结,因此复制datafile的过程不宜过长

备份controlfile

SQL>alter database backup controlfile to '…….';

日志备份:

sqlplus "/ as sysdba"

SQL>alter system archive log stop;

移去日志目录下的所有archived redolog

SQL>alter system archive log start;

5.3.3 恢复

数据库处于shutdown状态

最差情况:磁盘全部损坏,仅保存上次联机全备份和每天日志备份

解决硬件故障,配置系统软件及环境

oracle用户,将全备份和日志备份转移至相应目录,根据initoradb.ora中controlfile的配置,将备份控制文件复制到响应目录下

sqlplus "/ as sysdba"

SQL>startup mount

SQL>recover database until cancel using backup controlfile;

逐个确认待恢复的archived redolog,待最后一个完成后,键入cancel,使恢复结束

SQL>alter database open resetlogs;

注意:由于日志已经重置,所以应尽快做一次联机全备份

丢失某数据文件

只要将此文件从上次联机全备份中复制至其目录,并将自上次联机全备份以来所有日志备份移至归档目录

sqlplus "/ as sysdba"

SQL>startup mount

SQL>alter database recover datafile 'path/file';或者简单些recover database;

SQL>alter database open;

如果此文件损坏或丢失,又无备份,则只能将此文件脱机,将数据exp出来,重建表空间,再imp进去

sqlplus "/ as sysdba"

SQL>connect internal

SQL>startup mount

SQL>alter database datafile 'path/file' offline;

SQL>alter database open;

5.4 注意要点

无论有多少把握,恢复前先做冷备份,此为第一原则

不这样做,便是无路可退,一旦失误,后果不必多说。

rollback段损坏

这是非常严重的问题,可在initora.ora中写入_corrupted_rollback_segments=(rxx),启动时避开损坏的 rollback段,这只是权宜之计。如数据库处于archivelog,应从上一次全备份起利用备份的日志进行恢复;如数据库处于 noarchivelog,应尽快将全部数据export出来,重建数据库,再import进去。所有操作之前,应做冷备份。

数据库异常中止处理

通过手工shutdown abort操作中止数据库,不会产生大的问题,通常直接startup无需使用介质恢复命令

如果由于机器崩溃引起的中止,则情况严重得多,有可能要使用到上面提到的恢复方法,不过这种现象并不多见。一般需要显式使用介质恢复命令,如下:

sqlplus "/ as sysdba"

SQL>startup mount;

SQL>recover database;

SQL>alter database open;

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

转载于:http://blog.itpub.net/7275929/viewspace-918353/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值