DB2数据库适配NC65

来源:这里教程网 时间:2026-03-03 15:08:32 作者:

DB2数据库适配NC65 整理下16年写的DB2相关文档,换工作以后一直没用过DB2,忘的差不多了。 NC65适配的数据库版本: DB2 中创建表空间 Yonyou NC 6.5 在使用 DB2 数据库时要求:建立 NNC_DATA01 NNC_INDEX01 两个表空间,对两个表空间的最小大小有具体要求。具体数据文件存放位置、存放形式、容器个数等没有限制,在具体使用中需要根据实际情况修改容器等存储的位置和大小,达到磁盘最大读写效率。 对于表空间的管理建议如下: 

1. NNC_DATA01 表空间页大小选 "16K" ,使用页大小为 "16K" 的缓冲池

2. NNC_INDEX01 表空间页大小选择 "4K" ,使用页大小为 "4K" 的缓冲池

3. Usertemp 用户临时表空间,名称可以自己确定 , 表空间页大小选择 16K ,使用页大小为 16K 的缓冲池

4. Systemp 系统临时表空间,名称可以自己确定 , 表空间页大小选择 16K ,使用页大小为 16K 的缓冲池

2.1 运行脚本 1.SQL

/* 数据库名称,数据文件目录,数据文件大小等根据实际情况而定 */ 其中脚本1.SQL、2.SQL、3.SQL见文章结尾 创建数据库UAP65 创建缓存池; 创建NNC_DATA01 表空间; 创建NNC_INDEX01 表空间; 创建临时表; D:\DB2>db2 -tvf 1.sql

2.2 运行脚本 2.SQL

配置数据库参数 D:\DB2>db2 -tvf 2.sql

2.3 运行脚本 3.SQL

创建 analyze_tb 存储过程,定期收集统计信息

D:\DB2>db2 -tvf 3.sql 3.sql 脚本运行结束后会生成收集统计信息的存储过程analyze_tb ,可以通过 job 定时收集统计信息; Windows 系统: 控制面板 \ 所有控制面板项 \ 管理工具 \ 任务计划程序 Linux 系统: 写一个 runstats.sh 脚本,脚本内容如下 : date db2 connect to UAP 65 db2 "call analyze_tb" date echo "DB2 RUNSTATS END" 然后在db2inst1 用户下建立一 crontab ,引用此脚本 0 0 * * * /data2/db2home/db2inst1/runstats.sh >> /data2/db2home/db2inst1/runstats.log 每天晚上00:00:00 开始收集统计信息 脚本 1.sql -------------------- ----Create_DB -------------------- ---1 创建数据库 uap65 CREATE   DATABASE  uap65 USING  CODESET GBK TERRITORY CN COLLATE USING   SYSTEM  CATALOG TABLESPACE   MANAGED   BY   DATABASE   USING   (   FILE   'D:\DB2\uap65\Catalogdata1'   128000   )   USER   TABLESPACE   MANAGED   BY   DATABASE   USING   (   FILE   'D:\DB2\uap65\Userdata1'   512000   )   TEMPORARY   TABLESPACE   MANAGED   BY   DATABASE   USING   (   FILE   'D:\DB2\uap65\Tempspace1'   768000   ); ---2 连接数据 uap65( 用户可以新建 ) connect   to  uap65 ; ---3 创建 bufferpool CREATE  Bufferpool NCUSED4 SIZE   102400  PAGESIZE 4 K ; CREATE  Bufferpool NCUSED16 SIZE   38400  PAGESIZE 16 K ; CREATE  Bufferpool NCTMPUSED16 SIZE   38400  PAGESIZE 16 K ; ---4 创建表空间 NNC_DATA01 NNC_INDEX01 CREATE  regular TABLESPACE  NNC_DATA01 PAGESIZE 16 K MANAGED   BY   DATABASE   USING   (   FILE   'D:\DB2\uap65\nnc_data01'   1024000 )  EXTENTSIZE 8  OVERHEAD 24.1  PREFETCHSIZE 8  TRANSFERRATE 0.9  BUFFERPOOL NCUSED16 ; ---1024000*16K=15.6G --- 表空间不足时可以通过以下命令添加数据文件 ---Alter tablespace NNC_DATA01 add (file D:\DB2\NC\nnc_data01a  409600) CREATE  regular TABLESPACE  NNC_INDEX01 PAGESIZE 4 K MANAGED   BY   DATABASE   USING   (   FILE   'D:\DB2\uap65\nnc_index01'   1024000 )  EXTENTSIZE 32  OVERHEAD 24.1  PREFETCHSIZE 32  TRANSFERRATE 0.9  BUFFERPOOL NCUSED4 ; ---1024000*4K=3.9G ---Alter tablespace NNC_INDEX01 add (file D:\DB2\NC\nnc_index01b  409600) ---5 创建 DB2 临时表空间 CREATE   USER   TEMPORARY   TABLESPACE  USERTEMP PAGESIZE 16 K MANAGED   BY   SYSTEM   USING   (   'D:\DB2\uap65\Usertemp1'   )  EXTENTSIZE 32  OVERHEAD 10.67  PREFETCHSIZE 32  TRANSFERRATE 0.04  BUFFERPOOL NCTMPUSED16 ; CREATE   SYSTEM   TEMPORARY   TABLESPACE  TEMPSPACE2 PAGESIZE 16 K MANAGED   BY   SYSTEM   USING   (   'D:\DB2\uap65\Tempspace2'   )  EXTENTSIZE 32  OVERHEAD 10.67  PREFETCHSIZE 32  TRANSFERRATE 0.04  BUFFERPOOL NCTMPUSED16 ; ---6 授权 GRANT   DBADM , CREATETAB , BINDADD , CONNECT , CREATE_NOT_FENCED_ROUTINE , IMPLICIT_SCHEMA , LOAD , CREATE_EXTERNAL_ROUTINE , QUIESCE_CONNECT , SECADM ON   DATABASE    TO   USER  db2inst1 ; GRANT   USE   OF   TABLESPACE  NNC_DATA01 TO   USER  db2inst1 WITH   GRANT   OPTION ; GRANT   USE   OF   TABLESPACE  NNC_INDEX01 TO   USER  db2inst1 WITH   GRANT   OPTION ; GRANT   USE   OF   TABLESPACE  USERTEMP TO   USER  db2inst1 WITH   GRANT   OPTION ; CONNECT   RESET ; 2.sql -------------------- ----Update_Parameter -------------------- ---connect to uap65 connect   to  uap65 ; ---1 update  dbm cfg using  aslheapsz 768 ; ---2 update  dbm cfg using  sheapthres 40000 ; ---3 update  dbm cfg using  maxagents   300 ; ---4 update  dbm cfg using  NUM_POOLAGENTS   100 ; ---5 update   database  configuration for  uap65 using  DBHEAP   10240   automatic ; ---6 update   database  configuration for  uap65 using  logbufsz   1024 ;   ---7 update   database  configuration for  uap65 using  CATALOGCACHE_SZ   3072 ;   ---8 update   database  configuration for  uap65 using  locklist   10240   automatic ; ---9 update   database  configuration for  uap65 using  appl_memory automatic ; ---10 update   database  configuration for  uap65 using  sortheap   4096   automatic ; ---11 update   database  configuration for  uap65 using  stmtheap   3072   automatic ; ---12 update   database  configuration for  uap65 using  applheapsz   1024   automatic ;   ---13 update   database  configuration for  uap65 using  pckcachesz   10240   automatic ; ---14 update   database  configuration for  uap65 using  NUM_IOCLEANERS   1   automatic ; ---15 update   database  configuration for  uap65 using  NUM_IOSERVERS   1   automatic ; ---16 ---update database configuration for uap65 using maxlocks  80; --- locklist 参数 automatic 矛盾,先不修改 ---17 update   database  configuration for  uap65 using  MAXAPPLS   300 ; ---18 update   database  configuration for  uap65 using  AVG_APPLS   200 ; ---19 update   database  configuration for  uap65 using  logfilsiz   51200 ; ---20 update   database  configuration for  uap65 using  logprimary   30 ; ---21 update   database  configuration for  uap65 using  logsecond   200 ; --22 update   database  configuration for  uap65 using  MINCOMMIT   1 ; CONNECT   RESET ; /* db2stop force db2start db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES db2set DB2_RESTRICT_DDF=TRUE db2set DB2_COMPATIBILITY_VECTOR=ORA db2set DB2PORTRANGE=60000:60003 db2set DB2COMM=TCPIP */ 3.sql -------------------- ---- analyze_tb -------------------- connect   to  uap65 user  db2inst1 using  ufsoft * 123 # drop   PROCEDURE  analyze_tb# CREATE   PROCEDURE  analyze_tb ()   LANGUAGE   SQL  MODIFIES SQL   DATA   begin         declare  i integer   default   0 ;     declare  v_date timestamp ;     DECLARE  stmt VARCHAR ( 4000 );   declare  v_current_schema varchar ( 4000 );     select   current_schema   into  v_current_schema from  sysibm.SYSDUMMY1 ;     select   count (*)   into  i from  syscat.tables where  tabname = 'ANALYZE_LOG'   and  tabschema = v_current_schema ;   if  i = 0   then       set  stmt =   'create table analyze_log(tabschema varchar(200),tabname varchar(200),analyze_time timestamp)' ; execute   immediate  stmt ;   end   if ;         for  line as   select  tabschema ,  tabname from  syscat.tables where   type = 'T'   and  tabschema = v_current_schema and  tabname not   like   'UT%'   and  tabname not   like   'TEM%'   and  tabname not   like   'TMP%'  do   set  stmt =   'CALL SYSPROC.ADMIN_CMD(''RUNSTATS ON TABLE ' || rtrim ( line.tabschema )|| '.' || line.tabname || ' on key columns with distribution on key columns and index all'')' ;     execute   immediate  stmt ;   select  current_timestamp into  v_date from  sysibm.sysdummy1 ;   set  stmt = 'insert into analyze_log values(''' || v_current_schema || ''',''' || line.tabname || ''',''' || v_date || ''')' ;   execute   immediate  stmt ;   end   for ;   end# 欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

相关推荐