Oracle数据库基础知识Word文件下载.docx
《Oracle数据库基础知识Word文件下载.docx》由会员分享,可在线阅读,更多相关《Oracle数据库基础知识Word文件下载.docx(76页珍藏版)》请在冰豆网上搜索。
2.4.1SQL32
2.4.2PL/SQL33
2.4.3数据库管理工具36
2.5ORACLE用户及权限管理36
2.5.1ORACLE的用户管理37
2.5.2ORACLE的权限管理38
2.6ORACLE数据库的备份与恢复39
2.6.1Export转入程序40
2.6.2Import转入程序42
2.6.3增量卸出/装入44
第3章ORACLE数据库的网络应用46
3.1SQL*Net产品介绍46
3.2配置客户机/服务器结构47
3.2.1配置listener.ora47
3.2.2配置tnsnames.ora文件48
第4章常用任务示例51
4.1如何恢复被误删的数据文件51
4.2如何杀掉吊死session51
4.3如何修改字符集51
4.4如何追加表空间51
4.5如何加大表的maxextents值52
4.6如何查询无效对象52
4.7怎样分析SQL语句是否用到索引52
4.8怎样判断是否存在回滚段竞争53
4.9怎样手工跟踪函数/存储过程执行情况54
4.10多种业务使用同一数据库如何分配回滚段54
4.11怎样倒出、倒入文本数据54
4.11.1倒出54
4.11.2倒入55
4.12如何更新当前数据库日志备份方式为archive56
4.13Unix环境下如何实现自动备份56
4.13.1设置运行环境56
4.13.2倒出数据56
4.13.3异地备份57
4.13.4启动备份进程58
4.14怎样分析ORACLE故障59
小结61
附录AORACLE数据字典与视图62
附录B动态性能表68
附录CSQL语言运算符与函数70
课程说明
课程介绍
本课程对应的产品版本为:
TELLINU-NICAV100R001。
本课程为华为公司TELLINU-NICA产品采用的数据库ORACLE8.1.7基础知识。
介绍ORACLE数据库基本概念,给出了ORACLE的管理指导。
“关系型数据库课程”及“SQL语句操作课程”的教材为《IK001001数据库基本原理ISSUE2.0》和《IK001201SQL操作ISSUE2.0》。
课程目标
完成本课程的学习后,您应该能够:
●掌握ORACLE数据库系统结构中物理结构、系统全局区和进程的概念
●掌握ORACLE数据库的存储管理知识
●掌握管理ORACLE数据库的方法
●了解ORACLE数据库的网络应用
相关资料
ORACLE公司发布的相关资料。
第1章ORACLE数据库概述
1.1产品概述
1.1.1产品简介
数据库技术产生于60年代末70年代初,到现在比较知名的大型数据库系统有ORACLE、Sybase、Informix、DB2(IBM公司的)、Ingress、RDB、SQLServer等。
ORACLE公司于1979年,首先推出基于SQL标准的关系数据库产品,可以在100多种硬件平台上运行(包括微机、工作站、小型机、中型机和大型机),支持多种操作系统。
1986年,ORACLE推出具有分布式结构的版本5,可将数据和应用驻留在多台计算机上,而相互间的通信是透明的。
1988年,推出版本6(V6.0)可带事务处理选项,提高了事务处理的速度。
1992年推出了版本7,可带过程数据库选项、分布式数据库选项和并行服务器选项,称为ORACLE7数据库管理系统,它释放出了开放的关系型系统的真正潜力。
目前,新版本为ORACLE9i,通用版本为ORACLE8i。
版本Oracle8i是在企业内和因特网上开发、布署和管理应用高移动性和可伸缩性的数据库。
Oracle8i最主要的新特性是在数据库中包括Java和因特网能力。
Oracle8i还包括能够管理和访问多媒体(视频、音频、图像、文本、空间)的OracleinterMedia。
Oracle8i还包括OracleWebDB,这个Web开发环境使开发者能建立使用标准的Web浏览器和Oracle8i数据库的动态的、数据驱动的Web网站。
ORACLE8i是一种通用叫法,它包括许多更细版本,如ORACLE8.1.5、ORACLE8.1.6、ORACLE8.1.7,华为公司TELLINU-NICA产品使用版本ORACLE8.1.7序列。
说明:
“i”表示ORACLE数据库与internet的结合。
ORACLE用多达5个号码来完全识别一个版本,如“8.1.7.2.3”,命名方法如下:
序号
值
含义
第一位
8
版本号(Version),是主要的标识符,表示软件的主要版本,包含显著的新功能,例如:
版本8(也标识为版本8.0)。
第二位
1
新特征版本号(NewFeaturesReleaseNumber),该位表示新特征版本级,例如:
版本8.1。
第三位
7
维护版本号(MaintenanceReleaseNumber),该位表示一个维护版本级。
也可能包含一些新特征,例如:
版本8.0.4、8.1.7。
第四位
2
通用补丁级号(GenericPatchSetNumber),该位表示一个通用补丁级。
补丁级可以跨越所有操作系统和硬件平台使用,例如:
补丁级版本8.1.7.2
第五位
3
专用平台补丁级(PlatformSpecificPatchSetNumber),该位表示一个只能应用到特定的操作系统和硬件平台的补丁级,例如:
补丁级8.1.7.2.3。
可以用如下的SQL语句得到ORACLE版本信息:
SQL>
select*fromproduct_component_version;
1.1.2基本概念
要了解ORACLE数据库,需要先了解以下基本概念:
●数据库:
是一个数据集合,我们大多数情况下讲的数据库概念不仅是指物理数据,还指内存、进程对象的组合。
ORACLE数据库都将数据存储在文件中,在其内部,数据库结构提供了数据对文件的逻辑映射,允许不同类型的数据分开存放。
这些逻辑划分称为表空间。
关于表空间的概念将在下文中介绍。
●表空间(Tablespace):
是数据库的逻辑划分,每个数据库至少有一个表空间(system表空间)。
●数据文件(DataFile):
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件。
建立新表空间需要建立新的数据文件。
●实例(Instance):
也称为服务器(server),是存取和控制数据库的软件机制,它由系统全局区SGA和后台进程组成。
ORACLE数据库启动时,实际是启动ORACLE实例,(安装并打开数据库)。
一个数据库可以被多个实例访问(这是ORACLE的并行服务器选项)。
决定实例的大小及组成的参数存储在init.ora文件中,实例启动时需要读这个文件,并且在运行时可以由数据库管理员修改,但要在下次启动实例时才会起作用。
实例名字可以由环境变量ORACLE_SID来定义。
实例的init.ora文件名通常包含该实例的名字,格式为initSID.ora:
如一个实例的名字(SID)为ora817,则init.ora文件名通常为initora817.ora。
1.2ORACLE系统结构
任何硬件平台或操作系统下的ORACLE体系结构是相同的,包括如下三个方面:
(1)物理结构:
数据文件,日志文件,控制文件,参数文件。
(2)系统全局区(SGA):
共享池,数据缓冲区,日志缓冲区,字典缓冲区。
(3)进程:
用户进程,服务器进程,后台进程。
具体结构如图1-1所示。
图1-1ORACLE数据库体系结构
1.2.2ORACLE物理结构
一个ORACLE数据库是数据的集合,被处理成一个单位。
一个ORACLE数据库有一个物理结构和一个逻辑结构。
数据库物理结构是由构成数据库的操作系统文件所决定。
每一个ORACLE数据库是由四种类型的文件组成:
数据文件、日志文件、控制文件和参数文件。
数据库的文件为数据库信息提供真正的物理存储。
ORACLE数据库的物理结构由四类文件组成
1.数据文件
数据文件是物理存储ORACLE数据库数据的文件,每一个ORACLE数据库有一个或多个物理的数据文件(datafile)。
一个数据库的所有数据文件包含了全部数据库数据。
逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。
数据文件有下列特征:
●每一个数据文件只与一个数据库联系
●一个表空间可包含一个或多个数据文件
图1-2给出数据库、表空间及数据文件之间关系。
图1-1数据库、表空间及数据文件之间关系
2.日志文件
每一个数据库有两个或多个日志文件(redologfile)的组,每一个日志文件组用于收集数据库日志。
日志的主要功能是记录对数据所做的修改,所以对数据库做的全部修改是记录在日志中。
日志文件的主要作用是保护数据库以防止故障。
为了防止日志文件本身的故障,ORACLE允许镜象日志(mirroredredolog),可以在不同磁盘上维护两个或多个日志副本。
日志文件中的信息仅在系统故障或介质故障时用来恢复数据库。
3.控制文件
每一个ORACLE数据库有一个控制文件(controlfile),它记录数据库的物理结构,包含下列信息类型:
●数据库名。
●数据库数据文件和日志文件的名字和位置。
●数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一个ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们被打开。
当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。
数据恢复时,也要使用控制文件。
4.参数文件
是一个文本文件,可直接使用文本编辑器对其内容进行修改,该文件只在建立数据库和启动实例时被访问,修改该文件后必须重启实例才生效。
系统初始参数文件:
init.ora
生成的参数文件为:
initSID.ora
参数文件作用如下:
●设置SGA的大小。
●设置数据库的全部缺省值。
●设置数据库的范围。
●在数据库建立时定义数据库的物理属性。
●指定控制文件名和路径。
●通过调整内存结构,优化数据库性能。
ORACLE8.1.7版本数据库实例参数文件“initSID.ora”是在安装ORACLE数据库过程中产生的,一般情况下不需要手工修改。
1.2.3系统全局区
SGA(SystemGlobalArea)是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作,图2-3给出实例与SGA及数据库关系。
图1-1实例与SGA及数据库关系
SGA分为以下几个部分:
(4)共享池。
(5)数据块缓冲区。
(6)日志缓冲区。
(7)字典缓冲区。
下面分别介绍:
SGA的尺寸应小于物理内存的一半。
在ORACLE系统中,所有用户与ORACLE数据库系统的数据交换都要经过SGA区。
1.共享池(SharedPool)
由共享SQL区和数据字典区组成,参数shared_pool_size确定共享池大小,共享SQL区包括:
(8)SQL或PL/SQL语句的文本。
(9)SQL或PL/SQL语句的语法分析形式。
(10)SQL或PL/SQL语句的执行方案。
shared_pool_size=物理内存×
(15~20)%
对于OPS取下限。
2.数据块缓冲区
用于存储从数据文件中读出的数据,其大小由以下两个参数决定:
●DB_BLOCK_SIZE确定数据块的大小,一般为2K或4K。
●DB_BLOCK_BUFFERS确定数据块的数目。
DB_BUFFERS=DB_BLOCK_BUFFERS×
DB_BLOCK_SIZE=物理内存×
(15~25)%,对于OPS取上限。
该值应尽量大。
3.日志缓冲区
以记录项的形式备份数据库缓冲区中被修改的缓冲块,这些记录项将被写到日志文件中。
日志缓冲区大小由参数LOG_BUFFER确定
4.字典缓冲区
用于存放数据字典信息行。
5.SGA设置大小总原则
在设置各参数调整SGA大小时,应保证其小于物理内存的一半。
SGA的计算方法如下:
SGA=DB_BLOCK_BUFFERS×
DB_BLOCK_SIZE+SHARE_POOL_SIZE+SORT_AREA_SIZE+1M+3×
DB_BLOCK_SIZE×
(CPUs+2)×
PARALELL_MAX_SREVERS
OPS才有最后一项。
SORT_AREA_SIZE:
排序区,并发用户数较多,需要排序时该值宜大。
PARALELL_MAX_SREVERS:
2×
CPU个数×
4×
并发用户数。
对单CPU不能修改此值。
1.2.4进程
进程是操作系统中的一种机制,它可执行一系列的操作步骤(在有些操作系统中使用作业(JOB)或任务(TASK)的术语来表示进程)。
一个进程通常有它自己的专用存储区。
ORACLE实例有两种类型:
单进程实例和多进程实例。
通常用的是多进程实例。
单进程ORACLE(又称单用户ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。
由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行。
在单进程环境下的ORACLE实例,仅允许一个用户可存取。
例如在MS-DOS上运行ORACLE。
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:
用户进程和ORACLE进程。
当一用户运行一应用程序,如PRO*C程序(Pro*C是一种开发工具,它把过程化语言C和非过程化语言SQL最完善地结合起来,具有完备的过程处理能力,又能完成任何数据库的处理品任务,使用户可以通过编程完成各种类型的报表。
)或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一个用户进程。
ORACLE系统进程又分为服务器进程和后台进程。
1.服务器进程
用于处理用户请求的进程。
处理过程如下:
(11)分析SQL命令并生成执行方案。
(12)从数据缓冲区或磁盘中读取数据。
(13)将执行结果返回给用户。
2.后台进程
为所有数据库用户异步完成各种任务,主要包括如下进程(ora817表示实例名):
ora_reco_ora817
恢复进程:
该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。
一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。
任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。
当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。
RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED–TRANSACTIONS参数是大于0。
ora_dbw0_ora817
数据库写进程:
该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。
当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,此进程的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。
ora_pmon_ora817
进程监控进程:
该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。
例:
它要重置活动事务表的状态,释放封锁,将该故障的进程的ID从活动进程表中移去。
PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
ora_lgwr_ora817
日志写进程:
该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。
ora_ckpt_ora817
检查点写进程:
该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。
ora_smon_ora817
系统监控进程:
该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。
在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。
SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
1.3存储管理
前面已经提到过,ORACLE数据库都将数据存储在数据文件中,在其内部,数据库结构提供了数据对数据文件的逻辑映射,允许不同类型的数据分开存放。
这些逻辑划分称为表空间,图1-4给出了详细的ORACLE数据库存储结构图。
图1-1ORACLE存储结构图
对于用户,通常关心的是ORACLE的逻辑结构,是在逻辑上是如何组成的,是如何存储数据的,下面详细介绍。
1.3.2逻辑结构
ORACLE的逻辑结构是由一个或多个表空间组成,一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(tablespace)。
一个表空间可将相关的逻辑结构组合在一起。
●一个表空间由一组分类段组成。
●一个段由一组范围组成。
●一个范围由一批数据库块组成。
●一个数据库块对应一个或多个物理块。
每一个ORACLE数据库包含有一个名为SYSTEM的表空间,在数据库建立时自动建立。
在该表空间中包含有整个数据库的系统信息数据,最小的数据库可只需要SYSTEM表空间。
表空间利用增加数据文件可扩大表空间,表空间的大小为组成该表空间的数据文件的大小的和。
ORACLE数据库中一表空间是由一个或多个物理数据文件组成,一个数据文件只可与一个表空间相联系。
当为一表空间建立一数据文件时,ORACLE建立该文件,分配指定的磁盘空间容量。
在数据文件初始建立后,所分配的磁盘不包含有任何数据。
一个模式(schema)为模式对象(schemaobject)的一个集合,每一个数据库用户对应一个模式。
模式对象为直接引用数据库数据的逻辑结构,模式对象包含如表、视图、索引、同义词等结构。
模式对象是逻辑数据存储结构,每一种模式对象在磁盘上没有一个相应文件存储其信息。
一个模式对象逻辑地存储在数据库的一个表空间中,每一个对象的数据物理地包含在表空间的一个或多个数据文件中。
例如:
表、索引等模式对象,在指定表空间的数据文件上为该对象分配多少空间。
图1-5说明模式对象、表空间和数据文件之间的关系。
图1-1模式对象、表空间和数据文件之间的关系
模式与表空间之间的关系为:
一个表空间可包含不同模式的对象,而一个模式中的对象可包含在不同的表空间中。
2.数据库块
数据库块(databaseblock)是ORACLE逻辑分配空间的最底层,又称逻辑块、页或ORACLE块。
数据库块是数据库使用和分配空间的最小单元,也可以说是使用的最小I/O单元,一个数据块与磁盘上指定的物理空间大小相一致,一个数据库块对应一个或多个物理块,块的大小由参数db_block_size确定。
PCTFREE和PCTUSED是开发人员用来控制数据块中可用插入和更新数据的空闲空间大小的参数。
●PCTFREE:
设置数据块中保持空闲的百分比。
●PCTUSED:
当数据块空闲空间达到PCTFREE时,此块不允许插入数据,只能修改或删除块中的行,更新时可能使数据块空闲空间变大,已用数据空间变小,当已用空间低于PCTUSED时,则可以重新插入数据。
PCTFREE及PCTUSED的选择:
●经常做查询(select)的表,应使PCTFREE小些,尽量减少存储空间浪费。
●经常做插入(insert)的表,应使PCTUSED大一些。
●经常做更新(update)的表,应使PCTFREE大一些,给更新留出更大的空间,减少行移动。
这两个参数只能在创建、修改表和聚簇(数据段)时指定。
另外,在创建、修改索引(索引段)时只能指定PCTFREE参数。
经常做插入的表设置举例:
createtableCOMMINFOR
(SERIALNUMBERVARCHAR2(20)notnull,
ENTERHISTIMEDATEnotnull,
ACCEPTBEGINTIMEDATEnull,
ACCEPTDURATIONNUMBER(10)null,
ACCEPTERNOVARCHAR2(4)null,
CALLINGPHONENOVARCHAR2(20)null,
ACCEPTIDNUMBER(10)null,
OPERATIONTYPEVARCHAR2(10)null,
APPELLANTNAMEVARCHAR2(16)null,
CONTACTIDNUMBER(10)null,
)
pctfree10
pctused90
initrans2
maxtrans255
TABLESPACESERVICE_RPT_DAT;
经常做查询的表设置举例:
createtableAUTH
(
AUTHIDNUMBER(10)notnull,
DESCRIPTIONVARCHAR2(50)null
constraintPK_AUTHprimarykey(AUTHID)
pctused40
3.范围(Extent)
数据库存储空间分配的逻辑单位,一个范围由一组数据块组成,范围是由段分配的,分配的第一个范围称初始范围,以后分配的范围称增量范围。
Extent是段