RMAN 备份数据库到DISK后进行数据恢复
RMAN 备份数据库到DISK,然后进行数据恢复
一、rman备份
1. 全备脚本
vi bakup_level0.sql
connect target /
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup
incremental
filesperset
format "/backup/orcl/lev0_%d_%s_%I_%T_%t.bak" database;
release channel c1;
release channel c2;
release channel c3;
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
sql "alter system archive logcurrent";
backup format '/backup/orcl/arch_%T_%t_%U' archivelog all delete all input;
release channel c1;
release channel c2;
release channel c3;
allocate channel c1 type disk;
backup format "/backup/orcl/spfile_%d_%s_%I_%T_%t.bak" spfile;
release channel c1;
allocate channel c1 type disk;
backup format "/backup/orcl/controlfile_%d_%s_%I_%T_%t.bak" (current controlfile);
release channel c1;
}
-- 执行调用rman脚本(start.sh)
#!/bin/sh
# exec: sh start.sh
# reload oracle env
# reload profile
[ -f ${HOME}/.bash_profile ] && . ${HOME}/.bash_profile
export NLS_DATE_FORMAT='yyyy-mm-dd HH24:MI:SS'
" ]]; then
SCRIPT_NAME=$
else
echo "usage: $0 filename... "
fi
# Define the work path
APP_PATH=/home/oracle/scripts
LOGPATH=${APP_PATH}/logs
[[ -d "${APP_PATH}" ]] || mkdir -p ${APP_PATH}
[[ -d "${LOGPATH}" ]] || mkdir -p ${LOGPATH}
SCRIPT_FILE=${APP_PATH}/${SCRIPT_NAME}
LOGFILE=${LOGPATH}/bklevel0_$(date +%Y%m%d%H%M%S).log
# execute scripts
[[ -f "${SCRIPT_FILE}" ]] && ${ORACLE_HOME}/bin/rman cmdfile ${SCRIPT_FILE} msglog ${LOGFILE}
2. 增备(level 1)脚本
connect target /
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
# REM cumulative
backup
incremental
filesperset
format "/backup/orcl/lev1_%d_%s_%I_%T_%t.bak" database;
release channel c1;
release channel c2;
release channel c3;
allocate channel c1 type disk;
allocate channel c2 type disk;
sql "alter system archive log current";
backup format '/backup/orcl/arhc_%T_%t_%U' archivelog all delete all input;
release channel c1;
release channel c2;
allocate channel c1 type disk;
backup format "/backup/orcl/spfile_%d_%s_%I_%T_%t.bak" spfile;
release channel c1;
allocate channel c1 type disk;
backup format "/backup/orcl/controlfile_%d_%s_%I_%T_%t.bak" (current controlfile);
release channel c1;
}
2.2 执行增备脚本
sh start.sh bakup_level1.sh
3. 备份归档日志
-- vi bakup_arch.sql
connect target /
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
sql "alter system archive log current";
backup format '/backup/orcl/arhc_%T_%t_%U' archivelog all delete all input;
release channel c1;
release channel c2;
allocate channel c1 type disk;
backup format "/backup/orcl/spfile_%d_%s_%I_%T_%t.bak" spfile;
release channel c1;
allocate channel c1 type disk;
backup format "/backup/orcl/controlfile_%d_%s_%I_%T_%t.bak" (current controlfile);
release channel c1;
}
4. 维护rman备份集
connect target /
run{
allocate channel for maintenance type disk;
report obsolete;
delete noprompt obsolete;
release channel;
}
二、利用rman备份集恢复
1. 恢复步骤
1)安装oracle db软件,建议与源库版本一致;
2)目标端创建pfile,即相关目录(adump);
3)目标端创建密码文件
4)目标端启动nomount状态并创建spfile;
5)rman 恢复控制文件
6)还原数据文件
7)同步归档备份集到目标端并还原归档日志到目标端数据库
8)resetlog打开数据库
9)创建临时表空间
2. 具体操作代码
2.1)目标端创建pfile,即相关目录(adump)
# 创建pfile文件
vi pfile.ora
*.audit_file_dest='/oracle/app/oracle/admin/orcl/adump'
*.audit_sys_operations=TRUE
*.audit_trail='DB'
*.compatible='11.2.0.4.0'
*.control_files='/oradata1/orcl/control01.ctl'
*.db_block_size=
*.db_domain=''
*.db_files=
*.db_name='orcl'
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers=''
orcl.log_archive_dest_1='location=/arch1'
orcl.log_archive_format='orcl_%t_%s_%r.arc'
*.max_dump_file_size='1024M'
*.O7_DICTIONARY_ACCESSIBILITY=FALSE
*.open_cursors=
*.parallel_force_local=TRUE
*.parallel_max_servers=
*.parallel_threads_per_cpu=
*.pga_aggregate_target=
*.processes=
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=
*.undo_tablespace='UNDOTBS1'
# 创建目录
export ORACLE_SID=orcl
mkdir -p /oracle/app/oracle/admin/${ORACLE_SID}/{adump,pfile,dpdump}
2.2)目标端创建密码文件
2.3)目标端启动nomount状态并创建spfile
sqlplus / as sysdba startup nomount pfile='/home/oracle/pfile.ora'; create spfile from pfile='/home/oracle/pfile.ora'; --使用spfile启动数据库
sqlplus / as sysdba <<EOFshutdown immediate;startup nomount;quit;EOF
2.4)rman 恢复控制文件
rman target /
set dbid=<database id>;
run{ restore controlfile from '/backup/orcl/controlfile_orcl_292_1223534412_20170418_941608807.bak'; # 启动到mount sql 'alter database mount';}
2.5)还原数据文件
connect target /
set dbid=<database id>;
run{allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
to '/oradata1/orcl/system01.dbf';
to '/oradata1/orcl/sysaux01.dbf';
to '/oradata1/orcl/undotbs01.dbf';
to '/oradata1/orcl/users01.dbf';
to '/oradata1/orcl/orcltbs01.dbf';
to '/oradata1/orcl/orcltbs02.dbf';
to '/oradata1/orcl/orcltbs03.dbf';
to '/oradata1/orcl/orcltbs04.dbf';
to '/oradata1/orcl/orcltbs05.dbf';
restore database;
switch datafile all;
recover database;
release channel c1;
release channel c2;
release channel c3;
}
2.6)同步归档备份集到目标端并还原归档日志到目标端数据库
rman target /
set dbid=<database id>;
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
set archivelog destination to '/backup/orcl/archivelog';
;
release channel c1;
release channel c2;
}
2.7)resetlog打开数据库
sqlplus "/ as sysdba" <<EOF# reset redo log
alter database rename file '/oraredo1/redo01_1.log' to '/oradata1/orcl/redo01_1.rd';
alter database rename file '/oraredo2/redo01_2.log' to '/oradata1/orcl/redo01_2.rd';
alter database rename file '/oraredo1/redo02_1.log' to '/oradata1/orcl/redo02_1.rd';
alter database rename file '/oraredo2/redo02_2.log' to '/oradata1/orcl/redo02_2.rd';
alter database open resetlogs; quit; EOF
2.8)创建临时表空间
select tablespace_name from dba_tablespaces where contents='TEMPORARY'; create temporary tablespace TEMP1 tempfile '/oradata1/orcl/temp01.dbf' size 10240M reuse; alter database default temporary tablespace TEMP1; drop tablespace TEMP including contents and datafiles;
RMAN 备份数据库到DISK后进行数据恢复的更多相关文章
- Oracle使用rman备份数据库时出现cannot reclaim的错误
1. 按照<2 day DBA>中的guide,设置fast recovery area. SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_S ...
- RMAN备份数据库与恢复数据库(整库)
1 准备 2 1.1 检查数据库归档状态 2 1.2 RMAN登陆目标 2 2 备份全库 2 2.1 创建备份数据存储目录 2 2.2 RMAN备份全库 2 2.3 试验(备份后,改变数据) 5 2. ...
- 数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询
一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE ...
- 使用RMAN备份数据库
1.1使用控制文件备份全库 1.1.1配置备份路径 1.1.2 RMAN备份全库 1.2使用catalog数据库备份全库 1.2.1配置到远程数据库的TNS 1.2.2创建表空间及设置用户 1.2.3 ...
- RMAN备份数据库与表空间
脚本: 数据库备份: backup database format='/u01/app/oracle/oradata/Backup/oradb_%d_%s.bak'; 表空间备份:backup tab ...
- RAC数据库的RMAN备份异机恢复到单节点数据库
1.首先在rac环境用rman备份数据库.[oracle@rac1 admin]$ rman target /run{allocate channel c1 device type disk conn ...
- Oracle RMAN备份恢复指导书
目 录 1 目的与范围... 1 2 术语和定义... 1 3 角色和职责... 2 4 使用RMAN备份数据库... 2 4.1.1 检查数据库模式... 2 4.1.2 连接到target数据库. ...
- 配置RMAN备份环境
关于配置RMAN备份环境你可以给每个目标数据库设置一些固定的配置,这些配置控制着RMAN多个方面的行为.例如,你可配置备份的保存策略.默认的备份目录.默认的备份设备类型等.你可以用show命令来查看配 ...
- RMAN备份到NFS,报错 ORA-27054
使用RMAN备份数据库到NFS挂载到的本地目录/backup 失败,失败提示如下: RMAN-03009: failure of backup command on ORA_DISK_1 channe ...
随机推荐
- 找xpath好用的工具(Firefox插件)
WebDriver Element Locator 安装 打开firefox浏览器,进入网址https://addons.mozilla.org/en-US/firefox/ 在搜索框里输入WebDr ...
- Java基础——网络编程(二)
一.套接字 Socket 网络驱动程序提供给应用程序编程的接口和一种机制,可以比喻成一个港口码头 应用程序只要把货放在这,就算完成了货物的运送.它在应用程序中创建,通过一种绑定机制与驱动程序建立关系, ...
- Crossing River(1700poj)
Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9919 Accepted: 3752 De ...
- vue input输入框联想
以下是示例,样式可以自己修改.最后是效果图,其实也挺简单的,主要是用了watch监控input输入值的变化,如果数据是请后端请求可以,先请求数据. <template> <div c ...
- javascript:原型与原型链
一,函数对象 所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型) 所有函数拥有prototype属性(显式原型)(仅限函数) 原型对象:拥有prototype属性的对象,在定义函 ...
- css 解决图片下小空隙问题
http://baijiahao.baidu.com/s?id=1581004863053583633&wfr=spider&for=pc 这篇讲的挺清楚,也有解决办法
- 前后端分离(手) -- mock.js
前言: 本篇博文昨天七夕写的,一天下来被虐得体无完肤,苦逼的单身狗只能学习,对!我爱学习,关掉朋友圈,并写了一篇博文发泄发泄.这次写mock.js的使用,能使前后端分离,分离,分离,重要的是说三遍. ...
- PeopleSoft 多套Web App Prcs交叉访问
1.Process服务器比较简单,只需要与数据库关联,系统调用时候就会负载均衡,在PSADMIN增加服务器时候,需要选择在"主菜单>PeopleTools>进程调度器>服务 ...
- 安卓逆向(一)--Smali基础
安卓逆向(一)--Smali基础 标签(空格分隔): 安卓逆向 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放 ...
- Java学习笔记之异常处理
一.异常的分类 1.由Java虚拟机抛出的异常(Error):程序无法处理的问题,用户不用去进行处理(虚拟机错误丶内存溢出错误丶线程死锁) 2.Exception异常:程序本身可以进行处理的异常 1. ...