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

Oracle Database Gateway (DG) 针对网络要求,需要满足以下条件:

1、客户端和服务器必须能够通过TCP / IP协议连接。

2、客户端和服务器必须在同一子网中。

3、客户端和服务器必须使用相同的网络协议。

4、客户端和服务器必须都正确配置了网络协议堆栈。

5、客户端和服务器必须能够解析其他计算机的IP地址和主机名。

6、客户端和服务器必须具有与Oracle Database Gateway所需的网络服务(例如,Telnet,FTP,SMTP)相匹配的端口。

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能轻松的实现数据仓库的 *** 作。

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

优点

■ 可用性强

■ 可扩展性强

■ 数据安全性强

■ 稳定性强

一 数据库名

数据库名是数据库的 身份z号码 用于标示一个数据库 在参数文件中用DB_NAME表示

数据库名是在安装数据库 创建新的数据库 创建数据库控制文件 修改数据库结构 备份与恢复数据库时都需要使用到的

如何查看数据库名呢?方式有三

使用SQL语句 select name from v$database

使用show命令 show parameter db_name

查看参数文件 查看init ora文件

二 数据库实例名

数据库实例名是用于和 *** 作系统进行联系的标识 也就是说数据库和 *** 作系统之间的交互使用的是数据库实例名

实例名也被写入参数文件中 该参数为instance_name 在winnt平台中 实例名同时也被写入注册表

数据库名和实例名可以相同也可以不同 在一般情况下 数据库名和实例名是一对一的关系 但如果在oracle并行服务器架构(即oracle实时应用集群)中 数据库名和实例名是一对多的关系

如何查看当前数据库实例名呢?方式有三

使用SQL语句 select instance_name from v$instance

使用show命令 show parameter instance

查看参数文件 查看init ora文件

数据库实例名与ORACLE_SID两者都表示oracle实例 但是有区别的 instance_name是oracle数据库参数 而ORACLE_SID是 *** 作系统的环境变量 ORACLD_SID用于与 *** 作系统交互 也就是说 从 *** 作系统的角度访问实例名 必须通过ORACLE_SID

ORACLE_SID必须与instance_name的值一致 否则 你将会收到一个错误 在unix平台 是 ORACLE not available 在winnt平台 是 TNS 协议适配器错误

三 数据库域名与全局数据库名

随着由多个数据库构成的分布式数据库的普及 这种命令数据库的方法给数据库的管理造成一定的负担 因为各个数据库的名字可能一样 造成管理上的混乱

为了解决这种情况 引入了Db_domain参数 这样在数据库的标识是由Db_name(数据库名)和 Db_domain(数据库域名)两个参数共同决定的 避免了因为数据库重名而造成管理上的混乱 这类似于互连网上的机器名的管理

我们将Db_name和 Db_domain两个参数用 连接起来 表示一个数据库 并将该数据库的名称称为Global_name(全局数据库名) 即它扩展了Db_name Db_name参数只能由字母 数字 _ # $ 组成 而且最多 个字符

对一个网络数据库(Oracle database)的唯一标识 oracle建议用此种方法命令数据库 该值是在创建数据库是决定的 缺省值为Db_name Db_domain 在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值 如果要修改 Global_name 只能用ALTER DATABASE RENAME GLOBAL_NAME TO 命令进行修改 然后修改相应参数

如何查询数据库域名呢?方法有三

使用SQL命令 select value from v$parameter where name = db_domain

使用show命令 show parameter domain

查看参数文件 在参数文件中查询

四 数据库服务名

该参数是oracle i新引进的 在 i以前 我们用SID来表示标识数据库的一个实例 但是在Oracle的并行环境中 一个数据库对应多个实例 这样就需要多个网络服务名 设置繁琐 为了方便并行环境中的设置 引进了Service_name参数 该参数对应一个数据库 而不是一个实例

该参数的缺省值为Db_name Db_domain 即等于Global_name 如果数据库有域名 则数据库服务名就是全局数据库名 否则 数据库服务名与数据库名相同

如何查询数据库服务名呢?方法有三

使用SQL语句 select value from v$parameter where name = service_name

使用show命令 show parameter service_name

查看参数文件 在参数文件中查询

从Oracle i开如的oracle网络组件 数据库与客户端的连接主机串使用数据库服务名 之前用的是ORACLE_SID 即数据库实例名

五 网络服务名

网络服务名 又可以称为数据库别名(database alias) 是客户端程序访问数据库时所需要 屏蔽了客户端如何连接到服务器端的细节 实现了数据库的位置透明的特性 网络服务名被记录在tnsnames ora文件中

网络服务名是从客户端的角度出发 当客户端连接远程数据库或其他服务时 可以指定Net服务名 因此需要使用一个或多个命名方法将此Net服务名解析为连接数据库或其他服务的连接描述符

通常选择的是[本地] 将存储在本地客户机的tnsnames ora文件中的网络服务名解析为连接描述符

[Oracle Names] 由Oracle名字服务器提供为网络上的每个Oracle Net服务提供解析方法

[主机名] 通过TCP/IP环境中的主机别名连接到Oracle数据库服务

[Sun NIS]/[DCE CDS] 专用系统用的 在Windows 系统环境下不适用

六 总结

Oracle中各种命名的比较名称查询方式

名称→ 查询方式 DB_NAME→select name from v$database INSTANCE_NAME →select instance_name from v$instance ORACLE_SID→值和INSTANCE_NAME相同 DB_DOMAIN→select value from v$parameter where name= db_domain GLOBAL_NAME →DB_NAME DB_DOMAIN SERVICE_NAME→ select value from v$parameter where name= service_name NET_SERVICE_NAME→检查tnsnames ora文件

lishixinzhi/Article/program/Oracle/201311/16568

以上就是关于oracle中的数据结构是那样的!全部的内容,包括:oracle中的数据结构是那样的!、oracledg网络要求、数据库oracle简介等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存