oracle asm自動儲存使用及管理說明(下)

datapeng發表於2014-08-27
接上篇:oracle asm自動儲存使用及管理說明(上)

六、檔案及tempate

1、資料檔案命名含義
SQL> select file_name from dba_data_files;

FILE_NAME
------------------------------------------------------------
+ASM_DISKGROUP/ora10g/datafile/system.259.712716453
+DG1/ora10g/datafile/undotbs1.259.712716475
+ASM_DISKGROUP/ora10g/datafile/sysaux.260.712716487
+ASM_DISKGROUP/ora10g/datafile/users.261.712716503

格式說明:
 +DATA/yoda/datafile/tbs_name.asm_filenumber.incarnation_number

  +DATA: diskgroup名
     yoda: 該資料庫名
 datafile: 檔案型別,表示是資料檔案
tbs_name: 表空間名
asm file#: 表示ASM file編號,$asm_file.file_number
incarnation number:  從時間戳提取,唯一值  。

2、在ASM例項中查詢檔案編號和大小
$export ORACLE_SID=+ASM
SQL>sqlplus '/as sysdba'
SQL> select file_number, bytes/1024/1024 from v$asm_file;

FILE_NUMBER        BYTES/1024/1024
-------------------------- ---------------
        259                      500.007813
        260                      340.007813
        261                      5.0078125
        259                      340.007813

所查詢到的值,與dba_data_files相匹配。

3、資料檔案的模板(template)管理

檢視資料檔案屬性
SQL>select name, redundancy, striped
           from v$asm_alias a, v$asm_file b
           where a.file_number = b.file_number
             and  a.group_number = b.group_number
            order by name;

NAME                                                        REDUND     STRIPE
------------------------------------------------ ----------------- ------------
Current.256.712716441                            HIGH           FINE
Current.257.712716441                            HIGH           FINE
Current.258.712716441                            HIGH           FINE
SYSAUX.260.712716487                          MIRROR      COARSE
SYSTEM.259.712716453                          MIRROR      COARSE
TEMP.260.712716493                               UNPROT     COARSE
UNDOTBS1.259.712716475                    UNPROT     COARSE
USERS.261.712716503                            MIRROR      COARSE
control01.ctl                                                  HIGH            FINE
control02.ctl                                                  HIGH            FINE
control03.ctl                                                  HIGH            FINE
group_1.256.712716443                          UNPROT      FINE
group_2.257.712716445                          UNPROT      FINE
group_3.258.712716447                          UNPROT      FINE
redo01.log                                                    UNPROT      FINE
redo02.log                                                    UNPROT      FINE
redo03.log                                                    UNPROT      FINE
spfile.262.712718229                                MIRROR      COARSE
spfileora10g.ora                                          MIRROR      COARSE

系統管理人員能改變系統預設 template, 但不能刪除該刪除,管理員能增加自己的template,然後在該模板上建立資料檔案。

SQL> alter diskgroup dg1 add template noncritical_files attributes (unprotected);

SQL> create tablespace test datafile '+DG1/test.dbf(noncritical_files)' size 100M;

更改template屬性
SQL>alter diskgroup dg1 alter template noncritical_files attributes (coarse);

刪除template
SQL> alter diskgroup dg1 drop template noncritical_files;

以下是ASM 預設template資訊

檔案型別                              預設模板                預設條帶化
------------------------------- ------------------------  ---------------------
archived redo logs       ARCHIVELOG             coarse
control files                   CONTROLFILE            fine
control files autobackup AUTOBACK              coarse
datafile                            DATAFILE                    coarse
datafile backup piece   BACKUPSET              coarse
DataGuard broker
configuration                  DATAGUARDCONFIG coarse
datapump Dumpset     DUMPSET                    coarse
flashback logs               FLASHBACK                fine
Online Redo Logs         ONLINELOG                fine
spfile                                PARAMETERFILE        coarse
tempfiles                         TEMPFILE                      coarse

檢視ASM template
SQL>select * from v$asm_template;

七、asm命令使用

1、進入ASMCMD
$asmcmd -p    /* -p: 提示符顯示當前的目錄 */

2、列出目錄資訊

ASMCMD [+] > ls
ASMCMD [+] > ls -al

