Oracle Study之案例--Oracle 数据块地址(Block Address) Oracle访问数据是以block为单位,本文简单介绍了如何通过Block Address在内存中获取所需要的block。 DBA(data block address): A DBA is the address of an oracle data block for access purposes
Oracle Study之案例--Oracle 数据块地址(Block Address)
Oracle访问数据是以block为单位,本文简单介绍了如何通过Block Address在内存中获取所需要的block。
DBA(data block address):
A DBA is the address of an oracle data block for access purposes.
RDBA (Tablespace relative database block address):
RDBA 是相对数据块地址,是数据所在的地址,rdba可就是rowid 中rfile#+block#
ROWID:
Oracle在通过Index访问时,通过rowid确定row的位置;我们都知道rowid表示一行的物理地址,一行唯一确定一个rowid,并且在使用中一般不会改变,除非rowid之后在行的物理位置发生改变的情况下才会发生变化。需要注意的是rowid并不会真正存在于表的data block中,但是他会存在于index当中,用来通过rowid来寻找表中的行数据。
Oracle8以前一个rowid占用6个字节大小的存储空间(10bit file#+22bit block#+16bit row#),那么oracle 8以后这个rowid的存储空间扩大到了10个字节(32bit object#+10bit rfile#+22bit block#+16bit row#),所以数据库中数据库文件个数的限制从整个数据库最多只能有的2^10-1个数据文件,变为了每个表空间中可以最多有2^10-1个数据文件。
(需要注意的是:local index中存储的rowid是6个字节,而global index中存储的rowid是10个字节)
那么增加的32bit object#这个前缀主要就是用来定位表空间的,同时这个object#其实对应的就是data_object_id,由于一个段对象只能属于一个表空间,同时data_object_id就是标识了一个段的物理存储id.因此object#+rfile#就可以唯一定位当前的rowid是在那个数据文件上了。
我们可以通过dbms_rowid这个包来转换我们的rowid成不同组成部分:
dbms_rowid.rowid_object(rowid) ---> 32bit object#dbms_rowid.rowid_relative_fno(rowid) ---> 10bit rfile#dbms_rowid.rowid_block_number(rowid) ---> 22bit block#dbms_rowid.rowid_row_number(rowid) ---> 16bit row#
案例分析:
1、通过dbms_utility转换地址
10:33:59 SYS@ test1 >desc dbms_utility FUNCTION DATA_BLOCK_ADDRESS_BLOCK RETURNS NUMBER Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- DBA NUMBER IN FUNCTION DATA_BLOCK_ADDRESS_FILE RETURNS NUMBER Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- DBA NUMBER IN FUNCTION MAKE_DATA_BLOCK_ADDRESS RETURNS NUMBER Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- FILE NUMBER IN BLOCK NUMBER IN
2、通过rowid获取RDBA
11:14:36 SYS@ test1 >conn scott/tiger Connected. 11:14:39 SCOTT@ test1 >select rowid,ename from emp where rownum=1; ROWID ENAME ------------------ ---------- AAAESjAAEAAAACVAAA SMITH 11:15:05 SCOTT@ test1 >select dbms_rowid.ROWID_RELATIVE_FNO(rowid) ,dbms_rowid.ROWID_BLOCK_NUMBER(rowid) from emp where rownum=1; DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ------------------------------------ ------------------------------------ 4 149
3、通过Dump获取block信息
11:42:16 SYS@ test1 >alter system dump datafile 4 block 149;
System altered.
Block dump
from
cache:
Dump of buffer cache
at
level
4
for
tsn=
4
, rdba=
16777365
Block dump
from
disk:
buffer tsn:
4
rdba:
0x01000095
(
4
/
149
)
scn:
0x0000.
009722f6 seq:
0x01
flg:
0x04
tail:
0x22f60601
frmt:
0x02
chkval:
0x52a5
type:
0x06
=trans data
Hex dump of block: st=
0
, typ_found=
1
Dump of memory
from
0x008E8200
to
0x008EA200
8E8200
0000A206
01000095
009722F6
04010000
[........."......]
......
Block header dump:
0x01000095
Object id
on
Block? Y
seg/obj:
0x44a3
csc:
0x00.
9722f6 itc:
2
flg: E typ:
1
- DATA
brn:
0
bdba:
0x1000090
ver:
0x01
opc:
0
inc:
0
exflg:
0
Itl Xid Uba Flag Lck Scn/Fsc
0x01
0x001b.
01f.0000007a
0x01c01c55.
0121.23
C-U-
0
scn
0x0000.
00971d50
0x02
0x0000.
000.00000000
0x00000000.
0000.00
----
0
fsc
0x0000.
00000000
bdba:
0x01000095
data_block_dump,data header
at
0x8e8264
......
block_row_dump:
tab
0
, row
0
, @
0x1f72
tl:
38
fb: --H-FL-- lb:
0x0
cc:
8
col
0
: [
3
] c2 4a
46
col
1
: [
5
]
53
4d
49
54
48
col
2
: [
5
]
43
4c
45
52
4b
col
3
: [
3
] c2
50
03
col
4

mysqloffersvariouscharactersetsetStringDatatypes:1)latin1forwesterneuropeanlanguages、2)utf8formultilingualsupport、3)utf8mb4f orextendedunicodeincludingemojis、4)ucs2forfixed-widthencoding、and5)asciiforbasiclatin.choososingtherightsetensuresdategrity

ストリーミングブロブは、メモリの使用量を削減し、パフォーマンスを向上させるため、実際に直接ストレージよりも優れています。 1)ファイルを徐々に読み取り、処理することにより、データベースの膨満感とパフォーマンスの劣化は回避されます。 2)ストリーミングには、より複雑なコードロジックが必要であり、I/O操作の数が増加する場合があります。

mysqlstringTypesimpactStorageandperformanceAseasfollows:1)churisfixed-regents、whuscanbasterbutlessspace-efficient.2)varcharisvariaible、morespace-efficient-butpotentiallyslower.3)Textisforgergetext、storedoutext、

mysqlstringTypesincludevarchar、テキスト、char、列挙、およびセット。1)varcharisSatileforvariaible-lengthstringsuptoaspoecifedlimit.2)TextisidealforLargetExtStorageWithDeinLength.3)charispixed-consinterconsistentalikodes.4)

mysqloffersvariousstringdatatypes:1)charfixed-lengthstrings、2)varcharforvariable-lengthtext、3)binaryandvartyforbinarydata、4)blobandtextforlargedata、and5)enumandsetforControlledinput.

tograntpermissionstonewmysqlusers、フォローステープ:1)Accessmysqlasauserwithsufthiveerprivileges、2)createanewuser withthecreateusercommand、3)usethegrantcommandtospecifypermissionsionsionsionsionsionsionsionsionsionsionselect、挿入、挿入、挿入、更新、4)

toadduusersinmysqucrectivally andcurally、soflowthesteps:1)usethecreateuserstatementtoaddanewuser、指定するhostandastrongpassword.2)補助金を使用して、補助金を使用して、補助すること、

toaddanewuserwithpermissionsinmysql、followthesesteps:1)createtheuserwithcreateuser'newuser '@' localhost'identifiedifiedifiedifiedby'pa ssword ';。2)grantreadacestoalltablesin'mydatabase'withgrantselectonmydatabase.to'newuser'@'localhost';。3)grantwriteaccessto '


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
