表使用的資料塊在事務未提交及提交且強制重新整理緩衝池的block scn及obj變化之系列一
背景
為了瞭解下塊清除及延遲清除的相關概念,故有此文。
結論
1,如果當前DML使用資料塊的事務未提交,且資料塊之前被其它表物件使用過,則資料塊會儲存之前表的資訊這個資訊主要為表的物件seg
2,資料塊只要新表使用了它,且新表產生的事務已提交,即會除掉這前表物件的資訊,或者說新表的事務未提交,舊錶的資訊仍會儲存在資料塊上
3,資料塊的SCN在事務未提交,提交,強制重新整理緩衝池全是一直在變化的
4,而資料塊上面儲存的表物件則只要除掉了舊錶物件後,則無其後其它新表使用這個資料塊,資料塊上面的表物件資訊一直不變
測試思路
測試
資料庫版本建立測試表並插入1條記錄不提交
SQL> create table t_defer(a int);
Table created.
SQL> select object_name,object_id from user_objects where object_name='T_DEFER';
OBJECT_NAME OBJECT_ID
-------------------------------------------------- ----------
T_DEFER 74433
SQL> insert into t_defer values(1);
1 row created.
轉儲資料塊並檢視
--下述測試僅列舉有價值的內容,無關內容不再累述
select DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID),DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) from t_defer;
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------ ------------------------------------
4 98966
SQL> alter session set tracefile_identifier='session1_uncommit';
Session altered.
SQL> alter system dump datafile 4 block 98966;
System altered.
[oracle@seconary ~]$ cd /oracle/diag/rdbms/guowang/guowang/trace/
[oracle@seconary trace]$ ll -l *session1_uncommit*
[oracle@seconary trace]$ more guowang_ora_26519_session1_uncommit.trc|grep 74433
dbwrid: 0 obj: 74433 objn: 74433 tsn: 4 afn: 4 hint: f
資料塊的scn為0x0000.00b3db1a
[oracle@seconary trace]$ more guowang_ora_26519_session1_uncommit.trc|grep scn
scn: 0x0000.00b3db1a seq: 0x01 flg: 0x06 tail: 0xdb1a0601
可見這個資料塊還儲存著表物件t_checkpoint的資訊
[oracle@seconary trace]$ more guowang_ora_26519_session1_uncommit.trc|grep seg
seg/obj: 0x12223 csc: 0x00.b3d915 itc: 2 flg: E typ: 1 - DATA
[oracle@seconary trace]$
SQL> select to_number('12223','xxxxx') from dual;
TO_NUMBER('12223','XXXXX')
--------------------------
74275
SQL> select object_name,object_id from user_objects where object_id=74275;
OBJECT_NAME OBJECT_ID
-------------------------------------------------- ----------
T_CHECKPOINT 74275
提交事務,再看資料塊
SQL> commit;
Commit complete.
這下資料塊儲存全是表t_defer的資訊,已無之前t_checkpoint表的資訊
dbwrid: 0 obj: 74433 objn: 74433 tsn: 4 afn: 4 hint: f
obj-flags: object_ckpt_list
ckptq: [0xda728b60,0xda728b60] fileq: [0xda7259c0,0xda7259c0] objq: [0xd2735530,0xd2735530]
seg/obj: 0x122c1 csc: 0x00.1788a32 itc: 2 flg: E typ: 1 - DATA
SQL> select to_number('122c1','xxxxxx') from dual;
TO_NUMBER('122C1','XXXXXX')
---------------------------
74433
資料塊scn為0x0000.01788a32,發現已經變化了
scn: 0x0000.01788a32 seq: 0x03 flg: 0x04 tail: 0x8a320603
強制重新整理緩衝池,再看資料塊
SQL> alter system flush buffer_cache;
System altered.
可見資料塊scn已發生變化
scn: 0x0000.01795cea seq: 0x01 flg: 0x06 tail: 0x5cea0601
表物件未發生變化
seg/obj: 0x122c1 csc: 0x00.1788a32 itc: 2 flg: E typ: 1 - DATA
個人簡介
8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
服務過的客戶:
中國電信
中國移動
中國聯通
中國電通
國家電網
四川達州商業銀行
湖南老百姓大藥房
山西省公安廳
中國郵政
北京302醫院
河北廊坊新奧集團公司
專案經驗:
中國電信3G專案AAA系統資料庫部署及最佳化
中國聯通4G資料庫效能分析與最佳化
中國聯通4G資料庫效能分析與最佳化
中國聯通CRM資料庫效能最佳化
中國移動10086電商平臺資料庫部署及最佳化
湖南老百姓大藥房ERR資料庫sql最佳化專案
四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
北京高鐵訊號監控系統RAC資料庫部署及最佳化
河南宇通客車資料庫效能最佳化
中國電信電商平臺核心採購模組表模型設計及最佳化
中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
北京302醫院資料庫遷移實施
河北廊坊新奧data guard部署及最佳化
山西公安廳身份證審計資料庫系統故障評估
國家電網上海災備專案4 node rac+adg
貴州移動crm及客服資料庫效能最佳化專案
貴州移動crm及客服務資料庫sql稽核專案
深圳穆迪軟體有限公司資料庫效能最佳化專案
貴州移動crm及客服資料庫效能最佳化專案
貴州移動crm及客服務資料庫sql稽核專案
深圳穆迪軟體有限公司資料庫效能最佳化專案
聯絡方式:
手機:18201115468
qq : 305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900
itpub部落格名稱:wisdomone1 http://blog.itpub.net/9240380/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1815354/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle undo 表空間資料檔案丟失強制啟動資料庫(沒有未提交的事務)Oracle資料庫
- git 修改提交作者及提交日期Git
- 模板表單資料提交於後臺的接受機制
- Spring中的事務提交事件Spring事件
- sql注入之型別及提交注入SQL型別
- java的緩衝流及使用Properties集合存取資料(遍歷,store,load)Java
- Ajax 提交表單資料
- 事務單獨提交和
- MySQL事務兩段式提交MySql
- 分散式事務(二)之兩階段提交分散式
- form表單提交注意事項ORM
- MIGO 增強 提交資料庫後Go資料庫
- git 服務搭建及提交程式碼檢查Git
- 簡述 zookeeper 基於 Zab 協議實現選主及事務提交協議
- 為DbContextScope新增資料庫事務提交完成事件Context資料庫事件
- MySQL實現事務的提交和回滾MySql
- SpringMvc上傳圖片及表單提交(單檔案+實體類引數提交)SpringMVC
- POST提交資料之---Content-Type的理解;
- vitess兩階段提交事務Vite
- oracle的scn及sequenceOracle
- MySQL事務提交的三個階段介紹MySql
- 分散式事務處理兩階段提交機制和原理分散式
- mysql隱式提交事務transaction一點筆記MySql筆記
- MySQl事務建立,開始以及提交MySql
- 分散式:分散式事務(CAP、兩階段提交、三階段提交)分散式
- InnoDB 中的緩衝池(Buffer Pool)
- 如何優雅的提交一個表單
- Spring事務專題(四)Spring中事務的使用、抽象機制及模擬Spring事務實現Spring抽象
- MySQL InnoDB緩衝池MySql
- 資料庫主要物件及事務資料庫物件
- 提交表單
- Git 忽略提交規則及運用Git
- git提交中出現沒有變化的檔案Git
- iview 表單提交資料的時候驗證問題View
- Spring Boot(三):RestTemplate提交表單資料的三種方法Spring BootREST
- 使用git處理github中提交有衝突的pull requestGithub
- Express 提交資料的幾種方式Express
- 使用 antd 的 form 元件來自定義提交的資料格式ORM元件
- 如何在資料庫事務提交成功後進行非同步操作資料庫非同步