[20180914]oracle 12c 表 full_hash_value如何計算.txt

来源:https://www.cnblogs.com/lfree/archive/2018/09/14/9649165.html
-Advertisement-
Play Games

[20180914]oracle 12c 表 full_hash_value如何計算.txt--//昨天在12c下看表full_hash_value與11g的full_hash_value不同,不過12c使用pdb,猜測跟PDB有關.--//通過測試說明問題.1.環境:SCOTT@book> @ & ...


[20180914]oracle 12c 表 full_hash_value如何計算.txt

--//昨天在12c下看表full_hash_value與11g的full_hash_value不同,不過12c使用pdb,猜測跟PDB有關.
--//通過測試說明問題.

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> select owner,name,namespace,type,hash_value,full_hash_value from V$DB_OBJECT_CACHE where owner='SCOTT' and name='EMP';
OWNER  NAME NAMESPACE       TYPE  HASH_VALUE FULL_HASH_VALUE
------ ---- --------------- ----- ---------- --------------------------------
SCOTT  EMP  TABLE/PROCEDURE TABLE 3800164305 684ea11e3eab602b778e1dd1e281e7d1

--//以上11g的結果.
$ echo -e -n "EMP.SCOTT\01\0\0\0" | md5sum |sed 's/  -//' | xxd -r -p | od -t x4 | sed  -n  -e 's/^0000000 //' -e 's/ //gp'
684ea11e3eab602b778e1dd1e281e7d1

2.而在12c下:

SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SCOTT@test01p> select owner,name,namespace,type,hash_value,full_hash_value,con_id,con_name from V$DB_OBJECT_CACHE where owner='SCOTT' and name='EMP';
OWNER                NAME                 NAMESPACE            TYPE                 HASH_VALUE FULL_HASH_VALUE                      CON_ID CON_NAME
-------------------- -------------------- -------------------- -------------------- ---------- -------------------------------- ---------- --------------------
SCOTT                EMP                  TABLE/PROCEDURE      TABLE                1676251406 5675b61ea54d0cd0370c43ab63e9910e          3 TEST01P

--//對比前面可以發現FULL_HASH_VALUE不一樣,也很容易猜測12c 的FULL_HASH_VALUE計算加入CON_NAME的內容.
D:\tools\rlwrap>D:\tools\linux\usr\local\wbin\echo -e -n "EMP.SCOTT.TEST01P\01\0\0\0" | md5sum |sed "s/  -//" | D:\tools\Vim\vim80\xxd -r -p | od -t x4 | sed  -n  -e "s/^0000000 //" -e "s/ //gp"
5675b61ea54d0cd0370c43ab63e9910e

--//OK,能對上.
--//註:windows要安裝unxutil包.echo不能使用windows下的echo.必須使用ubxutil包的echo(該命令支持-n -e參數)
--//sed 命令格式要使用雙引號.
--//我個人還使用vim自帶的xxd.

--//可以發現12c計算表的full_hash_value是 計算table_name.owner_name.con_name\01\0\0\0的md5sum值.

3.從以上測試可以聯想到的問題就是後面都是補"\01\0\0\0",為什麼呢?
--//很容易聯想到namespace

SYS@test> select distinct kglhdnsp,kglhdnsd,kglobtyd from x$kglob order by 1;
KGLHDNSP KGLHDNSD                       KGLOBTYD
-------- ------------------------------ -------------------
       0 SQL AREA                       CURSOR
       1 TABLE/PROCEDURE                CURSOR
       1 TABLE/PROCEDURE                FUNCTION
       1 TABLE/PROCEDURE                LIBRARY
       1 TABLE/PROCEDURE                OPERATOR
       1 TABLE/PROCEDURE                PACKAGE
       1 TABLE/PROCEDURE                PROCEDURE
       1 TABLE/PROCEDURE                SCHEDULER CLASS
       1 TABLE/PROCEDURE                SCHEDULER JOB
       1 TABLE/PROCEDURE                SCHEDULER PROGRAM
       1 TABLE/PROCEDURE                SCHEDULER SCHEDULE
       1 TABLE/PROCEDURE                SCHEDULER WINDOW
       1 TABLE/PROCEDURE                SEQUENCE
       1 TABLE/PROCEDURE                SYNONYM
       1 TABLE/PROCEDURE                TABLE
       1 TABLE/PROCEDURE                TYPE
       1 TABLE/PROCEDURE                VIEW
       2 BODY                           CURSOR
       2 BODY                           PACKAGE BODY
       3 TRIGGER                        TRIGGER
       4 INDEX                          INDEX
       5 CLUSTER                        CLUSTER
       5 CLUSTER                        CURSOR
      10 QUEUE                          QUEUE
      18 PUB SUB INTERNAL INFORMATION   PUB SUB INTERNAL INFORMATION
      23 RULESET                        RULESET
      24 RESOURCE MANAGER               RESOURCE MANAGER CONSUMER GROUP
      24 RESOURCE MANAGER               RESOURCE MANAGER PLAN
      28 SUBSCRIPTION                   SUBSCRIPTION
      38 RULE EVALUATION CONTEXT        RULE EVALUATION CONTEXT
      45 MULTI-VERSION OBJECT FOR TABLE CURSOR
      45 MULTI-VERSION OBJECT FOR TABLE MULTI-VERSIONED OBJECT
      48 MULTI-VERSION OBJECT FOR INDEX CURSOR
      48 MULTI-VERSION OBJECT FOR INDEX MULTI-VERSIONED OBJECT
      51 SCHEDULER GLOBAL ATTRIBUTE     CURSOR
      51 SCHEDULER GLOBAL ATTRIBUTE     SCHEDULER GLOBAL ATTRIBUTE
      52 RESOURCE MANAGER CDB           RESOURCE MANAGER CDB PLAN
      64 EDITION                        EDITION
      69 DBLINK                         CURSOR
      72 OBJECT ID                      OBJECT ID
      73 SCHEMA                         CURSOR
      73 SCHEMA                         NONE
      74 DBINSTANCE                     CURSOR
      75 SQL AREA STATS                 CURSOR STATS
      79 ACCOUNT_STATUS                 NONE
      82 SQL AREA BUILD                 CURSOR
      88 PDB                            CURSOR
      88 PDB                            PDB
      93 AUDIT POLICY                   AUDIT POLICY
     103 OPTIMIZER FINDING              Optimizer Finding
     104 OPTIMIZER DIRECTIVE OWNER      CURSOR
     104 OPTIMIZER DIRECTIVE OWNER      Optimizer Directive Owner
     113 GTT SESSION PRIVATE STATS      CURSOR
     125 PDBOPER                        CURSOR
