Oracle不同权限获取表,视图,字段的sql整理方式

 更新时间:2026年03月27日 09:48:44   作者:未来@音律  
这篇文章主要介绍了Oracle不同权限获取表,视图,字段的sql整理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. Oracle获取表sql

1.1 有DBA权限获取方式

select distinct TABLE_NAME from dba_tables 
where OWNER ='库名' 
and  owner NOT IN ('SYS','SYSTEM','OUTLN','XDB','WMSYS','CTXSYS','MDSYS')

1.2 普通权限获取方式

select distinct TABLE_NAME from all_tables 
where OWNER ='库名' 
and  owner NOT IN ('SYS','SYSTEM','OUTLN','XDB','WMSYS','CTXSYS','MDSYS')

2. Oracle获取表字段sql

2.1 有DBA权限获取方式

SELECT UPPER(T.TABLE_NAME),NVL(cc.comments, ''),C.COLUMN_NAME,CC.COMMENTS,C.DATA_TYPE,C.DATA_LENGTH,C.DATA_PRECISION,C.DATA_SCALE
 ,NULLABLE,CASE WHEN PK.CONSTRAINT_TYPE = 'P' THEN 'y'  ELSE 'n'  END
 FROM DBA_tables T JOIN DBA_TAB_COLUMNS C ON T.TABLE_NAME = C.TABLE_NAME AND T.OWNER = C.OWNER
 LEFT JOIN DBA_COL_COMMENTS CC ON C.OWNER = CC.OWNER AND C.TABLE_NAME = CC.TABLE_NAME AND C.COLUMN_NAME = CC.COLUMN_NAME
 LEFT JOIN 
    (SELECT CONS.TABLE_NAME, CONS.OWNER, COLS.COLUMN_NAME, CONS.CONSTRAINT_TYPE
     FROM DBA_CONSTRAINTS CONS 
     JOIN DBA_CONS_COLUMNS COLS ON CONS.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME 
     WHERE CONS.CONSTRAINT_TYPE = 'P'
    ) PK ON C.OWNER = PK.OWNER AND C.TABLE_NAME = PK.TABLE_NAME AND C.COLUMN_NAME = PK.COLUMN_NAME
    where UPPER(T.TABLE_NAME) in ( 逗号分隔的表名 ) and t.OWNER NOT IN ('SYS', 'SYSTEM', 'OUTLN', 'XDB', 'WMSYS', 'CTXSYS', 'MDSYS')
 ORDER BY T.TABLE_NAME, C.COLUMN_ID

2.2 普通权限获取方式

SELECT UPPER(T.TABLE_NAME),NVL(cc.comments, ''),C.COLUMN_NAME,CC.COMMENTS,C.DATA_TYPE,C.DATA_LENGTH,C.DATA_PRECISION,C.DATA_SCALE
 ,NULLABLE,CASE WHEN PK.CONSTRAINT_TYPE = 'P' THEN 'y'  ELSE 'n'  END
 FROM all_tables T JOIN ALL_TAB_COLUMNS C ON T.TABLE_NAME = C.TABLE_NAME AND T.OWNER = C.OWNER
 LEFT JOIN ALL_COL_COMMENTS CC ON C.OWNER = CC.OWNER AND C.TABLE_NAME = CC.TABLE_NAME AND C.COLUMN_NAME = CC.COLUMN_NAME
 LEFT JOIN 
    (SELECT CONS.TABLE_NAME, CONS.OWNER, COLS.COLUMN_NAME, CONS.CONSTRAINT_TYPE
     FROM ALL_CONSTRAINTS CONS 
     JOIN ALL_CONS_COLUMNS COLS ON CONS.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME 
     WHERE CONS.CONSTRAINT_TYPE = 'P'
    ) PK ON C.OWNER = PK.OWNER AND C.TABLE_NAME = PK.TABLE_NAME AND C.COLUMN_NAME = PK.COLUMN_NAME
    where UPPER(T.TABLE_NAME) in ( 逗号分隔的表名 ) and t.OWNER NOT IN ('SYS', 'SYSTEM', 'OUTLN', 'XDB', 'WMSYS', 'CTXSYS', 'MDSYS')
 ORDER BY T.TABLE_NAME, C.COLUMN_ID

3. Oracle获取视图sql

