成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

備份和恢復DB2 Universal Database(1)

瀏覽:3日期:2023-11-10 14:07:13

動機

SQL 語言提供了模式的概念,用來對所有類型的 SQL 對象進行分組。可以將 SQL 語言中的模式 理解成文件系統中的目錄。DB2 UDB for Linux, UNIX, and Windows 很好地支持 SQL 模式概念,可以將 USER 與 CURRENT SCHEMA 隔離開,并為例程解析提供了 PATH。

使用模式很輕易,但是它們的治理就不同了。模式的重命名、模式級備份和恢復以及模式的復制等任務比較困難,因為必須手工進行腳本編程,而且對象及其依靠性可能很復雜。

本文提供一個具有簡單接口的過程庫,使用戶能夠將給定模式中的所有對象備份到文件系統中、在另一個模式下恢復備份以及刪除給定模式中的所有對象。

安裝

下載并解壓縮本文包含的 backupschema.zip 文件之后,會得到以下文件:

backupschema.sql

這個文件包含一些 DDL 語句,這些語句安裝過程以及各個 helper 例程和表。在默認情況下,所有對象使用的模式是 "ADMIN"。假如要改變這個模式,只需修改這個文件開頭的 SET SCHEMA 和 SET PATH 語句,將 "ADMIN" 替換為您選擇的模式名。

為了執行這個腳本,作為 DB2 治理員連接到數據庫,然后執行 db2 -tvf backupschema.sql。

這些過程使用 SYSPROC.ADMIN_CMD() 存儲過程進行導出并使用 SYSPROC.DB2LOAD() 存儲過程進行裝載。(SYSPROC.ADMIN_CMD() 是在 DB2 V8.2.2(FP 9)中引入的。因此,需要的最低版本是 V8.2.2。)SYSPROC.ADMIN_CMD() 在 sqllibadm.fenced 的所有者指定的 fenced 用戶 id 和組 之下執行。因此,導出的文件具有與 sqllibadm.fenced 相同的所有者和組。因此一定要確保這個用戶和組對指定的目錄有寫特權,而且用來訪問文件的用戶 id 也有訪問權。簡單的解決方案是將 sqllibadm.fenced 的所有者改為實例所有者。更安全的解決方案是讓這兩個 ID 成為同一個組的成員,然后只將 sqllibadm.fenced 的組所屬權改為這個組。這樣就能夠通過組成員關系訪問產生的文件。

規范

DROPSCHEMA()

這個過程將刪除模式中定義的所有對象,并最終刪除這個模式本身。

參數

要刪除的模式的名稱。SQL 標識符是大小寫敏感的。要刪除模式 "MYSCHEMA",模式名必須是大寫的:'MYSCHEMA'。

假如另一個模式中的對象依靠于要刪除的模式,那么應用刪除對象的常規規則。因此,在大多數情況下,依靠對象也會被刪除或失效。但是,一些對象(比如 SQL 函數)實施 RESTRICT 語義。假如碰到這種情況,那么這個過程將失敗。

DROPSCHEMA 過程在事務控制下執行,它自己不執行提交或回退。所以,要想讓模式的刪除持久化,必須提交刪除操作。同樣,假如發生錯誤,那么過程的調用者需要決定是否將過程回退。

BACKUPSCHEMA(,)

這個過程將模式中的所有對象邏輯備份到文件系統中。支持的對象是:

表,包括統計數據。不支持范圍簇表(RCT)、物化查詢表(MQT)和有類型的表。

視圖,但是不包括有類型的視圖。

函數,包括源、SQL 和外部函數。注重,對外部函數的可執行代碼不進行備份。函數的統計數據也不備份。

SQL 過程和外部過程。注重,對外部過程的可執行代碼不進行備份。

不同的數據類型。注重,不支持結構化數據類型。

索引,但是不包括索引擴展。

所有約束。

序列,包括它們的高水位標志。

支持的所有對象上的注釋。

支持的所有對象上的特權。

這個備份過程可以包括 PATH、SCHEMA 和 PREP 選項。

不支持聯邦對象(比如 NICKNAME)以及數據庫分區特性(DPF)。

參數

要備份的模式的大小寫敏感名。

對象要備份到的文件系統目錄。這個目錄必須存在,在 UNIX 或 Linux 上以斜線結尾,在 Windows 上以反斜線結尾;例如 'D:TEMPMYSCHEMA'。假如這個目錄是 NULL 或空字符串,那么不導出文件。這個過程只用 DDL 語句填充 DDLLOG 表。COPYSCHEMA 過程要使用這個方式。

在成功地備份之后,這個目錄包含以下對象的 IXF 文件:

