【DB2學習筆記之四】實例概念及其操作


作者:gnuhpc
出處:http://www.cnblogs.com/gnuhpc/

在DB2中實例的可以如下描述:一個實例提供了一個獨立的環境,在這個環境里可以進行數據庫操作和程序運行。在一個服務器中可以有多個實例,每個實例可以有多個數據庫。由於環境是獨立的,所以實例間內容上是不透明的,因此相同名字的項目會出現在不同的實例中。實例的出現為用戶進行操作具有了獨立性。從架構的角度來看,一個實例是構建於DB2二進制代碼和用戶數據項目中的一層。丟棄一個實例並不意味着必須放棄它所屬的數據庫。

創建實例時需要指定fenced user: 原因是默認情況下,用戶定義的函數和存儲過程是在 fenced 模式下創建的,因而這些進程運行在與 DB2 引擎不同的地址空間中,也稱為系統控制器進程 db2sysc。這為數據庫管理器提供了保護,使之免於被用戶定義的例程意外地或惡意地破壞。
有一種實例叫做client instance,它是一種Server instance的縮小版實例,這種實例不能被開始或停止,在其上不能創建數據庫。你在如下的情況下才需要它:You need to have a client instance if you have two physically separate Linux and UNIX machines, one containing the DB2 client code (assume it is an application server machine) and the other one containing the DB2 server code (the DB2 server machine).On the client machine a client instance must be created that will associate it to a given operating system user. Logging on as this user lets you perform the commands required to set up connectivity to the DB2 server machine.
在Linux下一般的DB2實例是使用多進程架構進行操作的,db2sysc是主進程,在這個主進程下有以下子進程:
db2acd:autonomic computing daemon DB2運行監控守護進程
db2ckpw: server端鑒權進程
db2gds: 幫助產生子進程,進行相關子進程管理的守護進程。
db2ipccm:管理IPC
db2resyn:涉及 twophase-commit的交易執行。
db2tcpcm:TCP通信管理。
db2wdog:看門狗進程。
一、創建
創建前的准備:
因為實例的名稱必須與擁有實例的用戶的名稱相同。
所以 1 必須先創建擁有實例的用戶: useradd dbinst
2 一個用戶只能擁有一個實例
因為在server上創建時必須要指定一個FencedID(稍后會解釋)
所以 1 必須先創建這個Fencedid: useradd dbfenc
1. 使用適當權限登錄。
2. 運行 db2icrt 命令。
/opt/ibm/db2/V9.1/instance/db2icrt -a AuthType -u FencedID InstName
-a AuthType (Linux 或 UNIX)
表示實例的認證類型。AuthType 可為 SERVER、CLIENT 或 SERVER_ENCRYPT 其中之一。 SERVER 是缺省值。此參數是可選的。
-u FencedID
表示將用來運行受防護用戶定義的函數(UDF)和受防護存儲過程的用戶的名稱。如果您正在客戶機上創建實例,那么此標志不是必需的。但是在server上創建時必須要指定這個FencedID的。指定您創建的受防護用戶的名稱。
InstName
表示實例的名稱。實例的名稱必須與擁有實例的用戶的名稱相同。指定您創建的擁有實例的用戶的名稱。將在擁有實例的用戶的主目錄中創建該實例
3.添加實例
/opt/ibm/db2/V9.1/instance/db2icrt -a server -u dbfenc dbinst
二、刪除
db2drop instance_name
-f 是強制應用程序標志。如果指定了此標志,則將強制終止使用該實例的所有應用程序。
db2drop -f instance_name
三、啟動一個存在的實例
su - 實例擁有者的UserID
db2start
四、停止一個運行中的實例
db2stop
強制停止使用:db2stop force等效於force applications all
五、明確當前運行中的實例
db2 get instance
六、查看系統中存在的實例
db2ilist
七、遷移實例
若您決定轉而使用比服務器上安裝的 DB2 軟件更新的版本,或者需要將 32 位實例遷移為 64 位實例,就需要進行實例遷移。在 Windows 上,實例遷移是在必要的遷移過程中隱式完成的。在 Linux 和 UNIX 上,可使用以下命令顯式地遷移已有實例:
db2imigr instance_name
八、更新DB2實例
在為 DB2 安裝修補程序包或補丁時,一旦在服務器上安裝好了修補程序包,您就需要更新已有實例,以鏈接到新的修補程序文件。使用以下命令更新實例:
db2iupdt instance_name
九、自動啟動實例
db2iauto –on db2inst1
十、依附一個實例
attach 命令用來連接 DB2 實例,connect 命令用來連接 DB2 實例中的數據庫。
要想進行實例級的維護任務,需要先使用attach命令進行實例附加。一些實例級的操作如下:
• Listing applications connected to your databases
• Forcing off applications
• Monitoring a database
• Updating the Database Manager Configuration parameters
舉一個例子:
list applications命令列出了在現在活躍的實例中連接到所有數據庫的程序,那么你不會在數據庫級別上進行這個操作,而是要在實例級進行。
注意 在attach之前要先啟動要attach的實例。
attach to instance_name_as_indicated_in_DB2INSANCE
若是顯式的進行attach可以如下操作:
attach to db2 user XXX
若依附的本地或遠程實例不是活躍的實例,那么使用命令
attach to node_name [user userId] [using password]
解依附為detach
注意在一個CLP會話中只能同時attach一個實例

作者:gnuhpc
出處:http://www.cnblogs.com/gnuhpc/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM