所有
考虑
您是否可以构建具有单个连接且对用户表(不是系统表或v $或x $表)的只读访问权限的单个用户降低Oracle数据库整体性能的任何情况。还列出缓解策略(如果有)。
根据规定,请考虑这不是一个数据库,它远离饱和的几个CPU周期,因此任何额外的负载都是危险的。这是关于当前工作量的大小合适的盒子。
E.G。
如果用户使用并行提示,Oracle可能会使用非常高的DOP来执行该查询并使其他CPU进程匮乏。缓解:向用户解释禁止并行提示。
答案 0 :(得分:6)
最简单的方法是发出一个查询,它可以自己多次执行最大表的笛卡尔积。这将很快耗尽TEMP
表空间,并为需要排序的其他会话生成错误。您可以通过在TEMP
上授予有限的配额来缓解这种情况(如果这是多个人同时使用的应用程序帐户而不是个人可识别的帐户,则可能会变得棘手)或者使用资源管理器来终止会话运行时间过长或使用过多的CPU或I / O资源。
即使没有明确的PARALLEL
提示,Oracle也可能会自动使用并行性。根据Oracle版本以及如何配置并行性,启用并行自动调整以随时限制并行工作程序的总数。当然,这并不妨碍只读用户创建十几个会话,每个会话都会产生几个并行的工作程序,这些工作程序阻塞了您实际想要运行更多并行工作程序的其他会话。如果系统受CPU限制,您可以使用资源管理器为不同类型的工作负载配置优先级。
如果你允许一个匿名的PL / SQL块,有更多的方法来产生破坏,例如,创建一个嵌套的表,在你的PGA耗尽之前,它会被数十亿行填充。