Oracle Databaseで新しい表領域を作成する際、ユーザーは使用するDBFファイル名を入力する必要があります。次に、DBFファイルが特定の場所に作成されます。
ユーザーは、DBFファイルを作成するパスを指定することもできます。
DBFファイルのデフォルトの場所を取得する方法を見つける必要があります。
私はSQLクエリを使用してMSSqlでそれを行う方法を知っています:
select substring(physical_name, 1, charindex(N'master.mdf', lower(physical_name)) - 1) from master.sys.master_files where database_id = 1 and file_id = 1;
しかし、Oracleでそれを行う方法がわかりません。私はいくつかのことを試しました:
all_directories
でクエリを実行しました-そこに情報が見つかりませんでしたv$datafile
ビューを見てください-このビューと他のビューはデータベース管理者のみがアクセスできることがわかりましたまた、いくつかの制限があります。
どんな助けでも大歓迎です。
DB_CREATE_FILE_DEST
は、Oracleが管理するデータファイルのデフォルトの場所を指定します(データベースリファレンスの そのエントリ を参照)。
次のSQLクエリを使用してその値を取得できます。
select value from v$parameter where name = 'db_create_file_dest'
v$parameter
ビューにアクセスするには、ユーザーは少なくともSELECT_CATALOG_ROLE
ロールを必要とします。
デフォルトでは、.dbf
ファイルは次のような場所に保存されます。
/u01/app/Oracle/product/__VERSION__/__DB_NAME__/dbs
ここで、__VERSION__
は「11.0.1.1」のようなもので、__DB_NAME__
はDBです。
デフォルトのデータファイルの場所を決定するために、次のクエリを使用しています。
SELECT DISTINCT SUBSTR (file_name,
1,
INSTR (file_name,
'/',
-1,
1))
FROM DBA_DATA_FILES
WHERE tablespace_name = 'SYSTEM'
すべてのデータファイルが同じディレクトリにインストールされているため、MEで機能します。
Oracleにはデータファイルの実際のデフォルトの場所はありません。最も近いのはOracle_HOMEの下のディレクトリです。思い出すと(現時点では、これを確認するためのOracle DBにアクセスできません)、ディレクトリ構造はOSとバージョンによってわずかに異なります。
デフォルトがない理由は、通常、競合を避けるためにデータを物理ドライブ全体に分散させたいためです。多くの場合、ほとんどの場合ヒットするテーブルもあれば、アクセス頻度がはるかに低いテーブルもあります。少なくとも、一時的なものとやり直し/やり直しをデータから分離しておく必要があります。
表領域のデフォルトの場所は、
show parameter DB_CREATE_FILE_DEST;
パラメータは次のように変更できます
alter system set DB_CREATE_FILE_DEST='/ORCL/u02/app/Oracle/oradata/ORCL';
これを試して:
select substr(name, 1, instr(name, 'USER') - 1) prefix from v$datafile where name like '%USER%';