Oracle 12c 无法使用 sqlplus 连接到数据库

Oracle 12c cannot connect to database with sqlplus

我刚刚在我的本地计算机上安装了 Oracle 数据库 12c 以及 SQL 开发人员,当我尝试从命令提示符启动 sqlplus 时,我收到以下错误:

C:\WINDOWS\system32>sqlplus

SQL*Plus: Release 12.2.0.1.0 Production on Thu Aug 9 09:44:14 2018

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

Enter user-name: system
Enter password:
ERROR:
ORA-12560: TNS:protocol adapter error

事实是,如果我 运行:

sqlplus system/<pass>@localhost:1521/orcl.carver-as.com as sysdba

然后我就可以连接成功了:s

好的,这是我的相关文件和输出,供您尝试帮助我。

Oracle Admin 安装路径:

c:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\

Oracle 客户端安装路径:

c:\oracle\client\dperezd\product.2.0\client_1\Network\Admin\

Sid: orcl

tnsping orcl

TNS Ping Utility for 64-bit Windows: Version 12.2.0.1.0 - Production on 09-AGO-2018 09:46:01

Copyright (c) 1997, 2016, Oracle.  All rights reserved.

Archivos de parßmetros utilizados:
c:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\sqlnet.ora


Adaptador TNSNAMES utilizado para resolver el alias
Intentando contactar con (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.carver-as.com)))
Realizado correctamente (0 mseg)

C:\WINDOWS\system32>lsnrctl status

LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 09-AGO-2018 09:53:23

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Conectßndose a (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DPEREZD.carver-as.com)(PORT=1521)))
ESTADO del LISTENER
------------------------
Alias                     LISTENER
Versi¾n                   TNSLSNR for 64-bit Windows: Version 12.2.0.1.0 - Production
Fecha de Inicio       09-AGO-2018 09:35:29
Tiempo Actividad   0 dÝas 0 hr. 17 min. 56 seg.
Nivel de Rastreo        off
Seguridad               ON: Local OS Authentication
SNMP                      OFF
Parßmetros del Listener   C:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\listener.ora
Log del Listener          C:\oracle\dperezd\virtual\diag\tnslsnr\DPEREZD\listener\alert\log.xml
Recibiendo Resumen de Puntos Finales...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DPEREZD.carver-as.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=DPEREZD.carver-as.com)(PORT=5500))(Security=(my_wallet_directory=C:\ORACLE\DPEREZD\VIRTUAL\admin\orcl\xdb_wallet))(Presentation=HTTP)(Session=RAW))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Resumen de Servicios...
El servicio "CLRExtProc" tiene 1 instancia(s).
  La instancia "CLRExtProc", con estado UNKNOWN, tiene 1 manejador(es) para este servicio...
El servicio "orcl.carver-as.com" tiene 1 instancia(s).
  La instancia "orcl", con estado READY, tiene 1 manejador(es) para este servicio...
El servicio "orclXDB.carver-as.com" tiene 1 instancia(s).
  La instancia "orcl", con estado READY, tiene 1 manejador(es) para este servicio...
El comando ha terminado correctamente

C:\WINDOWS\system32>lsnrctl service

LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 09-AGO-2018 09:53:53

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Conectßndose a (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DPEREZD.carver-as.com)(PORT=1521)))
Resumen de Servicios...
El servicio "CLRExtProc" tiene 1 instancia(s).
  La instancia "CLRExtProc", con estado UNKNOWN, tiene 1 manejador(es) para este servicio...
    Manejador(es):
      "DEDICATED" establecido:0 rechazado:0
         LOCAL SERVER
El servicio "orcl.carver-as.com" tiene 1 instancia(s).
  La instancia "orcl", con estado READY, tiene 1 manejador(es) para este servicio...
    Manejador(es):
      "DEDICATED" establecido:2 rechazado:0 estado:ready
         LOCAL SERVER
