linux中asm⽂件夹,定位数据在ASM中的位置
有时候我们想要知道⼀个特定的database block位于ASM的哪个磁盘,磁盘的哪个AU以及AU的哪⼀个块。本篇⽂章将向⼤家展⽰如何解决这个问题。
⾸先在数据库⾥创建测试表空间:
SQL> create tablespace t_cs datafile '+testdg' size 50M autoextend off;
Tablespace created.
SQL> set long 200
SQL> set linesize 200
SQL> select f.file#, f.name "file", t.name "tablespace"
2  from v$datafile f, v$tablespace t
3  where t.name='T_CS' and f.ts# = t.ts#;
FILE# file                                              tablespace
---------- -------------------------------------------------- ------------------------------
11 +TESTDG/jyrac/datafile/t_cs.256.932913341          T_CS
注意到ASM file number是256,现在创建⼀张测试表并插⼊数据:
SQL> create table t(n number,name varchar2(20)) tablespace t_cs;
Table created.
SQL> insert into t values(1,'JY');
1 row created.
SQL> commit;
Commit complete.
查询表T所占⽤的数据块号:
SQL> select rowid,name from t;
ROWID              NAME
------------------ --------------------------------------------------
AAAV/pAALAAAACHAAA JY
SQL> select wid_block_number('AAAV/pAALAAAACHAAA') "block number" from dual;
block number
------------
135
查询数据⽂件的块⼤⼩:
SQL> select block_size from v$datafile where file#=11;
8192
可以看到插⼊的数据位于135号块,数据⽂件块⼤⼩为8K。
连接ASM实例,查询256号⽂件的区分布:
SQL> select group_number from v$asm_diskgroup where name='TESTDG'; GROUP_NUMBER
------------
5
SQL> select
2  xnum_kffxp,            -- virtual extent number
3  pxn_kffxp,            -- physical extent number
4  disk_kffxp,            -- disk number
5  au_kffxp              -- allocation unit number
6  from x$kffxp
7  where number_kffxp=256 -- asm file 256
8  and group_kffxp=5      -- group number 1
9  order by 1,2,3;
XNUM_KFFXP  PXN_KFFXP DISK_KFFXP  AU_KFFXP
---------- ---------- ---------- ----------
0          0          2        41
0          1          3        38
1          2          3        39
1          3
2        42
2          4          1        41
2          5          0        36
3          6          0        37
3          7          2        43
4          8          2        45
4          9          1        42
5        10          3        40
5        11          1        43
6        12          1        44
6        13          2        47
9        19          0        40
10        20          1        46
10        21          3        44
11        22          0        41
11        23          3        45
12        24          2        49
12        25          3        46
13        26          3        47
13        27          2        46
14        28          1        47
14        29          0        42
15        30          0        43
15        31          2        52
16        32          2        53
16        33          1        48
17        34          3        48
17        35          1        49
18        36          1        50
18        37          2        54
19        38          0        44
19        39          1        51
20        40          2        55
20        41          0        45
21        42          3        50
21        43          0        46
22        44          1        52
22        45          3        51
23        46          0        47 23        47          3        52
26        53          0        48
27        54          0        49
27        55          2        60
28        56          2        61
28        57          1        54
29        58          3        55
29        59          1        56
30        60          1        58
30        61          2        65
31        62          0        51
31        63          1        59
32        64          2        66
32        65          0        52
33        66          3        57
33        67          0        53
34        68          1        60
34        69          3        58
35        70          0        54linux查看当前文件夹内容
35        71          3        59
36        72          2        67
36        73          3        60
37        74          3        61
37        75          2        68
38        76          1        61
38        77          0        55
39        78          0        56
39        79          2        71
40        80          2        72 40        81          1        63
43        87          1        66
44        88          2        74
44        89          0        58
45        90          3        64
45        91          0        59
46        92          1        67
46        93          3        65
47        94          0        60
47        95          3        66
48        96          2        77
48        97          3        67
49        98          3        69
49        99          2        78
50        100          1        69
50        101          0        61
2147483648          0          1        57
2147483648          1          0        50
2147483648          2          2        62
105 rows selected.
可以看到⽂件的区分布在所有磁盘,由于数据⽂件为Normal冗余,每个区都是两副本。注意我说的是数据⽂件为Normal冗余。默认情况下,⽂件会继承磁盘组的冗余策略。控制⽂件是个例外:即使在Normal冗余的磁盘组,如果磁盘组包含⾄少3个failgroup,控制⽂件也会被创建为high冗余。
查询磁盘组的AU⼤⼩:
SQL> select block_size,allocation_unit_size from v$asm_diskgroup where group_number=5;
BLOCK_SIZE ALLOCATION_UNIT_SIZE
---------- --------------------
4096              1048576
AU⼤⼩为1MB。注意每个磁盘组可以有不同的AU⼤⼩。
现在已知测试数据在256号ASM file的135号块。数据块为8K的情况下,每个AU可以包含128个块。这就意味着135号块位于第⼆个virtual extent的第7个块。第⼆个virtual extent包含3号磁盘的39号au和2号磁盘的42号au.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。