11g AUDIT的TIMESTAMP時間戳
在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部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-659766/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Timestamp-時間戳轉換時間戳
- SQL Server中timestamp(時間戳)SQLServer時間戳
- Elasticsearch為記錄新增時間戳timestampElasticsearch時間戳
- 教你如何使用MySQL中CURRENT_TIMESTAMP時間戳MySql時間戳
- javascript時間戳與php返回的時間戳統一JavaScript時間戳PHP
- 如何將UTC時間轉換為Unix時間戳(How to convert UTC time to unix timestamp)時間戳
- MySQL時間戳、時間MySql時間戳
- java時間戳和PHP時間戳的轉換phptime()Java時間戳PHP
- 兩個時間戳的時間差時間戳
- JavaScript 時間戳JavaScript時間戳
- kafka時間戳Kafka時間戳
- 時間型別和時間戳型別時間戳
- 時間轉換成時間戳時間戳
- C 時間轉換時間戳時間戳
- C# 時間戳轉時間C#時間戳
- C 時間戳轉換成時間時間戳
- 時間戳轉化為時間格式時間戳
- 時間戳與時間字串的多時區轉換時間戳字串
- js獲取某時間的當天0點時間戳 與某時間的當週週一0點時間戳JS時間戳
- Mysql - 如何決定用 datetime、timestamp、int 哪種型別儲存時間戳?MySql型別時間戳
- javascript時間戳和時間格式的相互轉換JavaScript時間戳
- mysql時間操作(時間差和時間戳和時間字串的互轉)MySql時間戳字串
- JavaScript獲取時間戳JavaScript時間戳
- Python-時間戳Python時間戳
- Excel中時間戳轉換時間Excel時間戳
- 轉換時間戳的函式時間戳函式
- SCN 時間戳的相互轉換時間戳
- unity+時間戳的應用Unity時間戳
- c++ 獲取當前時間周初凌晨時間戳(獲取當前時間週一凌晨時間戳)C++時間戳
- javascript將時間物件轉換為時間戳JavaScript物件時間戳
- 常見的Javascript獲取時間戳JavaScript時間戳
- javascript獲取當前的時間戳JavaScript時間戳
- Mongoose無法更新時間戳Go時間戳
- PostgreSQL自動更新時間戳SQL時間戳
- PHP日期格式轉時間戳PHP時間戳
- 設定oralce時間戳格式時間戳
- Unix 字串時間戳問題字串時間戳
- 時間戳效能最佳化時間戳