我正在尝试通过此功能将数据从 OCI 中的自治数据库发送到 OCI 控制台中创建的日志:
DECLARE
log_endpoint VARCHAR2(4000);
log_body CLOB;
CURSOR audit_cursor IS
SELECT EVENT_TIMESTAMP, DBUSERNAME, ACTION_NAME, RETURN_CODE
FROM UNIFIED_AUDIT_TRAIL
WHERE EVENT_TIMESTAMP > SYSTIMESTAMP - INTERVAL '1' DAY;
BEGIN
log_endpoint := 'https://logging.eu-frankfurt-1.oci.oraclecloud.com/20200531/logs/ocid1.log.oc1.eu-frankfurt-1.mysecretocid';
FOR rec IN audit_cursor LOOP
log_body := '{
"specversion": "1.0",
"source": "autonomous-database",
"eventType": "db-audit-log",
"data": {
"timestamp": "' || TO_CHAR(rec.EVENT_TIMESTAMP, 'YYYY-MM-DD"T"HH24:MI:SS"Z"') || '",
"dbusername": "' || rec.DBUSERNAME || '",
"action": "' || rec.ACTION_NAME || '",
"status": "' || CASE WHEN rec.RETURN_CODE = 0 THEN 'SUCCESS' ELSE 'FAILURE' END || '"
}
}';
DBMS_CLOUD.SEND_REQUEST(
credential_name => 'MY_CRED',
uri => log_endpoint,
method => DBMS_CLOUD.METHOD_POST,
body => log_body
);
END LOOP;
END;
/
此功能的凭证已创建。
当我执行这个函数时我得到
ERROR at line 29:
ORA-06550: line 29, column 5:
PLS-00306: wrong number or types of arguments in call to 'SEND_REQUEST'
ORA-06550: line 29, column 5:
PL/SQL: Statement ignored
从 Oracle 的文档来看,DBMS_CLOUD.SEND_REQUEST 定义似乎一切正常。
这里有什么建议吗?