備份的模式中的表。

SYSSTAT 視圖,包含表、列和索引統計數據。

DDL 日志,包含重建所有對象所需的信息。

用戶可以在這個目錄中添加其他文件,比如外部例程的可執行代碼。完成之后,可以根據需要用 zip 和 tar 對這個目錄進行壓縮、打包或傳輸。

RESTORESCHEMA(,,,)

這個過程恢復以前用 BACKUPSCHEMA 備份的模式。使用當前用戶的 ID 創建所有對象。假如恢復的任何對象引用另一個模式中的對象,而被引用的對象在目標數據庫中不存在,那么這個過程將失敗。這個過程執行內部提交。

假如恢復到與 BACKUPSCHEMA 不同的模式中,那么所有包含 SQL 體(比如視圖、SQL 例程和檢查約束)的 SQL 對象在它們的定義中必須沒有顯式地引用源模式。例如,CHECK (MYSCHEMA.MYTABLE.C1 > 0) 無法成功地恢復到 "MYSCHEMA" 之外的模式中,而 CHECK (MYTABLE.C1 > 0) 可以。為了能夠在 RESTORESCHEMA 中指定其他模式,建議在定義 SQL 對象時利用非凡寄存器 CURRENT PATH 和 CURRENT SCHEMA,而不是顯式地指定局部模式。

參數

要將對象恢復到的模式的大小寫敏感名。假如這個模式已經存在,那么先刪除它。假如模式是 NULL 或空字符串,那么這個過程采用備份時的模式名進行恢復。COPYSCHEMA 過程采用這種方式。

包含要添加到每個表定義中的表空間信息的字符串。這個子句可能包含 IN 、LONG IN 和 INDEX IN 子句。假如應該使用默認值,那么這個參數可以是空字符串或 NULL。例如:'IN DATA8K INDEX IN INDEX4K'

文件系統中存放 BACKUPSCHEMA 生成的文件的目錄。這個目錄在 UNIX 或 Linux 上必須以斜線結尾,在 Windows 上必須以反斜線結尾;例如 'D:TEMPMYSCHEMA'。 文件系統中的一個目錄,這個過程將把裝載消息文件寫到這個目錄中。這個目錄必須根據操作系統以適當的斜線或反斜線結尾。

COPYSCHEMA(,,) 這個過程在相同的數據庫中創建模式的副本。

參數

新模式的大小寫敏感名。

包含要添加到每個表定義中的表空間信息的字符串。假如是 NULL 或 '',那么使用默認值。

要復制的模式的大小寫敏感名。

REBINDPROCEDURES()

這個過程對一個模式中的所有 SQL 過程進行重新綁定。在為模式中過程使用的表收集新的統計數據之后,應該調用這個過程。這個過程將重新優化 SQL 過程中使用的所有 SQL 語句。

參數

模式的大小寫敏感名。

示例

CALL ADMIN.DROPSCHEMA('SAMPLE')

這個過程調用會刪除模式 "SAMPLE" 中的所有對象。

CALL ADMIN.BACKUPSCHEMA('UTIL', 'D:TEMPUTIL_SCHEMA')

這個過程調用將模式 "UTIL" 中的所有對象存儲在目錄 D:TEMPUTIL_SCHEMA 中。

CALL ADMIN.RESTORESCHEMA(NULL, NULL, 'D:TEMPUTIL_SCHEMA', 'D:TEMP')

這個過程調用從 D:TEMPUTIL_SCHEMA 中獲取對象,并使用默認表空間將它們恢復到原來的模式中。來自裝載過程的消息寫入 D:TEMP 中。

CALL ADMIN.RESTORESCHEMA('SRIELAU', 'IN "DATA" INDEX IN "INDEX"', 'D:TEMPUSER_SCHEMA', 'D:TEMP')

這個過程調用從 D:TEMPUSER_SCHEMA 中獲取對象,并將它們恢復到 "SRIELAU" 模式中,對于表數據使用表空間 "DATA",對于索引使用 "INDEX"。來自裝載過程的消息寫入 D:TEMP 中。

CALL ADMIN.COPYSCHEMA('SRIELAU', 'IN "DATA" INDEX IN "INDEX" LONG IN "LONG"', 'STOLZE')

