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

问题描述 投票:2回答:7

在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查询完成。

任何帮助深表感谢。

sql oracle dbf
7个回答
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角色。


5
投票

要确定默认数据文件位置,我使用以下查询:

SELECT DISTINCT SUBSTR (file_name,
                        1,
                        INSTR (file_name,
                               '/',
                               -1,
                               1))
  FROM DBA_DATA_FILES
 WHERE tablespace_name = 'SYSTEM'

它适用于ME,因为我们所有的数据文件都安装在同一目录中。


4
投票

默认情况下,.dbf文件存储在以下内容中:

/u01/app/oracle/product/__VERSION__/__DB_NAME__/dbs

其中__VERSION__可能是“11.0.1.1”,__DB_NAME__是你的DB


4
投票

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

  Select * from dba_data_files ;

enter image description here


1
投票

Oracle中的数据文件没有真正的默认位置,最接近的是ORACLE_HOME下的目录。如果我记得(我目前无法访问Oracle数据库来验证这一点),目录结构会根据操作系统和版本略有不同。

没有默认值的原因是因为您通常希望跨物理驱动器分布数据以避免争用。您经常会有一些表几乎在所有时间都被击中,而其他表的访问频率则低得多。至少,您希望将临时和重做/撤消与数据分开。


0
投票

试试这个:

select substr(name, 1, instr(name, 'USER') - 1) prefix from v$datafile where name like '%USER%'; 

0
投票

您可以使用查看表空间的默认位置

show parameter DB_CREATE_FILE_DEST;

您可以使用更改参数

alter system set DB_CREATE_FILE_DEST='/ORCL/u02/app/oracle/oradata/ORCL';
© www.soinside.com 2019 - 2024. All rights reserved.