Oracle11g 备份和恢复的方法

一、按方案备份

可以建立脚本db_export.sh,脚本内容如下:

#!/bin/bash
ORACLE_SID=mydb                                           #数据库的SID,我这里用mydb
ORACLE_HOME=/usr/oracle/product/11.1        #数据库的安装目录,也是bin文件夹所处的路径
export ORACLE_HOME
export ORACLE_SID
filename=`date +%Y%m%d_%H%M%S`.dmp    #文件名格式
echo DUMPING DATA TO $filename
cd /usr/oracle/product/11.1/bin                             #进入到可执行命令文件夹内,如果系统配置环境变量路径了,这个可省略,当然,也可以和下一句合并,一起执行
./expdp 用户名/密码 directory=BACKUPDIR dumpfile=$filename      #执行备份,BACKUPDIR 是在数据库内用SQL语句设置好的变量,如果没有则需要提前设置好,如果密码是含有特殊字符的非标准命名,那就得加上单引号和双引号,这么写: '用户名/"密码"'

如果就执行一次也可以写成(假设此次只导出各表结构):

/usr/oracle/product/11.1/bin/expdp 用户名/密码 directory=BACKUPDIR dumpfile=data.dmp CONTENT=METADATA_ONLY

当然这里前面的ORACLE_HOME、ORACLE_SID和BACKUPDIR得设置好,CONTENT选项用于指定要导出的内容.默认值为ALL,所以ALL时一般忽略不写了
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义

二、按方案恢复

可以建立脚本 db_import.sh,脚本内容如下:

ORACLE_SID=mydb
ORACLE_HOME=/usr/oracle/product/11.1
export ORACLE_HOME
export ORACLE_SID
filename=20130407_055001.dmp
echo LOAD DATA FROm $filename
cd /usr/oracle/product/11.1/bin
./impdp 用户名/密码 directory=BACKUPDIR dumpfile=$filename TABLE_EXISTS_ACTION=REPLACE

具体各行介绍参看一、按方案备份

 

可以每日用crontab定时执行备份操作,把所有操作日志和提示都存到日志文件中

.../db_export.sh >> .../db_export.log 2>&1

还可以建立脚本定期检查删除日志文件,举例脚本如下(假如删除扩展名为dmp):

echo start: `date +%F-%T`
find 目录 -name '*.dmp' -mtime +5 -exec  rm -rfv {} \;

意为只留5天数据

你可能感兴趣的:(oracle,备份,恢复)