如题,有一台 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 上的程序,但是登录失败,怎么回事呢
1
gefranks 2020-12-31 20:32:43 +08:00
打开 Net Manager 看看 profile 里面是否允许了 hostname 方式的连接
|
2
black11black OP @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: |
3
gefranks 2020-12-31 21:22:55 +08:00
请确认你 oracle instance 正常工作的.你这个提示看上去 instance 工作不正常
为啥用这么老的版本, 这版本早就淘汰了 |
4
gefranks 2020-12-31 21:24:58 +08:00
还有你 listener 为啥要用 sudo 起?哪个用户装的用那个用户起吧
|
5
black11black OP @gefranks 感谢回复,初学 oracle 不太清楚概念,instance 是指数据库的工作实例吗?
我目前的数据库是可以用 sqlplus (不带任何参数)的方式连接的,并且能正常工作。 用这个版本是网上查了一下很多人推荐这个,就没用最新的,确实很多坑 |
6
gefranks 2020-12-31 23:25:42 +08:00
是的,就是数据库的工作实例.参考这个看下
https://support.esri.com/en/technical-article/000008516 请检查$ORACLE_HOME, $ORACLE_SID 环境变量是否设置 |
7
black11black OP @gefranks 环境变量设置是正确的,很神秘。我用 ubuntu 是因为一直以来用的都是 debian 系,但是外网搜索了一下似乎 oracle 对 debian 系非常不友好,我确实在安装过程中遇到很多编译坑,我想直接放弃 ubuntu,尝试一下 oracle linux+最新版 oracle 的这样配置了,不知道能否坑少一点。
另外老哥是否知道 Oracle 在 windows 和 linux 中性能表现是否有区别?我如果想把目前基于 mysql 的生产服务迁移到 oracle 中,应该在 windowsserver 上搭建还是 linux 上搭建。搜索了一下,几乎没有这方面的资料。 |
8
gefranks 2021-01-01 00:58:21 +08:00 1
oracle db 我记得是没有在 debian 系上认证过, 在甲骨文的时候我也没做过在我们的应用在 debian 系上的认证.
区别肯定有,我接触的客户他们的数据库系统绝大多数都是跑在 linux 上的, windows 上的非常少 |
9
gefranks 2021-01-01 00:59:10 +08:00
oracle linux 的话坑应该是最少的.
|
10
terryhyx 2021-01-01 11:09:13 +08:00
|
11
black11black OP @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 端口已在使用中。 搞不太懂什么状况,一会说又一会说没有 |
12
black11black OP 已经解决,问题产生由于两个原因,其一是安装 oracle 的时候默认监听没有放在本地回环而是监听了局域网 IP,导致端口既被占用又闲置。
但修改 IP 后仍无法访问,还需要配置 listener.ora ,新增 (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = C:\Users\HW\Downloads\WINDOWS.X64_193000_db_home) (SID_NAME = ORCL) ) 这些内容才能正常监听,不是很清楚为什么默认设置没有调好,还要自己加配置 |
13
gefranks 2021-01-07 12:32:47 +08:00
为啥 lisenter 要放在 loopback?
据我的经验在 win 上装好 listener 起来就好了(如果没自己创建 listner 就有个默认的), 要用起来其他没啥要改的配置啊。 |
14
black11black OP @gefranks 很神秘
|
15
black11black OP @gefranks 大佬,我在 oracle linux 安装又遇到无法访问。调试时运行 sqlplus lsnrctl 等提示无命令,这是正常的吗?
这次是官方镜像 oracle linux 7.7 版,安装 19c 。安装过程挺顺利的,按照程序的检查提示,在默认系统中增大 swap,修改系统参数,以及安装几个库之后就很无痛的装上了。localhost:5500/em 可以访问,但 sqlplus 之类的就访问不了 |
16
gefranks 2021-01-10 15:51:57 +08:00
@black11black 请问你 ORACLE_HOME 是否设置了? ORACLE_SID 设了么, sqlplus, lsnrctl 所在的 bin 目录是否加入到了 PATH 里面?
|