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

oracle自动备份脚本

发布时间: 2022-06-03 06:14:06

① oracle怎么用rman脚本进行备份

Oracle数据库中rman备份脚本非常实用
查询字符集
sql> select * from nls_database_parameters;
NLS_CHARACTERSET
AL32UTF8
备份时字符集很重要,不然会出乱码
一、0级备份(全备)红色是要修改的,根据个人的存放位置。
[oracle@oracle122 script]$ cat db_bak0.rman
run
{
configure retention policy to recovery window of 8 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/home/oracle/rmanbak/%F';
allocate channel ch1 device type disk format '/home/oracle/rmanbak/inc0_%d_%s_%p_%u_%T';
backup incremental level 0 tag='level 0' database skip inaccessible filesperset 10 plus archivelog filesperset 20;
release channel ch1;
}
allocate channel for maintenance device type disk;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt archivelog until time 'sysdate-30';
0级运行脚本
[oracle@oracle122 script]$ cat exec_0_level.sh
ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/proct/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
export DATE=$(date +%Y_%m_%d)
export NLS_LANG="Simplified Chinese_china".AL32UTF8
/u01/app/oracle/proct/11.2.0/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak0.rman log /home/oracle/rmanbak/script/log/rman_$DATE.log append
二、1级备份(增量)
[oracle@oracle122 script]$ cat db_bak1.rman
run
{
configure retention policy to recovery window of 8 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/home/oracle/rmanbak/%F';
allocate channel ch1 device type disk format '/home/oracle/rmanbak/inc1_%d_%s_%p_%u_%T';
backup incremental level 1 tag='level 1' database skip inaccessible filesperset 10 plus archivelog filesperset 20;
release channel ch1;
}
allocate channel for maintenance device type disk;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt archivelog until time 'sysdate-30';
1级运行脚本
[oracle@oracle122 script]$ cat exec_1_level.sh
ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/proct/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
export DATE=$(date +%Y_%m_%d)
export NLS_LANG="Simplified Chinese_china".AL32UTF8
/u01/app/oracle/proct/11.2.0/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak1.rman log /home/oracle/rmanbak/script/log/rman_$DATE.log append
三、2级备份(从0级追加到现在的备份)
[oracle@oracle122 script]$ cat db_bak2.rman
run
{
configure retention policy to recovery window of 8 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/home/oracle/rmanbak/%F';
allocate channel ch1 device type disk format '/home/oracle/rmanbak/inc2_%d_%s_%p_%u_%T';
backup incremental level 2 tag='level 2' database skip inaccessible filesperset 10 plus archivelog filesperset 20 delete all input;
release channel ch1;
}
allocate channel for maintenance device type disk;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
2级运行脚本
[oracle@oracle122 script]$ cat exec_2_level.sh
ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/proct/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
export DATE=$(date +%Y_%m_%d)
export NLS_LANG="Simplified Chinese_china".AL32UTF8
/u01/app/oracle/proct/11.2.0/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak2.rman log /home/oracle/rmanbak/script/log/rman_$DATE.log append
定时备份星期天为0级全备,星期三为2级备份,星期一,星期二,星期四,星期五,星期六为1级增量备份晚上11点开始备份
[oracle@oracle122 script]$ crontab -l
* 23 * * 0 /home/oracle/rmanbak/script/exec_0_level.sh
* 23 * * 1 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * * 2 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * * 3 /home/oracle/rmanbak/script/exec_2_level.sh
* 23 * * 4 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * * 5 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * * 6 /home/oracle/rmanbak/script/exec_1_level.sh

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

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

③ 如何实现ORACLE 9I的自动备份和还原

