表使用的資料塊在事務未提交及提交且強制重新整理緩衝池的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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 表使用的資料塊在事務未提交及提交且強制重新整理緩衝池的itl條目變化之系列一
- Oracle undo 表空間資料檔案丟失強制啟動資料庫(沒有未提交的事務)Oracle資料庫
- 未提交事務造成的等待事件事件
- SQL Server 查出未提交事務(長事務)SQLSQLServer
- git 修改提交作者及提交日期Git
- 探究MySQL的DML提交事務的意義和DQL是否有必要提交事務MySql
- python執行時強制重新整理緩衝區Python
- 模板表單資料提交於後臺的接受機制
- 【Shutdown】同一會話存在未提交事務時使用immediate選項無法關閉資料庫會話資料庫
- 用bbed檢視資料檔案的資料塊block 0及block 1BloC
- Oracle和DB2重新整理緩衝池和資料字典池OracleDB2
- 檢視mysql沒提交的事務MySql
- Spring中的事務提交事件Spring事件
- sql注入之型別及提交注入SQL型別
- 關於資料庫緩衝池的問題資料庫
- 分散式資料庫事務的兩階段提交介紹分散式資料庫
- 資料緩衝區熱鏈和熱塊爭用及解決方法
- Ajax 提交表單資料
- MySQL事務兩段式提交MySql
- MySQL 事務提交過程MySql
- java 事務提交/回滾Java
- java的緩衝流及使用Properties集合存取資料(遍歷,store,load)Java
- 分散式事務(二)之兩階段提交分散式
- 使用DUMP資料塊與BBED檢視BLOCK對比資料庫修改時的SCNBloC資料庫
- 完全無事務的資料庫SCN增長之謎資料庫
- 如何快速、及時、準確的閃回DML提交後的資料
- 主鍵,唯一性約束,不同session間未提交事務中的爭議性資料引起的問題。Session
- git 服務搭建及提交程式碼檢查Git
- 大表資料插入批量提交
- 簡述 zookeeper 基於 Zab 協議實現選主及事務提交協議
- MySQL通過performance_schema定位未提交事務所執行的SQLMySqlORM
- 【INSERT】逐行提交、批量提交及極限提速方法
- 請教一個在完整提交前臨時儲存的問題(事務)!!
- 物件有多少個資料塊緩衝在Data buffer中物件
- vitess兩階段提交事務Vite
- MySQL事務提交流程概述MySql
- MySQL實現事務的提交和回滾MySql
- goldengate跳過/提交一個未完成的事務Go