9_深入解析Oracle rdba結構及os層rdba解析工具分享
一、概念介紹
rdba 是Oracle 資料塊頭部offset 4~7 的一個結構,大小為4 bytes ,由表空間相對檔案號(tablespace relative file numbers) 和塊號2 部分組成。本文主要說明以下問題,
1、 FILE#(File identification number): 資料檔案唯一標識,database 級唯一;
2、 RFILE#(Tablespace relative datafile number): 表空間相對檔案號,tablespace 級唯一;
3、 File# 取值範圍為:1~65533;
4、 RFILE# 的取值範圍為: 1~1023, 大於1023 時重置為1 保持表空間內唯一;
5、 當file#<1024 時,file#=rfile#, 否則file# 自增,rfile 重置為1 自增;
6、 rdba 由4 bytes 組成,共32 bits,offset 22~31 (10 bits )表示RFILE#,offset 0~21 (22 bits )表示:block#;
7、 Oracle Physical Database Limits 中(Database files Maximum per tablespace Operating system dependent; usually 1022 ),2^10 = 1024-1( 去掉0), 所以rfile# 在單個表空間內最多1023 個,官方文件和mos 中提到的1022 ,有點不準確;
8、 分享os 層rdba 解析工具,方便大家解析rdba 和dump 資料塊,工具下載方法:請關注公眾號“ 資料庫技術筆記”,回覆“rdba ”。
對文章內容有疑問的歡迎留言討論, 感謝您的閱讀,如果您覺得有所收穫,也歡迎把文章分享給您的朋友。
二、RDBA 結構解析
alter session settracefile_identifier='orastar_hdrseg_after_trunc_10';
oradebug setmypid
alter system dump datafile 5 block 130;
oradebug close_trace
oradebug tracefile_name
*** 頭部資訊如下,
buffer tsn: 6 rdba: 0x01400082 (5/130)
scn: 0x0000.00347db2 seq: 0x01 flg: 0x04tail: 0x7db22301
frmt: 0x02 chkval: 0xfd95 type:0x23=PAGETABLE SEGMENT HEADER
圖 1 rdba 結構解析
小結:
1、 rdba 由 4 bytes 組成,共 32 bits,offset 22~31 ( 10 bits )表示 RFILE# ,offset 0~21 ( 22 bits ) 表示: block#。
三、 RFILE# 的取值範圍
create tablespace hsql datafile'/oradata/epmsn/hsql1.dbf' size 1024k autoextend off;
spool /home/oracle/cr_tb.sql
set serveroutput on
DECLARE
c_sql varchar2(100) := '';
begin
for i in 2..1030 loop
c_sql := 'alter tablespace hsql adddatafile '||'''/oradata/epmsn/hsql'||i||'.dbf'' size 1024K;';
dbms_output.put_line(c_sql);
end loop;
end;
/
@cr_tb.sql
Tablespace altered.
alter tablespace hsql add datafile'/oradata/epmsn/hsql1024.dbf' size 1024K
*
ERROR at line 1:
ORA-01686: max # files (1023) reached forthe tablespace HSQL
1000 1000/oradata/epmsn/hsql995.dbf 6
1001 1001/oradata/epmsn/hsql996.dbf 6
1002 1002/oradata/epmsn/hsql997.dbf 6
1003 1003/oradata/epmsn/hsql998.dbf 6
1004 1004/oradata/epmsn/hsql999.dbf 6
1005 1005/oradata/epmsn/hsql1000.dbf 6
1006 1006/oradata/epmsn/hsql1001.dbf 6
1007 1007/oradata/epmsn/hsql1002.dbf 6
1008 1008/oradata/epmsn/hsql1003.dbf 6
1009 1009/oradata/epmsn/hsql1004.dbf 6
1010 1010/oradata/epmsn/hsql1005.dbf 6
1011 1011/oradata/epmsn/hsql1006.dbf 6
1012 1012/oradata/epmsn/hsql1007.dbf 6
1013 1013/oradata/epmsn/hsql1008.dbf 6
1014 1014/oradata/epmsn/hsql1009.dbf 6
1015 1015/oradata/epmsn/hsql1010.dbf 6
1016 1016/oradata/epmsn/hsql1011.dbf 6
1017 1017/oradata/epmsn/hsql1012.dbf 6
1018 1018/oradata/epmsn/hsql1013.dbf 6
1019 1019/oradata/epmsn/hsql1014.dbf 6
1020 1020/oradata/epmsn/hsql1015.dbf 6
1021 1021/oradata/epmsn/hsql1016.dbf 6
1022 1022 /oradata/epmsn/hsql1017.dbf 6
1023 1023/oradata/epmsn/hsql1018.dbf 6
1024 1 /oradata/epmsn/hsql1019.dbf 6
1025 2 /oradata/epmsn/hsql1020.dbf 6
1026 3 /oradata/epmsn/hsql1021.dbf 6
1027 4 /oradata/epmsn/hsql1022.dbf 6
1028 6 /oradata/epmsn/hsql1023.dbf 6
1028 rows selected.
SQL>
SQL> select ts#,count(1) from v$datafilegroup by ts#;
TS# COUNT(1)
---------- ----------
1 1
6 1023
2 1
4 2
0 1
SQL>
小結:
1、 FILE#( File identification number ): 資料檔案唯一標識, database 級唯一;
2、 RFILE#( Tablespace relativedatafile number ): 表空間相對檔案號, tablespace 級唯一;
3、 File# 取值範圍為: 1~65533;
4、 RFILE# 的取值範圍為 : 1~1023, 大於 1023 時重置為 1 保持表空間內唯一;
5、 當 file#<1024 時 ,file#=rfile#, 否則 file# 自增, rfile 重置為 1 自增;
6、 rdba 由 4 bytes 組成,共 32 bits,offset 22~31 ( 10 bits )表示 RFILE# ,offset 0~21 ( 22 bits ) 表示: block#;
7、 Oracle Physical Database Limits 中( Database filesMaximumper tablespace Operating systemdependent; usually 1022 ), 2^10 = 1024-1( 去掉 0), 所以 rfile# 在單個表空間內最多 1023 個,官方文件和 mos 中提到的 1022 ,有點不準確。
四、 os 層 rdba 解析工具
mkdir -p /home/oracle/orastar
mv ora_rdba /home/oracle/orastar
export PATH=/home/oracle/orastar/:$PATH
五、說明
1 、以上內容為個人多次測試結果,由於個人原因,如有分析不足之處還請見諒及指正。
2 、文章涉及內容,請勿 在 生產環境模擬。
紙上得來終覺淺,絕知此事要躬行。--陸游
感謝您的閱讀,如果您覺得有所收穫,也歡迎把文章分享給您的朋友。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442014/viewspace-2679026/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 10_深入解析Oracle number資料型別及os層number解析工具分享Oracle資料型別
- 16_深入解析Oracle os header結構(2)OracleHeader
- 15_解析Oracle os header結構(1)OracleHeader
- 14_深入解析Oracle table cluster結構Oracle
- DNS分層結構及DNS解析流程DNS
- 12_深入解析Oracle FLM段頭塊結構Oracle
- 深入解析LLaMA如何改進Transformer的底層結構ORM
- 深入解析和定製Oracle優化工具Oracle優化
- 2_深入解析Oracle ASSM結構之Level 2 Bitmap BlockOracleSSMBloC
- 1_深入解析Oracle ASSM 段頭塊(PAGETABLE SEGMENT HEADER)結構OracleSSMHeader
- 26_Oracle redo物理結構解析Oracle Redo
- Vector底層結構和程式碼解析
- 深入解析Class類檔案的結構
- HashMap底層資料結構原始碼解析HashMap資料結構原始碼
- Oracle redo解析之-1、oracle redo log結構計算Oracle Redo
- ORACLE 資料塊格式深入解析Oracle
- Oracle assm三級點陣圖結構解析OracleSSM
- Oracle體系結構概述與SQL解析剖析OracleSQL
- Android Studio目錄結構及工程專案結構解析Android
- 深入解析 oracle drop table內部原理Oracle
- 深入解析 Go 中 Slice 底層實現Go
- 結合案例深入解析策略模式模式
- 13_深入解析Oracle資料庫bootstrapOracle資料庫boot
- 17_深入解析Oracle undo原理(1)_transactionOracle
- Promise的分層解析及實現Promise
- 深入解析CSS樣式層疊權重值CSS
- 面試題深入解析:Synchronized底層實現面試題synchronized
- 深入解析Immutable及 React 中實踐React
- 結合案例深入解析迭代器模式模式
- Redis的ZSet底層資料結構,ZSet型別全面解析Redis資料結構型別
- Tomcat目錄結構解析Tomcat
- ORACLE SQL解析之硬解析和軟解析OracleSQL
- qt深入解析QT
- 深入解析Scheduler
- 深度解析HashMap底層實現架構HashMap架構
- 深入解析Underscore.js原始碼架構JS原始碼架構
- Oracle redo解析之-2、BBED & DUMP工具使用Oracle Redo
- 19_深入解析Oracle undo原理(3)_ktuxe詳解OracleUX