在11g中AUDIT记录中的TIMESTAMP时间戳使用的是0时区的时间。
利用YANGTK用户登陆,引发AUDIT记录:
SQL> CONN YANGTK
输入口令:
已连接。
SQL> SELECT SESSIONID, USERID, TO_CHAR(NTIMESTAMP#, 'YYYY-MM-DD HH24:MI:SS.FF')
2 FROM SYS.AUD$
3 WHERE USERID = USER;
SESSIONID USERID TO_CHAR(NTIMESTAMP#,'YYYY-MM-
---------- ------------------------------ -----------------------------
153091 YANGTK 2010-04-15 00:04:41.197504
SQL> SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
TO_CHAR(SYSDATE,'YY
-------------------
2010-04-15 08:05:44
可以看到,当前的时间是8点,而对应的0时区的时间是0点。当设置归档时间戳时:
SQL> CONN / AS SYSDBA
已连接。
SQL> BEGIN
2 DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
3 DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
4 SYSTIMESTAMP);
5 END;
6 /
PL/SQL 过程已成功完成。
SQL> SELECT AUDIT_TRAIL,
2 TO_CHAR(LAST_ARCHIVE_TS, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')
3 FROM DBA_AUDIT_MGMT_LAST_ARCH_TS;
AUDIT_TRAIL TO_CHAR(LAST_ARCHIVE_TS,'YYYY-MM-DDH
-------------------- ------------------------------------
STANDARD AUDIT TRAIL 2010-04-15 08:13:05.373926 +00:00
SQL> SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM') FROM DUAL;
TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DDHH24
------------------------------------
2010-04-15 08:15:36.618316 +08:00
即使SYSTIMESTAMP包括时区时间,在赋值的时候,并没有转化为0时区的时间,而是直接将8时区的时间作为0时区的时间进行的赋值。
这也就导致了归档时间戳和预计要设置的时间相差了8个小时。
SQL> SELECT TO_CHAR(SYSTIMESTAMP AT TIME ZONE 'GMT',
2 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')
3 FROM DUAL;
TO_CHAR(SYSTIMESTAMPATTIMEZONE'GMT',
------------------------------------
2010-04-15 00:21:14.529442 +00:00
SQL> BEGIN
2 DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
3 DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
4 SYSTIMESTAMP AT TIME ZONE 'GMT');
5 END;
6 /
PL/SQL 过程已成功完成。
SQL> SELECT AUDIT_TRAIL,
2 TO_CHAR(LAST_ARCHIVE_TS, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')
3 FROM DBA_AUDIT_MGMT_LAST_ARCH_TS;
AUDIT_TRAIL TO_CHAR(LAST_ARCHIVE_TS,'YYYY-MM-DDH
-------------------- ------------------------------------
STANDARD AUDIT TRAIL 2010-04-15 00:21:50.626241 +00:00
为了避免错误的产生,使用SET_LAST_ARCHIVE_TIMESTAMP输入时间戳的时候,就需要指定0时区的时间输入,而不能直接输入SYSTIMESTAMP或SYSDATE等当前时区的时间。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-659766/ ,如需转载,请注明出处,否则将追究法律责任。