linuxoracle定时备份脚本
1. ORACLE服务器定时备份怎么做
echo 开始备份数据库
if not exist F:db_bakfiles md F:db_bakfiles
if not exist F:db_baklogs md F:db_baklogs
set var=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
exp ora_user/ora_pwd@ora_conn file=F:db_bakfilesxxxx_%var%.dmp log=F:db_baklogsxxxx_%var%.log owner=(user1,user2)
echo 删除过久的备份记录
forfiles /p "F:db_bak" /s /m *.dmp /d -60 /c "cmd /c del @path"
forfiles /p "F:db_bak" /s /m *.log /d -60 /c "cmd /c del @path"
exit
使用任务计划程序“创建基本任务”。,下一步:
选择任务何时开始执行,(选择每天),下一步:
设置任务开始执行的具体时间,(设置成零晨3点),下一步:
选择任务执行的具体操作,(启动程序),下一步:
选择程序或脚本,通过“浏览”按钮把我们在第1、2步骤编写好的bat文件指定好。,下一步:
任务创建好了。点击完成即可。至此,定时备份oracle数据库的操作已经完成
2. oracle中怎么设置数据库自动备份
Oracle自动备份的三种方法:
Oracle自动备份数据库不外乎以下三种方式:
WINDOWS下的任务计划(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三种方式中Viritas属于第三方工具,很多人可能都没有接触,主要说一下windows的任务计划与unix的cron
1、生成脚本文件,如backup.rcv 假定文件内容如下:
$>cat backup.rcv connect target sys/password rcvcat rman/rman@localname; run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’ archivelog all delete input; release channel c1; release channel c2; release channel c3; }
2、生成执行文件在windows上生成backup_archive.bat,内容包括rman cmdfile = backup.rcv 在unix下生成 backup_archive.sh,内容包括oracle/ramn/rman cmdfile = backup.rcv
3、加入调度在windows中用任务计划向导即可,或使用at命令。在unix中,在目标机器上编写一个文件,用以启动Oracle自动备份进程。假定文件名为ORACLE,文件将放在/var/spool/cron/crontabs目录下
$>cat oracle
0 23 * * 0 backup_archive.sh
#表示星期天23点对数据库备份
0 12,18 * * * backup_archive.sh
#表示每天12点,18点备份
Crontab文件的每一行由六个域(minutes,hours,day of month,month,day of week,command)组成,域之间用空格或Tab分隔开来。
3. linux下怎么定时备份oracle数据库
如果是sql server,定期备份可以利用sql server的management studio来做,比较方便。但要做oracle的定期备份,那就需要我们写导出命令,并设置linux的定时任务。
首先创建一个数据库作为测试。
--创建数据表空间
create tablespace test_data
logging
datafile '/u01/app/oradata/test/TEST.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
--创建用户并指定表空间
create user TEST identified by 123
default tablespace test_data
temporary tablespace temp;
--给用户授予权限
grant connect,resource to TEST;
用Test用户登录,创建一个表,并插入两条数据:
create table t1(
Id varchar(50) primary key,
title varchar(50)
);
insert into t1 values(sys_guid(),'t1');
insert into t1 values(sys_guid(),'t2');
commit;
先写一个导出的脚本文件:
export ORACLE_BASE=/u01/app
export ORACLE_HOME=/u01/app/oracle
export ORACLE_SID=TEST
export PATH=$ORACLE_HOME/bin:$PATH
d=$(date '+%Y%m%d')
exp TEST/123@TEST file=/home/oracle/backup/$d.dmp log=/home/oracle/backup/$d.log owner=TEST
zip -m /home/oracle/backup/$d.zip /home/oracle/backup/$d.dmp /home/oracle/backup/$d.log
前4句是设置环境变量,因为crontab定时调用时,不会使用oracle用户的环境变量,所以要先把它们导进来。第6行以当前日期作为导出的文件名,例如20120626.dmp和20120626.log。第7行把这两个文件打成一个zip包,并删掉这两个文件。
要用chmod命令把这个sh标记为可执行:
chmod +x backup.sh
用oracle用户,输入crontab -e命令,编辑oracle用户的任务计划:
[oracle@localhost backup]$ crontab -e
42 13 * * * /home/oracle/backup/backup.sh
这样就添加了一个计划,在每天的13点42分运行/home/oracle/backup/backup.sh。
另外,每天运行完之后,会收到mail通知,可以在mail里看出到底有没有正确运行。
4. 实现oracle定时备份
实现定时备份需要编写备份脚本
Linux 和 AIX 系统可以使用crontab 设置脚本执行时间;
Window有计划任务来设置脚本执行时间。
难度在于你写备份脚本,crontab 和windows 计划任务网上资料一大堆。
5. linux系统上怎么备份oracle数据库
exp适合oracle10g,从oracle 11g开始使用expdp工具。
6. linux oracle 定时备份计划问题
crontab 执行的脚本是以root用户来调用的,所以必须要加上oracle用户的环境变量如ORACLE_HOME、ORACLE_BASE、ORACLE_SID,ORACLE_HOME/bin也要加到path里面
另外expdp_oracle.sh其他用户也要有执行权限
example:
vi expdp_oracle.sh
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/proct/10.2/db_1
export ORACLE_SID=orcl
export PATH=/u01/app/oracle/proct/10.2/db_1/bin;$PATH
expdp system/oracle directory=DDPDATA21 mpfile=rrq.dmp schemas= 'MMS';
wq:
7. 菜鸟求助:linux下oracle数据库自动备份脚本,脚本可实现数据库自动备份功能,并删除三天前的备份
这个好办。 cp 你的数据库`date +'%y%m%d'` 指定目录 这个是以年月日来命名备份 删除的命令是
rm -f 你的数据库名字`date -d "3 days ago" +'%y%m%d'` 这个是删除匹配你数据库的备份名日期前3天的备份文件 他会按照日期-3天匹配3天前的日期来删除备份的
8. linux 下 oracle 10g 使用rman 每周执行一次 自动备份脚本如何编写 希望能有解释。
crontab -e
0 0 0 0 0 /script_path/your_backup_script.sh
每周日零时自动执行
9. linux执行定时备份数据脚本
对tomcat目录,每隔4个小时进行一次备份,以当前时间进行命名
1.创建备份目录:
mkdir:创建目录
rmdir:删除目录
5.重启crontab:
service crond restart
!!!!(*^__^*) 嘻嘻……!!!!到这里就完了!
10. oracle 自动备份的脚本 望高手给解释
很好理解的,一句一句来:
exp CJHDJ/CJHDJ file=E:\QIAOs环境备份\数据库每日备份\oa\gzql_oa_%date:~0,10%.dmp:
导出 CJHDJ用户数据, 导出文件路径为 E:\QIAOs环境备份\数据库每日备份\oa\ ,导出文件名为gzql_oa_%date:~0,10%.dmp ,其中%date:~0,10%是取系统时间精确到日,
dir *.dmp /O:-D >dir.txt :
列出所有后缀为.dmp文件的信息记录到dir.txt 文件中,/O:-D 是dir命令的参数,排序和显示目录名和文件名的顺序,按日期和时间,最晚的优先。
for /F "skip=20 tokens=4" %%a in (dir.txt) do @if exist %%a del %%a:
读取dir.txt文件中的第4列的文件名(.dmp文件)并进行删除文件操作
在说一下为什么要"skip=20 tokens=4" 读取dir.txt文件中从首行开始跳过20行 ,dir.txt的第4列
因为dir.txt中前5行是驱动器,目录等信息,所以需要跳过。而前3列为日期,时间等信息,第4列为文件名,所以取第4列
你可以试一下,执行 dir * /O:-D >d:\dir.txt
d:\dir.txt 文件内容如下:
驱动器 C 中的卷是 OS
卷的序列号是 541D-F538
C:\ 的目录
2011-02-18 08:14 <DIR> WINDOWS
2011-02-12 18:41 <DIR> TEMP
2011-02-03 15:24 <DIR> Program Files
2011-01-18 10:16 <DIR> UXLOG