小提示 如何定位一个数据库表在物理上的存储位置

又是违规昵称 2009-08-29 01:25:57
【原创 转载请注明作者】
【如有问题请联系lpc19598188@gmail.com 欢迎指教】

OS环境hp ux 11.31
数据库oracle rac 10.2.0.4

如何定位一个数据库表在物理上的存储位置

如果数据库中的某张表非常的繁忙,而它在物理上只存储在阵列的一个盘上,那么必然导致io瓶颈(对于已经实现了条带化存储的数据库当然不存在这种情况):阵列上的某个磁盘非常的繁忙,而其它的磁盘都处于空闲状态。

如何定位热点的块和表,暂且不在本文的讨论范围内。

定位出来了表在物理上的存储位置后,可以经过适当的io调整,缓解热表块的io问题。整个过程只需要两步:


1. 找出表所对应的数据文件
SQL> SELECT FILE_ID,FILE_NAME FROM Dba_Data_Files df WHERE EXISTS
2 (SELECT 1 FROM
3 (SELECT distinct(dbms_rowid.rowid_relative_fno(ROWID)) file_id FROM ARC_C_ACCT) t
4 WHERE t.file_id = df.file_id );


FILE_ID FILE_NAME
---------- --------------------------------------------------------------------------------
8 /dev/vgepm/rlvdat1_32G
9 /dev/vgepm/rlvdat2_32G
10 /dev/vgepm/rlvdat3_32G
39 /dev/vgepm/rlvdat12_8G
51 /dev/vgepm/rlvdat23_8G

2. 在操作系统上根据文件名去找对应的物理磁盘
pmljrdb1#[/]lvdisplay -v /dev/vgepm/lvdat1_32G
--- Logical volumes ---
LV Name /dev/vgepm/lvdat1_32G
VG Name /dev/vgepm
LV Permission read/write
LV Status available/syncd
Mirror copies 0
Consistency Recovery NOMWC
Schedule parallel
LV Size (Mbytes) 32768
Current LE 256
Allocated PE 256
Stripes 0
Stripe Size (Kbytes) 0
Bad block on
Allocation strict
IO Timeout (Seconds) default

--- Distribution of logical volume ---
PV Name LE on PV PE on PV
/dev/dsk/c2t0d1 256 256

--- Logical extents ---
LE PV1 PE1 Status 1
00000 /dev/dsk/c2t0d1 01228 current
00001 /dev/dsk/c2t0d1 01229 current
00002 /dev/dsk/c2t0d1 01230 current
00003 /dev/dsk/c2t0d1 01231 current
00004 /dev/dsk/c2t0d1 01232 current
00005 /dev/dsk/c2t0d1 01233 current
00006 /dev/dsk/c2t0d1 01234 current
00007 /dev/dsk/c2t0d1 01235 current
00008 /dev/dsk/c2t0d1 01236 current
00009 /dev/dsk/c2t0d1 01237 current
00010 /dev/dsk/c2t0d1 01238 current
00011 /dev/dsk/c2t0d1 01239 current
00012 /dev/dsk/c2t0d1 01240 current
00013 /dev/dsk/c2t0d1 01241 current
00014 /dev/dsk/c2t0d1 01242 current
00015 /dev/dsk/c2t0d1 01243 current

......
...全文
184 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
l1t 2009-08-30
  • 打赏
  • 举报
回复
不错的资料
13abyKnight 2009-08-30
  • 打赏
  • 举报
回复
sorry,我的方法错啦!! 应该使用dba_data_files
13abyKnight 2009-08-30
  • 打赏
  • 举报
回复
楼主,
首先,找出数据库中库对应在表空间的物理位置。。

select tablespace_name,status,contents from dba_tablespaces;

找出数据库对应的表空间在对应找数据文件.

select file_name,byte,autoextensible from dba_data_files where tablespace_name='表空间名';

这样就能找出某个数据库的某个表空间对应的某个数据文件--》这样在继续找他所对应的表的物理位置..

不知道,这个流程是否正确。。。
inthirties 2009-08-29
  • 打赏
  • 举报
回复
顶,学习
Dave 2009-08-29
  • 打赏
  • 举报
回复
学习,多谢楼主分享..

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