ORACLE数据库学习心得.docx
《ORACLE数据库学习心得.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库学习心得.docx(6页珍藏版)》请在冰豆网上搜索。
ORACLE数据库学习心得
ORACLE数据库结课论文
一个好的程序,必然联系着一个庞大的数据库网路...
今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。
1.ORACLE的特点:
可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。
从大型机到微机上都可运行ORACLE的产品。
可在UNIX、DOS、Windows等操作系统上运行。
可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。
并提供读取其它数据库文件的间接方法。
可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。
2.ORACLE的总体结构
(1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:
ORACLERDBMS的代码文件。
数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。
日志文件须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。
控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。
参数文件含有数据库例程起时所需的配置参数。
(2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。
SGA(SystemGlobalArea)包括数据库缓冲区、日志缓冲区及共享区域。
PGA(ProgramGlobalArea)是每一个Server进程有一个。
一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。
(3)ORACLE的进程结构ORACLE包括三类进程:
①用户进程用来执行用户应用程序的。
②服务进程处理与之相连的一组用户进程的请求。
③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括:
DBWR(DatabaseWriter)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。
LGWR(LogWriter)进程,负责把日志从SGA中的缓冲区中写到日志文件中。
SMON(SystemMoniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。
PMON(ProcessMoniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。
ARCH(ARCHIVER)进程。
每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。
另外还包括分布式DB中事务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。
3.ORACLE的逻辑结构
构成ORACLE的数据库的逻辑结构包括:
(1)表空间
(2)5种类型的段(segment)
①数据段;②索引段;③回滚(rollbock)段;④临时段;⑤自举(bootstrap)段。
段的分配单位叫范围(Extent)
表空间(Tablespace)一个数据库划分成的若干逻辑部分称为表空间。
一个数据库可以有一个或多个表空间,初始的表空间命名为SYSTEM,每一个逻辑表空间对应于一个或多个物理文件。
DBA使用表空间做以下工作:
控制数据库对象,如表、索引和临时段的空间分配。
为数据库用户设置空间配额。
利用个别表空间的在线或离线,控制数据的可用性。
后备或恢复数据。
通过分配空间,以改进性能。
在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立。
在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字和位置。
SYSTEM表空间总是在线的,像其它表空间一样,可以通过增加新的数据库文件来扩大。
一个表空间可包含许多表和索引。
但一个表和索引不能跨越表空间,可跨越组成表空间的文件。
在DB的打开的情况下,DBA利用ALTERTABLESPACE语句,可以实施表空间的在线或离线。
SYSTEM表空间必须在线。
表空间离线有下列原因:
一般为了使部分数据库不能使用,而允许正常存取数据库其余部分。
执行表空间离线备份。
一个离线的表空间,不能被应用用户读或编辑。
可以增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大,或分配空间给某个应用。
使用ALFERTABLESPACEADDFILE语句将另一个数据文件加入到已存在表空间中。
使用CREATETABLESPACE语句可建立一个新的表空间。
段(segment)表空间中的全部数据存储在以段划分的数据库空间中。
一个段是分配给数据库用于数据存储的范围的集合。
数据可以是表、索引或RDBMS所需要的临时数据。
段是表空间的下一个逻辑存储的级别。
一个段不能跨越一个表空间,但可跨越表空间内的文件。
一个数据库最多需要五种段类型:
数据段一个包含一个表(或聚集)的全部数据,一个表(或聚集)总有一个单个数据段。
索引段一个索引段包含对一个表(或聚集)建立的一个索引的全部索引数据。
一个表可以有一个、多个或者没有索引段,取决于它所拥有的索引个数。
一个聚集必须至少有一个索引段,即在聚集码上建立聚集索引。
回滚段每个DB有一个或多个回滚段。
一个回滚段是DB的一部分,它记录在某一情况下被撤消的动作。
回滚段用于事务控制和恢复。
临时段在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间结果,这个区称为临时段。
自举段自举段在SYSTEM表空间中,在数据库建立时建立。
它包括数据字典定义,在数据库打开时装入。
4.用户数据库对象
由用户建立的对象驻留在表空间中,含有真正的数据。
数据库对象有表、视图、聚集、索引、伪列和序号生成器。
(1)聚集(Cluster)聚集是存储数据的一种可选择的方法。
聚集包括存储在一起的一组表,它们共享公共列并经常一起使用。
由于内容相关并且物理地存储在一起,存取时间得到改进,存储空间可以减少。
聚集是一种优化措施。
聚集对性能的改进,依赖于数据的分布和SQL操作的内容。
特别是使用聚集对连接非常有利。
可以明显地提高连接的速度。
建立聚集命令的基本格式:
SQL>CREATECLUSTER〈聚集名〉(列定义[,…]);利用聚集建立表命令基本格式:
SQL>CREATETABLE〈新表名〉(列定义[,…]CLUSTER〈聚集名〉(聚集列);
在聚集码上必须建立一个聚集索引,对于每一数据块上每个聚集码值有一索引项。
这个索引必须在DML语句对聚集表操作前建立。
建立索引的语句是:
CREATEINDEX索引名ONCLUSTER聚集名;
(2)序号生成器序号(SEQUENCE)生成器为表中的单列或多列生成顺序号。
利用序号可自动地生成唯一主码。
使用SQL语句定义序号,给出一些信息(如序号名、是升序或降序、每个序号间的间隔和其它信息)。
所有序号存储在数据字典表中。
所有序号定义存储在数据字典的SEQUENCE表中。
用户可以通过字典视图USER-SE-QUENCES、ALL-SEQUENCES和DBA-SEQUENCES查询和存取。
建立序号生成器的语句是:
CREATESEQUENCE序号生成器名其它选项。
一旦序号生成器S被定义。
可用S.Currval来引用S序号生成器的当前值。
用S.nextval产生下一个新的序号并加以引用。
(3)伪列伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或修改。
5.数据字典
数据字典ORACLERDBMS最重要的部分之一。
数据字典含有一组系统定义的表,只能读,是关于数据库的引用指南。
它可提供以下信息:
ORACLE用户的用户名;
每个用户被授予的权限和角色;实体的名字和定义;完整性约束
为数据库实体分配的空间;通用的数据库结构;审计信息;
触发子程序等的存储。
数据字典是以表和视图构成的,像其它数据库数据一样,可用SQL语言查询数据字典。
数据字典在DB建立时建立。
每当DB进入操作,数据字典就由ORACLERDBMS负责修改。
数据库建立时有两个默认DBA用户:
SYS、SYSTEM。
SYS持有基本表中的数据。
数据字典包含一组基表和相关的视图,可分为以下几类:
类描述
DBA-×××只有DBA可存取的视图,给出数据库中定义的任何实体的信息
USER-×××对任何用户可用的视图,给出他们自己的实体的信息
ALL-×××对任何用户可用的视图,给出用户可存取的所有实体的信息
其中×××代表表名或视图名
下面列出的是一些常用的表或视图的名称。
(1)DTAB描述了组或数据字典的所有表。
(2)TAB用户建的所有基本表、视图和同义词。
(3)COL用户创建基本表的所有列的信息。
(4)SYNONYMS用户可存取的同义名词、专用名和公用名。
(5)CATALOG用户可存取的表、视图、同义词、序列。
(6)CONSTRAINTS用户可存取的约束。
(7)INDEXES用户可存取的表和聚集的序列。
(8)OBJECTS用户可存取的对象。
(9)TABLES用户可存取的表。
(10)USERS查看当前全部用户。
(11)VIEWS查看用户可存取的视图。
(12)SYSTABAUTH用户对数据对象的使用权限。
可以用SQL>SELECT*FROM〈字典表名或视图名〉WHERE〈条件〉来读取有关信息。
可以用SQL>DESCRIBE〈表名〉来查看表的结构定义。
但是数据库字典的结构不可改。
用DESCRIBE命令还可以查看视图及过程的定义。
6.ORACLE的SQL、PL/SQL与SQL*PLUS
作为ORACLE数据库核心的SQL语言是ANSI和ISO的标准SQL的扩充。
用来存储、检索和维护数据库中的信息,并控制对数据库的存取事务。
由于RDBMS执行SQL语句时,是一次只执行一条语句,它是非过程化的。
这就使得单条的SQL语句使用方便,功能强大。
用户只需说明操作目的,不必关心具体操作的实现方法。
但在实际数据库应用开发中,往往要依据前一步对数据库操作的结果或上一个事务提交的情况来确定下一步的操作。
故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能。
PL/SQL可支持变量和常量的使用。
例如在SELECT查询语句的where子句中可以使用变量来书写条件表达式。
SQL*PLUS是ORACLE用来存储、查询、操纵、控制和报告数据库中信息的一个交互式工具。
它是一种集编辑、调试、运行于一体的开发环境。
在SQL*PLUS的这种运行环境下,既可以使用SQL命令、PL/SQL语句、及SQL*PLUS自己提供的命令,又可以运行由上述三类命令(或语句)编辑而成的命令文件。
SQL*PLUS提供的附加命令主要用来编辑、运行上述三类命令及命令文件和对查询结果进行格式化输出等功能。
7.数据库系统的管理
ORACLE作为一个大型的数据系统,通常包含很多用户的数据。
在应用开发过程中,有许许多多的各类人员进行开发和应用。
所以必须要求有人对数据库系统进行临时管理,并进行数据的备份等工作。
这种人被称为数据库管理员(DataBaseAdministrator)。
他们必须理解数据库系统管理,清楚数据库包含的数据内容、运行状况等。
一般说来,DBA不是指具体的人,而是指对数据库可以行使DBA特权的用户。
DBA具有如下责任:
(1)ORACLE服务器和客户工作站软件的安装和升级;
(2)创建基本的数据库存储结构(表空间);
(3)创建基本的数据库客体(表、视图、索引);
(4)修改数据库结构;
(5)给用户授权,维