在windows下,有时候我们明明启动了数据库服务但连接数据库的时候却提示连接到了空闲实例,或者为了做一些维护工作需连接到空闲实例却不能。看完下文,这些问题将迎刃而解。

一创建oracle服务

创建oracle服务我们需要用到oradim命令,关于oradim命令的部分参数解释如下:

1-NEW表明我们要创建一个新的实例

2-SID指定要创建的实例名

3-SRVCservice_name指定创建的oracle服务名

4-STARTMODEauto|manual表明启动oracle服务时是否自动启动实例,默认为manual即手动

5-SRVCSTARTsystem|demand默认是demand,system指当系统重启时服务自动启动,demand表示需要用户手动启动服务,不明确指定该参数时,默认为-SRVCSTARTdemand

6-SPFILE表示使用spfile参数当startup数据库时

如下:创建一个oracle服务

131156988.jpg

1-sidERPTEST表明会创建一个OracleServiceERPTEST服务

2-startmodemanual表明启动oracle服务时,不启动oracle实例,即服务启动后,我们可以连接到一个空闲实例

3虽然未明确指定-srvcstart参数值,但默认会为-srvcstart指定demand值即创建的服务OracleServiceERPTEST启动类型为手动

4由于未有实例ERPTEST对应的参数文件所以startupnomount会报错

如下图所示:

131554428.jpg

玩转windows下oracle的服务_第1张图片

从下图可以看出发起sqlplus/assysdba命令可以连接到一个空闲实例,但startupnomount启动报错

玩转windows下oracle的服务_第2张图片

结合上面三图不难看出,orcle服务随意可以创建,但启动oracle服务时能不能启动实例,则1看你是否指定-startmodeauto。2看是否有相对应的参数文件,没参数文件,自然不能启动。哈哈废话了。

管理oracle服务

设置oracle服务启动时顺带启动oracle实例,以免我们以为服务启动了,连数据库时却提示连接到了空闲实例。同样我们停止服务时希望shutdownimmediate数据库则设置方法如下:

方法一:

通过windows下oracle的提供的工具oracleadministratorassistandforwindows

玩转windows下oracle的服务_第3张图片

玩转windows下oracle的服务_第4张图片

方法二:

修改注册表项KEY_OraDb11g_home1下的字符串ORA_ERP_AUTOSTART(TRUE表示启动服务的时候启动实例,FALSE则表示仅启动服务,不会启动实例)编辑更改后,直接生效。

玩转windows下oracle的服务_第5张图片

ORA_ERP_AUTOSTART值为true表示启动服务时,实例也跟着启动

ORA_ERP_SHUTDOWN值为true表示停止服务时,也关闭数据库。

ORA_ERP_SHUTDOWNTYPE值为I表示关闭数据库时用命令shutdonwimmediate

例如如果只想在cmd下运行sqlplus连接到一个空闲实例做一些维护工作。以erp为例如果要更改注册表则设置ORA_ERP_AUTOSTART值为FALSE如下:

135917691.jpg

实际上在注册表中的更改也会影响配置工具oracleadministratorassistandforwindows中的设置,(反之也一样)。如图所示

玩转windows下oracle的服务_第6张图片

重新停止服务再启动后我们用sqlplus连接将会连接到空闲实例如下:

玩转windows下oracle的服务_第7张图片

删除oracle服务

方法1删除注册表中的服务项,然后重启系统如下:

玩转windows下oracle的服务_第8张图片

方法2通过oradim命令删除oracle服务

参数介绍如下:

-DELETE指定要删除实例或者服务

-SIDsid指定要删除的实例名

-SRVCservice_name指定要删除的服务名(OracleServiceSID

用户需要指定SID或者SRVC参数

140603171.jpg

注意在windows下如果不启动oracle主服务我们连接数据库会出现如下情况

C:\Users\Administrator.ZX>setoracle_sid=ERP

C:\Users\Administrator.ZX>sqlplus/assysdba

SQL*Plus:Release11.2.0.1.0Productionon星期四9月2622:56:322013

Copyright(c)1982,2010,Oracle.Allrightsreserved.

ERROR:

ORA-12560:TNS:协议适配器错误

C:\Users\Administrator.ZX>sqlplussys/DHHZDHHZassysdba

SQL*Plus:Release11.2.0.1.0Productionon星期四9月2622:52:452013

Copyright(c)1982,2010,Oracle.Allrightsreserved.

ERROR:

ORA-12560:TNS:协议适配器错误

请输入用户名:

C:\Users\Administrator.ZX>tnspingerp

TNSPingUtilityfor64-bitWindows:Version11.2.0.1.0-Productionon26-9月-

201322:52:53

Copyright(c)1997,2010,Oracle.Allrightsreserved.

已使用的参数文件:

C:\app\product\11.2.0\db1\network\admin\sqlnet.ora

已使用TNSNAMES适配器来解析别名

尝试连接(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.1

68.5.20)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ERP)))

OK(10毫秒)

C:\Users\Administrator.ZX>lsnrctlstatuserp

LSNRCTLfor64-bitWindows:Version11.2.0.1.0-Productionon26-9月-201322:5

3:09

Copyright(c)1991,2010,Oracle.Allrightsreserved.

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.5.20)(PORT=1521)))

LISTENER的STATUS

------------------------

别名erp

版本TNSLSNRfor64-bitWindows:Version11.2.0.1.0-Produ

ction

启动日期26-9月-201322:49:19

正常运行时间0天0小时3分52

跟踪级别off

安全性ON:LocalOSAuthentication

SNMPOFF

监听程序参数文件C:\app\product\11.2.0\db1\network\admin\listener.ora

监听程序日志文件c:\app\product\11.2.0\db1\log\diag\tnslsnr\WIN-FB6ILAA

5AB8\erp\alert\log.xml

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.5.20)(PORT=1521)))

服务摘要..

服务"ERP"包含1个实例。

实例"ERP",状态UNKNOWN,包含此服务的1个处理程序...

命令执行成功

C:\Users\Administrator.ZX>sqlplussys/DHHZDHHZ@erpassysdba

SQL*Plus:Release11.2.0.1.0Productionon星期四9月2622:54:182013

Copyright(c)1982,2010,Oracle.Allrightsreserved.

ERROR:

ORA-12518:TNS:监听程序无法分发客户机连接

请输入用户名: