Oracle 9i 数据库日常管理.docx

上传人:b****7 文档编号:25805333 上传时间:2023-06-15 格式:DOCX 页数:85 大小:471.80KB
下载 相关 举报
Oracle 9i 数据库日常管理.docx_第1页
第1页 / 共85页
Oracle 9i 数据库日常管理.docx_第2页
第2页 / 共85页
Oracle 9i 数据库日常管理.docx_第3页
第3页 / 共85页
Oracle 9i 数据库日常管理.docx_第4页
第4页 / 共85页
Oracle 9i 数据库日常管理.docx_第5页
第5页 / 共85页
点击查看更多>>
下载资源
资源描述

Oracle 9i 数据库日常管理.docx

《Oracle 9i 数据库日常管理.docx》由会员分享,可在线阅读,更多相关《Oracle 9i 数据库日常管理.docx(85页珍藏版)》请在冰豆网上搜索。

Oracle 9i 数据库日常管理.docx

Oracle9i数据库日常管理

ORACLE9iRDBMS

数据库日常管理

 

2007年04月

目录

§1Oracle数据基本结构概念5

§1.1术语5

§1.2ORACLE数据库结构8

§1.2.1ORACLE数据字典8

§1.2.2表空间与数据文件8

§1.3ORACLE实例10

§1.3.1系统全局区(SGA)11

§1.3.2程序全局区(PGA)15

§1.3.3ORACLE后台进程15

§1.4ORACLE各文件17

§1.4.1数据文件17

§1.4.2控制文件18

§1.4.3日志文件18

§1.4.4初始化参数文件18

§1.4.5警告文件19

§1.4.6跟踪文件19

§1.4.7口令文件20

§1.4.8Net有关的文件20

§1.5重做日志和重做日志工作模式20

§1.5.1联机重做日志文件20

§1.5.2归档重做日志文件21

§1.5.3重做日志模式21

§1.5.4重做日志工作模式21

§1.6数据块、区间和段21

§1.6.1数据块(datablock)21

§1.6.2区间(extent)22

§1.6.3段(segment)22

§1.7共享服务器23

§1.8SYS和SYSTEM模式24

§1.9ORACLE系统数据字典24

§2Oracle数据管理25

§2.1Oracle实例的启动25

§2.1.1关于STARTUP命令与参数25

§2.1.2启动ORACLE数据库实例25

§2.1.3启动NetService27

§2.1.4ORACLE数据库实例的它启动方式27

§2.2Oracle实例的关闭28

§2.2.1关闭NetService28

§2.2.2关闭数据库实例29

§2.3异常情况的Oracle实例暂停29

§2.3.1暂停数据库29

§2.3.2等候和恢复数据库33

§2.4主要ORACLE服务器进程34

§3Oracle数据库各文件管理36

§3.1控制文件管理36

§3.1.1创建控制文件36

§3.1.2备份控制文件39

§3.1.3恢复控制文件40

§3.1.4查询控制文件信息41

§3.2日志文件管理41

§3.2.1建立新的日志文件42

§3.2.2删除重做日志文件44

§3.2.3日志文件切换45

§3.3数据文件管理45

§3.3.1数据文件与表空间45

§3.3.2管理SYSTEM表空间47

§3.4监视表空间47

§3.4.1查询数据文件及自由表空间信息48

§3.4.2查询表空间自由、最大及碎片49

§3.4.3合并表空间碎片50

§3.5表空间管理50

§3.5.1创建新的表空间51

§3.5.2在表空间上增加新的数据文件51

§3.5.3调整数据文件大小51

§3.6撤消表空间管理52

§3.6.1创建撤消表空间53

§3.6.2修改撤消表空间54

§3.6.3删除撤消表空间54

§3.6.4切换撤消管理表空间54

§3.6.5为撤消信息设置保留期55

§3.6.6避免ORA-01555错误55

§3.7临时表空间管理56

§3.7.1创建本地管理类临时表空间57

§3.7.2采用多个临时表空间工作57

§3.7.3查询临时表空间和段的信息57

§4Oracle用户权限与安全59

§4.1Oracle用户59

§4.1.1建立数据库验证用户59

§4.1.2修改数据库用户60

§4.1.3从数据库中删除用户61

§4.2Oracle系统权限62

§4.2.1授予系统权限62

§4.2.2收回系统权限63

§4.2.3授予对象权限63

§4.2.4收回对象权限64

§4.2.5用户信息与权限查询64

§5Oracle数据库管理常用脚本66

§5.1Oracle数据库安全问题66

§5.1.1对用户和角色的直接对象授权66

§5.1.2直接将系统权限授予用户和角色66

§5.1.3直接将角色授予用户和角色67

§5.1.4用户授予用户的权限67

§5.2Oracle空间管理68

§5.2.1用户段扩展10次以上69

§5.2.2空间碎片程度69

§5.2.3数据文件已分配与自由空间70

§5.2.4表空间剩余空间警告71

§5.2.5SYSTEM表空间监控72

§1Oracle数据基本结构概念

ORACLE数据库系统是一个复杂的软件系统。

如果不了解其内部的结构原理及关系,就不可能设计和编写出高质量的应用软件系统,也不可能管理好一个复杂的应用系统。

为了给以后章节的打好基础,本章简要给出ORACLE8/ORACLE8i数据库系统结构的描述。

§1.1术语

◆表空间(Tablespace)

表空间是一个逻辑存储空间,一个表空间至少对应一个以上的数据文件(物理文件)。

表空间主要是存放表,所以叫表空间,当然也可存放索引、回滚段等。

◆段(Segment)

在表空间上存储表、索引、回滚段等数据类型,这些对象所占用的空间(实际的空间)就叫段。

◆区域或扩展(EXTENT)

区域是由一定数量的连续数据块组成,是数据库存储空间分配的逻辑单元(具体是STORAGE中的NEXT参数决定)。

当一个区域被填满后,ORACLE就会根据NEXT的参数分配新的区域。

一个段包含了最初的区域和可能再次分配的区域。

◆数据库块(BLOCK)

ORACLE数据库中的最小存储和处理单位,包含块本身的头信息数据或PL/SQL代码。

ORACLE块的大小是可以在安装时选择“自定义安装”来指定,也可以在CREATEDATABASE创建数据库实例时指定。

其最小为2K,最大可达为64K。

◆数据行(ROW)

ORACLE表中的一行数据,一个数据库块可包含一个或多个行。

◆数据库行标识(ROWID)

ORACLE数据库中的使用ROWID来唯一标识表中的一个行,行标识包含有数据文件号、块的编号及行的编号。

◆系统改变号(SCN=SystemChangeNumber)

每个数据库事务执行都被分配了一个唯一的系统更改号(SCN)。

这个不断增加的号在整个数据库用来控制并发和一致性。

可以通过SCN来进行重做(REDO)或恢复(UNDO)处理。

◆更改向量(ChangeVector)

当要对数据库的数据进行改变时,这些改变的前、后数据被记录在一个向量中,通过这些向量记录信息可以使数据库重现。

所以说一个向量就是记录了一个数据块从一个状态到另外一个状态的过程。

◆对象(Objects)

是实现世界实体的软件表示,如表、索引、视图、同义词、过程等。

◆数据文件(Datafile)

ORACLE系统中用于存放系统数据和应用系统数据的文件。

一般称为数据文件或数据库文件。

这些文件是由ORACLE系统的命令创建的,因而只能由ORACLE系统的后台进程才能对它们进行读写。

不能用操作系统命令或高级语言对它们进行读写。

◆控制文件(ControlFile)

ORACLE中存放系统用的一些数据的文件。

如数据文件的路径及文件名,初始化文件路径及文件名等都存放在控制文件中。

◆日志文件(LogsFile)

也叫事务记录文件,该文件记录有事物对数据库进行的一切修改操作或事务。

◆灰数据块(Dirtydatablock)

存放在内存中的原始数据已被修改,而修改后的数据还未写入数据库中。

◆热数据块(Hotdatablock)

存放着那些经常被修改数据叫热数据块。

◆LRU(LeastRecentlyUsed-最近最少用)

ORACLE系统使用的一种算法,对于在内存中但最近又不用的数据块(内存块)叫做LRU,ORACLE会根据那些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。

◆实例(Instance)

是访问ORACLE数据库所需的一部分计算机内存和辅助处理后台进程。

◆共享服务器(SharedServer)

共享服务器(Orcale7、ORACLE8/8i版本叫多线程技术)就是处理内存分配问题。

