miércoles, 17 de septiembre de 2014

Sentencias SQL ejecutadas en BRM

A veces necesitamos ver las sentencias SQL que se generan cuando ejecutamos un opcode. El proceso para lograr esto es muy sencillo. En el ambiente donde se incia el dm_oracle hay que setear la variable de ambiente DM_DEBUG3 con el valor 0xFFFF003F, iniciar el dm_oracle y listo. Una vez seteada la variable e iniciado el dm_oracle en el archivo $PIN_HOME/var/dm_oracle/dm_oracle.log se pueden encontrar las sentencias SQL generadas por BRM.
Para setear la variable de ambiente si estamos en c-shell (csh) ejecutamos:
setenv DM_DEBUG3 0xFFFF003F
Para setear la variable de ambiente si estamos en korn shell (sh/ksh) ejecutamos:
export DM_DEBUG3=0xFFFF003F
Hagamos una query sencilla para ver el poid de la cuenta ROOT, utilizaremos un archivo.nap para ejecutarlo con testnap:

r << EOF 1
0 PIN_FLD_POID               POID [0] 0.0.0.1 /search -1 0
0 PIN_FLD_TEMPLATE            STR [0] "select X from /account where F1 = V1 "
0 PIN_FLD_FLAGS               INT [0] 256
0 PIN_FLD_ARGS              ARRAY [1] allocated 20, used 1
1     PIN_FLD_ACCOUNT_NO      STR [0] "ROOT"
0 PIN_FLD_RESULTS           ARRAY [*] allocated 20, used 8
1     PIN_FLD_POID           POID [0] NULL poid pointer
EOF
xop PCM_OP_SEARCH 0 1

Luego de ejecutar testnap archivo.nap, abrimos el archivo $PIN_HOME/var/dm_oracle/dm_oracle.log , buscamos SQL_STMT donde veremos la query ejecutada:

SQL_STMT dm_search_rflds: doing "select distinct  poid_DB, poid_ID0, poid_TYPE, poid_REV from account_t where account_t.account_no = :1 "


Martín Falconi


2 comentarios: