查看: 5663|回复: 18

如何得到视图具体存储的block号

[复制链接]
论坛徽章:
19
生肖徽章:羊
日期:2006-09-06 21:18:482012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15CTO参与奖
日期:2009-02-12 11:45:48生肖徽章2007版:龙
日期:2008-12-16 14:04:41奥运会纪念徽章:篮球
日期:2008-10-24 13:29:38奥运会纪念徽章:沙滩排球
日期:2008-07-02 12:09:31生肖徽章2007版:鼠
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
发表于 2007-2-5 14:03 | 显示全部楼层 |阅读模式
视图不是一个段,建立的时候也不能定义存储参数,而且定义信息都是存储在字典中的,那么怎样才能得知,某个视图具体存在字典中的哪一块中呢,常规的dba_xx里都找不到,DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)也用不了,请问应该用哪种方法呢

想dump一个视图的存储结构,只要能满足这个要求就可以啦,谢谢
论坛徽章:
312
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2007-2-5 14:08 | 显示全部楼层
找出视图存在的表,读取视图语句的同时,显示ROWID,看看是否。

使用道具 举报

回复
论坛徽章:
19
生肖徽章:羊
日期:2006-09-06 21:18:482012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15CTO参与奖
日期:2009-02-12 11:45:48生肖徽章2007版:龙
日期:2008-12-16 14:04:41奥运会纪念徽章:篮球
日期:2008-10-24 13:29:38奥运会纪念徽章:沙滩排球
日期:2008-07-02 12:09:31生肖徽章2007版:鼠
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
 楼主| 发表于 2007-2-5 14:10 | 显示全部楼层
那肯定是表的rowid了啊

使用道具 举报

回复
论坛徽章:
312
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2007-2-5 14:17 | 显示全部楼层
最初由 mustapha 发布
[B]那肯定是表的rowid了啊 [/B]


你问的不是这个吗:
把视图当作数据看,找出这个数据所在的ROWID?

使用道具 举报

回复
论坛徽章:
3
数据库板块每日发贴之星
日期:2007-01-19 01:03:19数据库板块每日发贴之星
日期:2007-02-06 01:02:43会员2007贡献徽章
日期:2007-09-26 18:42:10
发表于 2007-2-5 14:22 | 显示全部楼层
system@ORA10R2> select rowid,owner,view_name from dba_views where view_name='VEW
_T';
select rowid,owner,view_name from dba_views where view_name='VEW_T'
                                  *
第 1 行出现错误:
ORA-01445: 无法从不带保留关键字的表的联接视图中选择 ROWID 或采样


system@ORA10R2> select owner,view_name from dba_views where view_name='VEW_T';

OWNER                          VIEW_NAME
------------------------------ ------------------------------
SYSTEM                         VEW_T

使用道具 举报

回复
论坛徽章:
19
生肖徽章:羊
日期:2006-09-06 21:18:482012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15CTO参与奖
日期:2009-02-12 11:45:48生肖徽章2007版:龙
日期:2008-12-16 14:04:41奥运会纪念徽章:篮球
日期:2008-10-24 13:29:38奥运会纪念徽章:沙滩排球
日期:2008-07-02 12:09:31生肖徽章2007版:鼠
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
 楼主| 发表于 2007-2-5 14:23 | 显示全部楼层
不是啊,我是想看某个视图本身具体存储在哪一个block里

使用道具 举报

回复
论坛徽章:
3
数据库板块每日发贴之星
日期:2007-01-19 01:03:19数据库板块每日发贴之星
日期:2007-02-06 01:02:43会员2007贡献徽章
日期:2007-09-26 18:42:10
发表于 2007-2-5 14:31 | 显示全部楼层
system@ORA10R2> alter session set events '10046 trace name context forever,level 12';

会话已更改。

system@ORA10R2> create view vew_t as select * from ade.t;

视图已创建。

得到Trace file
insert into view$(obj#,cols,audit$,intcols,property,flags,textlength,text)values(:1,:2,:3,:4,:5,:6,:7,:8)
END OF STMT
PARSE #13:c=0,e=1763,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=21356352922
BINDS #13:
kkscoacd
Bind#0
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=087c47e8  bln=22  avl=04  flg=05
  value=53663[/COLOR]
Bind#1
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=087c47c4  bln=24  avl=02  flg=05
  value=3
Bind#2
  oacdty=01 mxl=128(38) mxlc=00 mal=00 scl=00 pre=00
  oacflg=18 fl2=0001 frm=01 csi=852 siz=128 off=0
  kxsbbbfp=65682260  bln=128  avl=38  flg=09
  value="--------------------------------------"
Bind#3
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=087c47a0  bln=24  avl=02  flg=05
  value=3
Bind#4
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=087c477c  bln=24  avl=01  flg=05
  value=0
Bind#5
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=087c4758  bln=24  avl=01  flg=05
  value=0
Bind#6
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=087c4734  bln=24  avl=02  flg=05
  value=40
Bind#7
  oacdty=01 mxl=128(40) mxlc=00 mal=00 scl=00 pre=00
  oacflg=18 fl2=0001 frm=01 csi=852 siz=128 off=0
  kxsbbbfp=074830dc  bln=128  avl=40  flg=09
  value="select "ENAME","DEPTNO","SAL" from ade.t"

system@ORA10R2> conn system/yqtfln as sysdba
已连接。

sys@ORA10R2> select rowid from view$ where obj#=53663;

ROWID
------------------
AAAAA/AABAAABr5AAE

使用道具 举报

回复
论坛徽章:
22
蛋疼蛋
日期:2011-09-02 08:49:42ITPUB元老
日期:2013-10-29 19:15:25
发表于 2007-2-5 14:34 | 显示全部楼层
view本身就是一个定义 存储在数据字典里
你要看它存储在哪 直接看数据字典表存在哪喽~

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
发表于 2007-2-5 14:34 | 显示全部楼层
视图不存储数据,何来视图的存储结构

数据字典在内存中以放在row cache中的,也就是以行为单位load的,你定位其对应的block做什么?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
发表于 2007-2-5 14:40 | 显示全部楼层
不知道这个是不是你要的

[php]

SYS@ning>create view v_test as select * from ning.test;

View created.


SYS@ning>select object_id from all_objects where object_name='V_TEST';

OBJECT_ID
----------
     10540


SYS@ning>select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_numb
er(rowid) from view$ where obj#=10540;

DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------ ------------------------------------
                                   1                                14184
--

[/php]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表