欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle教程:用户管理的备份

程序员文章站 2022-04-18 16:12:43
...
注意:冷备份——可以备份ARCHIVELOG模式的数据库,也可以备份NOARCHIVELOG模式的数据库。热备份——只能备份ARCHIVELOG模式的数据库。换句话说,就是:ARCHIVELOG模式——可以冷备份,也可以热备份。NOARCHIVELOG模式——只能冷备份。

  冷备份步骤:
1. 列出要备份的所有相关文件的最新列表。
2. 使用SHUTDOWN NORMAL、SHUTDOWN IMMEDIATE 或SHUTDOWN TRANSACTIONAL 命令关闭Oracle 例程。
3. 使用操作系统备份实用程序备份所有数据文件和控制文件。您还可以备份重做日志文件,尽管这不是必需的。您还应该备份参数文件和口令文件。
4. 重新启动Oracle 例程。

  热备份步骤:
只要符合以下两个标准,您就可以在使用数据库的同时,执行表空间或各个数据文件的备份:? 数据库设置为ARCHIVELOG 模式。? 通过启用Oracle 自动归档(ARCn) 进程或手动归档重做日志文件,确保联机重做日志得到归档。
如何执行联机表空间备份:
1. 通过发出ALTER TABLESPACE...BEGIN BACKUP 命令,将数据文件或表空间设置为备份模式。这样可避免数据文件头中的序列号发生变化,以便恢复时可以从备份开始时间应用日志。即使数据文件处于备份模式,仍可用于正常事务处理。SQL> alter tablespace users begin backup SQL> ALTER DATABASE BEGIN BACKUP;
2. 使用操作系统备份实用程序将表空间中的所有数据文件复制到备份存储中。如果按顺序备份每个表空间,备份文件中的日志序列号可能不同。 cp /ORADATA/u03/users01.dbf /BACKUP/users01.dbf
3. 备份表空间的各数据文件后,发出下面的命令将它们设置为正常模式:SQL> alter tablespace users end backup SQL> ALTER DATABASE END BACKUP;
4. 归档尚未归档的重做日志,以便归档恢复表空间备份所需的重做日志,如下所示:SQL> alter system archive log current
对所有表空间重复这些步骤,包括SYSTEM 和还原段表空间。ALTER TABLESPACE BEGIN BACKUP 和ALTER TABLESPACE END BACKUP 命令之间的间隔时间应尽量缩短,因为修改后的块写入重做日志文件将导致生成更多的重做信息。因此建议您每次执行一个表空间的联机备份。

  热备份实战:

  1.确定要备份的表空间

  

SQL> select file_id,file_name,tablespace_name from dba_data_files where tablespace_name = 'USERS';

FILE_ID FILE_NAME TABLESPACE_NAME
---------- -------------------------------------------------- ------------------------------
4 /u01/app/oracle/oradata/orcl/users01.dbf USERS

SQL> select * from v$backup where file# = 4;

FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
4 NOT ACTIVE 0

  2.开始备份

  

SQL> alter tablespace users begin backup;

表空间已更改。

SQL> select * from v$backup where file# = 4;

FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
4 ACTIVE 992599 07-10月-11

  3.复制数据文件

  

SQL> ! cp /u01/app/oracle/oradata/orcl/users01.dbf /u01/app/oracle/backup/users01.dbf

  4.结束备份

  

SQL> alter tablespace users end backup;

表空间已更改。

SQL> select * from v$backup where file# = 4;

FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
4 NOT ACTIVE 992599 07-10月-11

  手动备份控制文件:

  创建二进制映像:

  

SQL> alterdatabase backup controlfile to'/u01/app/oracle/backup/control01.ctl';

数据库已更改。

  创建文本跟踪文件:

  

SQL> alterdatabase backup controlfile to trace as'/u01/app/oracle/backup/control01.sql';

数据库已更改。

  这样就会生成创建控制文件的sql语句脚本,此脚本分为两部分,noarchive模式使用的和archive模式使用的。

  完全恢复与resetlogs

很多朋友经常会对完全恢复与resetlogs产生误解,以为使用resetlogs方式打开数据库就是不完全恢复,这种看法是不正确的。只要拥有当前的日志文件,那么就能够对数据库执行完全恢复,而是否需要使用resetlogs方式打开,则取决于是否使用的备份的控制文件。如果使用的备份的控制文件则需要使用resetlogs方式打开数据库;如果拥有当前的控制文件或者通过重建控制文件来恢复,就不需要通过resetlogs方式开口数据库。