日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Windows下EnterpriseDB備份和恢復(fù)攻略

 

尼開遠(yuǎn)網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),尼開遠(yuǎn)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為尼開遠(yuǎn)上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個(gè)售后服務(wù)好的尼開遠(yuǎn)做網(wǎng)站的公司定做!

  這里介紹的方法適用于Microsoft Windows環(huán)境下的Postgres Plus Standard Server或Postgres Plus Advanced Server數(shù)據(jù)庫。在此,我們假設(shè)您已經(jīng)下載并安裝了Postgres Plus Standard Server或Postgres Plus Advanced Server。通過本文,您將了解下列內(nèi)容:

  1. 辨別不同的備份格式;
  2. 選擇各種的備份和恢復(fù)選項(xiàng);
  3. 生成純文本式的備份,并用其進(jìn)行恢復(fù)操作;
  4. 為備份和恢復(fù)創(chuàng)建一個(gè)定制的歸檔。

  實(shí)際上,用來備份和恢復(fù)Postgres Plus數(shù)據(jù)庫的方法和選項(xiàng)有很多,但是本文介紹的是使用Postgres Plus實(shí)用程序pg_dump和pg_restore來進(jìn)行數(shù)據(jù)庫的備份和恢復(fù)。這兩個(gè)程序用于命令行,所以可以通過腳本的形式使用他們。

  一、備份文件格式

  pg_dump生成的備份文件共三種格式,如下所示:

  1. 純文本格式:純文本腳本文件存放的是一些結(jié)構(gòu)化查詢語言語句和命令,可以供psql命令行終端程序用以重建數(shù)據(jù)庫對象并載入表數(shù)據(jù)。使用psql程序可以通過純文本備份文件來進(jìn)行數(shù)據(jù)庫的恢復(fù)操作。
  2. 定制的歸檔格式:一個(gè)二進(jìn)制文件可以用來從備份文件中恢復(fù)全部或者指定的數(shù)據(jù)庫對象。使用pg_restore程序,可以利用定制的編檔格式備份文件來恢復(fù)數(shù)據(jù)庫。
  3. Tar歸檔格式:利用tar歸檔文件,我們可以從備份文件中恢復(fù)全部數(shù)據(jù)庫對象或者指定的數(shù)據(jù)庫對象。使用pg_restore程序,可以利用tar歸檔格式的備份文件來恢復(fù)數(shù)據(jù)庫。

  在使用psql程序恢復(fù)數(shù)據(jù)庫對象之前,我們可以使用文字編輯器編輯純文本格式的備份文件。純文本格式通常用于較小的數(shù)據(jù)庫。定制的歸檔格式的備份文件則無法編輯。不過,我們可以使用pg_restore程序從備份文件中選擇恢復(fù)哪些數(shù)據(jù)庫對象。定制的歸檔格式通常用于中到大型的,希望從備份文件中指定需要選擇性恢復(fù)數(shù)據(jù)庫對象的數(shù)據(jù)庫。

  tar歸檔格式的備份文件可以利用標(biāo)準(zhǔn)Linux工具tar進(jìn)行操作。就像定制的歸檔格式一樣,使用pg_restore程序我們可以從備份文件中有選擇的恢復(fù)數(shù)據(jù)庫對象。

  利用pg_dump程序,我們可以對純文本或者定制的歸檔格式的備份文件進(jìn)行壓縮處理,這樣能夠有效減小備份文件的尺寸。當(dāng)生成純文本格式的備份文件時(shí),默認(rèn)情況下是不進(jìn)行壓縮的。當(dāng)生成定制的歸檔格式的備份文件時(shí),默認(rèn)配置為進(jìn)行中等水平的壓縮處理。然而,pg_dump程序無法對Tar歸檔格式的備份文件進(jìn)行壓縮處理。

  二、備份和恢復(fù)選項(xiàng)

  Pg_dump和pg_restore程序?yàn)槲覀兲峁┝嗽S多選項(xiàng),通過它們可以控制將哪些數(shù)據(jù)庫對象保存到備份文件,從備份文件中恢復(fù)哪些數(shù)據(jù)庫對象,以及如何進(jìn)行恢復(fù)。下面列出了一些選項(xiàng):

  1. 僅轉(zhuǎn)儲(chǔ)或者恢復(fù)模式 (表、視圖和序列定義、約束、觸發(fā)器與函數(shù)),不轉(zhuǎn)儲(chǔ)或恢復(fù)表中數(shù)據(jù)(如果您當(dāng)前使用的是Postgres Plus Advanced Server的話,SPL函數(shù)、過程、觸發(fā)器和軟件包也是能夠進(jìn)行備份和恢復(fù)的。);
  2. 僅轉(zhuǎn)儲(chǔ)或恢復(fù)表中數(shù)據(jù),而不包括模式;
  3. 轉(zhuǎn)儲(chǔ)或恢復(fù)屬于選中的模式的數(shù)據(jù)庫對象;
  4. 創(chuàng)建備份時(shí),排除選中的方案;
  5. 轉(zhuǎn)儲(chǔ)或恢復(fù)選中的表;
  6. 創(chuàng)建備份時(shí),排除選中的表;
  7. 允許恢復(fù)操作使用要備份的數(shù)據(jù)庫的名稱來新建數(shù)據(jù)庫,然后從這個(gè)新創(chuàng)的數(shù)據(jù)庫中恢復(fù)數(shù)據(jù)庫對象;
  8. 將數(shù)據(jù)庫對象恢復(fù)到所有的現(xiàn)有數(shù)據(jù)庫;
  9. 令被恢復(fù)的數(shù)據(jù)庫對象的屬主與制作備份時(shí)這些對象的屬主同名;
  10. 將進(jìn)行恢復(fù)操作的用戶的角色指定為所有被恢復(fù)的數(shù)據(jù)庫對象的屬主。

  假設(shè)我們想要備份一個(gè)數(shù)據(jù)庫的全部內(nèi)容,并在隨后某個(gè)時(shí)間從備份文件中重建整個(gè)數(shù)據(jù)庫,這種情況在現(xiàn)實(shí)中經(jīng)常遇到。下面我們就介紹用純文本格式的備份文件和定制的歸檔格式的備份文件來完成上述過程。

  三、具體操作步驟

  假定您的數(shù)據(jù)庫環(huán)境如下所示:

  1. 我們的數(shù)據(jù)庫要恢復(fù)到其中的數(shù)據(jù)庫集群包含的角色名稱(用戶名和組名)就是制作備份時(shí)數(shù)據(jù)庫對象的屬主。也就是說我們要制作備份(當(dāng)制作備份時(shí)沒有刪除任何數(shù)據(jù)庫對象的屬主的角色)的數(shù)據(jù)庫集群與恢復(fù)的目的地是同一個(gè)數(shù)據(jù)庫集群,或者我們要恢復(fù)到一個(gè)新的數(shù)據(jù)庫集群,并且在其中添加的一組角色名稱與制作備份的數(shù)據(jù)庫集群中的角色名稱完全相同。
  2. 用來恢復(fù)我們的數(shù)據(jù)庫的數(shù)據(jù)庫集群中沒有與制作備份的數(shù)據(jù)庫同名的數(shù)據(jù)庫。 (如果制作備份文件的數(shù)據(jù)庫集群正好是用來恢復(fù)數(shù)據(jù)庫的數(shù)據(jù)庫集群,則數(shù)據(jù)庫制作備份之后,需要將其刪除或者改名)

  讀者需要注意的是,一個(gè)數(shù)據(jù)庫集群就是由同一個(gè)Postgres Plus 實(shí)例運(yùn)行的一組數(shù)據(jù)庫。一個(gè)數(shù)據(jù)庫集群通過它的ip地址和端口號唯一標(biāo)識。

