oracle查询表信息(索引,外键,列等)

oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助:

1、查询出所有的用户表
select * from user_tables 可以查询出所有的用户表

select owner,table_name from all_tables; 查询所有表,包括其他用户表

通过表名过滤需要将字母作如下处理

select * from user_tables where table_name = upper('表名')

因为无论你建立表的时候表名名字是大写还是小写的,create语句执行通过之后,对应的user_tables表中的table_name字段都会自动变为大写字母,所以必须通过内置函数upper将字符串转化为大写字母进行查询,否则,即使建表语句执行通过之后,通过上面的查询语句仍然查询不到对应的记录。
2、查询出用户所有表的索引
select * from user_indexes
3、查询用户表的索引(非聚集索引):
select * from user_indexes where uniqueness='NONUNIQUE'
4、查询用户表的主键(聚集索引):
select * from user_indexes where uniqueness='UNIQUE'
5、查询表的索引
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and

t.table_name='NODE'
6、查询表的主键
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and

au.constraint_type = 'P' AND cu.table_name = 'NODE'
7、查找表的唯一性约束(包括名称,构成列):
select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name=au.constraint_name and

cu.table_name='NODE'
8、查找表的外键
select * from user_constraints c where c.constraint_type = 'R' and c.table_name='STAFFPOSITION'
查询外键约束的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键名称
查询引用表的键的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名
9、查询表的所有列及其属性
方法一:

select * from user_tab_columns where table_name=upper('表名');

方法二:

select cname,coltype,width from col where tname=upper('表名');;

 
10.查询一个用户中存在的过程和函数
select object_name,created,status from user_objects 
where lower(object_type) in ('procedure','function');
 
11.查询其它角色表的权限
select * from role_tab_privs ;
 
 

查看索引个数和类别

select * from user_indexes where table_name='表名' ;

查看索引被索引的字段

SQL>select * from user_ind_columns where index_name=upper('&index_name');

PS:

查看某表的约束条件

SQL>select constraint_name, constraint_type,search_condition, r_constraint_name 
from user_constraints where table_name = upper('&table_name');

SQL>select c.constraint_name,c.constraint_type,cc.column_name 
from user_constraints c,user_cons_columns cc 
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') 
and c.owner = cc.owner and c.constraint_name = cc.constraint_name 
order by cc.position;

查看视图的名称

SQL>select view_name from user_views;

oracle lobsegment 过大 怎么解决 [复制链接]

   

注册会员

中级会员

精华贴数
0
专家积分
3
技术积分
2515
社区积分
160
注册时间
2006-8-1
论坛徽章:
10
电梯直达

1#

 
 发表于 2010-8-24 17:08:55 |只看该作者 |倒序浏览
DB: 10.2.0.4
OS: SOLARIS

有部分logsegment 段过大了,我想查下这些lobsegment是哪个表的 应该怎么查,
查到后有什么方法可以尽量减小其大小。

SQL> select  segment_name,segment_type,tablespace_name,bytes/1024/1024,blocks,extents  from user_segments
  2  where segment_type='LOBSEGMENT'
  3   order by bytes desc;

SEGMENT_NAME                                                                      SEGMENT_TYPE       TABLESPACE_NAME                BYTES/1024/1024     BLOCKS    EXTENTS
--------------------------------------------------------------------------------- ------------------ ------------------------------ --------------- ---------- ----------
SYS_LOB0000010054C00005$$                                                         LOBSEGMENT         INNOCOM                                  57670    7381760       1090
SYS_LOB0000009926C00005$$                                                         LOBSEGMENT         INNOCOM                                  15651    2003328        431
SYS_LOB0000010071C00002$$                                                         LOBSEGMENT         INNOCOM                                   2048     262144        215

 
 
 
我的技能:ORACLE SQLSERVER MYSQL GOLDENGATE LINUX SOLARIS AIX SHELL and a good oral english
 

使用道具 举报

   

注册会员

初级会员

精华贴数
0
专家积分
0
技术积分
23
社区积分
1
注册时间
2007-2-9
论坛徽章:
1
2#

 
 发表于 2010-8-24 18:24:34 |只看该作者
SELECT A.TABLE_NAME,
       A.COLUMN_NAME,
       B.SEGMENT_NAME,
       B.SEGMENT_TYPE,
       B.TABLESPACE_NAME,
       B.BYTES / 1024 / 1024,
       B.BLOCKS,
       B.EXTENTS
  FROM USER_LOBS A, USER_SEGMENTS B
WHERE A.SEGMENT_NAME = B.SEGMENT_NAME
ORDER BY B.BYTES DESC;
 
 
 
 

使用道具 举报

   

注册会员

初级会员

精华贴数
0
专家积分
0
技术积分
23
社区积分
1
注册时间
2007-2-9
论坛徽章:
1
3#

 
 发表于 2010-8-24 18:28:41 |只看该作者
