Oracle-11g-R2

在 Oracle 11G 中查詢以獲取 ORACLE_HOME 路徑

  • April 13, 2018

任何人都可以通過 PL/SQL 查詢幫助我獲取 Oracle 11G 中的 ORACLE_HOME 路徑嗎?

我要求它只能從 Oracle DB 中獲取,而不是通過作業系統的環境變數。

PS:我是數據庫新手。

sys_context函式

適用於 Oracle 12c

從對偶中選擇 SYS_CONTEXT ('USERENV','ORACLE_HOME');

這不適用於較低版本的 Oracle。對於11g及更低的版本,我不知道一個簡單的方法。

PS:我閱讀了@Balasz 的答案,現在我知道了 11g 版的簡單答案。

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

SQL> var oracle_home clob;
SQL> exec dbms_system.get_env('ORACLE_HOME', :oracle_home);

PL/SQL procedure successfully completed.

SQL> print oracle_home

ORACLE_HOME
--------------------------------------------------------------------------------
/oracle/base/product/db11204ee

但是您希望在查詢中使用它。這個更高版本還允許您僅將這個函式的執行權限授予具有較低權限的使用者,而不是整個 DBMS_SYSTEM 包:

create or replace function get_oracle_home return clob
as
 oh clob;
begin
 dbms_system.get_env('ORACLE_HOME', oh);
 return oh;
end;
/

SQL> select get_oracle_home from dual;

GET_ORACLE_HOME
--------------------------------------------------------------------------------
/oracle/base/product/db11204ee

引用自:https://dba.stackexchange.com/questions/97390