Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

54

积分

0

好友

0

主题
1#
发表于 2012-6-23 23:59:45 | 查看: 7670| 回复: 4
SYS@orcl>select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

parameter set as :
SYS@orcl>sho parameter cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
client_result_cache_size             big integer 0
db_16k_cache_size                    big integer 80M
db_2k_cache_size                     big integer 0
db_32k_cache_size                    big integer 0
db_4k_cache_size                     big integer 0
db_8k_cache_size                     big integer 0
db_cache_size                        big integer 160M
db_flash_cache_size                  big integer 0
db_keep_cache_size                   big integer 128M
db_recycle_cache_size                big integer 0

SYS@orcl>create table dna.t2 storage(buffer_pool keep) as select level id ,rpad('*',4000,'*') data from dual connect by
level<=15000;

表已创建。

SYS@orcl>select count(*) from dna.t2;

  COUNT(*)
----------
     15000

SYS@orcl>set autotrace traceonly
SYS@orcl>select count(*) from dna.t2;


执行计划
----------------------------------------------------------
Plan hash value: 3321871023

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |  4116   (1)| 00:00:50 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T2   | 16126 |  4116   (1)| 00:00:50 |
-------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement (level=2)


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      15004  consistent gets
      15000  physical reads
          0  redo size
        528  bytes sent via SQL*Net to client
        519  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SYS@orcl>select count(*) from dna.t2;


执行计划
----------------------------------------------------------
Plan hash value: 3321871023

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |  4116   (1)| 00:00:50 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T2   | 16126 |  4116   (1)| 00:00:50 |
-------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement (level=2)


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      15004  consistent gets
      15000  physical reads
          0  redo size
        528  bytes sent via SQL*Net to client
        519  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
为什么会出现大量的physical reads现象,难道此存在于The KEEP buffer pool中的表,应该不会出现此现象?

本人通过测试
QQ截图20120623235622.jpg

select * from dba_segments where buffer_pool='KEEP';
qqq.jpg

也发现表确实在The KEEP buffer pool中
5#
发表于 2012-12-25 17:12:29
学习了

回复 只看该作者 道具 举报

4#
发表于 2012-12-22 22:49:33
ML v5,学习了 。。。。。。。。。。。。。

回复 只看该作者 道具 举报

3#
发表于 2012-6-24 12:54:27
ML威武。学习了。

回复 只看该作者 道具 举报

