当前位置:首页 » 编程软件 » oracle备份脚本

oracle备份脚本

发布时间: 2022-01-21 21:16:59

❶ 如何编写一个windows下的oracle自动备份脚本

@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo 2. 自动删除7天前的备份。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::设置用户名、密码和要备份的数据库。
set USER=xxx
set PASSWORD=123456
set DATABASE=dbtest
::创建备份目录。
if not exist "D:\backup\data" mkdir D:\backup\data
if not exist "D:\backup\log" mkdir D:\backup\log
set DATADIR=D:\backup\data
set LOGDIR=D:\backup\log
exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\data_%BACKUPDATE%.dmp log=%LOGDIR%\log_%BACKUPDATE%.log
::删除7天前的备份。
forfiles /p "%DATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"
exit

❷ 求一个oracle 11g自动备份脚本,每行脚本需要有注释。例如:数据库名LC0001,密码123456,SID为ORCL,

要求自动的话,自己在windows下设置定时任务,这个就不说了,网上教程很多。

另外,这个东西跟数据库名没什么关系,跟本地实例,还有用户名有关

写个脚本:

@echooff
echo删除30天前的备分文件和日志
forfiles/pC:data_bak/m*.dmp/d-30/c"cmd/cdel@path"
forfiles/pC:data_bak/m*.log/d-30/c"cmd/cdel@path"
echo正在备份Oracle数据库,请稍等……
expscott/tiger@sytvfile=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmplog=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.logowner=scottbuffer=65535
cdC:ProgramFilesWinRAR
rara-drC:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp.rarC:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp
echo任务完成!
echo.&pause请按任意键结束!

也没什么可解释的了。

exp scott/tiger@sytv file=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.log owner=scott buffer=65535

也就这部分,scott是用户名,tiger是密码,sytv是本地实例名,然后file是备份文件名,log是日志文件名,owner=scott是导出scott下的所有对象,这个可根据自己情况修改。


执行后,文件是这样的:

❸ 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

❹ oracle数据库如何导出整个数据库脚本,用于备份数据库

首先按full方式做exp导出(为了加快速度可以设置rows=no),然后做imp导入这里注意设置个indexfile=xxx.txt 参数这样就能将你创建所有对象的脚本输出到xxx.txt文件里了。当然了你可以使用工具如:toad,会有导出script的选项更方便点。

❺ windows环境下oracle数据库的自动备份脚本怎么用

需要写个bat脚本,然后在windows计划任务里调用此脚本可实现每天自动备份。工具:Oracle10g步骤:1、在某个盘符某个路径(以C盘data目录为例),创建oraclebackup.txt文件,内容如下:@echooffecho删除10天前的备分文件和日志forfiles/p"c:/data/"/m*.dmp/d-10/c"cmd/cdel@path"forfiles/p"c:/data/"/m*.log/d-10/c"cmd/cdel@path"echo正在备份Oracle数据库,请稍等……exp用户名/密码@实例名file=c:/data/mdb%date:~0,4%%date:~5,2%%date:~8,2%.dmplog=c:/data//mdb%date:~0,4%%date:~5,2%%date:~8,2%.logfull=ybuffer=65535echo任务完成!2、保存上述文件后,将文件名的后缀改成.bat3、进入windows的控制面板,打开计划与任务,新建任务,点击浏览,选择刚才新建的c盘data目录下的oraclebackup.bat文件。接着选择每天晚上22:00点执行,再输入本机的administrator密码即可。注意事项:exp语句中的用户名密码等内容,需要根据实际需要来填写。

❻ oracle rman备份脚本怎么写