四、使用純文本格式的備份文件備份數(shù)據(jù)庫

  下面我們詳細(xì)介紹如何使用pg_dump程序創(chuàng)建數(shù)據(jù)庫的純文本格式的備份文件。

  ***步:登錄到Postgres Plus數(shù)據(jù)庫服務(wù)器所在的計(jì)算機(jī)。在該計(jì)算機(jī)上任何有效的帳戶都可以。

  第二步:下面的操作需要利用Windows命令行,所以它們都是在命令提示符窗口中鍵入的命令。

  為了打開命令提示符窗口,在屏幕底部的Windows任務(wù)欄中點(diǎn)擊“開始”按鈕, 然后依次選擇“所有程序”、“附件”子菜單,并單擊“命令提示符”選項(xiàng)即可。這樣就會(huì)打開命令提示符窗口了。

 
▲圖 1

  第三步:使用cd命令將當(dāng)前工作目錄切換至Postgres Plus所在的bin目錄。

  
 
 
 
  1. cd C:\Program Files\PostgresPlus\8.4SS\bin 

   注意:如果您使用的是Postgres Plus Advanced Server的話,請將當(dāng)前工作目錄通過cd命令切換至dbserver/bin。

  第四步:使用具有超級用戶權(quán)限(-U選項(xiàng))的角色運(yùn)行pg_dump程序,使用–C來包含備份文件中的CREATE DATABASE語句,給備份文件指定的名稱(-f選項(xiàng)),以及用來制作備份文件的數(shù)據(jù)庫的名稱(命令行的***一個(gè)參數(shù))。

 
 
 
 
  1. pg_dump -U postgres -C -f C:\Temp\sample_backup sample 

   上面的命令就會(huì)為數(shù)據(jù)庫sample建立一個(gè)備份文件,名為sample_backup。您可以利用Microsoft記事本程序察看sample_backup:

 
