用oracle命令備份數據庫,生成dmp文件,保存了整一套的用戶及表數據信息。還原簡單。加上widnows的批處理bat命令,實現每天0點備份,現把經驗送上給大家!
百度經驗:jingyan.baidu.com
方法/步驟
-
在“運行”里打開cmd
-
輸入命令:sqlplus system/123456@orcl
其中system是登錄數據庫的用戶名
123456是用戶名的密碼
orcl是數據庫實例名稱
-
如果提示命令無效,那就是你沒有配置好oracle的環境變量(想當年我也被這個問題困擾着),配置oracle環境變量的方法如下:
1、右擊“我的電腦”->選擇“屬性”->選擇“高級”->單擊“環境變量”2、選擇“Path”這一行,單擊“編 輯”,在“Path”的變量值文本框的最后面先加入一個分號“:”,然后再分號后面加入sqlplus文件的目錄路徑,如“C:\Program Files\oracle\product\10.2.0\db_1\BIN”,然后點擊“確定”按鈕。3、如果在“系統變量”列表框下面的“變量”列中找不到“ORACLE_HOME”和“ORACLE_SID”這兩個變量,則需要下面操作,否則無需一下操作。4、在“系統變量”中點擊“新建”按鈕,在“變量名”中輸入“ORACLE_HOME”,變量值中輸入Oracle的安裝目錄路徑,如“C:\Program Files\oracle\product\10.2.0\db_1”,然后點擊“確定”按鈕。5、在“系統變量”中點擊“新建”按鈕,在“變量名”中輸入“ORACLE_SID”,變量值中輸入數據庫的實例名,然后點擊“確定”按鈕。
ORACLE_HOME:Oracle數據庫軟件的安裝目錄ORACLE_SID:Oracle數據庫的實例名Oracle 數據庫實例名:用於和操作系統進行聯系的標識,即數據庫和操作系統之間的交換是通過數據庫實例名來體現的。
END
百度經驗:jingyan.baidu.com
第二步,EXPDP備份命令
-
創建oracle的備份目錄:
sql>create directory dpdata1 as 'D:\temp\dmp';
這僅僅是在oracle里設定的目錄,並沒有真正創建
-
可以通過這句命令查看到這個目錄
sql>select * from dba_directories;
-
賦於要導出數據表的所屬用戶權限
sql>grant read,write on directory dpdata1 to sshe;
-
好了,到了關鍵一步,之前走了不少彎路,但其它是小問題,在網上零零碎碎查了很多資料,終於找到原因。
首先,要切換回命令窗口,不要再在sql>下運行,然后輸入命令:
expdp system/123456@orcl directory=dpdata1 dumpfile=sshe.dmp logfile=sshe.log schemas=sshe
-
上面報了一個錯ORA-39002:操作無效
原因是D:\temp\dmp這個目錄不存在,別以為create directory之后就會自動生成文件夾,也別以為執行expdp后會自動生成文件夾,要自己手動新建這個目錄文件夾的。新建文件夾后再試一下,果然成功了!恭喜你,已成功備份!
-
如果你要問,導出來的dmp文件怎樣還原回去。好吧,做人做到底,為了省去你再找方法的麻煩,這里我也做一個演示(一般備份的數據是等到數據庫有問題時才用的上)。
首先,再一次登錄數據庫 sqlplus system/123456@orcl
然后,刪除目標數據庫用戶 drop user sshe cascade;
-
現在來再一次創建用戶,可以用命令創建,也可以在plsql里創建,這里在plsql創建。
用system登錄數據庫,然后右鍵users--新建
然后填寫你的賬號名稱,必須和備份時的用戶一致,並賦於相應的權限
最后點擊應用,完成用戶創建。
-
返回DOS命令窗口,不再是sql>
輸入導入命令:impdp system/123456@orcl directory=dpdata1 dumpfile=SSHE.DMP logfile=sshe.log schemas=sshe
導入成功!
END
百度經驗:jingyan.baidu.com
步驟3 定時執行備份任務
-
做一個按年月日命名的批處理。在D:\temp\目錄下新建一個文件,隨便命名為.bat,我的命名為sshe.bat,編輯為如下代碼
-------------------------------------------------------------------------
@echo offrem set backupfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmprem set logfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.logrem delete 30days filesforfiles /p "D:\temp\dmp" /d -30 /c "cmd /c echo deleting @file ... && del /f @path"cd D:\temp\dmp
rem backup schemasset backupfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmpset logfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.logexpdp sshe/sshe directory=DIR_DP dumpfile=%backupfile% logfile=%logfile% schemas=sshe parallel=4
-------------------------------------------------------------------------------
可以試執行一下,會自動生成一個以年月日命名的備份文件
forfiles /p "D:\temp\dmp" /d -30 /c "cmd /c echo deleting @file ... && del /f @path"的作用是:刪除本目錄下30天以后的備份文件,這個挺有用的。
-
做一個windows每晚自動運行數據庫備份的bat,我的命名為auto.bat編輯如下內容
------------------------------------------------------------------------------
@ECHO OFFschtasks /create /tn SSHE數據庫定時備份 /tr "D:\temp\sshe_bak.bat" /sc daily /st 00:00:00 /ru "system" PAUSEEXIT
------------------------------------------------------------------------------
-
雙擊auto.bat,就會在windows添加一個定時任務,每晚0點0分就會自動執行一次sshe.bat,從而完成自動備份的目的。
-
右鍵我的電腦:管理——任務計划程序——任務計划程序庫,可以看到剛才添加進去的定時任務
-
可以將電腦的時鍾設為23點59分50秒,等待10秒鍾,看看自動備份能否成功。如果成功那就大功告成了!!
原文:http://jingyan.baidu.com/article/9113f81b2040862b3314c757.html