You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#在VS2019执行Oracle12c的desc v$sga时遇ORA-00900报错

解决ORA-00900错误及查询all_tab_columns返回空的问题

一、ORA-00900错误的原因与解决

desc是Oracle SQL*Plus工具的专属命令,不属于标准SQL语句,Oracle .NET驱动(ODP.NET)仅支持执行标准SQL,直接执行desc v$sga必然触发语法错误。

替代方案:用标准SQL查询数据字典来获取视图结构,比如查询all_tab_columns或user_tab_columns(根据用户权限)。

二、查询all_tab_columns返回空的原因及修正

1. 名称大小写问题

Oracle数据字典中的对象名称(如表、视图)默认以大写形式存储,v$sga作为动态性能视图,其在数据字典中的实际名称是V$SGA。你之前的查询用了小写的'v$sga',导致匹配不到结果。

修正后的查询语句:

SELECT column_name, data_type, data_length
FROM all_tab_columns
WHERE table_name = 'V$SGA';

如果需要更精准,可以指定视图所属的SYS用户:

SELECT column_name, data_type, data_length
FROM all_tab_columns
WHERE owner = 'SYS' AND table_name = 'V$SGA';

2. 权限问题

动态性能视图(以V$开头的对象)默认只有SYS等特权用户能访问,普通用户需要被授予权限才能查看:

  • 方法1:授予SELECT_CATALOG_ROLE角色(批量授权访问多数数据字典视图)
    GRANT SELECT_CATALOG_ROLE TO your_username;
    
  • 方法2:直接授权访问V$SGA
    GRANT SELECT ON V$SGA TO your_username;
    

三、验证视图存在性

如果还是查不到,可以先确认V$SGA视图是否存在:

SELECT view_name FROM v$view WHERE view_name = 'V$SGA';

内容的提问来源于stack exchange,提问作者quang minh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:20:10