2#
发表于 2012-6-24 12:38:50
ODM TEST:
  1. SQL>
  2. SQL> select * from v$version;

  3. BANNER
  4. --------------------------------------------------------------------------------
  5. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  6. PL/SQL Release 11.2.0.3.0 - Production
  7. CORE    11.2.0.3.0      Production
  8. TNS for Linux: Version 11.2.0.3.0 - Production
  9. NLSRTL Version 11.2.0.3.0 - Production



  10. SQL> show parameter db_keep

  11. NAME                                 TYPE                             VALUE
  12. ------------------------------------ -------------------------------- ------------------------------
  13. db_keep_cache_size                   big integer                      128M


  14. SQL> create table maclean_tan2 storage(buffer_pool keep) as select level id ,rpad('*',4000,'*') data from dual connect by
  15.   2  level<=15000;

  16. Table created.



  17. SQL>  select count(*) from maclean_tan2;

  18.   COUNT(*)
  19. ----------
  20.      15000


  21. Execution Plan
  22. ----------------------------------------------------------
  23. Plan hash value: 1229461046

  24. ---------------------------------------------------------------------------
  25. | Id  | Operation          | Name         | Rows  | Cost (%CPU)| Time     |
  26. ---------------------------------------------------------------------------
  27. |   0 | SELECT STATEMENT   |              |     1 |  4069   (1)| 00:00:49 |
  28. |   1 |  SORT AGGREGATE    |              |     1 |            |          |
  29. |   2 |   TABLE ACCESS FULL| MACLEAN_TAN2 | 15476 |  4069   (1)| 00:00:49 |
  30. ---------------------------------------------------------------------------

  31. Note
  32. -----
  33.    - dynamic sampling used for this statement (level=2)


  34. Statistics
  35. ----------------------------------------------------------
  36.           4  recursive calls
  37.           0  db block gets
  38.       15081  consistent gets
  39.       15000  physical reads
  40.           0  redo size
  41.         527  bytes sent via SQL*Net to client
  42.         523  bytes received via SQL*Net from client
  43.           2  SQL*Net roundtrips to/from client
  44.           0  sorts (memory)
  45.           0  sorts (disk)
  46.           1  rows processed
  47.                   
  48.                   
  49. SQL> select count(*) from maclean_tan2;

  50.   COUNT(*)
  51. ----------
  52.      15000


  53. Execution Plan
  54. ----------------------------------------------------------
  55. Plan hash value: 1229461046

  56. ---------------------------------------------------------------------------
  57. | Id  | Operation          | Name         | Rows  | Cost (%CPU)| Time     |
  58. ---------------------------------------------------------------------------
  59. |   0 | SELECT STATEMENT   |              |     1 |  4069   (1)| 00:00:49 |
  60. |   1 |  SORT AGGREGATE    |              |     1 |            |          |
  61. |   2 |   TABLE ACCESS FULL| MACLEAN_TAN2 | 15476 |  4069   (1)| 00:00:49 |
  62. ---------------------------------------------------------------------------

  63. Note
  64. -----
  65.    - dynamic sampling used for this statement (level=2)


  66. Statistics
  67. ----------------------------------------------------------
  68.           0  recursive calls
  69.           0  db block gets
  70.       15004  consistent gets
  71.       15000  physical reads
  72.           0  redo size
  73.         527  bytes sent via SQL*Net to client
  74.         523  bytes received via SQL*Net from client
  75.           2  SQL*Net roundtrips to/from client
  76.           0  sorts (memory)
  77.           0  sorts (disk)
  78.           1  rows processed


  79. SQL> alter session set events '10046 trace name context forever,level 8';

  80. Session altered.

  81. SQL> select count(*) from maclean_tan2;

  82.   COUNT(*)
  83. ----------
  84.      15000
  85.          
  86. SQL> oradebug setmypid;
  87. Statement processed.
  88. SQL> oradebug tracefile_name
  89. /s01/orabase/diag/rdbms/vprod/VPROD1/trace/VPROD1_ora_29876.trc         



  90. PARSING IN CURSOR #140118795641360 len=33 dep=0 uid=0 oct=3 lid=0 tim=1340511245212199 hv=486583032 ad='76883110' sqlid='drryzcwfh1ars'
  91. select count(*) from maclean_tan2
  92. END OF STMT
  93. PARSE #140118795641360:c=6000,e=35195,p=0,cr=77,cu=0,mis=1,r=0,dep=0,og=1,plh=1229461046,tim=1340511245212192
  94. EXEC #140118795641360:c=0,e=54,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1229461046,tim=1340511245212328
  95. WAIT #140118795641360: nam='SQL*Net message to client' ela= 13 driver id=1650815232 #bytes=1 p3=0 obj#=79780 tim=1340511245212395
  96. WAIT #140118795641360: nam='asynch descriptor resize' ela= 11 outstanding #aio=0 current aio limit=235 new aio limit=265 obj#=79780 tim=1340511245214369
  97. WAIT #140118795641360: nam='direct path read' ela= 140 file number=1 first dba=200555 block cnt=1 obj#=79780 tim=1340511245276928
  98. WAIT #140118795641360: nam='direct path read' ela= 124 file number=1 first dba=200683 block cnt=1 obj#=79780 tim=1340511245294008
  99. WAIT #140118795641360: nam='direct path read' ela= 126 file number=1 first dba=201707 block cnt=1 obj#=79780 tim=1340511245425743
  100. WAIT #140118795641360: nam='direct path read' ela= 170 file number=1 first dba=201835 block cnt=1 obj#=79780 tim=1340511245454308
  101. WAIT #140118795641360: nam='direct path read' ela= 126 file number=1 first dba=201963 block cnt=1 obj#=79780 tim=1340511245472445
  102. WAIT #140118795641360: nam='direct path read' ela= 113 file number=1 first dba=202091 block cnt=1 obj#=79780 tim=1340511245488926
  103. WAIT #140118795641360: nam='direct path read' ela= 116 file number=1 first dba=202219 block cnt=1 obj#=79780 tim=1340511245505475
  104. WAIT #140118795641360: nam='direct path read' ela= 116 file number=1 first dba=202475 block cnt=1 obj#=79780 tim=1340511245539057
  105. WAIT #140118795641360: nam='direct path read' ela= 157 file number=1 first dba=202603 block cnt=1 obj#=79780 tim=1340511245556950
  106. WAIT #140118795641360: nam='direct path read' ela= 31 file number=1 first dba=202987 block cnt=1 obj#=79780 tim=1340511245608673
  107. WAIT #140118795641360: nam='direct path read' ela= 131 file number=1 first dba=203115 block cnt=1 obj#=79780 tim=1340511245624922
  108. WAIT #140118795641360: nam='direct path read' ela= 113 file number=1 first dba=203755 block cnt=1 obj#=79780 tim=1340511245706298
  109. WAIT #140118795641360: nam='direct path read' ela= 28 file number=1 first dba=203883 block cnt=1 obj#=79780 tim=1340511245722656
  110. WAIT #140118795641360: nam='direct path read' ela= 13 file number=1 first dba=204011 block cnt=1 obj#=79780 tim=1340511245738218
  111. WAIT #140118795641360: nam='direct path read' ela= 31 file number=1 first dba=204523 block cnt=1 obj#=79780 tim=1340511245801733


  112. direct path read  而非 db file scattered read

  113. 11g new feature 对于大表 的FULL SCAN 可以直接采用 direct path read   读入PGA 而不经过 buffer cache



  114. ALTER SESSION SET EVENTS '10949 TRACE NAME CONTEXT FOREVER';


  115. 10949 event 可以禁止 11g 的这种特性;

  116. [oracle@vrh1 ~]$ oerr ora 10949
  117. 10949, 00000, "Disable autotune direct path read for full table scan"
  118. // *Cause:
  119. // *Action:  Disable autotune direct path read for serial full table scan.




  120. _small_table_threshold 设置为较大值  避免 optimizer 将这个表视为大表 buffer 被flush


  121. SQL>
  122. SQL> alter session set "_small_table_threshold"=999999;

  123. Session altered.

  124. SQL> ALTER SESSION SET EVENTS '10949 TRACE NAME CONTEXT FOREVER';

  125. Session altered.

  126. SQL> select count(*) from maclean_tan2;

  127.   COUNT(*)
  128. ----------
  129.      15000

  130. SQL> set autotrace on;
  131. SQL> select count(*) from maclean_tan2;

  132.   COUNT(*)
  133. ----------
  134.      15000


  135. Execution Plan
  136. ----------------------------------------------------------
  137. Plan hash value: 1229461046

  138. ---------------------------------------------------------------------------
  139. | Id  | Operation          | Name         | Rows  | Cost (%CPU)| Time     |
  140. ---------------------------------------------------------------------------
  141. |   0 | SELECT STATEMENT   |              |     1 |  4069   (1)| 00:00:49 |
  142. |   1 |  SORT AGGREGATE    |              |     1 |            |          |
  143. |   2 |   TABLE ACCESS FULL| MACLEAN_TAN2 | 15476 |  4069   (1)| 00:00:49 |
  144. ---------------------------------------------------------------------------

  145. Note
  146. -----
  147.    - dynamic sampling used for this statement (level=2)


  148. Statistics
  149. ----------------------------------------------------------
  150.           0  recursive calls
  151.           0  db block gets
  152.       15011  consistent gets
  153.           0  physical reads
  154.           0  redo size
  155.         527  bytes sent via SQL*Net to client
  156.         523  bytes received via SQL*Net from client
  157.           2  SQL*Net roundtrips to/from client
  158.           0  sorts (memory)
  159.           0  sorts (disk)
  160.           1  rows processed


  161. SQL> select count(*) from maclean_tan2;

  162.   COUNT(*)
  163. ----------
  164.      15000


  165. Execution Plan
  166. ----------------------------------------------------------
  167. Plan hash value: 1229461046

  168. ---------------------------------------------------------------------------
  169. | Id  | Operation          | Name         | Rows  | Cost (%CPU)| Time     |
  170. ---------------------------------------------------------------------------
  171. |   0 | SELECT STATEMENT   |              |     1 |  4069   (1)| 00:00:49 |
  172. |   1 |  SORT AGGREGATE    |              |     1 |            |          |
  173. |   2 |   TABLE ACCESS FULL| MACLEAN_TAN2 | 15476 |  4069   (1)| 00:00:49 |
  174. ---------------------------------------------------------------------------

  175. Note
  176. -----
  177.    - dynamic sampling used for this statement (level=2)


  178. Statistics
  179. ----------------------------------------------------------
  180.           0  recursive calls
  181.           0  db block gets
  182.       15011  consistent gets
  183.           0  physical reads
  184.           0  redo size
  185.         527  bytes sent via SQL*Net to client
  186.         523  bytes received via SQL*Net from client
  187.           2  SQL*Net roundtrips to/from client
  188.           0  sorts (memory)
  189.           0  sorts (disk)
  190.           1  rows processed


  191. http://www.oracledatabase12g.com/archives/script-list-buffer-cache-details.html


  192. 参考以上网址的脚本

  193. set pages 999
  194. set lines 92

  195. column c0 heading "Owner"                                    format a12
  196. column c1 heading "Object|Name"                              format a30
  197. column c2 heading "Object|Type"                              format a8
  198. column c3 heading "Number of|Blocks in|Buffer|Cache"         format 99,999,999
  199. column c4 heading "Percentage|of object|blocks in|Buffer"    format 999
  200. column c5 heading "Buffer|Pool"                              format a7
  201. column c6 heading "Block|Size"                               format 99,999

  202. select
  203.    buffer_map.owner                                          c0,
  204.    object_name                                       c1,
  205.    case when object_type = 'TABLE PARTITION' then 'TAB PART'
  206.         when object_type = 'INDEX PARTITION' then 'IDX PART'
  207.         else object_type end c2,
  208.    sum(num_blocks)                                     c3,
  209.    (sum(num_blocks)/greatest(sum(blocks), .001))*100 c4,
  210.    buffer_pool                                       c5,
  211.    sum(bytes)/sum(blocks)                            c6
  212. from
  213.    buffer_map,
  214.    dba_segments s
  215. where
  216.    s.segment_name = buffer_map.object_name
  217. and
  218.    s.owner = buffer_map.owner
  219. and
  220.    s.segment_type = buffer_map.object_type
  221. and
  222.    nvl(s.partition_name,'-') = nvl(buffer_map.subobject_name,'-')
  223. group by
  224.    buffer_map.owner,
  225.    object_name,
  226.    object_type,
  227.    buffer_pool
  228. having
  229.    sum(num_blocks) > 10
  230. order by
  231.    sum(num_blocks) desc
  232. ;

  233.                                                        Number of Percentage
  234.                                                        Blocks in  of object
  235.              Object                         Object        Buffer  blocks in Buffer    Block
  236. Owner        Name                           Type           Cache     Buffer Pool       Size
  237. ------------ ------------------------------ -------- ----------- ---------- ------- -------
  238. SYS          MACLEAN_TAN2                   TABLE         15,001         98 KEEP      8,192
  239. SYS          C_TOID_VERSION#                CLUSTER        1,765         57 DEFAULT   8,192
  240. SYS          C_OBJ#                         CLUSTER        1,428         93 DEFAULT   8,192
  241. SYS          OBJ$                           TABLE            931         91 DEFAULT   8,192
  242. SYS          I_OBJ2                         INDEX            760         99 DEFAULT   8,192
  243. SYS          C_FILE#_BLOCK#                 CLUSTER          198         77 DEFAULT   8,192
  244. SYS          I_FILE#_BLOCK#                 INDEX             40        100 DEFAULT   8,192
  245. SYS          I_OBJ1                         INDEX             37         14 DEFAULT   8,192
  246. SYS          INDPART$                       TABLE             16        100 DEFAULT   8,192
  247. SYS          I_HH_OBJ#_INTCOL#              INDEX             15         12 DEFAULT   8,192
  248. SYS          HIST_HEAD$                     TABLE             15          4 DEFAULT   8,192
  249. SYS          AQ$_SYS$SERVICE_METRICS_TAB_S  TABLE             14         88 DEFAULT   8,192
  250. SYS          C_TS#                          CLUSTER           13         81 DEFAULT   8,192
  251. SYS          I_DEPENDENCY1                  INDEX             13          2 DEFAULT   8,192
  252. SYS          I_ACCESS1                      INDEX             12          2 DEFAULT   8,192

  253. 15 rows selected.







  254. 可以看到 MACLEAN_TAN2 表在 keep buffer pool中的详细信息, 15,001 blocks=  117MB
  255.                   
  256.                   
复制代码

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 06:34 , Processed in 0.054300 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569