【windows】将程序启动加载到系统服务

来源:互联网 发布:c语言不等号怎么打出来 编辑:程序博客网 时间:2024/04/27 20:48

oracle 8i 装到 windows xp,系统启动时报错,oradb80.exe 启动失败。

以前查到是 xp和 oracle 8i系统兼容的问题,数据库是装在 别人电脑上,所以眼不见心不烦。 现在 自己机子上跑 ,发现的确无法忍受。 没办法,查资料。

Microsoft的帮助文档也有这方面的介绍 http://support.microsoft.com/kb/841180 .
这一段常和微软的帮助文档打交道,感觉文档说得简洁,但是实际操作 往往要涉及更多。上面提供两种方案。
1。批处理
      相对而言批处理,比较简单,比较致命的是,系统必须登陆之后,这个批处理才能执行。
      这个处理可以参看微软提供的帮助。 下面转抄一下。
    Oracle 数据库服务启动行为更改为运行 Oracle 数据库, 计算机上手动类型, 然后手动启动 Oracle 数据库服务。 要这样做, 请按照下列步骤操作:

1. 为手动更改 Oracle 数据库服务的启动类型。 要这样做, 请按照下列步骤操作: a. 开始 , 指向 设置 , 依次 控制面板 。 b. 在控制面板, 双击 管理工具 。 c. 在工具窗口, 双击 服务 。 d. 在右窗格是该服务窗口, 双击 OracleService < SID > 。 e. OracleService < SID > 属性 (本地计算机) 对话框中单击 常规 选项卡。 f. 单击 " 启动类型 列表, 中 手动 并单击 " 确定 " 。 2. 更改是对 Oracle 数据库实例设置启动这样 Oracle 数据库服务启动时不自动不启动的数据库实例。 要这样, 请按照下列步骤操作。

警告 如果注册表编辑器使用不当, 可能会严重问题, 可能需要以重新安装操作系统。 Microsoft 无法保证您能解决因注册表编辑器使用不当而导致问题。 需要您自担风险使用注册表编辑器。 a. 开始 , 依次 运行 。 b. 在 打开 框中, 键入 regedit , 然后单击 确定 。 c. 在注册表编辑器, 找到以下注册表项: HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0

注意 对此注册表项的名称结束于零 (0), 不字母 o。 d. 在右窗格注册表编辑器, 双击单击 ORA_ < SID > _AUTOSTART 。

注意 : < SID > 替换 Oracle 数据库服务的名称。 e. 编辑字符串 对话框中, 在 数值数据 框中, 键入 FALSE , 然后单击 确定 。 f. 关闭注册表编辑器。 3. 使用 StartupOracleORCL.sql 名称创建以下批处理文件:

connect <username>/<password>startup PFILE=<Full path of the INIT.ORA file for the instance of Oracle database>exit
4. 使用 Orastart.bat 在同一文件夹位置步骤 3 中创建 StartupOracleORCL.sql 批处理文件名称创建以下 Windows 批处理文件:
@echo offnet start <Oracle Service Name>set ORACLE_SID=<Oracle SID> svrmgrl @<Full path of startupOracleORCL.sql created in Step 3>exit

注意 您必须替换 Oracle < FullServiceName > 分别与 Oracle 数据库服务名称和 SID 对 Oracle 数据库服务, 和 < Oracle SID > 5. 在命令提示符处运行 Orastart.bat 文件。

注意 您可能发现的数据库实例启动成功。

2。通过使用 Windows 资源工具包工具是 Oracle 服务启动自动化

   这个建立 花了我比较长的时间。 先把微软的帮助 贴一下,在讲一下,要注意的东西


  要通过服务实用程序 (Srvany.exe), 用作服务安装工具 (Instsrv.exe) 和应用程序自动化的
  Oracle 服务启动请按照下列步骤操作。 

1. 下载并安装 Windows 资源工具包工具。 DownloadDownload the Rktools.exe package now. (http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;DisplayLang=en) 2. 创建根是驱动器 C 上名为 OracleStartup 文件夹 3. C:/OracleStartup 文件夹中创建一个文本文件, 名为 OracleStartup.reg 且包含下列信息:

