[20211112]SYS_CONTEXT ('USERENV','DBID').txt
[20211112]SYS_CONTEXT ('USERENV','DBID').txt
--//昨天看了華為監控執行sql語句,我發現一個規律,就是謂詞條件經常出現:
WHERE INSTANCE_NUMBER IN (SELECT instance_number FROM v$INSTANCE)
AND DBID IN (SELECT DBID FROM v$database)
--//也就是instance_number,DBID 透過兩個檢視v$INSTANCE,v$database,實際上應該儘量規避這樣的讀取模式。
--//也許程式設計讀一次獲取dbid,instance_number 然後儲存在變數裡面使用引數。
--//突然想起應該利用SYS_CONTEXT 函式取這樣更加科學,如果能支援獲取dbif可以規避對v$database的訪問,實際上就是減少對控制文
--//件的訪問。實際上對於檔案型資料庫可能影響並不大,OS有快取功能,而對於asm型別的資料庫,每次都是一次"硬讀"控制檔案。可
--//以大大減少對控制檔案的訪問。
SYS@127.0.0.1:17101/dyhis> select SYS_CONTEXT ('USERENV','INSTANCE') c10 from dual ;
C10
----------
1
--//我看oracle官方手冊,我發現沒有對應讀取DBID的函式,感覺有點奇怪,總覺應該有1個函式讀取DBID。
--//嘗試使用SYS_CONTEXT ('USERENV','DBID') 居然可以。我測試一下18c,19c版本都可以。
SYS@127.0.0.1:17101/dyhis> select SYS_CONTEXT ('USERENV','DBID') c10 ,dbid from v$database ;
C10 DBID
---------- ----------
34857349 34857349
--//唯獨缺點就是讀取的返回結果是字元型別,不過直接使用不會存在隱式轉化,dbid,instance_number都是number型別。
--//當然要對方修改不現實的,畢竟要保持程式碼的通用性。當然我覺得修改INSTANCE_NUMBER=SYS_CONTEXT ('USERENV','INSTANCE')
--//還是可行的,減少一些對X$表的訪問。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2842119/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20190423]簡單測試user和SYS_CONTEXT ('USERENV','CURRENT_USER').txtContext
- [20200407]nid修改DBID還原.txt
- [20181116]SYS_CONTEXT函式的使用(12c).txtContext函式
- 7.55 CON_DBID_TO_ID
- sys_context函式的用法Context函式
- sys_context 獲取環境上下文的函式Context函式
- RMAN備份恢復典型案例——異機恢復未知DBID
- Oracle rac使用nid和dbms_backup_restore包修改dbid和dbnameOracleREST
- [20210106]vim syntax txt.vim.txt
- [20230323]sqlplus #.txtSQL
- [20181203]bash here $.txt
- [20180930]bash shell &.txt
- [20180810]gpnptool.txt
- [20201002]Tcpdumpsql.txtTCPSQL
- [20191216]route妙用.txt
- [20201119]rowsets.txt
- python如何匹配txtPython
- [20210318]bash test (( )) [[ ]].txt
- txt是什麼格式的檔案 txt格式怎麼弄出來
- php如何上傳txt檔案,並且讀取txt檔案PHP
- [20180829]ora-00054.txt
- JPG轉TXT的教程
- [20190404]parse call.txt
- [20190306]Disabled EZCONNECT.txt
- [20190312]bash IFS例子.txt
- [20180907]insert+with+select.txt
- [20180826]GUID做主鍵.txtGUI
- [20180510]20 Indexes.txtIndex
- [20180507]FBI Limitation.txtMIT
- [20180502]ORA-01580.txt
- [20180619]oradebug peek.txt
- [20180927]ora-01426.txt
- [20180808]exists and not exists.txt
- [20180702]物件名重用.txt物件
- CMakeLists.txt --- install使用
- [20230514]basename dirname命令.txt
- [20231225]Descending Bug.txt
- [20200302]startup dba.txt