测试环境:
操作系统:windows7(32bit)
oracle 版本:11.2g
一、完整数据库备份
1、冷备份
第一步:查看相关文件的位置:
SQL> select * from v$controlfile;---查看控制文件的位置
STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------------------------- --- ---------- --------------
D:\APP\ASUS\ORADATA\TEST\CONTROL01.CTL NO 16384 600
D:\APP\ASUS\FLASH_RECOVERY_AREA\TEST\CONTROL02.CTL NO 16384 600
SQL> show parameter spfile;-----查看动态实例参数文件位置
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------------------------------------
spfile string D:\APP\ASUS\PRODUCT\11.2.0\DBHOME_1\DATABASE\SPFILETEST.ORA
SQL> select file#,name from v$datafile;-----查看数据文件位置
FILE# NAME
---------- ----------------------------------------
1 D:\APP\ASUS\ORADATA\TEST\SYSTEM01.DBF
2 D:\APP\ASUS\ORADATA\TEST\SYSAUX01.DBF
3 D:\APP\ASUS\ORADATA\TEST\UNDOTBS01.DBF
4 D:\APP\ASUS\ORADATA\TEST\USERS01.DBF
5 D:\APP\ASUS\ORADATA\TEST\EXAMPLE01.DBF
6 D:\APP\ASUS\ORADATA\TEST\TEST01.DBF
7 D:\APP\ASUS\ORADATA\TEST\TEST02.DBF
SQL> show parameter recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\app\asus\flash_recovery_are
a
db_recovery_file_dest_size big integer 3852M
recovery_parallelism integer 0
第二步:正常关闭数据库
SQL>shutdown immediate
第三步:利用操作系统的copy 与xcopy命令复制实例文件、控制文件、数据文件、归档日志文件
----复制实例参数文件
C:\Users\asus>copy D:\APP\ASUS\PRODUCT\11.2.0\DBHOME_1\DATABASE\SPFILETEST.ORA G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
----复制控制文件
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\CONTROL01.CTL G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
----复制数据文件
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\SYSTEM01.DBF G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\SYSAUX01.DBF G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\UNDOTBS01.DBF G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\USERS01.DBF G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\EXAMPLE01.DBF G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\TEST01.DBF G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
C:\Users\asus>copy D:\APP\ASUS\ORADATA\TEST\TEST02.DBF G:\Oracle\backup\offline_full_backup
已复制 1 个文件。
----复制归档日志文件
C:\Users\asus>xcopy D:\app\asus\flash_recovery_area\TEST\ARCHIVELOG G:\Oracle\backup\offline_full_backup\ARCHIVELOG /S/E
2、热备份
SQL> alter database begin backup;----开启热备份模式
数据库已更改。
-----用操作系统命令复制文件
SQL> host copy D:\APP\ASUS\ORADATA\TEST\SYSTEM01.DBF G:\Oracle\backup\hot_backup;
已复制 1 个文件。
SQL> host copy D:\APP\ASUS\ORADATA\TEST\SYSAUX01.DBF G:\Oracle\backup\hot_backup;
已复制 1 个文件。
SQL> host copy D:\APP\ASUS\ORADATA\TEST\UNDOTBS01.DBF G:\Oracle\backup\hot_backup;
已复制 1 个文件。
SQL> host copy D:\APP\ASUS\ORADATA\TEST\USERS01.DBF G:\Oracle\backup\hot_backup;
已复制 1 个文件。
SQL> host copy D:\APP\ASUS\ORADATA\TEST\TEST01.DBF G:\Oracle\backup\hot_backup;
已复制 1 个文件。
SQL> host copy D:\APP\ASUS\ORADATA\TEST\TEST02.DBF G:\Oracle\backup\hot_backup;
已复制 1 个文件。
-----从状态ACTIVE可以知道其实数据库的表空间处于热备份模式
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
1 ACTIVE 3199815 17-8月 -13
2 ACTIVE 3199815 17-8月 -13
3 ACTIVE 3199815 17-8月 -13
4 ACTIVE 3199815 17-8月 -13
5 ACTIVE 3199815 17-8月 -13
7 ACTIVE 3199815 17-8月 -13
已选择6行。
SQL> alter database end backup;-----关闭热备份模式
SQL> alter system archive log current;----关闭之后,应该马上刷新日志文件信息到归档日志文件中,以便保护用户恢复的数据
系统已更改。
SQL> select * from v$backup;---从STATUS状态可以看出,其实的数据库表空间已经退出热备份模式
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
1 NOT ACTIVE 3199815 17-8月 -13
2 NOT ACTIVE 3199815 17-8月 -13
3 NOT ACTIVE 3199815 17-8月 -13
4 NOT ACTIVE 3199815 17-8月 -13
5 NOT ACTIVE 3199815 17-8月 -13
7 NOT ACTIVE 3199815 17-8月 -13
已选择6行。
二、备份控制文件
在修改了处于归档日志模式下的数据库的结构,如添加了某个表空间,可以备份一下控制文件,以记录创建备份的时候控制文件的映像。备份控制文件有两种方式可供选择,一种是二进制文件,一种是跟踪文件。
第一种:二进制文件【数据库打开的状态下】
该种状态下的控制文件要比跟踪文件要好,因为其还附带了归档日志历史、read-only和offline表空间记录。如果是用RMAN的话,还会有备份集和COPY。如果数据库的版本大于或等于10.2,还会包括临时文件实体。
SQL> alter database backup controlfile to 'G:\Oracle\backup\hot_backup\Binary_controlfile.bak';
数据库已更改。
第二种:文本跟踪文件【数据库状态为open 或者mount】
SQL> alter database backup controlfile to trace;
数据库已更改。
这种文件其实是创建当前状态控制文件的脚本,利用该脚本,就可以还原当前状态下的控制文件。在没有指定的情况下,该文件会包括noresetlogs和resetlogs两种状态的代码。临时文件的信息包含在脚本中的alter database ...add tempfile..语句中。
该操作会记录在后台警报日志中,可以通过backgroup_dump_dest找出alert_sid.log文件中关于该操作的记录,然后查看出其中的具体文件。如下,为test_ora_5272.trc
Sat Aug 17 20:54:09 2013
alter database backup controlfile to trace
Backup controlfile written to trace file d:\app\asus\diag\rdbms\test\test\trace\test_ora_5272.trc
Completed: alter database backup controlfile to trace
生成的文本跟踪文件的部分信息为:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\APP\ASUS\ORADATA\TEST\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'D:\APP\ASUS\ORADATA\TEST\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'D:\APP\ASUS\ORADATA\TEST\REDO03.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'D:\APP\ASUS\ORADATA\TEST\SYSTEM01.DBF',
'D:\APP\ASUS\ORADATA\TEST\SYSAUX01.DBF',
'D:\APP\ASUS\ORADATA\TEST\UNDOTBS01.DBF',
'D:\APP\ASUS\ORADATA\TEST\USERS01.DBF',
'D:\APP\ASUS\ORADATA\TEST\EXAMPLE01.DBF',
'D:\APP\ASUS\ORADATA\TEST\TEST01.DBF',
'D:\APP\ASUS\ORADATA\TEST\TEST02.DBF'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'D:\APP\ASUS\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\2013_08_17\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\APP\ASUS\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\2013_08_17\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\APP\ASUS\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\2013_08_17\O1_MF_1_1_%U_.ARC';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE
-- Block change tracking was enabled, so re-enable it now.
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING
USING FILE 'D:\APP\ASUS\PRODUCT\11.2.0\DBHOME_1\DATABASE\RMAN_INC.TRK' REUSE;
-- Set Database Guard and/or Supplemental Logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\ASUS\ORADATA\TEST\TEMP01.DBF'
SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
三、备份归档日志文件
SQL> host xcopy D:\app\asus\flash_recovery_area\TEST\ARCHIVELOG G:\Oracle\backup\hot_backup\ARCHIVELOG /S/E;