ORACLE6及以前的版本只能支持独占的方式,而共享服务器就是使用轮换的方式来为每个应用分配SGA区。

在默认下ORACLE8i/9i采用的是专用服务器(DedicatedServer)。

 

§1.2ORACLE数据库结构

ORACLE数据库结构是ORACLE数据库系统的主要部分,它是一些可以看得见的软件,包括:

◆ORACLE数据字典

◆表空间与数据文件

◆ORACLE实例(Instance)

§1.2.1ORACLE数据字典

ORACLE数据库的重要部分是数据字典。

它存放有ORACLE数据库所用的有关信息,对用户来说是一组只读的表。

数据字典内容包括:

◆数据库中所有模式对象的信息,如表、视图、簇、及索引等。

◆分配多少空间,当前使用了多少空间等。

◆列的缺省值。

◆约束信息的完整性。

◆ORACLE用户的名字。

◆用户及角色被授予的权限。

◆用户访问或使用的审计信息。

◆其它产生的数据库信息。

数据库数据字典是一组表和视图结构。

它们存放在SYSTEM表空间中。

数据库数据字典不仅是每个数据库的中心。

而且对每个用户也是非常重要的信息。

用户可以用SQL语句访问数据库数据字典。

 

§1.2.2表空间与数据文件

简单说,表空间就是一个或多个数据文件(物理文件)的集合(逻辑文件)。

一般有下面的表空间:

1)系统表空间(Systemtablespace)

是各种不同版本的ORACLE必备的部分,存放ORACLE系统的一些信息,一般只有一个SYSTEM表空间。

2)临时表空间(Temporarytablespace)

由于ORACLE工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Groupby,Orderby等)等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。

一般安装之后只有一个TEMP临时表空间。

3)工具表空间(Toolstablespace)

用于保存ORACLE数据库工具所需的数据库对象,这些工具表空间存放在工作时所用的专用表。

旧的ORACLE版本无此表空间。

安装之后的工具表空间是Tools。

4)用户表空间(Userstablespace)

用于存放一些实验例子用的空间,当然也可以用于存放应用系统的数据。

旧版本无Users表空间。

现在的用户表空间为USERS。

5)数据及索引表空间

存放数据及索引的表空间,ORACLE7以后都提倡在应用系统中,特别是具有大量数据的系统,建议把数据和索引分开存放在不同的表空间中,以便提高处理速度。

在安装后索引表空间可能是INDX。

数据表空间就是USERS。

6)回滚段表空间(RollbackSegment)

ORACLE数据库系统在运行Insert、Update、Delete时都需要一个磁盘空间来存放恢复信息(UndoInformation),以便在进行恢复时能将原来信息读出来。

安装后的回滚段表空间是RBS表空间。

数据库管理员也可根据应用的需要建立另外的回滚段表空间。

ORACLE以表空间来存储逻辑数据并以物理数据相连。

如图:

表空间图

数据库被分成一个或多个逻辑部件称作表空间。

而表空间又被分成称作段(segment)的逻辑部件。

这些段再细分就叫扩展(extents)。

§1.3ORACLE实例

ORACLE实例(Instance)是由一组后台进程和内存结构组成。

每个运行的数据库系统都与实例有关。

所以,有时称ORACLE实例为数据库操作系统。

详细见§2.3节。

一个ORACLE实例(Instance)是由SGA,后台进程以及数据文件组成,每个数据库有自己的SGA和独立的ORACLE进程集。

如图所示:

ORACLE实例和后台进程(instance图)

 

在分布情况下,为使不同的数据库系统的名字不致混淆,ORACLE使用了一个SID(SystemIdentifer)来标识每个ORACLEServer的名字,在UNIX环境中以变量ORACLE_Sid来区分。

§1.3.1系统全局区(SGA)

ORACLE系统用于存放系统信息的一块存储区域,用户进程和ORACLE后台进程都可以使用SGA。

在SGA中可分成许多不同的部分。

如下图所示:

用户要访问,要通过用户进程来实现,如下图:

下面是SGA区的描述:

§1.3.1.1数据高速缓冲区

在数据高速缓冲区中存放着ORACLE系统最近使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用访问的数据。

如果用户要查的数据不在数据高速缓冲区时,ORACLE自动从磁盘中去读取。

