oracle笔记

来源:互联网 发布:平刷王时时彩软件怎样 编辑:程序博客网 时间:2024/06/05 04:14
Oracle数据库的各种物理结构,包括数据文件(datafile)、重做日志文件(redo log files)、和控制文件(control files)。


每个Oracle数据库使用一个或多个物理的数据文件(datafile)。数据文件中包含所了有的数据库数据。按表、索引等逻辑数据库结构组织的数据存储在数据库的数据文件中。


数据文件的特点有:
一个数据文件只能属于一个数据库
当数据库空间用完时,数据文件可以按照预定的设置自动扩展。
一个或多个数据文件形成了数据库中的一种逻辑结构-表空间。


每个Oracle数据库都有控制文件(control file)。控制文件中含有说明数据库物理结构的内容。例如,其中包含以下信息:
数据库名
数据文件、重做日志文件的名称和位置
数据库创建的时间戳


每个Oracle数据库都有两个或多个重做日志文件(redo log file)。这组文件作为一个整体被称为数据库的重做日志。重做日志由重做条目(redo record)构成(也被称为重做记录)。




逻辑存储结构包括数据块(data blocks),数据扩展(extents),数据段(segments),这些逻辑结构使Oracle可以精细地控制磁盘空间的使用。


一个数据库被分割为数个被称作表空间(tablespaces)的逻辑存储单位,每个表空间内保存的是一组相关的逻辑对象。例如,一个表空可以用来存储一个应用所需的一组对象,以便简化管理操作。
每个数据库都在逻辑上被划分为一个或多个表空间。用户需要为每个表空间创建一个或多个数据文件来物理地存储属于此表空间的逻辑对象。一个表空间所有数据文件的大小就是此表空间的可用数据存储量。


在Oracle数据库中,最精细的数据存储粒度是数据块(data blocks)。一个数据块相当于磁盘上一段连续的物理存储空间。数据块分配的默认容量由初始化参数 DB_BLOCK_SIZE 决定。除了这个参数,管理员还可以额外设定5个数据块容量参数。Oracle数据库在数据块中分配、利用存储空间。


Segment
Description
数据段
非簇表只有一个数据段。表的所有数据存储在属于数据段的数据扩展中。


对于分区表,每个分区拥有一个数据段。


每个簇表只有一个数据段。簇中每个表的数据都存储在这个簇的数据段中。
 
索引段
每个索引有一个索引段来存储她的数据。


对于分区索引,每个分区有一个索引段。
 
临时段
当一个 SQL 语句在执行过程中需要临时空间时,Oracle将创建临时段。当语句执行结束后,临时段中的数据扩展由系统回收以备后用。
 
回滚段
如果数据库运行在自动撤销空间管理模式(automatic undo management mode)下,数据库服务器使用表空间来管理撤销空间(undo space)。Oracle建议使用自动撤销空间管理模式。 


Oracle的早期版本使用回滚段来存储撤销信息。回滚段中的信息用于回滚未提交的事务,还在数据库恢复时生成 用于保证数据读一致性(read-consistent)的信息。


回滚段的空间管理十分复杂,Oracle已经放弃了这种方式。本文档只讨论通过撤销表空间(undo tablespace)来管理撤销操作的模式。 这消除了管理回滚段空间的复杂性,使管理员只需关注撤销信息要保存多长时间。


在Oracle 10g中,只有 SYSTEM 还使用回滚段来处理系统事务。数据库中只有一个 SYSTEM 回滚段,她是在数据库创建(CREATE DATABASE)时被自动创建的, 这个回滚段只要实例启动就处于联机状态。用户无需执行任何操作来维护 SYSTEM 回滚段。




表(table)是Oracle数据库中基本的数据存储单位。




每个Oracle数据库都有数据字典(data dictionary)。Oracle数据字典是一系列只读的表和索引,用于描述数据库。例如,数据字典中存储了数据库逻辑、物理结构的信息。数据字典中还包括:
Oracle数据库用户信息
数据库表的完整性约束定义信息
为方案对象分配的空间及其空间使用情况


