iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle之数据字典
  • 126
分享到

Oracle之数据字典

2024-04-02 19:04:59 126人浏览 泡泡鱼
摘要

数据字典数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者是sys用户用户只能在数据字典上执行查询操作,而其

数据字典

数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息

数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者是sys用户

用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成的

数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息

数据字典视图主要包括:user_xxx,all_xxx,dba_xxx三种类型

动态性能视图挤在了例程启动后的相关信息(经常变化的信息)


数据字典由数据基表和动态视图组成

数据字典基表存放的是静态数据

数据字典动态视图存放的是动态信息


数据字典记录有oracle数据库的所有系统信息,通过查询数据字典可以取得

一下系统信息,比如:

1、对象定义情况

2、对象占用空间大小

3、列信息

4、约束信息


动态性能视图

  动态性能视图用于记录当前例程的活动信息,当启动oracle server时,系统

会建立动态性能视图;当停止oracle server时,系统会删除动态性能视图。oracle

的所有动态性能视图都是以v_$开始的,并且oracle为每个动态性能视图都提供了相应的同义词

并且同义词是以V$开始的,例如v_$datafile的同义词为v$datafile;

动态性能视图的所有者为sys,一般情况下,由dba或是特权用户来查询动态性能视图


user_tables:用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表

sql> desc user_tables;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 TABLE_NAME                                NOT NULL VARCHAR2(30)

 TABLESPACE_NAME                                    VARCHAR2(30)

 CLUSTER_NAME                                       VARCHAR2(30)

 ioT_NAME                                           VARCHAR2(30)

 STATUS                                             VARCHAR2(8)

用于显示当前方案的所有表信息

SQL> select table_name from user_tables;


TABLE_NAME

------------------------------

DEPT

EMP

BONUS

SALGRADE

STUDENT


all_tables:用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表

还会返回当前用户可以访问的其他方案的表

例:某个用户授权某张表给指定用户可以查询等操作

SQL> select table_name from all_all_tables;


dba_tables

它会显示所有方案拥有的数据库表,但是查询这种数据库字典视图,要求用户必须是dba角色

或是有select any table系统权限

例如:当用system用户查询数据库字典视图dba_tables时,会返回system、sys,scott。。。

方案所对应的数据库表

使用system用户

select table_name from dba_tables;

MYEMP

TEST

WRI$_ADV_OBjsPACE_TREND_DATA

MYTABLE

2729 rows selected


用户名,权限,角色

  在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时

oracle会将权限和角色的信息存放到数据字典中

通过查询dba_users可以显示所有数据库用户的详细信息   --使用的system查询

SQL> desc dba_users; 

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 USERNAME                                  NOT NULL VARCHAR2(30)

 USER_ID                                   NOT NULL NUMBER

 PASSWord                                           VARCHAR2(30)

 ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)

 LOCK_DATE                                          DATE

 EXPIRY_DATE                                        DATE

 DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)

 TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)

 CREATED                                   NOT NULL DATE

 PROFILE                                   NOT NULL VARCHAR2(30)

 INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)

 EXTERNAL_NAME                                      VARCHAR2(4000)

 PASSWORD_VERSIONS                                  VARCHAR2(8)

 EDITIONS_ENABLED                                   VARCHAR2(1)

 AUTHENTICATION_TYPE                                VARCHAR2(8)

有字段是username,即数据库用户名,于是可以查出数据库有多少用户

SQL> select username from dba_users;


USERNAME

------------------------------

SYS

SYSTEM

XIAOBai

XIAOMING

SCOTT

OUTLN

MGMT_VIEW


通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限   

SQL> desc dba_sys_privs;    系统权限表

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 GRANTEE                                   NOT NULL VARCHAR2(30)

 PRIVILEGE                                 NOT NULL VARCHAR2(40)

 ADMIN_OPTION                                       VARCHAR2(3)

SQL> select * from dba_sys_privs where grantee='SCOTT';


GRANTEE                        PRIVILEGE                                ADM

------------------------------ ---------------------------------------- ---

SCOTT                          UNLIMITED TABLESPACE                     NO

可以查询到每个用户所拥有的系统权限,以及他是否配置了with admin option

SQL> select * from dba_sys_privs where grantee='SYSTEM';


GRANTEE                        PRIVILEGE                                ADM

