1.Oracle 体系结构
说到 Oracle,Oracle 是什么呢?Oracle DataBase 是一款关系型数据库管理系统,同类的产品还有 mySql,sqlServer 等,接触过 Mysql,SQL Server 的人可能下意思就认为不就一个关系型数据库么?其实不然,很多时候咱们会把那个承载咱们外围数据的零碎抽象地成为数据库服务器,但从严格意义上来讲 Oracle DataBase 是由两个局部组成:
实例:实例是数据库启动时初始化的一组过程和内存构造。实例是随同着数据库的启动而存在的,它的存在是为了高效拜访和解决数据库中的文件,以及保障故障时数据零失落。
数据库:数据库则指的是用户存储数据的一些物理文件。
正是如此,才会有启动和敞开实例、加载卸载数据库这些术语。从实例和数据库的概念上来看,咱们能晓得,实例临时的,它不过是一组逻辑划分的内存构造和过程构造,它会随着数据库的敞开而隐没,而数据库它其实就是一堆物理文件(管制文件,数据文件,日志文件等等),它是永恒存在的(除非磁盘损坏)。数据库和实例通常是一对一的,这种构造咱们称为单实例体系结构;当然还有一些简单的分布式的构造,一个数据库能够对多个实例,像 Oracle 的 RAC。
如果下面那些让你对 Oracle 有了一点通俗的认知,那么请看下图:
\
如你所见,以两头空白的为线,上面粉嫩嫩的局部便是 Oracle 实例局部,上面的便是数据库局部,那接下来咱们便一一进行分析。
2.Oracle 物理存储构造
顾名思义,物理存储构造就是一些能看得见,理论存在的货色,大白话就是一群文件组成了 Oracle 的物理存储构造。如图
\
黄黄的局部代表着 Oracle 的外围组成,别离是数据文件、管制文件以及重做日志文件。除此之外,物理存储构造还包含着一些其余文件,例如参数文件、密码文件以及归档日志文件等等。上面将次要介绍这些文件。
- 数据文件(Data files)\
数据文件是指存储数据库中数据的文件,这些“xxxx.dbf”存储着零碎数据、数据字典数据、索引数据以及用户存储的数据,所以这部分也是数据库最外围的局部。数据文件大小是灵便的,能够通过设置让它主动扩大,防止了数据量过大然而数据文件空间无限这种情况;数据文件是专属于一个数据库的,也专属于一个表空间的,然而一个表空间却能够领有多个数据文件。如果用户读取的数据不在缓冲区内,便会从数据文件中将绝对应的数据放到缓冲区中,再进行读取。这部分内容会在之后详细分析。 - 管制文件(Control files)\
管制文件是一个很小的二进制文件,这些“xxx.CTL”中寄存的数据库的”物理构造信息”, 这些物理构造信息包含: 数据库的名字、数据文件和联机日志文件的名字及地位.、创立数据库时的工夫戳。数据库在启动的时候须要访问控制文件,从中读取数据文件、日志文件的信息;随着 Oracle 的运行,数据库将不断更新管制文件;绝对应的一旦管制文件损坏,数据库便会产生运行故障。所以为了更好的爱护数据库, 咱们能够镜像管制文件,特地是在数据库构造发生变化时,要对其进行备份,放弃管制文件的一致性。 - 重做日志文件(Redo Log files)\
重做日志文件用于记录数据库所有批改信息 的文件,小名叫做日志文件,这些“.log”文件既能够保障数据库的平安,又能够实现数据库的备份和复原。为了避免数据出现意外失落,oracle 也容许镜像日志文件,一个日志与其镜像进去的文件形成一个日志文件组,然而镜像文件数量不能超过 5 个。正所谓所有的鸡蛋不要放在一个篮子里,同一组的文件最好保留在不同的磁盘中,避免物理损坏造成不必要的麻烦。 - 参数文件(Parameter file)\
参数文件记录了 Oracle 数据库的根本参数信息,次要包含数据库名、管制文件所在门路等。参数文件包含文本参数文件(PFILE)和服务器参数文件(SPFILE),前者为 init.ora, 后者为 spfile.ora 或 spfile.ora 的二进制文件。在数据库启动的时候就会读取参数文件, 而后依据参数文件中的参数来调配 SGA 并启动一系列的后盾过程。 - 归档日志文件(Archived Log files)\
归档日志文件用来对写满的日志文件进行保留复制。其目标是为了长期保留日志以便于复原。
3.Oracle 逻辑存储构造
在 oracle 数据库中,对数据库操作会波及逻辑存储构造,它是从逻辑角度剖析数据库的形成,形容的是数据库外部数据的组织与治理形式,与操作系统没有关系。\
如图,能够显著的看出数据库逻辑构造次要包含表空间、段、区和数据块,所有的构造都是一对多的关系,一个数据库能够领有多个表空间,一个表空间领有多个段等等。
- 表空间
- 表空间是 Oracle 最大的逻辑存储构造,与物理上的数据文件绝对应,然而一个表空间能够领有多个数据文件,这里就不一一赘述了。
-
段
- 数据段:用来存储表中所有数据;在 Oracle 中,每当用户创立一个表时,零碎将主动在默认表空间里调配一个与表名称雷同的数据段,不便存储该表的所有数据。
- 索引段:用来存储表中索引的所有数据;在 Oracle 中,每当用户创立索引时,零碎将主动在默认表空间创立一个与索引名称雷同的索引段,不便存储该索引的所有数据。
- 长期段:用于存储表排序或汇总时产生的长期数据;每当用户:
- 长期表空间进行 Order by 进行排列或汇总时,零碎在该用户的长期表空间主动创立一个长期段,在操作完结时主动打消。
- LOB 段:LOB 用来存储表中大型数据对象,例如 CLOB 与 BLOB
- 回退段:用于存储用户数据被批改之前的地位和值;当与要对用户的数据进行回退操作时,就要应用回退段。
- 段是一组盘区,它是一个独立的逻辑存储构造,用于存储具备独立存储构造对象的全副数据。段个别是数据库终端用户解决最小的存储单位,当段的数据区已满,Oracle 为其调配另一个数据区,段的数据区在磁盘上可能是不间断的。依据段所存储的特色,可将其分为 5 种类型:
- 区
区是 Oracle 存储调配的最小单位,它是由一个或多个数据块组成的。一个或多个区组成一个段,也就是说段的大小都是由区的个数来决定。当一个段的空间应用完之后,Oracle 会主动为该字段调配成一个新的区。
- 块
块是用来治理存储空间的最根本的单位,也是最小的逻辑存储单位。块的大小由初始化参数 db_block_size 来决定,不同的 Oracle 版本的大小是不同的,然而数据库一旦创立,其大小便不可更改。尽管每个数据块能够存储不同类型的数据,然而每个数据块都具备一个雷同的构造,如图:\
1. 块头 \
蕴含了该数据块个别的属性信息,如数据块的物理地址、所属段类型等 \
2. 表目录 \
如果数据块中存储的数据时某个表的数据,则这里寄存该表的信息 \
3. 行目录 \
用来存储数据块中无效的行信息 \
4. 空余空间 \
指数据块还没有应用的存储空间 \
5. 行空间 \
表或者索引的数据存储在行空间中,所以行空间是数据块中曾经应用的存储空间。
所以从形容就可以看进去,一个数据块的容量其实就是行空间与空余空间的容量总和。
4.Oracle 实例内存构造与绝对应的后盾过程
如图所示,Oracle 实例构造分为左右两局部,一个叫做 SGA,称作零碎全局区;一个叫做 PGA,称作程序全局区。SGA 是零碎调配的一组共享的内存构造,用来实现对数据库数据的治理和操作;PGA 是用户会话专有的内存区域,每个服务过程、后盾过程都有一个 PGA。其实从上图能够看出,实例和数据库原本是八竿子打不到一起的两个货色,然而正好两头进去一个媒婆:实例的后盾过程,也就是图中示例局部椭圆形一块一块的那个将两者沟通到了一起。上面先对 SGA 进行剖析形容,其中也会波及到绝对应的过程也将进行剖析:\
如图:
- 数据库缓冲区缓存(database buffer cache)
-database buffer cache 又叫 buffer cache,它用来存储从数据文件中读取到的数据块的镜像。在这块区域 Oracle 将进行执行 sql 的工作,所以当更新数据时,用户会话先会扫描缓冲区,不会去间接在磁盘上操作,这样就会缩小磁盘的 IO,从而大幅度晋升零碎的性能。\
举个例子 \
select user_id,date from customer where user——id>10;\
\
当 oracle 在执行这个 SQL 语句的时候,首先由对应的用户过程发送给服务器,监听收到申请后,便创立一个绝对应的服务器过程,而后该过程便会先扫描缓冲区是否存在 user_id>10 的数据块,如果存在,相干信息便会传到 PGA 中解决,最初显示给用户;如果没有命中,该过程便会将磁盘上对应的数据块复制到缓冲区中,再执行残余的操作。\
然而有些人会想,如果始终查缓存中不存在的数据块,那磁盘上的数据块不全都要复制到缓冲区了么,那不是更快?其实当你把数据块复制到缓冲区中,无形中减少了缓冲区的负荷,而缓冲区的存在意义便是进步零碎的性能,所以便会用 LRU 这个算法治理着缓冲区内存空间,使其在维持在正当的区间内领有最高的性能。\
在执行一些 DML 语句的状况下,例如 update 一个 XXX,缓冲区也是如上操作,先扫描缓冲区,缓存命中,便间接更新;缓存没命中,便把磁盘绝对应的数据块复制到缓冲区进行更新。这时候问题就来了,更新完缓冲区数据,磁盘数据不是没变么?\
这个时候就轮到关键人物出场了:DBWn。
- DBWn
DBWn 又称数据库写过程,他负责的就是将更新完的缓冲区数据写入磁盘中。也就是数据库中的数据文件中。然而这个过程是公认的懒过程,它不是每当缓冲区写入数据的时候便会主动的将其写入磁盘中当上面这些状况产生时,这个懒过程将会执行写的工作:
-
- 没有能够写入的缓存空间
- 脏缓存达到限度(会导致搜寻工夫过长)1/ 4 满
- 最晚三秒钟:最晚三秒会执行一次写入
- 遇到检查点:遇到这个 checkpoint 便会执行写程序。
- 表空间热备份的时候
- 表空间离线、只读状态
- 执行 Drop 操作的时候 \
从以上这些机会更能明确的看出,DBWn 不是随时随地的执行,并且跟 commit 操作没任何关系。其实这种懒过程更是能体现缓冲区存在的意义,缩小磁盘 IO 对系统的压力,所以“懒”还是有“懒”的益处的。\
如果在 DBWn 在未执行的时候,大量的脏数据还在缓冲区并没有写入磁盘的时候,忽然天降横祸,打雷断电了,数据就丢了?这时候就要引出重做日志和其绝对应的后盾过程来解决这个问题。
- 日志缓冲区(Redo log buffer)
当咱们在执行一些 DML 操作时,产生的变更向量会写到重做日志文件中去,一旦下面提到的状况产生,例如打雷啊、断电啊使零碎忽然宕掉,database buffer cache 中的脏数据还没等到 DBWn 将它写入磁盘的时候;当零碎重新启动,这时候就会有一个实例复原的过程,而重做日志中的那些变更向量便会发挥作用,使数据库放弃与宕机前的一瞬间的数据统一;罕用的一些备份复原操作原理和这个一样:提取备份集—> 利用重做日志文件中的变更记录。\
日志文件用于记录对数据库的更改,所以为了缩小磁盘 IO,缩小用户等待时间,数据库的批改操作信息要先写到日志缓冲区中,当日志缓冲区达到肯定的限度时,会被日志写入过程 LGWR 写入磁盘中。绝对 database buffer cache 来说,这个日志缓冲区对数据库的性能影响较小。
-
LGWR
- commit 写入
- 日志缓冲区占用率 1 /3
- DBWn 要写入脏缓冲区前
- LGWR 又称作日志写入器。顾名思义,日志写入器就是将日志缓冲区的脏数据写进磁盘中,绝对于 DBWn 这种“懒”过程,LGWR 可是绝对“勤快”的多
数据库缓冲区缓存和日志缓冲区都是为了进步性能,防止频繁 IO 而存在的。日志缓冲区相比数据库缓冲区缓存要小的多,并且不能进行主动治理,对于日志缓冲区的批改须要重启实例,数据库缓冲区缓存可进行主动治理。作用在数据库缓冲区缓存上的 DBWn 过程,为了防止频繁的磁盘 IO 导致系统性能降落,会尽可能少地执行写入,且 DBWn 的写入和 commit 操作没有任何关系;
而作用在日志缓冲区上的 LGWR 过程,则会十分踊跃地进行写入,个别状况下,它简直是实时地将重做日志记录转储到磁盘中去。LGWR 是 Oracle 体系结构中最大的瓶颈之一。DML 的速度不可能超过 LGWR 将变更向量写入磁盘的速度。
- 共享池
共享池是最简单的 SGA 构造,它有许多子结构,咱们来看看常见的几个共享池组件:
- 库缓存(library cache):Oracle 引入库缓存的目标是共享 SQL 和 PL/SQL 代码。服务器过程执行 SQL 和 PL/SQL 时,首先会进入库缓存查找是否有雷同的 SQL,如果有,就不再进行后续的编译解决,间接应用曾经编译的 SQL 和执行打算。Oracle 通过比拟两条 SQL 语句的注释来确定两条 SQL 是否雷同,所以如果想共享 SQL 语句,必须应用绑定变量的形式。如:
select from emp where sal > 100 和 select from emp where sal > 101 是不同的,而应用绑定变量时, 即便 v_sal 的值不同,Oracle 认为 select * from emp where sal > &v_sal 也是雷同的。Oracle 应用 LRU 队列和算法来治理库缓存,最近应用过的 SQL 会放在队首,长时间没有应用的 SQL 放在队尾,当库缓存须要内存空间而又没有闲暇的内存空间时,队尾内存中的 SQL 会被革除,放入最新的 SQL,并且队首会指向次段内存。Oracle 没有提供间接批改库缓存大小的办法,只能通过批改共享池的大小来间接批改库高速缓存的大小。
- 数据字典缓存 (dictionary cache):当 Oracle 执行 SQL 时,会将相干的数据文件、表、索引、列、用户、其余的数据对象的定义和权限信息寄存到数据字典缓存中。在此之后,如果须要雷同的相干数据,Oracle 会从数据字典缓存中提取。Oracle 没有提供间接批改 数据字典缓存大小的办法,只能通过批改共享池的大小来间接批改 数据字典缓存的大小。
- 那批改共享池的办法是什么?alter system set shared_pool_size= xxx m;共享池的大小受限制于 SGA_MAX_SIZE 参数的大小。
- 大池
大池是个可选的内存区域,可提供一个大的缓冲区供数据库的备份与复原操作过程应用。须要大池的理论须要个别有以下三种:
- 数据库的备份复原
- 具备大量排序操作的 SQL 语句
- 并行化的数据库操作
- JAVA 池
JAVA 池在数据库中反对 JAVA 的运行,寄存 JAVA 代码和 JAVA 语句的语法分析表;JAVA 池的大小个别不小于 20M,便于装置 JAVA 虚拟机。
- 流池
从重做日志中提取变更记录的过程 和 利用变更记录的过程会用到流池(如实例不失常敞开,譬如断电导致实例敞开,在重启时,Oracle 会主动执行实例复原过程,在此过程须要提取重做日志记录和利用重做日志两个动作)
以上列举了 Oracle 常见的内存构造,要留神的是,下面列举的内存区域,除了日志缓冲区是固定的,不能动静调整也不能进行主动治理外,其余内存区域都能够进行动静调整,也能够进行主动治理。
5.Oracle 程序全局区
PGA 蕴含单个用户或者服务器数据和管制信息,是 oracle 调配给一个过程的公有内存区域,每当有用户过程连贯到数据库并创立一个会话时,便会由 Oracle 主动调配绝对应的空间。\
在下面咱们介绍了 DBWn、LGWR 这两个过程,上面将介绍其余的过程信息:
- SMON\
SMON(System Monitor)又称作系统监控过程,当数据库实例呈现故障或者零碎解体的时候,执行复原操作。它还定期合并字典治理的表空间中的闲暇空间;并且,在零碎重启期间,他还能够清理表空间所有长期段。装置和关上数据库,也是由此过程实现的。SOMN 会被有法则的唤醒执行,并在其余过程须要时也能够进行调用。 - PMON
- PMON(process monitor)又称过程监视器。用户过程呈现故障时执行的复原操作,负责清理内存存储区和开释该过程所应用的资源;除此之外,PMON 还会周期的查看调度过程和服务器过程的状态,对已死的过程进行重启。POMN 会被有法则的唤醒执行,并在其余过程须要时也能够进行调用。
– - CKPT
CKPT(checkpoint process)检查点过程。该过程负责发动检查点信号,让 DBWn 开始工作;并更新管制文件以及数据文件头。
- ARCn
- ARCn(Archive)归档过程,次要负责将日志文件复制到归档日志文件中,来防止日志文件组的循环应用笼罩到已有的日志文件中。只有当数据库在 ARCHIVELOG 模式下,且主动归档开启的时候,零碎便会启动 ARCn 过程;ARCn 包含归档形式和非归档形式。只有在归档形式下,才会存在 ARCn 过程,当它进行归档操作时,任何过程都不能拜访被操作的日志文件。
以上过程除了 ARCn 之外,全部都是零碎必要的过程。对维持物理和内存之间的分割起了重大作用。
6. 数据字典
数据字典是 Oracle 数据库重要的组成部分,由 Oracle 主动创立并更新,用来存储数据库实例信息的一组表,以表和视图的形式组织其领有的信息。数据字典中的表是不能间接被拜访的,然而能够拜访数据字典中的视图。数据字典的拥有者是 SYS 用户,并存储在默认表空间 SYSTEM 表空间中。数据字典次要存储以下信息:
- 数据库中所有模式对象的信息,如表、视图、簇、及索引等。
- 存储空间的调配信息,调配多少空间,以后应用了多少空间等。
- 平安信息
- 实例运行时的性能和统计信息
- 其余数据库自身的根本信息
Oracle 中的数据字典有动态和动静之分;静态数据字典,在用户拜访数据字典时不会产生扭转,zhelei 动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些外在信息,所以在拜访这类数据字典时往往不是变化无穷的。\
静态数据字典中的视图分为三类,它们别离由三个前缀够成:user_、all_、dba_*。
- user 视图 \
user 视图的名称以 user_为前缀,用来记录用户对象的信息。user 视图能够看作是 all 视图的本人,每个用户都能够查问 user 视图。应用 DESC 能够理解视图构造。例如(局部截图):
- all 视图 \
all 视图的名称以 all_为前缀,用来记录用户对象的信息以及能够拜访的所有对象信息,包含该用户本人的计划对象,也包含被受权能够拜访其余用户的计划对象。all 视图是 user 视图的扩大。 - dba 视图 \
dba 视图以 dba_为前缀,用来记录数据库实例所有对象的信息。个别只有 dba 角色能够拜访 dba 视图,如果普通用户被授予 Select any dictionary 零碎权限的用也能够对此进行拜访。
动静性能视图都是以 V$ 结尾的视图,V$ 视图以 V$ 为前缀,用来记录与数据库流动相干的性能统计动静信息。例如 V$session 视图,能够查看以后会话的详细信息。如图(局部截图):\
7. 数据库启动和敞开流程
Oracle 启动分 3 个过程 nomount、mount 和 open,这三个过程具体执行的工作如下:\
\
- nomount 状态:启动实例。\
首先从环境变量下 dbs 目录按如下程序读取参数文件,然而会思考参数文件重要性,便会通过以下过程进行读取:\
首先,读取 spfile+ 实例名.ora 这个文件;若未发现这个文件则读取 spfile.ora;若未发现这个文件则读取 init+ 实例名.ora 这个文件;如果以上文件都没找到,也能够指定 pfile 参数文件启动以代替默认启动形式。\
读取完参数文件之后,便开始调配 SGA,启动后盾过程,启动预警日志文件(记录实例生命周期内事件,如零碎外部谬误、数据块损坏、零碎参数批改等)和追踪文件(记录 SQL 操作及工夫耗费等。要留神的是,数据库必须用初始参数文件或启动命令中的 DB_NAME 参数命名。\ - mount 状态:关联实例与数据库,读取管制文件并获取数据文件和重做日志文件名称状态。\
启动完实例之后,便要将实例与数据库相关联,在读取参数文件时,找到管制文件地位并将其关上,从中读取到数据文件以及重做日志文件名称与状态,然而这里不查看数据文件与重做日志文件的存在性。在 mount 状态下,零碎实现了了数据库的装载。 - open 状态:关上数据库 \
关上数据库过程承接了 mount 状态,从管制文件读取到了数据文件、重做日志文件的地位,这里将其关上;如果其中任何一个文件失落的话,则 Oracle 会返回一个 error,在最初阶段,Oracle 数据库验证数据文件和重做日志文件可否关上并测验数据库的一致性,若不统一,SMON 后盾过程将启动实例复原。
shutdown 有四个参数:normal、transactional、immediate、abort,不带参数默认为 normal。
- shutdown normal:一直开当初连贯用户,阻止任何用户建设新的连贯,包含管理员在内。曾经连贯的用户可能持续他们以后的工作,如递交新的更新事务,直到此用户自行断开连接。这样须要期待的工夫长,能够查呈现连用户,再告诉其自行断开。所有的用户都断开连接,数据库才进行敞开操作,即敞开数据库、卸载数据库、终止例程。在这种状况下敞开的数据库在重新启动后,不会呈现问题。启动时不须要实例复原。
- shutdown transactional:阻止任何用户建设新连贯,期待所有以后连贯用户的未递交的流动事务提交结束,而后立刻断开用户的连贯。所有的用户都断开连接则立刻敞开数据库,进行敞开数据库、卸载数据库、终止过程等操作。这种形式,用户有可能正在算账,做简单报表!一次数据库操作做不完的,在刚做了一次数据库操作后,将被断开,这样对用户有肯定影响,启动时不须要实例复原。
- shutdown immediate:阻止任何用户新的连贯,同时限度以后连贯用户开始新的事务。如果已连贯用户有未实现的事务,则数据库系统不会期待他们实现,而是间接把以后未递交的事务回退。数据库系统不再期待用户被动断开连接,当未递交的事务回退胜利后,零碎会间接敞开、卸载数据库,并终止数据库过程,启动时不须要实例复原。
- shutdown abort:当数据库呈现故障时,可能以上三种形式都无奈失常敞开数据库,则应用这种办法。强制完结以后正在执行的 SQL 语句,任何未递交的事务都不被回退!这种办法基本上不会对管制文件或者参数文件造成毁坏,这比强制关机要好一点(在无奈失常敞开数据库的时候),启动时主动进行实例复原。
startup 有 7 个参数:nomount、mount、open、pfile、force、restrict 和 recover
- startup nomount:通过参数文件,调配 sga,启动数据库后盾过程,不关上管制文件和数据文件,不能拜访数据库。通常启动到这里能够做 create database , create or recreate control file 或者是 mount standby database 等动作,批改 parameter 也是能够的。
- startup mount:仅给 dba 进行治理操作,不容许数据库用户拜访。仅以后实例的管制文件被关上,数据文件未关上,在这个模式下能够进行如下操作:重命名数据文件、增加勾销或重命名重做日志文件、设置归档模式、设置闪回、执行残缺的数据库复原操作等。
- startup open:startup 的默认参数就是 open,关上数据库,容许数据库的拜访,以后实例管制文件中所形容的所有文件都曾经关上。
- startup pfile=FILENAME:以 FILENAME 为初始化文件启动数据库,不是采纳默认初始化文件。
- startup force:停止以后数据库的运行,并开始从新失常的启动数据库。
- startup restrict:只容许具备 restricted session 权限的用户拜访数据库,该模式下登陆者可做如下操作:执行数据库数据的导出或导入、执行数据装载操作用 SQL*Loader、临时阻止个别的用户应用数据、在某个移植过程和降级操作过程中 restricted session 登陆后可应用 ALTER SYSTEM 语句来禁止 RESTRICTED SESSION 个性 ALTER SYSTEM DISABLE RESTRICTED SESSION;如果是在非受限模式下关上的数据库,起初发现须要限度拜访,此时能够应用带 ENABLE RESTRICTED SESSION 子句的 ALTER SYSTEM 语句来实现。
- startup recover:数据库启动,并开始介质复原。
附录:罕用的数据字典
动态视图
数据字典名称 | 阐明 |
dba_tablespaces | 对于表空间的信息 |
dba_ts_quotas | 所有用户表空间限额 |
dba_free_space | 所有表空间中的自在分区 |
dba_segments | 形容数据库中所有段的存储空间 |
dba_extents | 数据库中所有分区的信息 |
dba_tables | 数据库中所有数据表的形容 |
dba_tab_columns | 所有表、视图以及簇的列 |
dba_views | 数据库中所有视图的信息 |
dba_synonyms | 对于同义词的信息 |
dba_sequences | 所有用户序列信息 |
dba_constraints | 所有用户表的束缚信息 |
dba_indexs | 数据表中所有索引的形容 |
dba_ind_columns | 所有表及簇上压缩索引的列 |
dba_triggers | 所有用户的触发器信息 |
dba_source | 所有用户存储过程信息 |
dba_data_files | 查问对于数据库文件的信息 |
dba_tab_grants/privs | 查问对于对象受权的信息 |
dba_objects | 数据库所有对象 |
dba_users | 对于数据库中所有用户的信息 |
动静视图
数据字典名称 | 阐明 |
v$database | 形容对于数据库的相干信息 |
v$datafile | 数据库应用的数据文件信息 |
v$log | 从管制文件中提取无关重做日志组的信息 |
v$logfile | 无关实例重置日志组文件名及其地位的信息 |
v$archived_log | 记录归档日志文件的根本信息 |
v$archived_dest | 记录归档日志文件的门路信息 |
v$controlfile | 形容管制文件的相干信息 |
v$instance | 记录实例的根本信息 |
v$system_parameter | 显示实例以后无效的参数信息 |
v$sga | 显示实例的 SGA 区大小 |
v$sgastat | 统计 SGA 应用状况的信息 |
v$parameter | 记录初始化参数文件中所有项的值 |
v$lock | 通过拜访数据库会话,设置对象锁的所有信息 |
v$session | 有个会话的信息 |
v$sql | 记录 SQL 语句的详细信息 |
v$sqltext | 记录 SQL 语句的语句信息 |
v$bgprocess | 显示后盾过程信息 |
v$process | 以后过程的信息 |