[20130104]oracle能有多少子光标.txt

[20121019]oracle能有多少子光标.txt

原链接:
http://www.antognini.ch/2012/10/how-many-children-can-a-parent-cursor-have-1000000/

看看oracle可能有多少子光标,也就是最大是多少?重复原作者的测试看看。

我的测试环境:

SQL> select * from v$version where rownum
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
CREATE TABLE t (n NUMBER);
INSERT INTO t VALUES (1);
COMMIT;
execute dbms_stats.gather_table_stats(user,'t')

1.测试
DECLARE
    l_count PLS_INTEGER;
BEGIN
    FOR i IN 1..100
    LOOP
    EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_caching = '||i;
    FOR j IN 1..10000
    LOOP
        EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_cost_adj = '||j;
        EXECUTE IMMEDIATE 'SELECT count(*) FROM t' into l_count;
    END LOOP;
    END LOOP;
END;

/

--从top看CPU很忙。

Tasks: 123 total,   2 running, 121 sleeping,   0 stopped,   0 zombie
Cpu(s): 25.0% us,  0.2% sy,  0.0% ni, 74.7% id,  0.2% wa,  0.0% hi,  0.0% si
Mem:   4045276k total,  3892552k used,   152724k free,   118700k buffers
Swap:  3911788k total,     1428k used,  3910360k free,  3149860k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 8957 oracle11  25   0 1755m 119m 116m R 99.9  3.0   4:25.10 oracle

--查看等待事件.

SQL> select sid,event from v$session_wait where sid=191
      SID EVENT                                                           
---------- ------------------------
       191 library cache: mutex X                                          
1 row selected.
SQL> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
      2349

--最大就是这个,估计我共享池设置太小,无法达到作者的测试要求。
SQL> show sga

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size            1174407280 bytes
Database Buffers          419430400 bytes
Redo Buffers                7360512 bytes

摘抄一段:
http://www.antognini.ch/2012/10/how-many-children-can-a-parent-cursor-have-1000000/
    The most interesting part is the one providing the number of child cursors: 65536.

    I might be wrong but to me that means that the child number is stored as an unsigned integer taking 16 bits. And, when the maximum is exceeded, an ORA-00600 is raised.

    According to this test the maximum number of child cursors for a given parent cursor is 65536. But, as already written,the fix for bug# 10187168 artificially limits it to 100.

时间: 2024-10-10 14:20:23

[20130104]oracle能有多少子光标.txt的相关文章

[20160201]db_link与子光标问题.txt

[20160201]db_link与子光标问题.txt --生产系统遇到一个关于db_link产生大量子光标问题,当cursor_sharing=force的情况下,通过测试说明. --注:这个问题我的测试仅仅存在10.2.0.4,11.2.0.4没有这个问题. 1.环境: SCOTT@test> @&r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -----

[20120421] cursor_sharing=similar和子光标问题.txt

[20120421] cursor_sharing=similar和子光标问题.txt 如果设置cursor_sharing=similar如果存在直方图会产生大量子光标,11GR2的新特性ACS可以很好的解决问题.自己做一些测试说明cursor_sharing=similar产生大量子光标的问题. SQL> select * from v$version; BANNER --------------------------------------------------------------

[20160811]dbms_shared_pool清除子光标.txt

[20160811]dbms_shared_pool清除子光标.txt --工作需要,看了一下使用dbms_shared_pool包的purge清除子光标.顺便做一些细节测试看看: 1.环境与说明: SCOTT@test01p> @ ver1 PORT_STRING                    VERSION        BANNER                                                                            

[20160215]超长sql语句与父子光标.txt

[20160215]超长sql语句与父子光标.txt --看<oracle内核技术揭秘>提到sql语句不会进入保留池, 要进入保留池,chunk的大小必须大于_shared_pool_reserved_min_alloc. --而实际上许多sql语句一般最大4096字节.而且这些内存分配的原则是首先从共享池分配,不行并且大于 --shared_pool_reserved_min_alloc才会从保留池申请. --作者视乎忘记一种特殊情况就是超长sql语句,这样父游标保存sql的语句chunk可

[20121025]1条记录会有多少row pieces.txt

[20121025]1条记录会有多少row pieces.txt jonathan lewis出了一道题目Quiz,参考这个链接: http://jonathanlewis.wordpress.com/2012/03/30/quiz-night-17/ create table t1 (         col000  number(1),         col001  number(1),         col002  number(1), ...         col997  numb

mysql-java里面怎么将oracle中的表存到txt文档中

问题描述 java里面怎么将oracle中的表存到txt文档中 通过java连接上数据库以后.怎么讲数据库中的整张表通过流写入到txt文档中.具体用那个流,请大神写下详细代码.谢谢 解决方案 http://download.csdn.net/detail/ceolaoda/8961205 解决方案二: 先获取数据库数据,然后创建对应路径下的txt文件,然后写入对应的数据字符串. 创建类然后在里面写如下方法测试: //操作一:向文件里面写入数据 //方法一. // FileWriter fw =

[20170310]oracle内部时间戳的转换.txt

[20170310]oracle内部时间戳的转换.txt --//昨天验证v$archived_log.stamp时,链接如下http://blog.itpub.net/267265/viewspace-2135044/,才发现自己以前犯了严重错误. --//想起http://www.juliandyke.com/Diagnostics/Dumps/RedoLogs.php转储redo时time参数使用: TIME The minimum and maximum time is a decima

[20151110]oracle可以启用多少role.txt

[20151110]oracle可以启用多少role.txt --链接http://blog.itpub.net/4227/viewspace-676078/ Oracle在启用用户的角色时,最多允许启用148个. 其实这个限制比较奇怪,因为148与2的幂相差较大,不知道Oracle出于什么原因确定的这个值: BEGIN FOR I IN 1..148 LOOP EXECUTE IMMEDIATE 'CREATE ROLE R_' || I; END LOOP; END; / CREATE RO

[20140424]oracle的逻辑坏块.txt

[20140424]oracle的逻辑坏块.txt 今天上午本来想做一个11GR2的Automatic block media repair,链接如下:http://blog.itpub.net/267265/viewspace-1148315/ 但是我遇到一个奇怪的问题,检查和的计算问题: SYS@test> @ver BANNER --------------------------------------------------------------------------------