oraclelinux備份腳本
把下面的代碼保存為伺服器端的腳本,執行即可。PS:需要自己替換一下雙引號中的內容
#!/bin/sh
. $HOME/.bash_profile
export ORACLE_SID="你的資料庫的SID"
CutDATE=`date '+%Y-%m%d-%H%M'`
DATE=`date -d '-2 day' '+%Y-%m%d'`
export NLS_LANG="你的字元集設定"
exp "具有許可權的賬號"/"密碼" file=/home/oracle/2014/"你的資料庫的SID"_$CutDATE.dmp log=/home/oracle/2014/"你的資料庫的SID"_$CutDATE.log owner=user1,user2
B. 高分求助!誰給我解釋下這段linux中oracle備份腳本的意思,越詳細越好,謝謝了!!
您好,我剛接觸LINUX還沒有接觸到ORACLE去,我純粹說一下這個腳本,半斤八兩的嘎嘎。
ORACLE_HOME=/u/proct/oracle816; export ORACLE_HOME
LD_LIBRARY_PATH=/u/proct/oracle816/lib; export LD_LIBRARY_PATH
ORACLE_BASE=/u/proct; export ORACLE_BASE
ORACLE_SID=man; export ORACLE_SID
ORA_NLS33=/u/proct/oracle816/ocommon/nls/admin/data; export ORA_NLS33
PATH=$PATH:/u/proct/oracle816/bin; export PATH
CDPATH=$PATH:$ORACLE_HOME:/u; export CDPATH
NLS_LANG='traditional chinese_taiwan'.ZHT16BIG5; export NLS_LANG
#NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1;export NLS_LANG
NLS_DATE_FORMAT='DD-MM-YYYY HH24:MI:SS';export NLS_DATE_FORMAT
LD_ASSUME_KERNEL=2.4.0; export LD_ASSUME_KERNEL
這一段都是「;」前面聲明變數,「;」後輸出變數,輸出的目的是可以傳遞給下一級的腳本(子進程)。
alias rman='/u/proct/oracle816/bin/rman'
這個就是給/u/proct/oracle816/bin/rman取一個別名rman,其好處再簡單不過,名字太長當然希望用較短的代替很長的輸入了。
extfile=`date '+%w_%p_%H_%M'`
這也是聲明變數extfile,等號右邊是一個命令替換,比如現在是2007年4月29日星期天,15:55那麼這個extfile應該是0_PM_3_55 具體你看下date的MAN文檔就是了。
%w是參數week,它是用0-6來表示星期日-星期六
%p 它是指用12小時制來表示一天的時間的時候上午或者下午AM or PM
%H 小時
%M 分鍾
#rm -rf /www/exp/data/b735data*.*
這個是強制的刪除/www/exp/data/下的以b735data開頭並帶有任意後綴的文件。但是被#號注釋掉了,腳本里以#開頭的都是注釋。
exp foxmold/foxmold file=/www/exp/script/b735data.$extfile compress=y full=y log=n
這些是資料庫里的東西了我不懂你去搜下exp命令的用法吧。
mv /www/exp/script/b735data.$extfile /www/exp/data/.
Mv 移動文件的命令。
#rcp /exp/data/data.$extfile 10.160.6.42:/backup/apple_backup
同樣被注釋掉了,rcp是遠程復制命令。
sh DATAexport
執行腳本
重申因為我不懂oracle所以只純粹說這個腳本哦 呵呵。
C. linux環境下oracle資料庫冷備份問題
1. 復制舊的資料庫文件
(1) 用sqlPlus連接資料庫:sqlplus 用戶名/密碼 as sysdba
(2) 關閉DB :shutdown immediate;
(3) 復制文件到其他地方存儲實現備份
1)復制三個文件夾admin;oradata(datafile,controlfile,redo【註:數據文件, 控制文件,redo】);flash_recovery_area三個文件夾。2)dbhome_1下的內容database(PWDfile、pfile);dbs(spfile);NETWORK/ADMIN(listener.ora、tnsnames.ora)。
2. Oracle重新建庫恢復
(1)創建一個和原來一樣的資料庫。(安裝路徑和資料庫名必須和原來一致)
(2)停止資料庫shutdown immediate;
(3)復制安裝目錄下的admin、oradata、flash_recovery_area覆蓋,復制database(PWDfile、pfile) 覆蓋
(4)啟動資料庫startup;
備註:
無歸檔模式:將備份文件拷貝回原來的目錄即可,然後啟動資料庫。
歸檔模式:
①將數據文件、控制文件拷貝回原來目錄
②SQL>startup mount;
SQL>recover database using backup controlfile;
③將相應的歸檔日誌和聯機日誌拖到CMD命令窗口進行跑日誌。
④SQL>alter database open resetlogs;
3. 軟體重裝恢復
此時,操作系統重裝,如果做冷備恢復,要保證相同操作系統,相同的資料庫版本。形勢如同異機恢復。
A、不創建實例:(源機上的資料庫名字為orcl)
(1)恢復oradata/orcl目錄
在目標機上的oradata目錄下建立orcl文件夾,然後進行數據覆蓋。
包括數據文件、參數文件、控制文件、日誌文件、pwd文件,放在與原系統相同的目錄。如果目錄有所改變,則需要另外建立控制文件,修改pfile。(2) 恢復admin/orcl目錄在目標機上的admin目錄下建立orcl文件夾,然後在orcl裡面再建立amp、bmp、cmp、ump、dpmp、pfile六個文件夾
(3) 建立服務把源機的密碼文件拷貝到目標機的database目錄下。使用oradim命令在cmd下oradim -new -sid orcl表示建立一個服務,sid為orcl(最好名字和源機備份的資料庫名字一致,就不需要重建密碼文件)。如果是在linux下,不需要此步。(4) 重建創建參數文件、控制文件拷貝源機的pfile到目標機的一個目錄下,修改pfile裡面相關文件的路徑。然後通過SQL>create spfile from pfile=『文件路徑'來創建參數文件。重建控制文件命令:SQL>alter database backup controlfile to trace;然後會在ump文件夾下產生一個追蹤文件,打開文件找到如下一段,復制到文本中,修改相應路徑然後保存為:createctl.sql文件(sql腳本文件),復制到目標機上。注意:SQL>alter database backup controlfile to trace as 'F:/DB_RECOVERY/CONTROL_FILE_TRACE.TXT';復制的原始導出txt中的,相應代碼片段如下:修改oracle_homeoradataorcl下及相關文件的路徑
(6) TNSNAMES設置在networkadmin下的tnsnames.ora中添加如下片段
123456789 ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))
(7) 建立監聽用net configuration為orcl實例新建監聽至此,冷備份恢復成功。即使你現在用oem打開資料庫時發現提示找不到sid ,但實際上你已經成功了,此時只需要重啟一下的你的伺服器就可以。
B、創建實例方式(實例SID與源機資料庫SID一致)
(1) 替換和覆蓋oradataorcl目錄刪除目標機的oradataorcl底下的所有文件,把源機的所有data文件、redo文件拷貝到此目錄下
(2) 密碼文件覆蓋刪除目標機的密碼文件,拷貝源機密碼文件到目標機下。
(3) 控制文件恢復在源機上重建目標機的控制文件:SQL>alter database backup controlfile to trace;然後會在ump文件夾下產生一個追蹤文件,打開文件找到上面那段,復制到文本中,修改相應路徑然後保存為:createctl.sql文件(sql腳本文件),復制到目標機上。
復制代碼代碼如下:
12345 c:>sqlplus"/as sysdba"SQL>@c:createctl.sql;SQL>shutdown immediate;SQL>startup;SQL>alterdatabaseopenresetlogs;
(4) 在networkadmin下的tnsnames.ora中添加如下片段
復制代碼代碼如下:
123456789 ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))
(5) 用net configuration為orcl實例新建監聽
若是初學Linux的話建議看看《Linux就該這么學》這本書。
D. linux系統上怎樣備份oracle資料庫
步驟以下:1、編寫備份資料庫的shell
1、創建保存shell文件的文件夾,2、文件內容為:#!/bin/sh
PATH=$PATH:$HOME/bin
export
PATH
ORACLE_BASE=/u01/app/oracle
export
ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1
export
ORACLE_HOME
ORACLE_SID=HRDB
export
ORACLE_SID
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH
export
PATH
exp
fact/fact
file=/backup/fact`date
+%y%m%d`.dmp
log=/backup/factlog`date
+%y%m%d`.log
shell文件編寫終了1、運行以上的shell文件看是不是能生成備份的.dmp文件,如果能則表示shell文件編寫成功
2、然後在此shell文件的所在終端輸入命令,將此文件授權讓root用戶可以履行:
3、命令為:chmod
+x
backup.sh
4、然後到root終端編寫定時備份的語句5、語句為:crontab
–e
6、輸入i
7、輸入10
17
,,,/home/backupscript/backup.sh
8、按下esc建,輸入:wq
退出並保存便可。
E. 菜鳥求助:linux下oracle資料庫自動備份腳本,腳本可實現資料庫自動備份功能,並刪除三天前的備份
這個好辦。 cp 你的資料庫`date +'%y%m%d'` 指定目錄 這個是以年月日來命名備份 刪除的命令是
rm -f 你的資料庫名字`date -d "3 days ago" +'%y%m%d'` 這個是刪除匹配你資料庫的備份名日期前3天的備份文件 他會按照日期-3天匹配3天前的日期來刪除備份的
F. linux oracle 定時備份計劃問題
crontab 執行的腳本是以root用戶來調用的,所以必須要加上oracle用戶的環境變數如ORACLE_HOME、ORACLE_BASE、ORACLE_SID,ORACLE_HOME/bin也要加到path裡面
另外expdp_oracle.sh其他用戶也要有執行許可權
example:
vi expdp_oracle.sh
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/proct/10.2/db_1
export ORACLE_SID=orcl
export PATH=/u01/app/oracle/proct/10.2/db_1/bin;$PATH
expdp system/oracle directory=DDPDATA21 mpfile=rrq.dmp schemas= 'MMS';
wq:
G. Linux系統下如何備份還原ORACLE資料庫,在同一台機器上,想還原到以前的備份
如果是同一個資料庫實例,直接用EXPDP導出的DMP文件是不可以恢復的。可以DBCA新建一個資料庫實例,然後用IMPDP指定DMP文件導入就好了。
H. linux oracle 怎麼備份
步驟如下:
一、編寫備份資料庫的shell
1、創建保存shell文件的文件夾,
2、文件內容為:
#!/bin/sh
PATH=$PATH:$HOME/bin
export PATH
ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1
export ORACLE_HOME
ORACLE_SID=HRDB
export ORACLE_SID
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH
export PATH
exp fact/fact file=/backup/fact`date +%y%m%d`.dmp
log=/backup/factlog`date +%y%m%d`.log
shell文件編寫完畢
一、運行以上的shell文件
看是否能生成備份的.dmp文件,如果能則表示shell文件編寫成功
二、然後在此shell
文件的所在終端輸入命令,將此文件授權讓root用戶可以執
I. 怎麼執行oracle資料庫自動備份 linux 腳本
Oracle自動備份資料庫不外乎以下三種方式WINDOWS下的任務計劃(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三種方式中Viritas屬於第三方工具,很多人可能都沒有接觸,主要說一下windows的任務計劃與unix的cron
1、生成腳本文件,如backup.rcv 假定文件內容如下:
$>cat backup.rcv connect target sys/password rcvcat rman/rman@localname; run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format 『/u01/oradata/backup/arch%u_%s_%p』 archivelog all delete input; release channel c1; release channel c2; release channel c3; }
2、生成執行文件在windows上生成backup_archive.bat,內容包括rman cmdfile = backup.rcv 在unix下生成 backup_archive.sh,內容包括oracle/ramn/rman cmdfile = backup.rcv
3、加入調度在windows中用任務計劃向導即可,或使用at命令。在unix中,在目標機器上編寫一個文件,用以啟動Oracle自動備份進程。假定文件名為ORACLE,文件將放在/var/spool/cron/crontabs目錄下
$>cat oracle
0 23 * * 0 backup_archive.sh
#表示星期天23點對資料庫備份
0 12,18 * * * backup_archive.sh
#表示每天12點,18點備份
Crontab文件的每一行由六個域(minutes,hours,day of month,month,day of week,command)組成,域之間用空格或Tab分隔開來