标签搜索

Oracle命令

wehg489
2025-07-25 / 0 评论 / 6 阅读 / 正在检测是否收录...

从命令行成功连接数据库,但 Navicat 连接失败,通常由以下原因导致。请按顺序排查:

1. 监听器配置问题(最常见)

  • 检查监听器状态

    lsnrctl status

    确认输出中是否包含您连接的服务名(如 orclPLM_TEST)。若无相关服务,需重新配置监听。

  • 手动注册服务(在 SQL*Plus 中执行):

    ALTER SYSTEM REGISTER;

2. 连接类型不匹配

  • Navicat 需使用完整连接信息

    主机/IP: 数据库服务器地址(非localhost时需填真实IP)
    端口: 1521(默认)
    服务名/SID: orcl(根据实际填写)

    示意图:Navicat 连接配置界面

3. 防火墙或网络限制

  • 测试端口连通性(在客户端执行):

    telnet 数据库IP 1521  # Windows需启用Telnet客户端

    若无法连通,需在服务器开放端口:

    # Linux
    sudo firewall-cmd --add-port=1521/tcp --permanent
    sudo firewall-cmd --reload
    
    # Windows
    New-NetFirewallRule -DisplayName "Oracle" -Direction Inbound -Protocol TCP -LocalPort 1521 -Action Allow

4. 客户端配置缺失

  • 配置 TNSNAMES.ORA(路径:%ORACLE_HOME%\network\admin\tnsnames.ora):

    PLM_TEST =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)  # 替换为实际服务名
        )
      )

    在 Navicat 中选择 "TNS" 连接方式,输入别名 PLM_TEST

5. 版本兼容性问题

  • Oracle 11g 需在 Navicat 中启用 旧版认证
    Navicat 连接设置 → 高级 → 勾选 "Enable Oracle 10g R2 Authentication"

6. 权限问题

  • 确保连接用户有远程登录权限:

    GRANT CREATE SESSION TO PLM_TEST;

快速诊断脚本

在数据库服务器执行:

# 检查监听日志
tail -f $ORACLE_HOME/network/log/listener.log

# 捕获连接过程
lsnrctl set trc_level 16

排查流程图

graph TD
    A[Navicat连接失败] --> B{监听器状态?}
    B -->|未运行| C[启动监听: lsnrctl start]
    B -->|无服务| D[ALTER SYSTEM REGISTER]
    B -->|正常| E{端口可访问?}
    E -->|否| F[开放防火墙1521端口]
    E -->|是| G{Navicat配置正确?}
    G -->|主机/IP错误| H[使用服务器真实IP]
    G -->|服务名错误| I[确认服务名: SELECT name FROM v$services]
    G -->|协议错误| J[启用Oracle 10g R2认证]

📌 关键提示
若问题仍在,请提供以下信息进一步分析:

  1. lsnrctl status 完整输出
  2. Navicat 报错截图(如 ORA-12154/ORA-12514)
  3. 服务器操作系统类型
  4. 数据库是否容器数据库(CDB)

C:\Users\Ericming>lsnrctl start

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-JUL-2025 14:29:20

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

TNS-01106: Listener using listener name LISTENER has already been started

C:\Users\Ericming>lsnrctl statu

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-JUL-2025 14:32:21

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

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 23-JUL-2025 18:29:23
Uptime 0 days 20 hr. 2 min. 58 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\app\Ericming\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File c:\app\ericming\diag\tnslsnr\DESKTOP-KHT1N48\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DESKTOP-KHT1N48)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl.lan" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.lan" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

C:\Users\Ericming>lsnrctl start

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-JUL-2025 14:29:20

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

TNS-01106: Listener using listener name LISTENER has already been started

C:\Users\Ericming>lsnrctl statu

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-JUL-2025 14:32:21

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

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 23-JUL-2025 18:29:23
Uptime 0 days 20 hr. 2 min. 58 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\app\Ericming\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File c:\app\ericming\diag\tnslsnr\DESKTOP-KHT1N48\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DESKTOP-KHT1N48)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl.lan" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.lan" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

构建联查语句

UPDATE "PLM_TEST1"."SA_USER"  SET "DEFAULTGROUPGUID"='F026619914C946F398652C5EAC9F19D2'  WHERE "USERID"='heyuming';
COMMIT;

UPDATE "PLM_TEST1"."SA_USER"  SET "DEFAULTROLEGUID"='831BA48E898A4C56847CAA34467E1489'  WHERE "USERID"='heyuming';
COMMIT;

UPDATE "PLM_TEST1"."SA_USER"  SET "CREATEUSERGUID"='ADAA20C87CAB450ABAC48DBBD00D863A'  WHERE "USERID"='heyuming';
COMMIT;


ADAA20C87CAB450ABAC48DBBD00D863A

FBB1495693AE4DB4B08346BE47C06D0B

9BCFDFAE839D4979B2D9E75B40F1EB4C

A4E1F9DC98A54D2D9F2D34F2EA2BC341

UPDATE "PLM_TEST1"."SA_GROUPROLE_USER"  SET "ROLEGROUPGUID"='A4E1F9DC98A54D2D9F2D34F2EA2BC341'  WHERE "USERGUID"='C25CD3712CEF4DBE96510179D1CEE2A7';

select GUID,MD_ID FROM BOMVIEW_0 where MD_ID='CN230XDT0001';

1
SELECT GUID, MD_ID 
FROM BOMVIEW_0 
WHERE MD_ID = 'CN230XDT0001';

2
SELECT VIEWFK, END2$MASTER 
FROM BOMSTRUCTURE_0 
WHERE VIEWFK IN (上一步查询得到的GUID值);
或者
SELECT VIEWFK, END2$MASTER 
FROM BOMSTRUCTURE_0 
WHERE VIEWFK IN (
    SELECT GUID  -- 仅返回单列
    FROM BOMVIEW_0 
    WHERE MD_ID = 'CN230XDT0001'
)
3
SELECT MD_NAME, MD_ID 
FROM ITEM_0 
WHERE GUID IN (上一步查询得到的END2$MASTER值);

或者

SELECT MD_NAME, MD_ID 
FROM ITEM_0 
WHERE MASTERFK IN (SELECT END2$MASTER 
FROM BOMSTRUCTURE_0 
WHERE VIEWFK IN (
    SELECT GUID  -- 仅返回单列
    FROM BOMVIEW_0 
    WHERE MD_ID = 'CN230XDT0001'
)
);


0

评论

博主关闭了当前页面的评论
歌曲封面
0:00