這個過程調用將模式 "STOLZE" 中的所有對象復制到模式 "SRIELAU" 中,對于表數據使用表空間 "DATA",對于索引使用 "INDEX",對于 LOB 數據使用 "LONG"。 CALL ADMIN.REBINDPROCEDURES('SRIELAU'') 這個過程調用對模式 SRIELAU 中的所有 SQL 過程進行重新綁定,獲取新的統計數據。

實現

本節在較高的層面上概述本文前面討論的過程的實現。

成功地恢復一個模式中的所有對象的主要困難是,處理模式中不同對象之間的依靠性。例如,表可能依靠于用戶定義的不同類型;檢查約束依靠于函數;視圖依靠于視圖、別名和函數;等等。

因為 DB2 UDB 不能創建依靠于不存在的實體的對象,所以正確的執行次序是非常重要的。但是,假如仔細考慮一下這個問題,就會發現依靠圖的深度一般不大,而且某些對象是自然的端點。比如,用戶定義的類型不能依靠于其他 DDL 對象,而且表(不包括約束)只依靠于不同的類型。意識到這一情況,就可以分三個階段實現恢復:

恢復所有不同的類型,然后恢復所有表及其索引。

將數據復制到表中并獲取統計數據。這樣做是為了確保 SQL 過程的執行計劃是正確的。

在一個循環中恢復所有其他對象。因此,假如任何給定對象的創建失敗了,那么不必擔心,只要能夠繼續遍歷要恢復的對象的列表。只有當過程進行不下去時,才會返回錯誤。

利用這種基本的恢復算法,很輕易實現一種簡單的基礎設施。

BACKUPSCHEMA 過程使用 DDLLOG 表記錄 DDL 語句。第一行(編號為 0)包含源模式。后面是不同類型的 DDL 語句,然后是表的 DDL 語句。這個階段的末尾由一個空行表示,空行后面是所有其他對象。

這個表包含一個 SUCCESS 列,RESTORESCHEMA 使用這一列記錄一個對象是否成功創建了。

DDL 對象的組成完全基于文檔記錄的 SYSCAT 編目視圖,只有一個例外。IDENTITY 列的高水位標志需要從 SYSIBM.SYSSEQUENCES.LASTASSIGNVAL 中獲得,在 DB2 UDB V8 中沒有提供這個值。

與文件系統的交互是通過 SYSPROC.ADMIN_CMD 過程實現的,這個過程支持導出,用于將 DDLLOG 表、用戶數據和統計數據寫到文件中。對于裝載,要使用 SYSPROC.DB2LOAD。

用來恢復模式的強制性方式也用于刪除模式。DROPSCHEMA 過程簡單地不斷嘗試刪除對象,直到這個過程進行不下去或者所有對象都被刪除為止。

結束語

本文提供了一組強大的過程,可以執行模式級操作,比如對給定模式中的所有對象進行邏輯備份、恢復和復制。除了用這個庫幫助 ISV 和最終用戶之外,本文還演示了如何利用 DB2 UDB 中豐富的 SQL API 為用戶提供更多功能。

標簽: DB2 數據庫
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美日韩高清影院| 午夜一区二区三视频在线观看| 成人综合婷婷国产精品久久免费| 免费视频一区| 亚洲欧洲综合另类| 国产精品porn| 精品三级av在线| 国产精品中文有码| 欧美色中文字幕| 日韩黄色免费电影| 亚洲伦理一区| 欧美高清一级片在线观看| 99视频热这里只有精品免费| 欧美午夜精品久久久久久超碰| 日韩精品视频网站| 色老头久久综合| 老司机精品视频在线| 欧美午夜精品久久久久久孕妇| 蜜臂av日日欢夜夜爽一区| 久久一区二区精品| 日韩成人一级大片| 欧洲一区二区三区在线| 欧美午夜不卡| 久久日一线二线三线suv| 国产a精品视频| 欧美mv日韩mv亚洲| 波多野结衣在线aⅴ中文字幕不卡| 欧美精品在欧美一区二区少妇| 三级在线观看一区二区| 久久精彩视频| 视频在线观看一区| 欧美亚洲一区二区三区四区| 韩国精品一区二区| 欧美一区二区福利视频| 成人在线综合网站| 精品国产a毛片| 欧美一区亚洲| 亚洲欧洲性图库| 国产亚洲激情| 天堂久久一区二区三区| 久久网站免费| 久久精品二区亚洲w码| 欧美二区在线观看| 国产精品亚洲午夜一区二区三区| 日韩一区二区电影| 成人app下载| 欧美国产成人精品| 一本色道久久综合亚洲精品不 | 亚洲人吸女人奶水| 国产一区二区三区的电影 | 精品久久久久一区二区国产| av亚洲精华国产精华| 国产精品欧美综合在线| 国产日韩欧美一区二区三区在线观看| 天天做天天摸天天爽国产一区| 欧美性生活影院| 成人免费福利片| 欧美国产精品一区二区| 亚洲一区二区四区| 日韩精品电影在线观看| 欧美日韩国产三级| 成人免费视频免费观看| 中文成人综合网| 国产美女诱惑一区二区| 日本亚洲一区二区| 日韩欧美一卡二卡| 国产一区二区三区无遮挡| 一区二区三区高清不卡| 一本大道久久a久久精二百| 韩国v欧美v亚洲v日本v| 久久丝袜美腿综合| 亚洲日本精品国产第一区| 亚洲电影视频在线| 在线不卡一区二区| 欧美日韩天堂| 性欧美疯狂xxxxbbbb| 在线成人av网站| 国内精品福利| 日韩 欧美一区二区三区| 日韩三级在线免费观看| 欧美久久视频| 青青草91视频| 精品第一国产综合精品aⅴ| 亚洲精品男同| 日本免费新一区视频| 日韩精品资源二区在线| 亚洲欧洲日韩综合二区| 久久精品国产亚洲高清剧情介绍| 久久无码av三级| 欧美亚洲自偷自偷| 国产成人亚洲精品狼色在线| 中文在线一区二区| 一本大道久久a久久综合| 99re这里只有精品视频首页| 亚洲午夜免费视频| 精品久久五月天| 性欧美xxxx大乳国产app| 成人在线综合网| 亚洲午夜私人影院| 久久久美女艺术照精彩视频福利播放| 羞羞视频在线观看欧美| www.亚洲色图| 午夜精品国产更新| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲欧美影院| 免费成人小视频| 日本一区二区三区国色天香 | 国产精品久久久久久久午夜片| 在线观看免费成人| 欧美日韩一区在线播放| 麻豆一区二区99久久久久| 国产亚洲欧美在线| 欧美三级三级三级爽爽爽| 欧美日韩一区二区三区免费| 狠狠色综合日日| 亚洲品质自拍视频网站| 91精品国产91久久久久久一区二区 | 欧美肥大bbwbbw高潮| 一本色道精品久久一区二区三区| 国产一区二区免费在线| 色视频一区二区| 欧美黄色一区| 九色|91porny| 一级中文字幕一区二区| 欧美一区二区三区啪啪| 亚洲欧美视频| 欧美激情精品久久久六区热门| 蜜臀av在线播放一区二区三区| 国产精品久久久久久久久免费樱桃| 欧美另类久久久品| 国产精品一区二区三区免费观看| www.久久久久久久久| 免费在线一区观看| 亚洲综合一区二区三区| 中文字幕精品一区二区精品绿巨人| 欧美无砖专区一中文字| 国产一区二区你懂的| 国产精品v日韩精品v欧美精品网站 | 女人香蕉久久**毛片精品| 国产美女视频91| 五月天一区二区| 亚洲欧美色综合| 久久综合九色综合97婷婷女人 | 依依成人综合视频| 亚洲国产精品成人久久综合一区| 6080国产精品一区二区| 麻豆av福利av久久av| 在线成人国产| 欧美a级片一区| 不卡视频在线看| 国产精品一区久久久久| 免费在线观看一区二区三区| 亚洲bt欧美bt精品777| 亚洲美女一区二区三区| 中文字幕在线观看一区| 国产精品无码永久免费888| 久久综合久久鬼色中文字| 欧美电影免费提供在线观看| 欧美男生操女生| 欧美日韩精品综合在线| 在线看国产一区二区| 国产精品一区毛片| 亚洲高清成人| 欧美日韩免费高清| 91日韩在线专区| 成人av电影观看| www.在线成人| 99久久99久久综合| 91在线云播放| 欧美 日韩 国产在线| 91丝袜呻吟高潮美腿白嫩在线观看| 懂色av中文一区二区三区| 国产精品一区在线| 成人午夜视频免费看| 国产乱人伦精品一区二区在线观看| 奇米888四色在线精品| 视频一区二区三区入口| 日韩精品久久久久久| 亚洲成a人片在线不卡一二三区| 亚洲最快最全在线视频| 一级日本不卡的影视| 亚洲国产精品影院| 亚洲成人av电影在线| 午夜久久电影网| 亚洲6080在线| 青青青爽久久午夜综合久久午夜| 日本人妖一区二区| 亚洲精品久久| 美脚丝袜一区二区三区在线观看| 久久大香伊蕉在人线观看热2| 老**午夜毛片一区二区三区| 欧美丝袜丝交足nylons图片| 日韩一区二区三区电影在线观看| 日韩欧美国产系列| 久久久久亚洲综合| 91精品久久久久久久久99蜜臂| 精品国产免费视频| 国产日韩欧美a| 亚洲精品久久久蜜桃| 午夜日韩在线电影|