顯示具有 DB2 標籤的文章。 顯示所有文章
顯示具有 DB2 標籤的文章。 顯示所有文章

2009年3月8日 星期日

DB2中系統自動產生的table (Explain_、TYYYYMMDDYY_xxxxxx、TYYYYMMDDYY_xxxxxx_exception)

在使用DB2時,會發現有些table明明不是我們自己建的table莫名其妙的跑了出來。
這些table通常都是以Explain_為開頭,或table名稱格式為TYYYYMMDDYY_xxxxxx、TYYYYMMDDYY_xxxxxx_exception,這些table的功用為:
  1. Explain:
    DB2中 EXPLAIN_開頭的table為DB2執行計畫工具所產的表格,主要存放SQL 執行計畫(Execute Plan)。
    通常在DB2 Client工具第一次用到 執行計劃 功能 會自動建立,如下圖。或由DBA透過執行(DB2安裝目錄)/sqllib/misc/EXPLAIN.DDL腳本產生。

    關於這組table的詳細資訊可參考:
    http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/r0008441.htm

  2. table名稱格式為TYYYYMMDDYY_xxxxxx、TYYYYMMDDYY_xxxxxx_exception:
    執行 DB2 Load公用程式 或 DB2控制中心 工具做匯入資料時,若有違反 table Constraint無法寫入資料時,會將暫存資料和無法寫入的資料放在這兩個table中。

2008年7月11日 星期五

DB2中文問題

哀阿...
昨天才從同事口中得知中文varchar在DB2 UTF-8資料庫中一個中文字有三個bytes怎會如此咧??

OK......
先看看下面:


-- DB
-- codePage =1208 (=x04B8) Unicode - UTF-8
-- codeSet = UTF-8
-- TERRITORY = TW
CREATE DATABASE TESTDB ON c: USING CODESET UTF-8 TERRITORY TW COLLATE USING IDENTITY ;

create table test (field1 varchar(10)); --10 byte
insert into test values('1234567890'); --ok
insert into test values('一二三四五六七八九零'); --err , too long
insert into test values(N'一二三四五六七八九零'); --err, too long
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test --30,10

create table test2 (field2 vargraphic(10) ); --30 byte
insert into test2 values('1234567890'); --ok
insert into test2 values('一二三四五六七890'); --ok
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test2; --30,10
select length(field2) from test2;

select field2,length(field2) AS LEN from test2 --不論中英文,每個字元在string function中長度都是1
select field2,Substr(field2,1,2) from test2 --Graphic也可以用於字串函數

-- 所以varGraphic= MSSQL的nvarchar
-- N'xxxStr' 代表 varGraphic型態


所以說在開table時下的ddl應該使用Graphic和varGraphic型態,
在使用起來會比較順...

至於char和graphic差在哪... 會不會有效能上的考量....

找到資料後再說......


===================================================================
另外幾個與DB2中文處理的相關文章:

2008年6月18日 星期三

DB2 function: Null轉特定值 COALESCE

COALESCE 函數功能和ORACLE的NVL函數一樣,可將null值轉為特定預設值:
範例:
select coalesce(field,'noVal') from table

2008年5月10日 星期六

一些DB2文章

一些DB2文章,簡體的

DB2 V9 常用SQL整理

DB2 V9 常用SQL整理

關於DB2的權限

關於DB2的權限, 這篇文章淺顯易懂

instance level: ( on DBM CFG )
SYSADM
SYSCTRL
SYSMAINT

database level:
DBADM
LOAD

DB2 on Windows Vista

艱辛Vista之路......

之前是websphere現在又是DB2, 果然IBM跟MS不愧是百年冤家........
在Vista上的DB2就是無法create database (說我沒啟動database manager,明明就有...)
找了老半天,也懷疑過licence問題, 也使用admin權限跳過UCA, 最新資訊是...
DB2 要v9.1 fix pack 2才支援Vista......
偏偏IBM的網站又非常不人性化, 找個fix pack還真眼花... 倒不如我用google馬上找到.......
好啦 DB2 v9.1的fix pack連結 在此, 花了我這麼多時間載個3百多MB的fix pack, 如果還不行,
那我轉行算了(環境險惡,小弟不才)

----------------------------------------------------------------------------
後記:
感動...小弟不用轉行了...
果然v9.1 FixPack 2 在Vista上正常許多了................

DB2 DB2

DB2 DB2....
搞了我一天 都 快吐了.........

DB2 8.1文件

網路上找來的:
DB2 HOW TOs
http://users.sdsc.edu/~jrowley/db2/index.html

DB2使用簡介

除了IBM的官方文檔外, DB2的中文資料真不好找 ,
最近市面上有出了一本「愛上DB2資料庫管理與應用(第二版)」就似乎找不到其他中文書了,
這邊有中研院計算機中心的兩篇電子報文章簡介DB2,雖然是很久前的文章,
但還是可參考看看。

(作者:吳和弟)
DB2使用簡介(上)
DB2使用簡介(下)