OracleDBAOracleocpcoursecontent•系统安装、结构及维护•备份和恢复•网络管理•性能调优ArchitectureandAdministrationOracle结构和维护:1.Oracle特点、结构2.创建数据库3.Oracle数据库的访问4.ManaginganOracleInstance5.MaintainingtheControlFile6.MaintainingRedoLogFiles7.ManagingTablespacesandDataFiles8.ManagingRollbackSegments9.ManagingUsers,privileges,roles概述ORACLE具有甲骨文之意,是全世界第二大软件公司。数据库、电子商务套件、ERP、财务产品、开发工具培训认证。Oracle服务(server)是一个关系数据库(relationaldatabase)管理系统,提供开放、全面、完整的信息管理。特点高性能、伸缩性安全性:角色、权限、用户并发控制:表锁定、行锁定海量数据:表空间、空间数据构件TB级数据完整性:日志、回滚段分布式数据库:数据库连接Oracle概述、特点发展和构成发展史6.0性能不如sybase7.0分区技术支持分段的大型数据库8.0面向对象8.1.6面向internet支持java、webserver、jdeveloper9iportal手机上网oracle体系结构Oracle体系结构决定了数据库如何使用内存、硬盘、cpu和网络一个Oracleserver包括一个Oracle实例(instance)和几个Oracle数据库文件(databasefile).实例数据库文件Oracleinstance实例=内存分配+一组后台进程如果把Oracle比作一部汽车,instance相当于汽车的发动机一样,启动oracle前提应先启动instance..内存被分配,进程被启动SGAbackgroundprocessOracle体系结构中各种名称数据库名,用于标示一个数据库,用db_name表示。数据库实例名,是用于和操作系统进行联系的标识,数据库启动时将自动分配SGA,并启动Oracle的多个后台进程(BackgroundProcesses)。内存区域和后台进程合称为实例。一般情况下,数据库与实例是一一对应的关系,即有一个数据库就有一个实例。但在Oracle的并行服务器结构中,数据库与实例是一对多的关系,这种配置方式中,同一时间用户只与一个实例相连,当一个实例出现故障,其它实例将自动服务。Instance_name是oracle参数,而oracle_sid是操作系统环境变量,Instance_name与oracle_sid必须一样。数据库域名domain、全局数据库名globalname、数据库服务名servicename、网络服务名networknameOracle文件一个Oracle数据库是一个数据单位的集合。主要目的是为了储存和读取信息。Oracle数据库可以分为逻辑(logical)结构和物理(physical)结构。物理结构指数据库中的操作系统文件的集合,包含以下三种文件:•数据文件(datafile)包含数据库中实际数据。数据包含在用户定义的表中,而且数据文件还包含数据词典(datadictionary)、数据修改以前的映象(before-imagesofmodifiedData)、索引(indexes)和其他类型的结构(othertypesofstructures)。一个数据库中至少包含一个数据文件。数据文件的特性有:–一个数据文件只能被一个数据库使用。–当数据库空间不足时,数据文件具有自动扩展的特性。–一个或者多个数据文件构成数据库的逻辑存储单元叫做表空间(tablespace).•重作日志(Redologs)包含对数据库的修改记录,可以在数据失败后恢复。一个数据需要至少两个重作日志文件。•控制文件(Controlfiles)包含维护和检验数据库一致性的信息。例如:控制文件用来检验数据文件和重作日志文件。一个数据库需要至少一个控制文件。其它文件•其他文件–参数文件用来定义Oracle实例的特性。例如:包含SGA内存的大小。–口令验证文件用来验证启动和关闭Oracle实例的用户。–归档重做日志文件是重做日志的备份用以恢复数据。Oracle数据库逻辑与物理结构DatabaseArchitecture数据库结构(DatabaseArchitecture)Oracle数据库结构包括物理(physical)和逻辑(logical)结构•物理(physical)结构包括控制文件(controlfiles),在线重作日志(onlineredologfiles),和数据文件(datafiles).•逻辑logical结构包括表空间(tablespaces),段(segments),区间(extents),和数据块(datablocks).Oracleserver可以有条理的通过表空间以及段、扩展、数据块控制磁盘空间表空间(Tablespaces)Oracledatabase的数据存储在表空间中。–AnOracledatabasecanbelogicallygroupedintosmallerlogicalareasofspaceknownastablespaces.–一个tablespace只能同时属于一个database。–每个tablespace包含一个或多个操作系统文件-数据文件(datafiles).–一个tablespace可能包含一个或多个segments.–Tablespaces可以在数据库运行时使其在线。–除了SYSTEMtablespace或有活动回滚段的tablespace,tablespaces可以被离线(offline)。–Tablespaces可以在读/写之间切换。DatabaseArchitecture(Continued)数据文件DataFilesOracle数据库tablespace包含的一个或多个文件叫做数据文件(datafiles)。这些物理结构在oracle服务运行时与操作系统相配合。•一个数据文件只能属于一个tablespace。•Oracle服务为表空间创建一个数据文件,分配指定的磁盘空间再加上额外的一小部分开销。•数据库管理员在数据文件创建后可以改变它的大小或者设置为根据需要自动增长。段SegmentsSegment指在tablespace中为特定逻辑存储结构分配的空间。例如,为表分配的所有存储空间就是就是一个segment。•一个tablespace可能包含一个或多个Segment.•segment不能跨越tablespace;但是,一个segment可以跨越多个属于同一Tablespace的datafiles。•每个segment有一个或多个extent组成。区间Extents通过extent来给segment分配空间。•一个或多个extents组成一个segment.–当一个segment创建时,至少包含一个extent。–当segment增长时,extents被加到segment中。–DBA可以手工为segment增加extents。•一个extent由一系列连续的Oracleblocks组成。•一个extent不能跨越datafile,但必须存在同一datafile中。TheRelationshipsAmongSegments,Extents,andDataBlocksDataBlocksOracleserver管理datafiles存储空间的单位叫做Oracleblocksordatablocks.•Oracle数据库最小的存储数据单位为datablocks.•Oracledatablocks是Oracleserver存储、读、写的最小的存储单位。•一个datablock对应一个或多个分配给datafile的操作系统块。•在Oracle数据库创建时,初始参数文件的DB_BLOCK_SIZE确定Oracle数据库Datablock的大小。•Datablock的大小应该为操作系统块的整数倍,以减少I/O量。•Datablock的最大尺寸依赖于操作系统。OracleInstance-SGAOracleinstance包含SGA内存结构和管理数据库的一些后台进程。Instance被看成使用各个操作系统的特定方法instance只能同时打开和使用一个database。SystemGlobalAreaSGA是存储数据库进程共享的数据库信息的内存区域。它包含OracleServer数据和控制信息。分配在OracleServer驻留的计算机虚拟内存中。SGA包含如下内存结构:•共享池(sharedpool)用来存储最近执行的SQL语句和最近使用的数据字典(datadictionary)的数据。这些SQL语句可能是被用户递交的也可能是存储过程调用的。•数据缓冲区(databasebuffercache)用来存储最近从数据文件中读写过的数据。•重作日志缓冲区(redologbuffer)用来记录服务或后台进程对数据库的操作。另外在SGA中还有两个可选的内存结构:•Javapool:用来存储Java代码。•Largepool:用来存储不与SQL直接相关的大型内存结构。例如:在备份和恢复时的数据拷贝。BackgroundProcesses–•DatabaseWriter(DBW0)负责将数据的更改由databasebuffercache写到datafiles。–•LogWriter(LGWR)负责将数据更改记录由redologbuffer写到redologfiles.–•SystemMonitor(SMON)检查数据库的一致性,必要的情况下,在数据库打开时执行恢复。–•ProcessMonitor(PMON)用户进程失败时,进程监控程序实现进程恢复。–•TheCheckpointProcess(CKPT)负责更新数据库的控制文件(controlfiles)中的状态信息。在数据缓存永久写入数据库时。•PGA(程序全局区)–是内存中的区域,包含单个进程的数据和控制信息。每个服务器进程分配一个PGA,PGA由每个服务器进程独占。当用户连接入Oracle数据库并建立会话时,Oracle分配PGA。与SGA不同,PGA仅被一个进程使用。COMMITs步骤当COMMIT执行时:1server在redologBuffer中放置一个SCN作为commit记号。2LGWR执行一个不间断的写操作包括所有的redologbuffer写到redologfiles及commit记号。在这一点,Oracleserver可以保证即使在实例失败时数据也不会丢失。3用户被通知COMMIT完成。.4server记录信息显示事务已经完成,锁可以被释放。数据缓冲信息独立的由DBW0执行,可能在commit前也可能在Commit后。SystemChangeNumber无论事务在何时提交,Oracleserver总是分配一个SystemChangeNumber(SCN)给这个事务。SCN自动增加,在数据库是唯一的。它被OracleServer用来作为内部的时间戳,来同步数据及保证数据读一致性。使用SCN可以不依靠操作系统时间来检验一致性。SQL语句的执行过程•A、用户发出SQL请求,打开游标;•B、把SQL语句语法分析,执行计划,数据字典等信息存入内存中共享池内;•C、从数据文件中把相关数据块读入数据缓冲区;•D、做相应操作,若做修改,先加上行级锁,经确认后,把改过前后记录内容存入重做日志缓冲区内;•E、返回结果给用户,关闭游标。备注:SQL语句大小写敏感的,同样的一个语句,若大小写不同,oracle需分析执行两次,每句后必以“;”结束。summaryInthislesson,youshouldhavelearnedhowto:•Explaindatabasefiles:data