### ORACLE用户常用数据字典的查询方法 在Oracle数据库管理与开发中,了解如何有效查询数据字典是非常重要的技能之一。数据字典是数据库管理系统(DBMS)中用来存储有关数据库本身信息的一系列特殊表和视图。通过查询这些数据字典视图,可以获取关于数据库对象的重要信息,如表、索引、序列等。本文将详细介绍一些常见的数据字典查询方法,以帮助初学者更好地理解和利用Oracle的数据字典。 #### 一、用户信息查询 1. **查看当前用户的缺省表空间** - SQL命令: `SELECT username, default_tablespace FROM user_users;` - **解释**: 这条SQL语句用于查询当前登录用户的缺省表空间信息。`username`表示用户名,`default_tablespace`表示该用户的默认表空间。 2. **查看当前用户的角色** - SQL命令: `SELECT * FROM user_role_privs;` - **解释**: 通过这条命令可以获取当前用户所拥有的角色信息。`user_role_privs`视图中包含了当前用户的所有角色权限信息。 3. **查看当前用户的系统权限和表级权限** - SQL命令: - `SELECT * FROM user_sys_privs;` - `SELECT * FROM user_tab_privs;` - **解释**: `user_sys_privs`和`user_tab_privs`分别用于列出当前用户的系统权限和表级权限。 - `user_sys_privs`: 包括了像`CREATE TABLE`, `CREATE VIEW`, `ALTER USER`这样的系统权限。 - `user_tab_privs`: 列出了用户对特定表的权限,如`SELECT`, `INSERT`, `UPDATE`等操作权限。 4. **显示当前会话所具有的权限** - SQL命令: `SELECT * FROM session_privs;` - **解释**: 此命令列出当前会话拥有的所有权限。 5. **显示指定用户所具有的系统权限** - SQL命令: `SELECT * FROM dba_sys_privs WHERE grantee = 'GAME';` - **解释**: 此命令用于查看指定用户(例如`GAME`)拥有的所有系统权限。注意这里使用的是`dba_sys_privs`视图,它包含了数据库中所有用户的系统权限信息。 #### 二、表信息查询 1. **查看用户下的所有表** - SQL命令: `SELECT * FROM user_tables;` - **解释**: 此命令列出了当前用户拥有权限的所有表的信息。 2. **查看名称包含特定字符的表** - SQL命令: `SELECT object_name, object_id FROM user_objects WHERE INSTR(object_name, 'LOG') > 0;` - **解释**: 这条命令可以查找表名中包含`LOG`字符串的所有表。 3. **查看某表的创建时间** - SQL命令: `SELECT object_name, created FROM user_objects WHERE object_name = UPPER('&table_name');` - **解释**: 通过这个命令可以查找到指定表的创建时间。 4. **查看某表的大小** - SQL命令: `SELECT SUM(bytes) / (1024 * 1024) AS "SIZE(M)" FROM user_segments WHERE segment_name = UPPER('&table_name');` - **解释**: 此命令计算指定表占用的空间大小(以MB为单位)。 5. **查看放在Oracle的内存区里的表** - SQL命令: `SELECT table_name, cache FROM user_tables WHERE INSTR(cache, 'Y') > 0;` - **解释**: 这条命令列出已被缓存到Oracle内存区中的表。 #### 三、索引信息查询 1. **查看索引个数和类别** - SQL命令: `SELECT index_name, index_type, table_name FROM user_indexes ORDER BY table_name;` - **解释**: 通过此命令可以查看当前用户所有索引的名称、类型及其对应的表。 2. **查看索引被索引的字段** - SQL命令: `SELECT * FROM user_ind_columns WHERE index_name = UPPER('&index_name');` - **解释**: 该命令列出指定索引中包含的列信息。 3. **查看索引的大小** - SQL命令: `SELECT SUM(bytes) / (1024 * 1024) AS "SIZE(M)" FROM user_segments WHERE segment_name = UPPER('&index_name');` - **解释**: 计算指定索引占用的空间大小(以MB为单位)。 #### 四、序列号查询 1. **查看序列号** - SQL命令: `SELECT * FROM user_sequences;` - **解释**: 此命令列出当前用户所有的序列信息,包括当前值(`last_number`)。 #### 五、视图查询 1. **查看视图的名称** - SQL命令: `SELECT view_name FROM user_views;` - **解释**: 列出当前用户所有视图的名称。 2. **查看创建视图的SELECT语句** - SQL命令: `SET LONG 2000; SELECT text FROM user_views WHERE view_name = UPPER('&view_name');` - **解释**: 此命令可以查看指定视图的定义语句。 #### 六、同义词查询 1. **查看同义词的名称** - SQL命令: `SELECT * FROM user_synonyms;` - **解释**: 此命令列出当前用户所有的同义词信息。 #### 七、约束条件查询 1. **查看某表的约束条件** - SQL命令: - `SELECT constraint_name, constraint_type, search_condition, r_constraint_name FROM user_constraints WHERE table_name = UPPER('&table_name');` - `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;` - **解释**: 第一条命令列出指定表的所有约束信息;第二条命令列出指定表的每个约束所涉及的列。 #### 八、存储函数和过程查询 1. **查看函数和过程的状态** - SQL命令: - `SELECT object_name, status FROM user_objects WHERE object_type = 'FUNCTION';` - `SELECT object_name, status FROM user_objects WHERE object_type = 'PROCEDURE';` - **解释**: 这两条命令分别列出当前用户所有函数和过程的状态信息。 以上介绍了Oracle数据库中常用的用户数据字典查询方法,涵盖了用户、表、索引、序列号、视图、同义词以及约束条件等多个方面的内容。对于Oracle数据库管理员和开发人员来说,熟练掌握这些查询技巧是非常重要的。通过这些查询,不仅可以帮助我们更好地管理和维护数据库,还可以提高工作效率,避免潜在的问题。希望本文能够帮助初学者更快地掌握Oracle数据字典的使用方法。
select username,default_tablespace from user_users;
查看当前用户的角色
select * from user_role_privs;
查看当前用户的系统权限和表级权限
select * from user_sys_privs;
select * from user_tab_privs;
查看用户下所有的表
select * from user_tables;
1、用户
查看当前用户的缺省表空间
select username,default_tablespace from user_users;
查看当前用户的角色
select * from user_role_privs;
查看当前用户的系统权限和表级权限
select * from user_sys_privs;
select * from user_tab_privs;
显示当前会话所具有的权限
select * from session_privs;
显示指定用户所具有的系统权限
select * from dba_sys_privs where grantee='GAME';
2、表
查看用户下所有的表
select * from user_tables;
查看名称包含log字符的表
select object_name,object_id from user_objects
where instr(object_name,'LOG')0;
查看某表的创建时间
select object_name,created from user_objects where object_name=upper('&table_name');
查看某表的大小
- 粉丝: 6
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一款由Java写的射击游戏.zip算法资源
- 一些java的小游戏项目,贪吃蛇啥的.zip用户手册
- 在线实时的斗兽棋游戏,时间赶,粗暴的使用jQuery + websoket 实现实时H5对战游戏 + java.zip课程设计
- HTML5酒店网站模板.zip
- 基于SpringBoot开发的支付系统(包括支付宝支付,微信支付,订单系统).zip
- C基于Qt的学生成绩管理系统.zip毕业设计
- 基于深度卷积神经网络(CNN)模型的图像着色研究与应用系统实现
- Java Web实验报告五:基于JSP的留言本
- Java Web实验报告四:基于AJAX的级联下拉菜单
- springboot洗衣店订单管理系统(代码+数据库+LW)