在PL/SQL中获取操作系统环境变量

Oracle 10g引入了 DBMS_SYSTEM包中的一个过程GET_ENV。这个过程获得一个环境变量名称并返回环境变量的值。但是它不会返回环境变量PATH的值:

set serveroutput on;
create or replace PROCEDURE dump_osenvs as
buffer varchar2(300);
begin

sys.dbms_system.get_env(‘ORACLE_HOME’, buffer);
dbms_output.put_line(‘ORACLE_HOME: ‘|| buffer);
sys.dbms_system.get_env(‘ORACLE_SID’,buffer);
dbms_output.put_line(‘ORACLE_SID: ‘|| buffer);
sys.dbms_system.get_env(‘COMPUTERNAME’,buffer);
dbms_output.put_line(‘COMPUTERNAME: ‘|| buffer);
sys.dbms_system.get_env(‘OS’,buffer);
dbms_output.put_line(‘OS: ‘|| buffer);
sys.dbms_system.get_env(‘TEMP’,buffer);
dbms_output.put_line(‘TEMP: ‘|| buffer);
sys.dbms_system.get_env(‘WINDIR’,buffer);
dbms_output.put_line(‘WINDIR: ‘|| buffer);
sys.dbms_system.get_env(‘SYSTEMROOT’,buffer);
dbms_output.put_line(‘SYSTEMROOT: ‘|| buffer);
sys.dbms_system.get_env(‘PROGRAMFILES’,buffer);
dbms_output.put_line(‘PROGRAMFILES: ‘|| buffer);
sys.dbms_system.get_env(‘COMSPEC’,buffer);
dbms_output.put_line(‘COMSPEC: ‘|| buffer);
sys.dbms_system.get_env(‘PROCESSOR_ARCHITECTURE’,buffer);
dbms_output.put_line(‘PROCESSOR_ARCHITECTURE: ‘|| buffer);
sys.dbms_system.get_env(‘PROCESSOR_IDENTIFIER’,buffer);
dbms_output.put_line(‘PROCESSOR_IDENTIFIER: ‘|| buffer);
end ;
/

过程已创建。

下面给出这个过程的输出结果:

SQL> exec dump_osenvs;
ORACLE_HOME: E:\oracle\product\10.2.0\db_1
ORACLE_SID: orclv
COMPUTERNAME: WIN_DESK1
OS: Windows_NT
TEMP: C:\WINDOWS\TEMP
WINDIR: C:\WINDOWS
SYSTEMROOT: C:\WINDOWS
PROGRAMFILES: C:\Program Files
COMSPEC: C:\WINDOWS\system32\cmd.exe
PROCESSOR_ARCHITECTURE: x86
PROCESSOR_IDENTIFIER: x86 Family 6 Model 15 Stepping 13, GenuineIntel

PL/SQL 过程已成功完成。

转载请注明源地址: www.askmac.cn


Posted

in

by

Tags:

Comments

2 responses to “在PL/SQL中获取操作系统环境变量”

  1. admin Avatar

    How to check the OS environment variables used when the database instance is started (i.e ORACLE_HOME, ORACLE_SID, ……)?
    The dbms_system.get_env procedure can be used for that purpose:

    I.e

    To check the ORACLE_HOME used when the instance is started:

    variable var1 varchar2(100);
    execute dbms_system.get_env(‘ORACLE_HOME’,:var1)
    PRINT var1

    Sample Run:

    SQL> variable var1 varchar2(100);
    SQL> execute dbms_system.get_env(‘ORACLE_HOME’,:var1)

    PL/SQL procedure successfully completed.

    SQL> print var1

    VAR1
    ——————————————————————————–
    /u01/app/oracle/product/10.2.0.4/db_1

  2. MARKzhu Avatar
    MARKzhu

    请教您:
    在我将系统的该环境变量值修改或者删除该环境变量。
    dbms_system.get_env方法无法获得更新的环境变量值,依就打出上次的变量值。
    有的时候重启数据库也不行。感觉需要重启WINDOW机器才能生效。

Leave a Reply to MARKzhu Cancel reply

Your email address will not be published. Required fields are marked *