oracle服务启动命令.docx
《oracle服务启动命令.docx》由会员分享,可在线阅读,更多相关《oracle服务启动命令.docx(11页珍藏版)》请在冰豆网上搜索。
oracle服务启动命令
Oracle利用服务启动数据库与利用命令启动数据库的差异
如果在Windows操作系统上部署Oracle数据库系统,会将起动过程写入到操作系统的服务列表中。
并且一些主要的服务都会被设置为自动启动。
如此的话,当操作系统启动的时候,数据库会自动启动。
当关闭操作系统时这些服务也会自动关闭。
一、了解主要的Oracle数据库服务。
虽然上图中列举出了很多的Oracle数据库服务,但是在实际过程中我们用到的只是其中的四种。
分别为OracleTNSListener(上图中的第二个服务,这服务对应于数据库的监听程序)、OracleServiceDTM123(上图中的第一个服务,对应于数据库例程)、OracleDBConsoledmt123(上图中最后一个服务,对应于数据库的企业管理器)、OracleiSQL*Plus(上图中的第五个服务,对应于数据库的Isql*plus工具)。
数据库管理员必须要对这四个服务的作用以及相互之间的关系了如指掌。
因为有时候处于维护的需要,数据库管理员需要通过这个服务列表来管理数据库的启动与关闭。
如当启动这些数据库服务的时候,会占用比较多的内存、CPU等系统资源。
有时候在Windows操作系统上安装Oracle数据库系统可能只是出于测试、培训等目的。
为此没有必要让这些数据库服务一直运行着,而影响操作系统上的其它服务。
所以有时候数据库管理员不希望这些数据库服务随着操作系统的启动而自动启动。
他们希望能够在需要的时候手工启动这些服务。
如此的话,在不需要用到数据库的时候,这些服务就不会占用宝贵的例程。
此时数据库管理员就需要更改这些服务的启动方式。
如上图所示,可以将以上四种服务设置为“手动”启动方式。
如此的话,数据库系统不会随着操作系统的启动而自动启动。
如果需要更改这些服务的启动方式,只需要选中以上对应的服务,双击这个服务,会打开一个服务管理的对话框。
在这个对话框内我们可以发现有一个启动类型的下拉列表,只要选择“手动”,即可以更改这些服务的启动方式。
默认情况下,这个启动类型为“自动”。
如果一直不需要使用这些服务,甚至可以将启动类型设定为“已禁用”。
二、了解各种服务之间的关系。
Oracle各种服务之间有着比较复杂的关系,这个复杂性主要体现在他们有很严格的相互依存关系。
当启动某个服务或者关闭某个服务的时候往往需要按照一定的顺序来启动或者关闭。
否则的话,可能会出现错误信息。
如就以上面四种主要服务来说,他们之间的关系就比较复杂。
一般情况下,只有先启动OracleTNSListener(监听程序)服务,才可以打开启动服务。
如果在没有打开这个服务的情况下,而打开其他数据库服务,如OracleDBConsoledmt123(数据库企业管理器)服务,就会出现错误。
系统会提示:
“一些服务依赖于其它服务、系统驱动程序或者组的加载顺序,如果系统组建被停止或者运行不正常,则依赖于它的服务会受到影响”。
简单的说,就是监听程序服务没有打开的话,企业管理器服务就无法启动。
这两个服务之间存在着依存的关系。
类似的,企业管理器服务跟OracleServiceDTM123(数据库例程)服务之间也存在着千丝万缕的关系。
如果要使用企业管理器服务,那么必须先启动数据库例程服务。
否则的话,又会抛出以上的异常信息。
数据库服务在启动的时候会受到以上限制因素的影响。
在关闭这些服务的时候也是如此。
不过比服务启动的时候好的多,操作会在关闭服务的时候去自动检测是否存在相关的依存服务。
如果存在的话,会先自动关闭其它的服务,然后再关闭这个服务。
如现在操作系统中同时启动了数据库企业管理器服务与数据库例程这两个服务。
现在数据库管理员暂时不用Oracle数据库了,他就要关闭数据库例程服务以释放其占用内存与CPU资源。
此时在关闭这个服务的时候,操作系统发现现有启动的服务(企业管理器)需要用到这个正在关闭的服务。
此时操作系统会先关闭企业管理器服务,然后再关闭数据库例程服务。
也就是说,服务在启动的时候,如果服务之间存在依存关系,操作系统是不会自动启动的。
而是抛出异常信息,让数据库管理员手工启动相关联的服务。
但是在关闭服务的时候,则如果遇到相互依存的服务,操作系统会自动关闭相互依存的服务。
为此在关闭某个服务的时候,数据库管理员一定要了解他们之间相互依存关系。
要防止为了关闭某个服务,而同时关闭其它正在使用的服务。
此时可能会给用户造成不必要的损失。
三、利用服务启动数据库与利用命令启动数据库的差异。
在使用命令启动数据库的时候,可以利用不同的选项让数据库启动在不同的状态中。
如通常情况下利用命令来启动数据库,带上不同的选项,可以让数据库只启动例程(带上Nomount选项)、挂载数据库而不打开数据库(采用mount选贤)、打开数据库(采用open选项)或者以受限模式(带上restrict选项)打开数据库系统。
有时候以某种特定的方式来打开数据库系统对于数据库管理员维护数据库是非常重要的。
如数据库管理员需要将某个数据库文件移动到新的硬盘上以减少硬盘的I/Q冲突或者需要将数据库从非归档模式转换到归档模式的时候,就需要将数据库启动到挂载模式。
即打开控制文件而没有打开数据文件。
此时可以更改控制文件中的内容(控制文件已经打开);也可以移动数据文件(数据文件在挂载模式下还没有打开。
只有在这个模式下才能够完成对数据文件的更名、移动等操作。
而且利用命令还可以在不同的模式下进行转换。
如现在处于数据库挂载模式,则可以利用alterdatabaseopen命令将数据库转换为打开模式。
这些功能通过Oracle服务都是无法完成的。
而通过服务来控制数据库的启动与关闭,就不能够做到这么精细的控制。
一般情况下,只有监听程序服务、数据库例程服务和数据库企业管理器服务三个服务同时打开的情况下,对应的数据库才处于启动状态。
或者说,只有数据库企业管理器服务启动时数据库才处于打开状态。
因为只有有监听程序服务、数据库例程服务这两个服务启动后,才可以启动企业管理器服务。
所以一般情况下,企业管理器服务启动了,就表示这三个服务已经同时启动。
如果有一个服务还处于关闭的状态,那么数据库就是处于关闭状态。
可见通过命令与通过服务来管理数据库的启动与关闭存在很多的差异。
一般情况下笔者建议大家还是通过命令来维护数据库的启动与关闭操作为好。
不过通过服务,也可以起到一些命令无法实现的功能。
如现在数据库管理员不希望数据库随着操作系统的启动而自动启动,此时就可以通过更改对应服务启动类型来实现。
如可以将上面的服务的启动类型设置为“手工”启动。
此时当操作系统启动时,就不会自动启动数据库系统。
不过这主要用于一些测试服务器或者培训服务器上。
对于在企业生产环境中使用的数据库服务器,往往要将这个服务设置为自动启动。
即让操作系统启动时自动启动数据库服务,以减少数据库管理员的工作量。
所以说,虽然通过服务来管理数据库的启动与关闭进程,属于粗放型的管理。
但是有时候数据库管理员确实也离不开它。
最后需要提醒的一点是,在Windows操作系统中,默认情况下数据库系统是会随着操作系统的启动而自动启动的。
而在Linux等到作系统平台上,由于没有这种服务的管理机制,所以在Linux操作系统部署Oracle数据库系统的时候,默认情况下是不会随着操作系统的启动而启动的。
如果数据库管理员需要让其随着操作系统启动而自动启动,就需要在启动列表中加入相关的指令才行。
这是在两个不同操作系统上部署Oracle数据库的一个很明显的区别。
启动OEM
setoracle_sid=
emctlstartdbconsole
启动ISQLPLUS
isqlplusstart
Oracle10G的EM采用了web方式,并且分成了2个产品,databasecontrol和gridcontrol。
这里主要介绍如何创建单数据的dbcontrol。
Gridcontrol需要下载单独的光盘安装。
在用DBCA建库的时候,可以选择是否启用dbcontrol,启用的话需要在数据库中建立一个sysman的schema,用于保存EM的一些数据,这个就是EM的资料库(repository)。
使用命令行工具emca可以创建,修改,重建或者删除dbcontrol的配置。
使用命令行工具emctl可以启动,停止console服务。
SQL>select*fromv$version;
BANNER
----------------------------------------------------------------
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Prod
PL/SQLRelease10.2.0.1.0-Production
CORE10.2.0.1.0Production
TNSfor32-bitWindows:
Version10.2.0.1.0-Production
NLSRTLVersion10.2.0.1.0-Production
由于要在数据库中建EM资料库,数据库和监听都必须已经启动并正常工作。
创建EM资料库
C:
/>emca-reposcreate
EMCA开始于2006-11-222:
32:
43
EMConfigurationAssistant10.2.0.1.0正式版
版权所有(c)2003,2005,Oracle。
保留所有权利。
输入以下信息:
数据库SID:
ning
监听程序端口号:
1521
SYS用户的口令:
SYSMAN用户的口令:
是否继续?
[yes(Y)/no(N)]:
y
2006-11-222:
32:
55oracle.sysman.emcp.EMConfigperform
信息:
正在将此操作记录到F:
/oracle/product/10.2.0/db_1/cfgtoollogs/emca/ning/emc
a_2006-11-02_10-32-43-下午.log。
2006-11-222:
32:
55oracle.sysman.emcp.EMReposConfigcreateRepository
信息:
正在创建EM资料档案库(此操作可能需要一段时间)...
2006-11-222:
37:
57oracle.sysman.emcp.EMReposConfiginvoke
信息:
已成功创建资料档案库
已成功完成EnterpriseManager的配置
EMCA结束于2006-11-222:
37:
57
配置dbcontrol
C:
/>emca-configdbcontroldb
EMCA开始于2006-11-222:
49:
47
EMConfigurationAssistant10.2.0.1.0正式版
版权所有(c)2003,2005,Oracle。
保留所有权利。
输入以下信息:
数据库SID:
ning
监听程序端口号:
1521
SYS用户的口令:
DBSNMP用户的口令:
SYSMAN用户的口令:
通知的电子邮件地址(可选):
通知的发件(SMTP)服务器(可选):
-----------------------------------------------------------------
已指定以下设置
数据库ORACLE_HOME................F:
/oracle/product/10.2.0/db_1
数据库主机名................NING
监听程序端口号................1521
数据库SID................ning
通知的电子邮件地址...............
通知的发件(SMTP)服务器...............
-----------------------------------------------------------------
是否继续?
[yes(Y)/no(N)]:
y
2006-11-222:
50:
05oracle.sysman.emcp.EMConfigperform
信息:
正在将此操作记录到F:
/oracle/product/10.2.0/db_1/cfgtoollogs/emca/ning/emc
a_2006-11-02_10-49-47-下午.log。
2006-11-222:
50:
05oracle.sysman.emcp.DatabaseChecksperformReposChecks
警告:
'shared_pool_size'必须大于等于80MB。
2006-11-222:
50:
18oracle.sysman.emcp.util.DBControlUtilstartOMS
信息:
正在启动DatabaseControl(此操作可能需要一段时间)...
2006-11-222:
51:
18oracle.sysman.emcp.EMDBPostConfigperformConfiguration
信息:
已成功启动DatabaseControl
2006-11-222:
51:
18oracle.sysman.emcp.EMDBPostConfigperformConfiguration
警告:
无法创建DatabaseControl快捷方式
2006-11-222:
51:
19oracle.sysman.emcp.EMDBPostConfigperformConfiguration
信息:
>>>>>>>>>>>DatabaseControlURL为http:
//NING:
1158/em<<<<<<<<<<<
已成功完成EnterpriseManager的配置
EMCA结束于2006-11-222:
51:
19
常用的命令语法:
emca-reposcreate创建一个EM资料库
emca-reposrecreate重建一个EM资料库
emca-reposdrop删除一个EM资料库
emca-configdbcontroldb配置数据库的DatabaseControl
emca-deconfigdbcontroldb删除数据库的DatabaseControl配置
emca-reconfigports重新配置dbcontrol的端口,默认端口在1158
emctlstartconsole启动EMconsole服务,使用前需要先设置ORACLE_SID环境变量
emctlstopconsole停止EMconsole服务,使用前需要先设置ORACLE_SID环境变量
注:
通过查看$ORACLE_HOME/install/portlist.ini文件可以知道当前dbcontrol正在使用的端口
一、独立启动:
MicrosoftWindows2000[Version5.00.2195]
(C)版权所有1985-2000MicrosoftCorp.
#########################################################
检查监听器状态:
#########################################################
E:
">lsnrctlstatus
LSNRCTLfor32-bitWindows:
Version9.2.0.1.0-Productionon28-6月-200511:
01:
01
Copyright(c)1991,2002,OracleCorporation.Allrightsreserved.
正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oyez)(PORT=1521)))
TNS-12541:
TNS:
无监听器
TNS-12560:
TNS:
协议适配器错误
TNS-00511:
无监听器
32-bitWindowsError:
61:
Unknownerror
正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12541:
TNS:
无监听器
TNS-12560:
TNS:
协议适配器错误
TNS-00511:
无监听器
32-bitWindowsError:
2:
Nosuchfileordirectory
#########################################################
尝试登陆本地数据库:
#########################################################
E:
">sqlplus/nolog
SQL*Plus:
Release9.2.0.1.0-Productionon星期二6月2811:
01:
092005
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>connsystem/qqqqqq@oradbassysdba
ERROR:
ORA-12541:
TNS:
没有监听器
--如果没有启动ORACLE服务的话,将出现下面的错误而不是上面:
ERROR:
ORA-12560:
TNS:
协议适配器错误
#########################################################
原因:
监听器没有启动,无法解析“oradb”服务名,所以无法登陆数据库。
#########################################################
SQL>exit
#########################################################
启动监听器
#########################################################
E:
">lsnrctlstart
LSNRCTLfor32-bitWindows:
Version9.2.0.1.0-Productionon28-6月-200511:
01:
36
Copyright(c)1991,2002,OracleCorporation.Allrightsreserved.
启动tnslsnr:
请稍候...
TNSLSNRfor32-bitWindows:
Version9.2.0.1.0-Production
系统参数文件为F:
"oracle"ora92"network"admin"listener.ora
写入F:
"oracle"ora92"network"log"listener.log的日志信息
监听:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oyez)(PORT=1521)))
监听:
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=""."pipe"EXTPROC0ipc)))
正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oyez)(PORT=1521)))
LISTENER的STATUS
------------------------
别名 LISTENER
版本 TNSLSNRfor32-bitWindows:
Version9.2.0.1.0-Production
启动日期 28-6月-200511:
01:
38
正常运行时间 0天0小时0分2秒
跟踪级别 off
安全性 OFF
SNMP OFF
监听器参数文件 F:
"oracle"ora92"network"admin"listener.ora
监听器日志文件 F:
"oracle"ora92"network"log"listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oyez)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=""."pipe"EXTPROC0ipc)))
服务摘要..
服务"OEMREP"包含1个例程。
例程"OEMREP",状态UNKNOWN,包含此服务的1个处理程序...
服务"PLSExtProc"包含1个例程。
例程"PLSExtProc",状态UNKNOWN,包含此服务的1个处理程序...
服务"oradb.eleaf.org"包含1个例程。
例程"oradb",状态UNKNOWN,包含此服务的1个处理程序...
命令执行成功
#########################################################
如果启动监听器时报“错误3找不到可执行文件的路径”。
查看[控制面板]=[服务]=OracleOraHome92TNSListener的属性,发现“可执行文件的路径项”是空的。
打开注册表编辑器,搜索监听服务对应的键值,终于在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet(ControlSet001、ControlSet002)/Services下找到了OracleOraHome92TNSListener服务。
右击它选择“新建字符串值”,取名ImagePath,并双击它在数值中输入监听程序的路径,此处为"F:
/oracle/ora92/bin/TNSLSNR.EXE"。
再执行就正常了。
原因:
“超级兔子”和“windows优化大师”等系统维护软件会误删除注册表中的该项键值。
#########################################################
E:
">sqlplus/nolog
SQL*Plus:
Release9.2.0.1.0-Productionon星期二6月2811:
05:
272005
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>connsystem/qqqqqq@oradbassysdba
ERROR:
ORA-12500:
TNS:
监听程序无法启动专用服务器进程
##############################################