问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

db2的sqc文件里怎么连接数据库

发布网友 发布时间:2022-04-30 19:48

我来回答

2个回答

懂视网 时间:2022-04-14 07:30

通常我们知道,DB2的package在统计信息或依赖对象发生变化后需要做下重新绑定,否则DB2优化器会采用效率较差或者错误的执行计划运

通常我们知道,DB2的package在统计信息或依赖对象发生变化后需要做下重新绑定,否则DB2优化器会采用效率较差或者错误的执行计划运行该package,造成执行性能严重下降或者SP一直会处于卡死状态。所以定期对SP进行重新绑定操作,对数据库整体性能和效率都有较大的提升,但是查一查,关于DB2的SP重新绑定,提供了三个命令:db2rbind、rebind和bind,很多人都分不清这三者区别,如何使用的问题,所以本文就重点对着三个命令用法进行分析。

其实三者都是提供SP重新绑定,不过传入参数不一样,bind需要带入.bnd的文件,缺陷情况下,C或嵌入式SQL编写的SP在precompile时,都会创建一个以.bnd的结尾的文件,数据库中使用程序包和应用程序编译的原因相同,即就是提高性能和压缩,在程序包构建过程而不是执行过程中,SP中的相关语法语义都得到分析,并且程序包中存储的是被解释效率更高的操作字符组,在服务器管理器调用预编译生生成的代码,只需要提供相应的输入变量就可以执行执行,提高了效率。并且预编译仅仅适用静态SQL,而不适合如prepare execute和execute immediate 动态SQL。这些动态SQL还是需要重新进行编译解释。db2提供绑定文件描述工具db2bfd工具可以查看bnd文件。其用法如下:

C:Program Files (x86)IBMSQLLIBnd>db2bfd

Usage: db2bfd [ [-b] [-h] [-s] [-v] ]

Where: is at least a V7 bind file

Options: -b = display bind file header
-h = display this information
-s = display SQL statements
-v = display host variable declarations

C:Program Files (x86)IBMSQLLIBnd>db2bfd -b db2sampl_SQL.bnd

db2sampl_SQL.bnd: Header Contents

Header Fields:

Field Value
----- -----
releaseNum 0x800
Endian 0x4c
numHvars 16
maxSect 14
numStmt 26
optInternalCnt 4
optCount 10


Name Value
------------------ -----
Isolation Level Cursor Stability
Creator "NULLID "
App Name "SQLE6H02"
Timestamp "AAAAABIU:2004/08/01 00:00:00:00"
Cnulreqd Yes
Sql Error No package
Block Block All
Validate Bind
Date Default/local
Time Default/local


*** All other options are using default settings as specified by the server ***

C:Program Files (x86)IBMSQLLIBnd>db2bfd -s db2sampl_SQL.bnd

db2sampl_SQL.bnd: SQL Statements = 26

