当前位置: 首页 > news >正文

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

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用户创建:

[oracle@oracle11g ~]$ cd /home/oracle
[oracle@oracle11g ~]$ mkdir -p scripts/src
[oracle@oracle11g ~]$ mkdir -p scripts/log/expdp
[oracle@oracle11g ~]$ tree scripts
scripts
|-- log
|   `-- expdp
`-- src
3 directories, 0 files

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

3 脚本部署

3.1 说明

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

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

3.2 部署脚本

oracle用户进入/home/oracle/scripts/src目录,编辑脚本:

$ cd /home/oracle/scripts/src
$ vi expdp_schemas.sh

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

#!/bin/bash#environment variablesexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'DBNAME=orcl
SCP_BASE=/home/oracle/scripts
LOG_BASE=/home/oracle/scripts/log
DMP_LOGDIR=${LOG_BASE}/expdp
DMP_BASE=/expdpif [ -f $HOME/.bash_profile ];
thenexport ORAENV_ASK=NO. $HOME/.bash_profile
fi# commandDATE=`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\'\)\"# compressCURENTDIR=${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}# deleted 7 days ago filesfind /expdp -type f -name "*.tar.gz" -mtime +7 -exec rm -f {} \;

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

$ chmod +x expdp_schemas.sh

4 脚本试运行

4.1 执行脚本

$ cd /home/oracle/scripts/src
$ ./expdp_schemas.sh

image.png

4.2 检查备份日志

$ tail -20 /home/oracle/scripts/log/expdp/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 /home/oracle/scripts/src/expdp_schemas.sh >/dev/null 2>&1

每天凌晨1点执行一次。

相关文章:

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

1 说明 从Oracle10g开始,引入了数据泵(Data Pump),是一种高效的数据传输工具,它通过导出(Export)和导入(Import)的方式帮助用户迁移数据。 在Oracle的产品设计中&#…...

Python范例总结

一、基础功能 1、操作符 and 拥有更高优先级,会先行运算。优先级顺序为 NOT、AND、OR。 2、列表 1)列表拼接 l1 [1,2,3] l2 [4,5,6]# 方法1 # l1 l1 l2# 方法2 # l1[len(l1):len(l1)] l2# 方法3 l1.extend(l2) print(l1) 3、函数 1)范…...

若依生成主子表

一、准备工作 确保你已经部署了若依框架,并且熟悉基本的开发环境配置。同时,理解数据库表结构对于生成代码至关重要。 主子表代码结构如下(字表中要有一个对应主表ID的字段作为外键,如下图的customer_id) -- ------…...

dotnet4.0编译问题

因为最近在写cobaltstrike的execute-assembly内存加载的c#项目 用visual studio2022编译,最低net只能用6.0版本的,并且execute-assembly不支持 我想使用4.x版本进行编译,因为visual studio不支持,那么使用命令行进行编译 因为要用…...

