1:
connect reset 应该是终止数据库连接,包含一个commit的动作
terminate应该是能终止这个client发起的进程,释放资源
2:
terminate是命令,除了断开连接以外,它还终止clp(命令行处理器)的后台进程,也就是常见的db2bp:back-end process。
connect reset是sql语句。
3:
connect reset只是断开连接,不终止clp后台,在duow(可以同时连接多个数据库的事务)中可以将数据库当前连接休眠。
4:
quit :退出clp,但数据库连接不断开
connect reset:断开数据库连接但不退出clp
terminate:断开数据库连接,同时退出clp
5:
CLP backend process会在从CLP提交命令和SQL语句时启动,其作用就是将Directory file的内容读到内存中,这样不用每次connect都去读一次I/O,以提高效率。
就如上面所说,区别就在于是否终止那个CLP backend process。所以,当你修改了一些参数以后,用terminate的话,下次的CLP命令(比如一个新的connect语句)此参数就会生效;而用connect reset则还不会生效。
disconenct ,当连接在uow executing(事务执行过程中,还没有执行完毕时,是无法断开连接的)
而 connect reset 是可以的,uow会被回滚
执行如下例子
-bash-4.1$ db2 connect to dstdb
Database Connection Information
Database server = DB2/AIX64 9.5.5
SQL authorization ID = DB2INST1
Local database alias = DSTDB
-bash-4.1$ db2 +c "select count(*) from syscat.tables" //取消显示提交,需要db2 commit事务才结束
1
-----------
636
1 record(s) selected.
-bash-4.1$ db2 disconnect
SQL0104N An unexpected token "END-OF-STATEMENT" was found following
"DISCONNECT". Expected tokens may include: "<identifier>". SQLSTATE=42601
-bash-4.1$ db2 disconnect current
SQL0428N The SQL statement is only allowed as the first statement in a unit
of work. SQLSTATE=25001
-bash-4.1$ db2 disconnect all
SQL0428N The SQL statement is only allowed as the first statement in a unit
of work. SQLSTATE=25001
-bash-4.1$ db2 connect reset
DB20000I The SQL command completed successfully.
disconnect current 和disconnect all的区别,前者是断开当前自己的链接,后者ALL断开所有连接
添加新评论0 条评论