Oracle数据库--bat文件备份/恢复

不怎么接触数据库,尤其是Oracle,所以在此留个脚印吧。

此文章主要介绍exp/imp命令,需要关掉数据库操作后进行,同时当备份恢复的时候最好清空数据,不然有主键检查,速度会很慢。(备注:当然也可以试一下expdp/impdp备份恢复,这个可以在恢复的时候选择覆盖恢复,追加恢复等,文章末尾有简单介绍)

1、数据库备份(保存以下内容为expdb.bat)

@echo off     ----在批处理运行命令的时候不会一条一条的显示执行的命令,与之相匹配的还有@echo on
set sid=192.168.1.123/ORCL  -----数据库
set username=WPLAT1217  -----用户名
set password=WPLAT1217   -----密码
set connect=%username%/%password%@%sid%   ----连接字符串拼接
set back_path=d:\databak2dmp            -------备份文件需要保存的文件夹,需要提前创建好
set date_string=%date:~0,4%_%date:~5,2%_%date:~8,2%
set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%
set file_string=%back_path%\test_%date_string%_%time_string% ----备份文件路径+文件名
set log_string=%back_path%\exp_%date_string%_%time_string%-----备份日志路径+文件名
exp %connect% file=%file_string%.dmp INDEXES=y grants=y constraints=y log=%log_string%.log  ----开始备份数据库

扩展:导出表1

exp %connect% file=%file_string%.dmp tables=表1 INDEXES=y grants=y constraints=y log=%log_string%.log  ----开始备份数据库

exp %connect% file=%file_string%.dmp  INDEXES=y grants=y constraints=y log=%log_string%.log  owner=(system,sys) ----将数据库中system用户与sys用户的表导出(未测试)

exp %connect% file=%file_string%.dmp  INDEXES=y grants=y constraints=y log=%log_string%.log  owner=(system) rows=n  --rows=n不导数据只导表结构(未测试)

exp %connect% file=%file_string%.dmp tables=(table1) query=\” where filed1like '00%'\” ---将数据库中的表table1中的字段filed1以”00″打头的数据导出(未测试)

2、数据库恢复(保存以下内容为impdb.bat)

@echo off     ----在批处理运行命令的时候不会一条一条的显示执行的命令,与之相匹配的还有@echo on
set sid=192.168.1.123/ORCL  -----数据库
set username=WPLAT1217  -----用户名
set password=WPLAT1217   -----密码
set connect=%username%/%password%@%sid%   ----连接字符串拼接
set back_path=d:\databak2dmp\backup.dmp            -------需要恢复的备份文件

set back_path_dir=d:\databak2dmp             -----日志存放的文件夹路径
set date_string=%date:~0,4%_%date:~5,2%_%date:~8,2%
set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%
set log_string=%back_path_dir%\imp_%date_string%_%time_string%-----备份日志路径+文件名
imp %connect% file=%back_path%  ignore=y  log=%log_string%.log  ----开始恢复数据库

扩展:恢复表1

imp %connect% file=%back_path% tables=表1 ignore=y  log=%log_string%.log  ----开始恢复数据库

3、传参到bat文件(此处以备份为例)---看红色方框内的

程序传参调用bat:

Process pro=new Process();
ProcessStartInfo pi=new ProcessStartInfo ("bat文件","参数");---参数:以逗号分开的字符串
pi.UseShellExecute=false;
pro.StartInfo=pi;
pro.Start();
pro.WaitForExit();

注意点:测试的时候发现,当时间在0—9的时候,批处理文件出异常:

set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%报错!!!

修正为:

set "hour_ten=%time:~0,1%"
set "hour_one=%time:~1,1%"
set "minute=%time:~3,2%"
set "second=%time:~6,2%"
if "%hour_ten%" == " " (
    set time_string=0%hour_one%_%tminute%_%second%
) else (
    set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%
)

拓展:IMPDP/EXPDP

步骤1:select * from dba_directories;在结果中选择一个路径,之后会用。

备份命令:EXPDP  username/password@ip/orcl SCHEMAS=username dumpfile=backup.dmp directory=exp_dir(exp_dir是步骤1选择的文件夹名)

恢复命令:IMPDP  username/password@ip/orcl dumpfile=backup.dmp directory=exp_dir tables=tb1 table_exists_action=replace(恢复表tb1,且数据存在则直接覆盖)

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库备份可以通过编写批处理文件bat)来实现。以下是一个简单的示例: @echo off set ORACLE_SID=YOUR_SID set ORACLE_HOME=YOUR_ORACLE_HOME set BACKUP_DIR=C:\Backup set DATE=%date:~-4,4%-%date:~-7,2%-%date:~-10,2% set TIME=%time:~0,2%-%time:~3,2% set FILENAME=backup_%DATE%_%TIME%.dmp echo 正在执行Oracle数据库备份... expdp username/password directory=DATA_PUMP_DIR dumpfile=%BACKUP_DIR%\%FILENAME% logfile=%BACKUP_DIR%\backup.log full=y if %errorlevel% equ 0 ( echo Oracle数据库备份完成。 ) else ( echo Oracle数据库备份出现错误。 ) 此批处理文件中的变量需要根据实际情况进行修改。其中: - YOUR_SID:需要替换为目标Oracle实例的SID(系统标识符)。 - YOUR_ORACLE_HOME:需要替换为Oracle软件的安装路径。 - C:\Backup:需要根据实际需要替换为备份文件存储的目标文件夹路径。 - DATA_PUMP_DIR:需要替换为您在Oracle数据库中创建的数据泵目录对象。 执行该批处理文件时,它会设置必要的环境变量,然后使用expdp命令将数据库导出为一个数据泵文件(.dmp)。导出完成后,将在指定的目标文件夹中生成一个日志文件(backup.log),用于记录备份过程的详细信息。 批处理文件还包含一个错误检查,如果备份成功,将显示“Oracle数据库备份完成。”,如果备份过程存在错误,则显示“Oracle数据库备份出现错误。”。 这只是一个简单的示例,您可以根据自己的需求和环境来进行定制,例如可以添加压缩、加密等额外的步骤来增加备份的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值