研一奖学金计划2024/9/23有感

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、需要认真上课的1.应用数理统计(开卷考试)2.最优化方法(开卷考试)3.跨文化交际(主题演讲20课堂讨…...

html知识点框架

一、HTML基础 HTML简介 HTML是一种超文本标记语言&#xff0c;用于创建网页和网页应用。HTML5是公认的下一代Web语言&#xff0c;极大地提升了Web在富媒体、富内容和富应用等方面的能力。HTML基本结构 基本的HTML文档结构包括<!DOCTYPE html>, <html>, <head&g…...

SpringBoot的应用

目录 一、springboot的应用 1、创建springboot项目 2、乱码问题配置 3、springboot日志配置 4、springboot整合mybatis 二、配置文件讲解及测试 1、全局配置文件参数读取 1.1 全局配置文件的位置 1.2 配置文件的读取 1.2.1 导包 1.2.2 编写配置对象Bean 1.2.3 编写配置文件 1.2…...

Spring源码学习:SpringMVC(3)mvcannotation-driven标签解析【RequestMappingHandlerMapping生成】

目录 前言mvc:annotation-driven标签概述mvc:annotation-driven标签解析【RequestMappingHandlerMapping生成】AnnotationDrivenBeanDefinitionParser#parse &#xff08;解析入口&#xff09;RequestMappingHandlerMapping的实例化类图afterPropertiesSetAbstractHandlerMetho…...

2024 Redis 全部

1. 单机部署 1.1 检查环境&#xff0c;创建目录。 # 本地运行&#xff0c;不需要考虑安装的原因&#xff0c;可以卸载防火墙 # 关闭防火墙 systemctl stop firewalld.service# 查看防火强状态 firewall-cmd --state# redis 是基于gcc 环境的&#xff0c;查看是否有 gcc 环境 …...

[SDX35+WCN6856]SDX35 + WCN6856 WiFi可以up起来之后无法扫描到SSID

SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…...

VisualStudio如何卸载Resharper插件?

本来按理说&#xff0c;卸载插件应该就是在扩展下的已安装插件中&#xff0c;找到该插件&#xff0c;点一下就会出现卸载的按钮的。 没想到这个Resharper这么吊&#xff0c;卸载按钮居然是个灰色的&#xff0c;意思就是此路不通&#xff0c;有特权的。 那么这种情况下&#x…...

Unity Debug时出现请选择unity实例

Unity Debug时出现请选择unity实例 问题描述 出现请选择unity实例&#xff0c;并且选择框里为空。 出现原因 你打开了两个Unity工程&#xff0c;在附加时&#xff0c;不知道加在哪个Unity工程上。 解决方法 在调试窗口中点击“附加Unity调试程序”&#xff0c;然后在弹出…...

国庆出行新宠:南卡Pro5骨传导耳机,让旅途不再孤单

国庆长假即将来临&#xff0c;对于热爱旅行和户外运动的朋友们来说&#xff0c;一款适合旅行使用的耳机无疑是提升旅途体验的神器。今天&#xff0c;我要向大家推荐一款特别适合国庆出行的耳机——南卡Runner Pro5骨传导耳机。作为一名热爱旅游的体验者&#xff0c;我强烈推荐南…...

2024.09.18 leetcode 每日一题

二进制求和 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 https://leetcode.cn/problems/add-binary/description/ 代码一&#xff0c;尝试使用笨办法&#xff0c;会造成溢出 class Solution { public:string addBinary(string a, string …...

快递物流短信API接口代码

官网&#xff1a;快递鸟 API参数 用户信息类 一.短信模版 1.接口说明 使用快递鸟短信功能时&#xff0c;预先设置好短信模板和对应的发送规则&#xff0c;快递鸟短信API将根据设置的好的模板和规则&#xff0c;进行短信的发送和反馈。 (1)仅支持Json格式。 (2)请求指令810…...

人工智能-机器学习-深度学习-分类与算法梳理

目前人工智能的概念层出不穷&#xff0c;容易搞混&#xff0c;理清脉络&#xff0c;有益新知识入脑。 为便于梳理&#xff0c;本文只有提纲&#xff0c;且笔者准备仓促&#xff0c;敬请勘误&#xff0c;不甚感激。 请看右边目录索引 。 人工智能 三大派系 符号主义(Symbolists…...

Xinference:深度学习模型推理与优化指南

目录 1. 什么是 Xinference&#xff1f; 2. 使用 Xinference 进行模型推理 2.1 安装 Xinference 2.2 模型推理示例 3. 提高模型推理的效率和性能 3.1 模型量化 3.2 并行处理 3.3 批量处理 4. 启用网页端&#xff08;如果支持&#xff09; 5. 在 CPU 中的注意事项 6. …...

Windows 2003系统的防护技巧,禁止IPC$空连接

一、修改管理员帐号和新建“陷阱”帐号 多年以来&#xff0c;微软一直在强调建议重命名Administrator账号并禁用Guest账号&#xff0c;提高计算机的安全性。Windows Server 2003系统&#xff0c;Guest 账号是默认禁用的&#xff0c;管理员账号默认是Administrator&#xff0c;…...

Kubernetes 深入浅出系列 | 容器剖析之容器基本实现原理

一、容器基本实现原理 Docker 主要通过如下三个方面来实现容器化&#xff1a; ① 使用操作系统的 namespace 隔离系统资源技术&#xff0c;通过隔离 网络、PID 进程、系统信号量、文件系统挂载、主机名和域名&#xff0c;来实现在同一宿主机系统中&#xff0c;运行不同的容器&…...

【学习笔记】TLS/SSL握手

前言&#xff1a;本篇将介绍TLS握手的实际握手过程&#xff0c;TLS握手创建了Client和Server之间“被保护的通道”&#xff0c;2个单向通道用来保护批量数据的传输&#xff08;通过Confidentiality、Integrity和Authentication&#xff09;&#xff0c;一个通道是从Client到Ser…...

ESP32-TFT_eSPI.h文件的使用心得(包含画图相关函数)

目录 前言 环境&#xff1a;arduino 芯片&#xff1a;ESP32 一、Arduino中的使用 #include <TFT_eSPI.h> TFT_eSPI tft TFT_eSPI();tft.init();//初始化tft.setRotation(0); //屏幕旋转方向tft.fillScreen(TFT_BLACK);//底色tft.setTextSize(2); …...

vite分目录打包以及去掉默认的.gz 文件

1.vite打包情况介绍&#xff1a; 1.1vite在不进行任何配置的情况下&#xff0c;会将除开public的所有引用到资源打包编译添加哈希值至assets文件夹中&#xff08;非引用文件以及行内样式图片未被打包编译资源会被treeSharp直接忽略不打包&#xff09;&#xff0c;     1.2w…...

Tensorflow 2.0 cnn训练cifar10 准确率只有0.1 [已解决]

cifar10 准确率只有0.1 问题描述踩坑解决办法 问题描述 如果你看的是北京大学曹健老师的tensorflow2.0,你在class5的部分可能会遇见这个问题 import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.layers import Dense, Dropout,MaxPooling2D,Fla…...

828华为云征文 | 在华为云上通过Docker容器部署Elasticsearch并进行性能评测

目录 前言 1. 华为云X实例介绍及优势 1.1 柔性算力 1.2 vCPU和内存的灵活配比 1.3 成本效益与性能 2. 安装并运行 Docker 2.1 修改仓库配置文件 2.2 安装 Docker 2.3 启动 Docker 3. 使用Docker部署Elasticsearch 3.1 拉取Elasticsearch镜像 3.2 启动Elasticsearch…...

生态位模型降重创新专题系列【2025

本内容旨在丰富最大熵模型的分析内容&#xff0c;并针对目前文章存在的问题&#xff1a;&#xff08;1&#xff09;分析内容单一&#xff0c;重复度高和查重率高&#xff0c;&#xff08;2&#xff09;建模流程过于简单&#xff0c;结果可信度评估方法过于单一等&#xff1b;推…...

LeetCode234. 回文链表(2024秋季每日一题 26)

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;hea…...

项目(石头剪刀布游戏双循环)

while (true) { #region 猜拳游戏主题逻辑 // 定义猜拳次数 int count 3; //定义用户赢得次数 int winCount 0;// 初始值为零表示用户一次没饿赢 int sysCou…...

Linux 进程3

进程地址空间 CPU读取数据都需要地址&#xff0c;在计算机中所有东西都是一种数据&#xff0c;包括我们的进程。 这是一个进程空间示意图&#xff0c;操作系统通过task_struct结构体链表来管理每一个进程&#xff0c;结构体里面有一个指针指向操作系统为进程开辟的一段空间&am…...

R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析

随机森林作为一种集成学习方法&#xff0c;在处理复杂数据分析任务中特别是遥感数据分析中表现出色。通过构建大量的决策树并引入随机性&#xff0c;随机森林在降低模型方差和过拟合风险方面具有显著优势。在训练过程中&#xff0c;使用Bootstrap抽样生成不同的训练集&#xff…...

shell linux cut 切割字符串

shell linux 切割字符串 在Shell脚本中&#xff0c;可以使用内置的cut命令来切割字符串。cut命令主要有三个选项 -c、-f和-d&#xff0c;分别表示按字符、按字段和指定分隔符来切割字符串。 按字符切割&#xff1a; echo "Hello World" | cut -c 1-5 # 输出&#…...