目标:
1.Navicat连接Oracle数据库,报错
无监听程序。
一、下载安装Navicat15
https://zhuanlan.zhihu.com/p/675991635
下载安装资源
链接:百度网盘 请输入提取码
提取码:1u1q
二、测试SQL PLUS连接数据库
在全部程序--》Oracle--》SQLPLUS
找到 SQL PLUS程序
2.1 关闭ORCL和TNSListener服务是否可以连接
我们在服务中,关闭Oracle的ORCL服务和TNSListener服务。
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 5月 31 22:29:48 2024
Copyright (c) 1982, 2010, Oracle. All rights reserved.
请输入用户名: sys
输入口令:
ERROR:
ORA-12560: TNS: 协议适配器错误
请输入用户名: system
输入口令:
ERROR:
ORA-12560: TNS: 协议适配器错误
很明显,TNS服务访问失败,连接错误。
2.2 开启ORCL服务和TNSListener服务
可以正常连接Oracle数据库。
2.3 设置ORALE添加到环境变量
如果想在cmd中直接执行ORACLE程序,可以添加环境变量
我的电脑--》属性--》环境变量
Path中新增加ORACLE执行程序目录。
保存以后,启动cmd.exe。执行sqlplus成功
2.4 SQLPLUS以DBA身份登录
sqlplus / as sysdba
以DBA身份连接成功。说明ORACLE数据库本身OK,是可以连接成功的。
2.5 查询ORACLE数据库中当前服务
SELECT name FROM v$services;
这条SQL语句会从动态性能视图v$services
中查询服务名称列表。
ORACLE中确实存在ORCL服务,服务名称为 orcl.211.55.4
通过以下指令查看当前服务名
select global_name from global_name;
2.6 查看数据库实例状态
SELECT instance_name FROM v$instance;
查看数据库实例的状态。
说明Oracle创建的数据库实例是一个,为orcl,且当前实例可用。
2.7 查看当前容器
show con_name;
2.8 SQLPLUS普通账号登录
sqlplus balll/dbpwd123@10.52.11.6/ORCLPDB1
sqlplus 用户名/用户密码@HOST/服务名
三、确认监听程序
3.1 查看当前监听程序状态信息
lsnrctl status
C:\Users\zhouronghua>lsnrctl status
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 31-5月 -2024 23:55:00
Copyright (c) 1991, 2010, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
启动日期 31-5月 -2024 22:34:54
正常运行时间 0 天 1 小时 20 分 6 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 C:\app\zhouronghua\product\11.2.0\dbhome_1\network\admin\listener.ora
监听程序日志文件 c:\app\zhouronghua\diag\tnslsnr\zhouronghua\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.211.55.4)(PORT=1521)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
测试连接是否成功,连接失败,报错:
发现问题:
1、确定的是IPC监听协议,TCP协议的监听地址,采用的是10.211.55.4,而我们访问使用的是localhost,或者127.0.0.1。IP地址需要统一
2.
3.1.1 什么是IPC协议?
Oracle IPC (Inter-Process Communication) 监听协议是指Oracle数据库进程间通信所使用的协议。Oracle数据库的实例可以通过IPC协议进行进程间的通信,以便进行例如会话管理、连接管理等操作。
在Oracle中,IPC监听协议通常是通过本地连接(也称为共享内存)实现的,这意味着客户端和服务器可以通过在同一台机器上的共享内存段进行通信。
如果您想要配置Oracle的IPC监听协议,您需要确保您的Oracle数据库已经安装并正确配置。然后,您可以通过编辑Oracle的监听配置文件(listener.ora
)来配置IPC监听协议。
3.2 监听程序参数配置
监听状态中,标识了监听程序参数文件位置。
监听程序参数文件 C:\app\zhouronghua\product\11.2.0\dbhome_1\network\admin\listener.ora
即:$ORACLE_HOME/network/admin
原监听文件lisener.ora配置如下:
# listener.ora Network Configuration File: C:\app\zhouronghua\product\11.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:\app\zhouronghua\product\11.2.0\dbhome_1)(PROGRAM = extproc)(ENVS = "EXTPROC_DLLS=ONLY:C:\app\zhouronghua\product\11.2.0\dbhome_1\bin\oraclr11.dll")))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)))(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))))ADR_BASE_LISTENER = C:\app\zhouronghua
主机名修改为localhost,端口使用默认端口就行。不用修改。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\zhouronghua\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\zhouronghua\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\zhouronghua
因为我们创建的全局DB文件库是 ORCL。
存在两种监听描述符:IPC协议的和
TCP 协议的:主机:localhost. 端口:1521
创建OracleServiceOrcl服务的方法:
oradim -NEW -SID orcl -STARTMODE manual -PFILE “Oracle安装目录/11.2.0/dbs/init.ora”
oradim -NEW -SID orcl -STARTMODE manual -PFILE "C:\app\zhouronghua\product\11.2.0\dbhome_1\dbs\init.ora"