Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: client/server to oracle
The more complicated way to restrict access from adhoc query tools
Grant SELECT on V$SESSION TO <ACCOUNT BEING RESTRICTED>
Quick test table...
CREATE TABLE DEPT3_16 (
DEPT_NO NUMBER(10),
DEPT_NAME VARCHAR2(30));
Test script - This will return a value to match up with SID in v$session...
set serveroutput on
DECLARE
X VARCHAR2(40);
Y NUMBER;
BEGIN
X := DBMS_SESSION.UNIQUE_SESSION_ID;
SELECT DECODE(SUBSTR(X,1,1),'A',10,'B',11,'C',
12,'D',13,'E',14,'F',15, TO_NUMBER(SUBSTR(X,1,1))) + (DECODE(SUBSTR(X,2,1),'A',10,'B',11,'C', 12,'D',13,'E',14,'F',15, TO_NUMBER(SUBSTR(X,2,1))) * 16) + (DECODE(SUBSTR(X,3,1),'A',10,'B',11,'C', 12,'D',13,'E',14,'F',15, TO_NUMBER(SUBSTR(X,3,1))) * 256) INTO Y FROM DUAL;
12,'D',13,'E',14,'F',15, TO_NUMBER(SUBSTR(X,1,1))) +
(DECODE(SUBSTR(X,2,1),'A',10,'B',11,'C',
12,'D',13,'E',14,'F',15, TO_NUMBER(SUBSTR(X,2,1))) * 16) +
(DECODE(SUBSTR(X,3,1),'A',10,'B',11,'C',
12,'D',13,'E',14,'F',15, TO_NUMBER(SUBSTR(X,3,1))) * 256) INTO SSID FROM DUAL; SELECT COUNT(*) INTO CNT
IF CNT > 0 Then
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;
Trigger to stop the sql_plus weenie...
CREATE OR REPLACE TRIGGER BI_DEPT3_16 BEFORE INSERT
ON DEPT3_16
BEGIN
IF STOP_UPDATE THEN
RAISE_APPLICATION_ERROR(-20001, 'INVALID OPERATION FOR THIS TOOL');END IF;
SID PROGRAM
---------- ---------------------------------------------------------------- 1 ORACLE80.EXE 2 ORACLE80.EXE 3 ORACLE80.EXE 4 ORACLE80.EXE 5 ORACLE80.EXE 6 ORACLE80.EXE 7 8 9 C:\Program Files\Microsoft Office\Office\Shortcut Bar\Office\SQL 11 C:\orant\agentbin\DBSNMP.EXEPaul in VT Received on Tue Sep 28 1999 - 10:21:34 CDT