REGEDIT4[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/OracleStartup/Parameters]"Application"="C://OracleStartup//OracleStartup.cmd"[HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0]"ORA_ORCL_AUTOSTART"=hex(2):34,00,36,00,2c,00,30,00,30,00,2c,00,34,00,31,00,2c,00,30,00,30,/  00,2c,00,34,00,63,00,2c,00,30,00,30,00,2c,00,35,00,33,00,2c,00,30,00,30,00,/  2c,00,34,00,35,00,2c,00,30,00,30,00,2c,00,30,00,30,00,2c,00,30,00,30,00,00,/  00
4. 双击 C:/OracleStartup/Oracle.reg 文本文件将信息导入注册表。 5. C:/OracleStartup 文件夹中创建一个文本文件, 名为 OracleStartup.cmd 且包含下列信息:
sleep 60net start OracleServiceORCLSET ORACLE_SID=ORCLsvrmgrl @C:/OracleStartup/OracleStartup.sqlsleep 15EXIT
6. 创建包含下列信息, C:/OracleStartup/OracleStartup.sql 文本文件:
connect internal/oraclestartup PFILE=C:/init.ora
注意 : 启动参数必须包括对 Init.ora 文件完全限定路径。

要点 : C:/OracleStartup/OracleStartup.cmd 文件包含用户凭据以明文形式。 因此, 限制对该文件及对 Oracle 服务启动帐户仅向管理员访问。 您可能能够避免包括 C:/OracleStartup/OracleStartup.cmd 文件中的用户凭据通过配置 " Oracle 服务器对于 Windows 身份。 有关如何配置 Oracle for Windows 身份验证, 获取笔记: 60634.1) WIN 从 OracleCorporation (: 安装 O/S 验证。 有关如何联系 OracleCorporation, 请访问以下网站:
http://www.oracle.com/ (http://www.oracle.com/)
7. 作为服务启动 OracleStartup 通过 InstSrv.exe 和 SrvAny.exe 资源工具包工具和通过使用下列命令:

" C:/ProgramFiles/Microsoft Files/Resource Kit/instsrv.exe " OracleStartup " C:/ProgramFiles/Microsoft Files/Resource Kit/SRVAny.exe "
sc config " OracleServiceORCL " start= demand
退出
8. 重新启动 Windows。

 

第一步操作应该没有问题。
第二步要注意,如果你去查看注册表(在导入之后),会发现在HKEY_LOCAL_MACHINE/SYSTEM 下面有两个
CurrentControlSet,而恰恰第一个是不起作用的(具体原因不知) ,查看第二个CurrentControlSet,可以发现
注册的东西 已经在里面了。
第三步创建sql脚本 和cmd 执行文件 没有什么难度,唯一要注意的就是 路径,以及脚本中 的svrmgr的具体名字,比如 我的8i 就是 svrmgr30.exe(开始还折腾了半天)
第四步服务注册。 这一步很重要,我看着说明操作的,不过一直不顺利。 实际操作应该是这样
   1。 安装第一步下载的 工具包。
   2。 将srvany.exe注册到服务项  : 因为安装的路径是没有设进系统path的,所以先定位到 工具包的文件夹下,
      比如我安装完是 c:/program Files/windows Resource Kits/tools ( 注意这个路径是有空格的,所以上面的
     步骤 要用双引号)。
    命令行执行  :   instsrv  srvany  "c:/program Files/windows Resource Kits/tools/srvany.exe"
    会提示注册成功
     接下来,注册OracleStartup启动, 注意 这个服务名要和第二步操作的 注册表服务项名字一致  即 
    “OracleStartup”。 
    命令行执行 instsrv  OracleStartup "c:/program Files/windows Resource Kits/tools/srvany.exe"  

   接下来的 sc config OracleServiceORCL  start= demand 只是要改变 OracleServiceORCL 的启动类型而已,
  (这里有一个关键 等号后面要留一个空格)
   将 OracleStart<SID>这个服务设为手动,将 刚刚注册的 OracleStartup 改为自动。
   注册服务完成。