久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

數據庫邏輯備份與恢復是怎樣的

194次閱讀
沒有評論

共計 4370 個字符,預計需要花費 11 分鐘才能閱讀完成。

本篇文章為大家展示了數據庫邏輯備份與恢復是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

(一)問題:

初次接觸數據庫備份與恢復,目前是應用在這樣一個場景:

我們平時開發都是在自己的開發環境中進行,開發完成之后,需要將 oracle 數據庫(安裝在 Linux 服務器上)轉到位客戶部署的服務器(也是 Linux)之上。

所以就需要將開發環境中的數據庫備份出來,然后恢復到新的服務器機器上。

(二)解決方案:使用 expdp/impdp 數據泵

按照以下步驟進行:

(1)備份表空間創建腳本:

將要備份的數據庫的所有表空間的創建語句拷貝出來,待會要用來在新數據庫上創建對應的表空間;

(2)在自己的 windows 機器上利用 expdp 命令按照用戶導出數據庫:

expdp system/password@172.16.1.61/baseinfo dumpfile=user1.dmp directory=backup schemas=user1

以管理員 system 的身份登錄,導出用戶服務器 172.16.1.61 上的數據庫 baseinfo 實例下的 user1 用戶所屬的數據庫,dmp 文件放在遠端服務器 172.16.1.61 的 oradata 目錄下(注意,這個目錄是相對于 Oracle 的工作目錄而言的,如果導出出現“無效操作,不能操作日志文件”的錯誤,那就換一個導出目錄把,或者不要 directory 這項了)。

(3)dmp 文件傳輸:

利用 PenguiNet 等 windows 連接 linux 的軟件將服務器上導出的 dmp 文件拷貝到 windows 上來,在將這個 dmp 文件上傳到目標 linux 服務器(新數據庫),也可以直接用 scp 命令在源 Linux 和目標 Linux 上互傳這個 dmp 文件。

注意:如果是覆蓋已經存在的數據庫,即你要導入的目標數據庫已經存在了 user1 這個用戶,那么(4)(5)兩步跳過,直接到第(6)步。

(4)創建存放表空間的目錄:

PenguiNet 連接到目標 Linux 服務器,創建一個新的目錄來存放新數據庫的表空間:

mkdir -p /oradata/newDataBase
chown -R oracle:oogroup /oradata/newDataBase

創建一個目錄,然后將這個目錄的所有權賦給 oogroup 組的 oracle 用戶,因為是 oracle 用戶下創建的數據庫實例,所以需要給它讀寫這個目錄的權限。

(5)創建表空間:

使用 Toad 連接到目標 Linux 服務器(System 用戶登錄),將第一步中備份的創建表空間的腳本拷進去,修改表空間文件的路徑為上一步創建的目錄路徑,然后執行,創建好數據庫需要的所有表空間;

(6)在自己的 windows 機器上使用 impdp 命令導入數據導入到目標 Linux 服務器指定實例下:

注意:在導入之前最好先執行 drop user userName cascade 刪除即將要導入的用戶,然后再執行下面的導入命令。

另外順便提一句,如果你是要導入多個用戶,可以刪除一個,導一個,因為它們之間可能會有以來,如果全部刪除了再一個個導入,那么可能會出現錯誤。

但是最好的辦法是全部所有用戶一起導出,然后一起導入,用戶名之間用逗號分隔。

impdp system/password@192.168.9.226/baseinfo dumpfile=user1.dmp schemas=user1

注意:用 Penguinet 的 SCP 方式連接,導航到 user1.dmp 文件所在的目錄,那么直接執行上面的 imp 命令就可以找到這個 dmp 文件。

如果出現錯誤,一般是因為沒有找到 dmp 文件,你可以看看錯誤提示,它是在哪兒去找 dmp 文件,那么你就把 dmp 文件放到哪兒。

至此數據庫導出,導入工作結束,你在新機器上已經擁有了一個同樣的數據庫,接下來用 Toad 測試一下,用 user1 用戶登錄。

(三)與 exp/imp 的區別:

1、Oracle  的導出導入是一個很常用的遷移工具。  在 Oracle
10g 中,Oracle  推出了數據泵 (expdp/impdp).  它可以通過使用并行,從而在效率上要比 exp/imp  要高。

2、expdp/impdp 調用 Server 端的 API 在執行操作,是數據庫內部的 job 任務。可以遠程使用,但是生成的 dump
文件存在于服務器上的 directory 里。

3、據泵與 exp/imp  來說性能有很大的提高,  其中影響最大的就是 paralle。  可以這么來看: expdp/impdp=exp/imp+direct
moe + paralle.  所以,  使用數據泵,要想提高速度,就要設置并行參數。

Oracle 數據庫邏輯備份和恢復——用 exp 和 imp 命令來實現

EXP 和 IMP 是 Oracle 提供的一種邏輯備份工具。邏輯備份創建數據庫對象的邏輯拷貝并存入一個二進制轉儲文件。這種邏輯備份需要在數據庫啟動的情況下使用, 其導出實質就是讀取一個數據庫記錄集(甚至可以包括數據字典)并將這個記錄集寫入一個文件, 這些記錄的導出與其物理位置無關,導入實質就是讀取轉儲文件并執行其中的命令。此備份方式是通過 Oracle 的實用工具 export 和 import 來實施的,export 是把數據庫中的數據導出,import 是把 export 卸出的數據導入數據庫中。通過此工具可以衍生出多種功能, 比如整個數據庫的備份、表結構重建、數據的傳輸、用戶的改變等等。

