备份表空间

      备份表空间指在数据库处于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;

数据库已更改。
  
      由于我只是在试验情况下做的实验,不可能将生产环境中的情况模拟完全。望见谅。。。

如果您有其他的案例,不妨拿来分享一下。。。。


 

上一篇:Silverlight信息加密 - 通过Rfc2898DeriveBytes类使用基于HMACSHA1的伪随机数生成器实现PBKDF2


下一篇:grep 和 sed:linux经常使用工具 & 基本正則表達式