生活随笔
收集整理的這篇文章主要介紹了
oracle 备份
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
手工備份
單表備份(前提庫的結構是一樣的)
導出:
開始鈕->運行->輸入CMD->進入DOS界面
EXP 用戶名/密碼@連接字符串 GRANTS=Y TABLES=(stu) file=C:\文件名.DMP
導入:
開始鈕->運行->輸入CMD->進入DOS界面
IMP 用戶名/密碼@連接字符串 IGNORE=Y TABLES=(stu) FULL=N file=C:\文件名.DMP 其中stu是你要的表名 全庫導
導出:
開始鈕->運行->輸入CMD->進入DOS界面
EXP 用戶名/密碼@連接字符串 FULL=Y file=C:\文件名.DMP
導入:
開始鈕->運行->輸入CMD->進入DOS界面
IMP 用戶名/密碼@連接字符串 FULL=Y file=C:\文件名.DMP 自動備份
建議一:
利用任務計劃、批處理文件和ORACLE的EXP導出功能,可以根據日期自動生成ORACLE備份文件,大大方便了ORACLE數據備份。:
1,批處理文件backup.bat\.
exp system/manager file=d:\backup\oracle\oracle%date:~0,10%.dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%.log
將生成oracle2006-01-09.dmp文件
exp system/manager file=d:\backup\oracle\oracle%date:~11,3%.dmp owner=system log=d:\backup\oracle\oracle%date:~11,3%.log
將生成oracle星期一.dmp文件,則每周循環保留一個備份文件,共7個備份文件循環
2,添加一個任務計劃
利用任務計劃向導,根據備份策略設置自動執行任務的時間頻率(例如每天零時),執行d:\oracle\backup.bat
3、以后每天將在目錄中生成形如“oracle2005-08-31.dmp和oracle2005-08-31.log”的備份和日志文件。
說明:
1、%date%的值在不同的系統、語言版本下可能是不一樣的,控制面板里面區域選項的設定也會改變%date%的值。請先在命令行中測試 echo %date% 的返回值。%date:~4,10% 是返回日期函數,~后的第一個參數是要截取的起始位置(從0開始),第二個參數是要截取的長度,如沒有則是截取到最后,參數可酌情修改。
2、如需要準確的時間做為文件名,請用%time%函數,參數同上。
建議二:
@echo off
set filename=e:\data_bak\%date:~8,2%日
exp userid=user/pass@esdata file=%filename%.dmp owner=user INDEXES=y grants=y constraints=y compress=y log=%filename%.log
rar a %filename%.rar %filename%.*
del %filename%.dmp
del %filename%.log
放計劃任務里面定時執行,
文件名以日期的day部分來命名
備份后調用rar進行壓縮
這樣可以保存一個月的歷史數據
注意:需要把program files/winrar目錄下的rar.exe拷貝到系統system32目錄下
如果是以星期命名,則需要將set filename=e:\data_bak\%date:~8,2%日修改為
set filename=e:\data_bak\%date:~0,3%
建議三:
以下為ORACLE 自動備份批處理文件內容,請配合任務計劃實現 @ECHO OFF
SET BACKPATH=d:\
ECHO 準備備份數據庫
REM 7天一個循環
IF EXIST %BACKPATH%\ONE GOTO ONE
IF EXIST %BACKPATH%\TWO GOTO TWO
IF EXIST %BACKPATH%\THREE GOTO THREE
IF EXIST %BACKPATH%\FOUR GOTO FOUR
IF EXIST %BACKPATH%\FIVE GOTO FIVE
IF EXIST %BACKPATH%\SIX GOTO SIX
IF EXIST %BACKPATH%\SEVEN GOTO SEVEN
ECHO E > %BACKPATH%\ONE
:ONE
SET BACKPATH_FULL=%BACKPATH%\ONE
REN %BACKPATH%\ONE TWO
GOTO BACK
:TWO
SET BACKPATH_FULL=%BACKPATH%\TWO
REN %BACKPATH%\TWO THREE
GOTO BACK
:THREE
SET BACKPATH_FULL=%BACKPATH%\THREE
REN %BACKPATH%\THREE FOUR
GOTO BACK
:FOUR
SET BACKPATH_FULL=%BACKPATH%\FOUR
REN %BACKPATH%\FOUR FIVE
GOTO BACK
:FIVE
SET BACKPATH_FULL=%BACKPATH%\FIVE
REN %BACKPATH%\FIVE SIX
GOTO BACK
:SIX
SET BACKPATH_FULL=%BACKPATH%\SIX
REN %BACKPATH%\SIX SEVEN
GOTO BACK
:SEVEN
SET BACKPATH_FULL=%BACKPATH%\SEVEN
REN %BACKPATH%\SEVEN ONE
GOTO BACK
:BACK
EXP TESTUSER/TEST FILE=%BACKPATH_FULL%.DMP
SET BACKPATH=
SET BACKPATH_FULL=
EXIT
建議四:
RMAN TARGET=RMAN/RMAN@ORCL < C:\RMAN.TXT
建議五:
在文本里編輯cmd命令。然后保存成bat文件。在windows中定義任務計劃,就
可以自動執行了。
例:
編輯文本文件
del c:\exp\*.dmp
exp userid=cw/cw@db file='c:\exp\*.dmp' tables=(student)
保存成bat文件
建議六:
寫個簡單的批處理文件備份恢復:
備份:
@echo off 不顯示命令行 echo 開始備份表..... 打印信息
D: DOS切換到D: 盤
cd oracle\ora92\bin 切換到cd oracle\ora92\bin目錄
exp 用戶名/密碼@數據庫 file=d:\config_bak.dmp tables=(table1,table2) 備份表一表二到d:\config_bak.dmp
echo 備份完畢!
恢復:
@echo off echo 開始恢復表.....
D:
cd oracle\ora92\bin
imp 用戶名/密碼@數據庫 file=d:\config_bak.dmp tables=(table1,table2) ignore=y
sqlplus /nolog @oraStartup.sql>>oraStartup.log 調用sql文件
pause 執行完sql文件以后暫停,看信息
echo 恢復完畢!
編寫oraStartup.sql
conn 用戶名/密碼@數據庫 as sysdba
select * from table1;
quit; 執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行, DOS中可以執行時由于 在oracle 8i 中 安裝目錄\ora81\BIN被設置為全局路徑, 該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。 oracle用java編寫,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE這倆個文件是被包裝后的類文件。 SQLPLUS.EXE調用EXP.EXE、IMP.EXE他們所包裹的類,完成導入導出功能。 下面介紹的是導入導出的實例,向導入導出看實例基本上就可以完成,因為導入導出很簡單。 數據導出: 1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:\daochu.dmp中 exp system/manager@TEST file=d:\daochu.dmp full=y 2 將數據庫中system用戶與sys用戶的表導出 exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 3 將數據庫中的表table1 、table2導出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 4 將數據庫中的表table1中的字段filed1以"00"打頭的數據導出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\" 上面是常用的導出,對于壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。 不過在上面命令后面 加上 compress=y 就可以了 數據的導入 1 將D:\daochu.dmp 中的數據導入 TEST數據庫中。 imp system/manager@TEST file=d:\daochu.dmp 上面可能有點問題,因為有的表已經存在,然后它就報錯,對該表就不進行導入。 在后面加上 ignore=y 就可以了。 2 將d:\daochu.dmp中的表table1 導入 imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
導入 基本上上面的導入導出夠用了。不少情況我是將表徹底刪除,然后導入。
追問
怎么設置歸檔模式,用歸檔日志怎么還原數據庫可以一起介紹下么 本人菜鳥
回答
a.查看是處于什么模式
select log_mode from v$database;
如果是非歸檔模式則成:NOARCHIVELOG
如果不是歸檔模式(Archive)則可以通過以下方法改成歸檔模式
b.改變歸檔模式
1.SQL> shutdown immediate;
2.SQL> startup mount;
3.SQL> alter database archivelog;
4.SQL> alter database open;
現在已經改成歸檔模式了 恢復1.使用命令“svrmgrl”調用行方式服務器管理;2.輸入命令“connect internal”,然后輸入命令“startup mount’;3.輸入命令“recover database;”4.按下ENTER,接受默認值。5.然后輸入命令“alter database open;”完成數據庫恢復。
轉自:http://zhidao.baidu.com/question/229430018.html?loc_ans=625835870
總結
以上是生活随笔為你收集整理的oracle 备份的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。