Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle中禁用TOAD并行从属进程?_Oracle_Toad - Fatal编程技术网

如何在Oracle中禁用TOAD并行从属进程?

如何在Oracle中禁用TOAD并行从属进程?,oracle,toad,Oracle,Toad,我有一个12.5的蟾蜍在对抗多个Oracle SID。在其中一个进程上,第一次连接打开了一个包含4个即时并行从属进程的会话(在v$session中显示为附加会话,使本地DBA大吃一惊)。然后,每一个SQL编辑器都会添加另外5个 在其他小岛屿发展中国家,这种情况没有发生 有没有一种已知的方法可以在蟾蜍身上禁用此功能?(到目前为止没有任何效果) 编辑#1:好吧,结果证明这与蟾蜍无关。针对该实例打开的每个会话(也只是一个空白连接)都会立即自动创建4个额外的从属进程,这些进程仅在您自己的连接的gv$会话

我有一个12.5的蟾蜍在对抗多个Oracle SID。在其中一个进程上,第一次连接打开了一个包含4个即时并行从属进程的会话(在v$session中显示为附加会话,使本地DBA大吃一惊)。然后,每一个SQL编辑器都会添加另外5个

在其他小岛屿发展中国家,这种情况没有发生

有没有一种已知的方法可以在蟾蜍身上禁用此功能?(到目前为止没有任何效果)

编辑#1:好吧,结果证明这与蟾蜍无关。针对该实例打开的每个会话(也只是一个空白连接)都会立即自动创建4个额外的从属进程,这些进程仅在您自己的连接的gv$会话中可见(这就是为什么看起来其他TOAD连接没有它)。 我将保持此线程打开一段时间,直到我发现工作进程的处理方式


最终编辑:最终发现它们在实例级别上为每个语句强制多个线程,所以这与TOAD或客户机无关

要最小化会话数量,请在“选项”中的“Oracle |事务”页面上设置以下选项

  • 禁用“在线程中执行查询”
  • 启用“在Toad会话中执行脚本”
  • 将“解释计划会话”设置为“主要蟾蜍会话”
  • 这不是“真正的”并行。Oracle在真实应用程序集群(RAC)上对GV$动态性能视图使用小型并行查询。Oracle目前是一种共享一切的体系结构,所有数据都驻留在每个节点上。除了动态性能视图,因为大多数活动只发生在特定节点上,并且在该节点上进行跟踪

    这种行为只会发生在某些SID上,因为GV$仅在数据库集群化时使用并行查询。查询可能会使用并行进程,但每个节点只有一个,而且这些查询通常不会占用太多资源

    这些查询通常不应该是问题。我可以想到一些场景,它们看起来像一个问题,但不是根本问题:

  • 并行\u MAX\u服务器太低。并行会话不应成为稀缺资源。DBA担心失控的并行性是正确的。但当组织担心这种情况时 一小部分并行会话通常是因为它们通过收缩并行的MAX服务器造成了人为的稀缺。的默认值 通常是“每CPU并行线程数*CPU计数*并发并行用户数*5”。 如果您的服务器是在本世纪购买的,则无需担心额外的会话

  • 不良互连RAC需要在节点之间建立真正良好的网络连接。100Mbps以太网不会切断它,节点将花费大量时间进行通信

  • 字典或固定对象统计数据不正确。如果从未收集字典或固定对象统计数据,则数据字典查询可能会很慢。如果这些查询运行很长时间,请尝试使用以下命令收集统计信息:
    exec dbms\u stats.gather\u dictionary\u stats
    exec dbms\u stats.gather\u fixed\u object\u stats

  • 下面是GV$使用并行查询的演示。这仅适用于RAC数据库

    > explain plan for select * from v$process;
    
    Explained.
    
    > select * from table(dbms_xplan.display(format => 'basic'));
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------
    Plan hash value: 4113158240
    
    ------------------------------------
    | Id  | Operation        | Name    |
    ------------------------------------
    |   0 | SELECT STATEMENT |         |
    |   1 |  FIXED TABLE FULL| X$KSUPR |
    ------------------------------------
    
    8 rows selected.
    
    > explain plan for select * from gv$process;
    
    Explained.
    
    > select * from table(dbms_xplan.display(format => 'basic'));
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------
    Plan hash value: 3900509504
    
    -------------------------------------------
    | Id  | Operation            | Name       |
    -------------------------------------------
    |   0 | SELECT STATEMENT     |            |
    |   1 |  PX COORDINATOR      |            |
    |   2 |   PX SEND QC (RANDOM)| :TQ10000   |
    |   3 |    VIEW              | GV$PROCESS |
    |   4 |     FIXED TABLE FULL | X$KSUPR    |
    -------------------------------------------
    
    11 rows selected.
    
    >  
    

    转到Toad中的会话浏览器,查看每个会话都在做什么。也许是因为一个可以禁用的“选项”。我要说的是,如果这是一个bug,请检查Toad支持。看起来他们都在运行各种Toad查询,3个针对gv$session,一个空-没有打开的游标,主会话-从gv$open_游标中选择-所以所有这些都是应用程序调用。禁用/启用/设置为主Toad会话=>相同的行为,并且只针对一个SID,其他的小岛屿发展中国家只使用一个会话,没有从机。甚至其他用户的更奇怪的蟾蜍会话也没有表现出这一点。只是我的,而且只有一个SID。我不确定还有什么会导致这个。我会四处打听的。一位不使用StackOverflow的知情人士的评论。“如果有使用并行性定义的表,他会转到模式浏览器中的表数据,那么Oracle将按照表定义的指示执行—使用并行从属查询表。”模式浏览器和主详细信息浏览器中有一个禁用并行性的选项。在编辑器中,如果要从这样的表中进行选择,则需要手动包含NOPARALLEL提示。这听起来像是真的吗?谢谢你的解释。我最终发现,它们为每条语句强制多个线程。因此,这实际上是在实例级别上设置的,而不是在TOAD或客户端中设置的。@Access\u授予“强制多线程”是什么意思?我相信使用的参数是设置为“自动”的“并行度”策略,如果我理解这一点,它会在该SID的4个实例上抛出4个从属线程correctly@access_granted这仍然引起了一些问题。将该参数设置为AUTO通常不会导致每个实例有多个并行线程。Oracle应该能够检测到查询GV$会话低于符合并行性条件的查询阈值。请参阅中的说明,并查看底部的链接以获取VLDB指南。可能另一个参数配置错误,系统统计信息关闭,固定统计信息关闭,等等。