[英]Auditable actions on database users
下面的查詢旨在檢索用戶的操作並從昨天提取信息。 這個問題即使 where 子句從昨天開始指定 event_timestamp 它似乎是從月初開始提取信息,其次我需要提取操作(由用戶執行的查詢,我如何在嘗試使用 sql_text 列時實現這一點,但它是數據類型 clob 因此它不能被引用。請參閱下面的查詢:
SELECT
OS_USERNAME,
DBUSERNAME,
TERMINAL,
EVENT_TIMESTAMP,
ACTION_NAME,
OBJECT_NAME,
decode(RETURN_CODE, 0, 'Successful', 'Failed') RETURN_CODE
FROM
unified_audit_trail
WHERE
action_name like 'ALTER USER%'
or action_name like 'CREATE USER%'
or action_name like 'DROP USER%'
AND event_timestamp between Trunc(SYSDATE -1) AND Trunc(SYSDATE);
先感謝您
數據來自“昨天之前”的問題是微不足道的; 在我看來,對邏輯運算符( or
, and
, not
)的優先順序感到困惑的人不應該編寫代碼,除了在學習過程中 - 同時他們還參加了邏輯補習課程。
3 + 2 + 5 = 10
,但3 + 2 + 5 * 7
不是10 * 7 = 70
。 看:
select 3 + 2 + 5 * 7 as result from dual;
RESULT
----------
40 -- the result is not 70!
你明白為什么嗎?
更重要的是,修復這個簡單的算術計算以獲得“預期”結果 70 的方法正是修復where
子句的方法。
至於您的第二個問題-“參考”是什么意思,如“因此無法參考”? 你的意思是你不能select
它,因為它是一個clob
? 為什么不? 我可以在我的系統上完美地做到這一點; 稍微修改一下您的查詢以表明您可以 select sql_text
非常好:
SELECT
DBUSERNAME,
EVENT_TIMESTAMP,
ACTION_NAME,
OBJECT_NAME,
decode(RETURN_CODE, 0, 'Successful', 'Failed') RETURN_CODE,
SQL_TEXT
FROM
unified_audit_trail
WHERE
dbusername != 'SYS' and action_name like 'ALTER USER%' and rownum <= 4;
DBUSERNAME EVENT_TIMESTAMP ACTION_NAME OBJECT_NAME RETURN_CODE SQL_TEXT
---------- ----------------------- ----------- ----------- ----------- -------------------------------------------------------------
SYSTEM 2018-04-27 15:41:46.120 ALTER USER HR Successful alter user "HR" identified by * account unlock
ORDS_TEST 2020-03-21 13:41:55.811 ALTER USER ORDS_TEST Successful alter user "ORDS_TEST" grant connect through ORDS_PUBLIC_USER
MATHGUY 2020-11-12 10:05:12.304 ALTER USER GRAPH Successful ALTER USER "GRAPH"
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK
MATHGUY 2020-11-12 10:05:12.377 ALTER USER GRAPH Successful ALTER USER "GRAPH" QUOTA UNLIMITED ON USERS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.