还原了一个Oracle数据库发现表DBA_DATA_FILES 找不到,找了很多网上文章,说是数据库一个Bug,重启就可以了,但是实例情况却不是这样。
在Oracle中执行语句
Select * from DBA_DATA_FILES
报错如下:
ERROR:
ORA-04043: object DBA_DATA_FILES does not exist
我的这个是因为角色权限不对,原来以为只要是有dba权限就可以如下:
grant dba to myuser;
以上权限也是不够的,需要添加以下授权就可以了:
grant sysdba myuser;
其实需要查询 DBA_DATA_FILES表时我们使用sys登录 就可以了,如果自建账号需要这个权限就把sysdba给当前用户就行了。
报错原因
查询 DBA_DATA_FILES 报 ORA-04043: object does not exist,多因当前用户缺少访问该数据字典视图的权限,而不是数据库损坏。
处理办法
- 仅授予 dba 角色有时仍不够,可再授予 SYSDBA:grant sysdba to myuser;(以 sys 身份执行)。
- 或直接授予查询权限:grant select on dba_data_files to myuser;
- 确认当前连接用户的权限:select * from user_role_privs;
- 查询时加方案前缀:select * from sys.dba_data_files;
相关阅读
- ORACLE RAC正确的关闭和启动顺序|常用命令与操作步骤
- Oracle RAC 集群搭建 Oracle Linux crs主机(二)
- Oracle RAC 集群搭建 初始化(三)
- Oracle RAC 集群搭建 NTP服务(一)