转 oracle的热备份和冷备份
一、冷备份介绍:
冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。此外冷备份也可以包含对参数文件和口令文件的备份,但是这两种备份是可以根据需要进行选择的。,冷备份实际也是一种物理备份,是一个备份数据库物理文件的过程。因为冷备份要备份除了重做日志以外的所有数据库文件,因此也被成为完全的数据库备份。它的优缺点如下所示:
1、优点:
<1>只需拷贝文件即可,是非常快速的备份方法。
<2>只需将文件再拷贝回去,就可以恢复到某一时间点上。
<3>与数据库归档的模式相结合可以使数据库很好地恢复。
<4>维护量较少,但安全性确相对较高。
2、缺点:
<1>在进行数据库冷备份的过程中数据库必须处于关闭状态。
<2>单独使用冷备份时,数据库只能完成基于某一时间点上的恢复。
<3>若磁盘空间有限,冷备份只能将备份数据拷贝到磁带等其他外部存储上,速度会更慢。
<4>冷备份不能按表或按用户恢复。
3、具体备份步骤如下:
<1>以DBA用户或特权用户登录,查询动态性能视图v$datafile、v$controlfile可以分别列出数据库的数据文件以及控制文件。
SQL> select name from v$datafile;NAME
--------------------------------------------------------------------------------
/u02/oradata/db01/system01.dbf
/u02/oradata/db01/undotbs01.dbf
/u02/oradata/db01/sysaux01.dbf
/u02/oradata/db01/users01.dbfSQL> select name from v$controlfile;NAME
--------------------------------------------------------------------------------
/u02/oradata/db01/control01.ctl
/u02/oradata/db01/control02.ctl
/u02/oradata/db01/control03.ctl
/u01/app/oracle/bak/control04.ctl<2>以DBA用户或特权用户关闭数据库。SQL> conn / as sysdba;
Connected.
SQL> shutdown normal
Database closed.
Database dismounted.
ORACLE instance shut down.<3>复制数据文件,复制时应该将文件复制到单独的一个硬盘或者磁盘上。控制文件是相互镜像的,因此只需复制一个控制文件即可。cp /u02/oradata/db01/*.dbf /u01/app/oracle/bakcp /u02/oradata/db01/*.ctl /u01/app/oracle/bak<4>启动例程打开数据库。SQL> conn / as sysdba;
Connected to an idle instance.
SQL> startup
ORACLE instance started.Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 83887696 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL>
二、热备份:
热备份是在数据库运行的情况下,采用archive log mode方式备份数据库的方法。热备份要求数据库处于archive log模式下操作,并需要大量的档案空间。一旦数据库处于archive loh
模式,就可以进行备份了,当执行备份时,只能在数据文件级或表空间进行。
1、优点:
<1>可在表空间或数据文件级备份,备份时间短。
<2>可达到秒级恢复(恢复到某一时间点上)。
<3>可对几乎所有数据库实体作恢复。
<4>恢复是快速的,在大多数情况下在数据库仍工作时恢复。
<5>备份时数据库仍可用。
2、缺点:
<1>因难以维护,所以要特别仔细小心,不允许“以失败而告终”。
<2>若热备份不成功,所得结果不可用于时间点的恢复。
<3>不能出错,否则后果严重。
3、设置初始归档模式:
设置归档模式数据库必须处在mount而非open状态下:
<1>首先查看数据库是否处在archive log模式下:
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Current log sequence 2
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Current log sequence 2
<2>在mount状态下启动数据库:
SQL> startup mount;
ORACLE instance started.
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 83887696 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
Database mounted.
Fixed Size 1218992 bytes
Variable Size 83887696 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
Database mounted.
<3>设置数据库为归档模式:
SQL> alter database archivelog;
Database altered.
<4>打开数据库:
SQL> alter database open;Database altered.<5>将数据库设置成自动归档,使用以下命令:SQL> alter system set log_archive_start=true scope=spfile;System altered.<6>确定数据库处于归档模式下,并且设置自动存档:SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Next log sequence to archive 2
Current log sequence 2上面的Archive destination所定义的具体位置,可以查看$ORACLE_HOME/dbs/spfile<dbname>.ora文件中的db_recovery_file_dest参数的值。
4、联机备份:
联机备份是热备份的一种备份方法,是指当表空间处于ONLINE状态时,备份表空间的所有数据文件和单个数据文件的过程。使用联机备份的优点是不影响用户在表空间上的所有访问操作,但联机备份的缺点可能生产更多的重做日志文件和归档日志文件。以下是联机备份的具体步骤:
<1>以DBA用户或特权用户登录,确定表空间所包含的数据文件。通过查询数据字典DBA_DATA_FILES,可以得到数据文件和表空间的对应关系:
SQL> select file_name from dba_data_files where tablespace_name='USERS';FILE_NAME
--------------------------------------------------------------------------------
/u02/oradata/db01/users01.dbf<2>设置表空间为备份模式,在复制表空间的数据文件之前必须将表空间设置成为备份模式:SQL> alter tablespace users begin backup;Tablespace altered.<3>复制users数据文件到备份目录:[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak<4>复制后表空间就不需要设置成为备份模式了,因此可以将其返回正常模式:SQL> alter tablespace users end backup;Tablespace altered.
5、脱机备份:
脱机备份也是热备份的一种方法,是指当表空间处于offline时,备份表空间的所有数据文件以及单个数据文件的过程。它的优点是会生产较少的重做日志文件,缺点是当用户正在进行脱机备份时所备份的表空间将不能访问,由于SYSTEM系统表空间和正在使用的UNDO表空间不能被脱机,因此脱机备份不适用于SYSTEM表空间和正在使用的UNDO表空间。
<1>使用DBA用户或特权用户登录,确定表空间所包含的数据文件。这个和联机备份的第一步相同:
SQL> select file_name from dba_data_files where tablespace_name='USERS';FILE_NAME
--------------------------------------------------------------------------------
/u02/oradata/db01/users01.dbf<2>设置表空间为脱机状态,将表空间设置为脱机状态后用户将不能访问该表空间上的任何对象,因此也可以确保OFFLINE的表空间的数据文件不会发生改变。SQL> alter tablespace users offline;Tablespace altered.SQL> select tablespace_name,online_status from dba_data_files;TABLESPACE_NAME ONLINE_
------------------------------ -------
USERS OFFLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
SYSTEM SYSTEM<3>复制users数据文件到备份目录:[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak<4>复制完后将表空间置于online状态:SQL> alter tablespace users online;Tablespace altered.SQL> select tablespace_name,online_status from dba_data_files;TABLESPACE_NAME ONLINE_
------------------------------ -------
USERS ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
SYSTEM SYSTEM