过去我曾经用这个小脚本启动我的Oracle 11.2 Windows:
NET START OracleServiceORCL
LSNRCTL START
一切正常。但现在我发现这失败了:
C:\bin>LSNRCTL START
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 08-NOV-2017 11:02:52
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Starting tnslsnr: please wait...
TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
System parameter file is C:\admin\listener.ora
Log messages written to c:\alert\log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date 08-NOV-2017 11:02:55
Uptime 0 days 0 hr. 0 min. 3 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\admin\listener.ora
Listener Log File c:\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
我必须像这样手动启动数据库:
C:\bin>sqlplus system/manager as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Wed Nov 8 11:04:59 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 3407261696 bytes
Fixed Size 2180504 bytes
Variable Size 2097154664 bytes
Database Buffers 1291845632 bytes
Redo Buffers 16080896 bytes
Database mounted.
Database opened.
有人可以告诉我可能导致脚本停止工作的原因吗?
答案 0 :(得分:0)
我认为您的问题归因于DB_NAME
和ORACLE_SID
的长度。
发出启动命令后,请查询以下内容:
select name from v$database; -- gives you DB_NAME
select instance_name from v$instance;
DB_NAME
的长度仅限于 8 个字符。
INSTANCE_NAME
默认为ORACLE_SID
。 (从DOS提示你可能会看到ORACLE_SID
发出echo %ORACLE_SID%
命令,如果之前设置的话) Oracle文档未指定INSTANCE_NAME
长度的限制。 但是,如果您描述V$INSTANCE
视图,则可以看到该列INSTANCE_NAME
有VARCHAR2(16)
,表示限制为16 字符。由于
INSTANCE_NAME
默认为ORACLE_SID
,因此您需要这样做 在创建数据库之前决定SID
时要小心。 单身 实例数据库ORACLE_SID
的长度也应该 8 。所以 保持DB_NAME
,INSTANCE_NAME
和ORACLE_SID
的长度不是 超过 8 字符,我建议你保留三个名字 它们是相同的,不要忘记ORACLE_SID
可以包含 只有字符a-z,A-Z和0-9。
似乎是INSTANCE_NAME
&在您的情况下,DB_NAME
CLRExtProc
的长度 10 。重新安装名称最多为 8 字符的数据库。