------------------------------ ---------------------------------------- ---

SYSTEM                         GLOBAL QUERY REWRITE                     NO

SYSTEM                         CREATE MATERIALIZED VIEW                 NO

SYSTEM                         CREATE TABLE                             NO

SYSTEM                         UNLIMITED TABLESPACE                     YES

SYSTEM                         SELECT ANY TABLE                         NO


通过查询数据字典视图dba_tab_privs,可以显示用户具有的对象权限

SQL> desc dba_tab_privs;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 GRANTEE                                   NOT NULL VARCHAR2(30)

 OWNER                                     NOT NULL VARCHAR2(30)

 TABLE_NAME                                NOT NULL VARCHAR2(30)

 GRANTOR                                   NOT NULL VARCHAR2(30)

 PRIVILEGE                                 NOT NULL VARCHAR2(40)

 GRANTABLE                                          VARCHAR2(3)

 HIERARCHY                                          VARCHAR2(3)


通过查询数据字典dba_col_privs,可以显示用户具有的列权限

SQL> desc dba_col_privs;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 GRANTEE                                   NOT NULL VARCHAR2(30)

 OWNER                                     NOT NULL VARCHAR2(30)

 TABLE_NAME                                NOT NULL VARCHAR2(30)

 COLUMN_NAME                               NOT NULL VARCHAR2(30)

 GRANTOR                                   NOT NULL VARCHAR2(30)

 PRIVILEGE                                 NOT NULL VARCHAR2(40)

 GRANTABLE                                          VARCHAR2(3)


通过查询数据库字典视图dba_role_privs,可以显示用户所具有的角色        ------》如何查看某个用户,具有什么样的角色?

SQL> desc  dba_role_privs;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 GRANTEE                                            VARCHAR2(30)

 GRANTED_ROLE                              NOT NULL VARCHAR2(30)

 ADMIN_OPTION                                       VARCHAR2(3)

 DEFAULT_ROLE                                       VARCHAR2(3)

查询Scott用户具有的角色?

SQL> select granted_role from dba_role_privs where grantee='SCOTT';


GRANTED_ROLE

------------------------------

RESOURCE

CONNECT      唯独的两个角色

用户system具有的角色

SQL> select granted_role from dba_role_privs where grantee='SYSTEM';


GRANTED_ROLE

------------------------------

AQ_ADMINISTRATOR_ROLE

MGMT_USER

DBA


1、如何查询一个角色所包含的权限?

一个角色包含的系统权限   系统权限表为dba_sys_privs

SQL> desc dba_sys_privs;

Name         Type         Nullable Default Comments                                       

------------ ------------ -------- ------- ---------------------------------------------- 

GRANTEE      VARCHAR2(30)                  Grantee Name, User or Role receiving the grant 

grantee:值为user或者role

查询角色connect的系统权限?

SQL> select * from dba_sys_privs where grantee='CONNECT';


GRANTEE                        PRIVILEGE                                ADM

------------------------------ ---------------------------------------- ---

CONNECT                        CREATE SESSION                           NO

于是系统权限create session就是能够登陆数据库的权限,也就是connect角色

还有一张表:role_sys_privs角色系统权限表

SQL> desc role_sys_privs;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 ROLE                                      NOT NULL VARCHAR2(30)

 PRIVILEGE                                 NOT NULL VARCHAR2(40)

 ADMIN_OPTION                                       VARCHAR2(3)

一个角色包含的对象权限  对象权限表为:dba_tab_privs

SQL> desc dba_tab_privs;     系统对象权限表

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 GRANTEE                                   NOT NULL VARCHAR2(30)

 OWNER                                     NOT NULL VARCHAR2(30)

 TABLE_NAME                                NOT NULL VARCHAR2(30)

 GRANTOR                                   NOT NULL VARCHAR2(30)

 PRIVILEGE                                 NOT NULL VARCHAR2(40)

 GRANTABLE                                          VARCHAR2(3)

 HIERARCHY                                          VARCHAR2(3)

SQL> select privilege from dba_tab_privs where grantee='CONNECT';


no rows selected

一个角色包含的权限来自于系统权限和对象权限


2、oracle究竟有多少种角色?   查询表dba_roles

