Oracle—用户管理的备份(一)

2014-11-24 17:50:54 · 作者: · 浏览: 0

一.首先要知道数据库中表空间和文件的信息,有几个性能视图,v$datafile,v$tablespace,v$tempfile,v$logfile,v$controlfile,dba_tablespaces,dba_data_files可以用它们来查看表空间或者文件的位置和名字,其中dba_data_files可以查看到每个数据文件属于哪个表空间。


参考阅读:


推荐阅读:


对于查看每个数据文件属于哪个表空间也可以用$datafile,v$tablespace来join一下。


例如:


SQL> select t.name tablespace,d.name datafile from v$tablespace t join v$datafile d on t.ts#=d.ts#;


TABLESPACE DATAFILE


------------------------------ -----------------------------------


SYSTEM /u01/oradata/wilson/system01.dbf


SYSAUX /u01/oradata/wilson/sysaux01.dbf


UNDOTBS1 /u01/oradata/wilson/undotbs01.dbf


USERS /u01/oradata/wilson/users01.dbf


EXAMPLE /u01/oradata/wilson/example01.dbf


PAUL /u01/oradata/wilson/paul01.dbf


SUN /u01/oradata/wilson/sun01.dbf


SMALLUNDO /u01/oradata/wilson/smallundo1.dbf


ASSM /u01/oradata/wilson/assm_1.dbf


MSSM /u01/oradata/wilson/mssm_1dbf


PAUL /u01/oradata/wilson/paul02.dbf


二.备份的方式


1.处于非归档模式


在非归档模式下,关闭数据库执行完整的备份是唯一的选择。


在上面给出的视图中找到每个文件的位置,要备份的有控制文件和整个数据文件集,最好把临时文件和spfile,password文件(它们在/u01/oracle/dbs中)一起也备份了。


在备份之前必须干净的关闭数据库,那么对于联机重做日志没有必要备份。但是如果是出现不干净的关闭数据库,那么必须备份联机重做日志,不然还原后无法打开数据库。(其实无论在什么情况下,最好都备份)


2.处于归档模式


在归档模式下,既可以在关闭数据库时备份也可以在打开数据库时备份;


(一)在关闭数据库时备份和非归档模式备份是一样,有一个差别就是不备份联机重做日志了,改为备份归档日志。


(二)在打开数据库时备份,备份是非一致性的,所以必须备份归档日志文件。


有下面三个步骤:


(1)备份控制文件


备份控制文件有两种方式,


alter database backup confile to ;


alter database backup confile to trace as ;


第一种形式生成一个二进制备份,输出文件将是当前控制文件的严格的读一致性副本;


第二种形式生成一个逻辑备份,在指定文件中使用一组SQL命令来创建一个新的控制文件,并且包含与当前的控制文件相同的数据库物理结构信息。


这里说明一下create controlfile命令,它必须在非加载模式下执行,并且在control_files参数指定的位置生成一个新的控制文件;这个命令生成的新控制文件只包含与物理结构有关的数据;例如RMAN备份将会丢失。


在操作系统下建立个目录/tmp/con,用第一种形式备份控制文件;


SQL> alter database backup controlfile to '/tmp/con/c1.ctl';


Database altered.


SQL> !ls -l /tmp/con


total 9636


-rw-r----- 1 oracle oinstall 9846784 Aug 23 10:07 c1.ctl


用第二种形式备份控制文件;


SQL> alter database backup controlfile to trace as '/tmp/con/c2.ctl';


Database altered.


SQL> !ls -l /tmp/con


total 9648


-rw-r----- 1 oracle oinstall 9846784 Aug 23 10:07 c1.ctl


-rw-r--r-- 1 oracle oinstall 7107 Aug 23 10:11 c2.ctl


只要控制文件发生变化就要备份它,建议每次备份时都备份一下控制文件。


(2)关于归档日志文件备份


先执行alter system archive log current,再找到归档日志位置,复制到别的地方即可。


有关归档日志的设置请参照:归档模式


(3)当他们的表空间置于备份模式时复制数据文件;


有关备份模式请参照:oracle中backup模式


查看有哪些表空间;


SQL> select tablespace_name,contents from dba_tablespaces;


TABLESPACE_NAME CONTENTS


------------------------------ ---------


SYSTEM PERMANENT


SYSAUX PERMANENT


UNDOTBS1 UNDO


TEMP TEMPORARY


USERS PERMANENT


EXAMPLE PERMANENT


PAUL PERMANENT


MYTEMP TEMPORARY


SUN PERMANENT


SMALLUNDO UNDO


ASSM PERMANENT


TABLESPACE_NAME CONTENTS


------------------------------ ---------


MSSM PERMANENT


12 rows selected.


查看一下表空间中有哪些数据文件;


SQL> select tablespace_name,file_name from dba_data_files;


TABLESPACE_NAME FILE_NAME


------------------------------ -----------------------------------


PAUL /u01/oradata/wilson/paul01.dbf


USERS /u01/oradata/wilson/users01.dbf