Oracle

Oracle 12c - 嘗試使用 SYS 使用者創建觸發器時權限不足

  • August 3, 2020

我想為 CRE 模式創建一個觸發器。我正在嘗試使用 SYS 使用者創建此觸發器,但權限不足錯誤。

我的觸發器:

CREATE OR REPLACE TRIGGER CRE.TRIGGER_NAME
AFTER LOGON ON DATABASE
DECLARE
asd1 NUMBER;
asd2 NUMBER;
asd3 NUMBER;
asd4 NUMBER;
asd NUMBER;
qwe VARCHAR2(200);
qaz VARCHAR2(200);
ewq NUMBER;
zaq VARCHAR2(50);
xsw VARCHAR2(50);
BEGIN
CRE.SOME_PROCEDURE_NAME('S', SYSDATE);
END;
/

SYS使用者怎麼可能?

我該如何解決?

最好的祝福。

即使您將觸發器創建為SYS,所有者也必須具有以下CREATE TRIGGER權限:

GRANT CREATE TRIGGER TO CRE;

除了上述之外,要創建AFTER LOGON ON DATABASE觸發器,ADMINISTER DATABASE TRIGGER還需要權限:

GRANT ADMINISTER DATABASE TRIGGER TO CRE;

CRE帳戶可以執行“SOME_PROCEDURE_NAME”程序嗎?

您正在創建一個由使用者 CRE 擁有的觸發器,預設情況下,它將使用DEFINER Rights創建。

您想要在該觸發器中執行的任何操作都必須由 CRE 使用者本身“可能”執行,並且任何此類權限都必須直接授予使用者。它無法通過角色的應用獲得這些權限(因為該帳戶獨立於它可能授予或可能不授予它的任何角色而存在)。

引用自:https://dba.stackexchange.com/questions/273081