导出实例批处理:Oracle备份并压缩至指定路径,删除30天前的rar文件.bat

导出实例批处理:Oracle备份并压缩至指定路径,删除30天前的rar文件.bat

新建txt文档粘贴以下内容,重命名txt名称后缀为bat即可,需要定时自动执行windows创建“任务计划程序”启动此bat即可。

@echo off
echo ============================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前年-月-日-时-分-秒命名文件备份。
echo 2. 自动压缩为RAR格式。
echo 3. 自动删除30天前的RAR文件。
echo ============================================
::定义变量-压缩工具路径
set RAR_CMD="C:\Program Files\WinRAR\WinRAR.exe"
::定义变量-用户名
set USERNAME=UUKB
::定义变量-密码
set PASSWORD=123456
::定义-引用用户名密码
set CONDETION1=%USERNAME%/%PASSWORD%
::定义-文件名
set FILENAME=U8C
::定义-小时
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
::定义-时间方式
set TIMESTYLE=%date:~0,4%-%date:~5,2%-%date:~8,2%-%hour%-%time:~3,2%-%time:~6,2%
::定义-dmp名称
set FILEPATH=%FILENAME%_%TIMESTYLE%.dmp
::定义-log名称
set LOGPATH=%FILENAME%_%TIMESTYLE%.log
::定义-绝对路径rar名称
set RARPATH=D:/data/%FILENAME%_%TIMESTYLE%.rar
::定义-绝对路径并引用dmp名称
set FILEPATH1=D:/data/%FILEPATH%
::定义-绝对路径并引用log名称
set LOGPATH1=D:/data/%LOGPATH%
echo ============================================
echo 正在备份Oracle数据库,请稍等......
echo ============================================
::备份命令 %CONDETION1%引用用户名密码变量;parallel控制执行任务的最大线程数;
expdp %CONDETION1% DIRECTORY=dmpdir dumpfile=%FILEPATH% logfile=%LOGPATH% parallel=2
echo 备份完成!
echo ============================================
echo 压缩当前dmp与log文件为rar,请稍等......
echo ============================================
::"%RARPATH%压缩文件的名称和绝对路径;%FILEPATH1% %LOGPATH1%引用需压缩的文件名路径
%RAR_CMD% a -df "%RARPATH%" "%FILEPATH1%" "%LOGPATH1%"
echo 压缩完成!
echo ============================================
echo 显示指定目录下30天以前的RAR文件路径.....
echo ============================================
forfiles /p "D:\data" /s /m *.rar /d -30 /c "cmd /c echo @path"
::时间延迟
@echo off
echo 延时前:%time%
ping /n 3 127.0.0.1 >nul
echo 延时后:%time%
::pause注释的暂停命令,启用则需要按任意键继续
echo ============================================
echo 删除指定目录下30天以前的RAR文件.....
echo ============================================
forfiles /p "D:\data" /s /m *.rar /d -30 /c "cmd /c del @path"
::时间延迟
@echo off
echo 延时前:%time%
ping /n 3 127.0.0.1 >nul
echo 延时后:%time%
echo 删除成功!
在这里插入代码片

业务场景:

在工作中,涉及到oracle数据库迁移,使用navicat等其他工具 容易报错,一系列问题很麻烦,今天记录一下操作流程及个人理解(文章参考了很多文档和博客);

EXPDP数据导出

请自行修改目录路径和自定义的表名,否则出现错误很难查找~

一般expdp流程:

新建逻辑目录 → 查看目录是否存在 → expdp导出数据

一、新建逻辑目录

最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录“D:\data”(务必手动创建此目录),仅仅是进行定义逻辑路径dumpdir;
忘记sys用户密码的可以百度下如何修改sys用户密码;

建议使用pl、navicat等oracle操作工具来操作;

登陆后sql执行:

create directory mydata as ‘逻辑目录路径’;
例如:
create directory mydata as ‘D:/data’;

二、查看逻辑目录是否创建成功

执行sql:

sql>select * from dba_directories

三、用expdp导出数据

用法及解释:

expdp 用户名/密码@ip地址/实例??[属性]
ip地址不写默认就是本地

