windows 下 oracle dmp 备份

前些天做了一个windows 下oracle 数据库使用dmp文件进行备份的活。为了加深印象,整理一份笔记。备份流程如下:定时任务全库导出dmp文件使用定时任务复制到共享文件夹源数据库使用定时任务删除2天前备份及本

前些天做了一个windows 下oracle 数据库使用dmp文件进行备份的活。为了加深印象,整理一份笔记。

备份流程如下:

  1. 定时任务全库导出dmp文件
  2. 使用定时任务复制到共享文件夹
  3. 源数据库使用定时任务删除2天前备份及本地备份
  4. 目标数据库使用定时任务获取dmp文件,之后删除过期dmp文件
  5. 目标数据库创建好恢复数据库
  6. 导入数据库

定时任务导出dmp文件:
提前在数据库中创建好directory
sqlplus>create or replace directory dump_dir as ‘D:\备份’;
如下命令可以直接复制到 .bat文件中

set ORACLE_USERNAME=system
set ORACLE_PASSWORD=mima
set ORACLE_DB=test
expdp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB% directory=dump_dir dumpfile=full%date:~0,4%%date:~5,2%%date:~8,2%.dmp full=y logfile=full.log

C:>set ORACLE_USERNAME=system
C:>set ORACLE_PASSWORD=****
C:>set ORACLE_DB=****
C:>expdp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB% directory=dump_dir dumpfile=full%date:0,4%%date:5,2%%date:~8,2%.dmp full=y logfile=full.log

定时任务复制到共享空间
1.创建共享地址映射

2.创建复制文件的.bat文件

net use Z: \\共享地址$ 密码/user:用户名
xcopy /e /H /D "D:\备份" "Z:\备份" /Y
pause

删除共享中2天前的dmp文件:

net use \\共享地址$  密码/user:密码
forfiles /p "Z:\备份" /s /m  *.DMP /d -3 /c "cmd /c del /f @path"

删除本地1天前备份:

forfiles /p "D:\备份" /s /m  *.DMP /d -1 /c "cmd /c del /f @path"

复制共享文件到目标库
目标库执行.bat文件

forfiles /p "Z:\备份" /s /m *%date:~8,2%*.DMP /c "cmd /c copy @path D:\备份"

删除目标库1天前备份
目标库执行批处理文件

forfiles /p "D:\备份" /s /m  *.DMP /d -1 /c "cmd /c del /f @path"

目标库创建导入数据库
C:> dbca









数据库安装完成后,需要创建对应的表空间以及表空间文件

--临时表空间
create temporary tablespace test_tablespace 
tempfile 'D:\app\Administrator\oradata\test\test_temp.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local; 

--创建表空间及表空间文件
create tablespace htbase
logging  
datafile 'D:\app\Administrator\oradata\test\test.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  .
extent management local;  

--增加表空间文件
alter tablespace htbase add datafile 'D:\app\Administrator\oradata\test\test2.dbf' size 50M autoextend on next 50M maxsize 20480M;

--设置数据库参数,根据需要进行设置
alter system set undo_retention=3600 scope=spfile;
Alter system set processes=1000 scope=spfile;
--创建directory
create or replace directory dir_1 as 'D:\备份';

导入数据库
一但需要使用时,使用如下语句进行导入

IMPDP system/test dumpfile=FULL20220109.DMP logfile=20220117.log directory=dir_1 full=y

如上就是一次windows下,生产库的一次导入操作。因为后续只是验证数据库可以正常使用,具体问题还没有体现。

在导入时有几个注意的地方:

  1. 用文件复制的oracle软件,在监听跟环境变量上都容易出问题,虽然能导出注册表文件,但是导出的不全也会有影响,建议安装一个新的数据库软件
  2. 导入数据文件前,要查看一下源数据库表空间及表空间文件的信息,避免因空间不足导致导入失败
  3. 400G左右的数据库,在当时的系统环境下,导入时间超过5小时。不建议生产库使用这种方式
  4. 自动执行的批处理任务,要考虑好时间的先后顺序,复制到目标库最好按照文件名复制,避免按时间复制多个文件

暂时只想到这么多,如果有啥不妥的地方,欢迎大神留言。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1754824557a5204779.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信