本文最后更新于:2 年前
DB2学习
参考:《DB2从入门到精通》 - 明日科技
DB2转换为DECIMAL: https://qa.1r1g.com/sf/ask/3114613141/
DB2数据库学习总结(一) - round函数用法: https://blog.csdn.net/qq_36501591/article/details/82773762
DB2数据类型: https://www.cnblogs.com/xiaojianblogs/p/6288108.html
https://blog.csdn.net/weixin_40983306/article/details/87862270
DB2数据库中的常用的数据类型: https://blog.csdn.net/WziH_CSDN/article/details/111191816
DB2中数据类型DECIMAL的用法: https://blog.csdn.net/love_hanyu/article/details/84362922
什么时候索引会失效?: ttps://www.zhihu.com/question/377039636
索引失效的情况及解决(超详细): https://blog.csdn.net/sy_white/article/details/122112440
1. DB2数据类型
参考:https://www.cnblogs.com/xiaojianblogs/p/6288108.html
DB2数据库的内置数据类型主要分成数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、二进制字符串型(binary string)和日期时间型(datetime)。还有一种叫做 DATALINK 的特殊数据类型。DATALINK 值包含了对存储在数据库以外的文件的逻辑引用。
1) 数值型(numeric) 数值型 数据类型包括 SMALLINT、INTEGER、BIGINT、DECIMAL(p,s)、REAL 和 DOUBLE。所有数值都有符号和精度。精度是指除符号以外的二进制或十进制的位数。如果数字的值大于等于零,就认为符号为正。
小整型,SMALLINT:小整型是两个字节的整数,精度为 5 位。小整型的范围从 -32,768 到 32,767。
大整型,INTEGER 或 INT:大整型是四个字节的整数,精度为 10 位。大整型的范围从 -2,147,483,648 到 2,147,483,647。
巨整型,BIGINT:巨整型是八个字节的整数,精度为 19 位。巨整型的范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
小数型,DECIMAL(p,s)、DEC(p,s)、NUMERIC(p,s) 或 NUM(p,s):小数型的值是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以二-十进制编码(binary-coded decimal,BCD)记数法的变体来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数位是指数字的小数部分的位数,它不可以是负数,也不能大于精度。最大精度是 31 位。小数型的范围从 -10^31+1 到 10^31-1。
单精度浮点数(Single-precision floating-point),REAL:单精度浮点数是实数的 32 位近似值。数字可以为零,或者在从 -3.402E+38 到 -1.175E-37 或从 1.175E-37 到 3.402E+38 的范围内。
双精度浮点数(Double-precision floating-point),DOUBLE,DOUBLE PRECISION 或 FLOAT:双精度浮点数是实数的 64 位近似值。数字可以为零,或者在从 -1.79769E+308 到 -2.225E-307 或从 2.225E-307 到 1.79769E+308 的范围内。
2) 字符串型(character string) 字符串 是字节序列。字符串包括 CHAR(n) 类型的定长字符串和 VARCHAR(n)、LONG VARCHAR 或 CLOB(n) 类型的变长字符串。字符串的长度就是序列中的字节数。
定长字符串,CHARACTER(n) 或 CHAR(n):定长字符串的长度介于 1 到 254 字节之间。如果没有指定长度,那么就认为是 1 个字节。
变长字符串,VARCHAR(n)、CHARACTER VARYING(n) 或 CHAR VARYING(n):VARCHAR(n) 类型的字符串是变长字符串,最长可达 32,672 字节。
LONG VARCHAR:LONG VARCHAR 类型的字符串是变长字符串,最长可达 32,700 字节。
字符大对象字符串(Character Large Object String),CLOB(n[K M G]):CLOB 是变长字符串,最长可以达到 2,147,483,647 字节。如果只指定了 n,那么 n 的值就是最大长度。如果指定了 nK,那么最大长度就是 n1,024(n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度就是 n 1,048,576(n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 2)。CLOB 用于存储基于大单字节字符集(single-byte character set,SBCS)字符的数据或基于混合(多字节字符集(MBCS)和 SBCS)字符的数据。
3) 图形字符串(graphic string) 图形字符串 是表示双字节字符数据的字节序列。图形字符串包括类型为 GRAPHIC(n) 的定长图形字符串和类型为 VARGRAPHIC(n)、LONG VARGRAPHIC 和 DBCLOB(n) 的变长图形字符串。字符串的长度就是序列中双字节字符的数目。
定长图形字符串,GRAPHIC(n):定长图形字符串的长度介于 1 到 127 个双字节字符之间。如果没有指定长度,就认为是 1 个双字节字符。
变长图形字符串,VARGRAPHIC(n):VARGRAPHIC(n) 类型的字符串是变长图形字符串,最大长度可达 16,336 个双字节字符。
LONG VARGRAPHIC:LONG VARGRAPHIC 类型的字符串是变长图形字符串,最大长度可达 16,350 个双字节字符。
双字节字符大对象字符串,DBCLOB(n[K M G]):双字节字符大对象是变长双字节字符图形字符串,最长可达 1,073,741,823 个字符。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n1,024(n 的最大值为 1,048,576)。如果指定了 nM,那么最大长度就是 n 1,048,576(n 的最大值为 1,024)。如果指定了 nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 1)。DBCLOB 用于存储基于大 DBCS(双字节字符集,double-byte character set)字符的数据。二进制字符串是字节序列。
4) 二进制字符串(binary string) 二进制字符串 包括 BLOB(n) 类型的变长字符串,它用于容纳非传统型的数据,诸如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数据。
* 二进制大对象,BLOB(n[K M G]):二进制大对象是变长字符串,最长可达 2,147,483,647 字节。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n1,024(n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度就是 n 1,048,576(n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 2)。
5) 日期时间型(datetime) 日期时间型 数据类型包括 DATE、TIME 和 TIMESTAMP。日期时间值可在某些算术和字符串操作中使用,而且兼容某些字符串,但它们既不是字符串,也不是数字。
DATE:DATE 是一个由三部分组成的值(年、月和日)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。DATE 列长 10 个字节。
TIME:TIME 是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到 59。如果小时为 24,分钟和秒的值都是 0。TIME 列长 8 个字节。
TIMESTAMP:TIMESTAMP 是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到 59。微秒部分的范围是从 000000 到 999999。如果小时是 24,那么分钟值、秒的值和微秒的值都是 0。TIMESTAMP 列长 26 个字节。日期时间值的字符串表示:尽管 DATE、TIME 和 TIMESTAMP 的值的内部表示对用户是透明的,日期、时间和时间戳记也可以用字符串来表示,CHAR 标量函数(请参阅 SQL 的“词类(parts of speech)”)可以用于创建日期时间值的字符串表示。
日期值的字符串表示是一个以数字开始,长度不少于 8 个字符的字符串。日期值的月份和日部分中前面的零可以省略。
时间值的字符串表示是以数字开头,长度不少于 4 个字符的字符串。时间值的小时部分前面的零可以省略,秒部分可以完全省略。如果秒的值没有指定,那么就认为是 0。
时间戳记值的字符串表示是以数字开头,长度不少于 16 个字符的字符串。完整的时间戳记字符串表示形式为 yyyy-mm-dd-hh.mm.ss.nnnnnn。时间戳记值的月、日或小时等几部分前面的零可以省略,微秒可以截断或完全省略。如果任何时间戳记值的微秒部分尾零被省略掉了,那么将假定空缺的数位上为零
2.Oracle和DB2数据类型的比较 Oracle 和DB2 数据类型的比较
Oracle
DB2/400
Oracle数据类型
注意事项
DB2 UDB数据类型
注意事项
DATE
DATE TIME TIMESTAMP
如果只使用MM/DD/YYY,那么使用DATE类型。 如果只使用HH:MM:SS, 那么使用TIME类型。 如果要使用日期和时间,则使用时间戳类型(TIMESTAMP) 能使用Oracle中的TO_CHAR()函数来取DATE的字串来分别和DB2/400的DATE、TIME相匹配。
VARCHAR2(n)
n<=4000
CHAR(n) VARCHAR(n)
若n<=32766,则使用DB2/400中的CHAR类型、VARCHAR
LONG
n<=2GB
VARCHAR(n) CLOB(n)
若n<=32K,则使用DB2/400中的CHAR类型、VARCHAR。 若32K=< n <=2GB,则使用CLOB。
ROW& LONG ROW
n<=255
CHAR(n) FOR BIT DATA VARCHAR(n) FOR BIT DATA BLOB(n)
若n<=32K, 则使用CHAR(n) FOR BIT DATA 或 VARCHAR(n) FOR BIT DATA 若n<=2GB, 则使用BLOB(n)
BLOB
n<=4GB
BLOB(n)
若n<=2GB, 则使用BLOB(n)
CLOB
n<=4GB
CLOB(n)
若n<=2GB, 则使用CLOB(n)
NCLOB
n<=4GB
DBCLOB(n)
若n<=2GB, 则使用DBCLOB(n/2)
NUMBER
SMALLINT/INTEGER/BIGINT DECIMAL(p,s)/NUMBER(p,s) Float(n)/ REAL/DOUBLE
若Oracle中定义NUMBER(p) 或 NUMBER(p,s), 则使用SAMLLINT/INTEGER/BIGINT 若Oracle中定义NUMBER(p,s), 则使用DECIMAL(p,s) 若Oracle中定义NUMBER,则使用FLOAT(n)/REAL/DOUBLE
说明: NUMBER
Oracle中的NUMBER类型可以对应DB2/400中的很多类型,这种对应关系要依赖于Oracle中number将用于保存何种类型的数据,是整型还是带有小数位的实型数据,另外还要考虑类型所占用的存储空间,例如:SAMLLINT占2 byte, INTEGER占4 byte; BIGINT占8 byte;Oracle中的NUMBER类型所占用的存储空间要根据它的定义而定,例如缺省精度下的NUMBER有38个数字长,占用20 byte的空间。具体的对应关系请参照上表。 ROW and LOB类型 DB2/400提供VARCHAR和CLOB与Oracel中的RAW和LONG RAW相对应。Oracle也支持大对象:BLOB、CLOB、CLOB和NCLOB, Oracle中的BLOB和CLOB可以提供4GB的空间,而DB2/400中的BLOB和CLOB只能存放2GB的数据;DB2/400中的DBCLOB与Oracle中的NCLOB 2GB相对应。Oracle 中的BFILE数据类型用于管理数据库以外的二进制数据,数据库中的表将指向数据库外部的存放的BFILE文件,DB2/400也提供一个类似的数据类型DATALINK相对应。 ROWID Oracle ROWIND虚拟列用于对表中的某一列进行唯一标示,DB2/400中也有这样的数据类型ROWID,它与Oracle中的ROWID的功能相似。DB2/400中的ROWID可以存放40 byte的数据用来唯一标示表中的每一行,它没有ccsid属性,这些信息中没有关于datafile、 block 或 row的信息。例如: CREATE TABLE LIBRARYNAME/ORDERS2 (ORDERNO ROWID, SHIPPED_TO VARCHAR (36) , ORDER_DATE DATE) ORDERNO的数据类型为ROWID,用于存放订单号,每当插入一行时,系统自动生成一个值,存放进这个字段。可以用OPERATION NAVIGATOR查看它的内容。 Character type DB2/400的CHAR、VARCHAR类型与Oracle中的VARCHAR2(n)类型相对应,但是Oracle中的VARCHAR2(n)类型仅用于存放较小的字符串,这里的n小于4000,因此在这种情况下,最好用定长的CHAR(N)类型与Oracle的VARCHAR2(n)相对应,这样不仅可以提高效率,还可以节省存储空间,若使用VARCHAR(n)类型最好用ALLOCATE参数,这样可以提高数据库的性能,它可以减少内存和硬盘之间的输入/输出操作。 要注意DB2/400中的字符串中文输入问题,要想在DB2/400上输入中文应用这样的SQL创建表,这里的CCSID 935,代表简体中文。
3. DB2数据类型转换 DB2数据库伪表:SYSIBM.SYSDUMMY1
1 2 3 select 1 from SYSIBM.SYSDUMMY1; # 在不更改代码的情况下创建一张名为DUAL的视图功能与SYSIBM.SYSDUMMY1相同。select 1 from SYSIBM.DUAL;
DUAL 表
参考:https://www.ibm.com/docs/zh/db2/11.1?topic=SSEPGG_11.1.0/com.ibm.db2.luw.apdv.porting.doc/doc/r0052874.htm
任何对 DUAL 表进行的未限定引用将解析为一个内置视图,该视图返回一行以及一列。该列的名称为 DUMMY,值为“X”。DUAL 表类似于 SYSIBM.SYSDUMMY1 表。
要启用 DUAL 表支持,请将 DB2_COMPATIBILITY_VECTOR 注册表变量设置为十六进制值 0x02(位位置 2),然后停止并重新启动该实例:
1 2 3 db2set DB2_COMPATIBILITY_VECTOR=02 db2stop db2start
要激活针对 Oracle 应用程序的所有兼容性功能,请将 DB2_COMPATIBILITY_VECTOR 注册表变量设置为 ORA,然后停止并重新启动该实例:
1 2 3 db2set DB2_COMPATIBILITY_VECTOR=ORA db2stop db2start
将对 DUAL 表进行的未限定表引用解析为 SYSIBM.DUAL。
如果存在用户定义的名为 DUAL 的表,那么 Db2® 服务器会解析对该用户定义表的表引用。
示例:
通过从 DUAL 中进行选择来生成随机数。
1 SELECT RAND() AS RANDOM_NUMBER FROM SYSIBM.DUAL;
检索 CURRENT SCHEMA 专用寄存器的值。
1 2 SET SCHEMA = MYSCHEMA;SELECT CURRENT SCHEMA AS CURRENT_SCHEMA FROM DUAL;
对应的Oracle伪表:
1 SELECT SYSDATE FROM DUAL;
1) 数字转DECIMAL类型
https://blog.csdn.net/weixin_40983306/article/details/87862270
decimal(p,s)
p表示:不包括小数点,不包括符号位,所能存数字的总位数(包括小数部分和整数部分) s表示:小数部分数字的位数,由此可知整数部分的位数为p-s;
举个例子:
decimal(5,2) 能够表示的数的范围 -999.99到999.99;
1 2 3 4 5 # DECIMAL (10 ,2 ) 不含小数点总共10 位,小数位2 位select CAST (1234567890 AS DECIMAL (10 ,2 )) from SYSIBM.SYSDUMMY1; # 两位小数select CAST (12345678.12 AS DECIMAL (10 ,2 )) from SYSIBM.SYSDUMMY1;
数字长度超出报错:
1 select CAST (123456789 AS DECIMAL (10 ,2 )) from SYSIBM.SYSDUMMY1;
SQL 错误 [22003]: 在数字数据类型转换期间发生溢出。. SQLCODE=-413, SQLSTATE=22003, DRIVER=4.26.14
2) decimal函数 decimal(5.15, 15, 2)
1 2 3 4 5 6 7 8 9 10 select CAST (1234567890 AS DECIMAL (10 ,2 )) from SYSIBM.SYSDUMMY1;decimal (5.15 , 15 , 2 )decimal (5.15 / 3.27 , 15 , 2 ) round((5.15 / 3.27 , 2 )float (5.15 )double (5.15 )coalesce (5.15 , 0 )case when a= 0 then 0 else 1 end ;
https://www.ibm.com/docs/zh/db2/11.1?topic=dum-get-hash-value-function-compute-hash-value-given-string
https://www.ibm.com/docs/zh/db2/11.5
D:\Program Files\instantclient_19_10\network\admin
4. 索引 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 create index iemployee on employee(id)create index iemployee on employee(id desc , name asc )create index iemployee on employee(id) allow reverse scansselect id, name from employee order by idcreate unique index iemployeeid on employee(id) include (name )
5. 表空间和表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -- https://www.ibm.com/products/db2-database/pricing -- https://epwt-www.mybluemix.net/software/support/trial/cst/programwebsite.wss?siteId=1120&tabId=2932&p=null&h=null# -- 查看所有表空间 db2 list tablespaces -- 创建表,指定特定的表空间 db2 "create table employee(id integer) in userspace1" -- 查询employee表的所在的表空间 db2 " select tabname, tbspace from syscat.tables where tabname = 'employee' " -- 修改表结构 -- 查看表结构信息 db2 describe table employee -- 为表添加一列 db2 " alter table employee add depart_id integer" -- 修改表某列的数据类型 db2 " alter table employee alter name set data type varchar(20 ) alter gender set not null " -- 删除表,表中的数据和表定义都会被删除。如果为表定义了索引或者约束,也会同时被删除。 db2 " drop table employee"
6. DB2操作命令
参考:https://blog.csdn.net/weixin_39881859/article/details/111515762
1) 打开DB2命令窗口 1 2 C:\Users\db2admin>db2cmd C:\Users\db2admin>
2) 操作数据库实例 1 2 3 4 5 6 7 8 9 # 启动数据库实例 C:\Users\db2admin>db2start 2022-08-24 21:03:49 0 0 SQL1026N 数据库管理器已活动。 SQL1026N 数据库管理器已活动。 C:\Users\db2admin># 停止数据库实例 C:\Users\db2admin>db2stop
3) 连接数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 # 连接到数据库 db2 connect to [dbname] user [username] using [password]# 示例 C:\Users\db2admin>db2 connect to SAMPLE 数据库连接信息 数据库服务器 = DB2/NT64 11.5.7.0 SQL 授权标识 = DB2ADMIN 本地数据库别名 = SAMPLE C:\Users\db2admin># 断开数据库连接 db2 connect reset# 删除数据库 db2 drop database [dbname]# (执行此操作要小心) 如果不能删除,断开所有数据库连接或者重启db2 # 备份数据库 db2 backup db# 备注:执行以上命令之前需要断开数据库连接 1、 db2 backup db btpdbs 2、 db2move btpdbs export db2look -d btpdbs -e -x [-a] -o crttbl.sql# 在线备份数据库 db2 -v "BACKUP DATABASE ONLINE TO WITH 2 BUFFERS BUFFER 1024 INCLUDE LOGS WITHOUT PROMPTING"# 恢复数据库 db2 restore db 1、 db2 restore db btpdbs without rolling forward 2、 db2 -tvf crtdb.sql crtdb.sql文件内容:create db btpdbs on /db2catalog db2 -stvf crttbl.sql db2move btpdbs import# 在线恢复数据库 db2 "RESTORE DB TO LOGTARGET WITHOUT PROMPTING" db2 "ROLLFORWARD DB TO END OF LOGS AND STOP" ...# 导出数据文件 db2move export [-sn ] [-tn ]# 导入数据文件 db2move import# 获取db2数据库管理配置环境信息 db2 get dbm cfg# 获取db2某个数据库数据库管理配置环境信息 db2 get db cfg for# 或者:连接至某个数据库以后执行db2 get db cfg # 更改db2日志空间的大小 # 备注:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。 db2 UPDATE DB CFG FOR USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;# 如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。 # 获取数据库管理器的快照数据 db2 –v get snapshot for dbm# 显示进行程号 db2 list applications show detail
4) 列出所有数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 C:\Users\db2admin>db2 list db directory 系统数据库目录 目录中的条目数 = 1 数据库 1 条目: 数据库别名 = SAMPLE 数据库名称 = SAMPLE 本地数据库目录 = D: 数据库发行版级别 = 15.00 注释 = 目录条目类型 = 间接 目录数据库分区号 = 0 备用服务器主机名 = 备用服务器端口号 = C:\Users\db2admin># 列出所有激活的数据库 C:\Users\db2admin>db2 list active databases
5) 查看表空间列表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 C:\Users\db2admin>db2 list tablespaces SQL1024N 不存在数据库连接。 SQLSTATE=08003 C:\Users\db2admin> C:\Users\db2admin>db2 list tablespaces 当前数据库的表空间 表空间标识 = 0 名称 = SYSCATSPACE 类型 = 数据库管理空间 内容 = 所有持久数据。常规表空间。 状态 = 0x0000 详细解释: 正常 表空间标识 = 1 名称 = TEMPSPACE1 类型 = 系统管理空间 内容 = 系统临时数据 状态 = 0x0000 详细解释: 正常 表空间标识 = 2 名称 = USERSPACE1 类型 = 数据库管理空间 内容 = 所有持久数据。大型表空间。 状态 = 0x0000 详细解释: 正常 表空间标识 = 3 名称 = IBMDB2SAMPLEREL 类型 = 数据库管理空间 内容 = 所有持久数据。大型表空间。 状态 = 0x0000 详细解释: 正常 表空间标识 = 4 名称 = IBMDB2SAMPLEXML 类型 = 数据库管理空间 内容 = 所有持久数据。大型表空间。 状态 = 0x0000 详细解释: 正常 表空间标识 = 5 名称 = SYSTOOLSPACE 类型 = 数据库管理空间 内容 = 所有持久数据。大型表空间。 状态 = 0x0000 详细解释: 正常 C:\Users\db2admin># 创建临时表空间 DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 # cmd查看所有数据库 db2_DB2常用命令1 、 打开命令行窗口#db2cmd 2 、 打开控制中心 # db2cmd db2cc3 、 打开命令编辑器 db2cmd db2ce =====操作数据库命令=====4 、 启动数据库实例#db2start [5 、 停止数据库实例#db2stop 如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all 就可以了 /db2stop force6 、 创建数据库#db2 create db [dbname] 7 、 连接到数据库#db2 connect to [dbname] user [username] using [password] 8 、 断开数据库连接#db2 connect reset 9 、 列出所有数据库#db2 list db directory 10 、 列出所有激活的数据库#db2 list active databases 11 、 列出所有数据库配置#db2 get db cfg 12 、 删除数据库#db2 drop database [dbname] (执行此操作要小心) 如果不能删除,断开所有数据库连接或者重启db2 =========操作数据表命令==========13 、 列出所有用户表#db2 list tables 14 、列出所有系统表#db2 list tables for system 15 、列出所有表#db2 list tables for all 16 、 列出系统表#db2 list tables for system 17 、列出用户表#db2 list tables for user 18 、 列出特定用户表#db2 list tables for schema [user] 19 、 创建一个与数据库中某个表(t2)结构相同的新表(t1)#db2 create table t1 like t2 20 、将一个表t1的数据导入到另一个表t2#db2 "insert into t1 select * from t2" 21 、 查询表#db2 "select * from table name where ..." 22 、 显示表结构#db2 describe table tablename 23 、 修改列#db2 alter table [tablename] alter column [columname] set data type varchar(24) ======脚本文件操作命令=======24 、 执行脚本文件#db2 -tvf scripts.sql 25 、帮助命令 * 查看命令帮助#db2 ? db2start * 查看错误码信息#db2 ? 22001 * memo: 详细命令请使用"db2 ? "进行查看。 =========================26 、备份数据库#db2 backup db 备注:执行以上命令之前需要断开数据库连接27 、在线备份数据库#db2 -v "BACKUP DATABASE ONLINE TO WITH 2 BUFFERS BUFFER 1024 INCLUDE LOGS WITHOUT PROMPTING" 28 、恢复数据库#db2 restore db 29 、在线恢复数据库#db2 "RESTORE DB TO LOGTARGET WITHOUT PROMPTING" #db2 "ROLLFORWARD DB TO END OF LOGS AND STOP" ... 30 、导出数据文件#db2move export [-sn ] [-tn ]31 、导入数据文件#db2move import 32 、获取db2数据库管理配置环境信息#db2 get dbm cfg 33 、.获取db2某个数据库数据库管理配置环境信息#db2 get db cfg for 或者:连接至某个数据库以后执行db2 get db cfg34 、更改db2日志空间的大小 备注:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。#db2 UPDATE DB CFG FOR USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600; 如果页大小是4 KB,则以上命令创建3 个100 M的日志文件,占用300 MB硬盘空间。25600 *4 KB=102400 KB。35 、创建临时表空间#DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256 36 、获取数据库管理器的快照数据#db2 –v get snapshot for dbm 37 、显示进行程号#db2 list applications show detail =================================================== 一、加载数据:1 、 以默认分隔符加载,默认为“,”号 db2 "import from btpoper.txt of del insert into btpoper"2 、 以指定分隔符“|”加载 db2 "import from btpoper.txt of del modified by coldel| insert into btpoper" 二、卸载数据:1 、 卸载一个表中全部数据 db2 "export to btpoper.txt of del select * from btpoper" db2 "export to btpoper.txt of del modified by coldel| select * from btpoper"2 、 带条件卸载一个表中数据 db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'" db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'" db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'" 三、查询数据结构及数据: db2 "select * from btpoper" db2 "select * from btpoper where brhid='907020000' and oprid='0001'" db2 "select oprid,oprnm,brhid,passwd from btpoper" 四、删除表中数据: db2 "delete from btpoper" db2 "delete from btpoper where brhid='907020000' or brhid='907010000'" 五、修改表中数据: db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'" db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'" 六、联接数据库 db2 connect to btpdbs 七、清除数据库联接 db2 connect reset 断开数据库连接 db2 terminate 断开数据库连接 db2 force applications all 断开所有数据库连接 八、备份数据库1 、 db2 backup db btpdbs2 、 db2move btpdbs export db2look -d btpdbs -e -x [-a] -o crttbl.sql 九、恢复数据库1 、 db2 restore db btpdbs without rolling forward2 、 db2 -tvf crtdb.sql crtdb.sql 文件内容:create db btpdbs on /db2catalog db2 -stvf crttbl.sql db2move btpdbs import 十、DB2帮助命令: db2 ? db2 ? restroe db2 ? sqlcode (例:db2 ? sql0803) 注:code必须为4 位数,不够4 位,前面补0 十一、bind命令:将应用程序与数据库作一捆绑,每次恢复数据库后,建议都要做一次bind (1 ) db2 bind br8200.bnd (2 ) /btp/bin/bndall /btp/bnd /btp/bin/bndall /btp/tran/bnd 十二、查看数据库参数: db2 get dbm cfg db2 get db cfg for btpdbs 十三、修改数据库参数: db2 update db cfg for btpdbs using LOGBUFSZ 20 db2 update db cfg for btpdbs using LOGFILSIZ 5120 改完后,应执行以下命令使其生效: db2 stop db2 start 补充: db2 set schema btp 修改当前模式为"btp" db2 list tablespaces show detail 查看当前数据库表空间分配状况 db2 list tablespace containers for 2 show detail 查看tablespace id=2 使用容器所在目录 db2 list application db2 list db directory 列出所有数据库 db2 list active databases 列出所有活动的数据库 db2 list tables for all 列出当前数据库下所有的表 db2 list tables for schema btp 列出当前数据库中schema 为btp的表 db2 list tablespaces show detail 显示数据库空间使用情况 db2 list packages for all db2 "import from tab76.ixf of ixf commitcount 5000 insert into achact" db2 "create table achact_t like achact" db2 "rename table achact_t to achact" db2 "insert into achact_t select * from achact where txndt>=(select lstpgdt from acmact where actno=achact.actno)" db2 get snapshot for dynaimic sql on jining 删除一个实例: # cd /usr/lpp/db2_07_01/instance # ./db2idrop InstName 列出所有DB2实例: # cd /usr/lpp/db2_07_01/bin # ./db2ilist 为数据库建立编目 $ db2 catalog db btpdbs on /db2catalog 取消已编目的数据库btpdbs $ db2 uncatalog db btpdbs 查看版本 # db2level 显示当前数据库管理实例 $ db2 get instance 设置实例系统启动时是否自动启动。 $ db2iauto -on 自动启动 $ db2iauto -off 不自动启动 数据库优化命令: reorg、runstats 当数据库经过一段时间使用,数据空间会变得越来越庞大。一些delete 掉 的数据仍存放在数据库中,占用数据空间,影响系统性能。 因此需要定期 运行reorg、runstats命令,清除已delete 的数据,优化数据结构。 db2 reorg table 表名 db2 runstats on table 表名 with distribution and indexes all 因为要优化的表比较多,所以在/btp/bin目录下提供了一个sh程序runsall, 可在当天业务结束后,运行runsall,对数据库进行优化46 、对一张表运行统计信息#db2 -v runstatson table TAB_NAMEand indexes all 47 、查看是否对数据库执行了RUNSTATS#db2 -v "select tbname, nleaf, nlevels,stats_timefrom sysibm.sysindexes" 48 、更改缓冲池的大小 缓冲池中,当syscat.bufferpools的npages是-1 时,由数据库的配置参数bufferpage控制缓冲池的大小。 将npages的值更改为-1 的命令:#db2 -v connect to DB_NAME #db2 -v select * from syscat.bufferpools #db2 -v alter bufferpoolIBMDEFAULTBP size -1 #db2 -v connect reset #db2 -v terminate 更改数据库配置参数BufferPages的命令如下:#db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value #db2 -v terminate 49 、看数据库监视内容列表#db2 -v get monitor switches 50 、打开某个数据库监视内容#db2 -v update monitor switches using bufferpoolon 51 、获取数据库快照#db2 -v get snapshot for all databases > snap.out #db2 -v get snapshot for dbm>> snap.out #db2 -v get snapshot for all bufferpools>> snap.out #db2 -v terminate 52 、重置数据库快照#db2 -v reset monitor all 53 、计算缓冲池命中率 理想情况下缓冲池命中率在95 %以上,计算公式如下: (1 -((buffer pool data physical reads + buffer pool index physical reads) /(buffer pool data logical reads + pool index logical reads))) *100 % =========数据库实例========================54 、创建db2实例#db2icrt 55 、删除db2实例#db2idrop 56 、设置当前db2实例#set db2intance=db2 57 、显示db2拥有的实例#db2ilist 58 、恢复离线增量备份数据库的命令#DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT 20060314232015 59 、创建样本数据库 在unix平台,使用:#sqllib/bin/db2sampl 在windows,os/2 平台,使用:db2sampl e,e是可选参数,指定将创建数据库的驱动器60 、设置联合数据库为可用(默认联合数据库不可用)#db2 update dbm cfg using federated yes 61 、列出数据库中所有的表#db2 list tables 62 、数据迁移方法1 export脚本示例#db2 connect to testdb user test password test #db2 "export to aa1.ixf of ixf select * from table1" #db2 "export to aa2.ixf of ixf select * from table2" #db2 connect reset import 脚本示例#db2 connect to testdb user test password test #db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting " #db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting " #db2 connect reset 查询表中是否有该字段select 1 from syscat.columns where colname='ID_NO' and tabname='MKTSRV_GLOBAL_DOWN_RECORD' and tabschema='DB2INST1' ; 查询重复的数据select user_code,count(*) from cd_sys_person group by user_code having count(*)>1 语句压缩与指定的表相关联的数据 reorg table TABLE_NAME 解锁表load from /dev/null of del terminate into TABLE_NAME 创建索引Create index 索引名 on 表名(字段1 ,字段2 ) 刷新表 runstats on table talblename and indexes all runstats on table aiapp.mda_xxxxx and index all 查看索引select * from syscat.indexes where tabname='ZHYXZS_KB_SC_END' ; 重新连接connect reset 中断数据库连接 disconnect db2_gcb 建立视图create view V_zjt_tables as select tabschema,tabname from zjt_tables; 建立触发器CREATE TRIGGER zjt_tables_delAFTER DELETE ON zjt_tablesREFERENCING OLD AS OFOR EACH ROW MODE DB2SQLInsert into zjt_tables1values (substr(o.tabschema,1 ,8 ),substr(o.tabname,1 ,10 )) 建立唯一性索引CREATE UNIQUE INDEX I_ztables_tabname ON zjt_tables(tabname); 查看列select SUBSTR(COLNAME,1 ,20 ) as 列名,TYPENAME as 类型,LENGTH as 长度 from columns where tabname='ZJT_TABLES' ; 查看表结构 db2 describe table user1.department db2 describe select * from user .tables 查看表的索引 db2 describe indexes for table user1.department 查看索引select indname from indexes where indname='I_ZTABLES_TABNAME' ; 查看视图select viewname from views where viewname='V_ZJT_TABLES' ; 查看存贮过程SELECT SUBSTR(PROCSCHEMA,1 ,15 ),SUBSTR(PROCNAME,1 ,15 ) FROM SYSCAT.PROCEDURES ; 类型转换(cast ) ip datatype:varchar select cast(ip as integer )+50 from log_comm_failed 关于从db2 导入导出数据的问题 DB2中所谓的数据移动,包括:1. 数据的导入(Import )2. 数据的导出(Export)3. 数据的装入(Load )10 、db2 connect reset 或 db2 terminate 11 、db2set db2codepage=1208 12 、db2 describe table 13 、db2 list tables list tables for system 14 、db2 list tablespaces 二、高级篇15 、fetch first 10 rows only 例如:select * from fetch first 10 rows only 16 、coalesce(字段名,转换后的值) 例如:select coalesce(id,1 ) from 17 、dayofweek(日期) dayofweek_iso 例如:dayofweek(date (2008 -01 -16 )) dayofweek_iso(date (2008 -01 -16 )) 18 、dayofyear(日期) 注意:参数中日期的格式是YYYY-MM-DD的形式,如果不是需要进行转换,否则函数不能使用 例如:日期是20080116 必须要进行转换 dayofweek(concat(concat(concat(substr(openDate,1 ,4 ),'-' ),concat(substr(openDate,5 ,2 ),'-' )),substr(openDate,7 ,2 ))) as week) 这样格式正确的。19 、concatt(参数1 ,连接值) 例如: concat('aa' ,'b' ) 把oracle表导入到db2数据库中,有些字段类型需要进行转换,具体看:oracle与db2数据类型转换 启动DB2服务:db2start 关闭DB2服务: db2stop 一、加载数据:1 、 以默认分隔符加载,默认为“,”号 db2 "import from btpoper.txt of del insert into btpoper"2 、 以指定分隔符“|”加载 db2 "import from btpoper.txt of del modified by coldel| insert into btpoper" 二、卸载数据:1 、 卸载一个表中全部数据 db2 "export to btpoper.txt of del select * from btpoper" db2 "export to btpoper.txt of del modified by coldel| select * from btpoper"2 、 带条件卸载一个表中数据 db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'" db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'" db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'" 三、查询数据结构及数据: db2 "select * from btpoper" db2 "select * from btpoper where brhid='907020000' and oprid='0001'" db2 "select oprid,oprnm,brhid,passwd from btpoper" 四、删除表中数据: db2 "delete from btpoper" db2 "delete from btpoper where brhid='907020000' or brhid='907010000'" 五、修改表中数据: db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'" db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'" 六、联接数据库 db2 connect to btpdbs 七、清除数据库联接 db2 connect reset 断开数据库连接 db2 terminate 断开数据库连接 db2 force applications all 断开所有数据库连接 八、备份数据库1 、 db2 backup db btpdbs2 、 db2move btpdbs export db2look -d btpdbs -e -x [-a] -o crttbl.sql 九、恢复数据库1 、 db2 restore db btpdbs without rolling forward2 、 db2 -tvf crtdb.sql crtdb.sql 文件内容:create db btpdbs on /db2catalog db2 -stvf crttbl.sql db2move btpdbs import 十、DB2帮助命令: db2 ? db2 ? restroe db2 ? sqlcode (例:db2 ? sql0803) 注:code必须为4 位数,不够4 位,前面补0 十一、bind命令:将应用程序与数据库作一捆绑,每次恢复数据库后,建议都要做一次bind (1 ) db2 bind br8200.bnd (2 ) /btp/bin/bndall /btp/bnd /btp/bin/bndall /btp/tran/bnd 十二、查看数据库参数: db2 get dbm cfg db2 get db cfg for btpdbs 十三、修改数据库参数: db2 update db cfg for btpdbs using LOGBUFSZ 20 db2 update db cfg for btpdbs using LOGFILSIZ 5120 改完后,应执行以下命令使其生效: db2 stop db2 start 补充: db2 set schema btp 修改当前模式为"btp" db2 list tablespaces show detail 查看当前数据库表空间分配状况 db2 list tablespace containers for 2 show detail 查看tablespace id=2 使用容器所在目录 db2 list application db2 list db directory 列出所有数据库 db2 list active databases 列出所有活动的数据库 db2 list tables for all 列出当前数据库下所有的表 db2 list tables for schema btp 列出当前数据库中schema 为btp的表 db2 list tablespaces show detail 显示数据库空间使用情况 db2 list packages for all db2 "import from tab76.ixf of ixf commitcount 5000 insert into achact" db2 "create table achact_t like achact" db2 "rename table achact_t to achact" db2 "insert into achact_t select * from achact where txndt>=(select lstpgdt from acmact where actno=achact.actno)" db2 get snapshot for dynaimic sql on jining 删除一个实例: # cd /usr/lpp/db2_07_01/instance # ./db2idrop InstName 列出所有DB2实例: # cd /usr/lpp/db2_07_01/bin # ./db2ilist 为数据库建立编目 $ db2 catalog db btpdbs on /db2catalog 取消已编目的数据库btpdbs $ db2 uncatalog db btpdbs 查看版本 # db2level 显示当前数据库管理实例 $ db2 get instance 设置实例系统启动时是否自动启动。 $ db2iauto -on 自动启动 $ db2iauto -off 不自动启动 数据库优化命令: reorg、runstats 当数据库经过一段时间使用,数据空间会变得越来越庞大。一些delete 掉 的数据仍存放在数据库中,占用数据空间,影响系统性能。因此需要定期 运行reorg、runstats命令,清除已delete 的数据,优化数据结构。 db2 reorg table 表名 db2 runstats on table 表名 with distribution and indexes all 因为要优化的表比较多,所以在/btp/bin目录下提供了一个sh程序runsall, 可在当天业务结束后,运行runsall,对数据库进行优化
7. DB2查看端口号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 C:\Users\db2admin>db2 get dbm cfg DB21061E 未初始化命令行环境。 C:\Users\db2admin>db2cmd C:\Users\db2admin> C:\Users\db2admin>db2 get dbm cfg 数据库管理器配置 节点类型 = 带有本地客户机和远程 客户机的企业服务器版 数据库管理器配置发行版级别 = 0x1500 CPU 速度(毫秒/指令) (CPUSPEED) = 1.613843e-007 通信带宽(MB/秒) (COMM_BANDWIDTH) = 1.000000e+002 最大并发活动数据库数 (NUMDB) = 32 联合数据库系统支持 (FEDERATED) = NO 事务处理器监视器名 (TP_MON_NAME) = 缺省对方付费帐户 (DFT_ACCOUNT_STR) = Java Development Kit 安装路径(JDK_PATH) = D:\PROGRA~1\IBM\SQLLI B\java\jdk 诊断错误捕获级别 (DIAGLEVEL) = 3 通知级别 (NOTIFYLEVEL) = 3 诊断数据目录路径 (DIAGPATH) = D:\DEV\DB2\\IBM\DB2\D B2COPY1\DB2\ $m 当前成员已解析 DIAGPATH = D:\DEV\DB2\\IBM\DB2\DB2COPY1\D B2\DIAG0000\ 备用诊断数据目录路径 (ALT_DIAGPATH) = 当前成员已解析 ALT_DIAGPATH = 轮转 db2diag 和通知日志的大小(MB) (DIAGSIZE) = 0 缺省数据库监视器开关 缓冲池 (DFT_MON_BUFPOOL) = OFF 锁定 (DFT_MON_LOCK) = OFF 排序 (DFT_MON_SORT) = OFF 语句 (DFT_MON_STMT) = OFF 表 (DFT_MON_TABLE) = OFF 时间戳记 (DFT_MON_TIMESTAMP) = ON 工作单元 (DFT_MON_UOW) = OFF 监视实例和数据库的运行状况 (HEALTH_MON) = OFF SYSADM 组名 (SYSADM_GROUP) = SYSCTRL 组名 (SYSCTRL_GROUP) = SYSMAINT 组名 (SYSMAINT_GROUP) = SYSMON 组名 (SYSMON_GROUP) = 客户机用户标识-密码插件 (CLNT_PW_PLUGIN) = 客户机 Kerberos 插件 (CLNT_KRB_PLUGIN) = IBMkrb5 组插件 (GROUP_PLUGIN) = 本地授权的 GSS 插件 (LOCAL_GSSPLUGIN) = 服务器插件方式 (SRV_PLUGIN_MODE) = UNFENCED GSS 插件的服务器列表 (SRVCON_GSSPLUGIN_LIST) = 服务器用户标识-密码插件 (SRVCON_PW_PLUGIN) = 服务器连接认证 (SRVCON_AUTH) = NOT_SPECIFIED 集群管理器 = 数据库管理器认证 (AUTHENTICATION) = SERVER 备用认证 (ALTERNATE_AUTH_ENC) = NOT_SPECIFIED 没有权限就允许编目 (CATALOG_NOAUTH) = NO 信赖所有客户机 (TRUST_ALLCLNTS) = YES 可信的客户机认证 (TRUST_CLNTAUTH) = CLIENT 绕过联合认证 (FED_NOAUTH) = NO 缺省数据库路径 (DFTDBPATH) = D: 数据库监视器堆大小 (4KB) (MON_HEAP_SZ) = AUTOMATIC(66) “Java 虚拟机”堆大小 (4KB) (JAVA_HEAP_SZ) = 65536 审计缓冲区大小 (4KB) (AUDIT_BUF_SZ) = 0 全局实例内存(% 或 4KB) (INSTANCE_MEMORY) = AUTOMATIC(1215444) 成员实例内存(% 或 4KB) = GLOBAL 代理程序的堆栈大小 (AGENT_STACK_SZ) = 16 排序堆阈值 (4KB) (SHEAPTHRES) = 0 目录高速缓存支持 (DIR_CACHE) = YES 应用程序支持层堆大小 (4KB) (ASLHEAPSZ) = 15 最大请求者 I/O 块大小(以字节计) (RQRIOBLK) = 65535 已调速实用程序对工作负载的影响 (UTIL_IMPACT_LIM) = 10 代理程序的优先级 (AGENTPRI) = SYSTEM 代理程序池大小 (NUM_POOLAGENTS) = AUTOMATIC(100) 池中的初始代理程序数 (NUM_INITAGENTS) = 0 最大协调代理程序数 (MAX_COORDAGENTS) = AUTOMATIC(200) 最大客户机连接数 (MAX_CONNECTIONS) = AUTOMATIC(MAX_COORDAG ENTS) 保留受防护的进程 (KEEPFENCED) = YES 合用受防护的进程的数目 (FENCED_POOL) = AUTOMATIC(MAX_COORDAG ENTS) 受防护的进程的初始数目 (NUM_INITFENCED) = 0 索引重新创建时间和重做索引构建 (INDEXREC) = RESTART 事务管理器数据库名称 (TM_DATABASE) = 1ST_CONN 事务再同步时间间隔(秒) (RESYNC_INTERVAL) = 180 SPM 名称 (SPM_NAME) = PC_20211 SPM 日志大小 (SPM_LOG_FILE_SZ) = 256 SPM 再同步代理程序限制 (SPM_MAX_RESYNC) = 20 SPM 日志路径 (SPM_LOG_PATH) = TCP/IP 服务名称 (SVCENAME) = db2c_DB2 发现方式 (DISCOVER) = SEARCH 发现服务器实例 (DISCOVER_INST) = ENABLE SSL 服务器 keydb 文件 (SSL_SVR_KEYDB) = SSL 服务器隐藏文件 (SSL_SVR_STASH) = SSL 服务器证书标签 (SSL_SVR_LABEL) = SSL 服务名称 (SSL_SVCENAME) = SSL 密码规范 (SSL_CIPHERSPECS) = SSL 版本 (SSL_VERSIONS) = SSL 客户机 keydb 文件 (SSL_CLNT_KEYDB) = SSL 客户机隐藏文件 (SSL_CLNT_STASH) = 最大查询并行度 (MAX_QUERYDEGREE) = ANY 启用分区内并行性 (INTRA_PARALLEL) = NO 每个查询的最大异步 TQ 数 (FEDERATED_ASYNC) = 0 FCM 缓冲区的数目 (FCM_NUM_BUFFERS) = AUTOMATIC(4096) FCM 缓冲区大小 (FCM_BUFFER_SIZE) = 32768 FCM 通道的数目 (FCM_NUM_CHANNELS) = AUTOMATIC(2048) FCM 并行性 (FCM_PARALLELISM) = AUTOMATIC(1) 节点连接耗用时间(秒) (CONN_ELAPSE) = 10 最大节点连接重试次数 (MAX_CONNRETRIES) = 5 节点间的最大时差(分钟) (MAX_TIME_DIFF) = 60 db2start/db2stop 超时(分钟) (START_STOP_TIME) = 10 WLM 分派器已启用 (WLM_DISPATCHER) = NO WLM 分派器并行性 (WLM_DISP_CONCUR) = COMPUTED WLM 分派器 CPU 份额已启用 (WLM_DISP_CPU_SHARES) = NO WLM 分派器最低使用率 (%) (WLM_DISP_MIN_UTIL) = 5 通信缓冲区出口库列表 (COMM_EXIT_LIST) = 当前有效体系结构级别 (CUR_EFF_ARCH_LVL) = V:11 R:5 M:7 F:0 I:0 SB:0 当前有效代码级别 (CUR_EFF_CODE_LVL) = V:11 R:5 M:7 F:0 I:0 SB:0 密钥库类型 (KEYSTORE_TYPE) = NONE 密钥库位置 (KEYSTORE_LOCATION) = Python 运行时的路径 (PYTHON_PATH) = R 运行时的路径 (R_PATH) = 多重部件上载部件大小 (MULTIPARTSIZEMB) = 100 C:\Users\db2admin>
查看DB2数据库占用的端口号,分为windows和linux系统查看方式,如下:
一、linux系统查看DB2占用端口号:
1.db2start启动了数据库管理器,并且通讯方式配置为TCP/IP。
2.首先切换到db2inst1用户 su - db2inst1
3.查找TCP/IP Service name db2 get dbm cfg | grep -i service
4.通过上一句命令的输出(如db2c_db2inst1)在/etc/services文件中找对应的端口号 grep db2c_db2inst1 /etc/services
输出 db2c_db2inst1 50000/tcp
其中50000就是db2数据库所占用的端口号
二、windows系统查看DB2占用端口号方式如下:
1、使用命令 db2 get dbm cfg
找到”SVCENAME” 查找到TCP/IP 服务名
2、到系统配置文件里找到service name 对应的 port number
windows:查看 c:\windows\system32\drivers\etc\services
aix: 查看 /etc/services
如下:
DB2_DB2 60000/tcp
DB2_DB2_1 60001/tcp
DB2_DB2_2 60002/tcp
DB2_DB2_END 60003/tcp
1 2 3 4 5 6 7 8 9 10 11 12 c:\windows\system32\drivers\etc\services DB2_DB2 20000/tcp DB2_DB2_1 20001/tcp DB2_DB2_2 20002/tcp DB2_DB2_3 20003/tcp DB2_DB2_4 20004/tcp DB2_DB2_END 20005/tcp directplaysrvr 47624/tcp directplaysrvr 47624/udp db2c_DB2 25000/tcp
dbeaver连接异常:
1 2 [jcc] [t4] [2043] [11550] [4.26.14] 异常 java.net .ConnectException:打开端口 25 ,000 上服务器 localhost/127.0 .0.1 的套接字时出错,消息为:Connection refused: connect。 ERRORCODE=-4499 , SQLSTATE=08001 Connection refused: connect
8. SQL in与exists相关性能问题总结
参考: https://www.cnblogs.com/syforacle/p/5820624.html