显示标签为“DB2”的博文。显示所有博文
显示标签为“DB2”的博文。显示所有博文

2009年5月6日星期三

DB2之grant

记住下面几个例子就好了,执行之前要连上一个db
db2 grant dbadm on database to user db2admin
db2 grant insert on table sales to group grp1

db2 revoke dbadm on database from user db2admin

2009年4月28日星期二

DB2 之sysadm与dbadm

sysadm与dbadm是DB2中的两个重要的authority
sysadm是Instance的最高authority, 将拥有instance上的所有权限
dbadm是一个db的最高authority, 将拥有一个db上的所有权限

在v95及其之前,sysadm将隐含拥有sysadm的authority

2009年4月23日星期四

db2 设置最大连接数

连接到数据库后,用get db cfg for database查看一下maxappls和avg_appls的数值。
用update db cfg for database using maxappls number试试把maxappls设置得更大些。
---------------------------------------------------------------

在控制中心也可以设置
list applications all 可以看到当前的进程

2009年3月18日星期三

DB2之执行sql脚本

最普通情况:
db2 -tvf yourfile.sql  脚本中用分号隔开每条语句, !开头的语句表示clp命令

换个分隔符@:
db2 -td@ -vf yourfile.sql 

DB2之db2trc

除了db2diog.log之外的详细trace, 一般是给developer来debug的
一个普通流程:
db2trc on; #打开trace
db2trc clr; #清空之前的trace
do your things
db2trc dump trace.dmp; #导出trace
db2trc off; #关闭trace
db2trc flw trace.dmp trace.flw; #转成flw格式
db2trc fmt trace.dmp trace.fmt; #转成fmt格式

参考:

2009年3月12日星期四

DB2中有用的系统视图

参考:http://www.devx.com/dbzone/Article/29585/1954

SYSCAT.TABLES
Column Name Data Type Description
TABSCHEMA VARCHAR(128) Stores the schema name on which the database object is defined
TABNAME VARCHAR(128) Stores the name of the database object, such as table, view, nickname, or an alias
TYPE CHAR(1) Identifies the database object as a table, view, alias, or a nickname (The type value 'T' means table; 'V' means view; 'N' means nickname; and 'A' means alias.)
COLCOUNT SMALLINT Number of columns in the table or view
KEYCOLUMNS SMALLINT Number of columns that constitute the primary key
KEYINDEXID SMALLINT Index ID for the primary key
KEYUNIQUE SMALLINT Number of unique constraints in the table or view