▲圖 2

五、從純文本格式的備份文件恢復(fù)數(shù)據(jù)庫

  下面我們詳細(xì)介紹如何使用psql程序從一個(gè)純文本格式的備份文件恢復(fù)數(shù)據(jù)庫。注意:如果您使用的是Postgres Plus Advanced Server的話,那么可以使用edb-psql程序。

  上面,我們?yōu)閿?shù)據(jù)庫sample建立了一個(gè)純文本格式的備份文件,即sample_backup,之后我們要用它來恢復(fù)該示例數(shù)據(jù)庫。

  ***步:登錄到Postgres Plus數(shù)據(jù)庫服務(wù)器所在的計(jì)算機(jī)。在該計(jì)算機(jī)上任何有效的帳戶都可以。

  第二步:下面的操作需要利用Windows命令行,所以它們都是在命令提示符窗口中鍵入的命令。

  為了打開命令提示符窗口,在屏幕底部的Windows任務(wù)欄中點(diǎn)擊“開始”按鈕, 然后依次選擇“所有程序”、“附件”子菜單,并單擊“命令提示符”選項(xiàng)即可。這樣就會(huì)打開命令提示符窗口了。

  第三步:如果想把數(shù)據(jù)庫恢復(fù)到建立備份文件的數(shù)據(jù)庫集群之外的數(shù)據(jù)庫集群的話,或者從數(shù)據(jù)庫集群中刪除了角色的話,那么要確保制作備份文件時(shí)數(shù)據(jù)庫對象屬主的所有的角色名稱都存在于用來恢復(fù)備份文件的數(shù)據(jù)庫集群中。

  注意:如果制作備份文件時(shí)不知道數(shù)據(jù)庫對象屬于哪些角色,您可以使用文本編輯程序搜索ALTER object OWNER TO role語句,下面是些例子:

 
 
 
 
  1. ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;  
  2. ALTER TYPE public.emp_query_type OWNER TO postgres;  
  3. ALTER FUNCTION public.emp_comp(p_sal numeric, p_comm numeric) OWNER TO postgres;  

   您可以通過psql程序連接到數(shù)據(jù)庫集群,然后運(yùn)行\(zhòng)dg命令列出當(dāng)前存在于數(shù)據(jù)庫集群中的角色,如下所示:

 
 
 
 
  1. >cd C:\Program Files\PostgresPlus\8.4SS\bin  
  2. >psql -d postgres -U postgres  
  3. Password for user postgres:  
  4. psql (8.4.1)  
  5. WARNING: Console code page (437) differs from Windows code page (1252)  
  6. 8-bit characters might not work correctly. See psql reference  
  7. page "Notes for Windows users" for details.  
  8. Type "help" for help.  
  9. postgres=# \dg  
  10. List of roles  
  11. Role name | Attributes | Member of  
  12. -----------+-------------+-----------  
  13. postgres | Superuser | {}  
  14. : Create role  
  15. : Create DB  

   如果您需要?jiǎng)?chuàng)建角色的話,可以使用CREATE ROLE語句。注意:如果用來恢復(fù)數(shù)據(jù)庫對象的數(shù)據(jù)庫集群中沒有該數(shù)據(jù)庫對象原屬主的角色,那么當(dāng)ALTER語句無法指定該屬主時(shí),就會(huì)顯示一個(gè)出錯(cuò)信息。當(dāng)執(zhí)行恢復(fù)操作時(shí),該數(shù)據(jù)庫對象最終將分配給psql程序的-U選項(xiàng)指定的角色。

  第四步:保證在用于恢復(fù)數(shù)據(jù)庫的數(shù)據(jù)庫集群中沒有與制作備份的數(shù)據(jù)庫同名的數(shù)據(jù)庫。注意:如果不知道制作備份文件的數(shù)據(jù)庫的名稱,您可以使用文本編輯程序搜索CREATE DATABASE語句,下面舉例說明:

 
 
 
 
  1. CREATE DATABASE sample WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE 
  2. = 'English_United States.1252' LC_CTYPE = 'English_United States.1252';  

   您可以通過psql程序連接到數(shù)據(jù)庫集群,然后運(yùn)行\(zhòng)l命令列出當(dāng)前存在于數(shù)據(jù)庫集群中的數(shù)據(jù)庫,如下所示:

 
 
 
 
  1. >cd C:\Program Files\PostgresPlus\8.4SS\bin  
  2. >psql -d postgres -U postgres  
  3. Password for user postgres:  
  4. psql (8.4.1)  
  5. WARNING: Console code page (437) differs from Windows code page (1252)  
  6. 8-bit characters might not work correctly. See psql reference  
  7. page "Notes for Windows users" for details.  
  8. Type "help" for help.  
  9. postgres=# \l  
  10. List of databases  
  11. Name | Owner | Encoding | Collation | Ctype  
  12. -----------+----------+----------+----------------------------+------------------------  
  13. postgres | postgres | UTF8 | English_United States.1252 | English_United States  
  14. template0 | postgres | UTF8 | English_United States.1252 | English_United States  
  15. template1 | postgres | UTF8 | English_United States.1252 | English_United States  
  16. (3 rows)  

   如果數(shù)據(jù)庫集群中的一個(gè)數(shù)據(jù)庫與用于建立備份文件的數(shù)據(jù)庫同名,那么您現(xiàn)在就可以使用ALTER DATABASE語句的RENAME TO選項(xiàng)給現(xiàn)有的數(shù)據(jù)庫改名,或者使用DROP DATABASE語句刪除它。

  注意:在恢復(fù)操作期間,如果該數(shù)據(jù)庫集群含有一個(gè)與制作備份文件的數(shù)據(jù)庫同名的數(shù)據(jù)庫的話,那么當(dāng)CREATE DATABASE語句無法用同一名稱新建數(shù)據(jù)庫時(shí),就會(huì)顯示一個(gè)出錯(cuò)信息。這時(shí),psql程序?qū)默F(xiàn)有的數(shù)據(jù)庫中的備份文件來重新創(chuàng)建各數(shù)據(jù)庫對象。這很可能導(dǎo)致生成的數(shù)據(jù)庫中包含不希望有的數(shù)據(jù)庫對象,并且數(shù)據(jù)庫設(shè)置也不正確。

  第五步:使用cd命令將當(dāng)前工作目錄切換至Postgres Plus所在的bin目錄。

 
 
 
 
  1. cd C:\Program Files\PostgresPlus\8.4SS\bin  

   注意:如果您使用的是Postgres Plus Advanced Server的話,請將當(dāng)前工作目錄通過cd命令切換至dbserver/bin。

  第六步:運(yùn)行psql程序,并給出要連接(使用-d選項(xiàng))的數(shù)據(jù)庫的名稱、具有超級用戶特權(quán)的角色(使用-U選項(xiàng))和備份文件的目錄路徑(使用-f選項(xiàng))。注意:用-d選項(xiàng)規(guī)定的數(shù)據(jù)庫對恢復(fù)操作沒有影響。psql程序需要先通過數(shù)據(jù)庫連接建立一個(gè)會(huì)話,然后才能處理備份文件中的SQL語句和psql命令。

 
 
 
 
  1. psql -d postgres -U postgres -f C:\Temp\sample_backup  

   這樣就會(huì)從備份文件sample_backup中重新創(chuàng)建數(shù)據(jù)庫sample。下面給出psql程序處理備份文件中的SQL語句和psql命令時(shí)所顯示的部分消息:

 
 
 
 
  1. >psql -d postgres -U postgres -f C:\Temp\sample_backup  
  2. Password for user postgres:  
  3. SET  
  4. SET  
  5. SET  
  6. SET  
  7. SET  
  8. SET  
  9. CREATE DATABASE  
  10. ALTER DATABASE  
  11. psql (8.4.1)  
  12. WARNING: Console code page (437) differs from Windows code page (1252)  
  13. 8-bit characters might not work correctly. See psql reference  
  14. page "Notes for Windows users" for details.  
  15. You are now connected to database "sample".  