3、別名
ASMCMD [+ASM_DISKGROUP/ORA10G/DATAFILE] > ls -al
Type             Redund         Striped         Time        Sys  Name
DATAFILE   MIRROR      COARSE   MAR 16 08:00:00  Y   none => SYSAUX.260.712716487
DATAFILE   MIRROR     COARSE   MAR 10 18:00:00  Y   none => SYSTEM.259.712716453
DATAFILE   MIRROR      COARSE   MAR 10 18:00:00  Y   none => USERS.261.712716503

ASMCMD>mkalias SYSAUX.260.712716487 SYSAUX.dbf
ASMCMD>mkalias SYSTEM.259.712716453 SYSTEM.dbf
ASMCMD>mkalias USERS.261.712716503 USER.dbf

ASMCMD [+ASM_DISKGROUP/ORA10G/DATAFILE] > ls -al
Type         Redund      Striped         Time        Sys  Name
DATAFILE MIRROR COARSE MAR16 08:00:00 YSYSAUX.dbf => SYSAUX.260.712716487
DATAFILE MIRROR COARSE MAR10 18:00:00 YSYSTEM.dbf => SYSTEM.259.712716453
DATAFILE MIRROR COARSE MAR10 18:00:00 Y USER.dbf=> USERS.261.712716503

4、檢視空間
ASMCMD>du
ASMCMD> lsdg

5、顯示ASM和資料庫例項連線情況
ASMCMD>lsct
DB_Name   Status         Software_Version  Compatible_version  Instance_Name
ora10g    CONNECTED       10.2.0.4.0          10.2.0.3.0                        ora10g
ora10g    CONNECTED       10.2.0.4.0          10.2.0.3.0                        ora10g

6、當檔案關閉時候,可以使用rm 刪除ASM檔案
ASMCMD>rm 檔名

7、查詢檔案
ASMCMD> find +dg1 undo*

8、複製檔案
ASMCMD> cp /tmp/control.ctl +datadg/mytest1/control01.ctl


八、asm檔案遷移

--非ASM資料檔案轉發成ASM步驟:

1、建立測試表空間
SQL>create tablespace test datafile '/home/oracle/test.dbf' size 20M;

2、使用RMAN,將資料檔案offline

SQL>rman target system/password
RMAN>sql 'alter tablespace test offline';

3、使用backup as copy命令遷移
RMAN>backup as copy tablespace 'TEST' format 'ASM_DISKGROUP';

4、切換表空間
RMAN>switch tablespace 'TEST' to copy;

5、將表空間online
RMAN>sql 'alter tablespace test online';

6、檢視錶空間資訊
select file_name from dba_data_files where tablespace_name='TEST';

--將資料檔案從一個diskgroup遷移到另一個diskgroup

1、檢視需要遷移的資料檔案#
SQL> select file_id from dba_data_files where TABLESPACE_NAME='TEST';

   FILE_ID
----------
         5

2、備份資料檔案

RMAN> sql 'alter tablespace test offline';
RMAN>backup device type disk as copy datafile 5 format '+DG1';

3、切換
RMAN>switch datafile 5 to copy;
RMAN>recover datafile 5;

4、啟動
RMAN>sql 'alter tablespace test online';

--將ASM檔案轉發成OS檔案(除RMAN外的另一種方法)

1、檢視資料檔案

SQL> select file_name from dba_data_files
           where tablespace_name='TEST';
FILE_NAME
--------------------------------------------------------------------------------
+DG1/ora10g/datafile/test.261.713925727

2、將表空間offline

SQL>alter tablespace test offline;

3、建立ASM目錄

SQL> create directory asmsrc as '+DG1/ora10g/datafile';
SQL> create directory osdesc as '/home/oracle';

4、執行轉化
SQL> begin
    dbms_file_transfer.copy_file('ASMSRC',
    'TEST.261.713925727',
    'OSDESC',
    'TEST.DBF');
    END;
    /

5、將資料檔案rename

SQL> alter database rename file
           '+DG1/ora10g/datafile/test.261.713925727'
           to '/home/oracle/TEST.DBF';

6、恢復資料檔案
SQL> recover datafile 5;

7、將表空間online,並檢視資料檔案

