用户管理的备份
准备:
查询视图获取数据库文件信息
V$DATAFILE
V$CONTROLFILE
V$LOGFILE
DBA_DATA_FILES
SQL> select name ,status from v$datafile;
NAME STATUS
--------------------------------------------- -------
/u01/oradata/lty/system01.dbf SYSTEM
/u01/oradata/lty/undotbs01.dbf ONLINE
/u01/oradata/lty/cwmlite01.dbf ONLINE
。。。 。。。
SQL> select name from v$controlfile;
NAME
---------------------------------------------
/u01/oradata/lty/control01.ctl
/u01/oradata/lty/control02.ctl
/u01/oradata/lty/control03.ctl
SQL> select member from v$logfile;
MEMBER
----------------------------------------------
/u01/oradata/lty/redo03.log
/u01/oradata/lty/redo02.log
/u01/oradata/lty/redo01.log
SQL> SELECT t.name tablespace, f.name datafile
2> FROM v$tablespace t, v$datafile f
3> WHERE t.ts# = f.ts#
4> ORDER BY t.name;
冷备:
脚本示例:
Rem coldbackup.sql
Rem冷备份脚本
Rem 执行该脚本必须保证数据库处于归档模式
Rem sqlplus '/as sysdba' @coldbackup
Remark设置SQL*Plus环境变量
set feedback off heading off verify off trimspool off
set pagesize 0 linesize 200
Remark 设置用户变量
define dir = '/tmp/oradata'
define cmdfile = './cold_backup_command.sql'
prompt *** spooling to &cmdfile
Remark 创建包含备份命令的脚本文件
spool &cmdfile
select 'host cp ' || name || ' &dir' from v$datafile order by 1;
select 'host cp ' || member || ' &dir' from v$logfile order by 1;
select 'host cp ' || name || ' &dir' from v$controlfile order by 1;
select 'host cp ' || name || ' &dir' from v$tempfile order by 1;
spool off;
Remark 关闭数据库
shutdown immediate;
Remark 运行上面生成的脚本文件
@&cmdfile
Remark 重新启动数据库
startup;
Remark 重新设置SQL*Plus环境变量
set feedback on heading on verify on trimspool on pagesize 14
热备:
1. ALTER TABLESPACE...BEGIN BACKUP命令,将数据文件或表空间设置为备份模式。这样可避免数据文件头中的序列号发生变化,以便恢复时可以从备份开始时间应用日志。即使数据文件处于备份模式,仍可用于正常事务处理。
SQL> ALTER TABLESPACE users BEGIN BACKUP;
2.使用操作系统备份实用程序将表空间中的所有数据文件复制到备份存储中。如果按顺序备份每个表空间,备份文件中的日志序列号可能不
同。
UNIX:
cp /ORADATA/u03/users01.dbf /BACKUP/users01.dbf
Windows NT:
ocopy c:\users\disk1\user01.ora e:\users\backup\user01.ora
3.备份表空间的各数据文件后,发出下面的命令将它们设置为正常模式:
SQL> ALTER TABLESPACE users END BACKUP;
4.归档尚未归档的重做日志,以便归档恢复表空间备份所需的重做日志,
如下所示:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
对所有表空间重复这些步骤,包括SYSTEM 和还原段表空间。
ALTER TABLESPACE BEGIN BACKUP和ALTER TABLESPACE END
BACKUP命令之间的间隔时间应尽量缩短,因为修改后的块写入重做日志文件
将导致生成更多的重做信息。因此建议您每次执行一个表空间的联机备份。
获取信息:
•V$BACKUP
•V$DATAFILE_HEADER
在联机表空间备份的过程中,可能会发生系统崩溃、电源故障、数据库关闭等
故障。一旦发生任何这些故障:
•如果操作系统未完成备份,则备份文件将不可用。需要重新备份这些文件。
•处在联机备份模式下的数据库文件不会与数据库同步,原因是备份开始时标头被冻结。
•数据库将不会打开,因为Oracle 服务器认为文件已从备份中还原。
可以使用ALTER DATABASE …END BACKUP 命令使数据文件脱离备份模式。只有在确定这些文件处于备份模式、且未从备份中还原的情况下,才可使用此命令。
如果不能确定某一文件是否需要恢复,或者该文件是否仍处于联机备份模式,可查询V$BACKUP 视图:
SQL> SELECT * FROM v$backup;
FILE# STATUS CHANGE# TIME
----- ---------- -------- ---------
1 NOT ACTIVE 0
2 ACTIVE 228596 30-NOV-01
3 NOT ACTIVE 0
4 NOT ACTIVE 0
该输出说明号码为2 的文件当前处于联机备份模式。要取消对标头的冻结,用以下命令:
SQL> ALTER DATABASE datafile 2 END BACKUP;
Database altered.
或直接用:ALTER DATABASE END BACKUP;
最后:SQL> ALTER DATABASE OPEN;
对于只读表空间,只须备份一次。在执行SQL> ALTER TABLESPACE query_data READ ONLY;后表空间标头scn号冻结。同时控制文件里的信息也会做相应的修改,所以备份只读表空间后一定要同时备份控制文件。
在导入数据时,一般将表空间,表,索引等置为nologging模式。在完成数据导入后应立即备份。
手动备份控制文件
如果您不使用RMAN 进行备份,就必须手动备份控制文件。必须防止丢失控制文件。
Oracle服务器在进行例程或介质恢复时会用到控制文件中的某些状态信息(如当前联机重做日志文件以及数据库文件的名称)。每次对数据库配置进行更改后,您都需要保留控制文件的最新副本。
原则
•对控制文件进行多元备份,并使用CONTROL_FILES 参数在init.ora 文件中为它们命名。
• ALTER DATABASE BACKUP CONTROLFILE TO TRACE命令创建一个用于重新创建控制文件的脚本。该文件位于由初始化参数USER_DUMP_DEST 指定的目录下。此脚本不包含RMAN 元数据。
•此外,还应使用ALTER DATABASE BACKUP CONTROLFILE TO ‘control.bkp’命令来备份各个控制文件。这样可以提供控制文件在该时间点的二进制副本。
•完全备份时,正常关闭例程,然后使用操作系统备份实用程序将控制文件复制到备份存储中。
以下命令更改数据库配置并导致控制文件更改:
• ALTER DATABASE [ADD | DROP] LOGFILE
• ALTER DATABASE [ADD | DROP] LOGFILE MEMBER
• ALTER DATABASE [ADD | DROP ] LOGFILE GROUP
• ALTER DATABASE [ NOARCHIVELOG | ARCHIVELOG ]
• ALTER DATABASE RENAME FILE
• CREATE TABLESPACE
• ALTER TABLESPACE [ADD | RENAME ] DATAFILE
• ALTER TABLESPACE [READ WRITE | READ ONLY ]
• DROP TABLESPACE
注:发出上述任一命令后,都需要备份控制文件。
备份服务器初始化参数文件
可以使用CREATE PFILE 语句来创建服务器参数文件的备份。服务器参数文件的内容以文本格式导出到一个初始化参数文件中。
使用DBVERIFY 实用程序验证备份
使用DBVERIFY 实用程序可以验证数据文件,具体方法是检查指定数据文件中的数据块结构的完整性。这是数据库之外的实用程序,因此它对数据库活动的影响最小。
可以使用命令行界面来调用DBVERIFY 实用程序。该实用程序主要用于以下两个目的:确保备份数据库(或数据文件)在还原之前是有效的;遇到数据损坏问题时用作诊断辅助工具。
DBVERIFY实用程序的可执行程序名称在不同操作系统中是不同的。它位于Oracle 主目录的bin 目录中。在UNIX 环境中,应执行dbv 可执行程序。
示例
要验证数据文件users01.dbf 的完整性(从块1 开始到块500 结束),您可以
执行如下命令:
$ dbv file=/ORADATA/u03/users01.dbf start=1 end=500