在Oracle数据库中创建新的表空间期间,用户必须输入他(或她)想要使用的DBF文件名。然后在特定位置创建DBF文件。
用户还可以指定应在其中创建DBF文件的路径。
我需要找到一种方法来获取DBF文件的默认位置。
我知道如何使用SQL查询在MS Sql中执行此操作:
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
视图 - 意识到此视图和其他视图仅可供数据库管理员访问还有一些限制:
非常感谢任何帮助。
答案 0 :(得分:5)
要确定默认数据文件位置,我使用以下查询:
SELECT DISTINCT SUBSTR (file_name,
1,
INSTR (file_name,
'/',
-1,
1))
FROM DBA_DATA_FILES
WHERE tablespace_name = 'SYSTEM'
它适用于ME,因为我们所有的数据文件都安装在同一目录中。
答案 1 :(得分:4)
默认情况下,.dbf
文件存储在以下内容中:
/u01/app/oracle/product/__VERSION__/__DB_NAME__/dbs
其中__VERSION__
可能类似于“11.0.1.1”而__DB_NAME__
是您的数据库
答案 2 :(得分:4)
答案 3 :(得分:2)
DB_CREATE_FILE_DEST
指定Oracle管理的数据文件的默认位置(请参阅数据库参考中的its entry)。
您可以使用以下SQL查询检索其值:
select value from v$parameter where name = 'db_create_file_dest'
要访问v$parameter
视图,用户至少需要SELECT_CATALOG_ROLE
角色。
答案 4 :(得分:1)
Oracle中的数据文件没有真正的默认位置,最接近的是ORACLE_HOME下的目录。如果我记得(我现在无法访问Oracle数据库来验证这一点),目录结构会因操作系统和版本而略有不同。
没有默认值的原因是您通常希望跨物理驱动器分布数据以避免争用。您经常会有一些表几乎在所有时间都被击中,而其他表的访问频率则低得多。至少,您希望将临时和重做/撤消与数据分开。
答案 5 :(得分:0)
尝试一下:
select substr(name, 1, instr(name, 'USER') - 1) prefix from v$datafile where name like '%USER%';
答案 6 :(得分:0)
您可以使用以下方式查看表空间的默认位置:
show parameter DB_CREATE_FILE_DEST;
您可以使用来更改参数
alter system set DB_CREATE_FILE_DEST='/ORCL/u02/app/oracle/oradata/ORCL';
答案 7 :(得分:0)
从DBA_DATA_FILES WHERE tablespace_name ='SYSTEM'中选择DISTINCT SUBSTR(file_name,1,instr(file_name,'SYSTEM')-1);