Oracle 数据库备份方法
Oracle 数据库备份方法
在本文中,我们将探讨如何使用 Oracle 数据库的数据泵(Data Pump)工具进行完整数据库备份以及单用户数据备份。此外,我们还将介绍使用传统的 exp 和 imp 工具进行备份的方法。这些方法涉及创建备份目录、执行备份、压缩备份文件以及设置定时任务以自动化备份过程。
1. 环境准备
首先,需要以 oracle 用户登录并创建一个用于存放备份文件的目录:
su - oracle
mkdir /home/oracle/oracle_backup
接着,登录到 SQL*Plus 并创建一个 Oracle 目录对象,该对象指向之前创建的备份目录,并授予系统用户对该目录的读写权限:
sqlplus / as sysdba
create or replace directory dumpdir as '/home/oracle/oracle_backup';
grant read,write on directory dumpdir to sys;
exit
2. 执行完整数据库备份
使用 Oracle 的数据泵工具 expdp 执行完整数据库备份。以下命令将备份整个数据库到指定的目录中,并生成相应的日志文件:
expdp 'sys/qweqwe123@orcl AS SYSDBA' FULL=Y DIRECTORY=dumpdir DUMPFILE=full_db_%U.dmp LOGFILE=full_db.log
3. 执行单用户数据备份
若需备份特定用户的数据,可以使用 expdp 工具的 SCHEMAS 选项。以下命令备份用户 example_user 的所有数据:
expdp 'sys/qweqwe123@orcl AS SYSDBA' SCHEMAS=example_user DIRECTORY=dumpdir DUMPFILE=user_%U.dmp LOGFILE=user.log
4. 使用 exp 和 imp 工具备份
对于较旧的 Oracle 版本或特定需求,可以使用 exp 工具进行备份:
exp sys/qweqwe123@orcl AS SYSDBA FILE=full_db.dmp FULL=Y LOG=exp_full_db.log
恢复时,可以使用 imp 工具:
imp sys/qweqwe123@orcl AS SYSDBA FILE=full_db.dmp FULL=Y LOG=imp_full_db.log
5. 自动化备份脚本
为了自动化备份过程,我们创建一个 shell 脚本,该脚本不仅执行备份,还压缩备份文件并清理旧的备份文件。以下是脚本的内容:
#!/bin/bash
# Author: lyz
# Set date format
dat=$(date +%Y-%m-%d_%H-%M)
# Run expdp for full database backup
expdp 'sys/qweqwe123@orcl AS SYSDBA' FULL=Y DIRECTORY=dumpdir DUMPFILE=full_db_${dat}_%U.dmp LOGFILE=full_db_${dat}.log
# Change to backup directory
cd /home/oracle/oracle_backup
# Compress the dump files
tar czvf full_db_${dat}.tar.gz full_db_${dat}_*.dmp full_db_${dat}.log
# Remove uncompressed dump files and log
rm -f full_db_${dat}_*.dmp
rm -f full_db_${dat}.log
# Remove old backup files older than 30 days
find /home/oracle/backup -maxdepth 1 -ctime +180 -type f -name 'full_db_*.tar.gz' | xargs rm -rf
6. 定时任务设置
为确保数据库定期备份,我们通过 cron 定时任务每周六凌晨2点自动执行备份脚本:
0 2 * * 6 su - oracle -c "/home/oracle/backup.sh"
通过以上步骤,我们可以确保 Oracle 数据库的数据安全,同时通过自动化脚本减少日常管理工作的负担。