一、管理恢复目录 #现实应用中一般都是专门新建一个rman 数据库,给所有的数据库做catalog
1、建立恢复目录

#建立恢复目录表空间
SQL> create tablespace rman_ts datafile '/u01/app/oracle/oradata/ocmdb/dfile/rman.dbf' size 15m;

#建立恢复目录所有者
SQL> create user rman identified by rman;

#授予恢复目录所有者角色
SQL> grant connect,resource,recovery_catalog_owner to rman;

#建立恢复目录
[oracle@ocmdb1 ~]$ rman catalog rman/rman@ocmdb
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Oct 13 14:06:18 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to recovery catalog database
RMAN> create catalog;

#注册目标数据库
[oracle@ocmdb1 ~]$ rman catalog rman/rman #连接到rman catalog 恢复目录
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Oct 13 14:23:08 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to recovery catalog database

RMAN> connect target sys/oracle@ocmdb #连接到目标数据库
connected to target database: OCMDB (DBID=4106451204)

RMAN> register database; #在catalog 中,注册目标数据库
starting full resync of recovery catalog
full resync complete
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of register command on default channel at 10/13/2011 14:23:36
RMAN-20002: target database already registered in recovery catalog

RMAN> report schema; #列出目标数据库当前的schema

注意:当使用rman 连接目标数据库时报错如下:
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20001: target database not found in recovery catalog
需要在 tnsnames.ora 文件里编辑增加 (SERVER = dedicated)

如下:[oracle@ocmdb1 admin]$ cat tnsnames.ora
OCMDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = ocmdb1)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = ocmdb)
(SERVER = dedicated)
)
)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RMAN备份脚本测试

RMAN备份只讲叙有恢复目录的情况,如果没有恢复目录,情形大致相似。以下是RMAN的热备份全备份的脚本:
# script:bakup.sh
# creater:chon
# date:2011
# desc:backup all database datafile in archive with rman

# connect database
rman <<EOF
connect catalog rman/rman
connect target sys/oracle@ocmdb

# start backup database
run{
allocate channel c1 type disk;
backup full tag 'dbfull' format '/backup/full%u_%s_%p' database
include current controlfile;
sql 'alter system archive log current';
release channel c1;
}
EOF
# end

说明:
1、 数据库必须运行在归档模式下
2、 RMAN将自动备份数据文件,运行可靠
3、 归档日志另外备份处理,但至少需要保存一次备份来的日志
4、 没有必要用RMAN做冷备份,效果不好

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
把最近刚改写完成的RMAN增量备份脚本贴上来,经过几天的测试基本运行良好,下一步可以在生产库上用了,测试过程中特别增加了尽量节约空间的考虑(磁盘空间不是很冗余),

