V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
black11black
V2EX  ›  问与答

Oracle 绑定后无法通过指定 IP 访问,求教

  •  
  •   black11black · 2020-12-31 20:06:08 +08:00 · 1400 次点击
    这是一个创建于 1429 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,有一台 linux 机器上要装 oracle,折腾半天了。

    现在服务已经安装成功,并且正常启动。

    使用如下命令启动成功:

    sudo lsnrctl start
    sqlplus /nolog
    conn / as sysdba
    startup
    

    并且在这种访问模式下能够成功获取到数据

    SQL> select * from scott.dept;
    
        DEPTNO DNAME	  LOC
    ---------- -------------- -------------
    	10 ACCOUNTING	  NEW YORK
    	20 RESEARCH	  DALLAS
    	30 SALES	  CHICAGO
    	40 OPERATIONS	  BOSTON
    
    

    于是把服务绑定到局域网 IP,想要从另一台机器上登录,修改了 listener.ora

    # Generated by Oracle configuration tools.
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
        )
      )
    
    ADR_BASE_LISTENER = /home/rogear/tools/oracle11g
    

    和 tnsnames.ora

    # tnsnames.ora Network Configuration File: /home/rogear/tools/oracle11g/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    
    

    然后重启数据库和监听程序。

    这时候使用登录命令会得到提示:

    sqlplus scott/[email protected]:1521/orcl
    
    ERROR:
    ORA-12514: TNS:listener does not currently know of service requested in connect
    descriptor
    

    请问可能是什么原因造成的? 当前可以确保网络是连同的,确实能访问到 192.168.1.100:1521 上的程序,但是登录失败,怎么回事呢

    17 条回复    2021-01-10 15:53:20 +08:00
    gefranks
        1
    gefranks  
       2020-12-31 20:32:43 +08:00
    打开 Net Manager 看看 profile 里面是否允许了 hostname 方式的连接
    black11black
        2
    black11black  
    OP
       2020-12-31 20:59:56 +08:00
    @gefranks

    修改后提示、

    db@dbpc:~$ sqlplus scott/[email protected]:1521/orcl

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 31 12:58:42 2020

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

    ERROR:
    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    Linux-x86_64 Error: 2: No such file or directory
    Process ID: 0
    Session ID: 0 Serial number: 0


    Enter user-name:
    gefranks
        3
    gefranks  
       2020-12-31 21:22:55 +08:00
    请确认你 oracle instance 正常工作的.你这个提示看上去 instance 工作不正常
    为啥用这么老的版本, 这版本早就淘汰了
    gefranks
        4
    gefranks  
       2020-12-31 21:24:58 +08:00
    还有你 listener 为啥要用 sudo 起?哪个用户装的用那个用户起吧
    black11black
        5
    black11black  
    OP
       2020-12-31 23:08:30 +08:00
    @gefranks 感谢回复,初学 oracle 不太清楚概念,instance 是指数据库的工作实例吗?

    我目前的数据库是可以用 sqlplus (不带任何参数)的方式连接的,并且能正常工作。

    用这个版本是网上查了一下很多人推荐这个,就没用最新的,确实很多坑
    gefranks
        6
    gefranks  
       2020-12-31 23:25:42 +08:00
    是的,就是数据库的工作实例.参考这个看下
    https://support.esri.com/en/technical-article/000008516
    请检查$ORACLE_HOME, $ORACLE_SID 环境变量是否设置
    black11black
        7
    black11black  
    OP
       2020-12-31 23:53:59 +08:00
    @gefranks 环境变量设置是正确的,很神秘。我用 ubuntu 是因为一直以来用的都是 debian 系,但是外网搜索了一下似乎 oracle 对 debian 系非常不友好,我确实在安装过程中遇到很多编译坑,我想直接放弃 ubuntu,尝试一下 oracle linux+最新版 oracle 的这样配置了,不知道能否坑少一点。

    另外老哥是否知道 Oracle 在 windows 和 linux 中性能表现是否有区别?我如果想把目前基于 mysql 的生产服务迁移到 oracle 中,应该在 windowsserver 上搭建还是 linux 上搭建。搜索了一下,几乎没有这方面的资料。
    gefranks
        8
    gefranks  
       2021-01-01 00:58:21 +08:00   ❤️ 1
    oracle db 我记得是没有在 debian 系上认证过, 在甲骨文的时候我也没做过在我们的应用在 debian 系上的认证.
    区别肯定有,我接触的客户他们的数据库系统绝大多数都是跑在 linux 上的, windows 上的非常少
    gefranks
        9
    gefranks  
       2021-01-01 00:59:10 +08:00
    oracle linux 的话坑应该是最少的.
    terryhyx
        10
    terryhyx  
       2021-01-01 11:09:13 +08:00
    官方认证过的 Linux 应该就 RHEL OEL SLES
    确认你的 instance 是叫 orcl 吗?
    listener.org 用静态注册 试试看
    black11black
        11
    black11black  
    OP
       2021-01-07 04:37:51 +08:00
    @gefranks
    @terryhyx
    带佬,我又遇到问题了。这次新搞了一台 windows 机器,裸机新系统,想测试一下 oracle19c 使用上和 11g 有没有什么区别。

    我在官网下载并安装后又遇到不能连接的问题,而且表现比较奇怪。

    安装过程中我选择了服务器类-->典型安装。这个是依照 11g 时的经验安装的,但是后来查了一下安装教学似乎都推荐用桌面类,我也是没搞懂为什么。

    安装成功后,powershell 执行 sqlplus /nolog,而后 conn / as sysdba , 成功
    在菜单里直接启动 sqlplus 命令行程序,输入用户名 system,密码 123456 , 成功 (但是无法连接到 scott.dept 表,不知道是否新版本里这个库被删除了)

    使用 navicat 连接 127.0.0.1:1521,失败,提示 ORA-12541:TNS:无监听程序
    使用 tcping 检查 1521 端口,端口是关闭的
    使用其他程序占用 1521 端口,可以占用该端口
    检查 services.msc 服务,OracleOraDB19Home1TNSListener 正在运行
    使用 Net Configuration Assistant,配置新的监听程序,提示不能占用 1521 端口,因为 1521 端口已在使用中。

    搞不太懂什么状况,一会说又一会说没有
    black11black
        12
    black11black  
    OP
       2021-01-07 07:47:39 +08:00
    已经解决,问题产生由于两个原因,其一是安装 oracle 的时候默认监听没有放在本地回环而是监听了局域网 IP,导致端口既被占用又闲置。

    但修改 IP 后仍无法访问,还需要配置 listener.ora ,新增

    (SID_DESC =
    (GLOBAL_DBNAME = ORCL)
    (ORACLE_HOME = C:\Users\HW\Downloads\WINDOWS.X64_193000_db_home)
    (SID_NAME = ORCL)
    )

    这些内容才能正常监听,不是很清楚为什么默认设置没有调好,还要自己加配置
    gefranks
        13
    gefranks  
       2021-01-07 12:32:47 +08:00
    为啥 lisenter 要放在 loopback?
    据我的经验在 win 上装好 listener 起来就好了(如果没自己创建 listner 就有个默认的), 要用起来其他没啥要改的配置啊。
    black11black
        14
    black11black  
    OP
       2021-01-07 17:27:30 +08:00
    @gefranks 很神秘
    black11black
        15
    black11black  
    OP
       2021-01-10 15:35:33 +08:00 via Android
    @gefranks 大佬,我在 oracle linux 安装又遇到无法访问。调试时运行 sqlplus lsnrctl 等提示无命令,这是正常的吗?

    这次是官方镜像 oracle linux 7.7 版,安装 19c 。安装过程挺顺利的,按照程序的检查提示,在默认系统中增大 swap,修改系统参数,以及安装几个库之后就很无痛的装上了。localhost:5500/em 可以访问,但 sqlplus 之类的就访问不了
    gefranks
        16
    gefranks  
       2021-01-10 15:51:57 +08:00
    @black11black 请问你 ORACLE_HOME 是否设置了? ORACLE_SID 设了么, sqlplus, lsnrctl 所在的 bin 目录是否加入到了 PATH 里面?
    gefranks
        17
    gefranks  
       2021-01-10 15:53:20 +08:00
    @gefranks 不过我自己一般是设好上面的 ORACLE_HOME 和 ORACLE_SID 后直接去 bin 目录下面执行 lsnrctl 和 sqlplus 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2786 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:53 · PVG 13:53 · LAX 21:53 · JFK 00:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.