什么是Oracle

时间:2016-05-11 15:04:19

标签: database oracle performance database-performance

做一些关于Oracle数据库的阅读,并且我正在学习共享池。

我将此作为我的主要参考:https://docs.oracle.com/database/121/TGDBA/tune_shared_pool.htm#TGDBA558

在阅读完这一件事后,我仍然不清楚我们如何获得共享池的“转储”

例如,假设我有一个应用程序由于压力过大的共享池而导致内存消耗问题/错误...我将如何查找存储过程,字符串变量内容等等正在吃掉所有的存储空间?

在Java中,我们只需要进行堆转储。堆转储显示内存中的包,类和原始数据。

Oracle中的堆转储相当于什么?

2 个答案:

答案 0 :(得分:2)

查看Oradebug

从页面:

  

Oradebug是一个可以从SQL * Plus(或Svrmgrl执行)执行的命令   在Oracle 8i及更低版本中)显示或转储诊断   信息。

转储herehere的简要说明。

答案 1 :(得分:2)

当您转储Oracle的共享池时,您将获得一个具有数十GB的文件。并且你将阻止整个数据库,直到它完成。 这是您通常不希望在生产数据库上执行的操作。

Oracle的诊断功能远远超出了JVM所能提供的功能。

  • 有关内存使用情况的简要视图,您可以使用V$SGASTATv$sga_resize_ops
  • 首先,您还可以查看过去并分析过去的问题。 google for AWR,ASH,STATSPACK报道。
  • 阻止您可以使用的问题挂起分析工具
  • 对于数据一致性问题,您可以使用审计或logminer
  • 对于单个会话的详细跟踪,您可以使用tkprof,trca甚至是实时sql监控。或v$active_session_history

Oracle有一个名为 wait interface 的东西,所以每当数据库花一些时间做某事时,一些计数器就会增加。有各种工具可以访问这些计数器。它们中的每一个都用于特定目的。

所以,是的,您也可以转储Oracle的共享池,但这通常是最后的方法,如何诊断Oracle中的问题。