SQL> desc dba_roles;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 ROLE                                      NOT NULL VARCHAR2(30)

 PASSWORD_REQUIRED                                  VARCHAR2(8)

 AUTHENTICATION_TYPE                                VARCHAR2(11)

SQL> select count(*) from dba_roles;


  COUNT(*)

----------

        55


SQL> select role from dba_roles;


ROLE

------------------------------

CONNECT

RESOURCE

DBA

SELECT_CATALOG_ROLE

EXECUTE_CATALOG_ROLE

DELETE_CATALOG_ROLE

EXP_FULL_DATABASE

IMP_FULL_DATABASE

LOGSTDBY_ADMINISTRATOR

DBFS_ROLE

AQ_ADMINISTRATOR_ROLE

一共有55种角色


3、查询oracle中所有的系统权限?

select * from system_privilege_map order by name;

SQL> desc system_privilege_map;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 PRIVILEGE                                 NOT NULL NUMBER

 NAME                                      NOT NULL VARCHAR2(40)

 PROPERTY                                  NOT NULL NUMBER

SQL> select count(*) from system_privilege_map;


  COUNT(*)

----------

       208


4、查询oracle中所有对象权限?

select distinct privilege from dba_tab_privs;


5、查询数据库的表空间?  查询表系统表空间dba_tablespaces

SQL> desc dba_tablespaces;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 TABLESPACE_NAME                           NOT NULL VARCHAR2(30)

 BLOCK_SIZE                                NOT NULL NUMBER

 INITIAL_EXTENT                                     NUMBER

 NEXT_EXTENT                                        NUMBER

 MIN_EXTENTS                               NOT NULL NUMBER

 MAX_EXTENTS                                        NUMBER

 MAX_SIZE                                           NUMBER

 PCT_INCREASE                                       NUMBER

 MIN_EXTLEN                                         NUMBER

 STATUS                                             VARCHAR2(9)

 CONTENTS                                           VARCHAR2(9)

 LOGGING                                            VARCHAR2(9)

 FORCE_LOGGING                                      VARCHAR2(3)

 EXTENT_MANAGEMENT                                  VARCHAR2(10)

 ALLOCATION_TYPE                                    VARCHAR2(9)

 PLUGGED_IN                                         VARCHAR2(3)

 SEGMENT_SPACE_MANAGEMENT                           VARCHAR2(6)

 DEF_TAB_COMPRESSION                                VARCHAR2(8)

 RETENTION                                          VARCHAR2(11)

 BIGFILE                                            VARCHAR2(3)

 PREDICATE_EVAluaTION                               VARCHAR2(7)

 ENCRYPTED                                          VARCHAR2(3)

 COMPRESS_FOR                                       VARCHAR2(12)

SQL> select tablespace_name from dba_tablespaces;


TABLESPACE_NAME

------------------------------

SYSTEM

SYSAUX

UNDOTBS1

TEMP

USERS


显示当前数据库的全称

select * from global_name;

SQL> select * from global_name;


GLOBAL_NAME

--------------------------------------------------------------------------------

ORCL11G.US.ORACLE.COM


显示当前用户可以访问的所有数据字典视图

select * from dict where comments like '%grant%';

SQL> desc dict;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 TABLE_NAME                                         VARCHAR2(30)

 COMMENTS                                           VARCHAR2(4000)

SQL> select * from dict where comments like '%grant%';

TABLE_NAME                     COMMENTS

------------------------------ --------------------------------------------------------------------------------

USER_AUDIT_STATEMENT           Audit trail records concerning  grant, revoke, audit, noaudit and alter system

USER_COL_PRIVS  


您可能感兴趣的文档:

--结束END--

本文标题: Oracle之数据字典

