HTTP 狀態消息
734
2025-04-01
作為企業應用的核心數據庫,備份必不可少;如果單位預算多的,可以考慮直接上專業的備份軟件(NetBackup、CommVault等均可),預算不多的話,也可以像我一樣,通過oracle數據庫自帶的RMAN工具,來實現自動備份;
以下為我司ERP系統的配置過程,以及備份策略,以此記錄以備參考;
關于備份策略,因為企業ERP的備份數據量并不大,所以只定義兩級策略,策略如下:
另外,根據業務人員的要求,數據庫備份保留策略為14天,如下所示:
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name OADB are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/app/product/11.2.0/dbhome_1/dbs/snapcf_oadb.f'; # default
RMAN>
# 注:控制文件的備份,在備份腳本內定義;
備份的自動周期性執行,則是通過Linux系統自動的Crontab服務來實現:
# 確保crond服務運行,且開機自動啟動:
# systemctl start crond && systemctl enable crond
# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-01-22 12:15:28 CST; 1 years 0 months ago
Main PID: 1679 (crond)
CGroup: /system.slice/crond.service
└─1679 /usr/sbin/crond -n
Jan 22 12:15:28 ly-eims-web-01 systemd[1]: Started Command Scheduler.
Jan 22 12:15:28 ly-eims-web-01 crond[1679]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 5% if used.)
Jan 22 12:15:28 ly-eims-web-01 crond[1679]: (CRON) INFO (running with inotify support)
# 以下定義全量備份為周日執行,增量備份為周一到周六執行:
# 注:crontab的定義,在oracle用戶環境內配置;
$ crontab -l
0 3 * * 0 /dbbackup/ltdb/scripts/cron_full_oadb.sh
0 3 * * 1-6 /dbbackup/ltdb/scripts/cron_incr_oadb.sh
# 此處嵌套了一層,將備份腳本的所有輸出,重定向到磁盤日志文件,以備后查:
$ more /dbbackup/ltdb/scripts/cron_full_oadb.sh
/dbbackup/ltdb/scripts/full_oadb.sh >> /dbbackup/ltdb/backuplog/full_oadb/full_oadb_`date +%Y%m%d-%H%M%S`.log
$ more /dbbackup/ltdb/scripts/cron_incr_oadb.sh
/dbbackup/ltdb/scripts/incr_oadb.sh >> /dbbackup/ltdb/backuplog/incr_oadb/incr_oadb_`date +%Y%m%d-%H%M%S`.log
$ more /dbbackup/ltdb/scripts/full_oadb.sh
echo -e '******Start********_'$(date '+%Y%m%d%H%M%S')
export ORACLE_SID=oadb
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=/oracle/app/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target sys/oracle@oadb< run{ allocate channel c1 type disk; backup as compressed backupset incremental level 0 tag 'oadb_incr_L0' format '/dbbackup/ltdb/oadb/full_%d_%T_%s' database include current controlfile; backup as compressed backupset archivelog all format '/dbbackup/ltdb/oadb/arclog_0_%s_%p_%t_%d' delete input; crosscheck backup; delete noprompt expired backup; delete noprompt obsolete; crosscheck archivelog all; delete noprompt expired archivelog all; release channel c1; } exit; EOF 說明: 1. 數據庫的備份目錄(/dbbackup/ltdb/oadb/)需要事先創建好; 2. 本次實施,備份目錄/dbbackup,使用的是華為云上的 sfs 彈性文件服務掛載的目錄,執行備份前,需要先掛載好 sfs文件系統,并配置好oracle用戶權限; $ more /dbbackup/ltdb/scripts/incr_oadb.sh echo -e '******Start********_'$(date '+%Y%m%d%H%M%S') export ORACLE_SID=oadb export ORACLE_BASE=/oracle/app export ORACLE_HOME=/oracle/app/product/11.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH rman target sys/oracle@oadb < run{ allocate channel c1 type disk; backup as compressed backupset incremental level 1 tag 'oadb_incr_L1' format '/dbbackup/ltdb/oadb/incr_%d_%T_%s' database include current controlfile; backup as compressed backupset archivelog all format '/dbbackup/ltdb/oadb/arclog_1_%s_%p_%t_%d' delete input; crosscheck backup; delete noprompt expired backup; delete noprompt obsolete; crosscheck archivelog all; delete noprompt expired archivelog all; release channel c1; } exit; EOF 如上,rman的備份操作配置完成! Oracle 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。