如果数据库是7×24运行的,则联机表空间备份是唯一的备份方式,采用这种方式备份,可以保证在数据库打开可用的情况下进行备份。
对于联机表空间的备份根据表空间的状态不同,备份的方式也不同。如果是只读表空间的备份,则在备份过程中,表空间不会存在修改,不需要将表空间置于备份模式中,备份操作简单。如果是可读写表空间,则在备份前首先要将表空间处于备份状态,否则得到的数据文件备份可能是不一致的。
备份可读写表空间的步骤如下:
SQL> COL FILE_NAME FORMAT A40
SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_DATA_FILES
2 WHERE TABLESPACE_NAME = 'YANGTK';
TABLESPACE_NAME FILE_NAME
------------------------------ ----------------------------------------
YANGTK F:ORACLEORADATATESTYANGTK01.DBF
SQL> ALTER TABLESPACE YANGTK BEGIN BACKUP;
表空间已更改。
SQL> HOST COPY F:ORACLEORADATATESTYANGTK01.DBF F:ORACLEBACKUPTEST20060131
SQL> ALTER TABLESPACE YANGTK END BACKUP;
表空间已更改。
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
系统已更改。
备份只读表空间的步骤如下:
SQL> ALTER TABLESPACE YANGTK READ ONLY;
表空间已更改。
SQL> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES
2 WHERE TABLESPACE_NAME = 'YANGTK';
TABLESPACE_NAME STATUS
------------------------------ ---------
YANGTK READ ONLY
SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_DATA_FILES
2 WHERE TABLESPACE_NAME = 'YANGTK';
TABLESPACE_NAME FILE_NAME
------------------------------ ----------------------------------------
YANGTK F:ORACLEORADATATESTYANGTK01.DBF
SQL> HOST COPY F:ORACLEORADATATESTYANGTK01.DBF F:ORACLEBACKUPTEST20060131
由于表空间已经处于只读状态,因此还可以使用传输表空间作为只读表空间的可选备份方案。
注意,对于可读写表空间,在联机备份开始前要将表空间置于备份模式,而当数据文件拷贝完毕后,应该通过ALT TABLEPACE END BACKUP,或者是通过ALTER DATABASE END BACKUP命令将表空间的脱离备份状态。
如果数据库中的表空间处于备份模式,且发生了实例崩溃或执行SHUTDOWN ABORT,则有两种方式可以结束表空间的备份模式:一个是上面提到的ALTER TABLESPACE END BACKUP语句,另一种方式是执行RECOVER语句。