Oracle数据库按天备份

1.在sysdba下执行:
创建directory 对象:
create directory DUMP_DIR as ‘/data/oracle/zx_data’;

2.修改directory目录的路径(注意:原路径正确的情况下,不需要修改路径):
create or replace directory DUMP_DIR as ‘/home/qry/baknas/bak/’

3./data/oracle/zx_data这个文件路径也要在oracle下创建,并且zx_data这个文件的用户必须是oracle如果不是需要修改:

chown oracle:oinstall zx_data

select * from dba_directories where directory_name = ‘DUMP_DIR’;

4.给需要导出数据的用户授权
grant read,write on directory DUMP_DIR to user1;
grant read,write on directory DUMP_DIR to user2;

5.EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
对于10g以上的服务器:exp:空表导不出来,expdp:可以导出空表;

EXPDP导出数据
expdp user1/pass_wd@IP1521/orcl directory=DUMP_DIR dumpfile=user1_20230518.dmp logfile=user1_20230518.log;
expdp user2/pass_wd@IP:1521/orcl directory=DUMP_DIR dumpfile=user2_20230518.dmp logfile=user2_20230518.log;

impdp导入数据:
先查看 select * from dba_directories where directory_name = ‘DUMP_DIR’;
覆盖原有表数据:table_exists_action=replace(replace,删除已存在的表,重建表并追加新数据)
append,追加数据
truncate,导入作业会截断表,然后为其追加数据

impdp user1/pass_wd@IP:1521/orcl table_exists_action=replace directory=DUMP_DIR dumpfile=user1_20230518.dmp logfile=user1_20230518.log

impdp user2/pass_wd@IP:1521/orcl table_exists_action=replace directory=DUMP_DIR dumpfile=user2_20230518.dmp logfile=user2_20230518.log

下面的例子是备份30天内的数据

#!/bin/bash
#!/usr/bin/expect
#################shell脚本说明#############################
#备份30日内的数据,超过30日的自动删除
#在sysdba下执行:
#创建directory 对象:
#create directory DUMP_DIR as '/data/zx_data';
#修改directory目录的路径:
#create or replace directory DUMP_DIR as '/data/zx_data';
#/data/zx_data这个文件路径也要在oracle下创建,并且zx_data这个文件的用户必须是oracle如果不是需要修改:
#chown oracle:oinstall zx_data
#select * from dba_directories where directory_name = 'DUMP_DIR';
#impdp导入数据:
#先查看 select * from dba_directories where directory_name = 'DUMP_DIR';
#覆盖原有表数据:table_exists_action=replace(replace,删除已存在的表,重建表并追加新数据)
#append,追加数据
#truncate,导入作业会截断表,然后为其追加数据/根据实际情况配置用户,密码,SID
#impdp user1/pass_wd@IP:1521/orcl table_exists_action=replace  directory=DUMP_DIR dumpfile=user1_20230710.dmp logfile=user1_20230710.log
#impdp user2/pass_wd@IP:1521/orcl table_exists_action=replace  directory=DUMP_DIR dumpfile=user2_20230710.dmp logfile=user2_20230710.log
#--------------------------------------------------------------------------------------------------------
#根据实际情况配置
ORACLE_BASE=/data/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
export NLS_Lang=CHINESE_CHINA.ZHS16GBK

file_log="/data/zx_data/renwu.txt"
echo "***************任务开始***************" >>${file_log}

sys_date=$(date "+%Y%m%d %H:%M:%S")				#系统时间
start_date=$(date -d "now" +%Y%m%d)				#备份开始时间
end_date=$(date -d "30 day ago" +%Y%m%d)		#备份结束时间

echo "任务执行时间:"$sys_date >>${file_log}
echo "备份当次日期:"$start_date >>${file_log}
echo "删除当次日期:"$end_date >>${file_log}

cd /data/zx_data/

#EXPDP导出数据/根据实际情况配置用户,密码,SID
expdp user1/pass_wd@IIP:1521/orcl directory=DUMP_DIR dumpfile=user1_"$start_date".dmp logfile=user1_"$start_date".log
expdp user2/pass_wd@IP:1521/orcl directory=DUMP_DIR dumpfile=user2_"$start_date".dmp logfile=user2_"$start_date".log

#删除超过指定天的数据
rm -rf user1_"$end_date".zip
#将当天数据压缩打包
zip -r user1_"$start_date".zip	*"$start_date"*

#备份结束删除当日数据文件
rm -rf user1_"$start_date".dmp
rm -rf user1_"$start_date".log
rm -rf user2_"$start_date".dmp
rm -rf user2_"$start_date".log
echo "***************任务结束***************" >>${file_log}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值