备份策略:
crontab -l
#每周日凌晨做0级备份,
#每周一,四做一级备份,
#每周二,三,五,六做二级备份,
00 4 * * 0 /u01/app/oracle/rman_bak/scripts/rman_bak.sh 0
00 4 * * 1,4 /u01/app/oracle/rman_bak/scripts/rman_bak.sh 1
00 4 * * 2,3,5,6 /u01/app/oracle/rman_bak/scripts/rman_bak.sh 2
备份脚本:
#!/bin/bash
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/db10g
export ORACLE_SID=emar
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$ORACLE_HOME/bin:$PATH
DATE=`date +%w`
DATE_2=`date +%Y%m%d`
BACKUP_PATH=/u01/app/oracle/rman_bak
LEVEL=$@
TARGET_SID=emar
RMAN_SID=emar.emar
BIN=/u01/app/oracle/db10g/bin
# Delete the data backuped last time
rm -rf $BACKUP_PATH/data/$DATE/*

if [ $# != 1 ]; then
echo "usage: rman_bak.sh n
where n is the rman backup level(0,1,2 is permitted)."
exit 1
fi
if [ $@ -ne 0 -a $@ -ne 1 -a $@ -ne 2 ]; then
echo "usage: rman_bak.sh n
where n is the rman backup level(Only 0,1,2 is permitted)."
exit 2
fi
echo "-----------------------------start-----------------------------";date
if [ $LEVEL = 0 ]; then
$BIN/rman log $BACKUP_PATH/log/level.$TARGET_SID.$LEVEL.$DATE_2.log <<EOF
connect target sys/sys202;
connect catalog rman/rman@$RMAN_SID;
resync catalog;
run{
allocate channel c1 type disk ;
crosscheck backupset of archivelog all ;
backup filesperset 3 format '$BACKUP_PATH/data/$DATE/arch.%d.live.$LEVEL.%t'(archivelog from time 'sysdate-7' all delete input) ;
delete noprompt expired backupset of archivelog all ;
release channel c1 ;
}

run{
allocate channel c2 type disk ;
crosscheck backupset of database ;
backup incremental level $LEVEL filesperset 3 format '$BACKUP_PATH/data/$DATE/data.%d.live.$LEVEL.%t'(database include current controlfile) ;
delete noprompt expired backupset of database ;
delete noprompt obsolete ;
release channel c2 ;
}
exit;
EOF

else
$BIN/rman log $BACKUP_PATH/log/level.$TARGET_SID.$LEVEL.$DATE_2.log <<EOF
connect target sys/sys202;
connect catalog rman/rman@$RMAN_SID;
resync catalog;
run{
allocate channel c1 type disk ;
crosscheck backupset of archivelog all ;
backup filesperset 3 format '$BACKUP_PATH/data/$DATE/arch.%d.live.$LEVEL.%t' (archivelog from time 'sysdate-1' all) ;
delete noprompt expired backupset of archivelog all ;
release channel c1 ;
}

run{
allocate channel c2 type disk ;
crosscheck backupset of database ;
backup incremental level $LEVEL filesperset 3 format '$BACKUP_PATH/data/$DATE/data.%d.live.$LEVEL.%t' (database include current controlfile) ;
delete noprompt expired backupset of database ;
delete noprompt obsolete ;
release channel c2 ;
}

exit;
EOF

fi
$BIN/exp rman/rman@$RMAN_SID file=$BACKUP_PATH/data/$DATE/live.rman.$DATE_2.dmp log=$BACKUP_PATH/log/$RMAN_SID.rman.$DATE_2.log
echo "------------------------------end------------------------------";date

oracle备份之恢复管理目录的更多相关文章

  1. Oracle 备份、恢复单表或多表数据步骤

    Oracle 备份.恢复单表或多表数据步骤,适用于 Oracle 8.9.10.        *备份单表或多表数据: exp user/password@server file=filefullpa ...

  2. Oracle 11g 中恢复管理器RMAN介绍

    这是我平时摘录的笔记,从管理艺术那本书上摘录出来的,放到这里 RMAN 可在数据库服务器的帮助下从数据库内备份数据文件,可构造数据文件映像副本.控制文件和控制文件映像.对当日志 SPFILE 和RMA ...

  3. Oracle备份和恢复

    --什么是脱机备份 脱机备份也叫冷备份,首先管理员使用 shutdown immediate 命令关闭数据库的服务. 之后复制需要的文件,包括数据文件和控制文件等相关内容复制到磁盘的其他位置.当 数据 ...

  4. ORACLE备份、恢复、常用查询

    --第一,启动服务,(如果数据库处于启动状态,那么略过这一步) 打开命令行执行以下语句  net start OracleServiceORCL  net start  OracleOraDb10g_ ...

  5. Oracle 数据库备份和恢复配置

    可能的失败及其解决方法 失败类型 我们坑你遇到的失败或错误分为两大类:物理和逻辑.物理错误一般是硬件错误或使用数据库的应用程序中的软件错误,而逻辑错误一般在终端用户级别(数据库用户和管理员). 按从轻 ...

  6. 非归档模式下使用Rman进行备份和恢复

    实验环境: 一.首先进行全库数据备份: 在非归档模式下,rman备份需要在mount模式下进行 SQL> select status from v$instance; STATUS ------ ...

  7. Oracle DB 执行用户管理的备份和恢复

    • 说明用户管理的备份和恢复与服务器管理的备份和恢复 之间的差异 • 执行用户管理的数据库完全恢复 • 执行用户管理的数据库不完全恢复 备份和恢复的使用类型 数据库备份和恢复的类型包括: • 用户管理 ...

  8. Oracle简单的备份和恢复-导入和导出-目录

    ylbtech-Oracle:Oracle简单的备份和恢复-导入和导出-目录 Oracle安全运行离不开良好的备份和恢复机制,因为我们不是DBA.所以我们也就不过多的讲解DBA的备份和恢复.作为程序员 ...

  9. Oracle DB 备份和恢复的概念

    • 确定Oracle DB 中可能发生的故障类型 • 说明优化实例恢复的方法 • 说明检查点.重做日志文件和归档日志文件的重要性 • 配置快速恢复区 • 配置ARCHIVELOG模式   部分工作内容 ...

随机推荐

  1. PHP define() 函数

    实例 定义一个大小写敏感的常量: <?php define("GREETING","Hello you! How are you today?"); ec ...

  2. 转载——完整的ASCII码表

    完整的ASCII码表,转载自下面的博主: http://www.cnblogs.com/xmxu/archive/2012/07/10/2584032.html

  3. 2019 HL SC day4

    自闭场本来 以为 顶多一些不太会 结果发现 一堆不太会 . 树状数组  感觉 好久没看 了有点遗忘 不过还好 现在我来了.莅临之神将会消灭一切知识点哦. 今天说点不一样东西 树状数组 hh 很有用的东 ...

  4. Kaggle-pandas(2)

    Intndexing-selecting-assigning 教程 介绍选择要处理的pandas DataFrame或Series的特定值是几乎将要运行的任何数据操作中的一个隐含步骤,因此在Pytho ...

  5. 阿里云ECS服务器购买流程

    先说说什么是阿里云服务器ECS?云服务器(Elastic Compute Service,即弹性计算服务,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure ...

  6. 解决使用rollup构建ECharts过程中遇到的问题

    1.ECharts官方文档 参考:自定义构建 ECharts - ECharts Documentation 2.解决问题 改动一: // line.js // 引入 echarts 主模块. // ...

  7. SQL Server中的集合运算: UNION, EXCEPT和INTERSECT

    SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种. 集合运算的基本使用 1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复 ...

  8. Mysql Column 'xxxxx' in field list is ambiguous"

    使用了关联查询,两张表有相同的字段,所以说取值含糊不清: 使用别名.列名解决: 如 a.description

  9. C#LeetCode刷题之#530-二叉搜索树的最小绝对差(Minimum Absolute Difference in BST)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4123 访问. 给定一个所有节点为非负值的二叉搜索树,求树中任意两 ...

  10. C#LeetCode刷题之#219-存在重复元素 II​​​​​​​(Contains Duplicate II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3704 访问. 给定一个整数数组和一个整数 k,判断数组中是否存在 ...