我的问题专门涉及如何判断 UNIX(Solaris)服务器上的 Oracle 实例使用了多少内存。
例如(我真的要过度简化这一点...),如果我发现正在使用 8GB 的 RAM,是否有一种“简单”的方法(通过 TOAD 或某些 UNIX 工具)来识别特定 Oracle 实例正在使用该内存的哪一部分?
通过联系 Oracle 讲师和搜索 Sun 支持站点,我能够找到“pmap”命令用法来获取 Oracle 进程的“匿名”内存,但希望有人能有替代解决方案。
我确实可以使用 Sun 管理中心(如果有帮助的话),并且我愿意接受任何解决方案,甚至用汉堡和啤酒贿赂服务员。谢谢大家!
答案1
Oracle 实例有两种类型的内存。SGA 是共享内存,PGA 是仅供各个进程访问的内存。如果您使用适当的权限(例如 DBA 或使用 SELECT_CATALOG_ROLE)连接到实例,则可以
SELECT SUM(VALUE) FROM V$SGA;
SELECT SUM(PGA_ALLOC_MEM) FROM V$PROCESS;
查看每个项目的总数。
答案2
如果 Oracle 以单独的用户身份运行,则可以使用 prstat 查看它总体使用了多少内存:
prstat -a