Oracle Export/Import 工具提供了靈活多樣的功能和導出 / 導入模式,最常使用的三種模式是 User、table 和 full database。除此以外,還可以在導出 / 導入時決定是否包含與對象有關的數據字典信息,如索引、約束、權限等等。

注意:通過邏輯備份可以備份整個數據庫, 或僅備份部分重要數據。因為是邏輯上的備份, 故只能用于邏輯的恢復數據, 一旦數據庫被物理損壞, 導致不能啟動, 邏輯備份的數據不能幫助恢復數據庫。

首先介紹下 Export/Import 的命令用法:

(一)將一個用戶的對象導入到另一個用戶模式中

把數據庫中原有的用戶 Export 至一個 dmp 文件(如把用戶 olduser 的對象導出到文件 *****.dmp 中):

 命令: exp sys/password file=******.dmp owner=olduser grant=N
 indexes=Y rows=Y

從 dmp 文件中把一個用戶的對象 import 至一個用戶的模式中(從 ******.dmp 中,把用戶 user 的對象導入到用戶 newuser 中):

 命令:imp sys/password file=******,dmp fromuser=olduser
 touser=newuser indexes=Y rows=Y

導入時避免出現 ORA-00942(表或是圖不存在) 錯誤

因為,導出是按照在數據庫中對象建立的順序進行的,從而在導入時,數據庫對象之間的依賴性會引起某些先導入對象找不到其依賴對象(如 view、procedure 等等),就會引起 ORA-00942(表或是圖不存在) 錯誤。通常解決這種問題的方法是,做兩次導入工作,第一遍導入時設置如下:

 命令: imp sys/password file=******.dmp full=Y commit=y rows=Y

導入時如果出現錯誤,就修改設置:rows=n,ignore=n:

 命令: imp sys/password file=******.dmp full=Y rows=N
 commit=Y ignore=N

(二)做無增量的全數據庫備份及恢復的例子

全數據庫 Export 至 dmp 文件(如 ******.dmp):

 命令: exp sys/password file=******.dmp Full=y -- rows 確省為 Y 

把整個數據庫備份的 ******.dmp 文件至數據庫中:

 命令: imp sys/password file=******.dmp ignore=y full=y-- rows 確省為 Y 

注意:導入 / 導出是最徹底的減少磁盤碎片的方法。

其次介紹下數據庫備份策略:

(三)做全數據庫增量備份和恢復的方法:

全數據庫 Export 至 dmp 文件(如 ******.dmp)

 命令: exp sys/manager file= ******.dmp Full=y inctype=complete

第一天增量備份 Export 至 dmp 文件(如第一天 1.dmp):

 命令: exp sys/manager file=  第一天 1.dmp inctype=incremental

第二天增量備份 Export 至 dmp 文件(如第二天 2.dmp):

 命令: exp sys/manager file=  第二天 2.dmp inctype=incremental

第三天增量備份 Export 至 dmp 文件(如第三天 3.dmp):

 命令: exp sys/manager file=  第三天 3.dmp inctype=incremental

現假設 Oracle 數據庫在第三天被破壞了重新建一個 Oracle 數據庫,先把最后的一個 dmp 文件 imp 至數據庫中:

 命令: imp sys/manager file=  第三天 3.dmp full=y ignore=y inctype=system

把整個數據庫備份的 dmp 文件 imp 至數據庫中:

 命令: imp sys/manager file= ******.dmp ignore=y full=y
 inctype=restore

把第一天增量備份的 dmp 文件 imp 至數據庫中:

命令:imp sys/manager file= 第一天 1.dmp ignore=y full=y inctype=restore

把第二天增量備份的 dmp 文件 imp 至數據庫中:

 命令: imp sys/manager file=  第二天 2.dmp ignore=y full=y inctype=restore

把第三天增量備份的 dmp 文件 imp 至數據庫中

 命令: imp sys/manager file=  第三天 3.dmp ignore=y full=y inctype=restore

(四)利用 windows 任務計劃定時備份數據庫:

把上面各個命令寫成各個 bat 腳本, 然后添加備份的定時器,具體的配置步驟如下:

我的環境是 windowxp 操作系統,在附件選擇系統工具,選擇任務計劃,然后點擊“添加任務計劃”,一步一步的按照提示往下走,定制的每個 bat 執行的時間,這樣,就可以定時的執行數據庫備份的任務任務。

上述內容就是數據庫邏輯備份與恢復是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計4370字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 汉沽区| 隆化县| 郯城县| 新兴县| 汉沽区| 枣强县| 仙桃市| 天长市| 北辰区| 循化| 闸北区| 原阳县| 共和县| 北碚区| 灵石县| 乐清市| 西林县| 庆阳市| 讷河市| 新邵县| 墨竹工卡县| 手机| 灵宝市| 南漳县| 贺州市| 全州县| 炉霍县| 息烽县| 镇原县| 汉寿县| 会昌县| 宁乡县| 确山县| 东莞市| 兰西县| 乡宁县| 那曲县| 博白县| 安庆市| 若羌县| 宁安市|