datastage與db2小結

zgy13121發表於2009-04-08

CREATE DATABASE std104 AUTOMATIC STORAGE YES USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM PAGESIZE 16384;

--無日誌清空間
alter table [ORI_AAC01] activate not logged initially with empty table;


--設定codepage
db2set db2codepage=1386 -I db2inst1

--備份
db2move db100 export -sn u2,drm_u2,db2admin -u baseinfo -p baseinfo
db2move db104 import -u baseinfo -p baseinfo

--匯出baseinfo.sql後,注意修改CONNECT TO STD104 USER baseinfo中的資料庫名稱

--注意修改結束符,否則匯出函式與儲存過程不能正確匯入
db2look -d db100 -e -z baseinfo -td @ -i baseinfo -w baseinfo -o baseinfo.sql
--注意修改結束符
db2 -td@ -vf baseinfo.sql >db2import.log

--建立統計表資訊指令碼
db2 connect to db
db2 "select 'RUNSTATS ON TABLE BASEINFO.'||TABNAME||';' as aaa FROM SYSCAT.TABLES WHERE TABSCHEMA='BASEINFO'" >d:runstats2.sql

db2 "select 'RUNSTATS ON TABLE BASEINFO.'||TABLE_NAME||';' as a FROM sysibm.tables WHERE TABLE_SCHEMA='BASEINFO' AND table_type='BASE TABLE'" >D:runstats3.sql

--db2 load from db2
db2 => declare c1 cursor database stdnew user baseinfo using baseinfo for select * from paz36
DB20000I SQL 命令成功完成。
db2 => load from c1 of cursor messages d:load_paz36.msg insert into baseinfo.paz36

--監控死鎖及解除死鎖
db2 UPDATE MONITOR SWITCHES USING LOCK ON

db2 get snapshot for locks on db

db2 "force applications(handle) "
--force applications all

db2 UPDATE MONITOR SWITCHES USING LOCK OFF

--db2備份資料庫
db2move stdnew export -u DRM_U2 -p drm_u2 -sn DRM_U2,DB2ADMIN,U2

--db2授權
CONNECT TO STANDARD;
GRANT DBADM,CREATETAB,
BINDADD,CONNECT,
CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,
LOAD,CREATE_EXTERNAL_ROUTINE,
QUIESCE_CONNECT,SECADM
ON DATABASE TO USER DRM_U2;
CONNECT RESET;

用SQL語句實現DB2主要指標的監控

--Database manager:To capture a snapshot of database manager information:
SELECT * FROM TABLE( SNAPSHOT_DBM(-1)) as SNAPSHOT_DBM

--To capture a snapshot of database manager information specifically regarding the fast communication manager (FCM):
SELECT * FROM TABLE( SNAPSHOT_FCM(-1)) as SNAPSHOT_FCM

--To capture a snapshot of database manager information for a partition specifically regarding the fast communication manager(FCM):
SELECT * FROM TABLE( SNAPSHOT_FCMPARTITION(-1)) as SNAPSHOT_FCMPARTITION

--To capture the database manager's monitor switch settings:
SELECT * FROM TABLE( SNAPSHOT_SWITCHES(-1)) as SNAPSHOT_SWITCHES

--Database: To capture a snapshot of database information:
SELECT * FROM TABLE( SNAPSHOT_DATABASE( 'SAMPLE', -1 )) as SNAPSHOT_DATABASE

--Application:To capture a snapshot of application information:
SELECT * FROM TABLE( SNAPSHOT_APPL( 'SAMPLE', -1 )) as SNAPSHOT_APPL

--To capture a snapshot of application identification information:Chapter 3. Using the Snapshot Monitor 23
SELECT * FROM TABLE( SNAPSHOT_APPL_INFO( 'SAMPLE', -1 )) as SNAPSHOT_APPL_INFO

--To capture a snapshot of lock wait information:
SELECT * FROM TABLE( SNAPSHOT_LOCKWAIT('SAMPLE', -1 )) as SNAPSHOT_LOCKWAIT

--To capture a snapshot of statement information:
SELECT * FROM TABLE( SNAPSHOT_STATEMENT( 'SAMPLE', -1 )) as SNAPSHOT_STATEMENT

