オフラインにしたら接続できない。
でも、実際にどういうことになるのか実験してみたい。
今のデータファイル・表領域と、ステータス。
USERS表領域をOFFLINEにしてみる。
SQL> select file_name,tablespace_name,status,online_status from dba_data_files;
FILE_NAME TABLESPACE_NAME STATUS ONLINE_STATUS
--------------------------------------------- -------------------- ------------ ---------------
/opt/oracle/oradata/orcl01/users01.dbf USERS AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/sysaux01.dbf SYSAUX AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/undotbs01.dbf UNDOTBS1 AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/system01.dbf SYSTEM AVAILABLE SYSTEM
/opt/oracle/oradata/orcl01/example01.dbf EXAMPLE AVAILABLE ONLINE
SQL> alter tablespace USERS offline;
表領域が変更されました。
SQL> select file_name,tablespace_name,status,online_status from dba_data_files;
FILE_NAME TABLESPACE_NAME STATUS ONLINE_STATUS
--------------------------------------------- -------------------- ------------ ---------------
/opt/oracle/oradata/orcl01/users01.dbf USERS AVAILABLE OFFLINE
/opt/oracle/oradata/orcl01/sysaux01.dbf SYSAUX AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/undotbs01.dbf UNDOTBS1 AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/system01.dbf SYSTEM AVAILABLE SYSTEM
/opt/oracle/oradata/orcl01/example01.dbf EXAMPLE AVAILABLE ONLINE
ほい、USERS表領域がOFFLINEになった。
するとどうなるのか。
当然のことながら、USERS表領域にあるオブジェクトに接続できなくなる。
SQL> select * from mojibake_tbl;
select * from mojibake_tbl
*
行1でエラーが発生しました。:
ORA-00376: ファイル4を読み込むことはできません。
ORA-01110: データファイル4: '/opt/oracle/oradata/orcl01/users01.dbf'
んじゃ、せっかくだからデータファイル名を変更したりしてみよう。
SQL> alter tablespace USERS rename datafile '/opt/oracle/oradata/orcl01/users01.dbf' to
2 '/opt/oracle/oradata/orcl01/users02.dbf';
alter tablespace USERS rename datafile '/opt/oracle/oradata/orcl01/users01.dbf' to
*
行1でエラーが発生しました。:
ORA-01525: データファイル名の変更中にエラーが発生しました。
ORA-01141: データファイル4の名前の変更でエラーが発生しました。 -
新規ファイル'/opt/oracle/oradata/orcl01/users02.dbf'は見つかりません。
ORA-01110: データファイル4: '/opt/oracle/oradata/orcl01/users01.dbf'
ORA-27037: ファイル・ステータスを取得できません。
Intel SVR4 UNIX Error: 2: No such file or directory
Additional information: 3
ありゃ、怒られた。
データファイルをRENAMEするんだったら、OS側で先にRENAMEしておかないといけないのね。
SQL> !
bash-3.00$ cd /opt/oracle/oradata/orcl01
bash-3.00$ mv users01.dbf users02.dbf
bash-3.00$ exit
SQL> alter tablespace USERS rename datafile '/opt/oracle/oradata/orcl01/users01.dbf' to
2 '/opt/oracle/oradata/orcl01/users02.dbf';
表領域が変更されました。
SQL> select file_name,tablespace_name,status,online_status from dba_data_files;
FILE_NAME TABLESPACE_NAME STATUS ONLINE_STATUS
--------------------------------------------- -------------------- ------------ ---------------
/opt/oracle/oradata/orcl01/users02.dbf USERS AVAILABLE OFFLINE
/opt/oracle/oradata/orcl01/sysaux01.dbf SYSAUX AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/undotbs01.dbf UNDOTBS1 AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/system01.dbf SYSTEM AVAILABLE SYSTEM
/opt/oracle/oradata/orcl01/example01.dbf EXAMPLE AVAILABLE ONLINE
おぉ、「users02.dbf」に変わってる。
では、ONLINEに戻す。
SQL> alter tablespace USERS online;
表領域が変更されました。
SQL> select file_name,tablespace_name,status,online_status from dba_data_files;
FILE_NAME TABLESPACE_NAME STATUS ONLINE_STATUS
--------------------------------------------- -------------------- ------------ ---------------
/opt/oracle/oradata/orcl01/users02.dbf USERS AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/sysaux01.dbf SYSAUX AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/undotbs01.dbf UNDOTBS1 AVAILABLE ONLINE
/opt/oracle/oradata/orcl01/system01.dbf SYSTEM AVAILABLE SYSTEM
/opt/oracle/oradata/orcl01/example01.dbf EXAMPLE AVAILABLE ONLINE
当然のことながら、表領域に接続できるようになった。
SQL> select * from mojibake_tbl;
NUM WD_TYPE WD_STR
---- ------------------------ ------------------------------------------------------------------------
1 全角記号(1) 、 。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|
2 全角記号(2) …‥‘’“”()〔〕[]{}〈〉《》「」『』【】
3 全角記号(3) +-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@
4 全角記号(4) §☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬
5 全角記号(5) ⇒⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯?
(文字化けするので以下略)
現場じゃ、開発環境だってこういう実験はなかなかできないもんなぁ・・・。
お自宅学習環境、お気楽でいいですわ。