Oracle-11g-R2
在 Oracle 11G 中查詢以獲取 ORACLE_HOME 路徑
任何人都可以通過 PL/SQL 查詢幫助我獲取 Oracle 11G 中的 ORACLE_HOME 路徑嗎?
我要求它只能從 Oracle DB 中獲取,而不是通過作業系統的環境變數。
PS:我是數據庫新手。
適用於 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