SQL> alter tablespace test online;
SQL> select file_name from dba_data_files
           where tablespace_name='TEST';

8、進入ASMCMD,將test.261.713925727刪除
ASMCMD>rm test.261.713925727


九、asm操作原理

--資料庫針對ASM檔案操作原理

1、ASM檔案建立步驟:

a)10g版本,資料庫啟動前臺程式連線ASM例項中的NFG程式,11g版本,資料庫程式池(o0nn程式)連線NFG程式,然後傳送檔案建立請求,請求中包含以下資訊:diskgroup name,檔案型別,檔案塊大小,檔案大小,檔案標籤,還可包含templates名,別名。

b)ASM傳送extent map給資料庫例項,ASM建立COD(Continuing Operation Directory)記錄來跟蹤檔案的建立。

c)資料庫例項初始化檔案,選擇適宜的I/O,初始化完成,傳送並提交建立完成資訊給ASM。

d)ASM收到資訊後,其程式LGWR將更新ACD(Active Change Directory)記錄,DBWR程式將相關的分配表,檔案目錄,別名目錄記錄非同步寫到磁碟

e)如果建立過程中異常中斷,ASM例項利用COD回滾檔案的建立,回滾中相應刪除ACD中相關記錄。

2、ASM檔案open

a)資料庫透過程式(o0nn)傳送請求開啟的檔名.

b)ASM提取檔案目錄得到該檔案的extent map資訊回覆給資料庫例項。10g版本,ASM回覆整個資料檔案中的extent map,11g,初始化僅傳送60個direct extents,其餘的extents,存放在indirect extents,根據資料庫例項具體請求而傳送相應的extents。

c)開啟spfile檔案,是採用不同的開啟方式,在資料庫啟動過程中,透過ASMB程式來處理。

d)ASM跟蹤所有資料庫例項開啟的檔案,阻止開啟檔案的刪除,協同extent的分配

3、檔案I/O

資料庫例項透過檔案開啟過程中獲取的extent map,直接對ASM disk進行讀寫操作

4、檔案關閉

a)資料庫例項傳送資訊給ASM例項

b)ASM清除檔案內部狀態,關閉檔案不需要反饋資訊給ASM例項

5、檔案刪除

a)傳送請求給ASM例項。

b)ASM例項建立COD記錄檔案刪除過程

c)將分配表記錄標記為空閒,釋放檔案目錄記錄,刪除相關別名目錄資訊。如果刪除過程中失敗,COD負責回滾刪除動作。

--ASM檔案分配

1、extents大小分配原則

a)如果diskgroup中的compatible.rdbms版本在11.1以下,所有的extents分配1AU。
b)如果是11.1版本及以上,檔案中頭20000 extents分配1AU,下一個20000 extents是8AU,40000以上的extents分配8AU。

2、ASM條帶化(略)

3、ASM Redundancy

a)ASM是以extent進行映象
b)將不同的電源、HBA或控制卡組成不同的failure group,保證磁碟的丟失,至少還有一個extent 備份。

4、disk partners

a)extents備份存放在disk partners,disk partnership是相同diskgroup,不同failure groups的兩個磁碟

b)parnership資訊存放在PST(Parnership Status Table)中,使用者不能指定使用哪個partner,而是ASM基於failure group定義自動選擇

c)diskgroup配置的改變,disk partnership也可能發生改變,PST跟蹤先前的parnership直至rebanlance 完成。

d)因為PST空間限制,為更有效對diskgroup重配置,最好是批次進行,以避免頻繁diskgroup 重配置導致PST空間不足,導致ORA-15074 錯誤。

5、ASM映象檔案I/O讀寫
ASM並行寫所有映象的extents,從primary extent讀。

a)讀錯誤:

--如果不能獲取任何extent,則dismount磁碟組,如果不能從某個磁碟獲取extents,則將該磁碟offline;
--在10g版本中,對整個盤讀錯誤和某個扇區讀錯誤,認為是一樣的,將disk offline;而11g中如果是扇區錯誤,將觸發資料庫或ASM例項重新對映該扇區,ASM讀取好的extent映象資料,恢復讀錯誤的extent,如果成功認為正常,如果不成功,將把extent寫到報讀錯誤盤上的其他位置,如果寫成功,則將讀錯誤extent標記為不可用,如果還是寫失敗,則將整個disk offline,該過程會體現在alert.log中。
b)寫錯誤:


--資料庫碰到寫錯誤,將傳送disk offline資訊給ASM例項,如果資料庫能夠寫入其中一個extent並從ASM例項接受到disk offline,則認為寫成功,如果所有對extent的寫都失敗,則將採取適當行動,如表空間offline;
--ASM接受到資訊後,檢視PST看是否其他disk partner也offline,如果太多disk partner offline,則將diskgroup強制dismount,或者把相應的disk offline。
-- Disk offline是影響全域性操作,ASM例項將傳送訊息給叢集中其他ASM例項以及資料庫例項,在10g版本中(或compatible.rdbms <11.1),ASM立即強制刪除磁碟,但在11g(或compatible.rdbms >=11.1),磁碟不會立刻強制刪除,要等到管理員執行online命令或者DISK_REPAIR_TIME計時器過期。
c)映象過程中錯誤處理:


-- 在並行寫過程中,如果發生程式中斷或者節點當機,有可能一個extent寫完成,另一個沒有寫完成,mirror resilvering能夠確保其資料一致;
--確保手段是先檢查資料塊是否損壞,如果映象的資料塊其中一個損壞,則檢查並找出有效資料塊版本,使用該資料塊進行修復操作。資料塊版本可以用SCN來進行判斷。
6、Rebanlance (略)
7、Resync操作

       當disk從offline變成online時候,將進行重新同步操作(Resync),只同步該磁碟offline期間,extents發生改變部分,具體實現機制如下:


--每個offline 盤ASM初始化SR(Saleness Registry) slot 給資料庫和ASM例項,slot中的每位表示offline disk中的一個AU,當對該offline disk寫extent失敗,對應設定slot的相應的位。
--當disk online時候,資料庫和ASM例項停止對SR slot設定,ASM重建磁碟的AT(分配表)和空閒空間表,透過與SR點陣圖的比較,恢復對應extent,當完成上述動作後,將去除SR slot。
8、Relocation操作

      在ASM diskgroup中,將一個extent從一個位置移到另一個位置,通常是在resync操作和壞資料塊重對映上,他的操作是以extent為基礎,具體機制如下:


--ASM先校驗是否檔案被例項開啟,如果沒有,ASM就直接relocate該檔案,不需要傳送資訊給例項,讀源盤extent內容,寫到目標盤對應地方。
--如果檔案是開啟,則傳送訊息給所有叢集中ASM例項,表明將relocate extent,資料庫例項將延遲任何寫操作,直至新的extent可用。


十、其它操作

1、mount diskgroup

SQL>alter diskgroup dskgrp_name mount;

11g版本,mount restricted 使用於新的快速rebanlance特性
SQL>alter diskgroup dskgrp_name mount restricted;

如果部分disk發生offline,使用force強制mount磁碟組
SQL>alter diskgroup dskgrp_name mount force;

2、Diskmount diskgroup

SQL>alter diskgroup dskgrp_name dismount;

新增diskgroup 模板
SQL>alter diskgroup dskgrp_name add template file_noprot (fine unprotected)

3、新增/刪除ASM磁碟到diskgroup

SQL>alter diskgroup dskgrp_name add disk '/dev/raw/raw6';

SQL>alter diskgroup dskgrp_name add disk '/dev/raw/raw6' wait;
DBA選用該選項表示在rebalnace完全完成之後才使用新添磁碟空間

SQL>alter diskgroup dskgrp_name drop;

4、校驗diskgroup一致性
       該命令校驗資料的一致性,不對錶空間標頭檔案和表資料內容進行校驗,11g增加校驗alias和template

SQL>alter diskgroup dskgrp_name check;

SQL>alter diskgroup dskgrp_name check repair;

5、更改rebanlance power level

SQL>alter diskgroup dskgrp_name rebanlance power 11;

6、刪除diskgroup

SQL>drop diskgroup dskgrp_name including contents;

SQL>drop diskgroup dskgrp_name;

SQL>drop diskgroup dskgrp_name force including contents;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1259097/,如需轉載,請註明出處,否則將追究法律責任。

相關文章