Oracle数据库用友软件股份有限公司GBU技术支持部课程编号:•Oracle体系结构•Oracle内部结构•Oracle存储结构•Oracle备份•处理查询、DML、COMMIT•Oracle配置•Oracle用户管理•Oracle权限•Oracle参数配置•Oracle工具介绍•Toad•Plsqloracle内部结构Oracle实例可以通过其访问数据库可以打开一个或多个数据库内存结构和后台进程组成后台进程内存结构SGARedologbuffercacheDatabasebuffercacheSharedpoolDBWRSMONPMONCKPTLGWROthersDataDictionarycacheLibrarycacheInstance连接到OracleServerORA-01034:ORACLEnotavailableConnectionestablishedSessioncreatedDatabaseuserUserprocessOracleserverServerprocessOracleDatabase一个oracle数据库:三种文件类型ControlfilesDatafilesArchivedlogfilesParameterfilePasswordfileRedologfilesOracleDatabase物理结构Oracle数据库的物理结构:控制文件数据文件联机日志文件ControlfilesDatafiles(includesdatadictionary)HeaderOnlineredologfiles)内存结构Oracle的内存结构分为两部分:SystemGlobalArea(SGA):数据库实例启动时分配的内存空间。ProgramGlobalArea(PGA):数据库启动后分配的内存空间。SystemGlobalArea(SGA)SGA是存储数据库进程共享的数据库信息的内存区域。它包含OracleServer数据和控制信息。分配在OracleServer驻留的计算机虚拟内存中。SGA包含如下内存结构:•共享池(sharedpool)用来存储最近执行的SQL语句和最近使用的数据字典(datadictionary)的数据。这些SQL语句可能是被用户递交的也可能是存储过程调用的。•数据缓冲区(databasebuffercache)用来存储最近从数据文件中读写过的数据。•重作日志缓冲区(redologbuffer)用来记录服务或后台进程对数据库的操作。另外在SGA中还有两个可选的内存结构:•Javapool:用来存储Java代码。•Largepool:用来存储不与SQL直接相关的大型内存结构。例如:在备份和恢复时的数据拷贝。SystemGlobalArea(SGA)SGAisdynamicandsizedusingSGA_MAX_SIZE.SGAmemoryallocatedandtrackedingranulesbySGAcomponentsContiguousvirtualmemoryallocationSizebasedonSGA_MAX_SIZESharedPoolThesharedpoolisusedtostorethemostrecentlyexecutedSQLstatementsandthemostrecentlyuseddatadefinitions.Itconsistsoftwokeyperformance-relatedmemorystructures:LibrarycacheDatadictionarycacheSizedbytheparameterSHARED_POOL_SIZE.SharedpoolDatadictionarycacheLibrarycacheALTERSYSTEMSETSHARED_POOL_SIZE=64M;DatabaseBufferCacheThedatabasebuffercachestorescopiesofdatablocksthathavebeenretrievedfromthedatafiles.Itenablesgreatperformancegainswhenyouobtainandupdatedata.Itismanagedthroughaleastrecentlyused(LRU)algorithm.DB_BLOCK_SIZEdeterminestheprimaryblocksize.DatabasebuffercacheDatabaseBufferCacheConsistsofindependentsub-caches:DB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_CACHE_SIZEDatabasebuffercachecanbedynamicallyresizedtogroworshrinkusingALTERSYSTEM.DB_CACHE_ADVICEcanbesettogatherstatisticsforpredictingdifferentcachesizebehavior.ALTERSYSTEMSETDB_CACHE_SIZE=96M;RedoLogBufferCacheTheredologbuffercacherecordsallchangesmadetothedatabasedatablocks.Itsprimarypurposeisrecovery.Changesrecordedwithinarecalledredoentries.Redoentriescontaininformationtoreconstructorredochanges.SizeisdefinedbyLOG_BUFFER.RedologbuffercacheUserprocessProgramGlobalArea(PGA)PGA是内存中的区域,包含单个进程的数据和控制信息。每个服务器进程分配一个PGA,PGA由每个服务器进程独占。当用户连接入Oracle数据库并建立会话时,Oracle分配PGA。与SGA不同,PGA仅被一个进程使用。StackspaceSessioninformationsortarea,cursorinformationSGASharedSQLareasSGASessioninformationPGADedicatedserverSharedserverServerprocessSharedSQLareasStackspacesortarea,cursorinformationBackgroundProcessesTherelationshipbetweenthephysicalandmemorystructuresismaintainedandenforcedbyOracle’sbackgroundprocesses.MandatorybackgroundprocessesDBWnPMONCKPTLGWRSMONRECOOptionalbackgroundprocessesARCnLMONSnnnQMNnLMDnCJQ0PnnnLCKnDnnnInstanceSGADatabasebuffercacheDBWnControlfilesDatafilesRedologfilesDatabaseWriter(DBWn)DBWn:负责将数据的更改由databasebuffercache写到datafiles•检查点•脏数据达到阀值•没有buffer空间•超时•RACpingrequest•表空间offline•表空间只读•表被删除或被truncate•表空间开始备份DatabaseInstanceSGADBWnRedologbufferLogWriter(LGWR)LGWR:负责将数据更改记录由redologbuffer写到redologfiles。当用户进程提交一事务时写入一个提交记录。每三秒将日志缓冲区输出。当日志缓冲区的1/3已满时将日志缓冲区输出。当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。当有1MB的归档日志写入ControlfilesDatafilesRedologfilesLGWRDatabaseInstanceSGASMONSystemMonitor(SMON)SMON:检查数据库的一致性,必要的情况下,在数据库打开时执行恢复。回收不再使用的临时段空间、合并连续的空闲空间等。Instancerecovery:日志切换回滚未提交数据合并空闲空间每三秒负责清理不再使用的临时段ControlfilesDatafilesRedologfilesInstanceSGASMONDatabaseInstanceSGAPMONProcessMonitor(PMON)PMON:进程负责在反常中断的连接之后的清理工作释放锁释放其他资源PMON将观察所有Oracle进程,只要合适或重启他们或中止进程PGAareaInstanceSGADWW0RedoLogBufferLGWRInstanceSGADBWnLGWRCKPTControlfilesDatafilesRedologfilesCheckpoint(CKPT)CKPT:负责更新数据库的控制文件(controlfiles)中的状态信息。在数据缓存永久写入数据库时。当到DBWN达检查点当检查点需要更新数据文件头信息更新检查点信息到controlfileArchiver(ARCn)可选择的后台进程自动的把联机日志备份到ARCHIVELOG下。记录所有数据库变化ControlfilesDatafilesRedologfilesArchivedRedologfilesARCnARCnOracle数据库逻辑与物理结构存储结构物理备份冷备份联机热备份rman逻辑备份:数据库的实用程序OracleExportOracleImportORACLE备份与恢复数据库的实用程序Export它是Oracle数据库的一个实用程序。它将Oracle数据库的数据和结构移出Oracle放入到一个二进制的export文件中。它转出的数据只有Oracle的import程序能够处理。Import它将读取转出的数据将重建数据库的内容与结构。Export(卸载)执行exportexpusername/passwordparfile=filename交互式expusername/password获取联机帮助exphelp=yPARFILE文件格式:FULL=YFILE=DBA.DMPGRANTS=YINDEXES=YCONSISTENT=YExport(卸载)export常见参数的含义userid是exp命令的第一个参数。定义你需要卸载数据的用户。file定义export文件的名字buffer决定在export时,用来存放卸载数据的缓冲区的大小。full控制export级别。它是决定数据的备份级别是基于全数据库grants决定export程序是否卸载授权default=yowner决定数据卸载的级别。如果设定owner参数,卸载的级别为用户级tables决定数据卸载的级别,如果设tables参数,则卸载级别为表级rows决定只卸载数据结构还是需要卸载数据Export举例全数据库的备份expsystem/managerfull=Yfile=dba.dmpgrants=Yrows=Y用户级的数据库备份expscott/tigerfile=scott.dmpowner=scottgrants=Yrows=Ycompress=y表级数据库备份expblake/paperfile=blake.dmptables=(dept,manager)rows=ycompress=Y执行importimpusername/passwordparfile=filename交互式impusername/password获取联机帮助imphelp=yparfile格式FULL=YFILE=DBA.DMPGRANTS=YINDEXES=Y#importallindexesImport(装载)import常见参数含义file/*定义被装载的文件名*/fromuser/*定义import包含对象的schme的列表*/full/*完全数据库的装载*/indexes/*定义是否装载索引*/tables/*定义需要装载表名的列表*/touser/*定义需要装载的用户列表*/userid/*定义执行imp的用户*/Import举例对特定用户选择表的数据装载impsystem/managerfile=dba.dmpfromuser=scotttables=(dept,emp)装载从另外用户中卸载的表impscott/tigerfromuser=blaketouser=scottfile=blake.dmptables=(unit,manager)装载从一个用户到另外一个用户的表impsystem/managerfile=scott.dmpfromuser=scotttouser=blaketables=(*)RECOVERMANAGER的特性及实施分布式网络数据库系统备份和恢复策略TertiaryStorageSubsystem:EMC/Epoch,Legato,StorageTek,IBM,HP,Etc.EnterpriseManagerRecoveryCatalogRecoveryManagerOracle9iServerDiskTapeAPIDiskTapeDiskTapeDiskTape3rdPartyToolOracle9iServerOracle9iServerOracle9iServerOracle9iServer管理控制平台如何实现集中的备份和存储管理9iOracle9iforSolarisOLAPServiceDataMining备份磁带库10gOracle10gforWindows/Linuxagentagent9i•OracleRman一般只支持备份到本地的硬盘上•与备份管理软件配合可以备份到集中的磁带库上•系统的维护还包含系统级的备份以及优化、管理工作系统备份与恢复的方式处理查询用户进程服务器进程解析StatementOKHandle执行OKHandle提取ResultsSELECT*FROMempORDERBYename;处理DML语句InstanceSGA共享池库高速缓存重做日志缓冲区数据高速缓存数据字典高速缓存UPDATEempSETsal=sal*1.1WHEREempno=73691服务器进程控制文件重做日志数据文件数据库2345处理COMMIT共享池重做日志缓冲区LGWRControlfilesRedologfilesDatafiles数据库服务器进程12用户进程3数据高速缓存4SGA实例COMMITs步骤当COMMIT执行时:1server在redologBuffer中放置一个SCN作为commit记号。2LGWR执行一个不间断的写操作包括所有的redologbuffer写到redologfiles及commit记号。在这一点,Oracleserver可以保证即使在实例失败时数据也不会丢失。3用户被通知COMMIT完成。.4server记录信息显示事务已经完成,锁可以被释放。数据缓冲信息独立的由DBW0执行,可能在commit前也可能在Commit后。SystemChangeNumber无论事务在何时提交,Oracleserver总是分配一个SystemChangeNumber(SCN)给这个事务。SCN自动增加,在数据库是唯一的。它OracleServer被用来作为内部的时间戳,来同步数据及保证数据读一致性。使用SCN可以不依靠操作系统时间来检验一致性。•Oracle体系结构•Oracle内部结构•Oracle存储结构•Oracle备份•处理查询、DML、COMMIT•Oracle配置•Oracle用户管理•Oracle权限•Oracle参数配置•Oracle工具介绍•Toad•PLSQLDeveloper用户和模式–表–触发器–约束–索引–视图–序列–存储程序单元–同义词–用户自定义数据类型–数据库链建立用户(数据库验证)CREATEUSERpeterIDENTIFIEDBYadminDEFAULTTABLESPACEusersTEMPORARYTABLESPACEtemp;CREATEUSERpeterIDENTIFIEDBYadminDEFAULTTABLESPACEusersTEMPORARYTABLESPACEtemp;删除用户DROPUSERpeter;DROPUSERpeterCASCADE;显示用户信息DBA_USERSDBA_TS_QUOTASoracle系统特权种类例子INDEXCREATEANYINDEXALTERANYINDEXDROPANYINDEXTABLECREATETABLECREATEANYTABLEALTERANYTABLEDROPANYTABLESELECTANYTABLEUPDATEANYTABLEDELETEANYTABLESESSIONCREATESESSIONALTERSESSIONRESTRICTEDSESSIONTABLESPACECREATETABLESPACEALTERTABLESPACEDROPTABLESPACEUNLIMITEDTABLESPACE授予系统特权GRANTCREATESESSION,CREATETABLETOpeter;GRANTCREATESESSION,CREATETABLETOpeter;GRANTCREATESESSIONTOscottWITHADMINOPTION;GRANTCREATESESSIONTOscottWITHADMINOPTION;收回系统特权REVOKECREATETABLEFROMpeter;REVOKECREATETABLEFROMpeter;REVOKECREATESESSIONFROMscott;REVOKECREATESESSIONFROMscott;配置参考创建数据库参数设置创建数据库参数设置Nc相关的重要参数介绍db_block_sizedb_cache_size(db_keep_cache_size)[k、m]shared_pool_sizepga_aggregate_target(sort_area_size)optimizer_index_cost_adjoptimizer_dynamic_samplingopen_cursorsprocesseslarge_pool_sizelog_bufferdb_writer_processesdb_file_multiblock_read_count参数修改altersetsystemdb_cache_size=2000Mscope=spfile;altersetsystemoptimizer_index_cost_adj=40scope=both;altersetsystemopen_cursors=3000scope=memory;•Oracle体系结构•Oracle内部结构•处理查询•处理DML•处理COMMIT•Oracle配置•Oracle用户管理•Oracle权限•Oracle参数配置•Oracle工具介绍•Toad•PLSQLDevelopertoadPLSQLDeveloper练习1.“ORA-01034ORACLEnotavailable”原因?2.用户执行UPDATE语句,该语句由哪个进程执行?3.哪种文件用来认证特权用户?4.哪种文件用来存储回滚段?5.哪块内存区域用来存放数据字典信息?6.处理DML语句包含哪几个阶段?7.当执行COMMIT操作后,数据库变化记载到了哪种文件中?8.建立用户kay,并授予登录和建表特权9.建立角色DEV,使用户可以建表、建立视图、查询KAY.EMP