Line Sec Typ Var Len SQL statement text
---- --- --- --- --- ---------------------------------------------------------
55 0 5 0 21 BEGIN DECLARE SECTION
76 0 2 0 19 END DECLARE SECTION
275 0 14 0 32 WHENEVER SQLERROR GOTO ENDOFPROC
3366 1 9 1 26 EXECUTE IMMEDIATE :H00001
3416 2 0 1 40 VALUES CURRENT SQLID INTO :H00008
3418 3 0 1 32 SET CURRENT SQLID = :H00009
3437 4 0 1 34 SET CURRENT SQLID = :H00008
3459 5 0 1 40 VALUES CURRENT SQLID INTO :H00008
3461 6 0 1 32 SET CURRENT SQLID = :H00009
3547 7 11 1 24 PREPARE S1 FROM :H00001
3582 7 11 1 24 PREPARE S1 FROM :H00001
3598 8 0 1 34 SET CURRENT SQLID = :H00008
3616 0 5 0 21 BEGIN DECLARE SECTION
3619 0 2 0 19 END DECLARE SECTION
3652 7 9 4 56 EXECUTE S1 USING :H00004 , :H00015, :H00005, :H00006
3674 7 9 4 56 EXECUTE S1 USING :H00004 , :H00016, :H00005, :H00006
3720 9 0 1 41 VALUES CURRENT SCHEMA INTO :H00008
3774 10 0 1 33 SET CURRENT SCHEMA = :H00009
3977 11 11 1 32 PREPARE BLOBUPDATE FROM :H00001
4005 12 11 1 32 PREPARE CLOBUPDATE FROM :H00001
4248 13 0 1 86 SELECT NUM_DB_STORAGE_PATHS INTO :H00014 FR
OM TABLE(SNAP_GET_DB(', -1))
4416 14 0 1 35 SET CURRENT SCHEMA = :H00008
4475 11 9 3 58 EXECUTE BLOBUPDATE using :H00010 , :H00005, :H00012

4492 11 9 3 58 EXECUTE BLOBUPDATE using :H00010 , :H00005, :H00012

4551 12 9 3 59 EXECUTE CLOBUPDATE using :H00011 , :H00005, :H00013

4573 12 9 3 59 EXECUTE CLOBUPDATE using :H00011 , :H00005, :H00013

确切来说package都是用如C等嵌入式语言开发编译而来,,所以在执行绑定操作,我们通常需要使用bind,因为bind命令需要传入bnd参数文件名称,如:

C:Program Files (x86)IBMSQLLIBnd>db2 bind db2sampl_SQL.bnd

热心网友 时间:2022-04-14 04:38

1.首先把自己编辑好的SQC文件(如:test.sqc)放在指定的目录下。
2.正式开始编译前,需要和DB2数据库(如:TESTDB)建立连接。
以linux环境为例,在命令行状态下,输入:db2
connect
to
TESTDB
3.调用DB2的prep命令对SQC文件进行预编译,用来生成C文件。
在命令行状态下,输入:db2
prep
test.sqc
BINDFILE
package
using
bindtest
说明:
上述命令中的“BINDFILE”是用来指定在做预编译的同时生成bind文件的(如:bindtest.bnd)
上述命令中的“package
using
bindtest”是用来指定将要写入到DB2的系统表中的package信息的名称(如:bindtest)。
bind文件里记载的是用来写入到package信息的数据。
4.调用DB2的bind
命令从上一步生成的bind文件中读出必要的数据写入到上一步指定名称的package信息中。
并可以给这条信息指定访问权限。
以linux环境为例,在命令行状态下,输入:db2
bind
ConnTEST.bnd
GRANT
PUBLIC
5.到目前为止可以说与DB2相关的所有预编译就基本完成了,我们需要的C文件(如:test.c)也整成生成了,那个bind文件后边暂时不会用到了。
下来就可以调用CC或GCC之类的C代码编译器对这个C文件进行编译,基本的过程是test.c→test.o→test。这样我们就可以执行这个最终的可实行程序了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么打电话给别人,显示无法接通? 我给对方打电话时,他那边响一声后就提示无法接通是什么情况? iPhone 6Plus相机远距离无法对焦,得用力摇几下才恢复,过会又模糊,什么... iphone6plus。近拍清楚,远拍模糊,怎么回事?聚焦不了。 怎么办~ 廉锦枫《廉锦枫》——剧情分析 我想取个好听的英文名字,而且希望是有意义的`拜托了各位谢谢 不锈钢公司取名带匠字文化深厚的企业名称大全 带匠字的厂名 公司名字为什么不可以带匠字 我儿子刚上一年级老师给我发微信时表现不错我怎么和老师沟通 如何通过DB2 connect连接DB2/400数据库 关于樱桃的古诗 玖富万卡倒闭没? db2 远程连接问题 玖富万卡是不是倒闭了,都已经逾期了两天? 如何远程操作DB2数据库 玖富万卡倒闭了吗? Java连接 远程 db2数据库 把路由器拔下来可以是200的网,但是路由器是新买的千兆的呀tp-link ac1200的路由器 DB2如何连接远程服务器和本地服务器 如何通过DB2连接远程服务器端的数据库 特岗教师招聘笔试内容都考哪些,分值占多少? 2019年云南省特岗教师面试总分是多少? 2020毕节特岗试卷总分值多少? 云南特岗教师招聘考试满分是几分? 2019云南特岗教师笔试成绩满分是多少?教育学占几分? 2020黑龙江省特岗笔试总分多少分? 特岗教师的题型和所占分值是多少有人知道吗? 2020云南特岗教师招聘考试满分是多少? 2020特岗教师的总分是几分? 《樱桃》 樱桃 诗词 十二生肖那个是大肖那个小肖啊! 太宰治的《樱桃》没读懂,什么意思啊? 如何在客户端配置ODBC来访问远程DB2 for Windows服务器 钱站与玖富万卡这两个小贷公司到底有没有倒闭? 如何修改DB2 客户机 DB2CODEPAGE 支票有效期的问题 2016年合格考 化学,物理 大概多少分算过 解答(小家小户的肖)打一动物是什么 十二肖头大尾小是什么生肖 基本上每一个淘宝商品下面都有什么领卷的,领优惠券的那是真的吗?怎么进呀 支票的有效期限为十日,到底是十个自然日还是工作日 形容樱桃的诗句 小学生代表什么生肖? 想问一下那些人的淘宝优惠券怎么弄的?有啥方法 重庆高二合格考要多少分才能过关? 高中考多少分及格? 请问这次6月浙江物理学考大概多少分能过 各大平台的内部优惠券都是怎么得到的呢?还有这些优惠券一般人为什么得不...