資料庫的字符集必須和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就不能...