本文链接: https://www.lsjlt.com/news/40541.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle数据字典详解
    目录1. 什么是oracle数据字典2. 数据字典的内容3. 数据字典应用示例1. 什么是Oracle数据字典 数据字典(Data Dictionary)是Oracle元数据(Metadata)的存储地点,汇集了数据库对...
    99+
    2023-04-19
    Oracle数据字典介绍 Oracle数据字典 Oracle数据
  • Oracle相关数据字典分析
    本篇内容主要讲解“Oracle相关数据字典分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle相关数据字典分析”吧!问题描述:alert日志发现报错主...
    99+
    2024-04-02
  • Oracle的数据字典是什么
    这篇文章主要讲解了“Oracle的数据字典是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle的数据字典是什么”吧!数据字典是oracle存放有...
    99+
    2024-04-02
  • python基本数据类型之字典
    字典的定义与特性字典是Python语言中唯一的映射类型。定义:{key1:value1,key2:value2}1、键与值用冒号“:”分开; 2、项与项用逗号“,”分开;特性:1.key-value结构 2.key必须可hash、且必须为不...
    99+
    2023-01-31
    字典 数据类型 python
  • JavaScript 数据结构之字典方法
    目录一、什么是字典二、创建字典类1.hasKey 方法2.set 方法3.remove 方法4.get 方法5.keys, values, keyValues 方法6.forEach...
    99+
    2024-04-02
  • Oracle常用数据字典有哪些
    这篇文章主要介绍“Oracle常用数据字典有哪些”,在日常操作中,相信很多人在Oracle常用数据字典有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle常用数据...
    99+
    2024-04-02
  • Python之字典
    ''' 字典 : 以"{}",每一项以",",元素以"key : value"的键值对形式存在的一种数据结构         #注 : 要求key必须可哈希,即不可变且唯一,即不存在在同一字典出现两个相同的key 字典的新增 :     d...
    99+
    2023-01-31
    字典 Python
  • Oracle dba_data_files数据字典里的bytes大于maxbytes
    今天临下班时,同学发来一个截图,意思是说dba_data_files里的bytes值大于maxbytes值。截图如下:立马感觉就不好了,根据以往的Oracle运维经验觉得这绝对是不可能的。但是数据查出来的事...
    99+
    2024-04-02
  • JavaScript数据结构之字典方法怎么用
    今天小编给大家分享一下JavaScript数据结构之字典方法怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、什么是字...
    99+
    2023-06-30
  • python3之dict字典
    字典字典是一种无序结构字典是一种kv结构value可以是任何对象key是唯一的key必须是可hash对象 字典初始化d = {}d = dict()d = {'a':1 , 'b':2} 字典的方法:1.     d.clear      ...
    99+
    2023-01-31
    字典 dict
  • Redis数据结构之链表与字典的使用
    今天我们来聊一聊Redis中的链表与字典,具体如下: 链表 关于链表的基础概念其实你在学习Redis之前一定积累了不少,所以本文将默认你已经掌握了链表相关的基础知识,而Redis的链...
    99+
    2024-04-02
  • oracle常用数据字典的知识点有哪些
    本篇内容介绍了“oracle常用数据字典的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一数据...
    99+
    2024-04-02
  • python三之缺省函数(及字典)
    ...
    99+
    2023-01-31
    字典 函数 python
  • Python数据类型--字典dictionary
    目录一、定义二、操作三、遍历字典一、定义 字典是一系列的键-值对,键与值之间用冒号隔开,而键-值对之间用逗号隔开,其中的“键”和“值”...
    99+
    2024-04-02
  • Python数据存储之XML文档和字典的互转
    目录面试题解析总结考点: 将字典转换为XML文档;将XML文档转换为字典。 面试题 1.面试题一:如何将一个字典转换为XML文档,并将该XML文档保存为文本文件。2.面试题二:如何读...
    99+
    2024-04-02
  • Python 之 字典使用
    字典的增删改查使用 1、增加 info = { "person1":"大s", "person2":"小s", "person3":"小3", "person4":"小4" } info["person5"]...
    99+
    2023-01-31
    字典 Python
  • python基础之字典
    字典 # 字典:也是python中重要的数据类型,字典是由键值对组成的集合 # 通常使用 键来访问数据,效率非常高,和list一样支持对数据的添加、修改和删除操作 # 特点: ...
    99+
    2024-04-02
  • python3学习之字典
    字典:简单字典:dic = {1:'a',2:'b',3:'c'}嵌套字典:字典中可包含元组、列表、字典dic = {1:'a',2:'b',3:'c',4:{1:'a',2:'b',3:'c'},5:[1,2,3],6:(5,6)}dic...
    99+
    2023-01-31
    字典
  • python字典怎么遍历数据
    这篇文章主要介绍“python字典怎么遍历数据”,在日常操作中,相信很多人在python字典怎么遍历数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python字典怎么遍历数据”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • 怎么理解InnoDB数据字典
    本篇内容介绍了“怎么理解InnoDB数据字典”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作