千家信息网

oracle备份与恢复--rman

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,(一)、创建恢复目录1、创建恢复目录数据库#mkdir -p /u01/app/oracle/oradata/rmandb#chown -R oracle /u01/app/oracle/oradat
千家信息网最后更新 2026年11月01日oracle备份与恢复--rman

(一)、创建恢复目录
1、创建恢复目录数据库
#mkdir -p /u01/app/oracle/oradata/rmandb
#chown -R oracle /u01/app/oracle/oradata/rmandb
[root@rhel1 ~]#su - oracle
[oracle@rhel1 ~]$sqlplus / as sysdba
SQL> create tablespace rmant datafile '/u01/app/oracle/oradata/rmandb/rmants.ora' size 20M ;
表空间已创建。

2、在恢复目录数据库中创建RMAN 用户并授权
SQL> create user c##rmant identified by rmant
default tablespace rmant
temporary tablespace temp
quota unlimited on rmant;
用户已创建。
SQL> grant connect,resource to c##rmant;
授权成功。
SQL> grantrecovery_catalog_owner to c##rmant;
授权成功。

3、在恢复目录数据库中创建恢复目录
[oracle@oracle~]$rman catalog c##rmant/rmant
恢复管理器: Release 12.2.0.1.0 - Production on 星期五 11月 16 19:59:31 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
连接到恢复目录数据库
RMAN> create catalog;
恢复目录已创建
RMAN> quit
恢复管理器完成。

(二)、注册目标数据库到恢复目录1、进入RMAN环境
[oracle@oracle~]$rman
br/>1、进入RMAN环境
[oracle@oracle~]$rman

Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.

2、连接目标数据库
RMAN> connect target sys/oracle;
已连接到目标数据库: ORCL (DBID=1503444987)

3、连接恢复目录数据库
RMAN> connect catalog c##rmant/rmant;
连接到恢复目录数据库

4、注册
RMAN> register database;
注册在恢复目录中的数据库
正在启动恢复目录的全部重新同步
完成全部重新同步
RMAN> quit
恢复管理器完成。

5.在恢复目录数据库中查看恢复目录里面注册的数据库
[oracle@oracle~]$sqlplus c##rmant/rmant
SQLPlus: Release 12.2.0.1.0 Production on 星期五 11月 16 20:05:20 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
上次成功登录时间: 星期五 11月 16 2018 20:03:33 +08:00
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select count(
) from rc_database;
COUNT(*)

 1

(三)、在归档模式下备份和恢复
1.将数据库设置为归档模式,数据库实例要处于启动状态,数据库已经加载或打开状态
SQL> conn sys/oracle as sysdba;
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1593835520 bytes
Fixed Size 8793256 bytes
Variable Size 1023411032 bytes
Database Buffers 553648128 bytes
Redo Buffers 7983104 bytes
数据库装载完毕。
SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

2、首先修改快闪恢复区的参数
SQL> show parameter db_recovery_file_dest

NAME TYPE


VALUE

db_recovery_file_dest string

db_recovery_file_dest_size big integer
0
SQL> alter system setdb_recovery_file_dest_size=2g;

系统已更改。

3、创建一个表空间和表
SQL> create tablespace tab1
datafile '/u01/app/oracle/oradata/rmandb/tab1.dbf' size 10m;
表空间已创建。

4、创建表tab1
SQL> create table tab1(id int);
表已创建。

5、向表tab1中添加记录
SQL> insert into tab1 values(1);
已创建 1 行。

SQL> commit;
提交完成。

SQL> quit
从 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 断开

5、使用数据库用户sys登录RMAN
[oracle@oracle~]$rman target sys/oracle
恢复管理器: Release 12.2.0.1.0 - Production on 星期五 11月 16 20:15:04 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1503444987)

