问题描述
我有一个关于用户名和它的角色的查询。
1) 当我尝试使用sysdba连接pdb用户user1 @ mypdb1并触发user_tables时,我无法获得所有表。
但是使用相同的连接我使用dba_tables和我过滤user1它只显示我的表。
2) 同一用户user1 @ mypdb1使用普通连接,我触发user_tables可以正常工作,就像仅显示我创建的那些表一样。
dba_tables不起作用意味着dba_ * 视图不可访问。
那么我怎么了?你能帮我吗?
请检查下面我的输出。
*
环境
-
使用plsql开发工具
Oracle数据库:- Oracle数据库12c企业版12.2.0.1.0-64位
*
我只有我的表。没错。
1) 当我尝试使用sysdba连接pdb用户user1 @ mypdb1并触发user_tables时,我无法获得所有表。
但是使用相同的连接我使用dba_tables和我过滤user1它只显示我的表。
2) 同一用户user1 @ mypdb1使用普通连接,我触发user_tables可以正常工作,就像仅显示我创建的那些表一样。
dba_tables不起作用意味着dba_ * 视图不可访问。
那么我怎么了?你能帮我吗?
请检查下面我的输出。
*
环境
-
使用plsql开发工具
Oracle数据库:- Oracle数据库12c企业版12.2.0.1.0-64位
*
select * from dba_users where username='USER1' order by 1; Output > Column Name Data USERNAME :- USER1 USER_ID :- 107 PASSWORD :- ACCOUNT_STATUS :- OPEN LOCK_DATE :- EXPIRY_DATE :- 16-03-2021 15:02 DEFAULT_TABLESPACE :- USERS TEMPORARY_TABLESPACE :- TEMP LOCAL_TEMP_TABLESPACE :- TEMP CREATED :- 28-11-2018 12:59 PROFILE :- DEFAULT INITIAL_RSRC_CONSUMER_GROUP :- DEFAULT_CONSUMER_GROUP EXTERNAL_NAME :- PASSWORD_VERSIONS :- 10G 11G 12C EDITIONS_ENABLED :- N AUTHENTICATION_TYPE :- PASSWORD PROXY_ONLY_CONNECT :- N COMMON :- NO LAST_LOGIN :- 28-NOV-20 12.18.39.000000000 PM +05:30 ORACLE_MAINTAINED :- N INHERITED :- NO DEFAULT_COLLATION :- USING_NLS_COMP IMPLICIT :- NO ALL_SHARD :- NO *********************************** Connection string user1@mypdb1 and connect as sysdba *********************************** sql> select * from user_tables; I got 1484 rows from table but i do not get my right table here. *********************************** Connection string user1@mypdb1 and connect as sysdba *********************************** sql> select * from dba_tables where owner='USER1'; I got my tables only. that is right. *********************************** Connection string user1@mypdb1 and connect as normal *********************************** sql> select * from user_tables;复制
我只有我的表。没错。
专家解答
SYSDBA = 特殊。
当你这样连接时,你真的是作为sys连接:
所以当你以sysdba的身份连接时,你真的是SYS。因此,USER1的表不会显示user _ * 视图,因为这是一个不同的用户。
Only connect as sysdba for admin tasks that require it.对于标准数据库访问正常连接。
当你这样连接时,你真的是作为sys连接:
SQL> grant create session, sysdba to u 2 identified by u; Grant succeeded. SQL> SQL> conn u/u@pdb1 Connected. SQL> SQL> sho user USER is "SYS" SQL> SQL> conn u/u@pdb1 Connected. SQL> SQL> sho user USER is "U"复制
所以当你以sysdba的身份连接时,你真的是SYS。因此,USER1的表不会显示user _ * 视图,因为这是一个不同的用户。
Only connect as sysdba for admin tasks that require it.对于标准数据库访问正常连接。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
590次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
544次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
462次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
443次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
440次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
439次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
437次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
412次阅读
2025-04-22 00:13:51
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
406次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
392次阅读
2025-04-08 23:57:08