userid=test/test???–导出的用户,本地用户!!
directory=dmpdir??? --导出的逻辑目录,一定要在oracle中创建完成的,并且给用户授权读写权限
dumpfile=xx.dmp???–导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxx.dmp
logfile=xx.log???–导出的日志文件名称,如果不写这个参数的话默认名称就是export.log,可以在本地的文件夹中找到
schemas=userxx???–使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别
EXCLUDE=TABLE:“IN(‘T1’,‘T2’,‘T3’)”???–exclude 可以指定不导出的东西,table,index等,后面加上不想导出的表名
network_link=db_local???–这个参数是使用的dblink来远程导出,需要指定dblink的名称
列出一些场景:

1)导出用户及其对象
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp directory=dumpdir logfile=expdp.log;

2)导出指定表
expdp scott/tiger@orcl tables=emp,dept dumpfile=expdp.dmp directory=dumpdir logfile=expdp.log;

3)按查询条件导
expdp scott/tiger@orcl directory=dumpdir dumpfile=expdp.dmp tables=empquery='where deptno=20' logfile=expdp.log;

4)按表空间导
expdp system/manager@orcl directory=dumpdir dumpfile=tablespace.dmp tablespaces=temp,example logfile=expdp.log;

5)导整个数据库
expdp scott/123@127.0.0.1/orcl directory=dumpdir dumpfile=ly.dmp full=y ?logfile=expdp.log;

一般用的都是导出整个数据库,本人使用的代码:

//包含所有用户的表、视图、索引等
expdp K3/123@127.0.0.1/orcl directory=dmpdir dumpfile=K3bak.dmp full=y logfile=K3bak.log;
//指定用户的表、视图、索引等
expdp K3/123@127.0.0.1/orcl directory=dmpdir schemas=jcpt dumpfile=K3bak.dmp logfile=K3bak.log;

导出完成后:逻辑目录生成了一个 dmp文件;

IMPDP数据导入

在正式导入数据前,要先确保要导入的用户已存在,如果没有存在,请先用下述命令进行新建用户

流程:

创建表空间 → 创建用户并授权 → impdp导入数据

一、创建表空间

使用system登录oracle,执行sql
格式: create tablespace 表间名 datafile ‘数据文件名’ size 表空间大小

create tablespace data_test datafile ‘e:\oracle\oradata\test\test.dbf’ size 2000M;
(*数据文件名 包含全路径, 表空间大小 2000M 表是 2000兆)

二、创建用户并授权

格式: create user 用户名 identified by 密码 default tablespace 表空间表;

create user study identified by study default tablespace data_test;

(*我们创建一个用户名为 study,密码为 study, 表空间为 madate-这是在上一步建好的.)

授权给 用户 study? ? ?,执行sql

#给用户逻辑目录读写权限
sql>grant read,write on directory mydata to study;
#给用户表空间权限
sql>grant dba,resource,unlimited tablespace to study;

三、impdp导入

命令在cmd或者控制台输入,不是sql语句

写法:

impdp 用户名/密码@ip地址/实例??[属性]

ip地址不写默认就是本地

注释:

1)导入用户(从用户scott导入到用户scott)
impdp scott/tiger@orcl directory=dumpdir dumpfile=expdp.dmp schemas=scott logfile=impdp.log;

2)导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/manager@orcl directory=dumpdir dumpfile=expdp.dmp tables=scott.dept,scott.emp remap_schema=scott:system logfile=impdp.log table_exists_action=replace (表空间已存在则替换);

3)导入表空间
impdp system/manager@orcl directory=dumpdir dumpfile=tablespace.dmp tablespaces=example logfile=impdp.log;

4)导入整个数据库
impdb system/manager@orcl directory=dumpdir dumpfile=full.dmp full=y logfile=impdp.log;

日常使用的:

把用户jcpt中所有的表导入到lyxt用户下
impdp lyxt/lyxt123@127.0.0.1/orcl directory=mydata dumpfile=LY.DMP remap_schema=jcpt:lyxt logfile=ims20171122.log table_exists_action=replace
5)追加数据
impdp system/manager@orcl directory=dumpdir dumpfile=expdp.dmp schemas=systemtable_exists_action logfile=impdp.log;

以上是日常工作中实际工作中用到的,希望能够给你得到帮助。

————————————————
本文部分内容摘自CSDN博主「小关enter」的原创文章链接:https://blog.csdn.net/gty931008/java/article/details/86160808

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值