###ORCLPDB1 是我的pdb名,替换为你的pdb名字 alter session set container=ORCLPDB1 ; ###创建目录 '/opt/oracle/oradata/backup' 替换为你的实际文件目录 create or replace directory backdir as '/opt/oracle/oradata/backup' ###授权给你的用户 test替换为你用的用户 grant read , write on directory backdir to test ;
  1. 验证是否可以连接
expdp test/testpwd@127.0.0.1/orclpdb1 directory=backdir  schemas=test dumpfile=test20230715.dmp logfile=test20230705.log

4.执行成功后编写脚本(脚本目录不要放在directory指定的目录下,30天后自己把自己删了,惨痛教训)

vim backupOracle.sh
#!/bin/bash
DATE=$(date +%Y%m%d)
echo 'Oracle backup...'
expdp test/testpwd@127.0.0.1/orclpdb1 directory=backdir  schemas=test dumpfile=test"$DATE".dmp logfile=test"$DATE".log
echo 'Oracle backup successfully.'
echo 'remove...'
####删除创建时间大于30天的文件,目录注意与第二步中的实际目录路径
directory="/opt/oracle/oradata/backup"
days=30 
find "$directory" -type f -mtime +$days -exec rm {} \;
echo 'remove successsfully.'
crontab -e 
0 1 * * * /bin/bash /opt/oracle/oradata/backup/backupOracle.sh
##保存退出后查看定时任务
crontab -l

###在docker环境中运行crontab -e 可能会出现

no crontab for oracle - using an empty one
/bin/sh: /usr/bin/vi: No such file or directory
crontab: "/usr/bin/vi" exited with status 127

先单独运行vi ,如果没问题,执行下面两句

 echo "export EDITOR=vim" >> ~/.bashrc
 source ~/.bashrc
                                    1.配置PDB tns,注意如果是rac,这个备份应该只写当前节点ip。如果是写scanip 可能会连接到其他节点,从而报无权限的问题。配置好tnsping 一下 确认都可以正常连通。2.连接到各个pdb 创建专门的备份用户。创建用户 和备份目录 并赋权。3.统一的多pdb备份脚本。
                                    下载oracle19c
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
找到对应版本下载  然后上传到服务器/opt目录下
进入opt目录
下载依赖包:
wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86
                                    19c中采用全局用户,必需用C##开头,导入导出类似。19C中不开启PDB,直接在CDB中导入用户库。保存成bat文件,在window计划任务中添加任务,定时执行备份