Oracle定时导出dmp

#!/bin/sh
export ORACLE_BASE=/data/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/data/backup


date_now=$(date +%Y%m%d);

mkdir -p $DATA_DIR
echo "Starting bakup..."

expdp \''user/"pwd123456"'@192.168.1.1/orcl\' directory=dmp_dir schemas=FYAMY,FYFNB,FYGNQ,FYHQBJ,FYJHSY,FYRPT,FYSITE,FYSITE_BAK,FYSITE_DEL,FY_SELECT dumpfile=data`date +%Y%m%d_%H%M%S`.dmp logfile=logdata`date +%Y%m%d_%H%M%S`.log compression=data_only parallel=4

cd /data/backup
find . -mtime +1 -name "data*"  -exec rm -f {} \;

cd /data/backup
find . -mtime +1 -name "log*"  -exec rm -f {} \;

  

以下是对该 Bash Shell 脚本的代码解释:

```sh
#!/bin/sh
export ORACLE_BASE=/data/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2./db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/data/backup
```

- 第一行是指定脚本使用 `/bin/sh` 执行。
- 第 2-6 行是设置 Oracle 相关环境变量,即指定 Oracle 安装目录 (`ORACLE_BASE`),Oracle Home 目录 (`ORACLE_HOME`),Oracle SID (`ORACLE_SID`),Path环境变量 (`PATH`) 和备份数据存储目录 (`DATA_DIR`)。

```sh
date_now=$(date +%Y%m%d);

mkdir -p $DATA_DIR
echo "Starting bakup..."
```

- 第 8 行是获取当前日期并以 "YYYYMMDD" 的格式赋值给变量 `date_now`。
- 第 10 行是创建备份数据存储目录,使用 `-p` 选项会自动创建上级目录(即使上级目录不存在)。
- 第 11 行是输出提示语句,表示备份开始执行。

```sh
expdp \''user01e/"pwd123456"'@192.168.1.1/orcl\' directory=dmp_dir schemas=FYAMY,FYFNB,FYGNQ,FYHQBJ,FYJHSY,FYRPT,FYSITE,FYSITE_BAK,FYSITE_DEL,FY_SELECT dumpfile=data`date +%Y%m%d_%H%M%S`.dmp logfile=logdata`date +%Y%m%d_%H%M%S`.log compression=data_only parallel=4
```

- 第 13 行是使用 `expdp` 命令进行 Oracle 数据库导出备份,选项含义如下:
- `user01/"pwd123456"'@192.168.50.233/orcl'` 是用于连接目标数据库的字符串,包括用户名、密码、IP 地址和数据库名等;
- `directory=dmp_dir` 指定导出 DMP 文件的目录;
- `schemas` 是需要备份的数据库 schema 名称列表,以逗号分隔;
- `dumpfile` 选项用于指定导出 DMP 文件的名称,按日期和时间命名;
- `logfile` 选项用于指定导出日志文件的名称,按日期和时间命名;
- `compression=data_only` 选项指定以 Data Only 数据模式 (DMP) 进行压缩备份,不导出表定义模式或其他非数据模式;
- `parallel=4` 选项指定使用 4 个进程进行并行备份。

```sh
cd /data/backup
find . -mtime +1 -name "data*" -exec rm -f {} \;
```

- 第 18-19 行是用于清理旧备份文件,即若备份文件的最后修改时间距离当前时间已经超过 1 天,则删除该文件。`-mtime +1` 选项指定文件最后修改时间超过 1 天; `-name "data*"` 选项指定找到文件名以 "data" 开头的文件; `-exec rm -f {} \;` 选项是执行删除。

```sh
cd /data/backup
find . -mtime +1 -name "log*" -exec rm -f {} \;
```

- 第 22-23 行是用于清理旧备份日志文件,即若日志文件的最后修改时间距离当前时间已经超过 1 天,则删除该文件。

使用方法:

- 在 Linux 系统中使用文本编辑器(如 vim)创建备份脚本文件,例如 `oracle_backup.sh`。
- 给备份脚本文件添加执行权限:`chmod +x oracle_backup.sh`。
- 在终端提示符下运行脚本文件:`./oracle_backup.sh`。

  

posted @ 2023-04-04 17:27  LuckinAaron  阅读(96)  评论(0编辑  收藏  举报