在ORACLE数据库中,RMAN备份的脚本非常多,下面介绍一例shell脚本如何通过RMAN备份,以及ftp上传RMAN备份文件以及归档日志文件的脚本。
fullback.sh 里面调用RMAN命令做数据库备份,它使用的cmdfile为/home/oracle/backup/bin/fullback.rcv,同时在/home/oracle/backup/logs目录下生成日志文件。
1: [oracle@DB-Server bin]$ more fullback.sh
2:
3: #!/bin/bash
4:
5: export ORACLE_BASE=/u01/app/oracle
6:
7: export ORACLE_SID=gps
8:
9: ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1; export ORACLE_HOME
10:
11: TMP=/tmp; export TMP
12:
13: TMPDIR=$TMP; export TMPDIR
14:
15: PATH=/usr/sbin:$PATH; export PATH
16:
17: PATH=$ORACLE_HOME/bin:$PATH; export PATH
18:
19: LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
20:
21: CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
22:
23: export CLASSPATH
24:
25: TODAY=`date +%Y_%m_%d`
26:
27: rman nocatalog target / cmdfile /home/oracle/backup/bin/fullback.rcv log /home/oracle/backup/logs/fullbackup_$TODAY.log
28:
29: /home/oracle/backup/bin/ftpbackup.sh
30:
fullback.rcv文件非常简单, 如下所示:
1: [oracle@DB-Server bin]$ more /home/oracle/backup/bin/fullback.rcv
2:
3: run{
4:
5: allocate channel c4 type disk;
6:
7: backup as compressed backupset
8:
9: skip inaccessible
10:
11: tag fullbackupwitharchivelog
12:
13: (database);
14:
15: backup current controlfile;
16:
17: backup spfile;
18:
19: sql "alter system archive log current";
20:
21: delete noprompt obsolete;
22:
23: release channel c4;
24:
25: }
26:
RMAN生成的备份文件,需要通过FTP上传到FTP服务器,一则数据库服务器没有这么多空间存储多天的备份,二则是出于容灾、数据安全需要。
下面脚本中FTP服务器,用户名密码均使用xxx替代,在实际环境中,使用具体的信息替代即可。
1: [oracle@DB-Server bin]$ more ftpbackup.sh
2:
3: #!/bin/sh、
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_yesterday" >> /home/oracle/.netrc
20:
21: echo "cd $date_yesterday" >> /home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_yesterday" >> /home/oracle/.netrc
24:
25: echo "mput *" >> /home/oracle/.netrc
26:
27: echo "cd .." >> /home/oracle/.netrc
28:
29: echo "mkdir $date_today" >>/home/oracle/.netrc
30:
31: echo "cd $date_today" >>/home/oracle/.netrc
32:
33: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
34:
35: echo "mput * ">>/home/oracle/.netrc
36:
37: echo "cd .." >>/home/oracle/.netrc
38:
39: echo "cd ../backupset" >> /home/oracle/.netrc
40:
41: echo "mkdir $date_today" >> /home/oracle/.netrc
42:
43: echo "cd $date_today" >> /home/oracle/.netrc
44:
45: echo "lcd /u04/flash_recovery_area/gps/backupset/$date_today" >> /home/oracle/.netrc
46:
47: echo "mput *" >> /home/oracle/.netrc
48:
49: echo "cd .." >> /home/oracle/.netrc
50:
51: echo "cd ../autobackup" >> /home/oracle/.netrc
52:
53: echo "mkdir $date_today" >> /home/oracle/.netrc
54:
55: echo "cd $date_today" >> /home/oracle/.netrc
56:
57: echo "lcd /u04/flash_recovery_area/gps/autobackup/$date_today" >> /home/oracle/.netrc
58:
59: echo "mput *" >> /home/oracle/.netrc
60:
61: echo "quit" >> /home/oracle/.netrc
62:
63: echo "" >> /home/oracle/.netrc
64:
65: chmod 600 /home/oracle/.netrc
66:
67: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp$date_today.log 2>&1
68:
另外,关于归档日志也需要每隔2小时上传一次到FTP服务器,2小时上传一次归档日志的shell脚本如下所示:
1: [oracle@DB-Server bin]$ more ftp2hours.sh
2:
3: #!/bin/sh
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_today" >>/home/oracle/.netrc
20:
21: echo "cd $date_today" >>/home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
24:
25: echo "mput * ">>/home/oracle/.netrc
26:
27: echo "quit" >> /home/oracle/.netrc
28:
29: echo "" >> /home/oracle/.netrc
30:
31: chmod 600 /home/oracle/.netrc
32:
33: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp2hours.$date_today.log 2>&1
34:
最后需要将RMAN备份生成的日志文件,以及FTP上传备份文件以及归档日志的记录通过邮件形式发送给DBA或系统管理员,
1: [oracle@DB-Server bin]$ more chkbackandmail.sh
2: #!/bin/bash
3: rm -f /home/oracle/backup/bin/sendmail.pl
4: date_today=`date +%Y_%m_%d`
5: subject="Oracle Backup Alert Service on $date_today"
6: content="Dear colleagues,
7:
8: Attached please find the logs of xxx(xxx.xxx.xxx.xxx) oracle database backup and transfer to FTP Server(xxx.xxx.xxx.xxx), please
9: review the file and check whether the backup succeeded or not,and double check all backups have been mped to tape, many tha
10: nks
11:
12:
13:
14:
15: Best regards
16: Oracle Alert Services
17:
18: "
19: file="/home/oracle/backup/logs/fullbackup_$date_today.log,/home/oracle/backup/logs/ftp$date_today.log"
20: echo "#!/usr/bin/perl" >> /home/oracle/backup/bin/sendmail.pl
21: echo "use Mail::Sender;" >> /home/oracle/backup/bin/sendmail.pl
22: echo "\$sender = new Mail::Sender {smtp => 'xxx.xxx.xxx.xxx', from => '[email protected]'}; ">> /home/oracle/backup/bin/sendmai
23: l.pl
24: echo "\$sender->MailFile({to => '[email protected]',">> /home/oracle/backup/bin/sendmail.pl
25: echo "cc=>'[email protected],[email protected],[email protected]'," >> /home/oracle/backup/b
26: in/sendmail.pl
27: echo "subject => '$subject',">> /home/oracle/backup/bin/sendmail.pl
28: echo "msg => '$content',">> /home/oracle/backup/bin/sendmail.pl
29: echo "file => '$file'});">> /home/oracle/backup/bin/sendmail.pl
30: perl /home/oracle/backup/bin/sendmail.pl
最后在Crontab 作业里面配置调用这些shell脚本。例如如下所示,在1:01分执行fullback.sh ,每隔两个小时(例如0:50、2:50...)执行一次ftp2hours.sh, 在每天早上8:40执行chkbackandmail.sh 发送fullback.sh 以及ftp2hour.sh的执行日志记录。