--To capture a snapshot of agent information:
SELECT * FROM TABLE( SNAPSHOT_AGENT( 'SAMPLE', -1 )) as SNAPSHOT_AGENT

--To capture a snapshot of subsection information:
SELECT * FROM TABLE( SNAPSHOT_SUBSECT( 'SAMPLE', -1 )) as SNAPSHOT_SUBSECT

--Buffer pool: To capture a snapshot of buffer pool information:
SELECT * FROM TABLE( SNAPSHOT_BP( 'SAMPLE', -1 )) as SNAPSHOT_BP

--Table space:To capture a snapshot of table space information:
SELECT * FROM TABLE( SNAPSHOT_TBS( 'SAMPLE', -1 )) as SNAPSHOT_TBS

--To capture a snapshot of table space configuration information:
SELECT * FROM TABLE( SNAPSHOT_TBS_CFG( 'SAMPLE', -1 )) as SNAPSHOT_TBS_CFG

--To capture a snapshot of table space quiescer information:
SELECT * FROM TABLE( SNAPSHOT_QUIESCER( 'SAMPLE', -1 )) as SNAPSHOT_QUIESCER

--To capture a snapshot of table space container configuration information:
SELECT * FROM TABLE( SNAPSHOT_CONTAINER( 'SAMPLE', -1 )) as SNAPSHOT_CONTAINER

--To capture a snapshot of the ranges for a table space map:
SELECT * FROM TABLE( SNAPSHOT_RANGES( 'SAMPLE', -1 )) as SNAPSHOT_RANGES

--Table: To capture a snapshot of table information:
SELECT * FROM TABLE( SNAPSHOT_TABLE( 'SAMPLE', -1 )) as SNAPSHOT_TABLE

--Lock: To capture a snapshot of lock information:
SELECT * FROM TABLE( SNAPSHOT_LOCK( 'standard', -1 )) as SNAPSHOT_LOCK

--Dynamic SQL cache: To capture a snapshot of dynamic SQL statement cache information:Snapshot monitor 24 System Monitor Guide and Reference
SELECT * FROM TABLE( SNAPSHOT_DYN_SQL( 'SAMPLE', -1 )) as SNAPSHOT_DYN_SQL



--db2中的minus(集合差集)
except

--db2中執行檔案
db2 -vf filename


--db2訪問oracle配置

一、安裝配置Oracle客戶端,用sqlplus測試能成功訪問Oracle資料:

二、停止db2例項,下面以db2test例項為例:
db2stop

三、以root使用者身份登入,建立包裝器庫與資料來源客戶機軟體之間的連結:
su – root
###設定Oracle環境變數
export ORACLE_HOME=/oracle/app/oracle/product/9.2.0.1
### For 64位例項
/opt/IBM/db2/V8.1/bin64/djxlinkOracle
### For 32位例項
/opt/IBM/db2/V8.1/bin/djxlinkOracle
### 更新例項,保留以前的位數
/opt/IBM/db2/V8.1/instance/db2iupdt -k db2inst1
exit
### 在分割槽資料庫環境中,若有多臺物理主機上,請分別在每臺機器上執行上面的djxlinkOracle及例項更新操作。

四、配置例項主目錄下的sqllib/cfg/db2dj.ini,增加如下Oracle環境變數內容:
ORACLE_HOME=/oracle/app/oracle/product/9.2.0.1
ORACLE_BASE=/oracle/app/oracle
ORA_NLS33=/oracle/app/oracle/product/9.2.0.1/ocommon/nls/admin/data
TNS_ADMIN=/oracle/app/oracle/product/9.2.0.1/network/admin
NLS_LANG=american_america.zhs16cgb231280

五、修改 DBM引數FEDERATED為YES:
db2 "update dbm cfg using FEDERATED YES"

六、重啟例項,並建立測試資料庫:
db2start
db2 "create db testdb using codeset ISO88591 territory us"
db2 "connect to testdb"

七、註冊Oracle包裝器:
db2 "create wrapper net8"

