让人做网站 需要准备什么,贵阳网站建设培训学校,网站的基本组成部分有哪些内容,哈尔滨做企业网站Oracle数据库#xff1a;使用 bash脚本 定时任务 自动备份数据 1、前言2、为什么需要自动化备份#xff1f;3、编写备份脚本4、备份脚本授权5、添加定时任务6、重启 crond / 检查 crond 服务状态7、备份文件检查 #x1f496;The Begin#x1f496;点点关注#xff0c;收… Oracle数据库使用 bash脚本 定时任务 自动备份数据 1、前言2、为什么需要自动化备份3、编写备份脚本4、备份脚本授权5、添加定时任务6、重启 crond / 检查 crond 服务状态7、备份文件检查 The Begin点点关注收藏不迷路 1、前言
在日常的系统管理工作中数据库的备份是至关重要的一环。针对 Oracle 数据库的备份我们可以编写 Bash 脚本来实现自动化备份操作从而简化数据库管理的流程保障数据的安全性和可靠性。
2、为什么需要自动化备份
数据库作为应用程序的核心数据存储包含了大量的重要信息例如用户数据、配置信息等。一旦数据库出现意外故障或数据丢失可能会给业务带来严重影响甚至损失。因此定期进行数据库备份并保证备份文件的安全存储是非常重要的。
手动备份存在诸多弊端例如容易出现疏忽、不及时等问题因此自动化备份成为了一个更好的选择。通过编写脚本实现自动备份可以提高效率、减少人为错误同时也能够更好地保障数据的安全。
3、编写备份脚本
创建备份数据保存目录和bash脚本保存目录。
在 /oracle/backup 目录下创建一个名为 data 的子目录用于保存备份数据
在同一目录下创建一个名为 bash 的子目录用于保存 bash 脚本文件。 mkdir -p /oracle/backup/data mkdir -p /oracle/backup/bash ##先安装 bzip2 压缩工具后面压缩备份文件用到或者你使用tar -cvzf 打包为.tar.gz格式也可以
yum install bzip2 注意先对/oracle/backup/data 目录进行授权要不会报错
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name /ORACLE/BACKUP/DATA is invalid解决
###切换oracle用户
su - oracle ###启动客户端进程
sqlplus /nolog ###以管理员登录
conn / as sysdba##在 Oracle 数据库中创建一个名为 dumpdir 的目录并将其路径设置为 /oracle/backup/data/。这样你就能够在数据库中通过目录别名 dumpdir 来引用该路径。create directory dumpdir as /oracle/backup/data/;##针对备份执行备份用户赋予read,write权限
grant read,write on directory dumpdir to zyl;备份脚本模板
#!/bin/shsource /home/oracle/.bash_profileexport ORACLE_BASE/u01/app/oracle
export ORACLE_HOME$ORACLE_BASE/product/12.2.0
export ORACLE_SIDorcl
export ORACLE_TERMxterm
export PATH$ORACLE_HOME/bin:/usr/sbin:$PATH:$HOME/bin
export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib
#export LANGC
export NLS_LANGAMERICAN_AMERICA.AL32UTF8# 以上代码为Oracle数据库运行账号oracle的系统环境变量设置必须添加否则crontab任务计划不能执行。# oracle用户的系统环境变量路径/home/oracle/.bash_profilecurrent_datedate %Y_%m_%d # 获取系统当前日期时间
days_to_keep90 # 设置删除90天之前的备份文件
db_server192.168.10.19:1521/ORCL # Oracle数据库服务器IP、端口、SID
backup_owneryour_username # 备份此用户下面的数据
backup_useryour_backup_user # 用此用户来执行备份必须要有备份操作的权限
backup_passwordyour_password # 执行备份的用户密码
backup_dir/oracle/backup/data # 备份文件路径需要提前创建好
backup_data$backup_owner_$current_date.dpdmp # 备份数据库名称
backup_log$backup_owner_$current_date.dplog # 备份执行时生成的日志文件名称
oracle_data_backup$backup_owner_$current_date.tar.bz2 # 最后保存的Oracle数据库备份文件cd $backup_dir # 进入备份目录
expdp $backup_user/$backup_password DIRECTORYdumpdir DUMPFILE$backup_data logfile$backup_log SCHEMAS$backup_owner VERSION11.2.0.1.0 ##注意这里的DIRECTORY值为数据库中创建的 dumpdir 目录
tar -cvjpf $oracle_data_backup $backup_data $backup_log # 压缩备份文件和日志文件
find $backup_dir -type f -name *.dplog -exec rm {} \; # 删除备份文件
find $backup_dir -type f -name *.dpdmp -exec rm {} \; # 删除日志文件
find $backup_dir -type f -name *.tar.bz2 -mtime $days_to_keep -exec rm -rf {} \; # 删除90天前的备份注意{} \中间有空格
cd 到/oracle/backup/bash vi 编写备份脚本如vi backup_oracle.sh。
查看oracle有关的环境变量
## Oracle 数据库软件的基础目录
echo $ORACLE_BASE##Oracle 数据库软件的安装目录
echo $ORACLE_HOME##可执行程序的路径
echo $PATH修改模板文件
#!/bin/shsource /home/oracle/.bash_profileexport ORACLE_BASE/u01/app/oracle
export ORACLE_HOME$ORACLE_BASE/product/11.2.0
export ORACLE_SIDorcl
export ORACLE_TERMxterm
export PATH$ORACLE_HOME/bin:/usr/sbin:$PATH:$HOME/bin
export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib
#export LANGC
export NLS_LANGAMERICAN_AMERICA.AL32UTF8# 以上代码为Oracle数据库运行账号oracle的系统环境变量设置必须添加否则crontab任务计划不能执行。# oracle用户的系统环境变量路径/home/oracle/.bash_profilecurrent_datedate %Y_%m_%d # 获取系统当前日期时间
days_to_keep90 # 设置删除90天之前的备份文件
db_server192.168.234.20:1521/ORCL # Oracle数据库服务器IP、端口、SID
backup_ownerzyl # 备份此用户下面的数据和模式名一样
backup_usersystem # 用此用户来执行备份必须要有备份操作的权限
backup_passwordZyl#123456 # 执行备份的用户密码
backup_dir/oracle/backup/data # 备份文件路径需要提前创建好
backup_data$backup_owner_$current_date.dpdmp # 备份数据库名称
backup_log$backup_owner_$current_date.dplog # 备份执行时生成的日志文件名称
oracle_data_backup$backup_owner_$current_date.tar.bz2 # 最后保存的Oracle数据库备份文件tar.bz2/.gz格式选一种即可cd $backup_dir # 进入备份目录
expdp $backup_user/$backup_password DIRECTORYdumpdir DUMPFILE$backup_data logfile$backup_log SCHEMAS$backup_owner VERSION11.2.0.1.0
tar -cvjpf $oracle_data_backup $backup_data $backup_log # 压缩备份文件和日志文件,.tar.bz2格式选一种即可#tar -cvzf $oracle_data_backup $backup_data $backup_log # 压缩备份文件和日志文件,.tar.gz格式find $backup_dir -type f -name *.dplog -exec rm {} \; # 删除备份文件
find $backup_dir -type f -name *.dpdmp -exec rm {} \; # 删除日志文件
find $backup_dir -type f -name *.tar.bz2 -mtime $days_to_keep -exec rm -rf {} \; # 删除90天前的备份注意{} \中间有空格 4、备份脚本授权
在添加定时任务之前需要确保脚本已经有可执行权限。可以使用chmod x 备份脚本 命令赋予脚本可执行权限。
chmod x /oracle/backup/bash/backup_oracle.sh5、添加定时任务
拓展
当设置定时任务时可以使用以下格式来详细定义时间
* * * * * 执行脚本绝对路径
- - - - -
| | | | |
| | | | ----- 星期几 (0 - 7) (星期天可以用0或7表示)
| | | ------- 月份 (1 - 12)
| | --------- 日期 (1 - 31)
| ----------- 小时 (0 - 23)
------------- 分钟 (0 - 59)通过这五个字段的组合可以精确地定义定时任务执行的时间。例如30 2 * 1-5 表示在周一到周五的凌晨2点30分执行任务。
0 20 * * 1,3,5 表示在周一、周三、周五的晚上8点执行任务。
0 * * * * 表示每分钟执行一次任务。
0 3 * * * 表示每天凌晨3点执行任务。
0 4 1 * * 表示每月的第一天凌晨4点执行任务。
根据具体的需求可以灵活地调整定时任务的时间设置。
为脚本添加定时任务可以实现自动备份以下是添加定时任务的步骤
打开终端窗口输入crontab -e命令编辑当前用户的定时任务配置文件。
crontab -e在文件中添加如下一行注意是脚本的绝对路径表示每天凌晨3点执行备份
0 3 * * * /oracle/backup/bash/backup_oracle.sh如果出现下面报错
UDE-00013: Message 13 not found; No message file for productRDBMS, facilityUDE
UDE-00019: You may need to set ORACLE_HOME to your Oracle software directory是因为指定的ORACLE_HOME没有生效。
如果是直接用expdp命令执行执行前先做一次 source /home/oracle/.bash_profile 。
如果是使用shell脚本调度执行需要在shell脚本中再次声明赋值 ORACLE_HOME、ORACLE_SID 变量因为shell脚本调度的时候使用的是 全局环境变量 /etc/profile。
如果频繁使用shell执行Oracle命令可以把这些配置参数刷新到 /etc/profile 中。如果没有设定ORACLE_HOME、ORACLE_SID在调度shell命令的时候会报错 UDE-00013、UDE-00019
解决
1、su root
vi /etc/profile 末尾加上如下配置
####添加内容
# use for oracleunset TNS_ADMIN
export ORACLE_BASE/u01/app/oracle
export ORACLE_HOME$ORACLE_BASE/product/11.2.0export ORACLE_SIDorclexport PATH$PATH:$HOME/bin:$ORACLE_HOME/binexport LD_LIBRARY_PATH$ORACLE_HOME/lib:/usr/lib
#防止Oracle安装界面乱码先把语言环境改为英文
export LANGen_USif [ $USER oracle ];thenif [ $SHELL /bin/ksh ];thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fifi 2、使配置文件生效:
source /etc/profile6、重启 crond / 检查 crond 服务状态
#重启
systemctl restart crond#服务状态查看
systemctl status crond7、备份文件检查 The End点点关注收藏不迷路