我有一个表的名称,我想找出oracle存储的文件。 有办法吗?
非常感谢,抱歉我的英语很差!
答案 0 :(得分:1)
Oracle在名为tablespaces的逻辑数据存储上保存其表。表空间抽象表的数据的实际OS位置。
如果您拥有该对象,可以通过查询user_tables找到该表空间。
select TABLE_NAME,TABLESPACE_NAME
from USER_TABLES
where TABLE_NAME='<your table name>';
或all_tables如果您不拥有它但可以访问它。
select OWNER,TABLE_NAME,TABLESPACE_NAME
from ALL_TABLES
where OWNER='<owner of the table>'
and TABLE_NAME='<your table name>';
表空间有一个或多个数据文件,它们是磁盘存储的实际分配。存储被指定为范围,其表示数据文件的块,即磁盘空间。如果表空间有多个数据文件,则可以从任何这些文件中为表分配范围。
如果要查找扩展区所在的文件,则需要访问dba_extents和dba_data_files。 file_name是数据文件的绝对OS路径。
select F.FILE_NAME, E.OWNER, E.SEGMENT_NAME,E.SEGMENT_TYPE
from dba_extents E
join dba_data_files F
on E.FILE_ID = F.FILE_ID
where E.OWNER='<owner of the table>'
and E.SEGMENT_NAME='<your table name>';
确保替换'和实际的所有者和表名。