八、為Oracle資料來源註冊伺服器定義:
db2 "create server odb type oracle version 8.1.7 wrapper net8 options (node 'odb') "

九、為Oracle資料來源建立使用者對映:
db2 "create user mapping for db2inst1 Server odb options (remote_authid 'user', remote_password 'pwd')"

十、建立使用者暱稱,測試連線:
db2 "create nickname u_info for odb.sys.all_users"
db2 "select count(*) from u_info"
db2 "set passthru odb"
db2 "select count(*) from sys.all_tables"
db2 "set passthru reset"


--db2 訪問sql server
0 connect to test;
1 CREATE WRAPPER MSSQLSERVER LIBRARY 'db2mssql3.dll';
2 CREATE SERVER ser_hd TYPE mssql VERSION 2000 WRAPPER MSSQLSERVER OPTIONS (NODE 'node1',DBNAME 'test');
3 CREATE USER MAPPING FOR administrator SERVER OPTIONS (REMOTE_AUTHID 'admin', REMOTE_PASSWORD '123');
administrator是db2使用者,admin是mssql使用者.
4 CREATE NICKNAME table01 FOR ser_hd."dbo"."table01";
5 select * from table01;
即可在db2中操作mssql中的dbo.table01表.


1、更新odbc.ini。建議:將odbc.ini檔案或者它的一個複製放在DB2例項使用者的主目錄下。在我們的例子中,我們加入Microsoft SQL Server的相關條目並放在/home/db2inst1目錄下,檔案內容如下所示:
[ODBC Data Sources]
testsql=DataDirect 4.10 SQL SERVER
[testsql]
Driver=/opt/odbc/lib/ivmsss18.so
Description=DataDirect 4.10 SQL Server Wire Protocol
Database=Northwind
LogonID=sa
Password=sa
Address=192.168.3.3,1433
QuotedId=Yes
AnsiNPW=No
[ODBC]
Trace=1
TraceFile=odbctrace.out
TraceDll=/opt/odbc/lib/odbctrac.so
InstallDir=/opt/odbc
ConversionTableLocation=/opt/odbc/tables
UseCursorLib=0

2、設定ODBCINI環境變數,指向odbc.ini檔案的絕對路徑,如下所示:
export ODBCINI=/home/odbc/.odbc.ini

3、建立符號連結(請用root使用者執行命令):
ln –s /opt/odbc/locale /usr/local/locale
ln –s /opt/odbc/lib/libodbcinst.so /usr/lib/libodbcinst.so
注意:如果您使用DataDirect Technoligies Connect for ODBC 4.2 驅動程式,您還必須建立下列符號連結:
ln –s /opt/odbc/lib/libivicu19.so /usr/lib/libivicu19.so
在不同的作業系統下,需要建立的符號連結不盡相同,關於其他Unix作業系統建立符號連結的資訊,請參考DB2資訊中心:

4、使用DataDirect 公司提供的demoodbc工具測試到SQL Server的連線是否成功:
執行 /opt/odbc/odbc.sh 指令碼,這個指令碼設定一些ODBC驅動程式需要的環境變數。
. /opt/odbc/odbc.sh
使用demoodbc工具測試到SQL Server的連線,demoodbc位於/opt/odbc/demo目錄下,請使用指令碼empsqlsrv.sql在你的SQL Server端執行,在我們指定連線的資料庫上(在我們的例子中是Northwind資料庫,參見odbc.ini)建立EMP表, 然後執行demoodbc 來測試連線是否成功。

你需要設定一些環境變數以便DB2能夠訪問SQL Server資料來源,如果你在安裝DB2 II之前安裝了Microsoft SQL Server ODBC driver,安裝程式會幫助你更新db2dj.ini檔案,否則你需要手工配置db2dj.ini檔案。我們建議你在進行下一步之前始終檢查一下你的環境變數設定。下面為在Linux環境下配置Microsoft SQL Server所需要的環境變數:
DJX_ODBC_LIBRARY_PATH
ODBCINI
DB2LIBPATH
DB2ENVLIST
關於其他作業系統的環境變數,請檢視DB2資訊中心:

