Windows System environment variable is not used for oracle variables in 11G. Instead, variables such as ORACLE_SID and ORACLE_HOME_NAME are stored in registry. Oracle 11G uses windows services. Batch file can be utilized to start or stop Oracle services in Windows OS. A sample bat file is provided in this article, tested in Windows 7 and Oracle 11G Release 2 environment. Oracle 11G在windows 7系统上不需要设置系统环境变量。 在命令行环境中运行命令: echo %ORACLE_SID% 可以看到此变量并不存在。 也可以到注册表验证: HKEY_CURRENT_USER\Environment HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 两处均没有Oracle所需变量。 在windows系统下,oracle 11G将ORACLE_SID和ORACLE_HOME_NAME等重要变量存放在注册表中。如果安装多个oracle,那么只有最后安装的这个会存放在注册表中。手动运行set命令可以临时覆盖变量值。 oracle环境变量可通过注册表查看: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_$$$$ 下有Oracle的系列变量值。其中$$$$为ORACLE_HOME_NAME。 也可以用Oracle Assistant for Windows Properties查看:在树形目录中打开Oracle Homes下的列表,然后右键点击其中的Oracle Home即可查看此Oracle Home的变量值。 Oracle 11G在windows中采用了service,这些服务可以设成关闭模式,手动开启模式,或者开机自动开启模式。11G有以下service: 1 Oracle #### VSS Writer Sewrvice 2 OracleDBConsole#### 3 OracleJobScheduler#### 4 OracleMTSRecoveryService 5 Oracle$$$$ClrAgent 6 Oracle$$$$TNSListener 7 OracleService#### 其中####为ORACLE_SID,$$$$为ORACLE_HOME_NAME 以上service中,1用于Windows操作系统专用的备份和恢复服务;2 用于企业管理器Oracle Enterprise Manager的使用;3用于Oracle外部的定时任务;4是为了使用微软的MTS(Microsoft Transaction Server), 即使用 如OO4O,OCI,ADO, OLE DB等功能;5是控制多线程extproc代理;6是开启网络连接和监听;7是数据库主服务。也就是说,最少只要启动第7项,即可使用数据库;再开启第6项,即可从通过网络连接数据库;再开启第2项,即可使用OEM。这3项是最常用的服务。 基于以上信息,我们可以编写自己的批处理命令文件控制数据库的启动和关闭。手动命令永远是最容易控制和管理的。 示例: :: OraService.bat - When prompted, enter start or stop set /p action=Start or stop oracle services? if /I %action%==START goto :SERVICE if /I %action%==STOP goto :SERVICE goto :END :SERVICE set OHOME=$$$$ set OSID=#### echo Processing Oracle Database, TNS Listener and DB Console services ...... net %action% OracleService%OSID% net %action% Oracle%OHOME%TNSListener net %action% OracleDBConsole%OSID% :: net %action% OracleVssWriter%OSID% :: net %action% OracleJobScheduler%OSID% :: net %action% OracleMTSRecoveryService :: net %action% Oracle%OHOME%ClrAgent :END echo Finished pause 将以上内容保存为批处理文件OraService.bat,运行时输入start启动Oracle服务,输入stop则停止Oracle服务。本例启动了3个最常用服务,可根据需要自由修改。注意将其中####改为你的实际ORACLE_SID值,$$$$改为你的实际ORACLE_HOME_NAME值。Windows 7中运行net start/stop命令需要系统权限,否则产生access denied错误。可以右键点击此批处理文件选择以管理员身份运行。也可以建立一个此文件的快捷方式,然后将快捷方式的属性修改为以管理员身份运行。