2016-10-01 15 views
1

Я работаю над проектом в Java, чтобы показать все, что произошло в моей базе данных Oracle 11g. Для этого я начал использовать Audit Trail в формате XML, потому что я хочу использовать его в своей сети.Как изменить часовой пояс в файле проверки xml (Oracle 11g)?

Я создал пользователя, например, чтобы попробовать это. Но моя проблема неправильная отметка времени в 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, действие 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?

Заранее благодарен!

+0

Это, вероятно, должно быть задано на сайте [DBA StackExchange] (http://dba.stackexchange.com/), поскольку это не сразу о программировании, а db setup/config/settings. – Parfait

+0

15:59 (UTC) + 1 час 16:59 - не 17:59! –

ответ

0

According to the documentation:

Extended_Timestamp указует время проверяемой операции (метки времени входа пользователя для записей, созданное AUDIT SESSION), в координированное время (UTC) или среднее время по Гринвичу (GMT). Это поле появляется только в файлах аудита XML, а не в файлах аудита ОС.

Похоже, что это не изменит, если вы не измените XML в файле позже.

Временная метка верна, она всегда находится в UTC. Что бы ни потребляло этот XML (вы сказали, что хотите использовать его «в своей сети») должно быть в состоянии распознать это и при необходимости конвертировать в другие часовые пояса, но все, что угодно в UTC, может быть проще в любом случае.

В качестве альтернативы вы можете создать свой собственный XML из таблицы v$xml_audit с данными в любом формате (и часовом поясе), который вы хотите, используя встроенные средства генерации XML (например, dbms_xmlgen).