解析ORADIM(主要是启动服务和实例方面)

来源:互联网 发布:无锡数控编程招聘 编辑:程序博客网 时间:2024/06/06 03:39
解析ORADIM(主要是启动服务和实例方面)
  
 

想到了解一下ORADIM这个Command源于自己在手工创建数据库中遇到的问题,当时自己创建的数据库不能完成随WINDOWS的服务自动启动。

 

以下为Oracle10g Release 1 (10.1) for windows中的描述

 

ORADIM is a command-line tool that is available with Oracle Database. You are required to use ORADIM only if you are manually creating, deleting, or modifying databases. Database Configuration Assistant is an easier tool to use for this purpose.

 

简单的说一句:ORADIM命令完成可以完成的功能分为对两部分的管理,一是Windows中的OracleService,另一个是Oracle实例。

 

下面我们介绍ORADIM的几个功能:

1Creating an Instance

oradim -NEW -SID SID | -SRVC service_name | -ASMSID SID | -ASMSRVC service_name
[-SYSPWD password] [-STARTMODE auto | manual] [-SRVCSTART system | demand]
[-PFILE filename | -SPFILE] [-SHUTMODE normal | immediate | abort] [-TIMEOUT
secs] [-RUNAS osusr/ospass]

 

具体详细的解释参见:

 

我们对几个比较常用的参数做一些解释

1-NEW 意思是要新建实例,这第一个参数也就决定了您要对实例到底要进行何种操作,是新建,修改还是删除。

2-SID SID 意思是您要创建的实例的名字

3-SYSPWD password意思是您要创建的sysdba用户的密码,加上此参数会在创建实例的同时,在ORACLE_HOME/DATABASE下生成密码文件PWD<SID>.ORA

4-STARTMODE auto | manual 指示实例的启动模式,注意这是说的是实例。请注意OracleServiceORACLE实例是两个概念。

5[-SRVCSTART system | demand] 指示启动计算机时是否自动启动OracleService

举例:

C:/>ORADIM -NEW -SID TEST03 -SYSPWD TEST03 -STARTMODE A -SRVCSTART SYSTEM -SPFILE

实例已创建。

 

C:/>SET ORACLE_SID=TEST03

 

C:/>SQLPLUS /NOLOG

 

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 11月 25 10:49:57 2007

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

SQL> CONN SYS/TEST03 AS SYSDBA;

已连接到空闲例程。

 

我们设定实例和系统服务都为自动启动,WINDOWSOracleService可以在服务中看到,而且对于这个属性,也可以在服务中进行修改,而对于实例启动方式的修改,目前我了解到修改方法有两种:

1ORADIM -EDIT -SID TEST03 -STARTMODE M

修改为手动

2、在注册表中直接修改,位置是HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb10g_home1下的ORA_<SID>_AUTOSTART的数据值,TURE或者FALSE。当然,OracleService的启动方式也可以在注册表中进行修改。位置在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/OracleService<SID>,找到START项,修改数值,Start值为2,表示自动启动,值为3,表示手工启动,值为4,表示禁止启动

 

解决问题:如果你的数据库不能自动启动,那么你可以按照这个顺序检查

1OracleService是否设置为自动

2、ORA_<SID>_AUTOSTART是否为TRUE

修改方式上面已经提到了。

 

2Starting an Instance and Services

 

oradim -STARTUP -SID SID | -ASMSID SID [-SYSPWD password] [-STARTTYPE srvc |
inst | srvc,inst] [-PFILE filename | -SPFILE]

解释一下:

1[-SHUTTYPE srvc | inst | srvc,inst]

1、参数srvc指示启动类型为OracleSevice

2、参数inst指示启动类型为实例;

3、参数srvc,inst指示同时启动服务和实例。

举个例子:

1、假如MAGIC实例启动模式为自动

C:/>ORADIM -STARTUP -SID MAGIC -STARTTYPE SRVC

 

C:/>SET ORACLE_SID=MAGIC

 

C:/>SQLPLUS /NOLOG

 

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 11月 25 11:33:00 2007

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

SQL> CONN SYS/MAGIC AS SYSDBA;

已连接。

 

说明我们在启动OracleService服务时,因为实例为自动启动模式,所以实例也启动了,数据库被打开。

 

2、如果MAGIC实例启动模式为手动启动

 

修改实例为手段启动

 

C:/>ORADIM -EDIT -SID MAGIC -STARTMODE M

 

关闭服务和实例

 

C:/>ORADIM -SHUTDOWN -SID MAGIC -SHUTTYPE SRVC,INST

ORA-01017: invalid username/password; logon denied

 

 

C:/>ORADIM -SHUTDOWN -SID MAGIC -SYSPWD MAGIC -SHUTTYPE SRVC,INST

 

C:/>ORADIM -STARTUP -SID MAGIC -STARTTYPE SRVC

 

C:/>SQLPLUS /NOLOG

 

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 11月 25 11:38:05 2007

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

 

SQL> CONN SYS/MAGIC AS SYSDBA;

已连接到空闲例程。

SQL>

 

说明服务可以启动,实例没有启动。

 

 

3Stopping an Instance and Services

 

oradim -SHUTDOWN -SID SID | -ASMSID SID [-SYSPWD password]
[-SHUTTYPE srvc | inst | srvc,inst] [-SHUTMODE normal | immediate | abort]

 

start类似,在此不再解释。

 

4Editing an Instance

oradim -EDIT -SID SID | -ASMSID SID [-SYSPWD password] [-STARTMODE auto |
manual] [-SRVCSTART system | demand] [-PFILE filename | -SPFILE][SHUTMODE normal
| immediate | abort] [SHUTTYPE srvc | inst | srvc,inst]

 

其实此命令,我们在上面已经使用过了,它的作用就是对我们的OracleService和实例的相关属性做修改。

 

发现:稍微有些奇怪的地方

找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/OracleService<SID>下的ImagePath,数值为e:/oracle/product/10.2.0/db_1/bin/ORACLE.EXE <SID>,明白了其实我们在启动服务是,实际上调用的是ORACLE <SID>这个Command,其实我们看到的服务名不是重要的,重要的是ORALCE.EXE <SID>中这个SID指得是那个实例。

 

经过测试,如果直接执行ORALCE <SID>,则只能启动OralceService,哪怕实例是自动启动,也不能启动实例。

而且在服务界面中显示服务并没有启动,在进程中可以看到ORALE.EXE

 

结论:从在注册表中找到实例属性的那一刻起,一些困扰很久的疑惑都接触了,了解了WINDOWS系统和ORCLE实例之间的关系。另外,就是遇到问题时,如果不能找到令人满意的经验方面的答案,那么就需要看文档了。