Oracle逻辑备份脚本【生产环境适用】

devtools/2024/9/29 19:52:39/

1 说明

从Oracle10g开始,引入了数据泵(Data Pump),是一种高效的数据传输工具,它通过导出(Export)和导入(Import)的方式帮助用户迁移数据。

在Oracle的产品设计中,数据泵(Data Pump)主要用于数据迁移。尽管它可以用于恢复特定时间点的数据库状态,但它并不提供在指定时间段内的灵活恢复点选择功能。因此,从严格意义上讲,数据泵备份并不是一种全面的数据保护解决方案,而更多地被视为一种临时性的最低限度保护措施。为了达到更好的数据保护效果,建议将数据泵与RMAN(Recovery Manager)结合使用。

下面介绍生产中一个常用的逻辑备份脚本。

2 准备工作

准备工作主要有备份空间分配、脚本路径创建等。

2.1 备份空间分配

数据泵主要在Server端工作,导出的文件需要写入到Server端本地目录,需要在数据库中创建一个DIRECTORY,对应的是Server端的路径。

逻辑备份由于是生成在本地,在生产环境中,建议DIRECTORY创建在非数据路径下,最好使用一个独立的磁盘挂载,可以保障当磁盘发生故障时,数据文件和备份文件不会同时损坏。

最保险的方式是,将备份文件拷贝到网络盘中,相当于异机备份

2.1.1 创建备份目录

[root@oracle11g ~]# mkdir /expdp
[root@oracle11g ~]# chown oracle:oinstall /expdp/
[root@oracle11g ~]# ll / | grep expdp
drwxr-xr-x 2 oracle oinstall 4096 Sep 25 00:07 expdp

路径需要预留足够大的空间。

2.1.2 创建一个DIRECTORY

登录数据库创建:

SQL> create or replace directory expdp as '/expdp';Directory created.

查看创建结果:

SQL> 
set lines 200
col DIRECTORY_PATH for a70
select * from dba_directories where directory_name = 'EXPDP';OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ ------------------------------ ----------------------------------------------------------------------
SYS                            EXPDP                          /expdp

2.2 脚本路径创建

使用oracle用户创建:

