这里只是简单的介绍几种 备份方法

备份: 逻辑备份, 冷备份, 热备份

逻辑备份 也称作 导入(import), 导出(export), 作用是在不同的oracle数据库之间转移数据

物理备份, 就是操作系统级别的文件复制

rman 备份, 是oracle的主要备份方式, rman备份原理与物理备份基本类似, 但是功能更加强大, 主要特点如下:

1) 命令行方式

2) 只备份数据文件中的非空数据块, 而不是备份整个数据文件, 显然这样大大节省了存储空间及备份时间

3) 可以进行增量备份, 即只备份上次备份操作以来发生改变的数据块

4) 可以设置自动备份控制文件及spfile

冷备份: 数据库正常关闭状态下的全库备份, 因为事务时正常结束的, 所以, 冷备份可以用来直接恢复数据库, 而不必应用重做日志.

热备份: 是在数据库打开的状态备份的, 备份文件的数据相互不一致, 所以, 在做热备时, 必须应用归档重做日志或联机重做日志恢复数据库到一致状态.

完全恢复: 借用 重做日志与归档日志 将数据库恢复到一致状态.

不完全恢复: 由于归档日志或者联机日志文件丢失, 另一种情况是, 用户执行了错误操作, 需要恢复到数据库以前状态, 类似 flashback

还原(restore): 把备份文件复制回原来目录的过程

恢复(recover): 还原后, 对备份文件应用归档重做日志或联机重做日志, 使其数据达到最新状态的过程.

全库冷备 shell

#! /bin/bash

backup_dir=/oracle/back
log_file = $ORACLE_BASE/admin/$ORACLE_SID/cold_backup_$ORACLE_SID.log
echo "Begin cold backup" > $log_file
date >> $log_file sqlplus -s /as sysdba << EOF > $log_file
set pagesize 0
set linesize 1000
spool file_copy_$ORACLE_SID.sh
select `cp` || name || `$backup_dir/` from v\$controlfile;
select `cp` || filename || `$backup_dir/` from dba_data_files;
select `cp` || member || `$backup_dir/` from v\$logfile;
spool off # prepare finish, now start shutdown db and move the file
shutdown immediate
!bash file_copy_$ORACLE_SID.sh
startup;
exit;
eof # 清理战场
rm -f file_copy_$ORACLE_SID.sh if [ -e $ORACLE_HOME/dbs/init$ORACLE_SID.ora ]
then
cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora $backup_dir /
fi if [ -e $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]
then
# cp $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $backup_dir/
fi if [ -e $ORACLE_HOME/dbs/orapw$ORACLE_SID ]
then
# cp $ORACLE_HOME/dbs/prapw$ORACLE_SID $backup_dir/
fi echo "Cold backup finished." >> $log_file
date >> $log_file

全库热备 shell

物理热备, 只能一次备份一个表空间, 而且要预先将要备份的表空间置于备份状态, 热备完成后, 要结束备份状态. 使用热备恢复肯定要用到归档日志, 所以, 如果要使用热备, 数据库必须使用归档模式

alter tablespace tablespace_name begin backup

alter tablesapce tablespace_name end backup

#! /bin/bash

backup_dir = /oracle/backup
log_file = $ORACLE_BASE/admin/$ORACLE_SID/hot_bakcup_$ORACLE_SID.log
echo "Begin hot backup..." > $log_file
date >> $log_file sqlplus -s /as sysdba << EOF >> $log_file
alter database backup controlfile to `/$backup_dir/backup_controlfile.ctl`;
set pagesize 0
set linesize 1000
set feedback off
column tablespace_name noprin
column sortorder noprin
column textout format a120 spool hot_backup_$ORACLE_SID.sql select tablespace_name, '1' sortorder, 'alter tablespace' || tablespace_name || 'begin backup;' textout
from dba_data_files
union
select tablespace_name, '2' sortorder, 'host cp' || file_name || ' ' || '$backup_dir' textout
from dba_data_files
union
select tablespace_name, '3' sortorder, 'alter tablespace' || tablespace_name || 'end backup;' textout
from dba_data_files
order by tablespace_name, sortorder, textout; select 'alter system archivelog current;' from dual;
spool off @hot_backup_$ORACLE_SID.sql
exit
EOF rm -f hot_backup_$ORACLE_SID.sql
echo "Hot bakcup finished." >> $log_file

