1、数据及类型准备

创建了一个自定义类型

create or replace type addr_type as object(
street varchar2(30);
city varchar2(30);
state varchar2(30);
country varchar2(30)
)

这里的 addr_type  是一个用户自定义类型 UDT

create table r7.cust(
id number,
addr r7.addr_type
)

创建了一个表,其中addr这一列使用了刚才定义的类型。

2、数据字典中关于UTD的摸索过程

2.1 通过如下语句获取某个schema下的所有表明及其对应的objid

select o.name,t.obj# from sys.tab$ t,sys.obj$ o,sys.user$ u where t.obj#=o.obj# and o.owner#=u.user# and u.name='r7';
得到如下结果:

2.2、查询出 cust表的objid 为 75198

通过如下语句得到这个表的所有列的内容
select * from sys.col$ where obj#=75178;

2.3、这里可以看到 ADDR列的 type 为121

通过如下语句得到该列的类型的OID
select * from sys.coltype$ where obj#=75198 and col#=2;

这里得到该类型有4个属性 INTCOLS=4

表 sys.coltype$ 中的flags 解释如下

2.4、得到的该类型的TOID,

然后通过如下语句得到该类型的名称
select * from sys.obj$ where oid$='42FA04xxxxx';

2.5、这样就能得到这个列对应的类型名称,

然后可以通过owner# 以及 sys.user# 得到这个类型对应的schema

组合起来
select o.name, u.name from sys.col$ c,sys.coltype$ ct,sys.obj$ o,sys.user$ u where
c.obj#=ct.obj# and c.obj#=75198 and c.type#=121 and c.col#=ct.col# and ct.toid=o.oid$ and o.owner#=u.user#;

2.6、然后通过如下语句得到该类型的相关属性

select * from sys.type$ where tvoid='42FA04xxxxx';

可以得到他有4个属性,这里 type_code 108 表示object 122 表示collection

2.7、结合2.2中的自定义类型的各个列的类型 就可以完整的复原整个语句

如下 insert into r7.cust(id,addr) values(1,r7.addr_type('a','b','c','d'));

oracle UDT 有关数据字典的研究的更多相关文章

  1. oracle常用的数据字典

    一.oracle数据字典主要由以下几种视图构成:1.user视图以user_为前缀,用来记录用户对象的信息 2.all视图以all_为前缀,用来记录用户对象的信息及被授权访问的对象信息 3.dba视图 ...

  2. 文献综述九:Oracle数据库性能模型的研究

    一.基本信息 标题:Oracle数据库性能模型的研究 时间:2018 出版源:数字技术与应用 文件分类:对框架的研究 二.研究背景 帮助运维人员分析数据库性能,发现问题,指导调优. 三.具体内容 文献 ...

  3. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  4. Oracle中的数据字典技术及常用数据字典总结

    一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等.当用户在对数据库中的数据进行 ...

  5. (转)oracle常用的数据字典

    一.oracle数据字典主要由以下几种视图构成: .user视图 以user_为前缀,用来记录用户对象的信息 .all视图 以all_为前缀,用来记录用户对象的信息及被授权访问的对象信息 .dba视图 ...

  6. Oracle的update语句优化研究

    最近研究sql优化,以下文章转自互联网: 1.     语法 单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 如:update t_join_situation s ...

  7. Oracle 中常用数据字典大总结

    原文出处:小宝马的爸爸 - 梦想的家园 前面呢,也断断续续的介绍了一些诸如 Sql*Plus 等等关于 Oracle 的基本的内容, 对于 Oracle 这样的大型数据库呢,自身的运行和维护也是个不得 ...

  8. Maclean Liu对Oracle Database 12c新特性研究汇总

    Maclean Liu关于DB 12c新特性的研究文章如下: [Oracle Database 12c新特性] In-Database Archiving数据库内归档 [Oracle Database ...

  9. Oracle 11g 体系结构--数据字典

    DD:存放数据库内部信息的地方,用于描述数据库内部的运行和管理情况. Oracle数据字典的名称由前缀和后缀组成,使用_连接,含义说明如下: dba_:包含数据库实例的所有对象信息 v$_:当前实例的 ...

随机推荐

  1. python文件操作-修改文件中的内容

    一.文件读写有缓冲区 fw = open('nhy','w') fw.write('sdfsdf') fw.flush()# 把缓冲区里面的数据立即写到磁盘上 fw.close() 二.with的用法 ...

  2. 一些c++多线程习题

    题目1:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码 代码1: #include <iostr ...

  3. 【bzoj4836】二元运算 分治FFT

    Description 定义二元运算 opt 满足 现在给定一个长为 n 的数列 a 和一个长为 m 的数列 b ,接下来有 q 次询问.每次询问给定一个数字 c 你需要求出有多少对 (i, j) 使 ...

  4. luoguP2664 树上游戏

    https://www.luogu.org/problemnew/show/P2664 考虑对于每种颜色包含的点和这些点的子节点建出虚树,发现只要将一个联通块中的东西 Dp + 差分一下就行了 当然要 ...

  5. loj #6226. 「网络流 24 题」骑士共存问题

    #6226. 「网络流 24 题」骑士共存问题   题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上 ...

  6. 蓝牙4.0BLE抓包(三) – 扫描请求和扫描响应

    版权声明:本文为博主原创文章,转载请注明作者和出处.    作者:强光手电[艾克姆科技-无线事业部] 1. 扫描请求和扫描响应 广播包含扫描请求SCAN_REQ和扫描响应SCAN_RSP. 扫描请求: ...

  7. springcloud微服务config的使用

    首先需要建立一个server端: pom依赖中加入 <dependency> <groupId>org.springframework.cloud</groupId> ...

  8. Qt 学习之路 2(61):使用 SAX 处理 XML

    Qt 学习之路 2(61):使用 SAX 处理 XML  豆子  2013年8月13日  Qt 学习之路 2  没有评论 前面两章我们介绍了使用流和 DOM 的方式处理 XML 的相关内容,本章将介绍 ...

  9. C++_代码重用4-多重继承

    继承使用时要注意,默认是私有派生.所以要公有派生时必须记得加关键字Public. MI(Multi Inheritance)会带来哪些问题?以及如何解决它们? 两个主要问题: 从两个不同的基类继承同名 ...

  10. Bound Found(思维+尺取)

    Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronaut ...