• 13->oracle的数字字典


        数据字典系统表,保存在system表空间中。
    由表和视图组成,由服务器在安装数据库时自动创建,用户不可以直接修改数据库字典,在执行DDL语句时,oracle会自动修改。
    记录一些表和视图(只读的),新建的表不要和这空间建在一起(9i以前的版本新用户建的表默认表空间为system,注意修改)

    查询数据字典:
    select * from dictionary
    主要四部分:
    1,内部RDBMS表:x$……
    2,数据字典表:……$
    3,动态性能视图:gv$……,v$……
    4,数据字典视图:user_……,all_……,dba_……
    一,内部RDBMS表 x$……,例如:x$kvit,x$bh,x$ksmsp,x$ksppi和x$ksppcv
    核心部分,用于跟踪内部数据库信息,维持DB的正常运行。
    是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。最好不要修改.
    x$kvit=Kernel Layer Performance Layer V Information tables Transitory Instance parameter
    数据库启动时,动态创建x$……
    二,数据字典表 ……$,如tab$,obj$,ts$……
    --用来存储表、索引、约束以及其他数据库结构的信息。
    --创建数据库时通过脚本sql.bsq来创建,脚本:$oracle_home/rdbms/admin/sql.bsq

    三,动态性能视图 gv$……,v$……,如V$parameter
    --记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。
    --数据库创建时建立的。
    --只有sysdba可以直接访问。
    --》查看表v$fixed_view_definition(***),可以查看GV$和V$视图的创建语句。(oracle提供一些特殊视图,用来记录其他视图的创建方式,v$fixed_view_definition就是其中之一) 也可以通过 v$fixed_table查看
    --select view_definition from v$fixed_view_definition where view_name='V$FIXED_TABLE';
    -》gv$……=Global V$,在X$……基础上创建,是为了满足OPS环境(多个实例)的需要面产生的,可以返回多个实例的信息。
    V$……,在GV$……基础上创建,只返回当前实例的信息。定义语句都带有:where inst_id =USERENV('Instance')
    -》GV$和V$之后,oracle建立了GV_$和V_$视图,又为这些视图建立了公用同义词。由脚本catalog.sql实现的,脚本 :$oracle_home/rdbms/admin/catalog.sql
    create or replace view v_$process as select * from v$process;
    create or replace public synonym v$process for v_$process;

    create or replace view gv_$process as select * from gv$process;
    create or replace public synonym gv$process for gv_$process;

    -->可以看出:
    V$(视图)-->V_$(视图)-->V$(公用同义词)
    GV$(视图)-->GV_$(视图)-->GV$(公用同义词)
    这样做的目的:通过V_$和GV_$,oracle把V$视图和GV视图和普通用户隔离开来。(oracle允许V_$视图权限可以授权给其他用户,但不允许任何对于V$视图的直接授权。)
    所以,在非Sys用户下,我们访问的都是同义词,而不是V$视图或GV视图。

    --oracle访问数据顺序:view-->同义词。
    四,数据库字典视图
    --是在X$表和数据字典表之上建立的视图。
    --创建数据库时由脚本catalog.sql创建。脚本 :$oracle_home/rdbms/admin/catalog.sql
    --按前缀不同,作用范围的分为三类:
    1、以user开头的数据字典: 包含当前用户所拥有的相关对象信息。--能够查到对象的所有者是当前用户的所有对象
    select table_name from user_tables;  (scott) 5
    2、以all开头的数据字典:  包含当前用户有权限访问的所有对象的信息。--能够查到所有当前用户有权限访问的对象
    select table_name from all_tables;  (scott) 96
    3、以dba开头的数据字典:  包含数据库所有相关对象的信息。--只能是有dba权限的用户查询,能查到数据库中所有对象
    select table_name from dba_tables (sys system)






  • 相关阅读:
    springboot 和 spring clould 的版本匹配问题
    行到水穷处,坐看云起时!
    转: 从单体应用 -> SOA--> 微服务 ,服务治理 [熔断,限流,降级,服务恢复,服务容错,监控等等]---> RPC ---> 下一代技术[Service Mesh]
    spring-boot自定义线程池
    千与千寻的内容抓手
    哲学三问
    简约的人生
    关于中间件整理
    此心光明,亦复何言!
    能容的下你身边比你优秀的人---是一种修行
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331271.html
Copyright © 2020-2023  润新知