RMAN备份恢复手册
1.概要
1.1.本文的目的
为了模拟测试oracle热备份的各种恢复情况,同时给以后工程人员一些实施借鉴,特地整理了本文档,在其中记录各种恢复的情况,以方便恢复时使用。
1.2.系统概况
系统环境:hp unix11 oracle 9201
数据情况:一个系统文件、3个联机日志、一个回滚段表空间、一个undo表空间、其他的数据文件,数据库当前使用undo。
备份方式:rman热备份
备份文件:数据文件、归档日志、控制文件、初始化文件。
测试脚本:sp_insert_del,主要完成写入数据和删除数据的功能。
测试表:iptpa_test1,存储测试数据。
2.rman备份介绍
2.1. 功能简介
Oracle提供了一个通用工具完成备份、还原、恢复功能,就是rman。Rman是oracle数据库附带的一个功能,不需要单独安装,适用于oracle8以上数据库版本。Rman可以完成整个数据库或者数据库部件的备份。Rman也支持增量备份,但是建议不要采用这部分功能,因为在备份时会计算一些东西,耗时还是比较多的。
Rman通过oracle的session来读取数据,完成备份和恢复。存储备份数据主要是通过target数据库的控制文件来操作,而恢复操作主要靠备份数据库的catalog来完成。
本文仅仅介绍oracle9i的rman特性。
2.2. 体系结构
Rman共分以下几个部分:rman引擎、target数据库、catalog数据库、媒体管理software。
Rman引擎起源于oracle8,位于$ORACLE_HOME/bin下,通过运行rman命令启动它来执行备份。
Target数据库,是rman将要备份和恢复的数据库。
Catalog数据库,用来保存备份和恢复信息的数据库,不建议建立在target数据库上。
媒体管理软件是第三方软件,如果需要向磁带的话,必须配置媒体管理软件。
其中rman引擎和target数据库是必须的。由于rman在oracle9i后可以用target数据库的控制文件去存储元数据,因此catalog数据库是可选的。而媒体管理器完成将数据写入磁盘或者磁带机。
3.启动运行rman
3.1. 运行要求
1、资源要求
要求有更多的内存分配,要求process的数目。
2、环境变量要求
要求基本的环境变量:oracle_sid,oracle_home、oracle_base、nls_lang、nls_date_format、path
3、权限要求
要求Sysdba权限,如果是在本地登陆,可以采用os认证,远程需要密码认证。
4、版本要求
Rman引擎必须和目标数据库版本一致。如果使用了catalog,那么
创建catalog目录的脚本版本必须等于大于目标数据库的版本;
创建catalog目录的脚本版本必须等于大于catalog所在数据库的版本。
3.2. 启动方式
Oracle9i不要求使用catalog,因此可以以nocatalog方式启动。
$ORACLE_HOME/bin/rman nocatalog
3.3. 命令运行方式
1、单个运行
Backup database;
2、运行一个数据块
Run{
Copy datafile 10 to ‘/opt/oradata/rmanback/’;
};
3、运行脚本
Rman target nocatalog /
@rmanback
或者run{@rmanback};
或者运行存储在恢复目录的脚本
Run{execute script backup_db};
4、Sh方式
可以采用sh方式调用,此时需要注意环境变量
4.Rman的配置
在rman中有一个概念是通道,主要完成rman引擎产生的进程和备份媒体之间的io读写的途径。如果要运行rman,必须对通道作配置。Rman默认提供一个通道为备份恢复服务。这个通道就是自动通道,存在默认的配置,但是不会符合你的备份策略,因此也需要要对它进行配置。
4.1. 备份冗余策略
备份冗余策略是指备份时保留什么样的备份的策略,这里有两个,一个是按时间,一个是按照有效备份的个数。
configure retention policy to redundancy 3;
configure retention policy to recovery window of 7 days;
configure retention policy to none;
4.2. 通道配置
配置自动通道的设备类型
configure default device type to disk ;
指定通道的并行策略
configure device type disk parallelism 1;
指定通道的类型,备份目录。
configure channel device type disk format '/opt/oradata/rmanbak/%U';
指定通道备份的冗余策略
configure datafile backup copies for device type disk to 1;
指定规定日志备份的冗余策略
configure archivelog backup copies for device type disk to 1;
控制文件备份策略
configure controlfile autobackup on;
控制文件备份设备类型格式,以及命名格式。
configure controlfile autobackup format for device type disk to '%F';
configure snapshot controlfile name to '/opt/oradata/rmanbak/snapcon_U01.f';
备份优化策略
configure backup optimization on;
限制通道的大小
setlimit channel t2 kbytes 2000000;
4.3. 备份命令
备份数据库
Backup database;
对数据库作多个备份
backup database copies 2;
限制备份的数据文件的大小
backup database maxsetsize 2g ;
备份控制文件
backup current controlfile;
备份归档日志
backup archivelog all;
备份归档日志后删除已经备份的归档日志
backup archivelog all delete input ;
标志为weekly full的备份集的备份
backup tag 'weekly_full' database;
检测数据库中能够被备份的逻辑和物理的数据文件的位置。backup validate database ;
backup validate archivelog all;
4.4. 检查备份
检查数据库能够被备份的数据文件
report schema;
report need backup;
过期的备份、数据文件或者拷贝
report obsolete;
不能获取状态的数据文件
report unrecoverable;
检查硬盘上备份是否有效,是否过期
crosscheck backup;
crosscheck archivelog all;
4.5. 删除备份
删除备份片1
delete backuppiece 1;
删除过期备份,删除过程中不提示
delete noprompt expired backup;
删除过期备份
delete expired backup;
4.6. 列出所有的备份
list backup;
list archivelog all;
4.7. 备份的要求
必须设置归档模式
数据库置于mount,执行,启用归档日志
alter database archivelog;
5.rman恢复
5.1. 模拟非系统数据文件丢失
当非系统数据文件损坏时,有两种恢复方式,一种是拥有数据文件备份、归档日志备份以及其他的相关文件,此时可以做到的是完全的恢复;一种是有数据文件备份,但是归档日志不全。
5.1.1.拥有全部备份的恢复
在这种情况下,系统拥有全部的数据文件备份,归档日志备份以及其他相关文件,可以做到完全恢复。下面模拟非系统文件的恢复。
$ sqlplus rmantest/rmantest
SQL*Plus: Release 9.2.0.1.0 - Production on Mon Mar 20 12:45:48 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> select count(*) from zxy;
COUNT(*)
----------
45056
SQL> !
$ mv tools_1.dbf tools_1.dbf.bak
$ exit
SQL> create table test as select * from zxy;
create table test as select * from zxy
*
ERROR at line 1:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/opt/oradata/opnview/tools_1.dbf'
ORA-27041: unable to open file
HP-UX Error: 2: No such file or directory
Additional information: 3
SQL>conn / as sysdba
SQL> alter database datafile 4 offline;
Database altered.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Productn
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
$ rman nocatalog target /
Recovery Manager: Release 9.2.0.1.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: OPENVIEW (DBID=2554481560)
using target database controlfile instead of recovery catalog
RMAN> restore datafile 4;
Starting restore at 20-MAR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=13 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00004 to /opt/oradata/opnview/tools_1.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/opt/oradata/rmanbak/0ohee5gf_1_1 tag=TAG20060320T101647 params=NUL channel ORA_DISK_1: restore complete
Finished restore at 20-MAR-06
RMAN> recover datafile 4;
Starting recover at 20-MAR-06
using channel ORA_DISK_1
starting media recovery
media recovery complete
Finished recover at 20-MAR-06
RMAN> exit
Recovery Manager complete.
$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Mon Mar 20 13:23:30 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> alter database datafile 4 online;
Database altered.
SQL> connect rmantest/rmantest
Connected.
SQL> create table test as select * from zxy;
Table created.
SQL> select count(*) from zxy;
COUNT(*)
----------
45066
SQL>
总结:非系统数据文件丢失,整个恢复的过程数据库除了丢失的表空间,其他的均处于可用状态。在恢复时,需要将坏掉的数据文件offline,然后恢复,完成后需要再online.
5.1.2.坏掉某个数据块的恢复
一般数据文件有问题,都可能是数据块出现了错误,在这种情况下,可以先使用dbv来检查数据文件。可以通过dbfsize来检查数据文件的block 大小。
SQL> create table test as select * from v$session;
create table test as select * from v$session
*
ERROR at line 1:
ORA-01658: unable to create INITIAL extent for segment in tablespace TOOLS
SQL> connect /as sysdba
Connected.
SQL> alter database datafile 4 offline;
Database altered.
使用dbv工具检测数据文件,发现有一堆的错误。
然后使用rman恢复。
$ rman nocatalog target /
Recovery Manager: Release 9.2.0.1.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: OPENVIEW (DBID=2554481560)
using target database controlfile instead of recovery catalog
RMAN> restore datafile 4;
Starting restore at 20-MAR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=13 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00004 to /opt/oradata/opnview/tools_1.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/opt/oradata/rmanbak/0ohee5gf_1_1 tag=TAG20060320T101647 params=NUL
channel ORA_DISK_1: restore complete
Finished restore at 20-MAR-06
RMAN> recover datafile 4;
Starting recover at 20-MAR-06
using channel ORA_DISK_1
starting media recovery
archive log thread 1 sequence 307 is already on disk as file /opt/oracle/admin/C
archive log thread 1 sequence 308 is already on disk as file /opt/oracle/admin/C
archive log thread 1 sequence 309 is already on disk as file /opt/oracle/admin/C
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=306
channel ORA_DISK_1: restored backup piece 1
piece handle=/opt/oradata/rmanbak/0vhee66r_1_1 tag=TAG20060320T102843 params=NUL
channel ORA_DISK_1: restore complete
archive log filename=/opt/oracle/admin/openview/arch/T0001S0000000306.ARC threa6
archive log filename=/opt/oracle/admin/openview/arch/T0001S0000000307.ARC threa7
media recovery complete
Finished recover at 20-MAR-06
将数据文件online
$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Mon Mar 20 13:53:03 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> alter database datafile 4 online;
Database altered.
SQL> connect rmantest/rmantest
Connected.
SQL> create table test as select * from v$session;
Table created.
5.2. 模拟回滚段损坏
当系统使用的是回滚段,而不是undo时,当回滚段出现异常时,系统不能写入数据,此时需要恢复回滚段。恢复回滚段是,系统必须处于mount状态。
下面我们将回滚段所在的表空间RBS1_1.dbf更名
$ mv RBS1_1.dbf RBS1_1.dbf.bak
$ sqlplus rmantest/rmantest
SQL> insert into zxy select * from zxy;
368 rows created.
SQL>/
insert into zxy select * from zxy
*
ERROR at line 1:
ORA-01116: error in opening database file 3
ORA-01110: data file 3: '/opt/oradata/opnview/RBS1_1.dbf'
ORA-27041: unable to open file
HP-UX Error: 2: No such file or directory
Additional information: 3
SQL> exit
$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Mar 22 13:30:24 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected.
SQL> shutdown immediate
ORA-01089: immediate shutdown in progress - no operations are permitted
SQL> shutdown immediate
ORA-01089: immediate shutdown in progress - no operations are permitted
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started
开始用rman恢复
$ rman nocatalog target /
Recovery Manager: Release 9.2.0.1.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: OPENVIEW (DBID=2554481560)
using target database controlfile instead of recovery catalog
RMAN> restore datafile 3;
Starting restore at 22-MAR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=11 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00003 to /opt/oradata/opnview/RBS1_1.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/opt/oradata/rmanbak/24hejojm_1_1 tag=TAG20060322T130905 params=NUL channel ORA_DISK_1: restore complete
Finished restore at 22-MAR-06
RMAN> recover datafile 3;
Starting recover at 22-MAR-06
using channel ORA_DISK_1
starting media recovery
media recovery complete
Finished recover at 22-MAR-06
$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Mar 22 13:42:05 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> alter database datafile 3 online;
Database altered.
SQL> alter database open;
SQL> conn rmantest/rmantest
Connected.
SQL> select count(*) from zxy;
COUNT(*)
----------
736
总结:当回滚段出现问题时,在恢复时需要将数据库置于mount状态,使用rman恢复后,还需要将数据文件online,然后才能打开数据库。
5.3. 模拟undo损坏
当系统使用的undo出现损坏时,系统如何恢复哪。此时系统得一般用户是连不上数据库的。
$ mv RBS2_1.dbf RBS2_1.dbf.bak
$ sqlplus rmantest/rmantest
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Mar 22 14:24:48 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-01116: error in opening database file 45
ORA-01110: data file 45: '/opt/oradata/opnview/RBS2_1.dbf'
ORA-27041: unable to open file
HP-UX Error: 2: No such file or directory
Additional information: 3
$ sqlplus "/as sysdba"
SQL> alter database datafile 45 offline;
alter database datafile 45 offline
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
SQL> shutdown immediate
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn't exist
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 267479512 bytes
Fixed Size 735704 bytes
Variable Size 184549376 bytes
Database Buffers 81920000 bytes
Redo Buffers 274432 bytes
Database mounted.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Productn
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
$ rman nocatalog target /
Recovery Manager: Release 9.2.0.1.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: OPENVIEW (DBID=2554481560)
using target database controlfile instead of recovery catalog
RMAN> restore datafile 45 ;
Starting restore at 22-MAR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=11 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00045 to /opt/oradata/opnview/RBS2_1.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/opt/oradata/rmanbak/2bhejs24_1_1 tag=TAG20060322T140749 params=NUL channel ORA_DISK_1: restore complete
Finished restore at 22-MAR-06
RMAN> recover datafile 45;
Starting recover at 22-MAR-06
using channel ORA_DISK_1
starting media recovery
media recovery complete
Finished recover at 22-MAR-06
RMAN> exit
Recovery Manager complete.
$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Mar 22 14:35:43 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> alter database datafile 45 online;
Database altered.
SQL> alter database open;
Database altered.
5.4. 模拟系统表空间损坏
系统表空间是oracle数据库系统的核心,里面存储系统运行情况的统计信息,当系统表空间运行出问题时系统就崩溃了。以下是系统表空间的恢复步骤。
$ mv system_1.dbf system_1.dbf.bak
$ exit
SQL> insert into zxy select * from zxy;
insert into zxy select * from zxy
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/opt/oradata/opnview/system_1.dbf'
ORA-27041: unable to open file
HP-UX Error: 2: No such file or directory
Additional information: 3
SQL> conn /as sysdba
Connected.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 267479512 bytes
Fixed Size 735704 bytes
Variable Size 184549376 bytes
Database Buffers 81920000 bytes
Redo Buffers 274432 bytes
Database mounted.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Productn
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
$ rman nocatalog target /
Recovery Manager: Release 9.2.0.1.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: OPENVIEW (DBID=2554481560)
using target database controlfile instead of recovery catalog
RMAN> restore datafile 1;
Starting restore at 22-MAR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=11 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /opt/oradata/opnview/system_1.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/opt/oradata/rmanbak/2bhejs24_1_1 tag=TAG20060322T140749 params=NUL channel ORA_DISK_1: restore complete
Finished restore at 22-MAR-06
RMAN> recover datafile 1;
Starting recover at 22-MAR-06
using channel ORA_DISK_1
starting media recovery
media recovery complete
Finished recover at 22-MAR-06
$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Mar 22 14:54:30 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> alter database datafile 1 online;
Database altered.
SQL> alter database open;
Database altered.
SQL> conn rmantest/rmantest
Connected.
SQL> insert into zxy select * from zxy;
736 rows created.
SQL> commit;
Commit complete.
总结:虽然系统表空间很重要,可是在rman的恢复里,和一般的数据文件没有什么两样。
5.5. 模拟控制文件丢失
5.5.1.不使用catalog的恢复
如果rman备份没有采用catalog的话,因此在这种情况下如果控制文件丢失,就只能使用备份的控制文件恢复了,此时需要使用的有所有的数据文件、归档日志、redo日志,初始化文件、以及备份的控制文件。下面就是一个模拟控制文件丢失的恢复过程。
$ mv control01.ctl control01.ctl.bak
$ rm *.ctl
$ exit
SQL> conn rmantest/rmantest
Connected.
SQL> insert into zxy select * from zxy;
insert into zxy select * from zxy
*
ERROR at line 1:
ORA-00210: cannot open the specified controlfile
ORA-00202: controlfile: '/opt/oradata/opnview/control01.ctl'
ORA-27041: unable to open file
HP-UX Error: 2: No such file or directory
Additional information: 3
系统报错,提示说控制文件不存在,此时如果仅仅查询数据库,那么对系统没有影响,这是因为查询不会更新检查点,但是系统如果长时间运行,只要更新检查点,系统会马上出错。
SQL> desc zxy
Name Null? Type
----------------------------------------- -------- ----------------------------
SADDR RAW(8)
SID NUMBER
SERIAL# NUMBER
AUDSID NUMBER
PADDR RAW(8)
USER# NUMBER
USERNAME VARCHAR2(30)
COMMAND NUMBER
OWNERID NUMBER
TADDR VARCHAR2(16)
LOCKWAIT VARCHAR2(16)
STATUS VARCHAR2(8)
SERVER VARCHAR2(9)
SCHEMA# NUMBER
SCHEMANAME VARCHAR2(30)
OSUSER VARCHAR2(30)
PROCESS VARCHAR2(12)
MACHINE VARCHAR2(64)
TERMINAL VARCHAR2(30)
PROGRAM VARCHAR2(48)
TYPE VARCHAR2(10)
SQL_ADDRESS RAW(8)
SQL_HASH_VALUE NUMBER
PREV_SQL_ADDR RAW(8)
PREV_HASH_VALUE NUMBER
MODULE VARCHAR2(48)
MODULE_HASH NUMBER
ACTION VARCHAR2(32)
ACTION_HASH NUMBER
CLIENT_INFO VARCHAR2(64)
FIXED_TABLE_SEQUENCE NUMBER
ROW_WAIT_OBJ# NUMBER
ROW_WAIT_FILE# NUMBER
ROW_WAIT_BLOCK# NUMBER
ROW_WAIT_ROW# NUMBER
LOGON_TIME DATE
LAST_CALL_ET NUMBER
PDML_ENABLED VARCHAR2(3)
FAILOVER_TYPE VARCHAR2(13)
FAILOVER_METHOD VARCHAR2(10)
FAILED_OVER VARCHAR2(3)
RESOURCE_CONSUMER_GROUP VARCHAR2(32)
PDML_STATUS VARCHAR2(8)
PDDL_STATUS VARCHAR2(8)
PQ_STATUS VARCHAR2(8)
CURRENT_QUEUE_DURATION NUMBER
CLIENT_IDENTIFIER VARCHAR2(64)
此时系统如果需要恢复,必须将系统停止。但是由于系统shutdown时,会更新检查点,更新控制文件,因此必须采用abort。
SQL> shutdown abort
ORACLE instance shut down.
系统停止运行后就要进行恢复,恢复步骤如下:
SQL> startup nomount
ORACLE instance started.
Total System Global Area 267479512 bytes
Fixed Size 735704 bytes
Variable Size 184549376 bytes
Database Buffers 81920000 bytes
Redo Buffers 274432 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "OPENVIEW" RESETLOGS ARCHIVELOG
2 MAXLOGFILES 128
3 MAXLOGMEMBERS 5
4 MAXDATAFILES 500
5 MAXINSTANCES 1
6 MAXLOGHISTORY 453
7 LOGFILE
8 GROUP 1 '/opt/oradata/opnview/redo01.log' SIZE 20M,
9 GROUP 2 '/opt/oradata/opnview/redo02.log' SIZE 20M,
10 GROUP 3 '/opt/oradata/opnview/redo03.log' SIZE 20M
11 DATAFILE
12 '/opt/oradata/opnview/system_1.dbf',
13 '/opt/oradata/opnview/temp_1.dbf',
14 '/opt/oradata/opnview/RBS1_1.dbf',
15 '/opt/oradata/opnview/tools_1.dbf',
16 '/opt/oradata/opnview/OPC_1_1.dbf',
17 '/opt/oradata/opnview/OPC_2_1.dbf',
18 '/opt/oradata/opnview/OPC_3_1.dbf',
19 '/opt/oradata/opnview/OPC_4_1.dbf',
20 '/opt/oradata/opnview/OPC_5_1.dbf',
21 '/opt/oradata/opnview/OPC_6_1.dbf',
22 '/opt/oradata/opnview/OPC_7_1.dbf',
23 '/opt/oradata/opnview/OPC_8_1.dbf',
23 '/opt/oradata/opnview/OPC_8_1.dbf',
24 '/opt/oradata/opnview/OPC_9_1.dbf',
25 '/opt/oradata/opnview/OPC_10_1.dbf',
26 '/opt/oradata/opnview/OPC_INDEX1_1.dbf',
27 '/opt/oradata/opnview/OPC_INDEX2_1.dbf',
28 '/opt/oradata/opnview/OPC_INDEX3_1.dbf',
29 '/opt/oradata/opnview/PATCHDATA.dbf',
30 '/opt/oradata/opnview/GAB_DATA_1.dbf',
31 '/opt/oradata/opnview/GAB_DATA_2.dbf',
'/o 32 pt/oradata/opnview/ts_iptmp_02.dbf',
33 '/opt/oradata/opnview/TS_IPTMP.dbf',
34 '/opt/oradata/opnview/TS_IPTOOL.dbf',
35 '/opt/oradata/opnview/TS_SM_3.dbf',
36 '/opt/oradata/opnview/TS_IPPA_3.dbf',
37 '/opt/oradata/opnview/TS_IPPA_IND_1.dbf',
38 '/opt/oradata/opnview/TS_IPPA_IND_2.dbf',
39 '/opt/oradata/opnview/TS_IPWEB_3.dbf',
40 '/opt/oradata/opnview/TS_IPWEB_IND_2.dbf',
41 '/opt/oradata/opnview/TS_IPFM_3.dbf',
42 '/opt/oradata/opnview/TS_IPFM_IND_2.dbf',
43 '/opt/oradata/opnview/TS_IPCM_3.dbf',
44 '/opt/oradata/opnview/ts_iptmp_03.dbf',
45 '/opt/oradata/opnview/ts_iptmp_01.dbf',
46 '/opt/oradata/opnview/ts_iptmp_04.dbf',
47 '/opt/oradata/opnview/ts_iptmp_05.dbf',
48 '/opt/oradata/opnview/ts_iptmp_06.dbf',
49 '/opt/oradata/opnview/TS_IPPA_1.dbf',
50 '/opt/oradata/opnview/nf_pc.dbf',
51 '/opt/oradata/opnview/nf_filter.dbf',
52 '/opt/oradata/opnview/nf_file.dbf',
53 '/opt/oradata/opnview/nf_file_pa.dbf',
'/o 54 pt/oradata/opnview/nf_cm.dbf',
55 '/opt/oradata/opnview/nf_file_temp.dbf'
CH 56 ARACTER SET ZHS16CGB231280
57 ;
Control file created.
在恢复时系统提示要一个并不存在的归档日志,这是因为当前的redo不能写入,因此这些还都存在于redo,此时的恢复文件需要指定到当前的redo,如下所示:
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;
ORA-00279: change 1011487 generated at 03/23/2006 15:47:34 needed for thread 1
ORA-00289: suggestion : /opt/oracle/admin/openview/arch/T0001S0000000006.ARC
ORA-00280: change 1011487 for thread 1 is in sequence #6
Specify log: {
/opt/oradata/opnview/redo01.log
ORA-00310: archived log contains sequence 5; sequence 6 required
ORA-00334: archived log: '/opt/oradata/opnview/redo01.log'
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;
ORA-00279: change 1011487 generated at 03/23/2006 15:47:34 needed for thread 1
ORA-00289: suggestion : /opt/oracle/admin/openview/arch/T0001S0000000006.ARC
ORA-00280: change 1011487 for thread 1 is in sequence #6
Specify log: {
/opt/oradata/opnview/redo02.log
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;
Database altered.
SQL> ALTER TABLESPACE OPC_TEMP ADD TEMPFILE '/opt/oradata/opnview/OPC_TEMP_1.db' 2 SIZE 4194304 REUSE AUTOEXTEND ON NEXT 1048576 MAXSIZE 524288000 ;
Tablespace altered.
SQL> ALTER TABLESPACE PATCHTEMP ADD TEMPFILE '/opt/oradata/opnview/PATCHTEMP.db' 2 SIZE 209715200 REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TS_TEMP1 ADD TEMPFILE '/opt/oradata/opnview/TS_TEMP1_2.dbf' SIZE 314572800 REUSE AUTOEXTEND OFF;
ALTER TABLESPACE NF_TEMP ADD TEMPFILE '/opt/oradata/opnview/nf_temp.dbf' SIZE 52428800 REUSE AUTOEXTEND OFF;
Tablespace altered.
SQL> 2
Tablespace altered.
SQL> 2
Tablespace altered.
此时恢复完成,系统执行了恢复,但是resetlogs,因此最好做一个备份。
ORACLE11G RMAN备份恢复到异机数据库 1. 主数据库环境 操作系统版本 : Centos6.7 x64 数据库版本 : Oracle 11.2.0.4 x64 数据库名 : prb 数据库SID : prb db_unique_name : prb instance_name : prb IP : 10.0.8.100 2. 备库环境 操作系统版本 : Centos6.7 x64 数据库版本 : Oracle 11.2.0.4 x64 (只安装oracle数据库软件,no netca dbca) 数据库名 : prb 数据库SID : prb db_unique_name: prb instance_name : prb IP:10.0.8.101 将参数文件备份、控制文件备份、数据文件备份、以及归档备份到目标主机 1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构。 2 目标机器只需要安装oracle只安装oracle数据库软件,no netca dbca 3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标机器并在控制文件中注册,再见行恢复测试。 备份数据库 backup format '/u01/prb/rmanbk/fulldb_%d_%U' database include current controlfile plus archivelog delete input; orapwd file='/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwprb' password=oracle entries=10 force=y 1rman 连接到源数据库 prd-db1-> rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Wed Aug 17 19:23:27 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: PRB (DBID=1906641159) RMAN> 2 分别列出参数文件备份,控制文件备份,数据文件备份,以及归档备份的名字 参数文件备份如下: RMAN> list backup of spfile; using target database control file instead of recovery catalog List of Backup Sets ===================
Oracle 11g 基于RMAN的备份与恢复 备份整个数据库 C:\Users\huangluxiang>rman target/ RMAN> backup database; RMAN> exit (退出) (1)重做日志损坏 SQL> conn /as sysdba 已连接到空闲例程。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 1071333376 bytes Fixed Size 1375792 bytes Variable Size 729809360 bytes Database Buffers 335544320 bytes Redo Buffers 4603904 bytes 数据库装载完毕。 SQL> recover database until cancel; 完成介质恢复。 SQL> alter database open resetlogs; 数据库已更改。 SQL> archive log list; 数据库日志模式存档模式 自动存档启用 存档终点USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 备注:恢复Oracle数据库,应该备份整个数据库 (2)数据库丢失数据文件,控制文件,重做日志文件 C:\Users\huangluxiang>rman target/ RMAN> restore controlfile from autobackup; RMAN>alter database mount; RMAN> restore database; SQL> conn /as sysdba 已连接。 SQL> recover database using backup controlfile until cancel; ORA-00279: 更改990116 (在12/13/2013 14:06:05 生成) 对于线程1 是必需的 ORA-00289: 建议: C:\APP\HUANGLUXIANG\FLASH_RECOVERY_AREA\DLNU\ARCHIVELOG\2013_12_13\ O1_MF_1_5_%U_ .ARC ORA-00280: 更改990116 (用于线程1) 在序列#5 中 指定日志: {
Oracle备份恢复场景总结 一、数据文件、表空间恢复 1、数据库文件恢复 1>场景一: 问题描述: test.dbf丢失,有RMAN备份。 重启报错: Startup; ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: data file 5: '/oracle/app/oracle/oradata/orcl/test01.dbf' run{ startup mount; allocate channel ch00 type 'SBT_TAPE'; restore datafile 5; recoverdatafile 5; alter database open; release channel ch00; }
2>场景二 问题描述: 模拟test表空间损坏,删除数据文件(恢复到新目录) 旧目录:/oracle/app/oracle/oradata 新目录: /home/oracle run{ allocate channel ch00 type 'SBT_TAPE'; sql 'alter database datafile 5 offline'; setnewname for datafile 5 to '/home/oracle/test01.dbf'; restoredatafile 5; switchdatafile 5; recoverdatafile 5; sql 'alter database datafile 4 online'; release channel ch00; } 说明: set newname for 告诉RMAN 还原数据文件的新位置在哪里。这个命令在restore 前出现。 switch datafile更新controlfile,记录这个新位置。这个命令要在recover 前出现
O R A C L E数据备份与数据恢 复方案 Prepared on 24 November 2020
摘要 结合金华电信IT系统目前正在实施的备份与恢复策略,重点介绍电信业务计算机管理系统(简称97系统)和营销支撑系统的ORALCE数据库备份和恢复方案。 Oracle数据库有三种标准的备份方法,它们分别是导出/导入 (EXP/IMP)、热备份和冷备份。要实现简单导出数据(Export)和导入数据(Import),增量导出/导入的按设定日期自动备份,可考虑,将该部分功能开发成可执行程序,然后结合操作系统整合的任务计划,实现特定时间符合备份规划的备份应用程序的运行,实现数据库的本级备份,结合ftp简单开发,实现多服务器的数据更新同步,实现数据备份的异地自动备份。 关键字:数据库远程异地集中备份 目录
一、前言 目前,数据已成为信息系统的基础核心和重要资源,同时也是各单位的宝贵财富,数据的丢失将导致直接经济损失和用户数据的丢失,严重影响对社会提供正常的服务。另一方面,随着信息技术的迅猛发展和广泛应用,业务数据还将会随业务的开展而快速增加。但由于系统故障,数据库有时可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如做了备份,恢复数据就显得很容易。由此可见,做好数据库的备份至关重要。因此,建立一个满足当前和将来的数据备份需求的备份系统是必不可少的。传统的数据备份方式主要采用主机内置或外置的磁带机对数据进行冷备份,这种方式在数据量不大、操作系统种类单一、服务器数量有限的情况下,不失为一种既经济又简明的备份手段。但随着计算机规模的扩大,数据量几何级的增长以及分布式网络环境的兴起,将越来越多的业务分布在不同的机器、不同的操作平台上,这种单机的人工冷备份方式越来越不适应当今分布式网络环境。 因此迫切需要建立一个集中的、自动在线的企业级备份系统。备份的内容应当包括基于业务的业务数据,又包括IT系统中重要的日志文件、参数文件、配置文件、控制文件等。本文以ORACLE数据库为例,结合金华电信的几个相关业务系统目前正在实施的备份方案,介绍ORACLE数据库的备份与恢复。 二、金华电信ORACLE数据库的备份与恢复方案 由于金华电信IT系统以前只采用逻辑备份方式进行数据库备份,速度较慢并且数据存储管理都很分散,甚至出现备份数据不完整的现象。为了提高备份数据的效率,提供可靠的数据备份,完善备份系统,保证备份数据的完整性,降低数据备份对网络和服务器的影响,对每个IT系统的备份数据进行集中管理,我们对备份工作进行了改进,将逻辑备份与物理备份相结合,在远程建立了一个异地集中、自动在线的备份系统即网络存储管理系统。(这里用到的物理备份指热备份)其具备的主要功能如下:(1)集中式管理 :网络存储备份管理系统对整个网络的数据进行管理。利用集中式管理工具的帮助,系统管理员可对全网的备份策略进行统一管理,备份服务器可以监控所有机器的备份作业,也可以修改备份策略,并可即时浏览所有目录。所有数据可以备份到同备份服
完全备份: 完全备份是指对数据库中使用过的所有数据块进行备份,当然,没有使用过的数据块是不做备份的。在进行完全备份时,RMAN将数据文件中所有的非空白数据块都复制到备份集中。在RMAN中,可以对数据文件进行完全备份或者增量备份,但是对控制文件和日志文件只能进行完全备份。在一个完全数据库备份中,将所有的数据库文件,复制到闪回恢复区。 完全备份实例: 【例】通过BACKUP FULL语句,对数据库执行完全备份。使用TAG参数和FORMAT参数,指定备份文件位置以及备份文件的名称格式。如下: RMAN>RUN{ 2> #BACKUP THE COMPLETE DATABASE 3> ALLOCATE CHANNEL ch1 TYPE DISK; 4> BACKUP FULL 5> TAG full_db_backup FORMAT"E:\app\backup\db_t%t_s%s_p%p" (database); 6> RELEASE CHANNEL ch1; 7> } 【例】在RMAN中执行LIST命令,查看建立的备份集与备份段信息,如下: RMAN> LIST BACKUP OF DATABASE; 增量备份: 增量备份就是将那些与前一次备份相比发生变化的数据块复制到备份集中。进行增量备份时,RMAN会读取整个数据文件,通过RMAN可以为单独的数据文件、表空间、或者整个数据库进行增量备份。在RMAN中建立的增量备份可以具有不同的级别,每个级别都使用一个不小于0的整数来标识,也就是在BACKUP命令中使用LEVEL关键字指定的,例如LEVEL = 0表示备份级别为0,LEVEL = 1表示备份级别为1。 增量备份的方式:
Linux下Oracle9i RMAN备份及恢复步骤介 1、切换服务器设置归档模式,如果已经是归档模式可跳过此步: %sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL> shutdown immediate; (立即关闭数据库) SQL> startup mount (启动实例并加载数据库,但不打开) SQL> alter database archivelog; (更改数据库为归档模式) SQL> alter database open; (打开数据库) SQL> alter system archive log start; (启用自动归档) SQL> exit (退出) 2、连接: %rman target=sys/password@mydb (启动恢复管理器) 3、基本设置: RMAN> configure default device type to disk; (设置默认的备份设备为磁盘) RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数) RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份) RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式) 4、查看所有设置:
首先确定/u02/rman目录是否存在 export ORACLE_SID=数据库实例名 rman备份操作: 使用sys用户登录rman rman target sys/syscode #进入rman run{ #备份数据库 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/u02/rman/test_%U'; ALLOCATE CHANNEL CH2 DEVICE TYPE DISK FORMAT '/u02/rman/test_%U'; BACKUP incremental level 0 DATABASE plus archivelog delete input; RELEASE CHANNEL CH1; RELEASE CHANNEL CH2; } list backupset; #备份完毕,记录scn (备份时记录备份完成的SCN号,此SCN号作为数据库恢复的时间点,必须记录下来) #SCN号类似如下: rman 恢复操作 1、首次进行恢复 使用sys用户登录rman rman target sys/syscode #进入rman shutdown immediate #停止数据库 startup mount; #启动实例 run{ set until scn ********; #**为备份时记录的SCN号 restore database; #还原数据库 recover database; #恢复数据库 sql 'alter database open resetlogs'; #打开数据库 } 2、多次恢复 在使用备份文件恢复数据库,用open resetlogs方式打开数据之后,如果需要再次恢复数据库,需要指定数据库的incarnation. 使用sys用户登录rman rman target sys/syscode #进入rman shutdown immediate #停止数据库 startup mount; #启动实例 list backupset; #选择scn (备份时记录备份完的SCN号) #SCN号类似如下:
增量备份计划案例 一、增量备份计划关键命令 星期日: RMAN> backup incremental level=0 database; 星期一: RMAN> backup incremental level=2 database; 星期二: RMAN> backup incremental level=2 database; 星期三: RMAN> backup incremental level=1 database; 星期四: RMAN> backup incremental level=2 database; 星期五: RMAN> backup incremental level=2 database; 星期六: RMAN> backup incremental level=2 database; 二、增量备份计划与恢复实例: 恢复管理器: Release 10.2.0.1.0 - Production on 星期六3月22 14:47:30 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1177145004) RMAN> backup incremental level=0 database; 启动backup 于22-3月-08 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道ORA_DISK_1: sid=122 devtype=DISK 通道ORA_DISK_1: 启动增量级别0 数据文件备份集 通道ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件fno=00001 name=C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF 输入数据文件fno=00003 name=C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF 输入数据文件fno=00007 name=C:\ORACLE\ORADATA\ORCL\PERFSTAT.DBF 输入数据文件fno=00005 name=C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF 输入数据文件fno=00002 name=C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF 输入数据文件fno=00004 name=C:\ORACLE\ORADATA\ORCL\USERS01.DBF 输入数据文件fno=00006 name=C:\ORACLE\ORADATA\ORCL\TTT.DBF 通道ORA_DISK_1: 正在启动段 1 于22-3月-08 通道ORA_DISK_1: 已完成段 1 于22-3月-08 段句柄=C:\ORACLE\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_03_22\O1 _MF_NNND0_TAG20080322T144756_3Y9BWXK2_.BKP 标记=TAG20080322T144756 注释=NONE 通道ORA_DISK_1: 备份集已完成, 经过时间:00:01:45 完成backup 于22-3月-08 启动Control File and SPFILE Autobackup 于22-3月-08 段
谈ORACLE备份与恢复 经常听到有人说,某数据库备份方法好,某备份方法不好,或者说现在都流行用rman 来备份了,逻辑备份已经过时了,冷备份就更不值一提了,其实数据库的备份从来没有什么好坏之分、没有过时之说,合适才是最重要的,自己好才是真的好.各种方法各有长短,谁也代替不了谁,只有根据实际情况搭配使用,才能发挥最大的作用,否则只能是东施效颦. 1 . o r ac 1 e的备份,包括no a r chi v e I og模式的备份(冷备份)、arch i velog模式的备份(热备份、rman备份)、逻辑备份(不分模式). 1.1.冷备份: ~ 1)关闭数据库 s hu t d o wn; -一2)备份数据文件、控制文件、重做日志文件 一-A、查找备份文件的位置 SELEC T * FROM VSDATAFIL E ; —査数据文件 s el e ct * f r om v$cont r o 1 f il e ; —查控制文件 s e le c t * f r om vSlogf i 1 e; —査日志文件 ~ B、备份数据文件、控制文件、重做日志文件 $ copy D:\oracle\o r a data\or a 9 \ *. dbf d: \ b a k \ *. *; $ cop y D:\ora cle \ oradat a \ora9 \ *? c t 1 d : \ b a k\*? *: $ copy D:\oracle \o r adata\o r a9\*? I og d:\bak\*? *; 1.2.热备份: ~ 1)查询备份的数据文件与哪一个表空间有关 SELECT V$TAF3LESPACE ? NAME, VS DATAFILE. NAME FROM V$TA B LES P ACE J OIN V$DATAF I LE USING(TS#); ~ 2)备份数据文件 a 1 t er tablespace 表空间BEGIN BACKUP; $ COPY数据文件存放路径
rman备份恢复 1.通过rman备份文件恢复spfile 2.通过rman备份文件恢复controlfile 3.通过rman备份文件恢复datafile 4.利用恢复回来的controlfile和datafile生成redolog 5.测试交易是否存在,并全备 我系统环境所有的文件如下: [oracle@fowaydbs]$ pwd /opt/oracle/10g/dbs [oracle@fowaydbs]$ ls initdw.ora init.ora [oracle@fowaydbs]$ls /opt/oracle/oradata 已没有任何资料 [oracle@fowaydbs]$ls /opt/oracle/admin 已没有任何资料 [oracle@fowaydbs] ls /opt/oracle/flash_recovery_area/ ORCL [oracle@fowaydbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/
2008_07_18 [oracle@fowaydbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_ 18/ o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp 在我这台电脑上, ,系统中所有的ORCL相关的数据文件,参数文件,日志文件,控制文件全部不在了, 没有其他可用的备份文件了,只有rman备份的文件在,这可怎么办呢? 没办法只能恢复了,可怎么恢复呢? 要恢复数据文件用rman备份? 能吗? 当然不能了,因为restore 必须在mount or open状态下. 参数文件,控制文件都没有怎么mount? 要mount必须有参数文件,控制文件,为此我们必须解决这2个难题了. 在解决难题前先准备ORCL的必须的目录: [oracle@fowaydbs]mkdir /opt/oracle/oradata/orcl
ORACLE RMAN增量备份经典理解2014-03-29 09:37:46 分类:Oracle Oracle中,增量备份时分等级的,级别从0开始,一级一级递增,不过实际上用的最多的也就是0级和1级了,0级增量备份是后面级别的增量备份的基础,0级备份实际上就是一个完全备份,与普通的完全备份唯一的不同点是0级备份可以作为其他级别增量备份的基础,而普通的完全备份是不能的。 从级别1开始,Oracle的增量备份分为差异增量备份和积累增量备份两种,其中差异增量备份备份的是自上一次同级别的差异备份或者是上一次更高级别的备份完成之后的数据库发生改变的数据块;而积累增量备份则是备份的自上一次上一级增量备份完成以来数据库发生改变的数据块。在《Backup and Recovery User’s Guide》的“增量备份”一节中有两幅图很形象的描述了这两个增量备份之间的异同: 差异增量备份图示
积累增量备份图示 -------------------------------------------------------------------------------------> > rman 全备与0、1级增量备份 1、简单来说,rman全库备份只需要backup database;(未压缩),或者backup as compressed backupset database; (压缩)。即可完全备份,如下: RMAN> backup database; Starting backup at 08-OCT-13 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1
ORACLE数据库备份与恢复详解 Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示 三种方式各有优点,我们做个比较(这个是用Fireworks画的,有点糙):
$A: 现在先来介绍一下逻辑备份方式的方法,利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。理论基础:Oracle 提供的Export和Import具有三种不同的操作方式(就是备份的数据输出(入)类型): 1,表方式(T) 可以将指定的表导出备份; 2,全库方式(Full) 将数据库中的所有对象导出; 3,用户方式(U) 可以将指定的用户相应的所有数据对象导出; *在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,但是它必须作为System来完成增量的导入导出,而且只能是对整个数据库进行实施。增量导出又可以分为三种类别: 1,完全增量导出(完全备份)(Complete Export) 这种方式将把整个数据库文件导出备份;exp system/manager inctype=complete file=20041125.dmp(为了方便检索和事后的查询,通常我们将备份文件以日期或者其他有明确含义的字符命名) 2,增量型增量导出(增量备份)(Incremental Export) 这种方式将只会备份上一次备份后改变的结果;exp system/manager inctype=incremental file=20041125.dmp 3,累积型增量导出(差异备份)(Cumulate Export) 这种方式的话,是导出自上次完全增量导出后数据库变化的信息。exp system/manager inctype=cumulative file=20041125.dmp 通常情况下,DBA们所要做的,就是按照企业指定或者是自己习惯的标准(如果是自己指定的标准,建议写好计划说明),一般,我们采用普遍认可的下面的方式进行每天的增量备份: Mon:完全备份(A) Tue:增量导出(B) Wed:增量导出(C) Thu:增量导出(D)
基于Rman的测试 为了配合公司产品的功能测试,特完成此文档(公司产品相关测试部分已剔除)。本文档主要是介绍rman工具的基本使用,此处只做全库的备份,以及不完全恢复,数据库模式为归档模式。 1Rman工具的简单介绍 Rman全称Recover Manager是oracle提供的一款备份恢复数据库或数据库组件(表空间、数据文件、控制文件以及参数文件等)的工具。并且rman还可以对数据库的归档日志进行管理。 2 数据库备份与恢复 Rman提供两种备份模式,一种是将备份数据信息写入到本地的控制文件中,另一种是恢复目录方式:这种方式是将备份数据库信息写入到本地控制文件和catalog(恢复目录)中,oracle推荐使用第二种方式。Catalog一般创建在另外的一个数据库中,这样备份的数据库崩溃后不影响其恢复。使用第一种方式,如果数据库崩溃,而且没有控制文件的备份,这种情况下就没有办法进行恢复操作。这里使用恢复目录方式进行操作。 1)Catalog的创建 恢复目录所在数据库为rmandb,创建的恢复目录为tsp_rman,连接用户为rman/rman a)创建恢复目录 Create tablespace tsp_rman datafile ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\SCHINATEST\rman01.DBF’ size 120m; b)创建用户 Create user rman identified by rman; c)授权
Grant connect, resource, recovery_catalog_owner to rman; 2)连接到Rman 使用以下命令进行rman工具的连接: 连接时需要sysdba系统权限 Rman sys/oracle@schinatest catalog rman/rman@rmandb 说明: Schinatest是准备备份的目标数据库,rmandb是恢复目录数据库 3)查看目标数据库的归档模式 以dba用户登录oracle,查看目标数据库的归档模式:此处是归档模式 SQL> archive log list; 图 3.1 查看归档模式 因为一般情况下,真正使用场景中的数据库都为归档模式,而且非归档模式下使用rman有一些限制,所以此处只做归档模式下的测试。如果数据库是非归档模式,需改成归档模式。 4)注册目标数据库 只有在恢复目录中注册的数据库才能进行备份与恢复操作,注册很简单,连接到rman工具后,使用register database命令进行注册即可 5)配置Rman的使用参数 使用show all命令显示rman的全部配置参数:
第一医院数据库迁移的实施步骤 利用RMAN备份正式库 全库备份及控制文件 RMAN>run{ allocate channel c1 device type disk; sql 'alter system archive log current'; backup as compressed backupset database format '+ FRA/DYYY/BACKUPSET/db_%d_%T_%U'; sql 'alter system archive log current'; backup current controlfile format '+ FRA/DYYY/controlfile/cntrl_%s_%p_%s'; release channel c1; } 生成数据库还原脚本restoredatafil e.sql 检查是否有增加数据文件select count(*)from v$datafile; 如果有增加数据库文件必须重新生成 sqlplus /nolog conn /as sysdba set serveroutput on; set linesize 200 spool restore_datafile.rman declare cursor df is select file#, name from v$datafile; begin dbms_output.put_line('run'); dbms_output.put_line('{'); for dfrec in df loop dbms_output.put_line('set newname for datafile ' || dfrec.file# || ' to ''' || https://www.doczj.com/doc/b45948772.html, ||''' ;'); end loop; dbms_output.put_line('restore database;'); dbms_output.put_line('switch datafile all;'); dbms_output.put_line('}'); end; / spool off
在这里没有讨论多么深入的RMAN技术,也没有告诉大家这样去编写备份脚本,这并不是我的初衷,我只想把我会的写出来,和大家一起学习,一起进步,谢谢。 1、切换服务器归档模式,如果已经是归档模式可跳过此步:%sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL> shutdown immediate; (立即关闭数据库) SQL> startup mount (启动实例并加载数据库,但不打开) SQL> alter database archivelog; (更改数据库为归档模式) SQL> alter database open; (打开数据库) SQL> alter system archive log start; (启用自动归档) SQL> exit (退出) 2、连接:%rman target=rman/rman@mydb (启动恢复管理器) 3、基本设置:RMAN> configure default device type to disk; (设置默认的备份设备为磁盘) RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数) RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)
RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份) RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式) 4、查看所有设置: RMAN> show all 5、查看数据库方案报表: RMAN> report schema; 6、备份全库: RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志) 7、备份表空间: RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志) 8、备份归档日志:
ORACLE 最简单有效的备份恢复方案 ORACLE备份分两种,1.逻辑备份;2.物理备份; 逻辑备份又分两种:传统的exp备份;10g开始支持的expdp数据泵备份; 物理备份主要就是RMAN备份; 最基本的原则是:这些逻辑或物理备份和数据库文件必须放在不同的硬盘上;否者一损俱损;备份就没多大意义了; 如果数据库不是很大,比如在50G以下,那么我们就考虑一些傻话化的全备方案 我现在的备份方案是:两个逻辑备份和RMAN 备份全部用上; 1.传统dmp逻辑备份和恢复 1.1传统dmp逻辑备份,这个是最简单的备份方法; 现在我提供一个简单的脚本: 1.1.1首先建立一个bat文件,名字叫:exp_backup.bat 内容是: set oracle_username=%1 set oracle_password=%2 set local_tnsname=%3 set url=%oracle_username%/%oracle_password% if not %local_tnsname% == "" set url=%url%@%local_tnsname% if exist %oracle_username%_old.dmp del %oracle_username%_old.dmp if exist %oracle_username%_old.log del %oracle_username%_old.log if exist %oracle_username%.dmp ren %oracle_username%.dmp %oracle_username%_old.dmp if exist %oracle_username%.log ren %oracle_username%.log %oracle_username%_old.log exp %url% file=%oracle_username%.DMP log=%oracle_username%.LOG 该脚本是一个通用的最简单的exp脚本; 意思就是:备份之间,把以前的备份文件修改名字,后面加上_old ,如果本来就有old文件,就删除之;之后,
数据库rman备份恢复文档 一.Rman简介 RMAN是ORACLE提供的恢复和备份工具,是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件、归档日志和控制文件,用来执行完全或不完全的数据库恢复。与传统工具相比,RMAN具有独特的优势:跳过未使用的数据块。当备份一个RMAN 备份集时,RMAN不会备份从未被写入的数据块,而传统的方式无法获知那些是未被使用的数据块。RMAN使用Oracle特有的二进制压缩模式,与传统备份的压缩方式相比,能够最大程度地压缩数据块中的一些典型数据。 二.系统规划 数据库备份文件不建议与系统盘(C盘)、oracle数据文件存放盘(D 盘)存放在一起,本文单独存放于E盘。 注:在进行以下操作前要根据自己的环境建立如下目录“E:\orabackup\”,“’E:\archivelog_backup”,“E:/orabackup_script/”。本文用到的命令中的标点均为英文字符下的标点。 三.设置oracle数据库为归档模式(ARCHIVELOG) 按以下步骤操作,检查oracle数据库是否为归档模式。 1.选择“开始”→“系统”→“运行”,输入cmd,按回车。 2.输入“sqlplus”,按回车。 3.输入“system / as sysdba ”,按回车。 4.输入数据库system账号的密码,按回车。 5.查看数据库归档模式,输入“archive log list;”,按回车。如下图所示。
如果“数据库日志模式”为“非存档模式”,则需按照如下步骤开启归档模式: 1.设置数据库日志归档路径。 输入“alter system set log_archive_dest=’E:\archivelog_backup’ scope=spfile; ”,按回车。 2.关闭数据库。输入“shutdown immediate;”,按回车。 3. 启动数据库到mount状态。输入“startup mount;”,按回车。 4. 更改数据库的归档模式。输入“alter database archivelog;”,按回车。 5.打开数据库。输入“alter database open;”,按回车。
RMAN 自动备份详解 目录 1 数据库修改为自动归档模式。 (2) 2 修改rman参数 (3) 3 rman自动备份脚本 (8) 4 设置系统自动备份参数: (10) 5 rman还原 (11) 恢复整个数据库 (11) 恢复单个表空间 (12) https://www.doczj.com/doc/b45948772.html,/unixcd12/article_5431.html增量备份详解网上很多
1 数据库修改为自动归档模式。 为什么要设置为自动归档模式呢?主要是因为,如果不设置为自动归档模式,使用rman的时候需要把数据库修改到mount状态而不是open状态。而自动归档模式是可以在open使用中进行热备的。下面是修改自动归档模式步骤: 1 Sqlplus / as sysdba 进入数据库(本地) 2 Archive log list (查看是否是自动归档模式。) 下面显示的是非归档模式 SQL> archive log list; Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 25 Current log sequence 27 3 shutdown immediate;关闭数据库 4 startup mount 启动到mount状态 5 alter database archivelog;修改为归档模式 6 alter database open;打开数据库 7 archive log list 产看是否启动成功 以下为启动成功后显示 SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST
1、建rman库作为repository $more createrman_db1.sh set echo on spool makedb1.log create database rman datafile '/export/home/oracle/oradata/rman_data/system.dbf' size 50m autoextend on next 640K logfile '/export/home/oracle/oradata/rman_data/redo0101.log' SIZE 10M, '/export/home/oracle/oradata/rman_data/redo0201.log' SIZE 10M maxdatafiles 30 maxinstances 8 maxlogfiles 64 character set US7ASCII national character set US7ASCII ; disconnect spool off exit @/export/home/oracle/8.1.6/rdbms/admin/catalog.sql; REM ********** ALTER SYSTEM TABLESPACE ********* ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCR EASE 50); ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K; REM ********** TABLESPACE FOR ROLLBACK ********** CREATE TABLESPACE RBS DATAFILE '/export/home/oracle/oradata/rman_data/rbs.dbf' s ize 50m AUTOEXTEND ON NEXT 512K MINIMUM EXTENT 512K DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 10 MAXEXTENTS UNLIMITED PC TINCREASE 0 ); REM ********** TABLESPACE FOR TEMPORARY ********** CREATE TABLESPACE TEMP DATAFILE '/export/home/oracle/oradata/rman_data/temp.dbf' size 50m AUTOEXTEND ON NEXT 64K MINIMUM EXTENT 64K DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCR EASE 0) TEMPORARY; REM **** Creating four rollback segments ****************