ORA-01219: データベースがオープンしていません: 固定の表/ビューに対する問合せのみ可能です
この時問い合わせたビューはいずれもマウント状態で参照できるビューなのですが...?
実行したのは以下のようなSQL。
COL FILE# FORMAT 999 COL FILE_NAME FORMAT A36 COL TABLE_SPACE_NAME FORMAT A10 COL STATUS FORMAT A7 COL ERROR FORMAT A16 SELECT RF.FILE#, DF.NAME FILE_NAME, TS.NAME TABLE_SPACE_NAME, DF.STATUS, RF.ERROR, RF.CHANGE#, RF.TIME FROM V$RECOVER_FILE RF INNER JOIN V$DATAFILE DF ON DF.FILE# = RF.FILE# INNER JOIN V$TABLESPACE TS ON TS.TS# = DF.TS# /
リカバリが必要なデータ・ファイルを取得するSQLなのですが、データ・ファイル名と表領域名も同時に取得するために、V$RECOVER_FILE、V$DATAFILE、V$TABLESPACEの3つのビューを内部結合しています。
SQLとしては正しく、データベースをオープンした状態ではエラーにならないのですが、なぜかマウント状態ではエラーとなってしまいます。
ところが、以下のように結合部分を旧来の文法で書き直すと、マウント状態でも正常に結果が返ってきます。
COL FILE# FORMAT 999 COL FILE_NAME FORMAT A36 COL TABLE_SPACE_NAME FORMAT A10 COL STATUS FORMAT A7 COL ERROR FORMAT A16 SELECT RF.FILE#, DF.NAME FILE_NAME, TS.NAME TABLE_SPACE_NAME, DF.STATUS, RF.ERROR, RF.CHANGE#, RF.TIME FROM V$RECOVER_FILE RF, V$DATAFILE DF, V$TABLESPACE TS WHERE DF.FILE# = RF.FILE# AND TS.TS# = DF.TS# /
マウント状態では"INNER JOIN"は使えないという"仕様?"なのでしょうか?