以下是实现步骤的完整攻略:
1.准备工作
- 确认所需要备份的数据库的SID和Oracle实例名称
- 创建备份目录,以存放备份文件
- 检查服务器是否已经安装了需要的压缩工具(如gzip、tar等)
2.添加定时备份脚本
- 创建一个shell脚本,并命名为backup.sh。
- 在脚本中启动Oracle实例,使用expdp命令将数据库导出并压缩到备份目录下。
- 关闭Oracle实例。
以下是一个备份脚本的示例代码:
#!/bin/bash
export ORACLE_SID=<database_sid>
export ORACLE_HOME=<path_to_oracle_home>
export PATH=$ORACLE_HOME/bin:$PATH
# 日期和时间
now="$(date +'%Y_%m_%d_%H_%M_%S')"
# 备份存放目录
backup_dir="<path_to_backup_directory>"
# Oracle用户和密码
user="<user>"
pass="<password>"
# 备份文件名
file_name="<database_sid>_backup_${now}.dmp"
# 导出并压缩数据
expdp $user/$pass directory=DATA_PUMP_DIR dumpfile=$file_name compress=y
# 关闭Oracle实例
sqlplus "/ as sysdba" << EOF
shutdown immediate;
exit;
EOF
3.设置定时任务
- 执行以下命令打开系统的定时任务配置文件:
sudo crontab -e
- 在文件末尾添加以下行来设置定时任务:
0 2 * * * sh /path/to/backup.sh > /dev/null 2>&1
其中,0 2 * * * 表示每天2点执行备份任务。"/path/to/backup.sh" 是指备份脚本所在的路径。"> /dev/null 2>&1" 表示备份日志不输出到屏幕上。
示例1
以下示例演示如何备份一个名为"mydb"的Oracle数据库:
- 确认数据库的SID为"mydb",Oracle实例的名称为"orcl"
- 创建备份目录,例如:/backup/mydb
- 检查服务器是否安装了必要的压缩工具,例如tar和gzip。
- 创建备份脚本backup.sh,将以下代码粘贴进去:
```#!/bin/bash
export ORACLE_SID=mydb
export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
日期和时间
now="$(date +'%Y_%m_%d_%H_%M_%S')"
备份存放目录
backup_dir="/backup/mydb"
Oracle用户和密码
user="
pass="
备份文件名
file_name="mydb_backup_${now}.dmp"
导出并压缩数据
expdp $user/$pass directory=DATA_PUMP_DIR dumpfile=$file_name compress=y
关闭Oracle实例
sqlplus "/ as sysdba" << EOF
shutdown immediate;
exit;
EOF
5. 保存备份脚本,并授予可执行权限:
chmod +x backup.sh
6. 执行以下命令打开系统的定时任务配置文件:
sudo crontab -e
7. 在文件末尾添加以下行来设置定时任务:
0 2 * * * sh /path/to/backup.sh > /dev/null 2>&1
8. 保存文件并关闭编辑器。
## 示例2
以下示例演示如何备份具有多个表空间的Oracle数据库:
1. 确认数据库的SID为"mydb",Oracle实例的名称为"orcl"
2. 创建备份目录,例如:/backup/mydb
3. 检查服务器是否安装了必要的压缩工具,例如tar和gzip。
4. 创建备份脚本backup.sh,将以下代码粘贴进去:
```#!/bin/bash
export ORACLE_SID=mydb
export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
# 日期和时间
now="$(date +'%Y_%m_%d_%H_%M_%S')"
# 备份存放目录
backup_dir="/backup/mydb"
# Oracle用户和密码
user="<user>"
pass="<password>"
# 备份文件名
file_name="mydb_backup_${now}.dmp"
# 导出并压缩数据
expdp $user/$pass directory=DATA_PUMP_DIR dumpfile=$file_name compress=y \
schemas=<schema_name> include=TABLESPACE:tablespace_name, \
LOGFILE=expdp_backup.log
# 关闭Oracle实例
sqlplus "/ as sysdba" << EOF
shutdown immediate;
exit;
EOF
- 保存备份脚本,并授予可执行权限:
chmod +x backup.sh
-
使用逗号分隔符,指定您要备份的表空间。 可以备份一个或多个表空间。
-
执行以下命令打开系统的定时任务配置文件:
sudo crontab -e
- 在文件末尾添加以下行来设置定时任务:
0 2 * * * sh /path/to/backup.sh > /dev/null 2>&1
- 保存文件并关闭编辑器。
希望这些信息对您有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:oracle定时备份压缩的实现步骤 - Python技术站