日期:2014-05-17  浏览次数:20813 次

求解 oracle系统表v$parameter v$SGASTAT里面参数的意思
鄙人菜鸟遇一oracle的问题,

先贴sql语句: select round(100 * (1 - (a.bytes / b.value)), 2) MemoryUsage from v$sgastat a, v$parameter b
 where a.pool = 'shared pool' and a.name = 'free memory' and b.name = 'shared_pool_size'

当程序运行到调用该sql语句的时候,由于系统表v$parameter.value=0(b.value=0)抛出异常,除数不能为0.

有没有哪位大神 能给我一个方法 得到当b.value=0是,查出memoryUsage的值。

------解决方案--------------------
不要从v$parameter查,你应该用的是自动内存管理,oracle会根据memory_target参数(11g)或者sga_target参数(10g)自动分配共享池大小。

从v$sgainfo查共享池大小。
select bytes from v$sgainfo where name='Shared Pool Size';