数据高速缓冲区包括三个类型的区:

1)脏的区(DirtyBuffers):

包含有已经改变过并需要写回数据文件的数据块。

2)自由区(FreeBuffers):

没有包含任何数据并可以再写入的区,ORACLE可以从数据文件读数据块该区。

3)保留区(PinnedBuffers):

此区包含有正在处理的或者明确保留用作将来用的区。

ORACLE8i以后将缓冲池分为三个区(使用多个缓冲池特性时):

1)KEEP缓冲池(KEEPbufferpool):

在内存中保留数据块,它们不会被从内存中挤掉;

2)RECYCLE缓冲池从不需要的内存将数据移掉;

3)DEFAULT缓冲池包含有被分配的块。

l重做日志缓冲区(RedoLogBuffer)

任何事务(Transaction)在记录到重做日志(恢复工作需要使用联机重做日志)之前都必须首先放到重做日志缓冲区(RedoLogBuffer)中。

然后由日志写入进程(LGWR)定期将此缓冲区的内容写入重做日志中。

§1.3.1.2共享池(SharedPool)

共享池是SGA保留的区,用于存储如SQL、PL/SQL存储过程及包、数据字典、锁、字符集信息、安全属性等。

共享池包含有:

库高速缓存(LibraryCache)和字典高速缓冲区(DictionaryCache)。

1.库高速缓存(LibraryCache)

库高速缓存区包含有:

1)共享SQL区(SharedPoolArea);

2)私有SQL区(PrivateSQLArea);

3)PL/SQL存储过程及包(PL/SQLProcedureandPackage);

4)控制结构(ControlStructure)。

也就是说该区存放有经过语法分析并且正确的SQL语句,并随时都准备被执行。

2.字典高速缓冲区(DataDictionaryCache)

字典高速缓冲区用于存放ORACLE系统管理自身需要的所有信息,这些信息是登录到ORACLE的用户名,这些用户有那些数据库对象以及这些数据库对象的位置等。

SQL>showsga

TotalSystemGlobalArea135338868bytes

FixedSize453492bytes

VariableSize109051904bytes

DatabaseBuffers25165824bytes

RedoBuffers667648bytes

TotalSystemGlobalArea=FixedSize+VariableSize+DatabaseBuffers+RedoBuffers

FixedSizeORACLE

为一个固定的值(不可修改),不同平台和不同版本下可能有不一样的字节。

FixedSize存储了SGA各部分组件的信息,可以看作引导建立SGA的区域。

VariableSize=sharedpool+javapool+largepool

SQL>showparametersharedpool

NAMETYPEVALUE

--------------------------------------------------------

hi_shared_memory_addressinteger0

max_shared_serversinteger20

shared_memory_addressinteger0

shared_pool_reserved_sizebiginteger2516582

shared_pool_sizebiginteger50331648

shared_server_sessionsinteger165

shared_serversinteger1

SQL>showparameterlargepool

NAMETYPEVALUE

--------------------------------------------------------

large_pool_sizebiginteger8388608

SQL>showparameterjavapool

NAMETYPEVALUE

--------------------------------------------------------

java_max_sessionspace_sizeinteger0

java_pool_sizebiginteger33554432

java_soft_sessionspace_limitinteger0

SQL>

如果你的ORACLE系统版本不是ORACLE8及以后的版本,可以使用下面语句:

select*fromv$SGA;

查询当前实例的SGA信息情况。

§1.3.1.3大的池(LargePool)

在SGA中大池是可选的缓冲区。

它可以根据需要有管理权进行配置。

它可以提供一个大的区以供象数据库的备份与恢复等操作。

§1.3.1.4重做日志缓冲区

是一个小的区,用于存储各会话DML操作所产生的日志数据,Oracle系统在进行恢复和同步时就是参考日志文件所记录的数据进行。

§1.3.2程序全局区(PGA)

程序全局区(PGA=ProgramGlobalArea)是一个包含数据和为服务器进程控制信息(共享服务器方式)的私有区。

服务器进程访问PGA区时是以独占的方式进行;并根据ORACLE代码所起的作用决定可读和只写操作。

例如,运行时的光标区,每次只能执行一个光标。

在PGA内存区的服务器进程执行该光标以建立新的运行区。

程序全局区示意图

 