6、备份整个数据库到快闪区
RMAN> backup database;
从位于 16-11月-18 的 backup 开始
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=31 设备类型=DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件, 文件号 = 00001 名称 = /u01/app/oracle/oradata/orcl/system01.dbf
输入数据文件, 文件号 = 00003 名称 = /u01/app/oracle/oradata/orcl/sysaux01.dbf
输入数据文件, 文件号 = 00004 名称 = /u01/app/oracle/oradata/orcl/undotbs01.dbf
输入数据文件, 文件号 = 00013 名称 = /opt/oracle/oradata/rmandb/rmants.ora
输入数据文件, 文件号 = 00014 名称 = /u01/app/oracle/oradata/rmandb/rmants.ora
输入数据文件, 文件号 = 00015 名称 = /u01/app/oracle/oradata/rmandb/tab1.dbf
输入数据文件, 文件号 = 00007 名称 = /u01/app/oracle/oradata/orcl/users01.dbf
通道 ORA_DISK_1: 正于 16-11月-18 启动段 1
通道 ORA_DISK_1: 完成了于 16-11月-18 启动段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01ticu3n_1_1 标记 = TAG20181116T201551 注释 = NONE
通道 ORA_DISK_1: 备份集完成, 用时: 00:00:55
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件, 文件号 = 00010 名称 = /u01/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf
输入数据文件, 文件号 = 00009 名称 = /u01/app/oracle/oradata/orcl/orclpdb/system01.dbf
输入数据文件, 文件号 = 00011 名称 = /u01/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf
输入数据文件, 文件号 = 00012 名称 = /u01/app/oracle/oradata/orcl/orclpdb/users01.dbf
通道 ORA_DISK_1: 正于 16-11月-18 启动段 1
通道 ORA_DISK_1: 完成了于 16-11月-18 启动段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/02ticu5f_1_1 标记 = TAG20181116T201551 注释 = NONE
通道 ORA_DISK_1: 备份集完成, 用时: 00:00:25
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件, 文件号 = 00006 名称 = /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
输入数据文件, 文件号 = 00005 名称 = /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
输入数据文件, 文件号 = 00008 名称 = /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
通道 ORA_DISK_1: 正于 16-11月-18 启动段 1

通道 ORA_DISK_1: 完成了于 16-11月-18 启动段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/03ticu68_1_1 标记 = TAG20181116T201551 注释 = NONE
通道 ORA_DISK_1: 备份集完成, 用时: 00:00:26
在 16-11月-18 完成了 backup

从位于 16-11月-18 的 Control File and SPFILE Autobackup 开始
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-1503444987-20181116-00 注释 = NONE
在 16-11月-18 完成了 Control File and SPFILE Autobackup
RMAN> quit
恢复管理器完成。

7、删除tab1表
SQL> drop table tab1;(记住删除时间)
Table TAB1已删除。
SQL> commit;
提交完成。

8、恢复表
①在数据库为mount状态时恢复数据库
SQL> shutdown immediate;
数据库已关闭。
数据库已卸装。
ORACLE 例程关闭。
SQL> startup mount;
ORACLE 实例已启动
Total System Global Area 1593835520 bytes
Fixed Size 8793256 bytes
Variable Size 1023411032 bytes
Database Buffers 553648128 bytes
Redo Buffers 7983104 bytes
数据库已装载。
SQL> quit
已从Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production断开连接
[oracle@oracle~]$rman target sys/oracle;
恢复管理器: Release 12.2.0.1.0 - Production on 星期五 11月 16 20:23:39 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1503444987, 未打开)
RMAN> restore database;
从位于 16-11月-18 的 restore 开始
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=257 设备类型=DISK
正在跳过数据文件 5; 已还原到文件 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
正在跳过数据文件 6; 已还原到文件 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
正在跳过数据文件 8; 已还原到文件 /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
正在跳过数据文件 9; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/system01.dbf
正在跳过数据文件 10; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf
正在跳过数据文件 11; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf
正在跳过数据文件 12; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/users01.dbf
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 /u01/app/oracle/oradata/orcl/system01.dbf
通道 ORA_DISK_1: 将数据文件 00003 还原到 /u01/app/oracle/oradata/orcl/sysaux01.dbf
通道 ORA_DISK_1: 将数据文件 00004 还原到 /u01/app/oracle/oradata/orcl/undotbs01.dbf
通道 ORA_DISK_1: 将数据文件 00007 还原到 /u01/app/oracle/oradata/orcl/users01.dbf
通道 ORA_DISK_1: 将数据文件 00013 还原到 /opt/oracle/oradata/rmandb/rmants.ora
通道 ORA_DISK_1: 将数据文件 00014 还原到 /u01/app/oracle/oradata/rmandb/rmants.ora
通道 ORA_DISK_1: 将数据文件 00015 还原到 /u01/app/oracle/oradata/rmandb/tab1.dbf
通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01ticu3n_1_1
通道 ORA_DISK_1: 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01ticu3n_1_1 标记 = TAG20181116T201551
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:01:16
在 16-11月-18 完成了 restore