六、使用定制的歸檔格式的備份文件備份數(shù)據(jù)庫

  下面我們詳細(xì)介紹如何使用pg_dump程序創(chuàng)建數(shù)據(jù)庫的定制的歸檔格式的備份文件。

  ***步:登錄到Postgres Plus數(shù)據(jù)庫服務(wù)器所在的計(jì)算機(jī)。在該計(jì)算機(jī)上任何有效的帳戶都可以。

  第二步:下面的操作需要利用Windows命令行,所以它們都是在命令提示符窗口中鍵入的命令。

  為了打開命令提示符窗口,在屏幕底部的Windows任務(wù)欄中點(diǎn)擊“開始”按鈕, 然后依次選擇“所有程序”、“附件”子菜單,并單擊“命令提示符”選項(xiàng)即可。這樣就會(huì)打開命令提示符窗口了。

  第三步:使用cd命令將當(dāng)前工作目錄切換至Postgres Plus所在的bin目錄。

 
 
 
 
  1. cd C:\Program Files\PostgresPlus\8.4SS\bin  

   注意:如果您使用的是Postgres Plus Advanced Server的話,請將當(dāng)前工作目錄通過cd命令切換至dbserver/bin。

  第四步:使用具有超級用戶權(quán)限(-U選項(xiàng))的角色運(yùn)行pg_dump程序,使用–Fc來指定定制的歸檔格式,給備份文件指定的名稱(-f選項(xiàng)),以及用來制作備份文件的數(shù)據(jù)庫的名稱(命令行的***一個(gè)參數(shù))。

 
 
 
 
  1. pg_dump -U postgres -Fc -f C:\Temp\sample_backup sample  

   上面的命令就會(huì)為數(shù)據(jù)庫sample建立一個(gè)備份文件,名為sample_backup。我們不能直接觀察定制的歸檔格式的備份文件,不過可以使用pg_restore程序的- l選項(xiàng)來生成該備份文件的目錄:

 
 
 
 
  1. >pg_restore -l C:\Temp\sample_backup  
  2. ;  
  3. ; Archive created at Mon Nov 23 13:07:50 2009  
  4. ; dbname: sample  
  5. ; TOC Entries: 44  
  6. ; Compression: -1  
  7. ; Dump Version: 1.11-0  
  8. ; Format: CUSTOM  
  9. ; Integer: 4 bytes  
  10. ; Offset: 8 bytes  
  11. ; Dumped from database version: 8.4.1  
  12. ; Dumped by pg_dump version: 8.4.1  
  13. ;;  
  14. ; Selected TOC Entries:  
  15. ;  
  16. 6; 2615 2200 SCHEMA - public postgres  
  17. 1818; 0 0 COMMENT - SCHEMA public postgres  
  18. 1819; 0 0 ACL - public postgres  
  19. 323; 2612 16767 PROCEDURAL LANGUAGE - plpgsql postgres  
  20. 312; 1247 16770 TYPE public emp_query_type postgres  
  21. 19; 1255 16771 FUNCTION public emp_comp(numeric, numeric) postgres  
  22. 20; 1255 16772 FUNCTION public emp_query(numeric, numeric, character varying) postgres  
  23. 21; 1255 16773 FUNCTION public emp_query_caller() postgres  
  24. 22; 1255 16774 FUNCTION public emp_sal_trig() postgres  

 七、從定制的歸檔格式的備份文件恢復(fù)數(shù)據(jù)庫

  下面我們詳細(xì)介紹如何使用pg_restore程序從一個(gè)定制的歸檔格式的備份文件恢復(fù)數(shù)據(jù)庫。

  上面,我們?yōu)閿?shù)據(jù)庫sample建立了一個(gè)定制的歸檔格式的備份文件,即sample_backup,之后我們要用它來恢復(fù)該示例數(shù)據(jù)庫。

  ***步:登錄到Postgres Plus數(shù)據(jù)庫服務(wù)器所在的計(jì)算機(jī)。在該計(jì)算機(jī)上任何有效的帳戶都可以。

  第二步:下面的操作需要利用Windows命令行,所以它們都是在命令提示符窗口中鍵入的命令。

  為了打開命令提示符窗口,在屏幕底部的Windows任務(wù)欄中點(diǎn)擊“開始”按鈕, 然后依次選擇“所有程序”、“附件”子菜單,并單擊“命令提示符”選項(xiàng)即可。這樣就會(huì)打開命令提示符窗口了。

  第三步:如果想把數(shù)據(jù)庫恢復(fù)到建立備份文件的數(shù)據(jù)庫集群之外的數(shù)據(jù)庫集群的話,或者從數(shù)據(jù)庫集群中刪除了角色的話,那么要確保制作備份文件時(shí)數(shù)據(jù)庫對象屬主的所有的角色名稱都存在于用來恢復(fù)備份文件的數(shù)據(jù)庫集群中。

  注意,如果建立數(shù)據(jù)庫對象備份文件的時(shí)候不知道數(shù)據(jù)庫對象屬主的角色的話,可以從定制的歸檔格式的備份文件生成該備份的SQL文字版本。為此目的,可以使用pg_restore程序,唯一的參數(shù)就是該備份文件。然后您可以在文本中搜索ALTER object OWNER TO role語句。

  具體如下所示:

 
 
 
 
  1. >cd C:\Program Files\PostgresPlus\8.4SS\bin  
  2. >pg_restore C:\Temp\sample_backup | find "OWNER TO"  
  3. ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;  
  4. ALTER TYPE public.emp_query_type OWNER TO postgres;  
  5. ALTER FUNCTION public.emp_comp(p_sal numeric, p_comm numeric) OWNER TO  
  6. postgres;  
  7. .  
  8. .  
  9. .  

   您可以通過psql程序連接到數(shù)據(jù)庫集群,然后運(yùn)行\(zhòng)dg命令列出當(dāng)前存在于數(shù)據(jù)庫集群中的角色,如下所示:

 
 
 
 
  1. >cd C:\Program Files\PostgresPlus\8.4SS\bin  
  2. >psql -d postgres -U postgres  
  3. Password for user postgres:  
  4. psql (8.4.1)  
  5. WARNING: Console code page (437) differs from Windows code page (1252)  
  6. 8-bit characters might not work correctly. See psql reference  
  7. page "Notes for Windows users" for details.  
  8. Type "help" for help.  
  9. postgres=# \dg  
  10. List of roles  
  11. Role name | Attributes | Member of  
  12. -----------+-------------+-----------  
  13. postgres | Superuser | {}  
  14. : Create role  
  15. : Create DB  

   如果您需要?jiǎng)?chuàng)建角色的話,可以使用CREATE ROLE語句。

  注意:如果用來恢復(fù)數(shù)據(jù)庫對象的數(shù)據(jù)庫集群中沒有該數(shù)據(jù)庫對象原屬主的角色,那么當(dāng)ALTER語句無法指定該屬主時(shí),就會(huì)顯示一個(gè)出錯(cuò)信息。當(dāng)執(zhí)行恢復(fù)操作時(shí),該數(shù)據(jù)庫對象的屬主最終將由pg_restore程序的-U選項(xiàng)指定的角色決定。

  第四步:保證在用于恢復(fù)數(shù)據(jù)庫的數(shù)據(jù)庫集群中沒有與制作備份的數(shù)據(jù)庫同名的數(shù)據(jù)庫。注意:如果不知道制作備份文件的數(shù)據(jù)庫的名稱,您可以使用pg_restore程序,加上-l選項(xiàng),以備份文件作為唯一的參數(shù)來列出定制的歸檔格式的備份文件的目錄。數(shù)據(jù)庫名稱位于目錄頂部的dbname字段。

  具體如下所示:

 
 
 
 
  1. >cd C:\Program Files\PostgresPlus\8.4SS\bin  
  2. >pg_restore -l C:\Temp\sample_backup  
  3. ;  
  4. ; Archive created at Mon Nov 23 13:07:50 2009  
  5. ; dbname: sample  
  6. .  
  7. .  
  8. .  

   您可以通過psql程序連接到數(shù)據(jù)庫集群,然后運(yùn)行\(zhòng)l命令列出當(dāng)前存在于數(shù)據(jù)庫集群中的數(shù)據(jù)庫,如下所示:

 
 
 
 
  1. >cd C:\Program Files\PostgresPlus\8.4SS\bin  
  2. >psql -d postgres -U postgres  
  3. Password for user postgres:  
  4. psql (8.4.1)  
  5. WARNING: Console code page (437) differs from Windows code page (1252)  
  6. 8-bit characters might not work correctly. See psql reference  
  7. page "Notes for Windows users" for details.  
  8. Type "help" for help.  
  9. postgres=# \l  
  10. List of databases  
  11. Name | Owner | Encoding | Collation | Ctype  
  12. -----------+----------+----------+----------------------------+------------------------  
  13. postgres | postgres | UTF8 | English_United States.1252 | English_United States  
  14. template0 | postgres | UTF8 | English_United States.1252 | English_United States  
  15. template1 | postgres | UTF8 | English_United States.1252 | English_United States  
  16. (3 rows)  

   如果數(shù)據(jù)庫集群中的一個(gè)數(shù)據(jù)庫與用于建立備份文件的數(shù)據(jù)庫同名,那么您現(xiàn)在就可以使用ALTER DATABASE語句的RENAME TO選項(xiàng)給現(xiàn)有的數(shù)據(jù)庫改名,或者使用DROP DATABASE語句刪除它。

  注意:在恢復(fù)操作期間,如果該數(shù)據(jù)庫集群含有一個(gè)與制作備份文件的數(shù)據(jù)庫同名的數(shù)據(jù)庫的話,那么當(dāng)CREATE DATABASE語句無法用同一名稱新建數(shù)據(jù)庫時(shí),就會(huì)顯示一個(gè)出錯(cuò)信息。這時(shí),pg_restore程序?qū)默F(xiàn)有的數(shù)據(jù)庫中的備份文件來重新創(chuàng)建各數(shù)據(jù)庫對象。這很可能導(dǎo)致生成的數(shù)據(jù)庫中包含不希望有的數(shù)據(jù)庫對象,并且數(shù)據(jù)庫設(shè)置也不正確。

  第五步:使用cd命令將當(dāng)前工作目錄切換至Postgres Plus所在的bin目錄。

 
 
 
 
  1. cd C:\Program Files\PostgresPlus\8.4SS\bin  

   注意:如果您使用的是Postgres Plus Advanced Server的話,請將當(dāng)前工作目錄通過cd命令切換至dbserver/bin。

  第六步:運(yùn)行pg_restore程序,并給出要連接(使用-d選項(xiàng))的數(shù)據(jù)庫的名稱、具有超級用戶特權(quán)的角色(使用-U選項(xiàng)),并用-C選項(xiàng)表明該恢復(fù)操作時(shí)建立一個(gè)與生成備份文件的數(shù)據(jù)庫同名的新數(shù)據(jù)庫,以及備份文件的目錄路徑。

  注意:如果同選項(xiàng)- C一起使用的話,那么用-d選項(xiàng)規(guī)定的數(shù)據(jù)庫對恢復(fù)操作沒有影響。pg_restore程序需要通過數(shù)據(jù)庫連接建立一個(gè)會(huì)話,然后才能從備份文件中創(chuàng)建新的數(shù)據(jù)庫并恢復(fù)數(shù)據(jù)庫對象。

 
 
 
 
  1. pg_restore -d postgres -U postgres -C C:\Temp\sample_backup  

   這樣就會(huì)從備份文件sample_backup中重新創(chuàng)建數(shù)據(jù)庫sample。

  八、小結(jié)

  本文為讀者詳細(xì)介紹了在Windows系統(tǒng)上備份和恢復(fù)EnterpriseDB數(shù)據(jù)庫的具體操作過程。通過備份和恢復(fù)功能,我們能夠在工作的不同階段對數(shù)據(jù)庫進(jìn)行備份,并在需要的時(shí)候進(jìn)行相應(yīng)的恢復(fù)操作。希望本文對您有所幫助。


網(wǎng)頁題目:Windows下EnterpriseDB備份和恢復(fù)攻略
網(wǎng)站鏈接:http://www.dlmjj.cn/article/cdipdgs.html