可以对LOB字段进行压缩存储
ALTER TABLE <表名> MODIFY LOB(<列名>) (COMPRESS);
 
 
 
 

使用道具 举报

   

注册会员

十万个为什么

精华贴数
2
专家积分
201
技术积分
8462
社区积分
274
注册时间
2008-4-5
论坛徽章:
58
4#

 
 发表于 2011-8-15 21:52:30 |只看该作者
遇到这个问题

up一下

 
 
 
提供ORACLE技术支持(系统优化,故障处理,安装升级,数据恢复,容灾dg,rac故障处理,NBU,commvalt等)
提供甘肃,宁夏,青海等西北地区ORACLE数据库技术支持。
 

使用道具 举报

   

注册会员

十万个为什么

精华贴数
2
专家积分
201
技术积分
8462
社区积分
274
注册时间
2008-4-5
论坛徽章:
58
5#

 
 发表于 2011-8-23 21:33:53 |只看该作者
表有lob字段,有300000rows
the most largest row's lob column is 12K size
found The biggest lob segment will be 5G,but it show 50G
如何处理?

1.
col segment_name for a35
select * from (
select owner,segment_name,tablespace_name,segment_type,bytes/1024/1024 from dba_segments order by 5 desc
) where TABLESPACE_NAME='QQ' AND rownum<20;

OWNER SEGMENT_NAME SEGMENT_TYPE BYTES/1024/1024
--------- -------------------------- ------------------ ---------------
QQQ SYS_LOB0000138594C00023$$ LOBSEGMENT 50105
PP SYS_LOB0000130969C00023$$ LOBSEGMENT 46917
QQQ SYS_LOB0000138594C00078$$ LOBSEGMENT 5128
PP SYS_LOB0000130969C00078$$ LOBSEGMENT 4864
......

SELECT DBMS_LOB.GETLENGTH(A00126) LENGTH FROM PP.CM45001 where rowid='AAAf+ZAAIAAApQaAAM' and rownum<10;
LENGTH
----------
11869

 
 
 
提供ORACLE技术支持(系统优化,故障处理,安装升级,数据恢复,容灾dg,rac故障处理,NBU,commvalt等)
提供甘肃,宁夏,青海等西北地区ORACLE数据库技术支持。
 

使用道具 举报

   

注册会员

十万个为什么

精华贴数
2
专家积分
201
技术积分
8462
社区积分
274
注册时间
2008-4-5
论坛徽章:
58
6#

 
 发表于 2011-8-23 21:38:46 |只看该作者
悲剧没人回复!

up

 
 
 
提供ORACLE技术支持(系统优化,故障处理,安装升级,数据恢复,容灾dg,rac故障处理,NBU,commvalt等)
提供甘肃,宁夏,青海等西北地区ORACLE数据库技术支持。
 

使用道具 举报

   

注册会员

咖啡猫

精华贴数
3
专家积分
169
技术积分
6253
社区积分
15799
注册时间
2006-5-14
论坛徽章:
169
7#

 
 发表于 2011-8-23 21:51:12 |只看该作者
--alter table <your_table> move lob (<lob_column>) store as (tablespace <tablespace>);

select 'alter table ' || t.owner || '.' || t.table_name || ' move lob (' ||
       column_name || ') store as ' || t.table_name ||
       '_lobsegment (tablespace USERS );'
  from dba_lobs l, dba_tables t
where l.owner = t.owner
   and l.table_name = t.table_name
   and l.SEGMENT_NAME in
       (select segment_name
          from dba_segments
         where segment_type like 'LOBSEGMENT'
           and tablespace_name = 'USERS')
order by t.owner, t.table_name;

 
 
 
猫言猫语:
             人生无非是笑笑人家,再被人家笑笑而已.
             男人是用来靠的,所以要可靠;女人是用来爱的,所以要可爱.
             发怒一分钟便失去六十秒的幸福.
             人品就象内裤,表面看不出来,如果你没有还显摆,就挺讨厌.
             ......
 

使用道具 举报

   

注册会员

十万个为什么

精华贴数
2
专家积分
201
技术积分
8462
社区积分
274
注册时间
2008-4-5
论坛徽章:
58
8#

 
 发表于 2011-8-23 22:01:26 |只看该作者
谢谢!
顺便问一下,以前你做这个操作后效果如何?
 
 
 
提供ORACLE技术支持(系统优化,故障处理,安装升级,数据恢复,容灾dg,rac故障处理,NBU,commvalt等)
提供甘肃,宁夏,青海等西北地区ORACLE数据库技术支持。
 

使用道具 举报

   

版主

Frank

精华贴数
5
专家积分
84
技术积分
15595
社区积分
4594
注册时间
2006-1-4
认证徽章
论坛徽章:
89
9#

 
 发表于 2011-12-6 02:20:29 |只看该作者
同遇到这个问题,如何解决?
 
 
 
