`

Oracle学习笔记:数据字典

阅读更多

oracle数据字典

  说起字典,下面让我来打个比方。我们读书写字,靠的是什么?你会说:字!那我问你,你所用的字又是什么呢?!这时,你只可能把字典(新华字典、康熙字典、说文解字等等)里的说法拿出来解释了。再进一步,你能随随便便就自己写一本字典,把每个字重新定义一下,就去用吗?显然不可能,要是那样,世界早乱套了!有意思的是:即使是字典关于每个字的解释还是用其他的字来解释的,这样循环解释下去.....????????这其实只是表现形式的一致,内容上绝不会死循环的,那就是铁定规定一些最最基础的语义不可再分的字为基础字!其他的不过是多种说法写法,不断被解释的新字而已!

  就是这样:数据库里的数据字典就是就是解释数据库对象的对象,所以数据字典也叫元数据-metadata。他们不可以被用户增、删、改,只能查看使用。数据字典也有一些不可再分的字典基础表,其他的主要是视图、视图的视图、同义词而已,而我们能用的只能是这些视图、视图的视图、同义词。你问了“oracle为什么不让咱看基础表啊”?让你看,你看的懂吗?话又说回来,真让你看懂了,oracle不早关门了?! 这就是历史、兼容性、效率、管理、安全、习惯等问题了。

  为什么oracle提供了这么多的数据字典啊?你说是如果你盖房子了,是用现成的砖、水泥、钢筋等等建筑材料好啊,还是先从一个老房子上拆零件好啊?但有时候有集成度较高的半成品也是很好的,可这个东西是没有标准去把握的,只好仁者见仁、智者见智了。oracle也是不断顺应民意不断改变的!



oracle的数据字典主要从两个角度去划分的

  1. static 和 dynamic 指的是字典信息内容是否实时更新,是否可以阶段重现或者是否可控。static主要适用于用户模式对象,在数据库open状态下使用;dynamic主要是数据库实例提供的内存结构信息,他们甚至没有database中存储的表结构,完全是oracle实例提供的内存表,而且可用的字典表在实例启动的不同阶段都是不同的。由此也引出了两者的可访问的方式有些不同:dynamic字典只能使用简单的 select where,要使用其他的东西,必须先转储位实体表;而 static 则没有这些限制!
  2. privileges :指权限、安全管理角度。 其中,static 的 dba_、all_、user_ 指的是从用户ID安全角度定义了内容访问许可范围,由此引出了大量的数据字典视图、同义词;类似的dynamic的v_$、v$、gv_$、gv$从实例ID安全角度定义了内容访问许可范围,也引出了大量的数据字典视图、同义词!

 

oracle数据字典的衍生关系

oracle程序fixed 表-->fixed 视图:如v$instance  ----该层的fixed 表是对用户访问关闭的

oracle:  x$表-->gv$视图-->v$视图  --该层是对用户访问关闭的

          |    |

        gv_$视图  v_$视图

          |    |  

        gv$同义词 v$同义词

oracle:  *$基础表-->dba_*视图-->all_*视图-->user视图  ----该层的表是对用户访问关闭的

    all_*视图、user视图实际上都是从*$基础表定义而来的,逻辑范围上如上

 

在进行数据访问时,Oracle 访问 VIEW优先,然后是同义词。


 

你绝对用的到的基础数据字典

  1. dictionary 【dict】  --列出所有的数据字典,oracle10g里有 1378 个!
  2. dict_columns  --列出所有的数据字典表列
  3. v$fixed_table  --列出所有的dynamic 表、视图,此处的 fixed 应理解为oracle内置的、固有的
  4. v$fixed_view_definition  --列出所有dynamic视图的原始定义,此处的 fixed 应理解为oracle内置的、固有的
  5. v$process  --oracle进程信息,addr
  6. v$session  --oracle的会话信息,paddr对应v$process的addr,process指client的os的processid,*_sql_*,row_wait_row#,event等待事件描述,sql_trace
  7. v$sql  --oracle缓存的sql
  8. v$sgainfo、v$sgastat、v$pgastat  --sga的固定和动态组成情况
  9. v$sysem_parameter  --oracle系统所有的初始化参数,不包含隐藏参数
  10. v$sysem_event  --oracle实例的系统等等事件统计
  11. v$thread  --当前lgwr线程信息,从中可以获得很多redo相关的信息。sequence#-1
  12. v$version、v$option  --oracle的版本、组件情况
  13. v$open_cursor  --oracle打开的所有cursor情况
  14. v$object_dependency  --oracle系统运行时所有object的依赖情况
  15. v$bgprocess  --oracle所有可能的后台进程,已经是否运行等情况
  16. v$datafile、v$datafile_header  --oracle的datafile信息
  17. v$log、v$logfile、v$log_history  --oracle的online redo 的信息及归档历史信息




其他常见的oracle数据字典(不断收集整理中......)

  1. v$session_event、v$session_wait、v$session_wait_class、v$session_wait_history  --当前会话等待事件、汇总、历史统计
  2. v$sql、v$sql_plan、v$sql_trace、v$sql_text、v$sql_cursor、v$sqlstats、v$sqlarea  --sql缓存中的sql文本
  3. v$process_memory  --oracle进程的内存使用详细信息
  4. v$system_wait_class  --oracle系统等待事件汇总
  5. v$database  
  6. v$instance
  7. v$tablespace  --从控制文件中获得的关于表空间的基本信息
  8. v$thread  --lgwr线程信息,从中可以获得很多redo相关的信息
分享到:
评论

相关推荐

    Oracle学习笔记.pdf

    以下是对Oracle学习笔记中提到的一些关键知识点的详细解释: 1. **SQL执行顺序**: SQL语句的执行顺序是:`FROM` -> `WHERE` -> `SELECT` -> `GROUP BY` -> `HAVING` -> `ORDER BY`。首先从`FROM`子句开始,确定...

    oracle学习笔记整理

    以下是对Oracle学习笔记整理的主要知识点的详细说明: 1. **数据库选择**: 在决定使用哪种数据库时,通常需要考虑项目的规模、性能需求、安全性要求以及可用资源。Oracle数据库因其稳定性、可扩展性和高性能而被...

    Oracle9i学习笔记.doc

    总结来说,Oracle9i的学习笔记涵盖了数据库的基本创建与维护,数据字典的管理和查询,以及数据库状态控制和参数调整,这些都是数据库管理员必备的基础知识。虽然Oracle9i版本较为陈旧,但其核心概念和操作在新的...

    ORACLE经典学习笔记

    ### ORACLE经典学习笔记知识点概览 #### 第一章 ORACLE 命令 本章节主要介绍了Oracle数据库中常用的命令及其使用方法。 1. **查看参数文件**: `Desc v$parameter` - 这个命令用于查看Oracle的参数文件信息,通过...

    oracle学习笔记.doc

    本文将基于“Oracle学习笔记”进行深入解析,主要涵盖Oracle的基础概念、数据文件管理、SGA组件、数据库启动与关闭、用户管理、SQL*Plus命令、视图以及同义词。 1. **数据文件管理**: - 数据文件(Datafile)是...

    达内-ORACLE学习笔记

    ### Oracle数据库中常用的数据类型 在Oracle数据库中,数据类型的选择对于存储效率和查询性能至关...通过以上内容的学习,可以对Oracle数据库有一个全面而深入的理解,为高效地管理和利用数据库资源打下坚实的基础。

    老相Oracle DBA学习笔记

    Oracle数据库管理员(DBA)学习笔记详细记录了Oracle数据库中SQL语句执行的过程,包括用户连接、服务器进程分配、PGA空间、SQL解析、执行计划缓存、shared pool、buffer cache、逻辑IO和物理IO、重做日志等关键知识...

    Oracle_认证学习笔记

    Oracle 认证学习笔记 本文档主要讲述 Oracle 认证学习笔记,涵盖了 Oracle 数据库体系结构基础、系统全局区(SGA)、实例(Instance)、Oracle 存储器结构等知识点。 一、 Oracle 数据库体系结构基础 Oracle ...

    ORACLE学习笔记.pdf

    3. **SGA (System Global Area)**: SGA是Oracle数据库实例的一部分,存储数据库的共享内存结构,包括SQL和PL/SQL代码、数据字典、缓冲区等。 4. **实例**: 实例是Oracle数据库的运行时环境,由SGA和后台进程组成,...

    oracle学习笔记-基础

    在Oracle学习中,了解数据库的启动、关闭以及其基本操作是非常重要的基础知识。以下是对Oracle数据库启动、关闭及体系结构的详细解释: 1. **Oracle数据库启动与关闭** - **启动数据库**: - 使用`sqlplus`连接...

    JavaEE学习笔记

    Oracle学习笔记: Oracle是目前世界上使用最广泛的数据库管理系统之一。学习笔记中涉及了Oracle的基本操作,包括查询数据行、限制查询行数、单行函数、多表数据展示、组函数、子查询、运行时变量指定、数据库设计、...

    韩顺平玩转oracle学习笔记

    ### 韩顺平玩转Oracle学习笔记知识点详解 #### 一、Oracle基本使用——基本命令 ##### 连接命令 - **`conn[ect]`**:此命令用于连接到Oracle数据库。语法如下: - `conn 用户名/密码@网络服务名 [as sysdba/...

    Oracle日常运维操作总结-数据库的启动和关闭 数据库运维.pdf

    在NOMOUNT状态下,无法访问数据库的数据字典,因为数据文件尚未加载。 2. MOUNT模式: MOUNT模式是介于NOMOUNT和OPEN之间的一个状态,此时数据库实例已加载了控制文件,并确认了数据库的物理结构。数据库被挂载,...

    oracle 学习笔记

    ### Oracle学习笔记知识点详解 #### 一、数据库结构 **1.1 物理结构概述** Oracle数据库的物理结构主要包括三类文件:数据文件、重做日志文件和控制文件。这些文件共同构成了数据库的物理存储结构。 **1.2 表...

    oracle 学习笔记.doc

    在Oracle环境中,用户表(user tables)和系统表(system table,即数据字典)共同作用,用户对用户表的DDL(Data Definition Language)操作会直接影响到系统表。 在SQL*Plus中,`desc`命令用于查看表结构,而`...

    Oracle学习笔记

    在Oracle学习笔记中,我们可以看到关于创建数据库、管理数据文件、日志文件、表空间、字符集设置、时间区调整、权限管理以及数据库操作等多个方面的内容。以下是这些知识点的详细说明: 1. **创建数据库**: 在...

    Oracle 认证学习笔记

    ### Oracle 认证学习笔记 #### 第一章 Oracle 数据库体系结构基础 本文将深入探讨 Oracle 9i DBA 认证教程中的基础知识,并重点分析 Oracle 数据库的体系结构及其核心概念。 ### 1. Oracle 数据库系统 Oracle ...

    Oracle学习笔记[荐]

    这篇学习笔记主要涵盖了Oracle服务器的启动与停止,以及关于控制文件的重要信息。 一、启动Oracle Server Oracle Server的启动涉及三种不同的模式:nomount、mount和open。每个模式都有特定的用途: 1. **Nomount...

Global site tag (gtag.js) - Google Analytics