Oracle 备份脚本

SUSE Linux与Oracle数据库备份策略详解
环境:SUSE linux 10sp2 + oracle 11gr1说明:小型库一般都是每周做一次全备,大型库每周也做一次全备外,周三做1级增量备份,然后每天晚上都做一次2级增量备份,归档日志每天分不同时段定时备份!
  小型库全备:run { # Hot database level 0 whole backup allocate channel t1 type disk;backup incremental level 0 skip inaccessible format '/backup/osedb_osedb01/data/back_%s_%p_%T_%d' #AS COMPRESSED backupset database plus archivelog format '/backup/osedb_osedb01/arch/arclogback_%s_%p_%t_%d' delete input;delete obsolete;release CHANNEL t1 ;}
  大库全备:oracle@subsdb1:~/bin/incre_bakup_cmd> cat backup_db_level0.cmd run { # Hot database level 0 whole backup allocate channel t1 type disk maxpiecesize=50G;allocate channel t2 type disk maxpiecesize=50G;allocate channel t3 type disk maxpiecesize=50G;backup as compressed backupset incremental level 0 tag 'subsdb_level0' skip inaccessible format '/backup/subsdb_subsdb1/data/bak_%d_%T_%s_%p_db_level0' #AS COMPRESSED backupset database plus archivelog format '/backup/subsdb_subsdb1/arch/arclogback_%s_%p_%t_%d' delete input;backup current controlfile format '/backup/subsdb_subsdb1/data/bak_%d_%T_%s_ctl.ctl';release channel t1;release channel t2;release channel t3;delete noprompt obsolete;} 1级增量备份:oracle@subsdb1:~/bin/incre_bakup_cmd> cat backup_db_level1.cmd run { # Hot database level 1 whole backup allocate channel t1 type disk maxpiecesize=50G;allocate channel t2 type disk maxpiecesize=50G;allocate channel t3 type disk maxpiecesize=50G;backup as compressed backupset incremental level 1 tag 'subsdb_level1' skip inaccessible format '/backup/subsdb_subsdb1/data/bak_%d_%T_%s_%p_db_level1' #AS COMPRESSED backupset database plus archivelog format '/backup/subsdb_subsdb1/arch/arclogback_%s_%p_%t_%d' delete input;backup current controlfile format '/backup/subsdb_subsdb1/data/bak_%d_%T_%s_ctl.ctl';release channel t1;release channel t2;release channel t3;delete noprompt obsolete;} 2级增量备份:oracle@subsdb1:~/bin/incre_bakup_cmd> cat backup_db_level2.cmd run { # Hot database level 2 whole backup allocate channel t1 type disk maxpiecesize=50G;allocate channel t2 type disk maxpiecesize=50G;allocate channel t3 type disk maxpiecesize=50G;backup as compressed backupset incremental level 2 tag 'subsdb_level2' skip inaccessible format '/backup/subsdb_subsdb1/data/bak_%d_%T_%s_%p_db_level2' #AS COMPRESSED backupset database plus archivelog format '/backup/subsdb_subsdb1/arch/arclogback_%s_%p_%t_%d' delete input;backup current controlfile format '/backup/subsdb_subsdb1/data/bak_%d_%T_%s_ctl.ctl';release channel t1;release channel t2;release channel t3;delete noprompt obsolete;}
  归档日志备份:cat backup_arch.cmd run { allocate channel t1 type disk;backup skip inaccessible format '/backup/osedb_osedb01/arch/arclogback_%s_%p_%t_%d' #AS COMPRESSED backupset(archivelog all delete input);delete obsolete;release CHANNEL t1 ;}

在Linux系统下配置Oracle备份脚本可以按以下步骤进行: ### 创建备份脚本 创建一个备份脚本文件,如`backup_database.sh`,并添加以下内容: ```bash #!/bin/bash # 设置Oracle环境变量 export ORACLE_HOME=/path/oracle/home export ORACLE_SID=your_SID export PATH=$ORACLE_HOME/bin:$PATH # 指定备份目录和文件名 backup_dir="/path/backup/directory" backup_file="$backup_dir/$(date +%Y%m%d)_database_backup.dmp" # 执行数据库备份 expdp username/password@database_name dumpfile=$backup_file full=y # 检查备份是否成功 if [ $? -eq 0 ]; then echo "数据库备份成功!" else echo "数据库备份失败!" fi ``` 需要将`/path/oracle/home`替换为实际的Oracle主目录,`your_SID`替换为实际的Oracle系统标识符,`username/password@database_name`替换为实际的数据库用户名、密码和数据库名,`/path/backup/directory`替换为实际的备份目录[^1]。 ### 赋予脚本执行权限 在终端中执行以下命令赋予脚本执行权限: ```bash chmod +x backup_database.sh ``` ### 设置定时任务(可选) 若要实现定时备份,可使用crontab。使用以下命令编辑crontab: ```bash crontab -e ``` 在打开的文件中添加定时任务。例如,每天凌晨2点执行备份脚本: ``` 0 2 * * * /path/to/backup_database.sh ``` 其中`0 2 * * *`表示每天凌晨2点执行,`/path/to/backup_database.sh`替换为脚本的实际路径。设置保存之后,输入以下命令让其生效: ```bash service crond restart ``` 这里时间的各字段含义为:0~59表示分,1~23表示小时,1~31表示日,1~12表示月份,0~6表示星期(其中0表示星期日)[^3]。 ### 其他示例 还有另一种备份示例,如在Linux下进行Oracle自动备份配置,命令如下: ```bash expdp c_yhpt_etl/c_yhpt_etl@192.168.77.102:1521/oradb DIRECTORY=expdp_dir dumpfile=yhjw%DATE%.dmp schemas=c_yhpt_etl compression=ALL logfile=yhjw%DATE%.log ``` 此命令可用于编写自动备份脚本,在Centos7等系统执行。需要将相关的用户名、密码、IP地址、数据库名等信息替换为实际值[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值