暂无图片
暂无图片
5
暂无图片
暂无图片
1
暂无图片

【排障记录】故障代码ORA-16000,DBA最好不要太相信开发人员的话

原创 Jose Chen 2023-07-03
3274

前言

大早上微信群里开发人员贴出报错截图:ORA-16000,database open for read-only access,无法访问数据库的某张视图。看描述以为是数据库实例出现了问题。但是开发人员认为是权限分配的问题,我随机开展了排查。

开发报错截图.png

排查过程

1、通过ssh连接目标数据库,通过sqlplus连接到控制台,查看该数据库的角色,确认是dg备库。
select database_role from v$database;

查看数据库的角色.jpg

2、通过dba_tab_privs视图查询该用户的权限分配,发现返回结果为空
select * from dba_tab_privs where grantee=‘user’;

3、通过dba_views视图查看目标视图的归属,发现本身就属于该用户
select owner from dba_views where table_name=‘view’;

4、直接查询该视图的数据,提示报错ORA-04045;通过desc查看该视图的字段结构,收获同样的报错代码

数据库后台查询结果.jpg

5、经过分析,发现是由于开发人员在主库进行视图的数据结构修改,未同步到备库,导致了该报错。

6、登录到主库,对该视图进行查询的动作,类似于激活配置同步,此时备库就可以正常访问视图了

反思

虽然整个排查过程并未持续多长时间,也算不上什么大的故障。但是一开始开发人员的一句权限错误,确实让我的思路产生了变化,开始往权限分配的方向去排查,从而耽误了一点时间。所以作为DBA,应该形成一套自己的思维逻辑,切勿听信开发人员的一己之词,哪怕是一个标点符号,从而为排障增加了难度。
另外,在整个运维体系里,DBA的角色确实需要具备更多的知识,比如网络,存储,主机等等方向。才能从容面对各种甩锅,让问题迎刃而解。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

辣·王爷 | 华峰
暂无图片
1年前
评论
暂无图片 0
第五步里面的,主库修改,不是应该由数据库进程自动同步吗?为什么没同步呢?
1年前
暂无图片 点赞
评论