现在的位置: 首页 > 综合 > 正文

冷/热/逻辑备份与恢复

2012年08月12日 ⁄ 综合 ⁄ 共 2493字 ⁄ 字号 评论关闭

冷/热/逻辑是ORACLE中最基本的三种备份与恢复,也是最简单的、最原始的,它们在8i之前就出现了,不过优点不如恢复管理器RMAN多,但RMAN是8i之后才出现的,同时8i开始出现的STANDBY(9i后叫DATA GUARD),是一种更高级的数据库备份与恢复

................

对于数据库比较小,也不是7X24,用这三种基本备份就足够保存数据安全性,但不如RMAN好;对于数据库超大的或是7X24的,只有用STANDBY方式。

下面先说说这三种基本备份与恢复,RMAN和STANDBY以后再说

一、逻辑备份与恢复

1、备份。就是用exp程序导出数据库的对象,一般都用全部是导出,语法:$ORACLE_HOME/bin/exp system/manager@prod file=/oracle/backup/oradata/expprod.dmp full=y log=/oracle/backup/log/explog.log

当然也可以按用户/表模式来导出,所有导出选项可以通过

$ORACLE_HOME/bin/exp help=y获得

2、恢复。就是用imp程序从备份文件中导入全部对象,语法:

$ORACLE_HOME/bin/imp system/manager@prod file=/oracle/backup/oradata/expprod.dmp full=y log=/oracle/backup/log/implog.log

注意,导入后可能有些对象要重新编译才使用。

逻辑备份与恢复对于大点的数据库是不合适的,因为速度很慢,不过从10g开始,逻辑备份提供了expdb/impdb两种高速导出/导入方式,用这两种方式必须在数据库中创建一目录create or replace directory DMPDIR as '/oracle/backup/oradata'

创建目录后就可以跟exp/imp一样导出/导入了语法:

$ORACLE_HOME/bin/expdp system/manager DIRECTORY=DMPDIR DUMPFILE=expdpprod.dmp full=y

其中DMPDIR就是在数据库中创建的目录对象

二、冷备份与恢复

1、备份。就是关闭数据库,然后用操作系统的复制命令,把数据文件、日志文件、控制文件、初始化参数文件COPY到备份目录

--备份所有数据文件

cp $ORACLE_BASE/oradata/*.dbf /oracle/backup/oradata/*.dbf

--备份所有日志文件

cp $ORACLE_BASE/oradata/*.log /oracle/backup/oradata/*.log

...

2、恢复。关闭目标数据库,用操作系统的复制命令,把数据文件、日志文件、控制文件、初始化参数文件从备份目录COPY到相应的数据库目录

--恢复所有数据文件

cp /oracle/backup/oradata/*.dbf $ORACLE_BASE/oradata/*.dbf

--恢复所有日志文件

cp /oracle/backup/oradata/*.log $ORACLE_BASE/oradata/*.log

...

三、热备份与恢复

要用热备份,首要把数据库置于归档模式

--用archive log list查看数据库是否处于归档模式

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

...

--数据库不在归档模式,要关闭重新装载才能修改

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 171966464 bytes

Fixed Size 787988 bytes

Variable Size 145750508 bytes

Database Buffers 25165824 bytes

Redo Buffers 262144 bytes

Database mounted.

--更改数据库置于归档模式

SQL> alter database archivelog;

Database altered.

--再用archive log list可以看到数据库处于归档模式

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

...

SQL> alter database open;

Database altered.

至此,数据库已置于归档模式,可以对数据库进行热备份了

1、备份

--备份表空间(注意释放锁住SCN的数据文件)

alter tablespace 表空间名 begin backup

!cp 表空间的数据文件 /oracle/backup/data/

alter tablespace 表空间名 end backup

...

--备份归档日志

!cp $LOG_ARCHIVE_DEST/* /oracle/backup/log/*

--备份控制文件

alter database backup controlfile to '/oracle/backup/ctlfile.bak'

2、恢复

--关闭数据库

shutdown immediate;

--恢复数据文件和归档日志

!cp oracle/backup/data/* $ORACLE_BASE/oradata/*

!cp oracle/backup/log/* $ORACLE_BASE/oradata/*

--不完全恢复

startup mount

recover database until time 'yyyy-mm-dd hh24:mi:ss';

--打开数据库并重置日志

alter database open resetlogs

这里的热备份恢复是一种很简单的不完全恢复,还有其他的几种不完全恢复;除了不完全恢复之外,还有完全恢复;不完全恢复与完全恢复是两种不同的概念,以后再说

抱歉!评论已关闭.