El servicio "orclXDB.carver-as.com" tiene 1 instancia(s).
  La instancia "orcl", con estado READY, tiene 1 manejador(es) para este servicio...
    Manejador(es):
      "D000" establecidos:0 rechazados:0 actuales:0 mßximo:1022 estado:ready
         DISPATCHER <machine: DPEREZD, pid: 12252>
         (ADDRESS=(PROTOCOL=tcp)(HOST=DPEREZD.carver-as.com)(PORT=1825))
El comando ha terminado correctamente

c:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\listener.ora文件:

# listener.ora Network Configuration File: C:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oracle\dperezd\virtual\product.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\oracle\dperezd\virtual\product.2.0\dbhome_1\bin\oraclr12.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = DPEREZD.carver-as.com)(PORT = 1521))
    )
  )

c:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\tsnames.ora:

# tnsnames.ora Network Configuration File: C:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

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.carver-as.com)
    )
  )

c:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\sqlnet.ora:

# sqlnet.ora Network Configuration File: C:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

我读过设置 TNS_ADMIN 环境变量可能有帮助所以在 Windows 我做到了:

set TNS_ADMIN=c:\oracle\dperezd\virtual\product.2.0\dbhome_1\network\admin\
lsnrctl stop
lsnrctl start

没有用,问题依旧。

好的,我希望这些信息足以让任何人帮助我。

这真的很奇怪,因为服务已启动,运行ning 和 ping 正常,带有全套参数的 sqlplus 可以连接,但无论我做什么,单独的 sqlplus 都不会。

谢谢。

大多数情况下,您在本地安装时得到 TNS:protocol adapter error,是由于没有正确设置 ORACLE_SID 变量。

例如,从我的本地安装:

我的实际变量:

CMD> set ora
ORACLE_HOME=C:\app\database_12\product.1.0\dbhome_1
ORACLE_SID=PRDDB

测试连接:

CMD> sqlplus

SQL*Plus: Release 12.1.0.2.0 Production on Gio Ago 9 16:35:49 2018

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

Immettere il nome utente: /as sysdba

Connesso a:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> exit
Disconnesso da Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

改变ORACLE_SID

CMD> set ORACLE_SID=TEST

CMD>set ora
ORACLE_HOME=C:\app\database_12\product.1.0\dbhome_1
ORACLE_SID=TEST

测试连接

CMD> sqlplus

SQL*Plus: Release 12.1.0.2.0 Production on Gio Ago 9 16:36:17 2018

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

Immettere il nome utente: /as sysdba
ERROR:
ORA-12560: TNS: errore dell'adattatore del protocollo


Immettere il nome utente:

您可以检查的另一件事是您的 PATH 变量,并确保您在客户家之前设置了 ORACLE_HOME

希望对您有所帮助。

让我们这样做:
1. 打开 Oracle 网络配置助手
2. Select Local Net Service Name Configuration 单选按钮选项,然后单击 Next
3. Reconfigure中的Select单选按钮选项,然后点击下一步
4. Select 您要重新配置的网络服务名称,ORACLR_CONNECTION_DATA 或 ORCL,然后单击下一步
5.输入你的Service Name,如果你安装的oracle的服务名是ORCL,那么在字段里写ORCL,然后点击Next
6.select你要使用的协议,例如selectTCP,然后点击下一步
7. 输入你的oracle数据库引擎(服务)安装的主机名,比如安装在你的台式机或笔记本上,
然后填写为 localhost,并填写您的端口号(select 选项使用标准端口号 1521)或者如果使用其他端口,填写端口号
然后点击下一步。
8. select 是执行测试,
如有必要,更改用户登录
然后点击下一步
9.如果没有配置另一个网络服务名,select否然后点击下一步
10. 单击完成

如果你想使用来自 MS Visual Studio

的 .net 框架连接,你应该下载、提取和安装 ODTwithODAC183.zip 和 BuildTools_Full.exe