User access control
Posted in 2019
Topics: Server Administration
Hi,
I have problems to identify witch databases aren't used, I also think that is
a feature missing on informix. I have created two functions and replicate them
over my databases, but sysdbopen don't create any information about
application that appears empty, sysdbclose don't register anything and I would
like to have one database to record this information. Is this possible to
define one procedure for all the databases without creating the procedure over
them?
My code:
**************************************************************************
CREATE table IF NOT EXISTS connect_log (
sid integer,
pid integer,
progname char(256),
hostname char(256),
username char(32),
cnxtime datetime year to second,dnxtime datetime year to second
);
CREATE DBA PROCEDURE IF NOT EXISTS "public".sysdbopen()define v_sid int;
define v_pid int;
define v_progname char(256);
define v_hostname char(256);
define v_username char(32);
SELECT sid, pid, progname, hostname, username INTO v_sid,v_pid,
v_progname,v_hostname, v_username
FROM sysmaster:sysscblst
WHERE sid = DBINFO("sessionid");
INSERT INTO connect_log (sid, pid, progname, hostname, username,cnxtime)
values (v_sid,v_pid,v_progname,v_hostname, v_username,CURRENT);
end procedure;
CREATE DBA PROCEDURE IF NOT EXISTS "public".sysdbclose()
UPDATE connect_log SET (dnxtime) =
(EXTEND(DBINFO('utc_to_datetime',dbinfo('utc_current')), YEAR TOSECOND)) WHERE sid = DBINFO("sessionid") AND dnxtime is NULL;
end procedure;
**************************************************************************
Thanks for any help,
SP
Olá Sergio, how about using the audit functionality and just tracking DB OPEN event (OPDB) ? this should imply too much load and easy to track. I don't see any other way to do it, maybe someone else does Eric