http://space.itpub.net/715354/
 

使用道具 举报

   
精华贴数
5
专家积分
318
技术积分
43555
社区积分
12600
注册时间
2005-3-4
论坛徽章:
161
10#

 
 发表于 2011-12-6 08:55:17 |只看该作者
查询dba_lobs。

SEGMENT_NAME                                                                      SEGMENT_TYPE       TABLESPACE_NAME                BYTES/1024/1024     BLOCKS    EXTENTS
--------------------------------------------------------------------------------- ------------------ ------------------------------ --------------- ---------- ----------
SYS_LOB0000010054C00005$$                                                         LOBSEGMENT         INNOCOM                                  57670    7381760       1090

object_id=10054
column_id=5

好像是这样。

 
分类: Oracle
 
 

类型:Oracle;问题:oracle 查询表详细信息;结果:oracle查询表信息(索引,外键,列等)的更多相关文章

  1. 关于 Oracle外键列上是否需要索引问题?

    外键列上缺少索引会带来两个问题,限制并发性.影响性能.而这两个问题中的任意一个都可能会造成严重性能问题.   无论是Oracle的官方文档,还是在Tom的书中都说明了两种情况下可以忽略外键上的索引.其 ...

  2. sqlserver 查询表中的主键、外键列及外键表,外表中的主键列

    1.获取主键信息 EXEC sp_pkeys @table_name='{0}' 2.获取外键 方法二 SELECT Field=(SELECT name FROM syscolumns WHERE ...

  3. ORACLE中关于外键缺少索引的探讨和总结

    在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引.那么外键字段上是否有必要创建索引呢?如果有必要的话,巡检时,如何找出外键字段上没有创 ...

  4. (转)ORACLE中关于外键缺少索引的探讨和总结

    在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引.那么外键字段上是否有必要创建索引呢?如果有必要的话,巡检时,如何找出外键字段上没有创 ...

  5. Oracle外键不加索引会引起死锁问题

    转载链接:http://www.jb51.net/article/50161.htm 这篇文章主要介绍了Oracle外键不加索引引起死锁的情况及解决,需要的朋友可以参考下 --创建一个表,此表作为子表 ...

  6. oracle查询某张表的外键,并用 truncate 命令有外键的表中的数据

    注:本文来源于<oracle查询某张表的外键(最终解决办法)> 一:几个查询表外键的脚本 select b.table_name, b.column_name from user_cons ...

  7. oracle 查看主外键约束

    select a.constraint_name, a.table_name, b.constraint_name from user_constraints a, user_constraints ...

  8. 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句

    最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...

  9. SQLServer:查询所有外键关联表信息

     --从左到右分别是: 外键约束名,子表名,外键列名,父表名 --use demodtcms--外键信息select fk.name fkname , ftable.name ftablename, ...

随机推荐

  1. BZOJ2764 [JLOI2011]基因补全

    Description 在 生物课中我们学过,碱基组成了DNA(脱氧核糖核酸),他们分别可以用大写字母A,C,T,G表示,其中A总与T配对,C总与G配对.两个碱基序列能相互 匹配,当且仅当它们等长,并 ...

  2. 在java中public void与public static void区别

    static 方法可以被main方法直接调用,而非static方法不可以.因为static方法是属于类的,是类方法.可以通过类名.方法名直接调用.而非static方法必须等对象被new出来以后才能使用 ...

  3. 国内的Git比GitHub快

    GitHub的速度简直受不了! 被微软收购之后就堕落了! 用Gitee也挺好的,学习用吧!

  4. C/C++输入数组

    ; printf("please enter the number:\n"); scanf("%d",&n); int *number=new int[ ...

  5. jspxcms笔记三

    首页 index.html site :站点对象栏目 cover.html list.html node :栏目对象, text :正文详细 info.html node :栏目对象, info :文 ...

  6. 《Think in Java》(九)接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法: 抽象化类则是普通类与接口之间的一种中庸之道: 涨姿势了 接口也可以拥有值属性,但它们都是隐式的 static 和 final 的: 接 ...

  7. spring: 在表达式中使用类型

    如果要在SpEL中访问类作用域的方法和常量的话,要依赖T()这个关键的运算符.例如,为了在SpEL中表达Java的Math类,需要按照如下的方式使用T()运算符: T{java.lang.Math} ...

  8. Dom节点操作常用方法

    1.访问/获取节点 document.getElementById(id); //返回对拥有指定id的第一个对象进行访问 document.getElementsByName(name); //返回带 ...

  9. Postman工具——请求与响应

    两个内容: Request 请求和 Response 响应,下面就开始了. 一.Request 请求 Request 请求,我们只介绍常用的四种:GET.POST.PUT.DELETE,其他类型的就不 ...

  10. mysql 注意事项

    1. mysql所有的存储引擎均不支持check约束,但可以使用check约束,而没有任何效果