oracle备份记录

系统win11,oracle11g,因为业务需求,每周备份一次全量,每天一次增量。

有两种实现方式,一种是exp,一种是expdp数据泵。

目录

1:expdp数据泵的使用。

2:exp进行全量、增量备份及恢复。

剩余就是通过windows计划任务里设置执行时间


1:expdp数据泵的使用。

先说下expdp数据泵备份的优缺点,此方法只能全量备份,不能备份增量。

  • 首先使用sqlplus登录数据库。如使用sys登录遇见问题可见下方连接。
sqlplus sys as sysdba

ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER解决方法

  • 创建directory。
  • as后面的位置可根据自己情况更改。
create or replace directory dumpdir as 'D:\container';
  • 给用户赋予使用该目录的权限 
  • on directory dumpdir中的dumpdir是你创建的directory名称,to后是赋予给那个用户。
grant read,write on directory dumpdir to SYSTEM;
  • 可以查看下创建的目录位置
select * from dba_directories;

  • 然后就可以开始备份数据库了。
  1. --expdp SYSTEM/hms@hms  SYSTEM是你的用户名,hms是你创建的密码,@后面是你的实例名。
  2. --%date:~6,4%_%date:~0,2%_%date:~3,2%这个是给文件名称加个当前的日期时间,详细的可以百度。
  3. 如果遇见12154,或12560报错肯定是oracle监听服务有问题,这个需要百度自己一个一个去排查。
--全库备份
expdp SYSTEM/hms@hms directory=dumpdir  dumpfile='date_full_%date:~6,4%_%date:~0,2%_%date:~3,2%.dmp' logfile='date_full_%date:~6,4%_%date:~0,2%_%date:~3,2%.log' full=y;

  • 备份成功后,可以再你设置好的路径里查看是否生成了相对应的文件。一定要有DMP和log两个文件都有才算成功。

  • 然后去数据库删点表,测试导入之前备份好的全量数据。
--恢复备份
impdp SYSTEM/hms directory=dumpdir dumpfile=DATE_FULL_2024_17_01.DMP logfile=date_full_2024_17_01.log

到此步就是使用数据泵全量备份的全过程。

2:exp进行全量、增量备份及恢复。

exp相比较expdp数据泵来说对数据库操作较小,无需对数据库做任何操作。

并且可以做全量、增量、累计备份。

首先将全量增量的路径创建好。可以根据自己项目情况设置。

D

        -container

        --full      全量备份存储文件夹

        --increment    增量备份存储文件夹

  • 全量备份
  • full.bat
@echo off
D: 因为需要通过windows任务管理器定时执行所以要进入到指定盘和文件夹
cd D:\container\full
exp system/hms full=y file=date_full_%date:~6,4%_%date:~0,2%_%date:~3,2%.dmp  log=date_full_%date:~6,4%_%date:~0,2%_%date:~3,2%.log
  • increment.bat
  • 增量备份,注意执行前需要先进行一次全量备份,才能执行增量备份。
  • 其次是如果一个表中新增了数据,增量备份时会把整个表备份出来,所以并不是只备份新增的数据。
@echo off
D:    因为需要通过windows任务管理器定时执行所以要进入到指定盘和文件夹
cd container
cd increment
exp system/hms inctype=incremental file=date_increment_%date:~6,4%_%date:~0,2%_%date:~3,2%.dmp log=date_increment_%date:~6,4%_%date:~0,2%_%date:~3,2%.log
  • 恢复备份语句
恢复全量备份
imp system/hms full=y file=full.dmp buffer=1048576
恢复增量备份
imp system/hms inctype=RESTORE full=y file=increment.dmp buffer=1048576
  • delete.bat
  • 因为我的项目需求还有一个自动删除七天前的备份,所以还要加个删除的bat文件。
调试了下,这个方式能在windowsserver服务器上执行
D: 
cd D:\container\full
forfiles /p "D:\container\full" /s /m *.* /d -7 /c "cmd /c del @path"
D: 
cd D:\container\increment
forfiles /p "D:\container\increment" /s /m *.* /d -7 /c "cmd /c del @path"

剩余就是通过windows计划任务里设置执行时间,这个百度一下有很多,不赘述了。

恢复备份需要确认下之前服务器的字符集编码,要确认下是否一直,如果不一致imp有可能会失败

查询当前数据库字符集编码

SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
NLS_CHARACTERSET	ZHS16GBK
  • 修改字符集编码
# 关闭数据库
shutdown immediate;

# 以mount打开
startup mount;

# 设置session
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;

#启动数据库
SQL>alter database open;

# 修改字符集
ALTER DATABASE CHARACTER SET ZHS16GBK;

# 关闭
shutdown immediate;

# 重启查看即可
startup;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值