ASM を味わう ~ ASM と OMF ~ その2
<ASM を味わう ~ ASM と OMF ~ その2>
ペンネーム:ダーリン
先週に引き続き Oracle 10g の新機能である ASM の検証を行います。
さて、先週はまず ASM を利用するように設定した Oracle 10g データベース
のインスタンスを起動しました。さらに ASM を使ってテスト用の表領域を作
成してみました。
SQL> select tablespace_name,file_name,bytes/1024/1024 MBytes from dba_data_files; TABLESPACE_NAME FILE_NAME MBYTES ----------------- --------------------------------------- ---------- USERS +DATA/ora101/datafile/users.259.1 5 SYSAUX +DATA/ora101/datafile/sysaux.257.1 220 UNDOTBS1 +DATA/ora101/datafile/undotbs1.258.1 25 SYSTEM +DATA/ora101/datafile/system.256.1 440 TEST +DATA/ora101/datafile/test.270.1 100
さて、先週、データファイルを指定して表領域を作成しようとしてエラーを
起こしてしまいました。
——— 先週のエラー ———–
SQL> create tablespace test datafile '+DATA/ora101/datafile/test.260.1' size 50m; create tablespace test datafile '+DATA/ora101/datafile/test.260.1' size 50m * ERROR at line 1: ORA-01276: Cannot add file +DATA/ora101/datafile/test.260.1. File has an Oracle Managed Files file name.
———————————-
じつは、エラーメッセージを見るとわかるのですが、これは ASM のエラーと
いうより、Oracle Managed File(OMF) のエラーではじかれた様にみえます。
OMF を有効にし、表領域作成時にファイル名を明示的に指定しない場合、デ
フォルトで所定のディレクトリにデータファイルを作成することができます。
所定のディレクトリとは、先週ちらと出てきた、下記の初期化パラメータに
指定されているディレクトリのことです。これを設定しておくと OMF が有効
になります。
SQL> show parameter db_create_file_dest NAME TYPE VALUE --------------------- ----------- --------- db_create_file_dest string +DATA
初期化パラメータ “DB_CREATE_FILE_DEST” の初期値は”なし”です。しかし、
今回は上記の様に ASM の DISK Group が設定されていました。ということは、
ASM で構成すると OUI が自動的にこのパラメータを設定するようです。
OMF を使っているということがわかれば、データファイルのサイズを設定する
ことについても何の問題もないですね。普通に設定できそうです。
では、、
SQL> create tablespace test001 datafile size 20m uniform size 1m segment space management auto; Tablespace created. SQL> select file_name,tablespace_name,bytes/1024/1024 MBytes from dba_data_files FILE_NAME TABLESPACE_NAME MBYTES ---------------------------------------- --------------- ---------- +DATA/ora101/datafile/users.259.1 USERS 5 +DATA/ora101/datafile/sysaux.257.1 SYSAUX 230 +DATA/ora101/datafile/undotbs1.258.1 UNDOTBS1 25 +DATA/ora101/datafile/system.256.1 SYSTEM 440 +DATA/ora101/datafile/test.270.1 TEST 100 +DATA/ora101/datafile/test001.275.3 TEST001 20 6 rows selected. SQL> select initial_extent,next_extent,allocation_type,segment_space_management 2 from dba_tablespaces where tablespace_name = 'TEST001'; INITIAL_EXTENT NEXT_EXTENT ALLOCATIO SEGMEN -------------- ----------- --------- ------ 1048576 1048576 UNIFORM AUTO
なるほど、特に普通の表領域を作成する場合と大きな違いはなさそうです。
ところで、ASM を使う場合 OMF は必須なのでしょうか。
初期化パラメータ “DB_CREATE_FILE_DEST” をはずしてみましょう。
[/sql]
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
——————– ———– ————
db_create_file_dest string +DATA
SQL> alter system set db_create_file_dest = ” scope=memory;
System altered.
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
——————– ———– ————
db_create_file_dest string
SQL> create tablespace test002 datafile size 20m autoextend off
2 uniform size 1m segment space management auto;
create tablespace test002 datafile size 20m autoextend off
*
ERROR at line 1:
ORA-02236: invalid file name
[/sql]
おっと、確かにデータファイルを作成する場所がわからない。
では、ASM の DISK Group を指定して、、
SQL> create tablespace test002 datafile '+DATA' size 20m autoextend off 2 uniform size 1m segment space management auto; Tablespace created.
特に問題ないようだ。じゃ、ついでに表領域を削除してみよう。
SQL> select file_name,tablespace_name,bytes/1024/1024 MBytes from dba_data_files; FILE_NAME TABLESPACE_NAME MBYTES ---------------------------------------- --------------- ---------- +DATA/ora101/datafile/users.259.1 USERS 5 +DATA/ora101/datafile/sysaux.257.1 SYSAUX 230 +DATA/ora101/datafile/undotbs1.258.1 UNDOTBS1 25 +DATA/ora101/datafile/system.256.1 SYSTEM 440 +DATA/ora101/datafile/test.270.1 TEST 100 +DATA/ora101/datafile/test001.275.3 TEST001 20 +DATA/ora101/datafile/test002.274.3 TEST002 20 7 rows selected. SQL> drop tablespace test002; Tablespace dropped. SQL> select file_name,tablespace_name,bytes/1024/1024 MBytes from dba_data_files; FILE_NAME TABLESPACE_NAME MBYTES ---------------------------------------- --------------- ---------- +DATA/ora101/datafile/users.259.1 USERS 5 +DATA/ora101/datafile/sysaux.257.1 SYSAUX 230 +DATA/ora101/datafile/undotbs1.258.1 UNDOTBS1 25 +DATA/ora101/datafile/system.256.1 SYSTEM 440 +DATA/ora101/datafile/test.270.1 TEST 100 +DATA/ora101/datafile/test001.275.3 TEST001 20 6 rows selected.
あっさりと削除できました。別に OMF である必要もないのではなかろうか。
ところで、OMF といえば、表領域削除の際にオプションを指定しなくてもデー
タファイルを削除するはずだ。ASM の場合、ファイルの扱いはどうなるのだろう。
そもそも、ASM でファイルはどのように識別されているのでしょう。
そういえば、ASM 関連の情報が得られる新しい動的パフォーマンスビューがい
くつか増えています。これを見てみましょう。
SQL> select * from v$asm_alias; no rows selected SQL> select * from v$asm_file; no rows selected
あれれ???
これは困った。
夏はバイクに限る 茅ヶ崎にて