暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何确定ora_home目录在哪里使用SQL或PL/SQL?

askTom 2017-12-13
983

问题描述

我尝试了以下几点:
DECLARE
  theresult varchar2(1000);
begin
  dbms_system.get_env('ORACLE_HOME', theresult);

  dbms_output.put_line('result = ' || theresult);
end;
复制


但是得到了以下错误

line 2: ORA-06550: line 4, column 3:
PLS-00201: identifier 'DBMS_SYSTEM.GET_ENV' must be declared
ORA-06550: line 4, column 3:
复制


我检查了数据库PL/SQL包和类型引用,并注意到没有列出dbms_system包。我用谷歌搜索了这个问题,但找不到任何其他解决方案。

我能够通过使用注册表来找出ora_home目录,但是最好通过SQL或PL/SQL来做到这一点。

专家解答

DBMS_SYSTEM是一个内部例程,因此仅授予SYS。

我倾向于使用外部表,例如

runenv.bat
==========
@echo off
C:\Windows\System32\cmd.exe /c "set"


SQL> CREATE TABLE t
  2      ( env_name VARCHAR2(100)
  3      , env_val  VARCHAR2(1000)
  4      )
  5      ORGANIZATION EXTERNAL
  6      (
  7        TYPE ORACLE_LOADER
  8       DEFAULT DIRECTORY temp
  9       ACCESS PARAMETERS
 10       (
 11          RECORDS DELIMITED BY NEWLINE
 12          PREPROCESSOR temp: 'runenv.bat'
 13          FIELDS TERMINATED BY '='
 14       )
 15       LOCATION ('empty.txt')
 16     )
 17     REJECT LIMIT UNLIMITED;

Table created.

(where empty.txt is a file of zero size)

SQL> select * from t;

ENV_NAME
----------------------------------------------------------------------------------------------------
ENV_VAL
----------------------------------------------------------------------------------------------------------------------------------
COMSPEC
C:\WINDOWS\system32\cmd.exe

ORACLE_HOME
c:\oracle\product\12.2.0.1

PATH
c:\oracle\product\12.2.0.1\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Dell\DW WLAN Card;c:\oracle\product\12.1.0.2\b
in;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System3
2\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Progr
am Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:
\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\bin;c:\bin\usr\local\wbin;C:\Program Files (x86)\Windows Live\Sh
ared;C:\Program Files\Git\cmd;C:\Program Files (x86)\Skype\Phone\;c:\bin\ffmpeg\bin;C:\WINDOWS\system32\config\systemprofile\AppDa
ta\Local\Microsoft\WindowsApps

PATHEXT
.COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC

PROMPT
$P$G


5 rows selected.

复制


请记住,环境变量是数据库启动的变量,而不是会话中的变量


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论