全面學習和應用ORACLE ASM特性--(5)管理asm磁碟中的檔案

junsansi發表於2010-08-11

3 、管理ASM磁碟中的檔案

  ASM 中的磁碟與物理磁碟並非完全一一對應,由於ASM在儲存資料時是打散處理,ASM中的(同一個)檔案在儲存時也並非儲存在某個磁碟中,而是完全由ASM自動控制,甚至連建立檔案時的檔名,都由ASM通過OMF(Oracle managed files)管理。

  接下來,三思跟大家一起聊聊ASM中檔案的那些事兒~~~

1 、ASM中支援的檔案型別

  大多數的ORACLE檔案型別均能被ASM支援,注意,我說的是大多數,而沒說全部,像trace檔案、alert檔案、dmp檔案等還不能直接被儲存到ASM中,注意,我說的是不能直接,沒說不能間接。

  下表列出了ASM直接支援的檔案型別:

Control files

Datafiles

Redo log files

Archive log files

Trace files

Temporary files

Datafile backup pieces

Datafile incremental backup pieces

Archive log backup piece

Datafile copy

Persistent initialization parameter file (SPFILE)

Disaster recovery configurations

Flashback logs

Change tracking file

Data Pump dumpset

Automatically generated control file backup

Cross-platform. transportable datafiles

  如果想向ASM中儲存任意型別的檔案,FTP會是個好方式,yangtingkun的這篇BLOG詳細描述了這一方法: http://space.itpub.net/4227/viewspace-448289 ,通過這一方式,可以將任意檔案放入ASM中,而不用考慮是否能夠被直接支援,這其實提供了很大的靈活度,ASM不再是個嚴絲合縫的黑匣子,它也是有縫兒的~~

2、ASM中的檔名

  ASM 建立的檔案均由系統自動命名,這種命名方式官方定義為 完全定義檔名 (Fully Qualified Filename) ,這種方式命名的檔案包含完整的檔案路徑,比如像這樣的形式:

    +ASMDISK2/repdb/TEMPFILE/TEMP.267.714576831

  上述名稱是在檔案建立時完全由ASM自動生成,事上述名稱的生成格式為:

    +diskgroup/dbname/file_type/file_type_tag.file.incarnation
  • +diskgroup :磁碟組名稱;
  • dbname :資料庫的DB_UNIQUE_NAME引數值;
  • file_type :建立的檔案型別,比如CONTROLFILE/DATAFILE/ONLINELOG/ARCHIVELOG/TEMPFILE/BACKUPSET/FLASHBACK等等,型別眾多此處不一一例舉;
  • file_type_tag :檔案型別的標籤,比如表空間對應的通常為該表空間名稱;
  • file.incarnation :檔案序號+incarnation,用來確保檔案的唯一;

  實際上,即使DBA在建立時想手動指定這樣格式的檔名也是不行的(即使指定了,建立的也只是別名),例如:

    SQL> alter tablespace jsstbs add datafile '+ASMDISK2/repdb/datafile/jsstbs.280.722005095' size 100m;

    alter tablespace jsstbs add datafile '+ASMDISK2/repdb/datafile/jsstbs.280.722005095' size 100m

    *

    ERROR at line 1:

    ORA-01276: Cannot add file +ASMDISK2/repdb/datafile/jsstbs.280.722005095. File has an Oracle Managed Files file name.

  指定非OMF格式的方式名:

    SQL> alter tablespace jsstbs add datafile '+ASMDISK2/repdb/datafile/jsstbs02.dbf' size 100m;

    Tablespace altered.

  看起來o了,其實不然,到asmcmd下檢視一下實際建立的檔案:

    ASMCMD> pwd

    +ASMDISK2/repdb/datafile

    ASMCMD> ls -l jsstbs*

    Type Redund Striped Time Sys Name

    DATAFILE UNPROT COARSE JUN 18 12:00:00 Y JSSTBS.263.714575967

    DATAFILE UNPROT COARSE JUN 18 13:00:00 Y JSSTBS.271.722005397

    N jsstbs01.dbf => +ASMDISK2/repdb/datafile/JSSTBS.263.714575967

    N jsstbs02.dbf => +ASMDISK2/repdb/datafile/JSSTBS.271.722005397

  由上可以看出,系統雖然建立了名為jsstb02.dbf的檔案,但只是別名,實際指向了由系統自動命名的 JSSTBS.271.722005397 。

  即然檔案建立時無法指定實際檔名及路徑,那麼建立語句當然還可以更簡化,例如:

    SQL> alter tablespace jsstbs add datafile '+ASMDISK2' size 10m;

    Tablespace altered.

    SQL> select file_name from dba_data_files where tablespace_name='JSSTBS';

    FILE_NAME

    --------------------------------------------------

    +ASMDISK2/repdb/datafile/jsstbs01.dbf

    +ASMDISK2/repdb/datafile/jsstbs02.dbf

    +ASMDISK2/repdb/datafile/jsstbs.272.722005653

  這樣就完全由ORACLE的OMF控制和管理了。

  如果設定了初始化引數db_create_file_dest,甚至連磁碟組名都不需要寫了,例如:

    SQL> show parameter db_create_file_dest

    NAME TYPE VALUE

    ------------------------------------ ----------- ------------------------------

    db_create_file_dest string +ASMDISK2

    SQL> alter tablespace jsstbs add datafile size 10m;

    Tablespace altered.

  通過上述示例,相信大家對於使用ASM做為儲存的資料庫,新增資料檔案已無疑惑,不過如何新增其它型別檔案,比如重做日誌檔案、歸檔檔案(當然歸檔檔案本來也就不需要特殊處理,只要LOG_ARCHIVE_DEST_n設定好即可)等還不明瞭,其實沒有那麼複雜,操作方式都是同理的。由上述示例可知,ASM中檔名完全可由其自行管理,因此在建立檔案時,只需指定磁碟組路徑即可,檔名嘛,就由ASM自己玩吧~~

  對於現有系統想遷入ASM儲存,最簡單的方式,莫過於使用RMAN了,之前的三思筆記系統文章中對此已有描述,此處不再重複深度,感興趣的朋友可以翻看之前的三思筆記系統文章,或者瀏覽官方文件。

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

相關文章