[20171120]11G關閉直接路徑讀.txt

来源:http://www.cnblogs.com/lfree/archive/2017/11/20/7865614.html
-Advertisement-
Play Games

[20171120]11G關閉直接路徑讀.txt--//今天做filesystemio_options參數測試時,遇到一個關於直接路徑讀的問題.--//如果看以前的博客介紹,設置"_serial_direct_read"=never或者events '10949 trace name context ...


[20171120]11G關閉直接路徑讀.txt

--//今天做filesystemio_options參數測試時,遇到一個關於直接路徑讀的問題.
--//如果看以前的博客介紹,設置"_serial_direct_read"=never或者events '10949 trace name context forever';就可以關閉直接路徑讀.

--//我的測試在11GR2下set events '10949 trace name context forever';不行.
--//通過例子來說明問題

1.環境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> create table t as select rownum id from dual connect by level<=2;
Table created.

SCOTT@book> ALTER TABLE t MINIMIZE RECORDS_PER_BLOCK ;
Table altered.
--//這樣可以實現每塊2條記錄.

SCOTT@book> insert into t select rownum+2 from dual connect by level <=64000-2;
63998 rows created.

SCOTT@book> commit ;
Commit complete.

insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
commit ;

--//分析表略.

SCOTT@book> select OWNER,SEGMENT_NAME,SEGMENT_TYPE,HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS from dba_segments where owner=user and segment_name='T';
OWNER  SEGMENT_NAME         SEGMENT_TYPE       HEADER_FILE HEADER_BLOCK      BYTES     BLOCKS
------ -------------------- ------------------ ----------- ------------ ---------- ----------
SCOTT  T                    TABLE                        4          546 2153775104     262912

--//占用2153775104/1024/1024=2054M,262912塊.

SCOTT@book> select object_id,data_object_id from dba_objects where owner=user and object_name='T';
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
     90702          90702

2.測試1:
SCOTT@book> alter system flush buffer_cache;
System altered.
    
SCOTT@book> select count(*) from v$bh where OBJD=90702 and STATUS<>'free';
  COUNT(*)
----------
         0

SCOTT@book> select count(*) from t ;
  COUNT(*)
----------
    512000

SCOTT@book> @ &r/dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  45vdc2q5hs1f3, child number 1
-------------------------------------
select count(*) from t
Plan hash value: 2966233522
----------------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name | Starts | E-Rows | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |      1 |        | 71059 (100)|          |      1 |00:00:01.24 |     256K|    256K|
|   1 |  SORT AGGREGATE    |      |      1 |      1 |            |          |      1 |00:00:01.24 |     256K|    256K|
|   2 |   TABLE ACCESS FULL| T    |      1 |    512K| 71059   (1)| 00:14:13 |    512K|00:00:01.21 |     256K|    256K|
----------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1
   2 - SEL$1 / T@SEL$1

SCOTT@book> select count(*) from v$bh where OBJD=90702 and STATUS<>'free';
  COUNT(*)
----------
        11
   
--//看reads=256K,僅僅緩存11塊就能確定問題.現在是直接路徑讀.執行多次看執行依舊.

SCOTT@book> @ &r/viewsess "physical reads direct"
NAME                                       STATISTIC#      VALUE        SID
------------------------------------------ ---------- ---------- ----------
physical reads direct                              97     256064        274
physical reads direct temporary tablespace        110          0        274
physical reads direct (lob)                       176          0        274

3.測試set events '10949 trace name context forever';

SCOTT@book> host oerr ora 10949
10949, 00000, "Disable autotune direct path read for full table scan"
// *Cause:
// *Action:  Disable autotune direct path read for serial full table scan.
--//按照介紹應該這個也可以.

SCOTT@book> alter session set events '10949 trace name context forever';
Session altered.

SCOTT@book> alter session set statistics_level=all ;
Session altered.

SCOTT@book> alter system flush buffer_cache;
System altered.

SCOTT@book> select count(*) from v$bh where OBJD=90702 and STATUS<>'free';
  COUNT(*)
----------
         0
SCOTT@book> select count(*) from t ;
  COUNT(*)
----------
    512000

SCOTT@book> @ &r/dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  45vdc2q5hs1f3, child number 1
-------------------------------------
select count(*) from t
Plan hash value: 2966233522
----------------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name | Starts | E-Rows | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |      1 |        | 71059 (100)|          |      1 |00:00:00.71 |     256K|    256K|
|   1 |  SORT AGGREGATE    |      |      1 |      1 |            |          |      1 |00:00:00.71 |     256K|    256K|
|   2 |   TABLE ACCESS FULL| T    |      1 |    512K| 71059   (1)| 00:14:13 |    512K|00:00:00.69 |     256K|    256K|
----------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1
   2 - SEL$1 / T@SEL$1
20 rows selected.

SCOTT@book> @ &r/viewsess "physical reads direct"
NAME                                       STATISTIC#      VALUE        SID
------------------------------------------ ---------- ---------- ----------
physical reads direct                              97     256064        274
physical reads direct temporary tablespace        110          0        274
physical reads direct (lob)                       176          0        274

SCOTT@book> select count(*) from v$bh where OBJD=90702 and STATUS<>'free';
  COUNT(*)
----------
        11

--//看reads=256K,僅僅緩存11塊就能確定問題.現在是直接路徑讀.執行多次看執行依舊.
--//說明設置set events '10949 trace name context forever';無法關閉直接路徑讀.

4.設置"_serial_direct_read"=never;

SCOTT@book> alter session set "_serial_direct_read"=never;
Session altered.

