DB2中編目本機當中資料庫的方法,db2編目

來源:互聯網
上載者:User

DB2中編目本機當中資料庫的方法,db2編目

問題:同一節點上有兩個執行個體,如果想在其中一個執行個體下訪問另一個執行個體中的資料庫,有兩種方法:

1. 使用catalog local node的方式,在其中一個執行個體中將另外一個執行個體直接編目,這種方試中,它們之間採用的通訊方式是IPC(處理序間通訊),這種方式只能在同一物理機上進行。

2. 使用catalog TCPIP node的方式,將其中一個作為用戶端,另一個作為服務端, 這種方式中,它們之間採用的通訊方式是TCPIP,這種方式不限於本地,也適用於遠程通訊。

 

下面分別舉兩個例子來說明這個過程 

 

實驗 DB2 10.1.0.0, Windows作業系統,使用catalog local node的方式。

1. 機器上有兩個執行個體INST01和INST02,執行個體INST01下有一個資料庫SAMPLE1,執行個體INST02下有一個資料庫SAMPLE2,啟動兩個執行個體之後,如所示:


現在,在執行個體INST01下使用catalog local node的方式將執行個體INST02編目進來(注意,以下所有操作都是在執行個體INST01下完成的)


這裡的node01相當於給INST02的起的別名,使用attach串連到node01之後,發出的create database命令相當於在INST02下進行的。



從以上的輸出中可以看到建立的資料庫SAMPLE3實際上是在INST02下,而非INST01下。

 

為了可以在INST01下訪問INST02中的資料庫SAMPLE2,可以直接在INST01對其編目。




可以使用 connect to 命令串連資料庫了



實驗2 DB2 v10.5 , Linux 使用catalog TCPIP node的方式

同一台物理機上有兩個執行個體 qingsong和db2inst2,其中執行個體QINGSONG下有資料庫QSMIAO,作為服務端,執行個體db2inst2作為用戶端



1. 查看/etc/services檔案


2. 使用root使用者在/etc/services裡添加一行 REMOTE_TEST 60012/tcp

3. 服務端qingsong上更新資料庫管理員設定檔

$ db2 update dbm cfg using svcename REMOTE_TEST

$ db2stop

$ db2start

$ db2 get dbm cfg | grep svcename

 

4. 設定服務端的通訊協定為TCPIP

$ db2set DB2COMM=tcpip

$ db2stop

$ db2start

$ db2set -all

 

 

5. 用戶端 編目節點

$ db2start

$ db2 list node directory

$ db2 catalog TCPIP node qingnode remote localhost server 60012

$ db2 terminate

$ db2 list node directory

 

其中,localhost指本機,如果是在遠程,可以直接修改為對應的IP地址,60012指服務端對應的連接埠。

 

6. 用戶端 編目資料庫

$ db2 catalog db qsmiao as remoteDB at node qingnode

$ db2 list db directory

$ db2 connect to REMOTEDB user qingsong using qingsong



上面的這種編目方式是 TCPIP node 

 

參考資料:

Catalog tcpip node

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001944.html?cp=SSEPGG_9.7.0%2F3-6-2-4-17&lang=en

Catalog local node

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001989.html?cp=SSEPGG_9.7.0%2F3-6-2-4-14&lang=en

Catalog database

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001936.html?cp=SSEPGG_9.7.0%2F3-6-2-4-10&lang=en

 



到底DB2 catalog是什東西?

解,具體來說編目有編目節點,編目資料庫等。如果要理解編目,我先簡單講一下DB2資料庫的體繫結構,在DB2資料庫中最大的概念是系統(節點)也就是主機,下面是執行個體,執行個體下面是資料庫,然後是資料表空間,然後是資料庫物件。現在假設你有一個資料庫伺服器在p570的機器上,你有一個用戶端在db2 catalog tcpip node p570 remote 172.10.10.10 server 50000在上面的這條命令中p570是一個節點名(在一個機器上必須是唯一的),remote後面是伺服器的IP地址,server是遠程伺服器上執行個體對應的連接埠號碼。DB2通過這種方式在本地的SQLNODIR檔案中把遠程伺服器的資訊記錄下來,所以編目節點其實就是把遠程伺服器映射到本地,通過SQLNODIR中的記錄能夠找到遠程伺服器和執行個體,類似指向遠程伺服器和執行個體的地址指標。第2步:當把遠端伺服器IP地址,執行個體編目下來後,第二步應該把該執行個體下的資料庫編目到本地db2 catalog db REMOTEDB at node p570在這條命令中,REMOTEDB是遠程執行個體下的資料庫,p570是我們在第一步中編目的節點名這條命令執行後會在本地SQLDBDIR檔案中記錄遠端資料庫的資訊,這這裡編目資料庫可以理解為把遠程伺服器執行個體下的資料庫映射到本地為一個別名=========================================
 
設定我現在有兩個DB2資料庫A與B,現在要在A資料庫中訪問到B資料庫總某一張表裡的資料,這個該怎做

如果在不同的機器上,你就做資料庫編目。原理就是你要訪問那個資料庫,你要先訪問那台主機,然後訪問到主機上的執行個體,通過執行個體訪問資料庫。分兩步:
1、編目遠程節點
db2 catalog tcpip node 節點名(隨便起) remote 遠程機器ip地址 server 遠程機器執行個體連接埠號碼
例如:db2 catalog tcpip node NODE_ B remote 192.168.1.1 server 50000
就是把地址為192.168.1.1 連接埠為50000的執行個體編目到本機名字為NODE_B的節點上
2、編目遠端資料庫
db2 catalog db 資料庫名 at node NODE_B
例如:db2 catalog db B at node NODE_B 就是編目名字為B的資料庫在節點NODE_B上
3、db2 terminate
4、db2 list db directory 你就能看見資料庫了
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.