备份表空间指在数据库处于OPEN状态时备份起数据文件的方法。可以备份表空间的所有数据文件,也可以备份表空间的某个数据文件。注意:备份表空间只适用ARCHIVELOG模式。备份表空间可以分为 1脱机备份 2联机备份
脱机备份
脱机备份指当表空间处于OFFLINE状态时,备份表空间所有数据文件或单个数据文件的过程。脱机备份适用ARCHIVELOG模式。优点:会生成较少的重做日志。
缺点:会影响表空间的业务操作。(因为SYSTEM 和正使用的UNDO 表空间都不能被脱机)具体步骤如下:
一 确定表空间所包含的数据文件,当备份表空间时,首先确定其所包含的数据文件。如果备份某个数据文件,则需要确定数据文件所在的表空间。
SQL> select file_name from dba_data_files
2 where tablespace_name='USERS';
FILE_NAME
--------------------------------------------------------------------------------
F:\APP\YANG\ORADATA\ORACL\USERS01.DBF
二 设置 表空间为脱机状态。数据库在open状态下,复制表空间时必须使表空间offline,此时数据库将不能访问给表空间上的任何对象,从而可以确保其数据文件不会发生改变。
SQL> ALTER tablespace users offline;
表空间已更改。
三 复制数据文件。可以备份表空间的所有数据文件,也可以备份表空间的某个数据文件。
SQL> host copy f:\app\yang\oradata\oracl\users01.dbf f:\
四。设置数据文件为联机。此后,系统可以正常访问该表空间的对象。
SQL> ALTER tablespace users online;
表空间已更改。
联机备份
联机备份指当表空间处于ONLINE状态时,备份表空间所有数据文件或单个数据文件的过程。联机备份适用ARCHIVELOG模式。优点:不影响表空间上的业务操作。
缺点:会生成更多的REDO信息和归档信息。
基本步骤和脱机备份一样。
1) 确定表空间所包含的数据文件,当备份表空间时,首先确定其所包含的数据文件。如果备份某个数据文件,则需要确定数据文件所在的表空间。
SQL> select file_name from dba_data_files
2 where tablespace_name='USERS';
FILE_NAME
--------------------------------------------------------------------------------
F:\APP\YANG\ORADATA\ORACL\USERS01.DBF
2)设置表空间为备份模式,联机备份表空间时,必须将表空间设置为备份模式。此后,系统会在数据文件头块上加锁,使得数据文件头不会发生改变。并且头块会记录将来恢复时的日志序列号,SCN的信息。
SQL> ALTER tablespace users begin backup;
表空间已更改。
3)复制数据文件。可以备份表空间的所有数据文件,也可以备份表空间的某个数据文件。
SQL> host copy f:\app\yang\oradata\oracl\users01.dbf f:\lib
4)设置表空间为正常模式。
SQL> ALTER tablespace users end backup;
处理联机备份失败的情况。
进行联机热备份时,服务器发生故障,如掉电,重新启动服务器,启动数据库时,无法打开数据库,Oracle要求进行介质恢复,因为表空间还处在热备份状态。
模拟现象及解决方法:
1)确定文件
SQL> select file_name from dba_data_files
2 where tablespace_name='USERS';
FILE_NAME
--------------------------------------------------------------------------------
F:\APP\YANG\ORADATA\ORACL\USERS01.DBF
2)将其设置为联机备份模式。
SQL> alter tablespace users begin backup;
表空间已更改。
3)模拟失败。
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup open
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 159384468 bytes
Database Buffers 369098752 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
ORA-10873: file 4 needs end backup before opening a database
ORA-01110: 数据文件 4: 'F:\APP\YANG\ORADATA\ORACL\USERS01.DBF'
由于数据文件处于联机备份状态,打开数据库时出现错误提示。为了打开数据库,必须使该文件结束备份状态。
3)通过提示,可以看到datafile 4 处于备份状态。使用如下语句结束其备份状态。
SQL> alter database datafile 4 end backup;
数据库已更改。
当然,有三种方式结束备份状态。
1)如果有多个数据文件处于备份状态,可以使用alter database end backup命令结束联机备份。
2)如果只有某个数据文件处于备份状态,可以使用ALTER DATABASE DATAFILE "具体文件名"或文件号 END BACKUP;
3)另外可以使用recover datafile 4 ;使其结束备份状态。
最后 打开数据库。
SQL> alter database open;
数据库已更改。
由于我只是在试验情况下做的实验,不可能将生产环境中的情况模拟完全。望见谅。。。
如果您有其他的案例,不妨拿来分享一下。。。。