3.1 有DBA权限获取方式

select distinct view_name from all_views 
where owner not in ('SYS','SYSTEM','OUTLN','XDB','WMSYS','CTXSYS','MDSYS') 
and OWNER ='库名';

3.2 普通权限获取方式

select distinct view_name from all_views 
where owner not in ('SYS','SYSTEM','OUTLN','XDB','WMSYS','CTXSYS','MDSYS') 
and OWNER ='库名';

4. Oracle获取视图字段sql

4.1 有DBA权限获取方式

SELECT 
		c.table_name AS view_name, 
		NVL ( cm.comments, '' ) AS cmt, 
		c.column_name, 
		cm.comments, 
		c.data_type, 
		c.data_length, 
		c.data_precision, 
		c.data_scale, 
		c.nullable, 
		 'n' AS is_primary_key 
FROM 
		dba_tab_columns c 
LEFT JOIN dba_col_comments cm ON c.OWNER = cm.OWNER 
AND c.table_name = cm.table_name 
AND c.column_name = cm.column_name 
WHERE 
		c.OWNER = '库名' 
AND c.table_name IN ( 逗号分隔的表名 )
ORDER BY c.table_name,c.column_id 

4.2 普通权限获取方式

SELECT 
		c.table_name AS view_name, 
		NVL ( cm.comments, '' ) AS cmt, 
		c.column_name, 
		cm.comments, 
		c.data_type, 
		c.data_length, 
		c.data_precision, 
		c.data_scale, 
		c.nullable, 
		 'n' AS is_primary_key 
FROM 
		all_tab_columns c 
LEFT JOIN all_col_comments cm ON c.OWNER = cm.OWNER 
AND c.table_name = cm.table_name 
AND c.column_name = cm.column_name 
WHERE 
		c.OWNER = '库名' 
AND c.table_name IN ( 逗号分隔的表名 )
ORDER BY c.table_name,c.column_id 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Oracle WebLogic Server 12.2.1.2安装部署教程

    Oracle WebLogic Server 12.2.1.2安装部署教程

    这篇文章主要介绍了Oracle WebLogic Server 12.2.1.2安装部署教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • oracle实现新建用户并授权

    oracle实现新建用户并授权

    本文主要介绍了在Oracle数据库中创建、删除用户以及授权角色的方法,用户可以通过system或sys用户创建其他用户,并且可以更改密码或删除用户,系统提供了三种标准角色:connect、resource和dba,分别赋予不同的权限,用户还可以创建自定义角色,并为其分配权限
    2026-01-01
  • Oracle存储过程及调用

    Oracle存储过程及调用

    这篇文章主要介绍了Oracle存储过程及调用,需要的朋友可以参考下
    2017-06-06
  • 自动备份Oracle数据库

    自动备份Oracle数据库

    自动备份Oracle数据库...
    2007-03-03
  • plsql与tsql的语法不同

    plsql与tsql的语法不同

    plsql与tsql的语法不同简单整理,大家可以参考下。
    2009-09-09
  • Linux上oracle的安装部署与查询使用过程

    Linux上oracle的安装部署与查询使用过程

    本文介绍了在Linux环境下安装和配置Oracle数据库的步骤,包括环境准备、主机配置、用户和权限设置、环境变量配置、数据库安装及基本查询操作,帮助开发者快速部署和使用Oracle数据库
    2025-10-10
  • 详解Oracle隐式游标和显式游标

    详解Oracle隐式游标和显式游标

    游标是什么?就是在内存开辟的一块临时存储空间。下面通过本文给大家介绍Oracle隐式游标和显式游标的相关知识,需要的朋友参考下吧
    2017-07-07
  • oracle中去掉回车换行空格的方法详解

    oracle中去掉回车换行空格的方法详解

    本篇文章是对oracle中去掉回车换行空格的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Oracle计算年龄的实用方法总结

    Oracle计算年龄的实用方法总结

    这篇文章主要给大家介绍了关于Oracle计算年龄的相关资料,在我们日常实际业务中,可能需要根据某人出生日期、身份证号码来实时计算年龄,需要的朋友可以参考下
    2023-09-09
  • Oracle全量同步与增量同步方式

    Oracle全量同步与增量同步方式

    这篇文章主要介绍了Oracle全量同步与增量同步方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06

最新评论