Changes to the ibm_db2 defaults and directives in Zend Server 8.5 for IBM i

Follow

Issue

Zend Server for IBM i 8.5 includes a new version of the ibm_db2 extension, version 1.9.7.  ibm_db2 1.9.7 changes the defaults for a couple of important directives and introduces some new ones.  This article tells where these changes are documented and provides a copy of the notes for convenient reference.

Environment

Zend Server for IBM i version 8.5 or higher, running on any supported version of IBM i.

Resolution

At the time of this writing, the documentation for ibm_db2 at php.net has not yet been updated with the new directives for version 1.9.7.  This update will occur soon.  At this time, there is documentation for the directives at this location:

PHPDB 2 Change Log

Here is text copied from that page that describes the final changes that may impact the way ibm_db2 works with your application:

IBM i ibm_db2.ini defaults changed: 
1) Default setting ibm_db2.ini is tables with journal enabled (DB2 system default). 
   if you experience no journal table errors (CPF4328),
   please modify ibm_db2.ini to ibm_db2.i5_allow_commit=0 (*NONE).
2) Default setting PASE CCSID is database UTF-8/1208 (Unicode).
   if you experience CCSID issues, re-enable older PASE CCSID conversions, 
   please modify ibm_db2.ini ibm_db2.i5_override_ccsid=0, .
3) Default setting no longer allows blank userid/password.  
   To re-enable older blank userid/password insecure behaviour,
   please modify ibm_db2.ini to ibm_db2.i5_blank_userid=1.

Try these settings for older IBM i tables without journal and/or older security behavior (';' - comment):
$ cat /usr/local/zendsvr6/etc/conf.d/ibm_db2.ini
extension=ibm_db2.so
ibm_db2.i5_allow_commit=0
ibm_db2.i5_override_ccsid=0 
ibm_db2.i5_blank_userid=1

; ===========
; details
; ===========

;ibm_db2.i5_allow_commit=[0..4]
;0 - DB2_I5_TXN_NO_COMMIT - Commitment control is not used (set no journal, if see CPF4328)
;1 - DB2_I5_TXN_READ_UNCOMMITTED - Dirty reads. (default most machines)
;2 - DB2_I5_TXN_READ_COMMITTED - Dirty reads are not possible.
;3 - DB2_I5_TXN_REPEATABLE_READ - Dirty reads and nonrepeatable reads are not possible. 
;4 - DB2_I5_TXN_SERIALIZABLE - Dirty reads, non-repeatable reads, and phantoms are not possible

;ibm_db2.i5_override_ccsid=[0, ascii ccsid]
;1208 - UTF-8 ccsid (default)
;!0 - other pase ccsid
; 0 - original PASE 'job guess' ccsid

;ibm_db2.i5_blank_userid=[0,1]
;0 - normal no blank user/pwd db2 connect (default)
;1 - allow blank user/pwd db2 connect

;ibm_db2.i5_dbcs_alloc=[0,1]
;0 - normal allocations (default)
;1 - expanded allocations for conversion

;ibm_db2.i5_all_pconnect=[0,1]
;0 - normal db2_connect (default)
;1 - force db2_connect to db2_pconnect

;ibm_db2.i5_ignore_userid=[0,1]
;0 - normal user/pwd using QSQSRVR job (default)
;1 - force ignore user/pwd, when possible, no QSQSRVR job 

;ibm_db2.i5_job_sort=[0,1]
;0 - normal sort order (default)
;1 - profile sort order

;ibm_db2.i5_log_verbose=[0,1]
;0 - normal php.log message (default)
;1 - expanded php.log messages

;ibm_db2.i5_max_pconnect=[0,n]
;0 - normal nomax db2 persistent connection (default)
;n - use count recycle db2 persistent connection

;ibm_db2.i5_check_pconnect=[0,1]
;0 - normal no-check db2 persistent connection (default)
;1 - get conn attribute test
;2 - get conn meta test
;3 - create stmt test
;4 - exec/fetch test

;ibm_db2.i5_sys_naming=[0,1]
;0 - sql naming, schema.table (default)
;1 - system naming, *libl/file

;ibm_db2.i5_guard_profile=[0;1]
;0 - normal no monitor use db2 connection (default)
;1 - before use, assure connect profile correct


;ibm_db2.i5_servermode_subsystem=[null,'name']
;   > crtlib adc                                     
;   > CRTSBSD SBSD(ADC/ADC) POOLS((1 *BASE)) TEXT('tony subsystem descr')
;   > CRTJOBD JOBD(ADC/ADC) TEXT('tony job descr')   
;   > CRTCLS CLS(ADC/ADC) TEXT('tony class')              
;   > ADDPJE SBSD(ADC/ADC) PGM(QSYS/QSQSRVR) MAXJOBS(*NOMAX)
;   > strsbs adc/adc
;null - normal default susbsystem QSQSRVR jobs (default)
;'name' - named subsystem QSQSRVR jobs prestart

The default changes can provide better performance, and align more correctly with the default behavior of the DB2-CLI interface.  However, if problems occur, please consider changing the directives to use the older default behaviors, as noted in the first section, above.

Have more questions? Submit a request

Comments

Powered by Zendesk