$ su - oracle
$ cd /u01/app/oracle
$ mkdir -p expdp/src
$ mkdir -p expdp/log$ tree expdp
expdp
|-- log
`-- src
2 directories, 0 files

src目录用于存放备份脚本,log目录用于存放备份日志。

3 脚本部署

3.1 说明

  • 此脚主要用于导出schemas参数指定的模式,本例中为LU9UP、SCOTT;
  • 备份文件和日志临时存放至 ${DMP_BASE}/${DATE}目录;
  • 备份文件和备份过程日志最终打包存放至仓库EXPDP目录/expdp下;
  • 压缩后删除临时目录${DATE};
  • 最后清理七天前的压缩文件。

日志长期保存的路径位于/u01/app/oracle/expdp/log。

3.2 部署脚本

oracle用户进入/u01/app/oracle/expdp/src目录,编辑脚本:

$ cd /u01/app/oracle/expdp/src
$ vi expdp_schemas.sh

脚本内容如下,请根据实际情况修改参数值:

#!/bin/bash#
## environment variables
#
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'DBNAME=orcl
SCP_BASE=/u01/app/oracle/expdp
DMP_LOGDIR=${SCP_BASE}/log
DMP_BASE=/expdpif [ -f $HOME/.bash_profile ];
thenexport ORAENV_ASK=NO. $HOME/.bash_profile
fi#
## command
#
DATE=`date +'%Y%m%d%H'`cd $DMP_BASE
RUN_LOG=${DATE}_${DBNAME}_SCHEMAS.logexpdp "'/ as sysdba'" \directory=EXPDP \dumpfile=${DATE}_SCHEMAS%U.dmp \schemas=LU9UP,SCOTT \parallel=4 \logfile=${RUN_LOG} \flashback_time=\"to_timestamp\(to_char\(sysdate, \'yyyy-mm-dd hh24:mi:ss\'\),\'yyyy-mm-dd hh24:mi:ss\'\)\"#
## deleted 7 days ago files
#
echo -e "\n\n******************************************************************************" >> ${RUN_LOG}
echo -e "## deleted 7 days ago compressed file" >> ${RUN_LOG}
echo -e "******************************************************************************" >> ${RUN_LOG}
echo -e `find ${DMP_BASE} -type f -name "*.tar.gz" -mtime +7` >> ${RUN_LOG}
find ${DMP_BASE} -type f -name "*.tar.gz" -mtime +7 -exec rm -f {} \;#
## compress
#CURENTDIR=${DMP_BASE}/${DATE}if [ ! -d  ${CURENTDIR} ];
thenmkdir ${CURENTDIR}
ficd ${DMP_BASE}
mv ${DATE}_SCHEMAS*.dmp ${DATE}
cp ${RUN_LOG} ${DMP_LOGDIR}
mv ${RUN_LOG} ${DATE}
tar -zcvf ${DATE}.tar.gz ${DATE}
rm -rf ${DATE}sleep 5

保存并退出,赋执行权限:

$ chmod +x expdp_schemas.sh

4 脚本试运行

4.1 执行脚本

$ cd /u01/app/oracle/expdp/src
$ ./expdp_schemas.sh

image.png

4.2 检查备份日志

$ tail -20 /u01/app/oracle/expdp/log/2024092502_orcl_SCHEMAS.log

image.png

4.3 查看备份文件

$ ll /expdp
total 3116
-rw-r--r-- 1 oracle oinstall 3186906 Sep 25 02:47 2024092502.tar.gz

5 配置定时任务

添加如下任务:

[oracle@oracle11g ~]$ crontab -l
#DB Logical Backup
0 1 * * * sh /u01/app/oracle/expdp/src/expdp_schemas.sh >/dev/null 2>&1

每天凌晨1点执行一次。


http://www.ppmy.cn/devtools/118854.html

相关文章

Spring Boot 点餐系统:一键订餐解决方案

第一章 绪 论 1.1背景及意义 系统管理也都将通过计算机进行整体智能化操作,对于网上点餐系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、美食店管理、美食分类管理、美食信息管理、美食订单管理、美食评价管理…

trixbox call php发起电话呼叫

调用方法: asterisk 命令行 OK originate sip/801 extension 802 originate sip/802 extension 9013816338277default good bye挂断 originate sip/802 extension 9013816338277from-internal OK Asterisk Call Manager (AMI)呼叫可以 http://xxxx/voip/c…

南京服务器测评【浪浪云】

前言 优质的服务器对于企业来说无疑是一把快速实现科技化成长的利剑。而南京,作为中国科技龙头之一的城市,也对服务器的需求愈发旺盛。而作为国内领先的云服务商,浪浪云致力于用科技培植企业的成长,其在南京的服务器便是企业数字化…

枚举+组合数学,LeetCode 2306. 公司命名

目录 一、题目 1、题目描述 2、接口描述 python3 cpp C# 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 python3 cpp C# 一、题目 1、题目描述 给你一个字符串数组 ideas 表示在公司命名过程中使用的名字列表。公司命名流程如下: 从 i…

用Swift实现验证回文字符串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则&#…

docker-图形化工具-portainer的使用

文章目录 1、安装和启动2、设置登陆密码3、dashboard 上述对容器和镜像的管理都是基于docker客户端的命令来完成,不太方便。为了方便的对docker中的一些对象(镜像、容器、数据卷…)来进行管理,可以使用Portainer来完成。Portainer是一个可视化的容器镜像…

Trapezoidal Decomposition梯形分解算法(TCD)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言Trapezoidal Decomposition梯形分解算法(TCD)原理(1)第一种原理(2…

18.Linux-配置DNF仓库

DNF仓库产生背景 在现实的场景中,我们经常要安装一些软件包,但由于现场不提供网络。 需要使用光盘或文件下载的方式去安装。 对于linux有两种离线安装方式:二进制文件安装和源码安装 其中二进制文件是比较简单的安装方式,不同的l…