web-dev-qa-db-ja.com

TABLESPACE作成エラー

テーブルスペースを作成すると「ORA-01537」というエラーが発生します。

create tablespace "VOLUMT" datafile 'VOLUMT.dbf' size 250M autoextend on;

すると、次のようになります。

1行目のエラー:ORA-01537:ファイル「VOLUMT.dbf」を追加できません-ファイルはすでにデータベースの一部です

VOLUMTのテーブルスペース名をTEST01に変更するだけで機能します。

テーブルスペースが作成されました。

それで、私はdbのディレクトリに入り、関連するテーブルスペースを検索しました。

${HOME}/Oracle/db/oradata/ORAC12

しかし、私は何も見つけることができません。また、テーブルスペースの作成に「VOLUMT」を使用する必要があります。

-追加-

 DBA_DATA_FILESからTABLESPACE_NAMEを選択します; 
 
 TABLESPACE 
 ---------- 
 SYSTEM 
 SYSAUX 
ユーザー
 TEST01 

TEST01テーブルスペースは表示されますが、ディレクトリにデータファイルが見つかりません。また、その中にVOLLMTテーブルスペースが見つかりません。

ありがとうございました。

1
owcred601

問題の解決策は次のとおりです。

VOLUMTという名前のテーブルスペースを作成しますが、ファイル名をVOLUMT1.dbfのように少し変更するか、ファイルを保存する別のディレクトリパスを指定します。

create tablespace "VOLUMT" datafile 'VOLUMT1.dbf' size 250M autoextend on;

それがうまくいったかどうかを確認して教えてください。

0
Husam Mohamed

みんな….

まず、返信してくださってありがとうございます。

以下を入力すると

 select file_name、
 file_id、
 tablespace_name、
 status、online_status 
 from dba_data_files 
 order by tablespace_name; 

出力は

ファイル名
 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - ----------------------------------------- 
 FILE_ID TABLESPACE STATUS ONLINE_ 
 ---------- ---------- --------- ------- 
/home/Oracle /db/oradata/ORAC12/ID/sysaux01​​.dbf
 28 SYSAUX AVAILABLE ONLINE 
 
/home/Oracle/db/oradata/ORAC12/ID/system01.dbf 
 27 SYSTEM AVAILABLE SYSTEM 
 
/home/Oracle/db/oradata/ORAC12/ID/ID_user01.dbf 
 29 USERS AVAILABLE ONLINE 

「VOLUMT」などのテーブルスペースはありません。 「TEST01」テーブルスペースの作成を再試行すると、すでに削除されていますが、「ファイルはすでに存在します」と表示されます。

ディレクトリに移動すると、他のSIDもあります。そしてそのうちのひとつは「VOLUMT」。ただし、「SID」が異なるため、同じ名前のテーブルスペースを使用できます。

1
owcred601

表示されるエラーは、同じ名前の既存のデータファイルがあることを示していますVOLUMT.dbf

同じ名前の既存のファイルがあるかどうかを確認してください。

SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_DATA_FILES WHERE LOWER(FILE_NAME) LIKE '%volumt.dbf';

TEST01のデータファイルパスを見つけるには、次のステートメントを使用して簡単にクエリできます。

SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME LIKE 'TEST01';
0
Husam Mohamed

あなたはテーブルスペースを見ているだけで、データベースファイルを見ているわけではありません。 dba_data_files データディクショナリビューをクエリしてみてください。

コマンド例:

set pages 50
set lines 230
column file_name format a60

select file_name, file_id, tablespace_name, status,online_status 
from dba_data_files order by tablespace_name;

これにより、すべてのデータベースファイルが一覧表示され、それらが属するテーブルスペースが表示されます。


あなたのコメントへの応答

既に使用されているデータベースファイル名を確認するために、SIDを切り替えて各SIDに対してクエリを実行する必要がある場合があります。

同じディレクトリ内の異なるSIDと異なるテーブルスペースに同じデータベースファイル(名前)を使用することはできません。

可能な解決策

  1. `VOLUMT.dbfデータベースファイルでテーブルスペースVOLUMTを再作成できるようにするには、現在アタッチされているテーブルスペースからデータベースファイルVOLUMT.dbfを削除する必要があります。

  2. 別のディレクトリにデータベースファイルVOLUMT.dbfを使用して、テーブルスペースVOLUMTを作成する必要があります。

問題はテーブルスペースVOLUMTではなく、別のSIDと別のテーブルスペースにすでに存在するデータベースファイルVOLUMT.dbfです。

0