可以写个批处理:将以下文本保存为.bat文件,将该文件加入计划任务即可,需要建立目标文件夹,本例中为E:\backup。
rem
windows环境停Oracle数据库(的)自动备份脚本..
rem
可以将本批处理设成windows任务计划下自动施行..
@echo
off
@echo
================================================
@echo
windows环境停Oracle数据库(的)自动备份脚本
@echo
说明:起步备份时,,亟需配备以次变量
@echo
一、BACKUP_DIR
指定要备份到哪个索引
@echo
二、ORACLE_USERNAME
指定备份所用(的)Oracle用户名
@echo
三、ORACLE_PASSWORD
指定备份所用(的)Oracle密码
@echo
四、ORACLE_DB
指定备份所用(的)Oracle联接名
@echo
五、BACK_OPTION
备份选项,,可认为空,,可认为full=y,,可认为owner=a用户,b用户
之类....
@echo
================================================
rem
以下变量急需根据实际情况配备------>
set
BACKUP_DIR=E:\backup
set
ORACLE_USERNAME=zzsys
set
ORACLE_PASSWORD=zzsys
set
ORACLE_DB=ZZYW
set
BACK_OPTION=
for
/f
"tokens=1,2"
%%a
in
('date/t')
do
set
TODAY=%%a
set
BACK_NAME=%ORACLE_USERNAME%_%TODAY%
set
BACK_FULL_NAME=%BACKUP_DIR%\%BACK_NAME%
mkdir
%BACKUP_DIR%\%TODAY%
set
BACK_FULL_NAME=%BACKUP_DIR%\%TODAY%\%BACK_NAME%
rem
开始备份
exp
%ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB%
%BACK_OPTION%
file="%BACK_FULL_NAME%.dmp"
log="%BACK_FULL_NAME%exp.log"
@echo
设置第二个用户
set
ORACLE_USERNAME=privzzsys
set
ORACLE_PASSWORD=privzzsys
set
ORACLE_DB=ZZYW
set
BACK_NAME=%ORACLE_USERNAME%_%TODAY%
set
BACK_FULL_NAME=%BACKUP_DIR%\%TODAY%\%BACK_NAME%
rem
开始备份
exp
%ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB%
%BACK_OPTION%
file="%BACK_FULL_NAME%.dmp"
log="%BACK_FULL_NAME%exp.log"

④ 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数据库怎么自动备份

配置批处理文件

1
新建名为"oracleBackup"的文本文档(名字自己定),然后重命名后缀为"oracleBackup.bat"的批处理文件。

2
在oracleBackup.bat文件上点击右键,选择编辑,填写以下相关内容:
rem ---------------------------------------------------------------------------

rem windows环境下Oracle数据库的自动备份脚本。
rem 可以将本批处理设成windows任务计划下自动执行。

@echo off
@echo ================================================
@echo windows环境下Oracle数据库的自动备份脚本
@echo 说明:启动备份时,需要配置以下变量
@echo 1、BACKUP_DIR 指定要备份到哪个目录
@echo 2、ORACLE_USERNAME 指定备份所用的Oracle用户名
@echo 3、ORACLE_PASSWORD 指定备份所用的Oracle密码
@echo 4、ORACLE_DB 指定备份所用的Oracle连接名
@echo 5、BACK_OPTION 备份选项,可以为空,可以为full=y,可以为owner=a用户,b用户 等等....
@echo 6、RAR_CMD 指定RAR命令行压缩工具所在目录
@echo ================================================
rem 以下变量需要根据实际情况配置------> 注意:此脚本必须放在E:\backup目录下
set BACKUP_DIR=E:\backup
set ORACLE_USERNAME=se
set ORACLE_PASSWORD=xj
set ORACLE_DB=xj_orcl
set BACK_OPTION= OWNER=se
set RAR_CMD="C:\Program Files\WinRAR\Rar.exe"

for /f "tokens=1,2" %%a in ('date/t') do set TODAY=%%a
set BACK_NAME=%ORACLE_DB%_%TODAY%()_
set BACK_FULL_NAME=%BACKUP_DIR%\%BACK_NAME%

rem 开始备份
exp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB% %BACK_OPTION% file="%BACK_FULL_NAME%.dmp" log="%BACK_FULL_NAME%exp.log"

rem 压缩并删除原有文件
%RAR_CMD% a -df "%BACK_FULL_NAME%back.rar" "%BACK_FULL_NAME%.dmp" "%BACK_FULL_NAME%exp.log"

