如何使用 SQL Plus 从 DB 用户获取日志信息?

Posted

技术标签:

【中文标题】如何使用 SQL Plus 从 DB 用户获取日志信息?【英文标题】:How can I get log info from DB user with SQL Plus? 【发布时间】:2019-02-06 13:11:42 【问题描述】:

我们公司正在使用 Oracle 数据库。出于监管原因,我们需要一份包含所有数据库用户的“报告”,这些用户用于在 2018 年更新我们软件的数据库及其登录和注销时间戳。我知道 Oracle 有一个跟踪该功能的工具,但不幸的是,我们公司从未使用过该功能,并且仍处于停用状态。这样的东西还能买到吗?

我需要的实际上应该是这样的: 1. 列:数据库用户 2. 栏目:登录时间戳 3.列:注销时间戳

可能是这样的:

prod_user | 01.02.2018 05:30:05 | 01.02.2018 05:35:30  
prod_user | 02.02.2018 10:06:16 | 02.02.2018 10:48:58

最好的问候

【问题讨论】:

【参考方案1】:

没有。

除非您在数据库中启用审计并审计连接,否则 Oracle 默认不存储用户登录/注销。

来自the AUDIT SESSION documentation:

此选项为连接到实例的每个会话生成单个审核记录。审计记录在连接时插入审计跟踪,并在断开连接时更新。此记录可以包括连接时间、断开连接时间以及处理的逻辑和物理 I/O 等信息。

不管怎样,您可以通过查看管理视图DBA_USERS 中的列LAST_LOGIN 来访问任何用户的上次登录日期。这是一项常规功能,不需要启用审核。

【讨论】:

谢谢。从现在开始,我们将使用审计来跟踪这些记录。【参考方案2】:

假设您使用的用户具有足够的权限,您可以使用 DBA_AUDIT_SESSION 视图来检查您需要的信息。 Documentation Oracle 10g

【讨论】:

以上是关于如何使用 SQL Plus 从 DB 用户获取日志信息?的主要内容,如果未能解决你的问题,请参考以下文章

db2cmd如何执行sql文件并传递参数?

如何从 db2 中的 diaglog 获取特定的错误日志

如何从 db2 错误日志中 grep 下面的 sql 部分

如何在 SQL Server 2005 中获取事务日志的逻辑名称

实验四:SQL*PLUS命令的使用

如何通过SQL从IBM db2中的查询中获取列名