做一些关于Oracle数据库的阅读,并且我正在学习共享池。
我将此作为我的主要参考:https://docs.oracle.com/database/121/TGDBA/tune_shared_pool.htm#TGDBA558
在阅读完这一件事后,我仍然不清楚我们如何获得共享池的“转储”
例如,假设我有一个应用程序由于压力过大的共享池而导致内存消耗问题/错误...我将如何查找存储过程,字符串变量内容等等正在吃掉所有的存储空间?
在Java中,我们只需要进行堆转储。堆转储显示内存中的包,类和原始数据。
Oracle中的堆转储相当于什么?
答案 0 :(得分:2)
答案 1 :(得分:2)
当您转储Oracle的共享池时,您将获得一个具有数十GB的文件。并且你将阻止整个数据库,直到它完成。 这是您通常不希望在生产数据库上执行的操作。
Oracle的诊断功能远远超出了JVM所能提供的功能。
V$SGASTAT
和v$sga_resize_ops
v$active_session_history
。Oracle有一个名为 wait interface 的东西,所以每当数据库花一些时间做某事时,一些计数器就会增加。有各种工具可以访问这些计数器。它们中的每一个都用于特定目的。
所以,是的,您也可以转储Oracle的共享池,但这通常是最后的方法,如何诊断Oracle中的问题。