RMAN 备份 shell 程序

在进行 rman 备份之前要先进行数据库归档设置, 并配置 rman 备份文件所在的目录以及自动备份控制文件及 spfile.

使用 rman 备份数据库, 根据备份信息保存的位置(注意, 不是备份集, 而是备份集的信息(元数据), 可以分为两种方式: 一是使用备份数据库(这个要备份的数据库成为目标target数据库)的控制文件保存备份集信息, 二是使用另外一个数据库保存备份集信息, 这个数据库一般成为目录(catalog)数据库), 很明显, 第二种方式更安全, 但要先配置 catalog 数据库. 第一种方式, 除了rman之外, 不需要进行任何配置.

下边采用的是第1种方式, 因为主要是要介绍 rman的shell程序

首先, 确认是否为归档模式:

sqlplus /nolog, conn /as sysdba

archive log list;

--------------------------------------------------------------------------------

如果是非归档模式, alter system set log_archive_dest_1 = ‘location=/oracle/arch’;

然后重启数据库至 mount 状态, 设置运行归档模式:

startup mount

alter database archivelog;

alter database open;

archive log list;  -- 确认是否修改成功

--------------------------------------------------------------------------------

配置 rman

默认情况下, rman 生成的备份文件会创建到数据库的 flash_recovery_area 参数所指定的路径下, 下面先来配置 flash_recovery_area 大小及路径, 如下:

sqlplus /nolog , conn /as sysdba

alter system set db_recovery_file_dest_size=2G;

alter system set db_recovery_file_dest=’/oracle/flash_recovery_area’;

然后, 可以启动 rman, 并以 sys用户连接到数据库, 备份数据文件 4:

rman target /

backup datafile 4;

然后, 在我们刚才设置的目录里, 你就会看到备份的文件.

设置, 每次rman备份时, 都会备份control file 和 spfile:

connect target /

configure controlfile autobackup on

# !/bin/bash

if [ $1 ]
then
backup_level = $1
else
backup_level = 0
fi backup_user = sys
backup_user_pw = oracle # caltalog_user = rman
# catalog_user_pw = rman log_file=/oracle/admin/$ORACLE_SID/rman_backup.log echo "Begin rman backup ..." > $log_file
date >> $log_file rman target $backup_user/$backup_user_pw << EOF > $log_file
# catlog $catlog_user/$catlog_user_pw@rman bakcup incremental level = $backup_level database;
quit;
EOF
echo "rman backup finished." >> $log_file
date >> $log_file

逻辑备份 shell

# !/bin/bash

log_file = /oracle/admin/$ORACLE_SID/full_exp_$ORACLE_SID.log
exp_arguments="userid=system/oracle buffer = 10485760 owner = $1" if [ $2 ]
then
exp_arguments = "$exp_arguments file = $2"
else
exp_arguments = "$exp_arguments file = "$ORACLE_SID"_full_export.dmp"
fi echo "Begin full db export ..." > $log_file
echo "Exporting with folling arguments : $exp_arguments" >> $log_file
exp $exp_arguments >> $log_file 2>&1
echo "Export finished." >> $log_file
date >> $log_file exp_result = $?
if [ exp_result != 0 ]
then
mail -s "Errors in xeporting $ORACLE_SID." asdf@126.com < $log_file
fi

