为什么以sys无法远程登录数据库
今天通过pl/sql连接一个数据库,普通用户能连接上,但是sys就连接不上,告诉我用户名密码错误。之前其实遇到过这个问题,然后就开始查找原因。整个过程记录如下,结果是扎心的,过程也不是完全都懂。记下来权当备忘吧。
1、查看服务器监听器状态。
$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1. - Production on -9月 - :: Copyright (c) , , Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oa-db-)(PORT=)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Linux: Version 11.2.0.1. - Production
启动日期 -9月 - ::
正常运行时间 天 小时 分 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /oracle/app/oracle/product/11.2./dbhome_1/network/admin/listener.ora
监听程序日志文件 /oracle/app/diag/tnslsnr/oa-db-/listener/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oa-db-)(PORT=)))
服务摘要..
服务 "PLSExtProc" 包含 个实例。
实例 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 个处理程序...
服务 "orcl" 包含 个实例。
实例 "orcl", 状态 READY, 包含此服务的 个处理程序...
服务 "orclXDB" 包含 个实例。
实例 "orcl", 状态 READY, 包含此服务的 个处理程序...
命令执行成功
可以看到监听器没有问题。
2、通过tnsping查看是否能够连通。
在服务器上做
$ tnsping orcl TNS Ping Utility for Linux: Version 11.2.0.1. - Production on -9月 - :: Copyright (c) , , Oracle. All rights reserved. 已使用的参数文件:
/oracle/app/oracle/product/11.2./dbhome_1/network/admin/sqlnet.ora TNS-: 无法解析名称
这是因为服务器上没有tnsname.ora这个配置文件,无法解析名称。
在客户端上做
tnsping oaproddb TNS Ping Utility for -bit Windows: Version 11.2.0.4. - Production on -9月 - :: Copyright (c) , , Oracle. All rights reserved. 已使用的参数文件:
D:\app\JIAKAI\product\11.2.\client_1\network\admin\sqlnet.ora 已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = **.**.**.**)(PORT = )) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK ( 毫秒) C:\Users\JIAKAI>
没有问题。
3、查看数据库参数文件
登录到服务器,然后以sys用户登录到数据库
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1. Production on 星期三 9月 :: Copyright (c) , , Oracle. All rights reserved. 连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1. - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show user
USER 为 "SYS"
SQL>
4、查看spfile是否存在
SQL> show parameter spfile NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /oracle/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora
没有问题。
5、然后查看remote_login_pass参数
SQL> show parameter remote_login_pass NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
也没有问题。
一直也没有怀疑过sys密码不正确,因为通过以下语句可以登录
$ sqlplus sys/1234 as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期三 9月 13 17:44:46 2017 Copyright (c) 1982, 2009, Oracle. All rights reserved. 连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
但还是试着抱一抱的态度,我更改了sys密码。然后居然登录成功了。(心里一万只草泥马奔过)
那么问题来了,为什么sqlplus sys/1234 as sysdba能够登录呢?我之后又试了其他的sqlplus sys/*** as sysdba都可以登录。(WTF)
在网上查阅了资料和oracle的官方文档(Database Administrator‘s Guide)得知,Linux系统下,在sqlnet.ora中没有进行任何关于认证方法的配置时,是同时支持数据库密码文件验证和操作系统验证的,并且操作系统验证要优先于数据库验证。所以,当我们采用sqlplus sys/*** as sysdba这种登录方式时,是采用的操作系统方式验证,数据库会自动忽略“/”两边的用户名和密码,其效果就如同sqlplus / as sysdba一样。
所以这次的问题就是sys密码没有写对,所以pl/sql登录不上去。
参考:
想了解sqlnet.ora,tnsname.ora,listener.ora作用的,请戳这里
想参考其他遇到该问题的情况,请戳这里
想了解oracle验证方式的,请戳这里
关于oracle官方文档,请戳这里
为什么以sys无法远程登录数据库的更多相关文章
- oracle11g 远程登录数据库
oracle11g 远程登录数据库比以往的任何版本都要简单,什么也不用做 1.OEM登录 在浏览器中直接输入,远程数据库的OEM网址,当然要把localhost或者主机名改成ip地址 https: ...
- Mysql 用户远程登录数据库
其实这个技术不难.我只是站在巨人的肩膀上.梳理一下我遇见的问题. 方法有两种.修改当前用户的host 为 %.或者直接授权(推荐) 直接授权: # mysql -u root -proot // 登 ...
- CentOS 6.4 升级 Mysq5.5l方法 和 用户远程登录数据库
一:.在这里我们都知道 系统的yum源Mysql版本一般都是5.1 5.2的比较多 但是有些程序 必须要5.5以上的版本才能支持 这时候我们应该怎么办呢 编译安装也太慢 太费时间 那么我们就必要要 ...
- plsql developer 使用sys用户登录,报ORA-01031权限不足,解决sys(dba权限用户)远程登录报错。
数据库服务器架设在机器A上,此时我在机器B上进行远程连接,使用sys账号远程登录时报ORA-01031:insufficient privileges 或 ORA-01017: invalid use ...
- mysql用户修改登录密码及开启远程登录
一.修改用户登录密码: mysql> show databases;ERROR 1820 (HY000): You must SET PASSWORD before executing this ...
- mysql用户修改登录密码及授予用户远程登录权限
一.修改用户登录密码: mysql> show databases;ERROR 1820 (HY000): You must SET PASSWORD before executing this ...
- Oralce新建数据库、新建远程登录用户全过程
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 对于初学者来说,为了避免麻烦,可以用'Database Configuration Assi ...
- MYSQL远程登录权限设置 ,可以让Navicat远程连接服务器的数据库
Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录: 1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ...
- Oracle客户端+PLSQLDeveloper实现远程登录Oracle数据库
Oracle数据库功能强大.性能卓越,在造就这些优点的同时,也导致Oracle占内存比较多.针对这个问题,我们如何做到取其精华去其糟粕呢? 解决方案:我们可以在局域网内的服务器上安装庞大的Oracle ...
随机推荐
- canvas背景动画
偶然反驳可看到博客背景的炫酷效果 觉得很新奇就去查看了一下源码 结果在git上找到了 记录一下 https://github.com/hustcc/canvas-nest.js/
- ansible-play中关于标签tages,handler,notify的使用
--- - hosts: webser remote_user: root tasks: - name: install httpd package yum: name=httpd tages: in ...
- String.split()方法
如果用“(”作为分隔的话,必须是如下写法,String.split("\\("),这样才能正确的分隔开,不能用String.split("("); 如果用“)” ...
- Delphi做验证码登录窗口
在五月麦田的帮助下做成了,感觉挺好,验证码输入的时候需要大写: 组件:LabelEdit 3个 Button 2个 image 1个. 代码如下: unit Unit1; interface us ...
- 常用MySQL操作(一)
第二十四次课 常用MySQL操作(一) 目录 一.设置更改root密码 二.连接mysql 三.mysql常用命令 四.mysql用户管理 五.常用sql语句 六.mysql数据库备份恢复 七.扩展 ...
- 第一次作业_ChenHong1998
我的目标 学习到软件工程的实践过程 回想一下你初入大学时对软件工程专业的畅想 当初你是如何做出选择软件工程专业的决定的? 计算机是热门专业,软件工程专业好找工作 你认为过去两年中接触到的课程是否符合你 ...
- Qt 文件的操作
文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...
- spring cloud配置高可用eureka时遇到的一些坑
考虑到注册中心的高可用,今天搭建一下eureka集群,并在中途遇到一些小的坑,前前后后花了两个小时来排除,在这里记录一下,以供后面查看. 首先,贴上要达到的效果: 一.起两个eureka模拟集群,在D ...
- Oracle中计算两个日期时间的差
--方法1 select floor((sysdate - to_date('2006-09-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss'))) as sDays fro ...
- 深入浅出JMS 消息队列
移驾于亮老师博客 http://blog.csdn.net/jiuqiyuliang/article/details/46701559