相信大家在客戶現場維護的時候一定會適時地做一些備份操作,對關鍵業務建立完備的備份機制,本篇文章就是給大家一個linux環境下的參考。
一、 用imp/exp實現資料的匯入匯出
(一)環境配置
1.執行環境:
exp/imp可以在客戶端執行也可以在伺服器端執行,在客戶端執行需要先安裝有oracle的客戶端,如果是linux系統,就是以oracle使用者登入,在控制檯下執行。
2.如果沒有配置oracle的exp/imp命令的環境變數,則進入到oracle的bin目錄:
# cd /opt/oracle_11/app/oracle/product/11.2.0/dbhome_1/bin
3.配置臨時環境變數:
# export ORACLE_HOME="/opt/oracle_11/app/oracle/product/11.2.0/dbhome_1"
# export ORACLE_SID=glassfish
4.切換到oracle使用者
# su oracle
(二)exp/imp方式的匯入匯出
注意:
紅色標記部分為可按需求修改部分。
二、 資料泵實現資料匯入匯出的步驟
注意:
紅色標記部分為可按需求修改部分,匯出部分表時可在"Expdp [使用者名稱A]/[密碼]@[資料庫名]"後跟"TABLES=需要匯出的部分表的表名"。
三、 Linux環境下資料泵實現手動及自動備份
(一)建立指令碼檔案
命令格式: touch 路徑/檔名.sh
例如:
輸入命令:touch /home/backup.sh
(二)寫備份指令碼
首先進入指令碼:vi命令
vi /home/backup.sh
在指令碼內寫入:
(三)執行指令碼檔案
文字框: #! /bin/shexport NLS_LANG="AMERICAN_AMERICA".UTF8export ORACLE_BASE=/home/oracle/appexport ORACLE_HOME=/home/oracle/app/product/11g/db_1export ORACLE_SID=orclexport PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin#設定備份檔案格式#設定刪除備份檔案的格式,當前為刪除1個月前的備份backuptime=`date +"%Y%m%d%H"`deletetime=`date -d "7 day ago" +"%Y%m%d%H"`#開始刪除1個月前的備份rm -f /home/oracle/backup/orcl_$deletetime.dmprm -f /home/oracle/backup/orcl_$deletetime.log#開始備份expdp system/oracle@orcl file=/home/oracle/backup/system_$backuptime.dmp log=/home/oracle/backup/system_$backuptime.log schemas=systemexpdp system/oracle@orcl file=/home/oracle/backup/system_$backuptime.dmp log=/home/oracle/backup/system_$backuptime.log schemas=system
1、手動執行指令碼檔案
命令格式:sh 路徑/檔名.sh
例如:sh /home/backup.sh
2、定時自動執行指令碼
(1)安裝crond
如果沒有安裝crond服務就先裝上服務。
檢查服務狀態:service crond status
(2)修改crontab內容
輸入命令:crontab –e
進入後繼續輸入命令:0 0 /7 * /home/backup.sh
設定為每7天執行一次指令碼檔案
然後,儲存退出:wq
sh指令碼前面五個欄位分別表示分鐘(0-59)、小時(0-23)、日(1-31)、月(0-12)、星期幾(0-6)後面的為指令碼所在目錄
3. 重新啟動crond服務
輸入命令:service crond restart
注意:
紅色標記部分為可按需求修改部分。
四、 Linux環境下exp實現手動及自動備份
(一)建立指令碼檔案
命令格式: touch 路徑/檔名.sh
例如:
輸入命令:touch /home/backup.sh
(二)寫備份指令碼
1、首先進入指令碼:vi命令
vi /home/backup.sh
文字框: #!/bin/bashexport ORACLE_BASE=/u01/app/oracle --Oracle安裝目錄,可自定義export ORACLE_SID=ORCL --Oracle例項名,可修改export ORACLE_HOME=$ORACLE_BASE/11.2.0/db_1export PATH=$PATH:$ORACLE_HOME/binexport NLS_LANG=American_America.ZHS16GBKexport BAKUPTIME=`date +%Y%m%d%H%M%S` --定義當前系統時間變數export DATA_DIR=/home/oracle/backup/datas/$BAKUPTIME --定義資料備份目錄export TAR_DIR=/home/oracle/backup/tars/$BAKUPTIME --定義資料打包目錄mkdir -p $DATA_DIR --建立資料備份目錄mkdir -p $TAR_DIR --建立資料打包目錄cd $DATA_DIR echo "Starting bakup..."echo "Bakup file path $DATA_DIR/SCOTT_$BAKUPTIME.dmp"#備份資料庫SCOTT使用者exp scott/scott file=$DATA_DIR/SCOTT_$BAKUPTIME.dmp log=$DATA_DIR/SCOTT_$BAKUPTIME.logecho "Starting tar..."echo "Tar file path $TAR_DIR/SCOTT_$BAKUPTIME.tar.gz"#壓縮SCOTT備份資料檔案和日誌檔案tar -zcvf $TAR_DIR/SCOTT_$BAKUPTIME.tar.gz SCOTT*echo "Bakup file path $DATA_DIR/HR_$BAKUPTIME.dmp"
2、在指令碼內寫入:
(三)執行指令碼檔案
1、手動執行指令碼檔案
命令格式:sh 路徑/檔名.sh
例如:sh /home/backup.sh
2、定時自動執行指令碼
(1)安裝crond
如果沒有安裝crond服務就先裝上服務。
檢查服務狀態:service crond status
(2)修改crontab內容
輸入命令:crontab –e
進入後繼續輸入命令:每天23:30執行自動備份
30 23 * * * /home/oracle/backup/backup.sh
設定為每天23:30執行一次指令碼檔案
然後,儲存退出:wq
3. 重新啟動crond服務
輸入命令:service crond restart
注意:
紅色標記部分為可按需求修改部分。
-
1 #
拿這個東西做備份?只能說你的職業生涯時刻都是靠運氣在混著的。