SCOTT@book> alter session set statistics_level=all ;
Session altered.

SCOTT@book> alter system flush buffer_cache;
System altered.

SCOTT@book> select count(*) from v$bh where OBJD=90702 and STATUS<>'free';
  COUNT(*)
----------
         0
SCOTT@book> select count(*) from v$bh where OBJD=90702 and STATUS<>'free';

  COUNT(*)
----------
         0

SCOTT@book> select count(*) from t ;
  COUNT(*)
----------
    512000

SCOTT@book> @ &r/dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  45vdc2q5hs1f3, child number 1
-------------------------------------
select count(*) from t
Plan hash value: 2966233522
----------------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name | Starts | E-Rows | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |      1 |        | 71059 (100)|          |      1 |00:00:01.80 |     256K|    256K|
|   1 |  SORT AGGREGATE    |      |      1 |      1 |            |          |      1 |00:00:01.80 |     256K|    256K|
|   2 |   TABLE ACCESS FULL| T    |      1 |    512K| 71059   (1)| 00:14:13 |    512K|00:00:01.78 |     256K|    256K|
----------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1
   2 - SEL$1 / T@SEL$1

SCOTT@book> @ &r/viewsess "physical reads direct"
NAME                                                                   STATISTIC#      VALUE        SID
---------------------------------------------------------------------- ---------- ---------- ----------
physical reads direct                                                          97          0        274
physical reads direct temporary tablespace                                    110          0        274
physical reads direct (lob)                                                   176          0        274
--//直接路徑讀為0

SCOTT@book> select count(*) from v$bh where OBJD=90702 and STATUS<>'free';
  COUNT(*)
----------
     49959

--//已經緩存了49959塊.多次執行如下語句:

SCOTT@book> select count(*) from t ;
  COUNT(*)
----------
    512000

SCOTT@book> @ &r/dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  45vdc2q5hs1f3, child number 1
-------------------------------------
select count(*) from t
Plan hash value: 2966233522
----------------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name | Starts | E-Rows | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |      1 |        | 71059 (100)|          |      1 |00:00:01.37 |     256K|    217K|
|   1 |  SORT AGGREGATE    |      |      1 |      1 |            |          |      1 |00:00:01.37 |     256K|    217K|
|   2 |   TABLE ACCESS FULL| T    |      1 |    512K| 71059   (1)| 00:14:13 |    512K|00:00:01.35 |     256K|    217K|
----------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1
   2 - SEL$1 / T@SEL$1
20 rows selected.

--//你可以發現讀的數量降到了217K塊.

總結:
--//測試一定要註意一些oracle版本的變化,一些參數可能隨著版本的變化發生變化.
--//這也是我為什麼每次寫blog都指明我當前的使用版本.
--//關閉直接路徑讀alter session set "_serial_direct_read"=never;對於11GR2才有效.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Android 如何將手機屏幕投影到 PC 屏幕上或者投影儀上做演示? 公司開發款APP,要給領導演示,總不能用手機面對面演示吧。所以找了好久,找到一款體驗超好的: Total Control-幫助你使用電控制手機(自行下載,精簡版免費)。 其實這個軟體主要是用來用電腦來操控手機屏幕的,功能強大,也 ...
  • 隨著二手車交易市場呈爆髮式增長,二手車估值需要詳細瞭解車輛的狀況和維修歷史,車架號/vin碼是車輛唯一的身份標識,也是瞭解二手車車況的入口。手機掃描vin碼識別技術給車輛估值平臺提供了便捷的查詢入口,通過構建車況自動化查詢平臺,滿足車商隨時隨地查詢車況的需求。技術交流:187 016 868 57 ...
  • 效果如圖,很常見的一種佈局方式,只是沒有採用radiobutton,方法都很多,很多人都自定義寫在一個view裡面,不過代碼量偏大,所以還是xml寫吧 這樣寫下來感覺代碼量還是挺少的,而且很好擴展,然後在點擊的時候加了個回彈動畫,頓時體驗好多了 public class MainActivity e ...
  • 你全量發佈了一個新版本應用,怎麼在商戶的大面積投訴之前,率先發現閃退趨勢呢? 如果商戶投訴設備運行緩慢,你怎麼分析性能瓶頸呢?坐高鐵到現場嗎? ...
  • [20171120]關於INBOUND_CONNECT_TIMEOUT設置.txt--//上午翻看以前我的發的帖子,發現鏈接:http://www.itpub.net/thread-2066758-1-1.html--//今天再仔細看了一下,註意看了一下別人的回覆,才發現一些細節問題,原始鏈接:-- ...
  • 1.數值四捨五入,小數點後保留2位 round() 函數是四捨五入用,第一個參數是我們要被操作的數據,第二個參數是設置我們四捨五入之後小數點後顯示幾位。 numeric 函數的2個參數,第一個表示數據長度,第二個參數表示小數點後位數。 示例如下: ...
  • 環境描述:主redis:192.168.10.1 6379從redis:192.168.10.2 6380 一、主從配置 1、將主從redis配置文件redis.conf中的aemonize no 改為 yes 2、修改從redis配置文件redis.conf中的port 6379 改為 6380, ...
  • 一、Redis的誕生 Redis創建者,出生於西西里島的義大利人(antirez)發明的,個人網站,http://invece.org。早年是系統管理員,2004-2006 年做嵌入式方面的工作,之後接觸 WEB,2007 年和朋友共同創建了一個網站 LLOOGG.com,併為瞭解決這個網站的負載問 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...