rem ---------------------------------------------------------------------------
forfiles /m *.rar -d -7 /c "cmd /c del /f @path"

3
配置相关参数:
BACKUP_DIR:该参数为备份数据文件的存放位置,可根据实际情况进行设置(注:设置的文件路径不允许包含汉字、特殊字符等内容)。
ORACLE_USERNAME:该参数为指定备份的Oracle数据库用户名。
ORACLE_PASSWORD:该参数为指定备份的Oracle数据库密码。
ORACLE_DB:该参数为指定备份的Oracle数据库连接名。
BACK_OPTION:该参数为备份选项,可以为空,也可以为full=y等。
RAR_CMD:指定RAR命令行压缩工具所在目录

END
安装软件

1
下载WINRAR安装包。

2
点击"wrar520sc_setup.exe",进行安装软件。

3
根据软件的安装路径,在命名的bat处理文件中配置:RAR_CMD参数。
END
添加定时任务

打开电脑的控制面板,选择"任务计划",双击打开。页面如图所示:

双击打开添加定时任务,点击下一步进入相关设置页面。页面如图所示:

单击浏览按钮,找到oracleBackup.bat文件添加,然后进行配置:根据实际情况选择要备份的时间类型,此处以每天执行为例,选择每天,点击下一步,设置执行时间。

输入执行定时任务机器的用户名及密码,点击下一步,进入完成界面,点击完成,至此,Oracle数据库定时任务备份的设置。

5
利用修改机器时间进行定时任务的测试。

⑥ 求一个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数据库自动备份 linux 脚本

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分隔开来

⑧ ORACLE如何用脚本自动备份服务器上数据库到本地数据库上

使用dataguard。具体怎么用请自己查步骤,太多了,写不下(严重推荐,很多大型企业都在用)。

大概步骤就是建一个test1数据库,再将test1做全备份,再恢复到test2上。这两库就一致了。然后将test2打开到mount,设成standby库。按照文档修改参数,让test1能传数据过来。

太详细的我这里也写不完。你自己查一下“如何使用dataguard或者standby”

一旦数据库崩溃可以很快切换到备份库上,两者之间的数据相差非常小(也就传一两个archivelog的时间)。此外,还可以通过第三方软件(较安全),实现报表分离。也就是这个库还可以专门做报表。

⑨ oracle(11g)求一个自动备份脚本

1、某一个时段自动备份用crontab计划任务实现即可,例如
crontab -e添加
0 4 * * * /opt/bak.sh
2、删除三天前的备份文件用find . -type f -mtime +3 -exec rm -rf {} \;实现
3、异地备份你就scp到其他主机上一份
4、实例bak.sh:
#!/bin/sh
today=`date +%Y%m%d%H`
bakfile=/opt/backup/bak_${today}.dmp
logfile=/opt/backup/logs/bak_${today}.log
find /opt/backup -type f -mtime +3 -exec rm -rf {} \;
#执行某些sql语句
#echo -e "select count(*) from table purge;"| sqlplus -s 'user01/123456'
exp user01/123456 file=$bakfile TABLES=T1,T2 log=$logfile
#你需要提前实现ssh无密码访问或者安装sshpass之类的软件
scp $bakfile [email protected]:/opt/backup/

⑩ 如何编写一个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

热点内容
城堡争霸台服脚本精灵 发布:2024-05-13 12:19:38 浏览:241
压缩档已损坏 发布:2024-05-13 12:06:22 浏览:411
mysql查看数据库表 发布:2024-05-13 11:36:56 浏览:541
dnf脱机脚本 发布:2024-05-13 11:34:44 浏览:110
php内置类 发布:2024-05-13 11:31:48 浏览:509
怎么在云服务器里搭建网站 发布:2024-05-13 11:18:16 浏览:852
天龙八部自动登录脚本 发布:2024-05-13 10:30:28 浏览:776
股票服务器崩了是什么意思 发布:2024-05-13 10:29:32 浏览:87
几台电脑同时访问服务器 发布:2024-05-13 10:08:46 浏览:229
油猴虎牙弹幕脚本 发布:2024-05-13 10:04:33 浏览:878