Linux下Oracle設定定時任務備份資料庫

2021-09-29 20:05:48 字數 2593 閱讀 1220

資料庫的字符集必須和linux下設定的環境變數一致,不然會有亂碼。

以下兩個sql語句都可以查到:

select * from nls_database_parameters t where t.parameter='nls_characterset';

select * from v$nls_parameters where parameter='nls_characterset';

查詢結果為:nls_characterset al32utf8

建立備份資料的目錄 mkdir -p /home/oracle/dbbak/data

建立備份指令碼目錄 mkdir -p /home/oracle/dbbak/shell

建立匯出資料日誌目錄 mkdir /home/oracle/dbbak/log

vi /home/oracle/dbbak/shell/dbbak.sh

指令碼中內容:

#[plain]view plaincopy

#!/bin/sh

export oracle_home=$oracle_base/product/11.2.0/dbhome_1

export oracle_sid=orcl

export path=$path:$home/bin:$oracle_home/bin

export data_dir=/home/oracle/dbbak/data

export logs_dir=/home/oracle/dbbak/log

export deltime=`date -d "30 days ago" +%y%m%d`

export bakuptime=`date +%y%m%d%h%m%s`

export nls_lang=american_america.al32utf8

mkdir -p $data_dir

mkdir -p $logs_dir

echo "starting bakup..."

echo "bakup filepath$data_dir/$bakuptime.dmp"

exp user/pwd@orcl file=$data_dir/orcl$bakuptime.dmp log=$logs_dir/orcl$bakuptime.log

echo "delete the file bakup before 30days...filepath: $data_dir/orcl$deltime*.dmp "

rm -rf $data_dir/orcl$deltime*.dmp

rm -rf $logs_dir/orcl$deltime*.log

echo "delete the file bakup successfully."

echo "bakup completed."

export deltime=`date -d "30 days ago" +%y%m%d`  配置保留資料的時間,這裡是保留30天,根據自己需要和伺服器的儲存空間進行相應的修改即可;

export nls_lang=american_america.al32utf8  字元編碼格式,需跟第一步查詢中結果保持一致;

exp display/display@orcl file=$data_dir/orcl$bakuptime.dmp log=$logs_dir/orcl$bakuptime.log

匯出語句,全表匯出,可以根據需要修改,exp 使用者名稱/密碼@sid file=dmp檔案全路徑 log=日誌檔案全路徑

chmod 777 dbbak.sh  

測試是否可以執行:./ dbbak.sh

export terminated successfully without warnings.表示匯出沒有問題,如果有問題,解決

在oracle使用者下

crontab –e

插入:59 23 * * * /home/oracle/dbbak/shell/dbbak.sh

表示每天的23點59分執行指令碼

重啟crond:

service crond restart 

匯入前需刪除相應使用者下的所有表,避免匯入後表資料出現問題:

sqlplus user/pwd   // 使用者名稱密碼登入資料庫

sql> select 'drop table ' || table_name || ';' from user_tables order by table_name;

然後執行查詢出來的結果

執行此行,避免表字段注釋亂碼 :	

export nls_lang=american_america.al32utf8;

匯入資料:

imp display/display file=/home/oracle/dbbak/data/orcl20191121113703.dmp fromuser=display touser=display ignore=y;

// ignore=y 忽略錯誤,繼續執行

Linux下Oracle設定環境變數

2013 02 19 linux下oracle設定環境變數 需要設定oracle home和oracle sid兩個環境變數,再把oracle的bin目錄新增到path中即可,通常預設安裝的情況下oracle sid orcl,oracle home home oracle oracle produ...

Linux下Oracle設定開機自啟動的方法

用root使用者 在 etc init.d 目錄下建立oracle的服務檔案 cd etc init.d vi oracle11g 新增內容如下 123 4567 891011 1213 1415 1617 18 bin bash chkconfig 345 99 10 description st...

linux下oracle解除安裝

直接刪除就可以,如果要再次安裝,最好先做一些備份工作。1.使用sql plus停止資料庫 2.停止listener 3.用su或者重新登入到root 4.將oracle安裝目錄刪除 5.刪除tmp下ora開頭的檔案 6.將 usr local bin下的檔案刪除 刪除這三個檔案後,oracle就不能...