Oracle自动备份及自动备份步骤
数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们只有一台数据库服务器的,暂时采取最简单的备份策略,export出dmp进行保存。
一、备份脚本
1、初始化变量,记录开始日志
#变量 sysname=填写自己的系统名称 syspath=/home/oracle/databak/$sysname v_date=$(date'+%Y%m%d%H%M%S') #日志目录 logfile=${syspath}/backup.${v_date}.log #打印开始时间 echobackup_time>>${logfile} date'+%Y-%m-%d%H:%M:%S'>>${logfile} echo"backupjcd">>${logfile} echo"start_time">>${logfile} date'+%Y-%m-%d%H:%M:%S'>>${logfile}
2、进入oracle目录,设置oracle的参数
#进入oracle目录,设置oracle变量 cd/home/11g/app/oracle/product/11.2.0 exportORACLE_HOME=/home/11g/app/oracle/product/11.2.0/db_1 exportPATH=$PATH:/home/11g/app/oracle/product/11.2.0/db_1/bin exportORACLE_SID=SID名称
3、导出数据
echo$syspath v_date=$(date'+%Y%m%d%H%M%S') filename=$syspath/jcd${v_date}.dmp #导出命令 expusername/passwordfile=${filename}compress=n>>${logfile} echo"end_time">>${logfile} date'+%Y-%m-%d%H:%M:%S'>>${logfile}
4、压缩dump包
gzip${filename}
5、使用scp,将压缩后的包传递到备份服务器,注意备份服务器上目录需要预先创建
scp${filename}.gzremot_name@remot_ip:/home/weblogic/databak/备份目录
二、设定脚本执行时间
我们设定规则为每天凌晨2点执行一次,采用crontab来进行处理
执行crontab-e,设定如下规则
02***sh/home/oracle/db.sh
三、关于scp命令密码处理
执行scp命令时候,会提示输入远程主机的密码
scp${filename}.gzremot_name@remot_ip:/home/weblogic/databak/备份目录
此时有两种处理办法进行解决:
1、使用加密文件进行认证
1)进入本地主机的~/.ssh目录下
2)运行ssh-keygen-t[rsa|dsa],将会生成密钥文件和私钥文件id_rsa,id_rsa.pub或id_dsa,id_dsa.pub,此处我们使用rsa方式进行
3)将生成的id_rsa和id_rsa.pub权限修改为700
4)将.pub文件复制到远程主机的~/.ssh目录,执行catid_rsa.pub>>~/.ssh/authorized_keys,将内容拷入authorized_keys文件
5)修改authorized权限为700
完成以上修改之后,从本地主机scp到远程主机便无须密码,简单理解应该是通讯时候,本地主机发送scp指令时,采用本地私钥进行签名,远程主机使用公钥验签后,判断问主机可以信赖,开放通讯服务。
2、使用expect命令完成密码交互
expect命令主要用于脚本中出现必须人工干预的情况下,预先输入指令,模拟的场景为使用expect命令捕捉到提示输入指令的文字,一旦文字出现,自动使用send命令输入需要交互的命令。
此处使用为:
expect"*password:"#此处填写系统提示文字
send"yourpassword\r"#此处填写我们输入的交互命令
expecteof
下面给大家介绍Oracle自动备份详细步骤
背景:Oracle10g服务器,Oracle10g客户端,windowsXP操作平台
要求:Oracle数据库服务器对数据库ytcn每天自动备份一次。
解决方案:利用任务计划、批处理文件和Oracle的exp导出功能,根据日期自动生成Oracle备份文件。详细步骤:
1创建批处理文件ytcn.bat
ytcn.bat中详细内容如下:
@echooff
echo正在备份银通网Oracle数据库,请稍等......
expuserid='ytcn/ytcn@ytcnassysdba'file=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.dmplog=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.logfull=y
echo任务完成!
其中红色部分是根据需要进行变动的地方,例如作者的项目名“银通网”,数据库ytcn用户名ytcn,密码ytcn,要在目录"e:/bak/ytcn/oracle/ytcn"下生成形如"ytcn20090711.dmp"和"ytcn20090711.log"的备份和日志文件,全表导出。
另外:%date%的值在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试echo%date%的返回值。%date:~4,10%是返回日期函数,~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。如需要准确的时间做为文件名,请用%time%函数,参数同上。
2添加一个任务计划ytcn
开始>所有程序>附件>系统工具>任务计划>添加任务计划>下一步>在浏览中查找刚刚写好的ytcn.bat文件>任务名输入ytcn,执行这个任务选择每天,下一步>起始时间下午12:00,起始日期2009-7-11,下一步>输入用户名及密码,用户名要求是管理员权限用户名,下一步>完成
点击"完成"之后,会在任务计划栏目下新增一个名为"ytcn"的任务计划,表明已经配置完毕。
备注:有时点击"完成"之后,系统警告
"已创建新任务,但可能不能运行,因为无法设置账户信息。
指定的错误是:
Ox80041315:任务计划程序服务没有运行"
这是因为电脑的任务计划程序服务没有启动起来。开始>所有程序>管理工具>服务,找到"TaskScheduler"服务,发现启动类型为"已禁用",右键单击更改为"自动",并把它启动起来,然后重新添加一次任务计划ytcn就可以了。