数据字典
数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者是sys用户。
用户只能在数据字典上执行查询操作,而且维护和修改是由系统完成的。
数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基础信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立起来的视图,普通用户可以通过查询数据字典视图取得系统的信息,数据字典视图主要包括:
user_xxx , all_xxx , dba_xxx 三种类型
·user_tables
显示当前用户所拥有的表,也可以查到所属的表空间,它只返回本用户对应的方案的所有表
如:查询本用户拥有的表已经所属的表空间
SQL>select table_name,tablespace_name from user_tables ;
·all_tables
显示当前用户可以访问的所有表,包括其他用户对应的方案的表
SQL> select table_name,tablespace_name from all_tables ;
·dba_tables
它会显示所有方案拥有的数据库表,但是要查询的话要求必须是dba角色,或者有select any table 的系统权限
如:system用户,他可以通过dba_tables来查询,用户,表名,表空间
SQL>select owner, table_name, tablespace_name from dba_tables;
查询scott拥有哪些表,所属那个表空间
SQL>select table_name, tablespace_name from dba_tables where owner = 'SCOTT';
如果要查询用户拥有的表,查询用户所在的表空间,查询某个用户拥有哪些表就可以用上面的三个视图,如果有时候忘了怎么写条件,可以使用desc来查询一下表的结构
但是关于用户,角色,和权限的话,就可以使用:
注意:最好使用sysdba身份登陆,因为有时候使用system的普通dba身份登陆的话,信息看不到
|- dba_user s: 可以显示所有数据库用户的详细信息
?查询hwt用户的密码
SQL> select password from dba_users where username = 'HWT' ;
|- dba_sys_privs:可以显示用户或者角色具有的系统权限
?查询scott具有的系统权限
SQL> select * from dba_sys_privs where grantee = 'SCOTT';
?查询connect 角色具有的系统权限
SQL> select * from dba_sys_privs where grantee = 'CONNECT';
|- dba_tab_privs:可以显示用户具有的对象权限
?查询scott具有的对象权限
SQL> select * from dba_tab_privs where grantee = 'SCOTT';
?查询connect 角色具有的对象权限
SQL> select * from dba_tab_privs where grantee = 'CONNECT';
|- dba_col_privs:可以显示用户具有的列权限
|- dba_rol_privs:可以显示用户具有的角色
?查询scott用户拥有的角色
SQL>select *from dba_role_privs where grantee = 'SCOTT';
|- role_sys_privs: 可以显示某个角色的系统权限
?查询connect角色拥有的权限
SQL>select * from role_sys_privs where role = 'CONNECT';
|- role_tab_privs: 可以显示某个角色的对象权限
?查询connect角色的对象角色
SQL>select * from role_tab_privs where role = 'CONNECT';
查询当前用户的角色,权限,索引等信息,以SCOTT用户为例
|- user_role_privs: 查询当前用户拥有的角色
SQL>select * from user_role_privs;
|- user_sys_privs: 查询当前用户的系统权限
SQL>select * from user_sys_privs;
|- user_tab_privs: 查询当前用户的对象权限
SQL>select * from user_tab_privs;
|- user_indexes: 查询当前用户的索引
SQL>select * from user_indexes;
|- user_ind_columns 查询某一列上的索引
|- user_constraints 查询当前用户的约束
|- user_cons_columns 查询某一列的约束
|- user_views 查询视图
|- user_updatable_columns 查询键值保存表中可以更新的字段
select * from user_updatable_columns where table_name='vwEMP';
如果对于这些视图忘记了,可以查询数据字典来查看
select * from dict where comments like '%grant%' ;
select * from dict where table_name like '%USER%' ; -- USER要大写
select * from dict where table_name like '%ROLE%' ; --
select * from dict where table_name like '%DBA%' ; -- 使用sysdba身份查看
查看全局数据名:
select * from global_name ;