SYSCAT.VIEWS
Column Name Data Type Description
VIEWSCHEMA VARCHAR(128) Schema name for the view
VIEWNAME VARCHAR(128) Name of the view
DEFINER VARCHAR(128) User who created the view
VIEWCHECK CHAR(1) Type of view checking defined for this view:
  • N = means no check option
  • L = means local check option
  • C = means cascaded check option
  • READONLY CHAR(1) Defines whether the view is read only or not:
  • Y = means read only
  • N = means view is not read only
  • VALID CHAR(1) Determines the validity of the view:
  • Y = means view is valid
  • X = means view is invalid
  • TEXT CLOB(64K) DDL text for view


    SYSCAT.INDEXES
    Column Name Data Type Description
    INDSCHEMA VARCHAR(128) Name of the schema on which the index is defined
    INDNAME VARCHAR(18) Index name
    DEFINER VARCHAR(128) User who created the index
    TABSCHEMA VARCHAR(128) Stores the schema name of the table on which the index is defined
    TABNAME VARCHAR(128) Stores the name of the table for which index is defined
    COLNAMES VARCHAR(640) List of columns in the index
    UNIQUERULE CHAR(1) Determines whether the index is unique or not:
  • D = means duplicate allowed
  • P = means primary index
  • U = means unique index
  • INDEXTYPE CHAR(4)
  • CLUS = means clustered index
  • REG = means regular index
  • DIM = means dimension block index
  • BLOK = means block index




  • SYSCAT.TRIGGERS
    Column Name Data Type Description
    TRIGSCHEMA VARCHAR(128) Name of the schema on which the trigger is defined
    TRIGNAME VARCHAR(18) Trigger name
    DEFINER VARCHAR(128) User who created the index
    TABSCHEMA VARCHAR(128) Stores the schema name of the table for which the trigger is defined
    TABNAME VARCHAR(128) Name of table for which the trigger is defined
    TRIGTIME CHAR(1)
  • A = means after trigger
  • B = means before trigger
  • I = means instead of trigger
  • TRIGEVENET CHAR(1) Event for which the trigger is defined:
  • I = means INSERT
  • D = means DELETE
  • U = means UPDATE
  • GRANULARITY CHAR(1) Determines whether the trigger is executed per statement or per row:
  • S = means once per statement
  • R = means once per row
  • TEXT CLOB(64K) Full text of the trigger statement




    2009年2月15日星期日

    DB2之RENAME

    用来改table, view和index的名字

    例如
    RENAME TABLE test.table1 TO newname

    注意新名字里面不要带schema

    2009年2月3日星期二

    DB2之SQL优化

    这个题目太大,先开个头, 后面再补充

    1. 用索引(废话), 建了索引还要经常RUNSTATS

    2. exists比in快

    3. 少用select *, 不但慢还不好维护

    4.

    2009年1月22日星期四

    DB2之FETCH FIRST

    注意是FETCH FIRST不是FETCH
    相当于SQL Server的top语句,
    SELECT * FROM TABLE1 FETCH FIRST 100 ROWS ONLY

    DB2之Table Volatile

    当一个表在执行期变化很大时,就是说一会儿空一会儿满,可以考虑设置volatile来优化它,这样优化器会通过索引来扫描它从而优化性能
    ALTER TABLE  VOLATILE CARDINALITY 

    2009年1月16日星期五

    DB2之Special registers

    Special register类似系统方法,可以在sql直接用,最知名的莫过于CURRENT TIMESTAMP,CURRENT DATE了,所以到文档里去找查询系统时间的系统方法是找不到的。

    所有Special registers的定义:http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0008404.htm

    DB2之JDBC

    1. 首先有两种driver, 旧的和新的
    • 旧的 CLI 驱动程序 (称CLI driver) 类名为COM.ibm.db2.jdbc.app.DB2Driver,物理表示是 db2java.zip 文件
    • 新的 JDBC 通用驱动程序 (称Universal driver, 也可称JCC driver)类名为com.ibm.db2.jcc.DB2Driver, 物理表示是 db2jcc.jar 文件, 对于不同的系统还需要个license的jar
    2. DB2 dirver有4种类型Type1-Type4,真够乱其实有用的主要是Type2和Type4

    Type2需要客户端装了DB2客户端并且把源数据库catalog过来,jdbc会调用本地库
    URL Pattern:jdbc:db2:databasename
    CLI和Universal driver都支持Type2

    Type4是纯java, 不用装任何额外的东西
    URL Pattern:jdbc:db2://ServerIP:50000/databasename
    注意了只有Universal driver才支持Type4

    除此之外Type1没啥用,Type3只有CLI支持,但类名不太一样

    参考:
    http://www.ibm.com/developerworks/db2/library/techarticle/dm-0512kokkat/
    http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512kokkat/index.html

    2009年1月14日星期三

    DB2之runstats

    注意是runstats,目的就是向DB2的优化器提供信息,这样DB2在执行SQL等命令时可以根据表的实际情况做出优化,选择最好的ACCESS PLAN。
    表:
    RUNSTATS ON TABLE <表名>
    索引:
    RUNSTATS ON TABLE <表名> FOR INDEXES ALL
    表和索引:
    RUNSTATS ON TABLE <表名> AND INDEXES ALL
    一个用法:
    发生大量修改(更新、插入、删除)后,先运行RUNSTAT,再REORGCHK一下,对有必要需要表REORG的运行REORG命令。然后在用RUNSTAT统计信息这样表的使用空间和使用效率都可以得到交好的提高

    2009年1月11日星期日

    DB2之db2set

    db2set是用来设置db2实例的profile registries,总之profile registries要比实例的configuration parameters要大一点,比系统环境变量小一点

    1. db2set -lr //列出所有profile registries

    2. db2set registry_variable = value //设值

    3. db2set registry_variable = //恢复成默认值

    DB2之catalog

    参考:http://hi.baidu.com/%BF%B5%BD%A1/blog/item/94e70708062ff433e9248887.html

    1. 把远程机器catalog到一个node
    db2 catalog tcpip node p570 remote 172.10.10.10 server 50000
    节点其实就是把远程服务器映射到本地,类似指向远程服务器和实例的地址指针

    2. 把远程数据库catalog到这个node上
    db2 catalog db REMOTEDB at node p570
    可以理解为把远程服务器实例下的数据库映射到本地为一个别名

    备注:在catalog之前保证远程实例的profile  variables中DB2COMM=TCPIP,用下面的命令设置
    db2set DB2COMM=TCPIP

    2009年1月8日星期四

    DB2之查看错误代码

    db2 ? SQL30081N

    看trace
    /home/db2inst1/sqllib/db2dump/db2diag.log

    2009年1月4日星期日

    DB2之Instance管理

    1.创建
    db2icrt instance_name //windows

    db2icrt -u fanced_user instance_name //linux or unix
    User-defined functions and stored procedures, by default, are created in fenced mode so that these processes run in a different address space than the DB2 engine

    2.删除
    db2idrop -f instance_name

    3.查看
    db2ilist //list

    4.Migration
    db2imigr instance_name //从32位migrate到64位

    5.Update
    db2iupdt instance_name //打了fix pack就需要update

    2008年12月15日星期一

    DB2隔离级别和锁一点总结

    四种级别由高到低要牢记:RR, RS, CS(Default), UR
    任何级别的写得时候都需要加X锁,这样保证没有Lost updates
    UR读不加锁,所以有Dirty Read
    CS读只对当前游码加S锁,所以有可能有Nonrepeatable Read
    RS读对读取到得到的结果级都加锁,只会有Phantom
    RR读也对读取到得到的结果级都加锁,连Phantom都没有(why?)

    参考: http://blog.chinaunix.net/u1/33594/showart_327266.html

    2008年12月3日星期三

    CODESET, TERRITORY, COLLATE

    create table会用到这三个参数
    CODESET其实就是codepage,表示你可以在数据库里存什么样的文字,GBK当然指可以存中文或者英文。UTF8或者USC-2这些Unicode当然啥文字都支持了。
    TERRITORY填国家号比如CN, UK之类,它会影响日期和事件的格式。
    COLLATE是指String类型(char, varchar)的比较方和排序的方式,IDENTITY是最快的,它根据bit来比。其他的方式会依赖字符集,精确一些但是开销大。

    详细的说明(其他的都不用看了)看infocenter:
    http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.admin.nls.doc/doc/t0004617.html

    DB2 marks

    http://db2bookmarks.com/