[20241010]视图定义查询问题.txt --//别人问的问题,在pdb下使用tpt的v2.sql脚本无法查询视图定义,测试验证为什么。 1.环境: SCOTT@book01p> @ ver2 ============================== PORT_STRING : x86_64/Linux 2.4.xx VERSION : 21.0.0.0.0 BANNER : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production BANNER_FULL : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 BANNER_LEGACY : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production CON_ID : 0 PL/SQL procedure successfully completed. 2.测试: SYS@book01p> @ v2 DBA_EXPRESSION_STATISTICS Show SQL text of views matching "DBA_EXPRESSION_STATISTICS"... V_OWNER VIEW_NAME TEXT ------------------------- ------------------------------ ------------------------------------------------- SYS DBA_EXPRESSION_STATISTICS no rows selected --//确实看不到该视图的定义。查看v2.sql脚本,发现查询的是text字段。 select owner v_owner, view_name, text from dba_views ..... $ ocol.sh sys.DBA_views text Name Null? Type ------------------------------- -------- ---------------------------- 3 TEXT_LENGTH NUMBER 4 TEXT LONG 5 TEXT_VC VARCHAR2(4000) 6 TYPE_TEXT_LENGTH NUMBER 7 TYPE_TEXT VARCHAR2(4000) 8 OID_TEXT_LENGTH NUMBER 9 OID_TEXT VARCHAR2(4000) --//text字段类型是long类型。 SYS@book01p> select text c100 from dba_views where view_name='DBA_EXPRESSION_STATISTICS'; C100 ---------------------------------------------------------------------------------------------------- --//确实没有! SYS@book01p> select text_vc c100 from dba_views where view_name='DBA_EXPRESSION_STATISTICS'; C100 ---------------------------------------------------------------------------------------------------- select u.name, o.name, v.expid, decode(v.snapshot_id, 0, 'CUMULATIVE', 1, 'LATEST', 'WINDOW'), v.evaluation_count, h.fixed_cost, v.dynamic_cost, h.text, h.ctime, v.last_modified from obj$ o, user$ u, exp_head$ h, -- latest expressions ((select nvl(ds.exp_id, ms.expid) expid, nvl(ds.objn, ms.objnum) objn, 1 snapshot_id, (nvl(ds.eval_count, 0) + nvl(ms.evalcnt, 0)) evaluation_count, nvl(ms.dyncost, ds.dynamic_cost) dynamic_cost, decode(ms.expid, null, ds.last_modified, systimestamp) last_modified from (select * from exp_stat$ where snapshot_id = 1) ds full outer join (select expid, objnum, dyncost, evalcnt from gv$exp_stats where evalcnt > 0) ms on ds.exp_id = ms.expid and ds.objn = ms.objnum) union all -- window expression if window capture mode is OPEN (select nvl(ds.exp_id, ms.expid) expid, nvl(ds.objn, ms.objnum) objn, 2 snapshot_id, (nvl(ds.eval_count, 0) + nvl(ms.evalcnt, 0)) evaluation_count, nvl(ms.dyncost, ds.dynamic_cost) dynamic_cost, decode(ms.expid, null, ds.last_modified, systimestamp) last_modified from (select * from exp_stat$ where snapshot_id = 2) ds full outer join (select expid, objnum, dyncost, evalcnt from gv$exp_stats where evalcnt > 0) ms on ds.exp_id = ms.expid and ds.objn = ms.objnum where dbms_stats_internal.check_window_capture_mode() = 1) union all -- window expressions if window capture mode is CLOSED (select exp_id expid, objn, snapshot_id, eval_count evaluation_count, dynamic_cost, last_modified from exp_stat$ where snapshot_id = 2 and dbms_stats_internal.check_window_capture_mode() = 0) union all -- cumulative expressions (select exp_id expid, objn, snapshot_id, eval_count evaluation_count, dynamic_cost, last_modified from exp_stat$ where snapshot_id = 0)) v where v.objn = o.obj# and v.expid = h.exp_id and o.owner# = u.user# and o.subname is null -- check for dba privileges and o.namespace = 1 and o.remoteowner IS NULL and o.linkname IS NULL --//很明显现在的oracle版本已经不在text保存定义内容。 --//而以sys用户登录: SYS@book> select text c100 from dba_views where view_name='DBA_EXPRESSION_STATISTICS' ; C100 ---------------------------------------------------------------------------------------------------- select u.name, o.name, v.expid, decode(v.snapshot_id, 0, 'CUMULATIVE', 1, 'LATEST', 'WINDOW'), v.evaluation_count, h.fixed_cost, v.dynamic_cost, h.text, h.ctime, v.last_modified from obj$ o, user$ u, exp_head$ h, -- latest expressions ((select nvl(ds.exp_id, ms.expid) expid, nvl(ds.objn, ms.objnum) objn, 1 snapshot_id, (nvl(ds.eval_count, 0) + nvl(ms.evalcnt, 0)) evaluation_count, nvl(ms.dyncost, ds.dynamic_cost) dynamic_cost, decode(ms.expid, null, ds.last_modified, systimestamp) last_modified from (select * from exp_stat$ where snapshot_id = 1) ds full outer join (select expid, objnum, dyncost, evalcnt from gv$exp_stats where evalcnt > 0) ms on ds.exp_id = ms.expid and ds.objn = ms.objnum) union all -- window expression if window capture mode is OPEN (select nvl(ds.exp_id, ms.expid) expid, nvl(ds.objn, ms.objnum) objn, 2 snapshot_id, (nvl(ds.eval_count, 0) + nvl(ms.evalcnt, 0)) evaluation_count, nvl(ms.dyncost, ds.dynamic_cost) dynamic_cost, decode(ms.expid, null, ds.last_modified, systimestamp) last_modified from (select * from exp_stat$ where snapshot_id = 2) ds full outer join (select expid, objnum, dyncost, evalcnt from gv$exp_stats where evalcnt > 0) ms on ds.exp_id = ms.expid and ds.objn = ms.objnum where dbms_stats_internal.check_window_capture_mode() = 1) union all -- window expressions if window capture mode is CLOSED (select exp_id expid, objn, snapshot_id, eval_count evaluation_count, dynamic_cost, last_modified from exp_stat$ where snapshot_id = 2 and dbms_stats_internal.check_window_capture_mode() = 0) union all -- cumulative expressions (select exp_id expid, objn, snapshot_id, eval_count evaluation_count, dynamic_cost, last_modified from exp_stat$ where snapshot_id = 0)) v where v.objn = o.obj# and v.expid = h.exp_id and o.owner# = u.user# and o.subname is null -- check for dba privileges and o.namespace = 1 and o.remoteowner IS NULL and o.linkname IS NULL --//而以sys用户登录能够查询到相关定义。也就是以pdb登录使用原来的脚本查询视图定义查询不到信息。 --//而查询text_vc的缺点是仅仅显示4000字符。 --//无法写成如下,因为text是long类型。 SYS@book01p> select decode(text,null,text_vc) text from dba_views where view_name='DBA_EXPRESSION_STATISTICS' ; select decode(text,null,text_vc) text from dba_views where view_name='DBA_EXPRESSION_STATISTICS' * ERROR at line 1: ORA-00997: illegal use of LONG datatype --//直接改写如下: $ cat v2.sql -- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions. col view_name for a30 col text for a100 word_wrap col text_vc for a100 word_wrap col v_owner for a25 prompt Show SQL text of views matching "&1"... select owner v_owner, view_name, text,text_vc from dba_views where upper(view_name) LIKE upper(CASE WHEN INSTR('&1','.') > 0 THEN SUBSTR('&1',INSTR('&1','.')+1) ELSE '&1' END ) ESCAPE '\' AND owner LIKE CASE WHEN INSTR('&1','.') > 0 THEN UPPER(SUBSTR('&1',1,INSTR('&1','.')-1)) ELSE user END ESCAPE '\' / select view_name, view_definition text from v$fixed_View_definition where upper(view_name) like upper('&1'); --//不知道为什么我自己内心特别不喜欢pdb,搞得oracle异常复杂。
[20241010]视图定义查询问题.txt
来源:这里教程网
时间:2026-03-03 20:40:52
作者:
编辑推荐:
- [20241010]视图定义查询问题.txt03-03
- oracle实例宕机,虚拟机磁盘精简配置模式,磁盘无法扩展03-03
- [20241012]cursor_sharing=force与函数索引.txt03-03
- [20241012]dbms_shared_pool.keep减少硬分析吗.txt03-03
- [20241012]ORA-01792 maximum number of columns in a table or view is 1000.txt03-03
- 数据库管理-第244期 一次无法switchover的故障处理(20240928)03-03
- [20241012]ora-12526.txt03-03
- 史上最详细的,Oracle数据库AI落地理论及实践03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 数据库管理-第244期 一次无法switchover的故障处理(20240928)
- 史上最详细的,Oracle数据库AI落地理论及实践
史上最详细的,Oracle数据库AI落地理论及实践
26-03-03 - 数据库管理-第247期 23ai:全球分布式数据库-Schema对象(20241004)
- Oracle 数据库架构
Oracle 数据库架构
26-03-03 - Oracle + JSON = 王炸!!!
Oracle + JSON = 王炸!!!
26-03-03 - 大事件! Oracle CloudWorld 是"真高光"还是"挤牙膏"?
- 掌握CMD命令:轻松切换IP地址
掌握CMD命令:轻松切换IP地址
26-03-03 - 5大公有云厂商增强很猛~作为DBA的,有点焦虑!
5大公有云厂商增强很猛~作为DBA的,有点焦虑!
26-03-03 - ORA-01558: out of transaction ID's in rollback segment SYSTEM---惜分飞
- 一个很小的系统为什么负载那么高?
一个很小的系统为什么负载那么高?
26-03-03
