如何查询oracle版本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查询oracle版本相关的知识,希望对你有一定的参考价值。

select * from v$VERSION;

或者
执行命令
opatch lsinventory
参考技术A select * from v$version

如何在 Oracle 存储过程运行时只提交一个查询

【中文标题】如何在 Oracle 存储过程运行时只提交一个查询【英文标题】:How to Commit only one query during Oracle stored procedure runtime 【发布时间】:2019-01-10 06:17:38 【问题描述】:

我正在使用 SQL 开发人员。我有一个运行很长时间的存储过程。我需要跟踪运行期间发生的情况。

我试过DBMS_output.put_line('trace');。但它在存储过程完成后打印。我也不能使用DBMS_trace(可能是我正在使用的旧版本)。

所以我想出了一个主意。我想在存储过程运行时插入表中。如何在存储过程中只提交插入查询?

【问题讨论】:

你可能想看看"How to commit individual transaction in Oracle PLSQL"。 【参考方案1】:

我看到了两种可能性。

您要么编写一个将日志消息插入表的过程。使用PRAGMA AUTONOMOUS_TRANSACTION 声明此过程:

CREATE OR REPLACE PROCEDURE WriteLogMsg(LogMessage IN VARCHAR2) IS
    PRAGMA AUTONOMOUS_TRANSACTION;      
BEGIN

   INSERT INTO T_LOG_ENTRIES (LOG_DATE, LOG_MESSAGE) 
   VALUES (CURRENT_TIMESTAMP, LogMessage);
   COMMIT;

END WriteLogMsg;

或使用DBMS_APPLICATION_INFO 包:

PROCEDURE LONG_RUNNING_PROCEDURE IS
BEGIN

DBMS_APPLICATION_INFO.SET_MODULE('LONG_RUNNING_PROCEDURE', 'Starting');
...

DBMS_APPLICATION_INFO.SET_ACTION('Still working, please be patient'); 
...

DBMS_APPLICATION_INFO.SET_ACTION('Finished');

-- DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL); -> removes entries for MODULE and ACTION

END;

当程序运行时,您可以查询信息

SELECT USERNAME, MODULE, ACTION
from V$SESSION
where USERNAME = ...;

【讨论】:

【参考方案2】:

在这种情况下,您必须使用 Pragma Autonomous 事务。

使用 Pragma Autonomous 创建一个新过程。

PROCEDURE test_autonomous 
IS
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
   insert ....
   commit;
END test_autonomous;

现在在您的代码中调用此过程。这会做你的伎俩。大家可以使用参数来传递一些你想插入的数据。

【讨论】:

以上是关于如何查询oracle版本的主要内容,如果未能解决你的问题,请参考以下文章

怎么查看oracle版本

如何查询Oracle性能监控

如何从 Oracle DB 查询外部 MS Access DB?

如何在java代码中连接后检查oracle数据库版本

oracle 查版本号,oracle怎样查版本

分页查询如何避免幻读