求助一个简单的 PL/SQL编成 4 创建一个系统的触发器----用于自动记录用户注销数据库时的用户名和时间 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1. 用 sys 用户登录 Oracle2. 创建记录用户登录信息的表CREATE TABLE LOG$INFORMATION ( ID NUMBER(10), USERNAME VARCHAR2(30), LOGINTIME DATE, TERMINAL VARCHAR2(50), IPADRESS VARCHAR2(20), OSUSER VARCHAR2(30), MACHINE VARCHAR2(64), PROGRAM VARCHAR2(64), SID NUMBER, SERIAL# NUMBER, AUSID NUMBER ) 3. 创建一个 Sequence,作为登录信息的主键CREATE SEQUENCE LOGIN_SEQ minvalue 1 maxvalue 9999999999 start with 1 increment by 1 cache 204. 创建触发器,记录用户登录信息CREATE OR REPLACE TRIGGER LOGIN_RECORD_TR AFTER logon ON DATABASE DECLARE mtSession v$session%ROWTYPE; CURSOR cSession(iiQuerySid IN NUMBER) IS SELECT * FROM v$session WHERE audsid = iiQuerySid; BEGIN OPEN cSession(userenv('SESSIONID')); FETCH cSession INTO mtSession; IF cSession%FOUND AND SYS_CONTEXT ('USERENV','IP_ADDRESS') IS NOT NULL THEN INSERT INTO log$information( id, username, logintime, terminal, ipadress, osuser, machine, program, sid, serial#, ausid ) VALUES( login_seq.nextval, USER, SYSDATE, mtSession.Terminal, SYS_CONTEXT ('USERENV','IP_ADDRESS'), mtSession.Osuser, mtSession.Machine, mtSession.Program, mtSession.Sid, mtSession.Serial#, userenv('SESSIONID') ); END IF; CLOSE cSession; EXCEPTION WHEN OTHERS THEN RAISE; END;/ http://topic.csdn.net/u/20100605/21/eddf1731-1df5-4d59-8769-67057297505c.html?seed=71308516&r=66017537#r_66017537感激不尽噢 orcle备份还原问题 建立视图时出现如下问题,请各位大大看看 比较同一表的两个字段 应该如何建索引或者有其他办法提高效率 SQL某一字段单元格里有重复的如何查询出来??? 求sql语句优化,急急!!!! 一个动态创建表的问题~ 请问pro*c预编译器在oracle的哪个产品组件里?在那里可以下载?谢谢 大侠能否帮帮小弟解决两个问题? 给CSDN提个建议: 请把给分系统作的完善点! oracle数据库中时间格式的数据乱码 游标的定义和使用 oracle 10g exp问题
1. 用 sys 用户登录 Oracle
2. 创建记录用户登录信息的表
CREATE TABLE LOG$INFORMATION
(
ID NUMBER(10),
USERNAME VARCHAR2(30),
LOGINTIME DATE,
TERMINAL VARCHAR2(50),
IPADRESS VARCHAR2(20),
OSUSER VARCHAR2(30),
MACHINE VARCHAR2(64),
PROGRAM VARCHAR2(64),
SID NUMBER,
SERIAL# NUMBER,
AUSID NUMBER
)
3. 创建一个 Sequence,作为登录信息的主键
CREATE SEQUENCE LOGIN_SEQ
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 204. 创建触发器,记录用户登录信息
CREATE OR REPLACE TRIGGER LOGIN_RECORD_TR
AFTER logon ON DATABASE
DECLARE
mtSession v$session%ROWTYPE;
CURSOR cSession(iiQuerySid IN NUMBER) IS
SELECT * FROM v$session
WHERE audsid = iiQuerySid;
BEGIN
OPEN cSession(userenv('SESSIONID'));
FETCH cSession INTO mtSession;
IF cSession%FOUND AND SYS_CONTEXT ('USERENV','IP_ADDRESS') IS NOT NULL THEN
INSERT INTO log$information(
id,
username,
logintime,
terminal,
ipadress,
osuser,
machine,
program,
sid,
serial#,
ausid
) VALUES(
login_seq.nextval,
USER,
SYSDATE,
mtSession.Terminal,
SYS_CONTEXT ('USERENV','IP_ADDRESS'),
mtSession.Osuser,
mtSession.Machine,
mtSession.Program,
mtSession.Sid,
mtSession.Serial#,
userenv('SESSIONID')
);
END IF;
CLOSE cSession;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/