linux下备份oracle的脚本怎么写

把下面的代码保存为服务器端的脚本,执行即可。PS:需要自己替换一下双引号中的内容
#!/bin/sh
. $HOME/.bash_profile
export ORACLE_SID="你的数据库的SID"
CutDATE=`date '+%Y-%m%d-%H%M'`
DATE=`date -d '-2 day' '+%Y-%m%d'`
export NLS_LANG="你的字符集设定"
exp "具有权限的账号"/"密码" file=/home/oracle/2014/"你的数据库的SID"_$CutDATE.dmp log=/home/oracle/2014/"你的数据库的SID"_$CutDATE.log owner=user1,user2

❽ oracle数据库如何每天自动执行脚本完成正式数据库到备份数据库的备份

写个脚本完成正式数据库到备份数据库的备份
再设定Task Schele 每天某个时间自动执行这个脚本

❾ Oracle数据库备份脚本怎么写

没必要用root权限执行,oracle用户同样可以执行crontab计划任务
1、su - oracle
crontab -e
0 4 * * 0 /home/oracle/exp.sh 2>&1 >>/home/oracle/script_exp.log;
0~59 表示分
0~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
2、cat /home/oracle/exp.sh
. ~/.bash_profile
bakdir=/opt/dbbak
logdir=/home/oracle/dbbak
rq=$(date +%Y%m%d)
exp system/***** owner=jysh file=${bakdir}/jysh_${rq}.dmp log=${logdir}/jysh_${rq}.log;
find ${bakdir} -type f -mtime +30 -exec rm -rf {} \;

❿ Oracle使用expdp方式导出 如何编写一个BAT的脚本,使数据库的备份文件可以根据日期备份

楼主:供参考
利用任务计划、批处理文件和oracle的exp导出功能,可以根据日期自动生成oracle备份文件,大大方便了oracle数据备份。
建议一(做周备份并压缩为rar)以下为oracle 自动备份批处理文件内容,请配合任务计划实现 :
例:
@ECHO off
SET backPATH=d:\
ECHO 准备备份数据库
REM 7天一个循环
IF EXIST %backPATH%\one goto one
IF EXIST %backPATH%\TWO goto TWO
IF EXIST %backPATH%\THREE goto THREE
IF EXIST %backPATH%\four goto four
IF EXIST %backPATH%\FIVE goto FIVE
IF EXIST %backPATH%\SIX goto SIX
IF EXIST %backPATH%\SEVEN goto SEVEN
ECHO E > %backPATH%\one

热点内容
欢太会员密码是什么 发布:2024-12-22 20:57:28 浏览:70
sqllocaldb 发布:2024-12-22 20:07:08 浏览:122
如何找到我的服务器 发布:2024-12-22 19:52:14 浏览:298
手挂机脚本游 发布:2024-12-22 19:38:00 浏览:429
层次原理图如何编译 发布:2024-12-22 19:27:17 浏览:371
android计算缓存大小 发布:2024-12-22 19:16:54 浏览:660
php访问模块 发布:2024-12-22 19:05:24 浏览:272
电梯IC加密 发布:2024-12-22 19:04:47 浏览:376
脚本圈是引流加粉吗 发布:2024-12-22 18:41:26 浏览:392
ajax文件上传表单提交 发布:2024-12-22 17:55:00 浏览:856