给普通用户赋予对v$视图的查询权限,结果报 ORA-02030 错误
ORA-02030: 只能从固定的表/视图查询(ORA-02030: can only select from fixed tables/views)
http://cuug.com.cn/html/activityinfor_283_283_1054.html?wnlt
问题背景:
在一个dba用户下的存储过程中需要使用v$的视图(v$client_stats)
使用命令行测试:
SQL> variable total number;
SQL> begin
2 select count(1) into :total from v$client_stats;
3 dbms_output.put_line('total = '|| :total);
4 end;
5 /
PL/SQL procedure successfully completed
total
---------
0
这样并没有问题,于是编辑成过程执行
使用过程
SQL> create or replace procedure p_test
2 authid current_user
3 as
4 v_all number := 9999;
5 begin
6 select count(1)
7 into v_all from v$client_stats;
8
9 dbms_output.put_line('v_all =' ||v_all );
10 end;
11 /
Warning: Procedure created with compilation errors
具体错位信息
Compilation errors for PROCEDURE ZHANGBIN.P_TEST
Error: PL/SQL: ORA-00942: 表或视图不存在
Line: 9
Text: FROM v$client_stats;
Error: PL/SQL: SQL Statement ignored
Line: 7
Text: SELECT COUNT(1)
此时需要给用户赋查询权限(于是产生了ORA-02030错误)
SQL> show user;
User is "SYS"
SQL> grant select on v$client_stats to zhangbin;
grant select on v$client_stats to zhangbin
ORA-02030: 只能从固定的表/视图查询
解决方法:
SQL> select * from dba_synonyms t where t.synonym_name = 'V$CLIENT_STATS';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ -----------
PUBLIC V$CLIENT_STATS SYS V_$CLIENT_STATS
SQL> grant select on V_$CLIENT_STATS to zhangbin;
Grant succeeded
切换到普通用户
SQL> show user;
User is "zhangbin"
SQL> create or replace procedure p_test
2 as
3 v_all number :=9999;
4 begin
5 select count(1)
6 into v_all
7 from v$client_stats;
8 dbms_output.put_line('v_all =' ||v_all );
9 end;
10 /
Procedure created
SQL> set serveroutput on
SQL> exec p_test;
v_all =0
PL/SQL procedure successfully completed
- 大小: 31.8 KB
分享到:
相关推荐
以"ORA-01422"为例,这个错误通常发生在使用SELECT INTO语句时,如果查询返回多于一行的数据,就会触发这个错误。处理方法可能包括修改查询以确保只返回一行数据,或者使用BULK COLLECT INTO与FORALL语句进行批量...
6. **修改应用程序代码**:如果上述方法都无法解决问题,可能需要修改应用程序代码,确保它能处理不同字符集的数据。 总的来说,解决"ORA-12737"错误需要理解字符集的概念,并根据实际情况调整客户端或服务器的配置...
### Oracle回闪日志满了与ORA-03113错误处理 在Oracle数据库管理过程中,经常遇到的一些问题包括回闪日志...通过以上步骤,可以有效地解决Oracle回闪日志空间不足的问题以及ORA-03113错误,确保数据库系统的稳定运行。
本文将深入探讨一个与Oracle数据库相关的技术问题,即“ORA-2072”和“ORA-2063”错误在通过DB Link进行查询时的出现情况。我们将基于提供的文件信息“p17890099_121010_Linux-x86-64.zip”,以及描述中的12.1.2.0与...
在本例中,通过切换到pfile启动数据库,然后更新并重建spfile,我们可以有效地解决这类问题。在日常的数据库管理中,保持参数文件的更新,并遵循最佳实践是非常重要的,以避免类似的问题。同时,定期备份参数文件和...
总结,Oracle 10g 数据库在遭遇意外断电时,可能需要一系列复杂的恢复步骤,包括检查和修复损坏的数据文件,使用日志文件进行介质恢复,以及调整数据库参数以解决一致性问题。在无法正常恢复的情况下,备份数据和...
在实际操作过程中还需要根据具体情况调整参数,并且密切关注日志文件中的信息,以便及时发现并解决问题。此外,建议在正式迁移之前先在一个测试环境中进行模拟操作,确保一切正常后再应用于生产环境。
### PL/SQL连接Oracle数据库报ORA-12154错误及解决方法 #### 错误概述 在尝试使用PL/SQL Developer连接Oracle数据库时,可能会遇到“ORA-12154: TNS: 无法解析指定的连接标识符”这一错误。此错误通常表明PL/SQL ...
### SPFILE 参数错误...通过仔细检查归档日志路径的有效性、调整文件系统权限以及正确更新SPFILE中的参数,通常可以解决这些问题。在处理此类错误时,还需要注意遵循Oracle数据库的最佳实践,以确保数据库稳定运行。
开启errorstack的方法有两种: - **通过ALTER SESSION/SYSTEM命令**: ```sql alter session/system set events '<error_number> trace name errorstack level 3'; ``` 其中`<error_number>`是出现的ORA错误号...
### Oracle账户锁定问题详解与解决方法 在Oracle数据库管理中,遇到账户被锁定的问题是非常常见的。...需要注意的是,在处理此类问题时,应保持足够的耐心,并仔细检查每一个步骤,避免因操作不当导致问题复杂化。
因此,解决TNS-12500错误的方法是,增加系统的物理内存,调整内存分配参数,优化系统配置,避免系统资源耗竭的情况发生。同时,也可以通过优化数据库配置,调整数据库参数,提高数据库的性能,以减少TNS-12500错误的...
解决这个问题的一种巧妙方法如描述中所提到,分为以下几步: 1. **查询约束**:首先,我们需要了解哪些约束影响了我们的操作。通过执行`SELECT * FROM user_constraints WHERE constraint_name LIKE '%TB_ROLE%'`,...
在Linux环境中,对磁盘进行扩容时可能会遇到各种问题,其中一种常见的错误是"Bad magic number in super-block while trying to open"。这个错误通常发生在尝试使用`resize2fs`命令扩展文件系统时,表明系统无法识别...
- Oracle GoldenGate是一种高性能的数据复制解决方案。 - 通过GoldenGate可以实现实时的数据同步,适用于跨平台、跨版本的数据库克隆场景。 4. **物理文件复制克隆**: - 对于简单的克隆需求,可以直接复制...
解决方法是更新`.bash_profile`文件,包含Oracle库的路径,或者创建软链接到所需的库文件。 配置Oracle GoldenGate的过程包括创建必要的子目录,这些子目录用于存放参数文件、报告文件和其他运行时文件。通过GGSCI...
总的来说,Oracle Instant Client提供了一种方便的方法来处理Oracle连接问题,而oci.dll的更新是解决特定错误如"ORA-28547"的关键步骤。通过理解这个过程,IT专业人士可以更有效地排查和修复Oracle数据库连接问题。
- **解决方法:** 调整查询逻辑,确保子查询返回的结果集中只有一行记录,或者使用其他更合适的方法来实现删除操作。 - 示例代码: ```sql SQL> delete from work where eid in (select eid from emp where (...
北京 在使用SQLServer的过程中,用户遇到的最多的问题莫过于连接... 一、客户端工具连接失败 在使用SQLServer自带的客户端工具(以企业管理器为例)连接SQLServer时,最常见的错误有如下一些: 1、SQLServer不存在
这个文件是Oracle数据库实例的初始化参数文件,通常命名为`initSID.ora`,其中`SID`代表服务标识符,即数据库实例的名字,在本例中是`ORCL`。这个文件包含了数据库启动时所需的配置参数,如内存结构大小、日志切换...