oracle数据库定时每天自动备份语句,Oracle数据库定时自动备份
Oracle数据库定时自动备份批处理代码(Windows)
这是最近写的一个Oracle数据库自动备份的批处理,经过测试正常运行,记录如下。包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的高手指导!
注:这些内容是本人经过一番学习和多次测试调试后的结果,如果想转载,请以连接的形式,谢谢合作!
第一部分,逻辑备份
下面是:AutoBackup_Logic.bat --逻辑备份的主文件,直接在计划任务中调用就可以了。
@echo off
rem
rem 需要配置的参数说明:
rem BAT_HOME:即本批处理所在的目录;
rem
DUMP_DIR:即要备份到的数据文件目录,存在与数据字典表:dba_directories 中。
rem
set BAT_HOME=E:\BAT
set DUMP_DIR=E:\Temp\DBBackup
set
BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set
HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%
call %BAT_HOME%\LogicBackup.bat
%DUMP_DIR%
>%BAT_HOME%\LogicBackup_%BKFILE%%HHMMSS%.log
echo Completed!
下面是:LogicBackup.bat
@echo off
rem call LogicBackup.bat %DUMP_DIR%
rem
==========================================================================================
rem 本批处理实现支持expdp数据泵的Oracle数据库版本的数据库逻辑备份,流程为:导出数据到
rem dump_dir
数据库目录下,然后把dmp文件以rar格式放入当天备份日期命名的目录下,便于以后按
rem 照日期恢复。
rem
rem 需要配置的参数说明:
rem BAT_HOME:即本批处理所在的目录;
rem BKDIR:是调用本批处理时传进来的参数
dump_dir,即要备份到的数据文件目录。
rem
rem Author: Sanlavo
rem Time: 2007-06-07
rem
==========================================================================================
rem
echo 备份开始...
echo 当前的时间是: %DATE% %time%
set BAT_HOME=E:\BAT
set BKDIR=%1
set
BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set
HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%
expdp system/sys
parfile=%BAT_HOME%\ScriptsLib\parfiletest.sql
if not exist %BKDIR%\%BKFILE%_LOGIC
(
md %BKDIR%\%BKFILE%_LOGIC
) else (
echo 目录 %BKDIR%\%BKFILE%_LOGIC 已经存在
)
echo 开始压缩文件...
rar a
%BKDIR%\%BKFILE%_LOGIC\%BKFILE%%HHMMSS%_LOGIC_FULL.rar
%BKDIR%\*.dmp
echo 压缩文件
%BKFILE%%HHMMSS%_LOGIC_FULL.rar 完成
echo 开始移动文件...
move %BKDIR%\*.dmp
%BKDIR%\%BKFILE%_LOGIC\
move %BKDIR%\*.log
%BKDIR%\%BKFILE%_LOGIC\
echo 移动文件完成
echo 开始删除dmp文件...
del /f /s /q
%BKDIR%\%BKFILE%_LOGIC\*.dmp
echo 删除dmp文件完成
net send %userdomain% "数据库逻辑备份已于:%DATE%
%time% 完成!"
echo .
echo 备份已于:%DATE% %time% 完成!
echo .
rem 移动批处理的日志文件到备份目录下面
xcopy
%BAT_HOME%\LogicBackup_%BKFILE%*.log %BKDIR%\%BKFILE%_LOGIC\
echo Successfully Completed!
下面是expdp的parfile参数的文件(parfiletest.sql)内容:
directory=dump_dir
dumpfile=DBBackup_Logic_%U.dmp
logfile=DBBackup_Logic.log
filesize=80M
full=y
job_name=EXP_DB_FULL
到此,逻辑备份批处理完成,可以用命令来定时执行,例如:
c:\>at 06:06 /every:S
E:\BAT\AutoBackup_Logic.bat
这样,逻辑备份将会在每周星期六凌晨六点六分执行。
第二部分,冷备份:
下面是:AutoBackup.bat --主文件
@echo off
set BAT_HOME=E:\BAT
set DUMP_DIR=E:\Temp\DBBackup
call ColdBackup.bat orcl %DUMP_DIR%
>%BAT_HOME%\ColdBackup_%DATE:~0,10%.log
pause
下面是备份流程文件:ColdBackup.bat
@echo off
rem
E:\BAT>ColdBackup.bat orcl E:\Temp\DBBackup
rem
rem==============================================
rem 要备份的文件列表有:参数文件、控制文件、数据文件、重做日志文件
rem
rem 参数文件有:
rem
%ORACLE_HOME%\database\spfile.ora
rem
%ORACLE_HOME%\database\PWD.ora
rem
%ORACLE_HOME%\database\pfile.ora
rem
rem 控制文件:可以通过查询数据字典视图v$control
确认控制文件的位置和清单
rem select status,name from
v$controlfile;
rem
rem 数据文件:可以通过查询数据字典视图 dba_data_files
确定数据文件的位置和清单
rem select status,file_name from
dba_data_files;
rem
rem
重做日志文件:查询数据字典v$logfile可以确认联机重做日志文件的位置和清单
rem select group#,status,member from
v$logfile;
rem Author: Sanlavo
rem Time: 11:35 2007-5-31
rem==============================================
rem
rem
请在这里配置好本批处理程序所放的路径BAT_HOME以及ORACLE_HOME:
set
ORACLE_HOME=D:\oracle\product\10.2.0\db_1
set BAT_HOME=E:\BAT
set
BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set
HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%
rem 数据库脱机
call %BAT_HOME%\ShutdownDB.bat %1
rem %1
为数据库 %2为备份文件路径
rem 创建备份目录
if exist %2\%BKFILE%_DBBackup (
echo %2\%BKFILE%_DBBackup 已经存在
) else (
mkdir %2\%BKFILE%_DBBackup
echo %2\%BKFILE%_DBBackup 已经创建
)
rem copy备份文件到备份目录中
rem call xcopyfiles.bat %1 %2
rem begin
==============================================
echo 数据库 %1 冷备份开始...
rem 备份 dbs 目录下参数文件
xcopy %ORACLE_HOME%\dbs\*.*
%2\%BKFILE%_DBBackup\dbs /S /I /C /Y /F
rem 备份 %ORACLE_HOME%\database
目录下参数文件
xcopy %ORACLE_HOME%\database\*.*
%2\%BKFILE%_DBBackup\database /S /I /C /Y
/EXCLUDE:ScriptsLib\databaseExclude.lst /F
rem 备份数据库控制文件、数据文件、重做日志文件
rem
创建数据库命名的文件夹,存放相关文件
if not exist %2\%BKFILE%_DBBackup\%1
(
md %2\%BKFILE%_DBBackup\%1
)
rem
从filepath.txt中读取文件路径信息并copy到目标路径
for /f %%i in
(%BAT_HOME%\ScriptsLib\filepath.txt) do (
xcopy %%i %2\%BKFILE%_DBBackup\%1 /S /I
/C /Y /F
)
echo 数据库 %1 冷备份完成!
rem end
==============================================
echo 启动数据库
rem 上面的操作过程中以及修改了环境路径,所以掉不到该批处理文件
%BAT_HOME:~0,2%
cd %BAT_HOME%
call %BAT_HOME%\StartupDB.bat %1
:Operation
:End
rem if exist *.dmp (
rem move *.dmp %BKFILE%_DBBackup
& goto End1
rem echo Move dump file successfull
rem )else (
rem echo 不存在数据库备份文件 &
goto End1
rem )
rem End
rem :: 把日期目录下的文件移动到当前目录
rem :: move %BKFILE%_DBBackup\*.bat
rem :End1
rem echo *
rem echo Operation Successfully
rem echo *
pause
上文中的:databaseExclude.lst 内容如下:
.log
.exe
即,排除日志文件和exe文件,其他的全部备份。
上文中的:filepath.txt
内容是经过数据字典查询后得到的比如控制文件、数据文件、日志文件等的路径列表,例如:
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\SDEDB.DBF
E:\SDEDB\SDE_DATA01.DBF
E:\SDEDB\SDE_INDEX01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\WJ01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
...
oracle数据库定时每天自动备份语句,Oracle数据库定时自动备份相关推荐
- mysql定期执行备份语句_【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件...
项目部署在服务期上之后,有了新的需求,需要每月定时备份mysql数据库的所有数据! 查找了网上的多篇文章之后,自己又对bat文件中的mysqldump语句进行改进,可以实现了不用输入密码就能自动定时备 ...
- oracle表中增加字段 sql语句,ORACLE中通过SQL语句(alter table)来增加、删除、修改字段...
1.添加字段: alter table 表名 add (字段 字段类型) [ default '输入默认值'] [null/not null] ; 2.添加备注: comment on ...
- 从oracle数据表导到sql语句,oracle导出表结构到sql文件
问题描述: 1.想要导出用户CAI下的所有表结构到sql文件 2.网上搜索的解决方案如下: 需要登陆oralce用户: sqlplus 用户名/密码@实例名 SQL> set serverout ...
- oracle 查看用户日志,Oracle查看用户操作sql语句以及数据库日志
--查看日志文件 select member from v$logfile; --查看表空间使用情况 SELECT SUM(bytes) / (1024 * 1024) AS free_space, ...
- 修改linux下全局数据库名,linux/unix下修改oracle数据库实例名的方法
linux/unix下修改oracle数据库实例名的方法 2018年12月10日 | 萬仟网IT编程 | 我要评论 linux/unix下修改oracle实例名的方法 1.检查原来的数据库实例名 $ ...
- sql oracle复制一张表里,Oracle如何复制表的sql语句
以下的文章主要是介绍Oracle复制表的sql语句,其中包括如何复制表结构的sql.以及如何复制相关表的结构又复制表中的数据sql.以下就是相关内容的具体介绍,望你浏览完以下的内容会有所收获. 如下, ...
- SQL语句数据库的创建、修改,分离,附加,备份,还原
目录 1.数据库的创建: 2.数据库的修改 3.数据库的分离 4.数据库的附加 5.数据库备份 6.数据库还原 1.数据库的创建: --SCT为要创建的数据库名称 create database SC ...
- 【转】创建数据库和表的SQL语句
[转]创建数据库和表的SQL语句 创建数据库的SQL语句: 1 create database stuDB 2 on primary -- 默认就属于primary文件组,可省略3 (4 /*--数据 ...
- 数据库查询中的in语句
数据库查询中的in语句 在数据库中也有运算符,比如<.>.=.之类的,还有一些or.and之类的,下面我们来学习关于in语句的方法,in在数据库中到底起怎样的作用? 如上图,我通过wher ...
最新文章
- tomcat ssi配置及升级导致ssi include错误问题解决
- IOS文本框readonly时焦点事件
- 【赠书】如何掌握好自然语言处理中的预训练语言模型?你需要读这本书
- oracle中schema指的是什么?
- Focus 焦点定位
- 20220202--CTF刷题MISC方向--第7题--编码
- phpMyAdmin开发人员访谈——4个人支持整个项目
- mysql-connector-java 6.x配置问题解决方案
- go中的goroutine协程
- O记云基础架构大跃进:甲骨文睡醒了
- 投标文件 医院弱电系统_甲级办公楼智能化弱电设计方案适合弱电行业人士学习!...
- 集成运放的电压跟随器有什么作用?
- Oracle字符串操作[转:http://www.cnblogs.com/xd502djj/archive/2010/08/11/1797577.html]
- 如何成为一名IC验证工程师——IC修真院直播
- uniaccess安全助手卸载
- STM32学习笔记(5) 串口通讯-接收与发送
- python读取文件r_python读入文件时加r的作用?
- java黑白棋原码_JAVA课程设计黑白棋源代码
- TS报错Error: xxx doesn‘t exist on type ‘xxx’
- 卷积神经网络---卷积层、激励层、池化层以及全连接层
热门文章
- 自学Java怎样入门
- 这些前端大厂面试题你会做吗?每日10题大厂面试题(七)
- python 知识点视频_Python426集大型视频,从正确的方向出发学习,全套完整视频送你...
- qq空间java_Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析...
- 数据转换字符串 查字符串出现次数 位置返回字符串和操作方法 2021-05-26
- Python | 阿尔法基本图形绘制
- Outlook收件箱总显示有未读邮件问题
- Substance Painter:常用快捷键
- 【bzoj4146】 [AMPPZ2014]Divisors
- Winform 将Ico图标转换为PNG图片