首先,是添加數(shù)據(jù)庫實例:
DB2的實例之間是相互獨立的,實例可以被看作是數(shù)據(jù)庫的容器。而默認DB2裝好后會自己建一個名為DB2的實例。我們這里需要新建一個,命令這樣敲:
在db2的命令行工具里面打開命令行,然后輸入:
復制代碼 代碼如下:
db2icrt INSTNAME
它這個實例名還挺惡心的,必須是小于8個字符的名字。
再用命令行創(chuàng)建好以后才能用那個控制中心的添加實例的功能來添加剛才創(chuàng)建的實例。其實這個添加只是把已有的實例添加到GUI的控制中心里,而不是創(chuàng)建實例。。。。所以,必須注意的是,在這個控制中心里,只要是添加的命令,似乎都得小心點它實際上并沒有創(chuàng)建東西,只是把已有的東西拿進來管理。
另外,再添加的時候,那個所謂的實例節(jié)點名也就僅僅是用于表示這個實例的一個節(jié)點的名字而已,似乎對于單臺服務器來說意義不大。貌似是一個實例對應的每個實例節(jié)點組成一個分區(qū)實例的時候才有意義。
然后開始建立數(shù)據(jù)庫:
好的,建立好實例之后我們要在實例上建立數(shù)據(jù)庫。由于是Windows的環(huán)境下,你第一次建一定會遇到類似這樣的錯誤
復制代碼 代碼如下:
SQL1052N 數(shù)據(jù)庫路徑 "D:/foo/bar" 不存在。
說明:
該命令的 "path>" 參數(shù)中指定的路徑無效。不存在該名稱的路徑,或者在
DB2_CREATE_DB_ON_PATHS 注冊表變量被禁用時,指定了路徑(僅限于 Windows)
。
按照這個說法很簡單只需要執(zhí)行一下這個命令即可:
復制代碼 代碼如下:
db2set DB2_CREATE_DB_ON_PATH=YES
不過很遺憾,我還是得到了個報錯,為什么呢?其實你使用這個命令來查看就知道了:
復制代碼 代碼如下:
C:/Program Files/IBM/SQLLIB/BIN>db2set -all
[e] DB2PATH=C:/Program Files/IBM/SQLLIB
[i] DB2PROCESSORS=0,1,2,3
[i] DB2INSTPROF=C:/Documents and Settings/All Users/Application Data/IBM/DB2/testdb2
[i] DB2COMM=TCPIP
[g] DB2_EXTSECURITY=YES
[g] DB2SYSTEM=SENDS-TV
[g] DB2PATH=C:/Program Files/IBM/SQLLIB
[g] DB2INSTDEF=DB2
[g] DB2ADMINSERVER=DB2DAS00
C:/Program Files/IBM/SQLLIB/BIN>db2set -?
-all 顯示出現(xiàn)的所有本地環(huán)境變量,如以下各項中所定義:
* 環(huán)境,用 [e] 表示
* 用戶級注冊表,用 [u] 表示
* 節(jié)點級注冊表,用 [n] 表示
* 實例級注冊表,用 [i] 表示,和
* 全局級注冊表,用 [g] 表示
看到了吧,那個所謂的DB2_CREATE_DB_ON_PATH變量知識個實例級注冊表,所以你直接執(zhí)行上面那個命令改的是db2這個默認實例的東西。為了對我們新建的實例INSTNAME起作用,我們必須用這個命令:
復制代碼 代碼如下:
db2set -i INSTNAME DB2_CREATE_DB_ON_PATH=YES
注:此外,你可以通過DB2自帶的那個配置助手來進行這些配置,GUI下的操作簡單,就不寫了。
好的,到此為止,數(shù)據(jù)庫也已經(jīng)成功的建立了,接下來就是日常事務了。
現(xiàn)在我們來看看DB2的客戶端
IBM喜歡把它譯作客戶機。用習慣了MySQL的同學肯定會覺得有些突兀吧。DB2的客戶端也有很多個不同的版本,此外,除了IBM自己的客戶端之外,也有第三方開發(fā)商弄的客戶端,這篇入門文章,我們還是只探討IBM自己的東西。
下面是IBM自己的說法:
IBM Data Server Client
IBM Data Server Client 是可用于 IBM 數(shù)據(jù)服務器的完整安裝的客戶機。在 DB2 9.5 中,它充分支持所有受支持的 API。例如,它為 Ruby 提供了驅(qū)動程序。在 DB2 9 中,需要通過后安裝(post-installation)下載和配置步驟來添加 Ruby 支持。這個客戶機還提供了完整的圖形化工具。例如,如果安裝一個 IBM Data Server Client,您可以獲得 Configuration Assistant、IBM Add-ins for Visual Studio、語言支持,等等。
如果您計劃使用這個客戶機在一個后端 IDS 數(shù)據(jù)服務器中支持 OLE DB 應用程序,則需注意這個接口不支持這種使用。但是可以使用這個客戶機提供的 ODBC 支持彌補這類場景中的缺陷。
簡單來講,如果某個選項可以用于一個 DB2 客戶機,那么它就是可用的。DB2 Client 是與 DB2 連通性有關的所有內(nèi)容的超集。如上圖所示,如果需要任何工具支持,則必須安裝這種客戶機。
IBM Data Server Client 約為 330 MB。您可以使用前面提到的 db2iprune 實用程序自定義這個客戶機把它縮減到大約 200 MB。
IBM Data Server Runtime Client
IBM Data Server Runtime Client 是輕量級客戶機部署的最佳選擇。它要比它的 DB2 9 伙伴小一些,并且現(xiàn)在和 IBM Data Server Client 一樣提供了 IDS 支持。這個客戶機沒帶有任何工具 — 如前所述,它是由 DB2 8 里前身改變而來(從 DB2 8.2 Run-Time 客戶機中刪除了 CCA。它不再是 DB2 9 Runtime Client 的一部分)。如果您希望使用 Configuration Assistant 來圖形化配置 DB2 9.5 中的連接,則無法在此找到這個工具。然而,這個客戶機卻包含了 DB2 CLP。這個客戶機包含了所有 DB2 接口,例如,Ruby 驅(qū)動程序、.NET 驅(qū)動程序等等。和 IBM Data Server Client 一樣,這個客戶機并不支持與IDS數(shù)據(jù)服務器建立OLE DB連接。IBM Data Server Runtime 客戶機在安裝后大約占 60-70 MB 的磁盤空間。
如果您的內(nèi)存需求非常緊迫,則不適合使用這種占用空間較大的客戶機,但是它提供了針對任何應用程序連通性場景的充分支持。如果您支持使用各種編程語言構(gòu)建的應用程序,并且不需要任何工具,那么這種客戶機是最佳選擇。如果支持像 Ruby on Rails 這樣的開源應用程序并且不需要工具,該客戶機則是惟一的選擇,因為驅(qū)動程序不會為 Ruby、PHP 這樣的開源 API 包含預編譯的二進制文件。
IBM Data Server Driver for JDBC and SQLJ
這個驅(qū)動程序與 DB2 9 中的驅(qū)動程序非常相似,但是進行了一些技術增強和修復(在 pureQuery 環(huán)境中也會用到這個驅(qū)動程序)。和所有 IBM 數(shù)據(jù)服務器連通性選項一樣,這個驅(qū)動程序也支持 IDS 數(shù)據(jù)服務器。它通過 db2jcc.jar 的單一包的方式交付(如果需要將它連接到 DB2 for i5/OS 或 DB2 for z/OS 數(shù)據(jù)服務器,則需要一個有效的 DB2 Connect 許可),并且按照 JDBC 3.0 規(guī)范進行交付。DB2 9.5 還通過一個稱為 db2jcc4.jar 的包支持 JDBC 4.0 規(guī)范。
如果您需要對基于 Java 的應用程序使用一個輕量級的、免版權(quán)費的可重新發(fā)布的驅(qū)動程序,并且不需要任何工具,那么這是最佳選擇,因為它支持諸如連接集中(connection concentration)、客戶機自動重路由等高級特性。由于只占用大約 2MB 的空間,我將驅(qū)動程序使用的空間稱為一個指紋(fingerprint)。這個驅(qū)動程序的使用有多么普遍呢?每分鐘有數(shù)十億美元的資金依靠它運作(或者其早先的版本)。
IBM Data Server Driver for ODBC, CLI, and .NET(只針對 Windows)
這個驅(qū)動程序按照 DB2 9 的方式交付,除了新添加的 .NET 支持外,還包括針對 ODBC 和 CLI 接口的支持。這是一個非常適合 .NET 應用程序的部署選項,因為您不再需要僅僅為了向 .NET 應用程序提供連通性而使用大量的內(nèi)存。此外,添加了針對 Ruby、Perl 和 PHP 這類接口的二進制版本,因此無需親自編譯(盡管驅(qū)動程序的名稱中沒有提到),這大大降低了這些應用程序的部署時間(以及部署工作)。
IBM Data Server Driver for ODBC, CLI, and .NET 還提供了一些非常不錯的 Windows 增強。例如,附帶了一個安裝包裝器,可以顯著增強在 Windows 上的部署特性。
這個驅(qū)動程序還提供了一組合并模塊,比如 DB2 Runtime Client。我推薦使用這些合并模塊進行安裝,因為不論是誰開發(fā)您的應用程序的安裝范例,它都非常適合。如果您不需要 CLP 或其他任何工具,我推薦使用這個驅(qū)動程序,因為它不會產(chǎn)生任何實例管理負擔。
現(xiàn)在,您應該非常清楚何時適合使用這個驅(qū)動程序。然而,需要注意一點,這個驅(qū)動程序并不包含對 OLE DB 的支持。我想我需要特別指出這點,應該通常情況下 ODBC 和 OLE DB 支持是互相關聯(lián)的。如果需要支持一個 OLE DB 應用程序,則至少要安裝一個 DB2 Run-Time Client。
注意 :盡管名稱有些不符,從 IDS 的角度來看,這個驅(qū)動程序只交付面向 .NET、PHP、Perl 和 Ruby 編程接口的支持(它建議客戶機繼續(xù)使用 Informix SDK for C/C++ 應用程序)。這個驅(qū)動程序附帶了一個免版權(quán)費的發(fā)布許可。
DB2 9.5 的新的 .NET 部署選項遠遠超越了為應用程序提供運行時環(huán)境這一功能。如果您希望部署最輕量級的 .NET 開發(fā)環(huán)境,您可以下載獨立的 IBM Add-ins for Visual Studio(大約 30 MB)和這個驅(qū)動程序(大約 10 MB),您將獲得一個專門為 .NET 集成了 IBM 數(shù)據(jù)服務器開發(fā)環(huán)境的 Visual Studio。記住,如果使用這個方法,IBM Add-ins for Visual Studio 和 IBM Data Server Driver for ODBC, CLI, and .NET必須位于相同的代碼級別。例如,如果您計劃支持 Visual Studio 2008 IDE,則必須在 Fix Pack 1 級別安裝這些組件。如果 Fix Pack 2 對任一個這些組件進行了功能性修改,那么必須確保所有這些組件都處于 Fix Pack 2 級別。
IBM Data Server Driver for ODBC and CLI
這個驅(qū)動程序?qū)嶋H上提供了與 IBM Data Server Driver for ODBC, CLI, and .NET 相同的功能、特性和優(yōu)點,惟一的不同是它絕對不支持 .NET 或提供以 Windows 為中心的部署增強。如果需要支持前面小節(jié)中描述的相同場景,那么可以使用這個驅(qū)動程序,但是注意不能將它用于 .NET 應用程序。這個驅(qū)動程序可從 DB2 9 獲得,它還附帶了免版權(quán)費用的發(fā)布許可。
IBM Data Server Add-ins for Visual Studio
IBM Data server Add-ins for Visual Studio 在過去只是為了獲得一般可用性而作為基于 Windows 的 DB2 Client 或服務器映像附帶(換言之,我在這里不會介紹技術內(nèi)容)。在 DB2 9 中,這個插件以前被稱為 IBM Database Add-ins for Visual Studio 2005。在 DB2 9.5 中,它被重命名以反映可用于 Visual Studio 2005 或 Visual Studio 2008 的插件,因此從插件名稱中去掉了版本信息。
在 DB2 9.5 中,雖然 DB2 Client 和服務器映像仍然附帶了這個插件,但是現(xiàn)在它可以作為獨立下載的映像使用,大概有 30 MB 的大小。
不管IBM自己怎么說,當務之急還是下載客戶端要緊,DB2的客戶端可以從這里去尋找:http://www-01.ibm.com/software/data/db2/ad/
為了讓客戶機可以連接服務器,還需要設置一下實例的通信設置。這里選中實例以后在控制中心里把對應的實例的通信設置里面設定成tcp/ip,并且設定好你要的端口即可。此外還需要設置DBM配置里面的通信部分的SVCENAME這個變量可以在控制中心設置,如果要用命令的話似乎是這樣的:
復制代碼 代碼如下:
UPDATE DBM CFG USING SVCENAME 50001 DEFERRED;
上面都配置好了以后就可以用客戶端連接了:
我這里是用的runtime client,所以這里需要使用命令行(選擇命令行工具輸入db2進入交互界面):
復制代碼 代碼如下:
db2 => catalog tcpip node MYDB2 remote 192.168.0.11 server 50000
//catalog tcpip node命令表示以tcpip連接方式建立節(jié)點
//MYDB2是節(jié)點名,可以隨便指定 remote制定遠程服務器的
//hostname或者ip,server制定服務名稱或者端口號
DB20000I The CATALOG TCPIP NODE command completed successfully.
DB21056W Directory changes may not be effective until the directory cache is refreshed.
db2 => catalog db MYTEST as MYTESTALIAS at node MYDB2
//在你的節(jié)點下編目一個數(shù)據(jù)庫,注意這里必須要制定一個不同的別名,否則會出現(xiàn)找不到服務器的鏈接錯誤。
DB20000I The CATALOG DATABASE command completed successfully.
DB21056W Directory changes may not be effective until the directory cache is refreshed.
db2 => connect to MYTESTALIAS user USERNAME using PASSWORD
Database Connection Information
Database server = DB2/NT 9.7.0
SQL authorization ID = USERNAME
Local database alias = MYTESTALIAS
至于為什么要這么做,實際上,是因為這個客戶端也自己維護了一個編錄,你需要先新建一個本地的node來保存一臺數(shù)據(jù)庫服務器的信息,之后再添加一個對應的數(shù)據(jù)庫目錄才可以連接。
關于這一部分內(nèi)容,可以參考這段引用:
在DB2中從客戶端訪問服務器端的數(shù)據(jù)庫時,不能直接用connect命令,而必須先建立通信node,再在node的基礎上建立數(shù)據(jù)庫連接。在命令行的具體操作如下:
->db2 catalog tcpip node ABC remote serverName server 50000
->db2 catalog db databaseName at node ABC
->db2 connect to databaseName user Uid using Pwd
說明:
catalog tcpip node ABC 中的ABC是由你任意起的一個結(jié)點名,結(jié)點名不能跟已有的結(jié)點名重復
catalog db databaseName at node ABC 中的ABC指的是你在前面起的那個結(jié)點名
serverName 服務器名稱(遠程數(shù)據(jù)庫)
databaseName 數(shù)據(jù)庫名稱
Uid 用戶名
Pwd 密碼
另外,如果客戶端已經(jīng)跟同一個服務器建立了node,那么如果你想連接該服務器上的另一個數(shù)據(jù)庫時,不需要再另建node,直接用同一個node即可。另外,建立node時服務器名稱后的端口不一定是50000,要看DB工程師當時的設置。
相關指令:
list db directory 列出可訪問的db
list node directory 列出可訪問的結(jié)點
其他一些重要的DB2命令
1. 查看本地節(jié)點目錄
命令窗口中輸入:db2 list node directory
2. 編目一個TCP/IP節(jié)點
命令窗口:db2 catalog tcpip node node_name> remote hostname|ip_address> server svcname|port_number> ostype OS2|AIX|WIN95|NT|HPUX|SUN|MVS|OS400|VM|VSE|SCO|SGI|LINUX|DYNIX>
3. 取消節(jié)點編目
db2 uncatalog node node_name>
4. 查看系統(tǒng)數(shù)據(jù)庫目錄
db2 list database directory
5. 查看本地數(shù)據(jù)庫目錄
db2 list database directory on 盤符>
在本地數(shù)據(jù)庫目錄中有而系統(tǒng)數(shù)據(jù)庫目錄中沒有的數(shù)據(jù)庫不能訪問,可以在控制中心中選中數(shù)據(jù)庫>右鍵單擊選擇添加,然后輸入需要添加的數(shù)據(jù)庫名稱或者點擊刷新按鈕選擇數(shù)據(jù)庫,加入數(shù)據(jù)庫后即可以訪問。
6. 編目數(shù)據(jù)庫
db2 catalog database db_name> as db_alias> at node node_name>
7. 取消數(shù)據(jù)庫編目
db2 uncatalog database db_name>
8. 測試遠程數(shù)據(jù)庫的連接
db2 connect to db_alias> user user_id> using password>
接下來,一個顯然的問題就是用戶認證及其權(quán)限
和MySQL Orancle不同,DB2對于用戶的認證是直接整合操作系統(tǒng)的用戶認證的,因此,db2的用戶就是操作系統(tǒng)的用戶。在成功的通過了用戶驗證以后,就開始驗證用戶權(quán)限了。
至于用戶權(quán)限的設置,可以直接使用控制中心對某個表、數(shù)據(jù)庫甚至實例進行配置。表權(quán)限就是select等等,這些大家都清楚,而數(shù)據(jù)庫權(quán)限要說明一下:
數(shù)據(jù)庫權(quán)限
每個數(shù)據(jù)庫權(quán)限都允許擁有該權(quán)限的授權(quán)標識對整個數(shù)據(jù)庫執(zhí)行某種特定類型的操作。數(shù)據(jù)庫權(quán)限與特權(quán)不同,后者允許對特定數(shù)據(jù)庫對象(例如表或索引)執(zhí)行特定操作。
這些是數(shù)據(jù)庫權(quán)限。
ACCESSCTRL
允許擁有者授予和撤銷所有對象特權(quán)和數(shù)據(jù)庫權(quán)限(對審計例程的特權(quán)除外)以及 ACCESSCTRL、DATAACCESS、DBADM 和 SECADM 權(quán)限。
BINDADD
允許擁有者在數(shù)據(jù)庫中創(chuàng)建新包。
CONNECT
允許擁有者連接到數(shù)據(jù)庫。
CREATETAB
允許擁有者在數(shù)據(jù)庫中創(chuàng)建新表。
CREATE_EXTERNAL_ROUTINE
允許擁有者創(chuàng)建過程以供數(shù)據(jù)庫的應用程序和其他用戶使用。
CREATE_NOT_FENCED_ROUTINE
允許擁有者創(chuàng)建未受防護的用戶定義的函數(shù)(UDF)或過程。將把 CREATE_EXTERNAL_ROUTINE 自動授予任何已被授予 CREATE_NOT_FENCED_ROUTINE 權(quán)限的用戶。
注意: 數(shù)據(jù)庫管理器不會阻止未受防護的 UDF 或過程訪問它的存儲器或控制塊。因此,具有此權(quán)限的用戶必須非常仔細地測試他們的 UDF,以使之特別嚴密,然后再將其注冊為未受防護的 UDF。
DATAACCESS
允許擁有者訪問存儲在數(shù)據(jù)庫表中的數(shù)據(jù)。
DBADM
允許擁有者充當數(shù)據(jù)庫管理員。特別是,它授予擁有者除 ACCESSCTRL、DATAACCESS 和 SECADM 之外的所有其他數(shù)據(jù)庫權(quán)限。
EXPLAIN
允許擁有者說明查詢方案,而不要求他們擁有訪問這些查詢方案所引用的表中數(shù)據(jù)的特權(quán)。
IMPLICIT_SCHEMA
允許任何用戶隱式地創(chuàng)建模式(使用 CREATE 語句創(chuàng)建對象,并指定尚不存在的模式名)。SYSIBM 成為隱式創(chuàng)建的模式的所有者,并且授予 PUBLIC 在此模式中創(chuàng)建對象的特權(quán)。
LOAD
允許擁有者將數(shù)據(jù)裝入到表中。
QUIESCE_CONNECT
允許擁有者在數(shù)據(jù)庫處于停頓狀態(tài)時訪問該數(shù)據(jù)庫。
SECADM
允許擁有者充當數(shù)據(jù)庫的安全管理員。
SQLADM
允許擁有者監(jiān)視和調(diào)整 SQL 語句。
WLMADM
允許擁有者充當工作負載管理員。特別是,WLMADM 權(quán)限的擁有者可以創(chuàng)建和刪除工作負載管理器對象、授予和撤銷工作負載管理器特權(quán)以及執(zhí)行工作負載管理器例程。
只有具有 SECADM 權(quán)限的授權(quán)標識才能授予 ACCESSCTRL、DATAACCESS、DBADM 和 SECADM 權(quán)限。所有其他權(quán)限都可以由具有 ACCESSCTRL 或 SECADM 權(quán)限的授權(quán)標識授予。
要從 PUBLIC 除去任何數(shù)據(jù)庫權(quán)限,具有 ACCESSCTRL 或 SECADM 權(quán)限的授權(quán)標識必須顯式地撤銷該權(quán)限。
關于權(quán)限這一部分是一個大話題,有機會以后再寫,這一部分的內(nèi)容完全可以參考這里的文檔來配置:
http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.admin.sec.doc/doc/c0005524.html
您可能感興趣的文章:- DB2 常用命令小結(jié)
- DB2比較常用與實用sql語句總結(jié)
- db2 導入導出單個表的操作詳解
- DB2 日期和時間的函數(shù)應用說明
- DB2 數(shù)據(jù)庫創(chuàng)建、表的ixf文件導出導入示例
- DB2 常用命令速查(備忘)
- DB2 自動遞增字段實現(xiàn)方法
- DB2 SELECT語句高級用法
- DB2如何查看當前用戶模式及切換用戶
- CentOS下DB2數(shù)據(jù)庫安裝過程詳解
- 比較SQL Server與Oracle、DB2
- DB2數(shù)據(jù)庫的備份和恢復
- Python連接DB2數(shù)據(jù)庫