基于Linux的oracle数据库管理 part6 (backup 相关的脚本)的更多相关文章

  1. 基于Linux的oracle数据库管理 part1( 准备及linux基础 )

    主要内容 1. 安装VMware tools (好处, 显示效果增强, 从虚拟机出来不需要alt+ctrl 切换) 2. Linux 启动过程, 方便以后oracle 自动启动与关闭 3. Linux ...

  2. 基于Linux的oracle数据库管理 part2( 数据库 准备,安装,创建 )

    主要内容 1. 准备 2. 安装 与 删除 软件 3. 创建数据库 4. 配置 SQL*PLUS 环境 准备 1. 软件包, rpm –qa , rpm –ivh *.rpm 2. 检查磁盘空间 3. ...

  3. 基于Linux的oracle数据库管理 part5( linux启动关闭 自动启动关闭 oracle )

    主要内容 1. 数据库自动启动与关闭 数据库自动启动与关闭 - 单数据库模式 启动监听器及数据库 启动脚本: #! /bin/bash su - oracle<<EOF lsnrctl s ...

  4. 基于Linux的oracle数据库管理 part3( 存储 网络 常用命令 )

    主要内容 1. 常用存储模式 2. 配置网络 3. 维护指令 常用存储模式 - 文件系统 优点:管理方便, 缺点:读写慢 - 裸设备 只没有被格式化和挂载的磁盘, 只能有程序直接访问, 不能被操作系统 ...

  5. 基于Linux的oracle数据库管理 part4( shell管理 上 )

    主要内容 1. shell 基础补充 2. shell脚本与 SQL*PLUS shell 基础补充 - $(()) 中内容被看做是算术表达式, 其中的变量有没有”$”都可以, 例如 result = ...

  6. 基于Linux下catalog方式的 Oracle 备份策略(RMAN)

    --********************************** -- 基于Linux下 Oracle 备份策略(RMAN) --******************************* ...

  7. Linux环境Oracle相关操作命令行

        打开Oracle监听:lsnrctl start          关闭监听:   lsnrctl stop 监听关闭那么客户端无法连接 进入sqlplus:sqlplus /nolog  使 ...

  8. Linux 下 Oracle 内核参数优化

    数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块.而操作系统则是Oracle稳定运行与最大化性能的基石.本文主要描述基于Linux系统下 Or ...

  9. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...

随机推荐

  1. JavaEE基础(六)

    1.面向对象(面向对象思想概述) A:面向过程思想概述 第一步 第二步 B:面向对象思想概述 找对象(第一步,第二步) C:举例 买煎饼果子 洗衣服 D:面向对象思想特点 a:是一种更符合我们思想习惯 ...

  2. HDU 5934:Bomb(强连通缩点)

    http://acm.hdu.edu.cn/showproblem.php?pid=5934 题意:有N个炸弹,每个炸弹有一个坐标,一个爆炸范围和一个爆炸花费,如果一个炸弹的爆炸范围内有另外的炸弹,那 ...

  3. HDU 2236:无题II(二分搜索+二分匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=2236 题意:中文题意. 思路:先找出最大和最小值,然后二分差值,对于每一个差值从下界开始枚举判断能不能二分匹配. ...

  4. mysql 段错误 (core dumped)

    一直使用好好的mysql命令,突然今天抽风,无论使用任何mysql选项都报“段错误 (core dumped)”,以为是mysqld程序出问题了,所以我尝试重启,因为我的环境上是多实例,用了mysql ...

  5. hashMap底层put和get方法逻辑

    1.hashmap put方法的实现: public V put(K key, V value) { if (key == null) return putForNullKey(value); int ...

  6. 在Java中导出word、excel格式文件时JSP页面头的设置

    我们在JSP中往往会把一些表格里的东西需要导出到本地,一般都是导成word.excel格式的文件.这只需要在JSP页面头设置及在<head></head>标签中添加下面的代码: ...

  7. c# 财务数据编号的生辰

    实现逻辑: 根据票号前戳+生成的6位数据编号=收据号(010+000001=010000001) 作废票号      将票号作废,插入到编号表中,以此下次在使用 作废票号使用 编号表中 现在只有2,当 ...

  8. LA 4064 Magnetic Train Tracks

    题意:给定平面上$n(3\leq n \leq 1200)$个无三点共线的点,问这些点组成了多少个锐角三角形. 分析:显然任意三点可构成三角形,而锐角三角形不如直角或钝角三角形容易计数,因为后者有且仅 ...

  9. Mysql-学习笔记(==》权限管理 十 三)

    -- 用户与权限管理-- 查看当前服务器上的所有账号密码主机SELECT USER,PASSWORD,HOST FROM mysql.user; -- 设置账号密码SET PASSWORD=PASSW ...

  10. 常用PDF文档开发库

    C++库: 1,PDF类库 PoDoFo   http://podofo.sourceforge.net/  PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库.它还包含一些小工具用来解析 ...