54 rows selected.

--//比如你就不能建立emp的sequence.
SCOTT@test01p> create sequence emp cache 100;
create sequence emp cache 100
                *
ERROR at line 1:
ORA-00955: name is already used by an existing object

4.SQL語句的full_hash_value(sql_id)計算還是和以前一樣計算 sql文本\0(不包括分號) md5sum值.
--//這樣帶來一個問題,就是如果不同pdb下的語句如果一樣,由於文本內容一樣,這樣計算的sql_id一樣,導致出現大量子游標.



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

-Advertisement-
Play Games
更多相關文章
  • 初次接觸分散式文件系統,有很多迷惑。通過參考網路文章,這裡進行對比一下Hadoop 分散式文件系統(HDFS)與 傳統文件系統之間的關係: inode 記錄文件存放的數據區的block指針 每個磁碟都有預設的數據塊大小,這是磁碟進行數據讀/寫的最小單位。而構建於單個磁碟之上的文件系統(linux文件 ...
  • 使用場景: 有時候線上伺服器掛了,或者一些數據推送不正常,一般來說我們需要做的就是將項目重啟運行,或者檢查核對出問題的位置,來快速解決,很多時候我們不得不登上伺服器來查看,這個對於目前工作日益繁忙的我們是一個不小的工作量,所以在此分享大家在linux中做定時任務 環境:在linux或者mac os系 ...
  • 使用場景:前段時間交易所項目需要在伺服器上用到 根據websocket推送價格數據,在交易所內進行下單撤單處理,但是由於有多個交易對,在伺服器上部署時候,略顯繁瑣。(撮合引擎同樣有此問題,可以一併解決) 1:shell使用:在git項目後,這裡每個交易對單獨配一個文件,負責各自的交易處理,此處做項目 ...
  • 接著上文 "IO多路復用(一) Select、Poll、Epoll" ,接下來將演示一個TCP回射程式,源代碼來自於該博文https://www.cnblogs.com/Anker/p/3258674.html 博主的幾篇相關的文章,在這裡將其進行了整合,突出select、poll和epoll不同方 ...
  • Unix標準的複製進程的系統調用時fork(即分叉),但是Linux,BSD等操作系統並不止實現這一個,確切的說linux實現了三個,fork,vfork,clone(確切說vfork創造出來的是輕量級進程,也叫線程,是共用資源的進程) 系統調用 | 描述 | fork | fork創造的子進程是父 ...
  • phpmyadmin 下載、安裝、配置 2017年05月05日 15:52:39 wodecc_u 閱讀數:14363 標簽: phpmyadmin 更多 個人分類: 環境配置 phpmyadmin 下載、安裝、配置 phpmyadmin 下載、安裝、配置 2017年05月05日 15:52:39 ...
  • explain為mysql提供語句的執行計劃信息。可以應用在select、delete、insert、update和place語句上。explain的執行計劃,只是作為語句執行過程的一個參考,實際執行的過程不一定和計劃完全一致,但是執行計劃中透露出的訊息卻可以幫助選擇更好的索引和寫出更優化的查詢語句... ...
  • 1. 查詢某存儲過程的訪問情況 SELECT TOP 1000 db_name(d.database_id) as DBName, s.name as 存儲名字, s.type_desc as 存儲類型, d.cached_time as SP添加到緩存的時間, d.last_execution_t ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...