oracle中的数据结构是那样的!

oracle中的数据结构是那样的!,第1张

基本数据结构

表是关系数据库中的一个基本数据结构。表就是行的集合。每行(row)包含一个或多个列。

从Oracle8企业版以后,就提供了分区选件,它允许将表和索引进行分区。利用分区,Oracle可从以下两方面改善性能:

。Oracle不用去访问那些不满足查询条件的分区

。如果分区中所有数据都满足查询条件,那么Oracle将选择全部数据而不需要对每行均进行字句检查。

视图

视图(view)是Oracle中的一种由SQL语句构造的数据结构。SQL语句存储在数据库中,在查询中使用一个视图时,所存储的查询将得以执行,并向用户返回基表(base table)中的数据。

视图不包含数据,而是表示一些方法可以查看查询所指定的基表数据。

视图有以下几种用途:

。简化对多个表数据的访问

。可以保证表中数据的安全(如,创建包含WHERE子句的视图就可以限制访问表中的数据)

。将应用与表中某些特定的结构分离

视图建立在基表集合的基础之上,基表包括Oracle数据库中的事实表或者其他视图。如果视图中的任何一个基表进行修改,那么该视图将无法继续使用它们,因此视图本身也无法再使用。

索引

索引(index)是用来加快访问数据库中记录速度的一种数据结构。一个索引与一个特定的表相关,而且包含该表的一个或多个列的数据。

创建索引的SQL基本语法:

CREAT INDEX emp_idx1 on emp (ename,job);

其中,emp_idx1时索引名,emp是创建索引的表,ename和job时构成索引的列值。

除了索引数据以外,索引项中还为其相关行保存了ROWIDROWID是获取数据库行的最快方式,因此随后数据库行的获取都是以这种最佳方式来完成。

Oracle中使用的4中类型的索引结构:标准B-树索引、反向键索引、位图索引以及Oracle8i引入的基于函数的索引。Oracle使你可以对表中的数据进行聚合,从而改善性能。

其它数据结构

序列(Sequence)

在多用户数据库中经常出现的大问题,就是很难为键或标识符提供唯一的序号。在这种情况下,Oracle允许创建序列对象。

序列号可以用名字,一个递增值或有关序列的其他一些信息。序列独立于任何表,因此多个表可以使用同样的序列号。

同义词(Synonym)

所有的Oracle数据库的数据结构都存储在一个特定的模式(schema)。模式是和一个特定的用户名相关联的,所有对象都通过带有对象名的模式名得到引用。

例如,模式DEMO中有一个表名为EMP如果想引用表EMP,那么应该通过完整名DEMOEMP来引用。如果没有提供特定的模式名,那么Oracle假定该结构处于当前用户名的模式中。

集群(Cluster)

集群是一种能够改善获取性能的数据结构。集群和索引一样,不会影响表的逻辑视图。

散列集群(Hash Cluster)

数据设计

约束

约束(constraint)强制数据库中某些数据的完整性。当给某列增加一个约束,Oracle自动确保不满足此约束的数据是绝不能被接受的。

约束可以在创建或增加包括某列(通过关键字)的表时与列相关联,或者在表创建后通过SQL命令ALTER TABLE来实现与该列的关联。在Oracle8及以后的版本中支持以下5个约束类型:

NOT NULL

对于任何列都可以设为NOT NULL如果在任何SQL *** 作中将一个NULL值赋给某个有NOT NULL约束的列,Oracle会为这个语句返回一个错误。

惟一性

主键

外键

校验

某些约束需要创建所以来支持。

约束可以是立即的或延迟的。立即约束(immediate constraint)只要有写 *** 作就会立即对受约束列产生影响;而延迟约束(deferred constraint)只有在对约束行产生变化的SQL语句执行完时才有强制作用。

对于某个特定表的约束可设置成暂时挂起。当再次启动该约束 *** 作时,再要求Oracle对该约束验证所有数据,或者只是对新数据应用约束。在现有表中增加约束时,可以指定是否对表中所有记录进行约束校验。

触发器

触发器是个代码块,当某个表中发生了某种类型的数据库事件时它就会被触发,有以下3种事件会导致触发器的触发:

。数据库UPDATE

。数据库INSERT

。数据库DELETE

例如,可以定义一个触发器,从而在用户改变某一行时,写一个定制的审查记录。

触发器是在行一级被定义的。可以指定触发器是对每一行触发,或者对触发该触发器事件的SQL语句触发。

触发器的触发有3个时机:

。在执行触发事件之前

。在执行触发事件之后

。非触发事件

将前两种时间选项与触发器所触发的行和语句的结合,则有4种可能的触发器实现:在语句之前;在行之前;在语句之后;在行之后。

任何触发器都可以有一个触发器限制(trigger restriction)。触发器限制是一个布尔表达式,如果其值为FALSE,那么就阻止触发器触发。

触发器的定义和存储都独立于使用它们的表。因为触发器包含逻辑,所以必须通过比SQL功能强的某种实现数据访问的语言来写。可以直接用PL/SQL或Java来写触发器,也可以通过调用其中任一种语言编写的现有存储过程来写触发器。

触发器触发是SQL语句执行的结果,该SQL语句修改了某个表中的行。触发触发器的 *** 作可能是修改这个表中的数据,或者产生某些改变来触发其他表的触发器。这么做的最后结果可能是以某种方法修改了数据,但Oracle认为这是不合逻辑的。这些情况都会导致Oracle返回变异表(mutating table,被其他触发器修改的表)的运行时错误,或是返回约束表(constraining table,被其他约束修改的表)的运行时错误。

Oracle8i还引入了一组非常有用的系统事件触发器和用户事件触发器。现在可以在系统事件(如,数据库启动或关闭)中放置触发器,也可以在用户事件(登录和退出)中放置触发器。

1Oracle数据库的物理结构Oracle物理结构包含了数据文件、重做日志文件、控制文件、参数文件、密码文件、归档日志文件、备份文件、告警日志文件、跟踪文件等等;其中数据文件、控制文件、重做日志文件和参数文件是必须的,其他文件可选。

2Oracle数据库的逻辑结构

Oracle数据库的逻辑结构是一种层次结构,主要由表空间、段、区和数据块等概念组成。逻辑结构是面向用户的,用户使用Oracle开发应用程序使

用的就是逻辑结构。数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系。

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

特点

1、完整的数据管理功能:[2]

1)数据的大量性

2)数据的保存的持久性

3)数据的共享性

4)数据的可靠性

2、完备关系的产品:

1)信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;

2)保证访问的准则

3)视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化

4)数据物理性和逻辑性独立准则

3、分布式处理功能:

ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sqlNet、SQLCONNECT和其他非ORACLE的关系型产品构成。

4、用ORACLE能轻松的实现数据仓库的 *** 作。

这是一个技术发展的趋势,不在这里讨论。

优点

■ 可用性强

■ 可扩展性强

■ 数据安全性强

■ 稳定性强

ORACLE由两部分:实例和数据库

实例由以下组成: SGA,Shared pool,Database buffer cache,Redo log buffer cache

数据库由物理文件组成,其中必须有的文件是:数据文件,控制文件,重做日志

另外还有:参数文件,口令文件,归档日志文件(这三个不是必须的)

ORACLE SERVER 由两个部分组成,

1INSTANCE:又由内存结构和后台进程组成

2DATABASE:又由数据文件,日志文件和控制文件组成<这三个文件是必需的>

CONTROL FILE是用来连接实例和DATABASE的

SQL>SHUTDOWN IMMEDIATE

SQL>STARTUP NOMOUNT

SQL>ALTER DATABASE MOUNT

以上三个过程就是通过CONTROL FILE来连接实例和数据库

SQL>ALTER DATABASE OPEN

在OPEN的过程对DATABASE的数据文件和重做日志文件进行一次性的验证,验证它们的状态

ORACLE INSTANCE:存取数据库的一个手段

一个DATABASE与INSTANCE之间是1:N的关系,一个INSTANCE只能 *** 作一个DATABASE,由内存结构(共享池,

BUFFER CACHE,REDO LOG BUFFER CACHE)及相应的进程结构组成(PMON<程序监控进程>,SMON<系统监控进

程>,CKPT<检查点进程>)

SQL>SHOW SGA ---显示DATABASE内存结构信息

SQL>SET WRAP OFF

SQL>SET LINESIZE 200

以上这两个是设置行宽

SQL>SELECT FROM V$BGPROCESS;

将看到在这个系统中所有可能使用到的进程,其中PADDR并不每个进程都分配到有效的地址,即并不是每个进程都是必须的

SQL>SELECT FROM V$BGPROCESS WHERE PADDR<>\'00\'

将显示所有必需的进程

ESTABLISHING A CONNECTION AND CREATING A SESSION

连接到ORACLE实例包括建立一个用户连接及创建会话

ORACLE MEMORY STRUCTURE (内存结构)

由两部分组成:

1SGA

SGA是动态的,其最大值由SGA_MAX_SIZE指定,SGA的内存由SGA COMPONENTS来动态调整

2PGA 是不共享的,即其包含的信息是不一样的,有两个可享的内存可以由SGA配置

<1> LARGE POOL

<2> JAVA POOL

SQL>SHOW PARAMETER SHARED

SQL>SHOW PARAMETER DB_CACHE

SQL>SHOW PARAMETER LOG

以上三个命令是用于查看相关内存信息

SQL>ALTER SYSTEM SET DB_CACHE_SIZE=20M;

所有内存大小总和不能大于SGA_MAX_SIZE的值,当提示信息出现号或乱码时,是由于系统的语言问题

可以通过ALTER SESSION SET NLS_LANGUAGE=\'AMERICAN\'或ALTER SESSION SET NLS_LANGUAGE=\"SIMPLE

[Page]

CHINESE\"

SHARED POOL (共享池)

含:<1>LIBRARY CACHE 库缓存

<2>DATA DICTIONARY CACHE 数据字典缓存,有的地方又称行CACHE,由SHARED_POOL_SIZE指定大小

SQL>ALTER SYSTEM SET SHARED_POOL_SIZE=64M;

LIBRARY CACHE 主要为提高代码的共享,存储的是最近使用的SQL和PL/SQL代码

<1>用最近最少使用(LRU)算法

<2>包括两个结构 1:共享SQL代码 2:共享PL/SQL代码

<3>不可直接定义,而由SHARED POOL SIZE决定

DATA DICTONARY CACHE

执行此命令的过程是:首先确认是否存在AUTHORS,,然后确认字段存不存在,再检查语法,最后验证权限,而

这些信息就属于DATA DICTIONARY CACHE的内容其包含的信息有:DATABASE FILES,表,索引,字段,用户,

权限和其他数据库对象

以上就是关于oracle中的数据结构是那样的!全部的内容,包括:oracle中的数据结构是那样的!、Oracle数据库的物理结构和逻辑结构分别是怎么样的、数据库oracle简介等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9498389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存