如何查找创建Oracle DBF文件的默认位置?

时间:2014-11-19 12:37:53

标签: sql oracle dbf

在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视图 - 意识到此视图和其他视图仅可供数据库管理员访问

还有一些限制:

  • Oracle数据库可能安装在具有不同操作系统的另一台计算机上。
  • 我的应用程序可能会与不是的用户连接到数据库 管理员。
  • 最好使用SQL查询。

非常感谢任何帮助。

8 个答案:

答案 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)

将这句话与系统用户一起使用:

  Select * from dba_data_files ;

enter image description here

答案 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);