我的问题始于空闲实例。我正在尝试使用SQL Developer连接到我的本地XE实例。
我在Google上尝试了很多链接,如果你提供一些解决方案,我可以随时告诉你我尝试了这些但仍然期待解决它。
其他信息:
使用裸字符串连接SQL * Plus:description ...给了我错误
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
附件是listener.ora(第一行被注释但是当我把#in里面变成粗体所以请认为它被评论了):
#ADR_BASE_LISTENER = C:\app\387759
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\387759\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\387759\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = XE)
(ORACLE_HOME = C:\app\387759\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\387759\product\11.2.0\dbhome_1\log
现在来自cmd(作为管理员)的错误是:
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
tnsnames.ora中的相关条目(除了其他工作条目)也是:
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.36.160.158)
)
)
另外,请考虑我可以解决空闲实例问题,因此不再存在。
387759 is my username to the machine.
附加信息,仅在修复空闲实例问题时进行了更改,即删除行
*.local_listener='LISTENER_ORCL'
从InitORCL.ora文件然后再从pfile创建spfile但刚才我再次将它添加到pfile然后创建了spfile。
Cmd行开始给我错误:
SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'
SQL>
所以理论上我回到了无法启动oracle实例的问题。
无法在提到的位置找到pfile(在评论中),我尝试使用命令
show parameter spfile;
我得到了以下信息:
SQL&GT; show parameter spfile; ORA-01034:ORACLE不可用
进程ID:0
会话ID:0序列号:0
另外一个信息,我只能看到在services.msc
下运行的2个服务OracleOraDb11g_home1TNSListener
OracleServiceORCL的
当我需要使用本地oracle时手动启动它们我保持它们没有启动模式以节省一些RAM。其他与oracle相关的服务我几乎一直都在关闭,而且在这个时候我收到错误。这有助于缩小问题范围
`
答案 0 :(得分:0)
您的ORACLE_HOME应为C:\app\387759\product\11.2.0\dbhome_1
。你的TNS_ADMIN应该是C:\app\387759\product\11.2.0\dbhome_1\NETWORK\ADMIN
- 该目录包含你的listener.ora,sqlnet.ora,tnsnames.ora等。
如果您可以在本地连接为SYS(例如sqlplus / as sysdba
),但它表示您已连接到空闲实例,则数据库未运行。您需要启动数据库,因为您在Windows上,所以您也需要启动OracleXE服务。
当数据库启动时,它将尝试向监听器注册其服务名称。默认情况下it will try to use the network name of the server。您的侦听器仅侦听localhost,因此可能不匹配。看起来你试图告诉它注册该地址但添加了单引号;它应该是:
*.local_listener=LISTENER_ORCL
修复后,您的数据库应该启动并注册到侦听器,然后您应该可以从同一台计算机连接,例如用:
sqlplus userid/password@orcl
或
sqlplus userid/password@//localhost:1521/orcl.36.160.158
...如果tnsnames.ora
中的服务名称正确无误。 SQL Developer也应该使用相同的值。但是,您无法从其他任何地方进行连接,因为侦听器仅在localhost上进行侦听。