RMAN> recover database until time "to_date('2018-11-16 20:20:00','yy-mm-dd hh34:mi:ss')";
从位于 16-11月-18 的 recover 开始
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:01
在 16-11月-18 完成了 recover

RMAN> alter database open resetlogs;
已处理语句
RMAN> quit
恢复管理器完成。
[oracle@oracle~]$sqlplus sys/oracle as sysdba
SQLPlus: Release 12.2.0.1.0 Production on 星期五 11月 16 20:29:53 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select
from tab1;
ID

 1

9、恢复表空间
说明:如果只丢失了特定表空间中的数据文件,那么可以选择只恢复这个表空间,而不是恢复整个数据库,表空间可以在不关闭数据库的情况下进行,只需要将表空间offline
Sql>create tablespace tab2
Datafile'/u01/app/oracle/oradata/rmandb/tab2.dbf' size 10m;
sql>quit;
$rman target sys/oracl
rman>backup tablespace tab2;
rman>quit
$mv/u01/app/oracle/oradata/rmandb/tab2.dbf /u01/app/oracle/oradata/rmandb/tab2.dbf.bak(模拟表空间数据文件丢失)
$rman target sys/oracle
rman>run{
sql 'alter tablespace tab2 offline immediate';
restore tablespace tab2;
recover tablespace tab2;
sql 'alter tablespace tab2 online';
}
rman>quit
$ls /opt/oracle/oradata/rmandb/(观察其下tab2.dbf是不是出现了)

10、数据文件备份与恢复
①查看当前数据库的所有数据文件
sql>col file_name for a55
sql>set line 100
Sql>select file_id,file_name,tablespace_name from dba_data_files;(记下数据文件的id)

②备份数据文件
sql>quit;
$rman target sys/oracle11g
rman>backup datafile 6;

③模拟删除数据文件tab6.dbf
rman>quit
$mv /u01/app/oracle/oradata/rmandb/tab6.dbf /u01/app/oracle/oradata/rmandb/tab6.bak1
$rman target sys/oracle
rman>run{
allocate channel dev1 type disk;
sql 'alter tablespace tab2 offline immediate';
restore datafile 6;
recover datafile 6;
sql 'alter tablespace tab6 online';
release channel dev1;
}
rman>quit
$ls /opt/oracle/oradata/rmandb/(观察其下tab2.dbf是不是出现了)

数据 文件 数据库 通道 正在 备份 目录 名称 输入 空间 片段 目标 管理 星期 句柄 标记 注释 成功 状态 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国互联网科技工作委员会毛军 互联网是不是新科技 互联网科技资迅 科技互联网技术 互联网金融 科技金融 高科技与互联网 狮子座互联网科技有限公司 滨湖区互联网智能科技产品供应 无锡溥仪互联网科技有限公司 卫星互联网科技股票 互联网大会黑科技排名 互联网科技公司实习生 中国互联网十大科技股排名 互联网科技创新的路径 用友工业互联网科技发展 合肥互联网科技公司公章图片 互联网第三次科技革命特征 上海钢联属于互联网科技股吗 互联网领先科技宣传片 东风日产互联网科技公司叫什么 深圳恒合互联网络科技有限公司 北京互联网科技公司 郑州华宇互联网科技 互联网科技博主是什么意思 广西互联网科技孵化中心 玉溪新华互联网科技好不好 互联网时代的科技公司 兰石爱特工业互联网科技分公司 互联网科技品牌 长沙易易互联网科技有限公司
0