§1.3.3ORACLE后台进程

一般情况,当数据库启动完成后(Instance启动成功)就至少有六个后台进程在活动,这些进程根据数据库的需要而分工不同。

见下图:

ORACLE的后台进程与各类型文件的关系

 

下面是主要进程的功能描述:

1)数据库写入器(DBWR)

数据库写入器(DatabaseWriter)的任务是将修改后的(在内存)数据块写回数据库文件中。

在某些操作系统中,ORACLE可以有两个BDWR进程。

2)校验点(CKPT)

是一个可选进程。

在系统运行中当出现查找数据请求时,系统从数据库中找出这些数据并存入内存区,这样用户就可以对这些内存区数据进行修改等。

当需要对被修改的数据写回数据文件时就产生重做日志的交替写(Switch),这时就出现校验点。

系统要把内存中灰数据(修改过)块中的信息写回磁盘的数据文件中,此外系统还将重做日志通知控制文件。

DBA可以改变参数文件中CHECKPOINT_PROCESSTRUE来使能(使有效或无效)该进程。

3)日志写入器(LGWR)

用于将SGA区中的日志信息写入日志文件的进程。

一般是用户所作的修改值先记入日志文件。

等到一定时才真正将修改结果写回数据文件。

4)系统监控器(SMON)

系统监控器(Systemmonitor)是在数据库系统启动时执行恢复工作的强制性进程。

比如在并行服务器模式下(两台服务器共用一磁盘组),SMON可以恢复另一台处于失败的数据库。

使系统切换到另一台正常的服务器上。

5)进程监控器(PMON)

进程监控器(ProcessMonitor)用于终止那些失败的用户,释放该用户所占用的资源等。

6)归档器(ARCH)

可选进程,当数据库系统处于归档(ARCHIVELOG)模式时使用。

7)锁(LCKn)

可选进程,当在并行服务器模式可出现多个锁定进程以利于数据库通信。

8)恢复器(RDCO)

分布式数据库(不同地点有不同机器和不同的ORACLE系统)模式下使用的可选进程,用于数据不一致时作的恢复工作。

在RECO解决恢复前,所作的修改数据的标志均标为“可疑”。

9)调度(Dnnn)

可选进程,在多线程下(MTS-8i)或共享服务器(9i)使用,即对每个在用(D000,...,Dnnn)的通信协议至少创建一个调度进程,每个调度进程负责从所联接的用户进程到可用服务器进程的路由请求。

把响应返回给合适的用户进程。

10)快照进程(SNPn)

快照进程处理数据库快照的自动刷新,并通过DBMS_JOB包运行预定的数据库过程.INITsid.ORA参数JOB_QUEUE_PROCESS设置快照进程数,参数JOB_QUEUE_INTERVAL决定快照进程在被唤醒以处理等候的作业或事务之前休眠的秒数。

11)并行查询进程(Pnnn)

可根据数据库的活动并行查询选项的设置,ORACLE服务器起动或停止查询进程.这些进程涉及并行索引的创建,表的创建及查询。

启动的数量与参数PARALLEL_MIN_SERVERS指定的数量相同,不能超出该参数指定的值。

§1.4ORACLE各文件

ORACLE数据库(ORACLEDatabase)是一个复杂的数据库操作系统,由一系列部件组成。

但是ORACLE数据库文件是指:

1)数据文件、2)控制文件、3)日志文件。

§1.4.1数据文件

用于存放所有数据库的数据文件,ORACLE安装过程中自动建立多个必要的数据文件。

这些数据文件用于存放ORACLE系统的基本数据。

在应用系统开发过程中,我们可根据需要另建立一些数据文件。

如果数据文件按它们存放的数据类型来分的话,可以分为:

l用户数据

存放应用系统的数据为用户数据。

l系统数据

管理用户数据和数据库系统本身的数据,如数据字典,用户建立的表的名字,类型等都记录在系统数据中。

§1.4.2控制文件

控制文件是由ORACLE数据库实例在启动时被访问的内部二进制文件,控制文件所存放的路径由参数文件INITsid.ora的control_files=参数来确定。

ORACLE一般有两个或更多的控制文件,每个控制文件记录有相同的信息,在数据库运行中如果某个控制文件出错时,ORACLE会自动使用另外一个控制文

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1