ASM構成でOS上に表領域を作成したら
Oracle RAC環境ではASM上にデータファイルを作成するのが普通だが
ふと、OS上に表領域を作成できるのか気になり試してみた。
環境
oracle RAC 12c ( 2node RAC )
1. 表領域の作成
ノード1にて表領域をOS上に作成する。
ノード1
oracle$ sqlplus / as sysdba
SQL> connect / as sysdba
SQL> create tablespace test_tblsp datafile '/tmp/test_tblsp.dbf' size 1m;
表領域が作成されました。
この状態でノード1、ノード2それぞれのアラートログを見てみる。
アラートログ:ノード1
Wed May 09 19:24:57 2018
create tablespace test_tblsp datafile '/tmp/test_tblsp.dbf' size 1m
Completed: create tablespace test_tblsp datafile '/tmp/test_tblsp.dbf' size 1m
アラートログ:ノード2
Wed May 09 19:25:01 2018
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl_2/trace/orcl_2_dbw0_26821.trc:
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01110: data file 7: '/tmp/test_tblsp.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
表領域を作成したノード1では実際にデータファイルが作成されエラーは出ず。
一方、ノード2ではファイルが作成されずエラーが出る。大方の予想どおり。
2. 表の作成
せっかくなので表を作成してみる。
ノード1
SQL> create table test1 ( id varchar2(30) primary key, address varchar2(80) ) tablespace test_tblsp;
表が作成されました。
SQL> desc test1
名前 NULL? 型
----------------------------------------- -------- ----------------------------
ID NOT NULL VARCHAR2(30)
ADDRESS VARCHAR2(80)
SQL>
作成されるし、表定義も確認できる。
一方、ノード2で確認しようとすると。。。
ノード2
SQL> desc test1
ERROR:
ORA-01157: データファイル7を識別/ロックできません -
DBWRトレース・ファイルを参照してください ORA-01110:
データファイル7: '/tmp/test_tblsp.dbf'
エラーで見られない。
3. レコードを挿入
せっかくなのでレコードを入れてみる。
ノード1
SQL> insert into test1 values ( 'hoge1', 'Foobar Street' );
1行が作成されました。
SQL> commit;
コミットが完了しました。
SQL> alter system checkpoint;
システムが変更されました。
SQL>
SQL> select * from test1;
ID
--------------------------------------------------------------------------------
ADDRESS
--------------------------------------------------------------------------------
hoge1
Foobar Street
SQL>
レコードも見られる。
一方、ノード2はというと。。。
ノード2
SQL> select * from test1;
select * from test1
*
行1でエラーが発生しました。:
ORA-01157: データファイル7を識別/ロックできません -
DBWRトレース・ファイルを参照してください ORA-01110:
データファイル7: '/tmp/test_tblsp.dbf'
SQL>
やっぱりダメみたい。
まとめ
表領域を作成したノード上にはファイルが作成され、表の作成、レコードの挿入もできるが その他のノードではファイルが作成されないため当該の表領域への操作はエラーとなる模様。