当前位置:数据库 > Oracle >>

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

Oracle—用户管理的备份(一)
 
一.首先要知道数据库中表空间和文件的信息,有几个性能视图,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 <filename>;
alter database backup confile to  trace as <filename>;
 
第一种形式生成一个二进制备份,输出文件将是当前控制文件的严格的读一致性副本;
第二种形式生成一个逻辑备份,在指定文件中使用一组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
UNDOTBS1                       /u01/oradata/wilson/undotbs01.dbf
SYSAUX                         /u01/oradata/wilson/sysaux01.dbf
SYSTEM        
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,