下面是手工設定這些變數的方法:
1、編輯db2dj.ini 檔案,該檔案位於/sqllib/cfg目錄下,如果沒有這個檔案,請自己建立一個,在db2dj.ini檔案中你必須指定全路徑,否則你可能會碰到 錯誤。
設定如下環境變數:
DJX_ODBC_LIBRARY_PATH
該環境變數指向ODBC驅動程式的安裝目錄下的庫檔案目錄(lib):
DJX_ODBC_LIBRARY_PATH=/opt/odbc/lib
ODBCINI
該變數指向ODBC配置檔案,如在我們的例子中,設定如下:
ODBCINI=/home/db2inst1/odbc.ini
注意:不要將ODBCINI設定為系統環境變數。
完成編輯後我們db2dj.ini檔案的內容如下:
DJX_ODBC_LIBRARY_PATH=/opt/odbc/lib
ODBCINI=/home/db2inst1/odbc.ini

2、為了訪問Microsoft SQL Server資料來源,你需要設定DB2LIBPATH登錄檔變數到ODBC驅動程式庫檔案所在的目錄,在我們的例子中設定如下:
db2set DB2LIBPATH=/opt/odbc/lib
使用DataDirect Connect ODBC 驅動程式訪問Microsoft SQL Server 資料來源,設定DB2ENVLIST為LIBPATH,如:
db2set DB2ENVLIST=LIBPATH
3、為確保我們設定的環境變數生效,請重新啟動DB2例項:
db2stop
db2start
八、建立聯合體資料庫物件訪問Microsoft SQL Server資料來源。接下來的任務就是建立聯合體資料庫物件了,你可以使用控制中心或者使用命令列建立。下面我們將簡單演示一下如何使用命令列建立聯合體物件訪問SQL Server資料來源。在建立之前需要連線到資料庫(我們使用例子資料庫sample):
db2 connect to sample
使用如下命令建立包裝器:
db2 “create wrapper MSSQLODBC3”
使用如下命令建立聯合體伺服器:
db2 "create server testsql type mssqlserver version 2000 wrapper mssqlodbc3 options (dbname 'Northwind', Node 'testsql’)”
使用如下命令建立使用者對映:
db2 “create user mapping for db2inst1 server "testsql" options (remote_authid 'sa', remote_password 'sa' )”
使用下列語句建立暱稱(我們選擇前面我們測試ODBC資料來源時建立的EMP表):
db2 “create nickname testsql for testsql.dbo.emp”
測試我們的配置:
db2 connect to sample
db2 "select * from testsql"
你應該可以看到EMP表內容的輸出,至此我們在Linux環境下已經成功配置了DB2 II訪問Microsoft SQL Server資料庫。 DB2 II除了能夠採用聯合體資料庫訪問Microsoft SQL Server 資料庫以外,還支援將Microsoft SQL Server上資料來源的資料複製到其他資料庫平臺上。您可以使用DB2複製中心來設定資料複製。關於複製的詳細內容,請參見DB2資訊中心。


--db2檢視使用者許可權
GET AUTHORIZATIONS

select * from sysibm.tables where table_name like '%PRIV%';

select * from SYSIBMADM.PRIVILEGES
SELECT * FROM SYSIBM.SQLCOLPRIVILEGES
SELECT * FROM SYSIBM.SQLTABLEPRIVILEGES

select * from sysibm.tables where table_name like '%AUTHOR%';

--datastage安裝
--Redhat 4 須安裝以下包:
glibc-2.3.4-2.9
xorg-x11-libs-6.8.2-1.EL.13.6
xorg-x11-deprecated-libs-6.8.2-1.EL.13.6
xorg-x11-libs-6.8.2-1.EL.13.6
compat-libstdc++-33-3.2.3-47.3
compat-libstdc++-296-2.96-132.7.2
libstdc++-3.4.3-22.1
libstdc++-devel-3.4.3-22.1


--sql server2000中文與db2中文問題
sql server中一箇中文的長度為1
db2 中utf-8為3,gbk為2
做轉換時有中文的要注意

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11419868/viewspace-1020131/,如需轉載,請註明出處,否則將追究法律責任。

相關文章