注:转这个文章的原因是rman很重要,可是到目前为止我还不会用这个玩意儿。
完整的oracle rman备份恢复的例子
作者:zhumy
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 ****************
CREATE PUBLIC ROLLBACK SEGMENT RBS_0 TABLESPACE RBS
STORAGE ( OPTIMAL 64000K );
ALTER ROLLBACK SEGMENT "RBS_0" ONLINE;
REM **** SYS and SYSTEM users ****************
alter user sys temporary tablespace TEMP;
alter user system temporary tablespace TEMP;
disconnect
spool off
exit
$more createrman_db3.sh
spool crdb3.log
@/export/home/oracle/8.1.6/rdbms/admin/catproc.sql
@/export/home/oracle/8.1.6/rdbms/admin/caths.sql
@/export/home/oracle/8.1.6/rdbms/admin/otrcsvr.sql
connect system/manager
@/export/home/oracle/8.1.6/sqlplus/admin/pupbld.sql
disconnect
spool off
exit
2、建repository存放的表空间和rman用户
$more createrman_db4.sh
connect internal
create tablespace rman_ts
datafile '/export/home/oracle/oradata/rman_data/rman_ts.dbf'
size 20M default storage (initial 100K next 100K pctincrease 0);
create user rman_hainan identified by rman_hainan
temporary tablespace TEMP
default tablespace rman_ts quota unlimited on
rman_ts;
grant recovery_catalog_owner to rman_hainan;
grant connect ,resource to rman_hainan;
3、建catalog,注册目标数据库
$more createrman_db5.sh
rman catalog rman_hainan/rman_hainan@rman msglog=rman.log
create catalog ;
exit;
rman target sys/oracle@db1
connect catalog rman_hainan/rman_hainan@rman
register database;
exit;
4、可以开始做备份了。
5、做全备
$more rmanshell
. /export/home/oracle/.profile
rman rcvcat rman_hainan/rman_hainan@rman target / cmdfile /export/home/oracle/ba
ckup_level0.rcv log /export/home/oracle/backup.log
$more backup_level0.rcv
resync catalog;
run {
allocate channel t1 type disk;
backup
incremental level 0
skip inaccessible
tag hot_db_bk_level0
filesperset 3
format '/export/home/oracle/bk_%s_%p_%t.bk'
(database);
sql 'alter system archive log current';
backup
filesperset 10
format '/export/home/oracle/a1_%s_%p_%t.ac'
(archivelog all delete input);
backup
format '/export/home/oracle/df_t%t_s%s_p%p.ct'
current controlfile ;
}
6、做增备
$more rmanshell1
rman rcvcat rman_hainan/rman_hainan@rman target / cmdfile backup_level1.rcv log
backup.log
$more backup_level1.rcv
resync catalog;
run {
allocate channel t1 type disk;
backup
incremental level 1
skip inaccessible
tag hot_db_bk_level1
filesperset 3
format 'bk_%s_%p_%t.bk1'
(database);
sql 'alter system archive log current';
backup
filesperset 10
format 'a1_%s_%p_%t.ac1'
(archivelog all delete input);
backup current controlfile;
}
1、 删除旧的全备
$rman rcvcat rman_hainan/rman_hainan@rman target /
Recovery Manager: Release 8.1.6.0.0 - Production
RMAN-06005: connected to target database: TEST (DBID=1692992254)
RMAN-06008: connected to recovery catalog database
RMAN> list backupset;
RMAN-03022: compiling command: list
List of Backup Sets
Key Recid Stamp LV Set Stamp Set Count Completion Time
------- ---------- ---------- -- ---------- ---------- ----------------------
38 145 399987408 0 399987406 153 11-JUN-00
根据key来删除旧的备份。
RMAN> allocate channel for maintenance type disk;
RMAN> change backupset 169 delete; ----------THIS IS THE COMMAND TO REMOVE THE ENTRY & OS FILE
做完后可以看到list backupset和操作系统的文件都没有了。
2、 恢复
(1) 将数据库启动到nomount状态:
$svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> startup nomount;
ORACLE instance started.
Total System Global Area 339275684 bytes
Fixed Size 94116 bytes
Variable Size 318685184 bytes
Database Buffers 16384000 bytes
Redo Buffers 4112384 bytes
SVRMGR> exit
Server Manager complete.
(2) 恢复控制文件:
$rman rcvcat rman_hainan/rman_hainan@rman target /
Recovery Manager: Release 8.1.6.0.0 - Production
RMAN-06006: connected to target database: test (not mounted)
RMAN-06008: connected to recovery catalog database
RMAN> run {
2> allocate channel d1 type disk;
3> restore controlfile;
4> release channel d1;
5> }
(3) 恢复数据文件
RMAN> run {
2> allocate channel d1 type disk;
3> sql "alter database mount";
4> restore datafile 1;
5> restore datafile 2;
6> restore datafile 3;
7> restore datafile 4;
8> release channel d1;
9> }
(4) 恢复日志文件
RMAN> run {
2> set archivelog destination to '/export/home/oracle/admin/test/arch';
3> allocate channel d1 type disk;
4> restore archivelog all;
5> release channel d1;
6> }
会把所有的日志文件恢复。
(5) 根据日志做recover
$svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> recover database using backup controlfile until cancel;
ORA-00279: change 51054 generated at 06/11/2000 11:38:37 needed for thread 1
ORA-00289: suggestion : /export/home/oracle/admin/test/arch/arch_1_3.arc
ORA-00280: change 51054 for thread 1 is in sequence #3
Specify log: {=suggested | filename | AUTO | CANCEL}
Log applied.
ORA-00279: change 51058 generated at 06/11/2000 11:38:44 needed for thread 1
ORA-00289: suggestion : /export/home/oracle/admin/test/arch/arch_1_4.arc
ORA-00280: change 51058 for thread 1 is in sequence #4
ORA-00278: log file '/export/home/oracle/admin/test/arch/arch_1_3.arc' no longer
needed for this recovery
Specify log: {=suggested | filename | AUTO | CANCEL}
Log applied.
ORA-00279: change 51074 generated at 06/11/2000 11:40:20 needed for thread 1
ORA-00289: suggestion : /export/home/oracle/admin/test/arch/arch_1_5.arc
ORA-00280: change 51074 for thread 1 is in sequence #5
ORA-00278: log file '/export/home/oracle/admin/test/arch/arch_1_4.arc' no longer
needed for this recovery
Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SVRMGR> alter database open resetlogs;
Statement processed.
恢复完成。
SVRMGR> select table_name from user_tables;
TABLE_NAME
------------------------------
BONUS
DEPT
EMP
SALGRADE
TEST
TEST_ZMY
ZMY
ZMY_DEPT
ZMY_EMP
9 rows selected.
可以检查看到,所有的都恢复了,包括全备份后的事务。(只要有归档日志,都可以恢复)。
3、 恢复后rman数据库的同步
$rman rcvcat rman_hainan/rman_hainan@rman target /
Recovery Manager: Release 8.1.6.0.0 - Production
RMAN-06005: connected to target database: TEST (DBID=1692992254)
RMAN-06008: connected to recovery catalog database
RMAN> reset database;
RMAN-03022: compiling command: reset
RMAN-03023: executing command: reset
RMAN-08006: database registered in recovery catalog
RMAN-03023: executing command: full resync
RMAN-08029: snapshot controlfile name set to default value: ?/dbs/snapcf_@.f
RMAN-08002: starting full resync of recovery catalog
RMAN-08004: full resync complete
分享到:
相关推荐
Oracle数据库是企业级广泛应用的数据库管理系统,而RMAN(Recovery Manager)是Oracle提供的一种强大的备份和恢复工具。本文将深入探讨如何利用RMAN进行Oracle数据的备份与恢复,以确保在面临数据丢失或系统故障时能...
**RMAN (Recovery Manager)** 是 Oracle 数据库自带的一款强大的备份和恢复工具,它提供了完整的数据库备份和恢复解决方案。RMAN 的主要优势包括但不限于: 1. **跳过未使用的数据块**: 当备份 RMAN 备份集时,RMAN...
RMAN 异地恢复、备份路径不一样时数据库恢复 RMAN 异地恢复是指在不同的服务器或存储设备上恢复数据库的备份。这种恢复方式需要在不同的服务器或存储设备上创建软连接、恢复控制文件、重命名数据文件和日志文件、...
6. **RMAN备份命令**:执行RMAN备份通常会包含`backup`命令,如在这个例子中,虽然具体的备份命令没有给出,但可以理解为在配置完成后,会使用`backup`命令来执行对数据库的0级增量备份,即全量备份。 7. **RMAN的...
Oracle 10g RAC 环境下的RMAN(Recovery Manager)备份恢复至单机环境是一项复杂但重要的任务,特别是在灾难恢复或系统迁移的场景中。以下将详细阐述这个过程的关键步骤和注意事项。 首先,RMAN是Oracle数据库管理...
Oracle RMAN(Recovery Manager)是Oracle数据库管理系统中用于备份、恢复和维护的重要工具。它提供了全面的数据保护功能,能够帮助管理员在发生数据丢失或系统故障时迅速恢复数据。本篇将详细介绍Oracle RMAN的还原...
RMAN (Recovery Manager) 是 Oracle 提供的一种强大而灵活的工具,主要用于数据库备份与恢复。RMAN 支持多种类型的命令,主要包括独立命令和作业命令。 - **独立命令**:这类命令可以直接单独执行,例如 `BACKUP`、...
### Oracle RMAN备份详解 #### 一、RMAN(Recovery Manager)简介 RMAN是Oracle数据库中的一个强大工具,用于备份、恢复和灾难恢复。它提供了自动化和集中化的管理功能,可以有效地处理大型数据库环境中的备份与...
2. **RMAN备份**:RMAN备份可以是基于文件的(例如,备份到磁盘或磁带),也可以是网络备份(通过网络备份软件)。RMAN允许用户创建备份集和映像副本,备份集是RMAN特有的格式,可以提高备份效率。在示例中,我们...
恢复管理器(RMAN)是Oracle数据库的一个强大工具,用于数据库备份、恢复以及维护。在Oracle 10g中,RMAN添加了CONVERT命令,允许用户在不同的操作系统平台之间进行数据文件的转换,确保数据的字节顺序正确无误。...
本文主要讲述 Oracle 数据库备份与恢复的相关知识点,包括备份方式、RMAN 简介、备份集、备份片、映像备份、全备份、增量备份、恢复目录等。 Oracle 数据库备份方式有三种:导出备份、脱机备份和在线备份。其中,...
RMAN是Oracle提供的专门用于数据库备份和恢复的工具,它可以更加灵活地管理备份文件,并且能够自动化备份恢复过程。 在Oracle中还可以通过SQL*Plus执行一些管理操作,例如创建和删除用户、创建表空间,以及查询用户...
2. 定期检查备份的完整性和可恢复性,可以通过RMAN的验证功能进行测试。 3. 考虑备份的加密,以增强数据安全性。 4. 在远程位置或云存储上保存备份,以防本地灾难性事件。 通过遵循这些最佳实践并结合"Oracle数据库...
RMAN是Oracle数据库提供的一种强大的备份和恢复工具,对于保障数据的安全性和业务连续性至关重要。 RMAN的基本概念包括备份类型、备份策略和恢复操作。备份类型主要有完整备份、增量备份和差异备份,它们各有优势,...
RMAN (Recovery Manager) 是 Oracle 数据库的一个非常强大的备份与恢复工具,适用于各种操作系统环境,包括 Linux。本文将重点介绍在 Linux 平台上如何使用 RMAN 进行全备和增量备份,并通过 shell 脚本实现自动化。...
二、RMAN备份命令 RMAN是Oracle数据库自带的一个工具,可以通过命令行与数据库交互,执行备份和恢复操作。以下是一个简单的RMAN完整数据库备份命令示例: ```sql RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; ...
在进行Oracle数据库的备份与恢复操作时,DBMS_REPAIR包是一个非常重要的工具。...在实际工作中,DBA可能还需要结合其他工具或方法,比如Oracle的RMAN(Recovery Manager)工具,来更全面地处理数据库备份与恢复的问题。
Oracle提供多种工具,如RMAN(恢复管理器)来简化备份和恢复过程,它支持自动化脚本和策略,以适应不同的恢复场景。 总的来说,Oracle数据库的备份与恢复是一个复杂的过程,涉及到对数据库状态的理解、备份策略的...