Anmelden

View Full Version : ODBC Zugriffe protokollieren



Tabby
20-01-12, 07:48
Hallo zusammen,

kann ich irgendwo auf der AS400 sehen wer per ODBC auf die Daten zugreift?
(V5R3M0)
Ich weiss es geht mit PCSACC/400, aber gibt es da sonst keine Möglichkeiten?
Bietet OS400 da von Haus aus keine Möglichkeit?

Gruß
Annegret

Fuerchau
20-01-12, 07:52
NETSTAT -> Auswahl 3
Hiehr kannst du sehen, welche IP auf welchem Port verbunden ist.
ODBC ist "as_database".

Ggf. gibt es auch entsprechende API's.

BenderD
20-01-12, 08:07
... kommt immer darauf an, was man da eigentlich wissen will...
qsh cmd('system ''dsplog msgid(CPIAD09)'' | grep ''QZDASOINIT''')

gibt auch schon einiges her...

D*B

Tabby
20-01-12, 08:31
danke schon mal,

werde beides mal ausprobieren,
im Grunde will ich wissen welche Dateien auf der As400 "angefasst" werden...
Es sollte also ein Protokoll sein, was dies hergibt.

Gruß
Annegret

Fuerchau
20-01-12, 08:39
Da hilft dann wiederum nur das Audit-Journal.

KM
20-01-12, 09:54
Vielleicht hilft Dir ja schon mal das Tool WRKODBCJOB.

Bryan Dietz -- AS/400-iSeries-i5 Freeware Page (http://home.roadrunner.com/~jbmmdietz/wrkodbcjob.html)

holgerscherer
21-01-12, 13:19
kann ich irgendwo auf der AS400 sehen wer per ODBC auf die Daten zugreift?

Hallo,
wenn Du etwas basteln willst, nimm folgendes CL als Grundlage:



/*-------------------------------------------------------------------*/
/*‚DATENBANK-SERVER SQL EXIT PROGRAM €*/
/*-------------------------------------------------------------------*/
PGM PARM(&STATUS &REQUEST)

DCL VAR(&STATUS) TYPE(*CHAR) LEN(1)
DCL VAR(&REQUEST) TYPE(*CHAR) LEN(2000)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&SERVER) TYPE(*CHAR) LEN(10)
DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8)
DCL VAR(&PKG) TYPE(*CHAR) LEN(10)
DCL VAR(&PKGLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&SQL) TYPE(*CHAR) LEN(512)
DCL VAR(&TEXT) TYPE(*CHAR) LEN(800)
DCL VAR(&TEXT1) TYPE(*CHAR) LEN(75)
DCL VAR(&D) TYPE(*CHAR) LEN(30)
DCL VAR(&DATUM) TYPE(*CHAR) LEN(6)
DCL VAR(&ZEIT) TYPE(*CHAR) LEN(6)
DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10) VALUE(SQLLOGS)
DCL VAR(&MSGQLIB) TYPE(*CHAR) LEN(10) VALUE(QGPL)
DCL VAR(&LOGDAT) TYPE(*CHAR) LEN(8) VALUE(' ')
DCL VAR(&LOGTIM) TYPE(*CHAR) LEN(8) VALUE(' ')

MONMSG MSGID(CPF0000 MCH0000)
CHGJOB JOB(*) LOGCLPGM(*NO)

CHGVAR VAR(&USER) VALUE(%SST(&REQUEST 1 10))
CHGVAR VAR(&SERVER) VALUE(%SST(&REQUEST 11 10))
CHGVAR VAR(&FORMAT) VALUE(%SST(&REQUEST 21 8))

CHGVAR VAR(&PKG) VALUE(%SST(&REQUEST 73 10))
CHGVAR VAR(&PKGLIB) VALUE(%SST(&REQUEST 83 10))
CHGVAR VAR(&SQL) VALUE(%SST(&REQUEST 96 512))

RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATUM)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ZEIT)

IF COND(&ZEIT *LT '010000') THEN(DO)
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATUM)
ENDDO

CVTDAT DATE(&DATUM) TOVAR(&D) FROMFMT(*SYSVAL) +
TOFMT(*SYSVAL) TOSEP(*SYSVAL)
CVTDAT DATE(&DATUM) TOVAR(&LOGDAT) FROMFMT(*SYSVAL) +
TOFMT(*SYSVAL) TOSEP(*SYSVAL)
CHGVAR VAR(&LOGTIM) VALUE(%SST(&ZEIT 1 2) *CAT ':' +
*CAT %SST(&ZEIT 3 2) *CAT ':' *CAT +
%SST(&ZEIT 5 2))

CHGVAR VAR(&D) VALUE(&D *BCAT %SST(&ZEIT 1 2) *CAT +
':' *CAT %SST(&ZEIT 3 2) *CAT ':' *CAT +
%SST(&ZEIT 5 2))

CHGVAR VAR(&TEXT1) VALUE(&D *BCAT &USER) +

IF COND(&PKG *NE ' ') THEN(CHGVAR VAR(&TEXT1) +
VALUE(&TEXT1 *BCAT &PKGLIB *TCAT '/' +
*TCAT &PKG))

CHGVAR VAR(&TEXT) VALUE(&TEXT1 *BCAT &SQL)

MONMSG MSGID(CPF0000) EXEC(DO)
SNDMSG MSG('!! ADDSQLLOG: ' *TCAT &SQL) TOUSR(QSYSOPR)

ENDPGM


Das Ganze dann in den Exit-Punkt QIBM_QZDA_SQL1

-h