当创建数据库时数据字典也被创建。为了实时、准确地反映数据库的状态,用户对Oracle数据库进行操作时(如改变数据库结构)数据字典将被自动更新。数据库依赖数据字典来记录、验证、管理正在进行的工作。例如当数据库操作进行时,Oracle读取数据字典来验证方案对象是否存在,及用户是否有相应的访问权限。




一个Oracle数据库服务器包括Oracle数据库[此处特指数据库物理文件]和Oracle实例。当数据库启动时,将在内存中分配系统全局区(system global area,SGA),并启动Oracle后台进程。上述内存区和后台进程一起被称为Oracle实例(instance)。




以下例子大体上描述了Oracle进行更新(update)时操作的主要步骤。在例子所描绘的Oracle配置中,用户和相关的服务进程处在不同的计算机中,通过网络连接。
 
在运行Oracle的计算机上启动一个实例(这台计算机也被称为主机(host)或数据库服务器(database server))。
运行应用程序的计算机(也被称为本地计算机(local computer)或客户端工作站(client workstation))中启动了用户进程(user process)。客户端应用程使用与所在网络环境相匹配的Oracle网络服务驱动与服务器建立连接。
数据库服务器也运行与网络环境相匹配的Oracle网络服务驱动。当服务器监听到应用程序的请求后,就建立专用服务器进程为对应的用户进程提供服务。
用户执行SQL语句、提交事务(transaction)。例如,用户改变数据表内某一行的数据。
服务进程收到用户提交的语句后,先在共享池(shared pool)中查找是否存在与此语句相同的共享SQL区(shared SQL area)。如果存在,服务进程就检查用户是否有访问所请求数据的权限,满足权限要求的话,就使用已有的享SQL区来处理SQL语句。如共享SQL区不存在,服务进程要为用户提交的SQL语句创建新的共享SQL区,用来解析、处理此语句。
服务进程从数据文件(逻辑上看就是数据表)或SGA中获得所需的数据。
服务进程修改SGA中的数据。由于事务已经提交,LGWR进程立即在重做日志文件(redo log file)中记录此事务。而DBWn进程则在适当的时机将修改过的数据块写入磁盘。
如事务成功,服务进程通过网络通知应用程序。如不成功,则向应用程序提交错误信息。
在整个过程中,还有一些未提到的后台进程在运行,她们对整个过程进行监控,在需要时参与进来。此外数据库服务器还要管理其它用户的事务,防止请求相同数据的事务之间产生竞争(contention)。






SQL 语句被分为以下几类:
数据定义语句
数据操作语句
事务控制语句
会话控制语句
系统控制语句
嵌入式 SQL 语句


PL/SQL是Oracle在SQL基础上扩展的一种过程语言。PL/SQL既具备SQL语言的灵活性易用性,又具备结构化编程语言的过程控制能力(如IF ... THEN,WHILE 和 LOOP)。
PL/SQL 程序结构包括存储过程(stored procedure),函数(function),包(package),触发器(trigger),自治事务(autonomous transaction)。
过程(procedure)和函数(function)是一组SQL和PL/SQL语句的集合,用于解决特定问题或执行一系列相关的操作。她们被创建之后以编译 结果的形式存储在数据库中,可以由用户或数据库应用调用。
过程和函数基本相同,除了函数可以给调用者一个返回值,而过程没有返回值。

包(package)可以将相关的过程,函数,变量,及其他数据结构包装为一个整体存储在数据库中。包加强了PL/SQL的功能(例如,在包中声明了全局变量后,可以被包内的任何过程使用)。包也能提高性能(例如,包内的所有对象可以被一起解析、编译,在使用时一次全部加载到内存中)。



总结一下:
相比mssqlserver等多出的概念是数据库实例和表空间。
我们最基本的目的是生成关系表以便于开发。
要想能够执行sql脚本创建表,首先需要创建一个数据库实例,接着创建用户并指定默认表空间,而表则默认指定到当前用户的默认表空间。
注意表名和列名全大写,还有.dbf文件重名问题。

0 0
原创粉丝点击