Oracle数据库技术培训.ppt

上传人:za****8 文档编号:12667554 上传时间:2020-05-13 格式:PPT 页数:91 大小:244.01KB
返回 下载 相关 举报
Oracle数据库技术培训.ppt_第1页
第1页 / 共91页
Oracle数据库技术培训.ppt_第2页
第2页 / 共91页
Oracle数据库技术培训.ppt_第3页
第3页 / 共91页
点击查看更多>>
资源描述
,Oracle数据库技术培训,2008年4月,培训内容,Oracle数据库基础Oracle数据库结构Oracle数据库实例*Oracle数据库访问*Oracle分布式处理及分布式数据库*Oracle数据库备份和恢复*,培训内容,数据库基础Oracle数据库结构Datablock,Extent,SegmentTablespace,DatafileDataDictionaryOracle数据库实例DatabaseandInstanceStartupandShutdownMemoryStructureProcessStructureOracle数据库访问OracleSqlandPl*sqlOracleProcedureandPackage,培训内容,Oracle分布式处理及分布式数据库分布式处理Oracle客户机服务器的体系结构Net8分布式数据库Oracle分布式数据库体系结构Oracle数据库的备份和恢复物理备份热备份逻辑备份,数据库基础,关系型数据库,在1970年提出了关系模型的概念.这是关系型数据库管理系统的基础(RDBMS).关系模型包含以下内容:对象和关系的集合关系上的一组操作数据一致性管理,关系型数据库,关系型数据库是关系或二维表的集合.,OracleServer,IDLAST_NAMEFIRST_NAME10HavelMarta11MageeColin12GiljumHenry14NguyenMai,SALES_IDNAMEPHONEREP_ID201Unisports55-206610112202SimmsAtheletics81-2010114203DelhiSports91-1035114204Womansport1-206-104-010311,TableName:CUSTOMER,TableName:EMP,关系型数据库,SALES_IDNAMEPHONEREP_ID201Unisports55-206610112202SimmsAtheletics81-2010114203DelhiSports91-1035114204Womansport1-206-104-010311,Row(Tuple),Column(Attribute),S_CUSTOMERTable(Relation),每个表由行和列组成.通过执行结构化查询语句(SQL)操纵行上的数据.,关系型数据库,主键(PK)-基表中每一行都有的唯一标识符.外键(FK)-多个基表间建立逻辑关系的标识.,IDLAST_NAMEFIRST_NAME10HavelMarta11MageeColin12GiljumHenry14NguyenMai,TableName:S_CUSTOMER,TableName:S_EMP,PrimaryKey,ForeignKey,PrimaryKey,SALES_IDNAMEPHONEREP_ID201Unisports55-206610112202SimmsAtheletics81-2010114203DelhiSports91-1035114204Womansport1-206-104-010311,关系型数据库特点,通过SQL命令访问或修改数据库中的对象由一系列基表构成支持大量操作便于修改数据独立性,关系型数据库对象,描述数据库的基本存储单位(由行和列组成).一个或多个表中数据的逻辑映像.产生主键的值.提高查询的性能.改变对象的名称过程、函数和包(由SQL、PL/SQL语句组成).,对象基表视图序列号索引同义词程序单元,Oracle数据库结构,Oracle数据库结构,数据块,区和段的关系数据块(db_block)它是Oracle数据库存储的最小单位,Oracle是以多个Oracle块的大小来请求数据的。数据块的大小是在数据库创建时设定的。并且块大小是操作系统块大小的倍数。块格式:块头,表目录,行目录,行数据,空闲空间,区(Extent),数据库存储空间分配的一个逻辑单元,它是由一些连续的数据块组成。而一个或多个区又够成段(Segment)。初始区(InitialExtent)增量区(NextExtent)数据段区(在创建表时,可指定表的存储参数。若不指定,使用缺省表空间存储参数)举例:Createtabletable_name(col1type,col2type)Storage(initial50Knext50kpctincrease0);索引段区分配给索引段的区,只要索引存在就保留其分配。如果删除索引及相关的表,Oracle将回收这些区给表空间中的其它用户使用。,区(Extent),回退段区Oracle将自动检测数据库中的回退段,是否已经大于最佳大小,若大于最大值,Oracle将自动释放回退段中的一个或多个区。临时段区Oracle在执行完需要临时段的语句时,Oracle将自动删除临时段,并将其已经分配给该段的区返回到相关的表空间中。,段(Segment),段是由一组区组成。它包括表空间中特定逻辑存储结构组成的所有数据。组成数据段表分区表簇索引段临时段在处理查询时,Oracle需要临时工作区,作为语法检查和执行的中间场所。Oracle将自动分配临时工作区,通常临时工作区作为排序工作区。,段(Segment),组成(Cont.)临时段下列语句需要临时工作区CreateIndexSelectorderbySelectdistinctSelectgroupbySelectUnionSelectIntersectSelectMinus若用户在定义时,若没有指定临时段表空间,则缺省的临时段空间为system表空间。,段(Segment),组成(Cont.)回退段每个数据库都包含一个或多个回退段。回退段记录了由每个事物处理改变了的原值。它主要用于提供读一致性、回退事物处理和恢复数据库。在创建回退段时,需要指定该段的区的分配。每个回退段必须至少分配两个区。事物顺序地写入回退段中。每个事物在任何时候只写入回退段一个区中。多个活动的事务可以并行地写入单个回退段甚至是同一个回退段的区中。但是回退段中的每个数据块,只为单个事物处理保存数据。,回退段(rollbackSegment),回退段管理OEM(oracleenterprisemanager)来管理rollbacksegmentSQL命令来管理创建回退段:createrollbacksegmentnametablespacets_namestorage(initialnumberkorMnextnumberkorMoptimalnumberkorMminextentnumbermaxextentnumber);,回退段(rollbackSegment),查询系统中已有的回退段数通过系统的参数文件来查看系统中可用的rollbacksegment个数。initsid.ora文件(私有的)connectsys/managerdescdba_rollback_segsselectsegment_namefromdba_rollback_segs;/*查询系统中使用的回退段数*/查询回退段请求数selectsum(value)datarequestsfromv$sysstatwherenamein(doblockgets,consistentgets);,Oracle数据库结构,表空间及数据文件逻辑上Oracle将数据存储于表空间中,物理上存储于相应表空间关联的数据文件上。Oracle是由一个或多个表空间组成。每个表空间由一个或多个数据文件组成。数据库的全部数据存储于数据文件中,这些数据文件组成了数据库中的每个表空间。,表空间,系统表空间(system)每个数据库都包含一个system表空间。它是在数据库创建时,由Oracle自动创建的。system表空间始终包含整个数据库的数据字典。临时段表空间(TemporaryTablespace)临时段所属的表空间索引表空间(IndexTablespace)索引段所属的表空间回退段表空间(RollbackTablespace)回退段所属的表空间,创建表空间,OEM(OracleEnterpriseManager)Oracle提供图形界面的管理工具来创建、管理表空间。SQL命令创建tablespaceCreatetablespacetest_tsDatafilefile_namesize10MdefaultStorage(initial50knext50kpctincrease0minextents2);修改tablespaceAltertablespacetest_tsadddatafilefile_namesize10M;删除tablespacedroptablespace;,表空间查询,通过执行下面的语句来查询该数据库系统中所包含的表空间及状态Connectsys/manager;descdba_tablespacesselect*fromdba_tablespaces;/*查询表空间当前状态及存储参数*/selecttablespace_name,sum(bytes)fromdba_free_spacegroupbytablespace_name;/*查询表空间的剩余状态*/,数据文件,在一个完整的数据库的环境中,需要下列文件:数据文件每个数据文件只能于一个表空间和一个数据库关联。在数据文件被首次创建时,分配的磁盘空间被格式化。使用数据字典,查询数据库对应的数据文件。connectsys/manager;descdba_data_files;select*fromdba_data_files;,重做日志文件(redologfile),数据的每一种改变,都记录到重做日志文件中。当事故发生时,使用重做日志文件恢复所有的事物。在数据库创建时,只定三个缺省的redologfile.redolog1,redolog2,redolog3在数据库处于非归档方式下,redologfile是循环使用的。在处于归档方式下的数据库,所有的redolog信息被保留。查看系统的redologfile的状态connectsys/manager;descv$logfile;select*fromv$logfile;,控制文件(controlfile),控制文件用于保存数据库管理系统操作的重要信息。它是在数据实例(instance)启动时,确定数据文件和重做日志文件在系统中的位置。控制文件的丢会给数据库的系统管理带来灾难性的后果.建议将控制文件存储于多个磁盘卷。也可以在数据库创建后,建立一个备份的控制文件。alterdatabasebackupcontrolfiletotrace;在系统的trace目录找到控制文件的创建模板。查询controlfile位置connectsys/managerdescv$controlfile;select*fromv$controlfile;,参数文件(initsid.ora),参数文件在数据库的位置:$ORACLE_HOME/dbs/init(sid).oraifsid=ora805then参数文件名为:initora805.ora它定义在系统启动时所定义的信息.定义例程运行环境.通过对参数文件的调整可以优化系统性能.查询系统运行的参数值svrmgrlsvrmgrconnectinternal;svrmgrshowparameters;svrmgrshowparameterdb,定义:在数据库启动例程时,所必须读取的包含数据库例程和配置参数列表的文本文件。,参数文件(initsid.ora),初始化参数内容:启动例程的数据库名SGA在内存结构中占有多少内存如何处理装满的联机重做日志文件数据库控制文件的名称及位置数据库私有rollback段的名称及个数见系统参数文件:E:pora804databaseinitorcl.ora,Oracle数据库结构,数据字典数据字典是Oracle数据库的重要组成。它由一组只读表组成。包括:数据库所有对象的定义(表,视图,索引,簇,同义词,序列,过程,函数,程序包,触发器)空间的分配和使用状况列的缺省值完整性约束信息用户名已授予用户的角色和权限审计信息等,数据字典,数据字典结构基表存放相关数据库信息的基础表视图汇总并显示存放数据字典基表中信息的视图,数据字典,数据字典所有者Oracle的sys用户拥有数据字典所有的基表和视图。任何Oracle用户都不能改变数据字典的任何数据。不能更新、插入、删除。数据字典的改变会影响数据库的正常运行。系统管理员需要严格管理系统用户.(sysandsystem),数据字典,常用的数据字典前缀范围USER用户视图ALL用户可访问的部分DBA数据库管理员视图,常用的数据字典,dba_tablespacesdba_data_filesdba_tablesdba_usersdba_viewsdba_indexesdba_db_linksdba_free_space,dba_ind_columnsdba_jobsdba_objectsdba_rollback_segsdba_segmentsdba_sequencesdba_snappshotsdba_synonymsdba_tab_columnsdba_triggersdba_constraintsdba_cons_columns,Oracle数据库实例,Oracle数据库实例,数据库和实例每个Oracle数据库的运行都于Oracle的例程(Instance)相关。数据库在服务器上启动时,Oracle分配一个SGA(systemglobalarea)的内存区。例程是由(SGA和后台进程组成),是Oracle数据库的运行环境在通常情况下,数据库与例程是一对一的,但是在OracleParallelServer的环境下,允许多个例程装载相同的数据库。,数据库的启动和关闭,数据库的启动于关闭必须使用管理员权限.在数据库安装后,建立了一个叫做internal的操作系统用户,其口令是由数据库的口令文件来认证的。它负责数据库的启动与关闭。数据库的启动分为三个步骤:启动例程装载数据库打开数据库,数据库的启动和关闭,数据库正常启动过程:svrmgrl(启动servermanager)svrmgrlconnectinternal;svrmgrlstartup/*启动数据库*/svrmgrlshutdown/*关闭数据库*/Svrmgrl它是数据库的管理工具,关于它的具体的使用,见svrmgrlhelp,数据库的启动和关闭,在数据库关闭时应注意:若有数据库的客户端没有退出数据库连接,在使用正常的数据库关闭的方式,无法关闭,数据库关闭处于等待状态。使用下面的方式关闭数据库:svrmgrlshutdown;svrmgrlshutdownimmediate;/*断开数据库连接,关闭数据库*/svrmgrlshutdownabort;/*在某些特殊情况下,使用这种关闭数据库方式。它将立即结束当前的sql语句,不回退未提交的事物,数据完整性没有保护。在下次启动时,数据库将自动进行恢复,用户最好不使用这种方法。*/,Oracle数据库实例,内存结构SGA(系统全局区)它是一组共享内存结构,由Instance数据和控制信息组成。包含下面的结构:数据库缓冲区高速缓存(db_block_buffer)重做日志缓冲区(log_buffer)共享池(shared_pool_size)数据字典高速缓存其他PGA(程序全局区)是内存中的区域,包含单个进程的数据和控制信息。每个服务器进程分配一个PGA,PGA由每个服务器进程独占。当用户连接入Oracle数据库并建立会话时,Oracle分配PGA。,Oracle数据库实例,进程结构在Oracle数据库中,有两类进程:服务器进程Oracle通过服务器进程来处理与例程连接的用户请求。后台进程为了将性能提到最高限度以及容纳更多的用户,多进程的Oracle系统使用了一些另外的进程(后台进程)Oracle中的后台进程包括:DBW0数据库写入进程,将缓冲区的内容写入数据文件。LGWR将重做日志缓冲区的内容写入磁盘的重做日志文件,Oracle数据库实例,进程结构Cont后台进程SMON系统监控进程,在例程启动时,负责实现系统的崩溃恢复。PMON用户进程失败时,进程监控程序实现进程恢复。RECO它是解决与分布式事物相关的故障。只有例程允许分布式事物处理并且Distributed_transactions0时,RECO进程才会出现。CKPT检查点进程,Oracle数据库实例,进程结构Cont后台进程ARCn归档程序进程。当数据库设于归挡方式时,当重做日志文件已满或出现altersystemswitchlogfile命令进行日志切换时,Oracle的ARCn进程将重做日志文件中的内容拷贝到指定的存储设备上。Dnnn调度程序进程(在多线索结构中使用)Snnn共享服务器进程(在多线索结构中使用),Oracle数据库访问,Oracle数据库访问,OracleSQL,SQL*PlusandPL*SQLSQL是结构化的查询语言Oracle的SQL语言包含对ANSI/ISO标准SQL语言的扩充。Oracle的SQL语言分为以下几类:DML(数据操纵语言)DDL(数据定义语言)事物处理的控制语言会话控制语句系统控制语句SQL*PLUS是Oracle的一个使用程序,它可以运行于客户端,也可以运行服务器端,通过它能够查看数据字典的信息,以及查看用户数据和结构等,运行程序。,Oracle数据库访问,PL*SQL是Oracle的一种过程化的语言。他有自己的程序结构,有各种条件控制和循环控制。通过语言,能够写数据库的存储过程和包。甚至通过PL*SQL语言还可以开发基于Web的应用。,SQL,DMLSelect(从一个或多个表或视图中检索数据)selectempno,ename,sal,deptnofromempwheredeptno=10;复杂的select语句:groupby子句selectdeptno,min(sal),max(sal)fromempgroupbydeptno;having子句selectdeptno,min(sal),max(sal)fromempwherejob=CLERKgroupbydeptnohavingmin(sal)/*sql*plus的命令行状态*/sqlsetpauseonspoolfilenamespooloff,PL*SQL,Pl*SQL是Oracle对SQL的过程化的扩充。Pl*SQL能使用户将SQL语句和过程化的结构结合起来。PL*SQL的程序单元分为匿名块结构:Declare/*变量定义*/Begin/*程序体*/Exception/*异常处理*/End;,Pl*SQL匿名块(举例),DECLAREacct_balanceNUMBER(11,2);acctCONSTANTNUMBER(4):=3;debit_amtCONSTANTNUMBER(5,2):=500.00;BEGINSELECTbalINTOacct_balanceFROMaccountsWHEREaccount_id=acctFORUPDATEOFbal;IFacct_balance=debit_amtTHENUPDATEaccountsSETbal=bal-debit_amtWHEREaccount_id=acct;ELSEINSERTINTOtempVALUES(acct,acct_balance,扞nsufficientfunds?;-insertaccount,currentbalance,andmessageENDIF;COMMIT;END;,PL*SQL,存储过程procedure,packageandfunctionprocedureandfunction结构,PROCEDUREname(parameter,parameter,.)ISlocaldeclarations/*变量定义*/BEGINexecutablestatements/*过程体*/EXCEPTIONexceptionhandlers/*异常处理*/ENDname;FUNCTIONname(parameter,parameter,.)RETURNdatatypeISlocaldeclarations/*变量定义*/BEGINexecutablestatements?/*过程体*/EXCEPTIONexceptionhandlers/*异常处理*/ENDname;,Pl*SQL过程(举例),PROCEDUREraise_salary(emp_idINTEGER,increaseREAL)IScurrent_salaryREAL;salary_missingEXCEPTION;BEGINSELECTsalINTOcurrent_salaryFROMempWHEREempno=emp_id;IFcurrent_salaryISNULLTHENRAISEsalary_missing;ELSEUPDATEempSETsal=sal+increaseWHEREempno=emp_id;ENDIF;EXCEPTIONWHENNO_DATA_FOUNDTHENINSERTINTOemp_auditVALUES(emp_id,Nosuchnumber);WHENsalary_missingTHENINSERTINTOemp_auditVALUES(emp_id,Salaryisnull);ENDraise_salary;,Pl*SQL函数(举例),FUNCTIONsal_ok(salaryREAL,titleREAL)RETURNBOOLEANISmin_salREAL;max_salREAL;BEGINSELECTlosal,hisalINTOmin_sal,max_salFROMsalsWHEREjob=title;RETURN(salary=min_sal)AND(salaryconnectinternal;connectedsvrmgrshowparametercontrol_file;NAMETYPEVALUE-control_filesstring/u01/oradata/test/ctrl1test.ctlsvrmgr通常情况下,系统会有三个控制文件。,物理备份,确认需要备份的文件的位置归档文件以Oracle的身份进入操作系统。键入如下命令:$svrmgrlsvrmgrconnectinternal;connected.svrmgrshowparameterarchive;NAMETYPEVALUE-log_archive_desstring?/dba/archlog_archive_formatstring%t_%s.dbfsvrmgr,物理备份,确认需要备份的文件的位置参数文件以oracle用户的身份进入操作系统,并且知道oracle数据库的sid.假设sid为ora805$cd$ORACLE_HOME/dbs$lsinit*.orainit.orainitora805.ora(其中initora805.ora是系统的参数文件)或者通过下列的命令查询instance的sid:sqlplussys/manager;sqlselectinstancefromv$tread;INSTANCE-test/*test为oracle的sid*/,热备份(物理备份),定义在数据库启动的情况下进行的备份。对数据库所有的物理文件进行拷贝时,Oracle用户仍然处于不间断运行的环境中。热备份可以两种:online与offline的唯一区别是:数据库的tablespace是否在线。online需要备份的tablespace是在线的。offline需要备份的tablespace是离线的。,数据库热备份的步骤,1.以archivelog方式启动数据库在正常数据shutdown。修改参数文件:init.ora增加下面两行:log_archive_start=truelog_archive_dest=$ORACLE_HOME/dbs/arch重新启动数据库,这时数据库将以archivelog方式运行.$svrmgrlsvrmgrconnectinternal;svrmgrstartupmount;svrmgralterdatabasearchivelog;svrmgrarchivelogstart;svrmgralterdatabaseopen;,数据库热备份的步骤,2.备份数据库在线的tablespace的备份执行svrmgrlsvrmgrconnectinternal;svrmgraltertablespacetablespace_namebeginbackup;svrmgr执行系统的备份文件命令cpsvrmgraltertablespacetablespace_nameendbackup;下线的tablespace的备份svrmgraltertablespacetablespace_nameofflinenormal;svrmgr执行操作系统备份的命令svrmgraltertablespacetablespace_nameonline;,数据库热备份的步骤,2.备份数据库备份控制文件svrmgrconnectinternal;svrmgralterdatabasebackupcontrolfiletofilenamereues;备份控制文件tracesvrmgrconnectinternal;svrmgralterdatabasebackupcontrolfiletotrace;在系统发生故障时的恢复工作,需要根据不同的故障情况,在oracle工程师的指导下实现恢复的工作。,数据库热备份的注意事项,在执行热备份的方式下,数据库不能运行于noarchivelog方式。查询数据库的运行模式:svrmgrconnectinternal;svrmgrarchiveloglist;DatabaselogModeArchiveModesqlconnectsys/managersqlselectlog_modefromv$database;LOG_MODE-ARCHIVELOG,数据库热备份的注意事项,在数据库中,system表空间不能offline,所以,只能使用online的热备份方式。对于一个tablespace中所有的数据文件均需要进行备份,否则整个tablespace是无效的。在做热备份时,尽量选择数据库最不繁忙时进行。,冷备份,定义:在数据库系统正常关闭的情况下,通过操作系统的命令将所有相关的数据库文件拷贝进行的备份。冷备份分为归档和非归档两种方式。需要拷贝的数据文件为:归档方式:数据文件,控制文件,归档的日志文件,配置文件和参数文件非归档方式:数据文件,控制文件,联机日志文件,配置文件和参数文件,逻辑备份,通过export和import进行的数据库的备份为逻辑备份。export能够实现数据库的增量备份与累计备份。参数inctype=complete(全备份)将数据库中的所有数据对象卸载inctype=incremental(增量备份)对数据库经过上次全备份、累计备份、增量备份后修改的表进行export。inctype=cumulative(累计备份)对数据库经历了全备份或累计备份之后的修改的表进行的备份。,进行逻辑备份的举例,现有一个数据库,它由object1-object20,20个数据对象组成。第一天:全数据备份(备份20个对象)第二天:增量备份(对修改过记录的object2,object4进行备份)第三天:增量备份(对修改过记录的object3,object7进行备份)第四天:增量备份(对修改过记录的object4,object12进行备份)第五天:累计备份(对全数据库备份后修改过记录object2,object3,object4,object7,object12进行备份)第六天:增量备份(对修改过记录的object8,12进行备份)第七天:增量备份(对修改过记录的object4,12进行备份)第八天:累计备份(对自从做了累计备份后修改过记录的object4,8,12进行备份)第九天:增量备份(对修改过记录的object2,4进行备份)第十天:增量备份(对修改过记录的object2,3进行备份),逻辑备份的恢复,对于上面累积备份的例子,通过下面的方法实现相应恢复。先恢复第十天的数据再做全数据库备份的恢复(第一天)再做第一次累计备份文件的恢复(第五天)再做最后一次累计备份文件的恢复(第八天)在依此做第九天,第十天的增量恢复。,使用export&import实现增量数据备份和恢复,1.全数据库export$expsys/managerbuffer=4096000file=full.dmpfull=yinctype=complete2.第一天的增量备份$expsys/managerbuffer=4096000file=incr1.dmpinctype=incremental3.第二天的增量备份$expsys/managerbuffer=4096000file=incr2.dmpinctype=incremental4.第三天的增量备份$expsys/managerbuffer=4096000file=incr3.dmpinctype=incremental假设数据库在第三天发生损坏,下面是根据目前的备份文件进行恢复。,备份:,使用export&import实现增量数据备份和恢复,将最后一次的dump文件imp到oracle数据库中。impsys/managerbuffer=4096000file=incr3.dmpfull=yignore=yinctype=system将整个数据库备份的dump文件至数据库中impsys/managerbuffer=4096000file=full.dmpfull=yignore=yinctype=restore将第一天增量备份的dump文件imp到数据库中。impsys/managerbuffer=4096000file=incr1.dmpignore=yfull=yinctype=restore将第二天增量备份的dump文件imp到数据库中。impsys/managerbuffer=4096000file=incr2.dmpignore=yfull=yinctype=restore将第三天增量备份的dump文件imp到数据库中。impsys/managerbuffer=4096000file=incr3.dmpignore=yfull=yinctype=restore,恢复:,问题解答?,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!