【问题标题】:How to change time zone in xml audit file (Oracle 11g)?如何更改 xml 审计文件 (Oracle 11g) 中的时区?
【发布时间】:2017-02-10 01:51:41
【问题描述】:

我正在用 java 开发一个项目,以显示我的 Oracle 11g 数据库中发生的所有事情。为此,我开始使用 XML 格式的 Audit Trail,因为我想在我的网络中使用它。

我创建了一个用户来试试这个。但我的问题是 xml 文件中的时间戳错误,我需要它来检查连接时间等。

<?xml version="1.0" encoding="UTF-8"?>
<Audit xmlns="http://xmlns.oracle.com/oracleas/schema/dbserver_audittrail-   11_2.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.oracle.com/oracleas/schema/dbserver_audittrail-11_2.xsd">
<Version>11.2</Version>
<AuditRecord><Audit_Type>1</Audit_Type><Session_Id>1260546</Session_Id><StatementId>1</StatementId><EntryId>1</EntryId><Extended_Timestamp>2016-10-01T15:59:47.473000Z</Extended_Timestamp><DB_User>CC</DB_User><OS_User>Admin-PC\Admin</OS_User><Userhost>WORKGROUP\ADMIN-PC</Userhost><OS_Process>1780:2512</OS_Process><Terminal>ADMIN-PC</Terminal><Instance_Number>0</Instance_Number><Action>100</Action><TransactionId>0000000000000000</TransactionId><Returncode>0</Returncode><Comment_Text>Authenticated by: DATABASE</Comment_Text><Priv_Used>5</Priv_Used><DBID>1434098587</DBID>
</AuditRecord>
<AuditRecord><Audit_Type>1</Audit_Type><Session_Id>1260546</Session_Id><EntryId>2</EntryId><Extended_Timestamp>2016-10-01T15:59:50.798000Z</Extended_Timestamp><DB_User>CC</DB_User><OS_User>Admin-PC\Admin</OS_User><Userhost>WORKGROUP\ADMIN-PC</Userhost><Terminal>ADMIN-PC</Terminal><Instance_Number>0</Instance_Number><Action>101</Action><Returncode>0</Returncode><DBID>1434098587</DBID>
</AuditRecord>
</Audit>

这里的时间戳设置为 15:59,但在我的时区应该是 17:59 (UTC+01:00)。然后我尝试了这个语句来检查时区,奇怪的是它是正确的时间。

SELECT db_user, extended_timestamp, action FROM v$xml_audit_trail WHERE db_user='CC' ORDER BY extended_timestamp DESC;

DB_USER      EXTENDED_TIMESTAMP                      ACTION
CC           01.10.16 17:59:50,798000  +02:00        101

有人知道如何为 xml 格式设置正确的时区吗?

提前致谢!

【问题讨论】:

  • 这可能应该在DBA StackExchange 网站上询问,因为它不是立即关于编程,而是关于 db setup/config/settings。
  • 15:59(UTC 时间)+ 1 小时是 16:59 - 不是 17:59!

标签: java xml oracle oracle11g audit-trail


【解决方案1】:

According to the documentation:

Extended_Timestamp 表示审计操作的时间(AUDIT SESSION 创建的条目的用户登录时间戳),采用协调世界时 (UTC) 或格林威治标准时间 (GMT)。该字段仅出现在 XML 审计文件中,不出现在操作系统文本审计文件中。

似乎没有办法改变它,除非您稍后转换文件中的 XML。

时间戳是正确的,只是始终采用 UTC。无论将要使用此 XML(您说过要在“网络中”使用它)都应该能够识别它,并在需要时转换到其他时区,但无论如何在 UTC 中执行所有操作都会更简单。

作为替代方案,您可以使用内置的 XML 生成工具(例如 dbms_xmlgen)从 v$xml_audit 表中生成您自己的 XML,其中包含您想要的任何格式(和时区)的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2023-03-18
    • 2011-03-01
    • 1970-01-01
    • 2011-02-16
    • 2020-07-08
    • 2015-01-23
    相关资源
    最近更新 更多