Oracle資料庫 bat檔案備份 恢復

2021-09-25 04:32:38 字數 3491 閱讀 9684

不怎麼接觸資料庫,尤其是oracle,所以在此留個腳印吧。

此文章主要介紹exp/imp命令,需要關掉資料庫操作後進行,同時當備份恢復的時候最好清空資料,不然有主鍵檢查,速度會很慢。(備註:當然也可以試一下expdp/impdp備份恢復,這個可以在恢復的時候選擇覆蓋恢復,追加恢復等,文章末尾有簡單介紹)

1、資料庫備份(儲存以下內容為expdb.bat)

@echo off     ----在批處理執行命令的時候不會一條一條的顯示執行的命令,與之相匹配的還有@echo on

set sid=192.168.1.123/orcl  -----資料庫

set username=wplat1217  -----使用者名稱

set password=wplat1217   -----密碼

set connect=%username%/%password%@%sid%   ----連線字串拼接

set back_path=d:\databak2dmp            -------備份檔案需要儲存的資料夾,需要提前建立好

set date_string=%date:~0,4%_%date:~5,2%_%date:~8,2%

set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%

set file_string=%back_path%\test_%date_string%_%time_string% ----備份檔案路徑+檔名

set log_string=%back_path%\exp_%date_string%_%time_string%-----備份日誌路徑+檔名

exp %connect% file=%file_string%.dmp indexes=y grants=y constraints=y log=%log_string%.log  ----開始備份資料庫

擴充套件:匯出表1

exp %connect% file=%file_string%.dmp tables=表1 indexes=y grants=y constraints=y log=%log_string%.log  ----開始備份資料庫

exp %connect% file=%file_string%.dmp  indexes=y grants=y constraints=y log=%log_string%.log  owner=(system,sys) ----將資料庫中system使用者與sys使用者的表匯出(未測試)

exp %connect% file=%file_string%.dmp  indexes=y grants=y constraints=y log=%log_string%.log  owner=(system) rows=n  --rows=n不導資料只導表結構(未測試)

exp %connect% file=%file_string%.dmp tables=(table1) query=\」 where filed1like '00%'\」 ---將資料庫中的表table1中的字段filed1以」00″打頭的資料匯出(未測試)

2、資料庫恢復(儲存以下內容為impdb.bat)

@echo off     ----在批處理執行命令的時候不會一條一條的顯示執行的命令,與之相匹配的還有@echo on

set sid=192.168.1.123/orcl  -----資料庫

set username=wplat1217  -----使用者名稱

set password=wplat1217   -----密碼

set connect=%username%/%password%@%sid%   ----連線字串拼接

set back_path=d:\databak2dmp\backup.dmp            -------需要恢復的備份檔案

set back_path_dir=d:\databak2dmp             -----日誌存放的資料夾路徑

set date_string=%date:~0,4%_%date:~5,2%_%date:~8,2%

set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%

set log_string=%back_path_dir%\imp_%date_string%_%time_string%-----備份日誌路徑+檔名

imp %connect% file=%back_path%  ignore=y  log=%log_string%.log  ----開始恢復資料庫

擴充套件:恢復表1

imp %connect% file=%back_path% tables=表1 ignore=y  log=%log_string%.log  ----開始恢復資料庫

3、傳參到bat檔案(此處以備份為例)---看紅色方框內的

程式傳參呼叫bat:

process pro=new process();

processstartinfo pi=new processstartinfo ("bat檔案","引數");---引數:以逗號分開的字串

pi.useshellexecute=false;

pro.startinfo=pi;

pro.start();

pro.waitforexit();

注意點:測試的時候發現,當時間在0—9的時候,批處理檔案出異常:

set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%報錯!!!

修正為:

set "hour_ten=%time:~0,1%"

set "hour_one=%time:~1,1%"

set "minute=%time:~3,2%"

set "second=%time:~6,2%"

if "%hour_ten%" == " " (

set time_string=0%hour_one%_%tminute%_%second%

) else (

set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%

)

拓展:impdp/expdp

步驟1:select * from dba_directories;在結果中選擇乙個路徑,之後會用。

備份命令:expdp  username/password@ip/orcl schemas=username dumpfile=backup.dmp directory=exp_dir(exp_dir是步驟1選擇的資料夾名)

恢復命令:impdp  username/password@ip/orcl dumpfile=backup.dmp directory=exp_dir tables=tb1 table_exists_action=replace(恢復表tb1,且資料存在則直接覆蓋)

Oracle資料庫冷備遷移

資料庫伺服器 linux6.5 oracle11.2.0.4 單例項 資料庫的例項名 arorcl 目的 從192.168.20.27 資料庫例項遷移到192.168.20.16上 要求系統一樣,資料庫版本一樣 show parameter spfile show parameter control...

Oracle資料庫匯入匯出 imp exp備份還原

oracle資料匯入匯出imp exp 在cmd的dos命令提示符下執行,而不是在sqlplus裡面,但是格式一定要類似於 imp exp 使用者名稱 密碼 service name或oracle sid full y file c 匯出檔名稱.dmp ignore y imp 命令是在dos提示符...

資料庫災備

資料庫災備 資料是企業重要的生產資料,關鍵資料的丟失可能會給企業致命一擊,因為資料是計算機系統存在的原因和基礎。資料往往是不可再生的,一旦發生資料丟失,企業就會陷入困境 客戶資料 技術檔案 財務賬目等客戶 交易 生產資料可能被破壞得面目全非。概括起來,資料丟失分三個層次 邏輯錯誤 包括軟體bug 病...