ORA-01017 查找机器名 用户名 以及library cache lock 参数含义

应用连不上测试环境的数据库,第一个猜测是用户被锁了?用sysdba连上数据库,发现用户是open状态。 用sqlplus XXX/XXX 测一下,会话直接夯住了,好像有点诡异,查看视图V$SESSION,看下当前数据库的连接数和等待事件等,果然有一大堆的library cache lock! library cache lock和用户无法登录两者联系到一起,那多半是用户密码错误了。

当发现数据库中有大量的library cache lock等待事件后,先去查看它所对应的 P1,P2,P3的值。可以通过视图V$EVENT_NAME,知道每个等待事件的P1,P2,P3的具体含义。这里,p1: 'handle address',p2: 'lock address',p3: '100*mode+namespace'

  1. 查看P1,P2,P3的值

    select to_char(p1,'xxxxxxxxxxxxx') p1raw,to_char(p2,'xxxxxxxxxxxxxxx') p2raw, to_char(p3,'xxxxxxxxxxxxxx') p3raw
    from v$active_session_history where event='library cache lock';
    P1RAW P2RAW P3RAW


    b4f2c3e0 b47952c8 4f0002
    b4f2c3e0 b47c5c68 4f0002
    b4f2c3e0 b460dcf8 4f0002

  2. 然后根据P3的值,查看具体的namespace

    将16进制0x4f转换为10进制
    SQL> select to_number('4f','xx') from dual;
    TO_NUMBER('4F','XX')

    79
    查看 Xkglob,namespace=79 对应的是 ACCOUNT_STATUS SQL> select KGLHDNSP,KGLHDNSD from xkglob where KGLHDNSP=79;
    KGLHDNSP KGLHDNSD


    79 ACCOUNT_STATUS

KGLHDNSP KGLHDNSD
---------- --------------------------------------------------------------------------------
0 SQL AREA
1 TABLE/PROCEDURE
2 BODY
3 TRIGGER
4 INDEX
5 CLUSTER
9 DIRECTORY
17 CONTEXT POLICY
18 PUB SUB INTERNAL INFORMATION
21 APP CONTEXT
24 RESOURCE MANAGER
25 XML SCHEMA
32 JAVA DATA
45 MULTI-VERSION OBJECT FOR TABLE
48 MULTI-VERSION OBJECT FOR INDEX
51 SCHEDULER GLOBAL ATTRIBUTE
53 TEMPORARY TABLE
55 TEMPORARY INDEX
57 SCHEDULER JOB SLAVE
64 EDITION
69 DBLINK
73 SCHEMA
75 SQL AREA STATS
79 ACCOUNT_STATUS
82 SQL AREA BUILD
93 AUDIT POLICY
103 OPTIMIZER FINDING
104 OPTIMIZER DIRECTIVE OWNER
106 Database Vault Rule
107 Database Vault Ruleset
112 USER PRIVILEGE
113 GTT SESSION PRIVATE STATS
115 KZP Exempt Access Policy list
123 Database Vault Realm Participant
127 Last_Successful_Logon_Time
130 APP STATE
136 CMP
137 OPTIMIZER EXPRESSION HEADER
138 OPTIMIZER EXPRESSION OBJECT
140 INMEMORY SERVICE METADATA
141 RUNTIME STATISTICS

从ACCOUNT_STATUS来看,这个等待事件应该与帐号密码验证有关。

  1. 验证猜测

打开 1017 errorstack,观察日志。

复制代码
alter system set events '1017 trace name errorstack level 3';

观察alert log

复制代码
Errors in file u01/app/oracle/diag/rdbms/gu/gu/trace/gu_ora_3737.trc:
ORA-01017: invalid username/password; logon denied

然后,从trace文件中看到客户端信息:

复制代码
client details:
`      O/S info: user: root, term: pts/4, ospid: 3559`
      machine: XXXX program: XXXXXXX (TNS V1-V3)
      application name: XXXXXX (TNS V1-V3), hash value=2077784982

关闭 1017 errorstack

复制代码
alter system set events '1017 trace name errorstack off';
相关推荐
打工仔折腾 AI2 分钟前
SQL 编辑器不是高级记事本:KStudio 与 KSQL Developer 的建表与增删改查手法
数据库·人工智能·后端·python·sql·编辑器·ai agent 实战
CNSSIRD数据库7 分钟前
中国省地县乡四级行政建制及区划代码-2025年版
大数据·数据库·数据分析·论文笔记
for_ever_love__19 分钟前
LangGraph Checkpointer:持久化、断点续跑与多轮记忆
服务器·数据库·学习·持久化·langgraph·checkpointer·断点续跑
Data analyse45620 分钟前
用户路径SQL按会话起止时间聚合的方法
大数据·服务器·前端·数据库·人工智能·sql·数据分析
Lhan.zzZ22 分钟前
Linux + Qt/QML:解决 QtQuick.VirtualKeyboard.Plugins 模块加载失败与环境变量配置
linux·数据库·qt
大圣编蚕23 分钟前
Redis 为什么快?现在还是单线程吗?
数据库·redis·缓存
鸥梨菌Honevid33 分钟前
UVM 面试高频:uvm_test_top 与 uvm_config_db 路径机制全解析
数据库·面试·职场和发展
极小狐38 分钟前
MR 里测试摘要空白、覆盖率不显示?JUnit 与覆盖率配置 9 步排查
数据库·ci/cd·junit·单元测试·mr·devops·代码覆盖率
silvamux_40 分钟前
MiniMax API 调用教程:兼容 OpenAI 写法
java·数据库·elasticsearch
zh731443 分钟前
sqlforge一个SQL 格式化与方言转换工具
数据库·sql