Oracle从入门到精通-经典课件_第1页
Oracle从入门到精通-经典课件_第2页
Oracle从入门到精通-经典课件_第3页
Oracle从入门到精通-经典课件_第4页
Oracle从入门到精通-经典课件_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle从入门到精通-经典Oracle从入门到精通-经典Oracle从入门到精通-经典课程地位.Net&C#SQLServerXMLSPMASP.NET&WebServiceOracleUMLSPR:ComputerBaseHTML&JavaScriptSQLServerBaseOOP&JavaBaseCSTBJSP/ServletEJB&WebServiceWinFormsStruts&JSFTesting&SQALinux2021/2/42Oracle从入门到精通-经典Oracle从入门到精通-经典课程地位.Net&C#SQLServerXMLSPMASP.NET&WebServiceOracleUMLSPR:ComputerBaseHTML&JavaScriptSQLServerBaseOOP&JavaBaseCSTBJSP/ServletEJB&WebServiceWinFormsStruts&JSFTesting&SQALinux2021/2/42课程地位.Net&C#SQLServerXMLSPMA课程目标理解Oracle数据库体系结构熟练掌握SQL命令和SQL函数使用Oracle的各种数据库对象使用PL/SQL编写存储过程掌握基本的数据库配置和管理2021/2/43课程目标理解Oracle数据库体系结构2021/2/43目标

了解Oracle体系结构的各种组件掌握Oracle中的基本用户管理了解Oracle的工具了解Oracle的安装和卸载2021/2/44目标了解Oracle体系结构的各种组件2021/2/Oracle数据库简介2-1对象关系型的数据库管理系统(ORDBMS)在管理信息系统、企业数据处理、因特网及电子商务等领域使用非常广泛在数据安全性与数据完整性控制方面性能优越跨操作系统、跨硬件平台的数据互操作能力Oracle数据库的主要特点支持多用户、大事务量的事务处理数据安全性和完整性控制支持分布式数据处理可移植性2021/2/45Oracle数据库简介2-1对象关系型的数据库管理系统Oracle数据库简介2-2Oracle数据库基于客户端/服务器技术客户端应用程序通过向服务器请求并接收信息的方式与数据库进行交互。它充当用户与数据库之间的接口请求响应数据库服务器对数据库表进行最佳管理,处理多个客户端对同一数据的并发访问。全面地保持数据完整性,并控制数据库访问权限等安全性需求网络服务器2021/2/46Oracle数据库简介2-2Oracle数据库基于客户Oracle9i体系结构Oracle服务器Oracle数据库Oracle实例Oracle数据库是一个数据的集合,该集合被视为一个逻辑单元管理数据库的后台进程和内存结构的集合称为Oracle实例

数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制Oracle服务器提供开放、全面和综合的信息管理,它由Oracle数据库和Oracle实例组成2021/2/47Oracle9i体系结构Oracle服务器OraclOracle主要组件实例内存结构后台进程

PMONSMONDBWRLGWRCKPT其他

数据库数据文件数据文件数据文件控制文件控制文件日志文件日志文件参数文件归档日志文件口令文件SGA用户进程服务器进程PGA共享池数据缓冲区日志缓冲区2021/2/48Oracle主要组件实例PMONSOracle实例Oracle实例是后台进程和内存结构的集合Oracle实例系统全局区后台进程分配启动2021/2/49Oracle实例Oracle实例是后台进程和内存结构的Oracle数据库Oracle数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区Oracle数据库包括逻辑结构和物理结构物理结构逻辑结构物理结构包含数据库中的一组操作系统文件。逻辑结构指数据库创建之后形成的逻辑概念之间的关系Oracle数据库2021/2/410Oracle数据库Oracle数据库由操作系统文件组成,会话会话是用户与Oracle服务器的单个连接当用户与服务器建立连接时创建会话当用户与服务器断开连接时关闭会话启动Oracle实例使用SQL*Plus连接至数据库创建用户进程创建服务器进程提交SQL查询2021/2/411会话会话是用户与Oracle服务器的单个连接启动OraOracle实例内存结构系统全局区(SGA)程序全局区(PGA)Oracle实例启动时分配系统全局区当服务器进程启动时分配程序全局区Oracle的内存结构包含以下两个内存区:内存区122021/2/412Oracle实例内存结构系统全局区(SGA)程序全局区系统全局区2-1数据库信息存储于SGA,由多个数据库进程共享共享池数据缓冲区日志缓冲区SGA的内存结构2021/2/413系统全局区2-1数据库信息存储于SGA,由多个数据库进程共系统全局区2-2共享池共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域共享池由库缓存和数据字典缓存组成。共享池的大小直接影响数据库的性能。数据缓冲区用于存储从磁盘数据文件中读入的数据,所有用户共享。服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。数据缓冲区的大小对数据库的读取速度有直接的影响。日志缓冲区日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。相对来说,日志缓冲区对数据库的性能影响较小。2021/2/414系统全局区2-2共享池共享池是对SQL、PL/SQL程序程序全局区程序全局区(PGA)包含单个服务器进程所需的数据和控制信息PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle数据库连接的用户进程所需的信息PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放2021/2/415程序全局区程序全局区(PGA)包含单个服务器进程所需的数据和Oracle实例进程结构Oracle实例有几种不同类型的进程,它们是:实例进程用户进程服务器进程后台进程用户进程是一个需要与Oracle服务器进行交互的程序。当用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程服务器进程用于处理连接到该实例的用户进程的请求。当用户连接至Oracle数据库实例创建会话时,即产生服务器进程后台进程是Oracle数据库为了保持最佳系统性能和协调多个用户请求而设置的。Oracle实例启动时即创建一系列后台进程2021/2/416Oracle实例进程结构Oracle实例有几种不同类型的后台进程2-1后台进程PMON实例的各种后台进程是:SMONDBWRLGWRCKPT其他2021/2/417后台进程2-1后台进程PMON实例的各种后台进程是:SMO后台进程2-2PMON进程监控进程清理出现故障的进程。释放所有当前挂起的锁定。释放故障进程使用的资源。SMON系统监控进程在实例失败之后,重新打开数据库时自动恢复实例。整理数据文件的自由空间,将相邻区域结合起来。释放不再使用的临时段。DBWR数据写入进程管理数据缓冲区,将最近使用过的块保留在内存中。将修改后的缓冲区数据写入数据文件中。LGWR日志写入进程负责将日志缓冲区中的日志数据写入日志文件。系统有多个日志文件,该进程以循环的方式将数据写入文件。2021/2/418后台进程2-2PMON进程监控进程清理出现故障的进程。Oracle物理组件物理组件就是Oracle数据库所使用的操作系统物理文件。物理文件可分为三类:物理组件数据文件控制文件日志文件数据文件用于存储数据库数据,如表、索引数据等。控制文件是记录数据库物理结构的二进制文件。日志文件记录对数据库的所有修改信息,用于故障恢复2021/2/419Oracle物理组件物理组件就是Oracle数据库所使用的Oracle逻辑组件3-1数据库的逻辑结构是从逻辑的角度分析数据库的组成。Oracle的逻辑组件包括:数据库表空间段区数据块

模式2021/2/420Oracle逻辑组件3-1数据库的逻辑结构是从逻辑的角度Oracle逻辑组件3-2表空间是数据库中最大的逻辑单位,一个Oracle数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。表空间的大小等于构成该表空间的所有数据文件大小之和。CREATETABLESPACEtablespacenameDATAFILE‘filename’[SIZEinteger[K|M]][AUTOEXTEND[OFF|ON]];创建表空间的语法是:2021/2/421Oracle逻辑组件3-2表空间是数据库中最大的逻辑单位Oracle逻辑组件3-2createtablespacetest_datadatafile'D:\oracle\oradata\Oracle9i\user_data.dbf'size50mautoextendonnext50mmaxsize20480mextentmanagementlocal;2021/2/422Oracle逻辑组件3-2createtablespaOracle逻辑组件3-3段段是构成表空间的逻辑存储结构,段由一组区组成。按照段所存储数据的特征,将段分为四种类型,即数据段、索引段、回退段和临时段。区区为段分配空间,它由连续的数据块组成。当段中的所有空间已完全使用时,系统自动为该段分配一个新区。区不能跨数据文件存在,只能存在于一个数据文件中。数据块数据块是Oracle服务器所能分配、读取或写入的最小存储单元。Oracle服务器以数据块为单位管理数据文件的存储空间。模式模式是对用户所创建的数据库对象的总称。模式对象包括表、视图、索引、同义词、序列、过程和程序包等。2021/2/423Oracle逻辑组件3-3段段是构成表空间的逻辑存储结构Oracle逻辑组件3-42021/2/424Oracle逻辑组件3-42021/2/424Oracle网络配置2-1Oracle产品安装完成后,服务器和客户端都需要进行网络配置才能实现网络连接。服务器端配置监听器,客户端配置网络服务名。tnsnames.oraOracle客户端listener.oraOracle服务器2021/2/425Oracle网络配置2-1Oracle产品安装完成后,服Oracle网络配置2-2服务器端监听器配置信息包括监听协议、地址及其他相关信息。配置信息保存在名为listener.ora的文件中。在安装服务器软件时自动配置一个监听器客户端的网络服务名配置信息包括服务器地址、监听端口号和数据库SID等,与服务器的监听器建立连接。配置信息保存在名为tnsnames.ora的文件中Oracle中的NetConfigurationAssistant和NetManager工具都能用来配置监听器和网络服务名2021/2/426Oracle网络配置2-2服务器端监听器配置信息包括监听Oracle查询工具Oracle查询工具SQL*PlusiSQL*PlusPL/SQLOracle提供的工具非常容易使用。Oracle的查询工具包括:SQL*Plus是Oracle最常用的工具之一,用于接受和执行SQL命令以及PL/SQL块。iSQL*Plus可以执行能用SQL*Plus完成的所有任务。该工具的优势在于能通过浏览器访问它。

PL/SQL是SQL的扩展。PL/SQL结合了SQL语言的数据操纵能力和过程语言的流程控制能力2021/2/427Oracle查询工具Oracle查询工具SQL*PluOracle企业管理器Oracle企业管理器为管理员提供了图形化的用户界面,并集成了管理数据库的工具2021/2/428Oracle企业管理器Oracle企业管理器为管理员Oracle默认用户只有用合法的用户帐号才能访问Oracle数据库Oracle有几个默认的数据库用户

Oracle默认用户SYSSYSTEMSCOTT数据库中所有数据字典表和视图都存储在SYS模式中。SYS用户主要用来维护系统信息和管理实例。SYSTEM是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理数据库用户、权限和存储等SCOTT用户是Oracle数据库的一个示范帐户,在数据库安装时创建2021/2/429Oracle默认用户只有用合法的用户帐号才能访问Oracl创建新用户要连接到Oracle数据库,就需要创建一个用户帐户每个用户都有一个默认表空间和一个临时表空间CREATEUSER命令用于创建新用户CREATEUSERusernameIDENTIFIEDBYpassword[DEFAULTTABLESPACEtablespace][TEMPORARYTABLESPACEtablespace];CREATEUSER命令的语法是:CREATEUSERMARTINIDENTIFIEDBYmartinpwdDEFAULTTABLESPACEUSERSTEMPORARYTABLESPACETEMP;创建一个名称为martin的用户,其密码为martinpwd2021/2/430创建新用户要连接到Oracle数据库,就需要创建一个用户帐户授予权限3-1权限指的是执行特定命令或访问数据库对象的权利权限有两种类型,系统权限和对象权限系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作角色是一组相关权限的组合,可以将权限授予角色,再把角色授予用户,以简化权限管理。2021/2/431授予权限3-1权限指的是执行特定命令或访问数据库对象的权利授予权限3-2GRANT命令可用于为用户分配权限或角色GRANTCONNECTTOMARTIN;CONNECT角色允许用户连接至数据库,并创建数据库对象GRANTRESOURCETOMARTIN;RESOURCE角色允许用户使用数据库中的存储空间GRANTCREATESEQUENCETOMARTIN;此系统权限允许用户在当前模式中创建序列,此权限包含在CONNECT角色中2021/2/432授予权限3-2GRANT命令可用于为用户分配权限或角色授予权限3-3授予用户MARTIN操作TEST表对象的权限GRANTSELECTONTESTTOMARTIN;允许用户查询TEST表的记录GRANTUPDATEONTESTTOMARTIN;允许用户更新TEST表中的记录GRANTALLONTESTTOMARTIN;允许用户插入、删除、更新和查询TEST表中的记录2021/2/433授予权限3-3授予用户MARTIN操作TEST表对象的更改和删除用户ALTERUSER命令可用于更改口令ALTERUSERMARTINIDENTIFIEDBYmartinpass;修改MARTIN用户的密码DROPUSER命令用于删除用户DROPUSERMARTINCASCADE;删除MARTIN用户模式2021/2/434更改和删除用户ALTERUSER命令可用于更改口令AL用户管理Connectscott/tigerConnectSystem/sysassysdba断开链接disconnect解锁:alteruserscottaccountunlock;显示当前用户:showuser;查看当前用户下所有对象:select*fromtab;跨用户访问:select*fromscott.emp;2021/2/435用户管理Connectscott/tiger2021/2/用户管理创建用户:createuserzsidentifiedbyzs;dropuserzs;dropuserzscascade;创建session权限:Grant权限to用户grantcreatesessiontozs;Oracle提供了n种角色:ConnectResourceDBAGrantconnect,resourcetozs;但是仍然不能创建表,是因为还没有表空间的权限。(10G已经有了!)2021/2/436用户管理创建用户:2021/2/436用户管理提示密码失效:ALTERUSERtestPASSWORDexpire;对象授权:GRANT权限(select、update、insert、delete)ONschema.tableTO用户|-GRANTselectONscott.empTOtest;|-Grantallonscott.emptotest;--将表相关的所有权限付给test|-Grantupdate(ename)onemptotest;可以控制到列(还有insert)2021/2/437用户管理提示密码失效:2021/2/437用户管理权限回收REVOKE权限ONschema.tableFROM用户|-REVOKEselectONscott.empFROMtest;查看权限select*fromuser_sys_privs;权限传递Grantcreatesessiontotestwithadminoption;(可以就可以实现权限传递)Q:如果权限sys->test->test1,这时断掉test的权限,test1还会有权限吗?A:在oracle9i是,答案是还会有。2021/2/438用户管理权限回收2021/2/438用户管理角色角色就是一堆权限的集合Createrolemyrole;Grantcreatetabletomyrole;Droprolemyrole;删除角色grantunlimitedtablespacetouser;2021/2/439用户管理角色2021/2/439用户管理grantconnect,resourcetouser;

然后,用户包括的权限:

CONNECT角色:--是授予最终用户的典型权利,最基本的

ALTERSESSION--修改会话

CREATECLUSTER--建立聚簇

CREATEDATABASELINK--建立数据库链接

CREATESEQUENCE--建立序列

CREATESESSION--建立会话

CREATESYNONYM--建立同义词

CREATEVIEW--建立视图RESOURCE角色:--是授予开发人员的

CREATECLUSTER--建立聚簇

CREATEPROCEDURE--建立过程

CREATESEQUENCE--建立序列

CREATETABLE--建表

CREATETRIGGER--建立触发器

CREATETYPE--建立类型2021/2/440用户管理grantconnect,resourceto用户管理从dba_sys_privs里可以查到:

SQL>selectgrantee,privilegefromdba_sys_privswheregrantee='RESOURCE'orderbyprivilege2021/2/441用户管理从dba_sys_privs里可以查到:

SQL>序列createsequencemyseqstartwith1incrementby2ordercache20selectmyseq.nextvalfromdualselectmyseq.currvalfromdual必须现有nextval才有currval.2021/2/442序列createsequencemyseqstart序列createsequencemyseq1startwith1incrementby1cyclemaxvalue3nocache这样到3之后就会从1重新开始altersequencemyseqincrementby5不能改变当前值,但是可以改变增量。2021/2/443序列createsequencemyseq1start同义词很方便的操作不同用户下的对象能使2个不同的应用程序使用不同的名字指向同一张表使用不同的用户指向同一张表。2021/2/444同义词很方便的操作不同用户下的对象2021/2/444同义词createsynonymuserinfoforzs.userinfo (这样创建的同义词是私有的,只有创建者才能用)dropsynonymuserinfo如果在本用户中已有名字,再创建同义词,会报错名称已由现有对象使用!2021/2/445同义词createsynonymuserinfofor同义词createpublicsynonymuserinfoforzs.userinfo(这样创建的同义词才是公有的)droppublicsynonymuserinfo如果在本用户中已经有名字,再创建同义词,会遵循就近一致的原则。2021/2/446同义词createpublicsynonymuseri视图视图以经过定制的方式显示来自一个或多个表的数据视图可以视为“虚拟表”或“存储的查询”创建视图所依据的表称为“基表”视图的优点有:提供了另外一种级别的表安全性隐藏的数据的复杂性简化的用户的SQL命令隔离基表结构的改变通过重命名列,从另一个角度提供数据2021/2/447视图视图以经过定制的方式显示来自一个或多个表的数据2021/视图create[orreplace]view[schema.]view[alias[,alias]...]assubquery;descmyview;dropviewmyview;2021/2/448视图create[orreplace]view[sc视图创建试图createorreplaceviewmyuserasselect*fromuserinfoorderbyiddesc2021/2/449视图创建试图2021/2/449视图创建试图带输出效果createorreplaceviewmyuser(编号,名称,成绩)asselect*fromuserinfoorderbyiddesc2021/2/450视图创建试图带输出效果202视图创建试图带输出效果createorreplaceviewmyuser(编号,名称,成绩)asselectid,username,score+20fromuserinfoorderbyiddesc2021/2/451视图创建试图带输出效果202视图更新试图: 可以更新试图 可更新试图中不能包含分组,groupby子句,distinct,rownum等。 insertintomyuser(编号,名称,成绩)values(103,'ddd',198)2021/2/452视图更新试图:2021/2/452视图withreadonly只读试图: createorreplaceviewmyuser(编号,名称,成绩) as selectid,username,scorefromuserinfoorderbyiddescwithreadonly2021/2/453视图withreadonly只读试图:2021/2/4联接视图2-1StudnoStudnameSubmrksSubno1Rob4522James3343Jesica404SubnoSubname2English4Maths5ScienceStud_detailsSub_detailsStudnoStudnameSubmrksSubname1Rob45English2James33Maths3Jesica40MathsCREATEVIEWStud_sub_viewASSELECTStudno,Studname,Submrks,SubnameFROMStud_details,Sub_DetailsWHEREStud_details.Subno=Sub_details.Subno;Stud_sub_view联接视图542021/2/454联接视图2-1StudnoStudnameSubmrksS视图中可以使用单行函数、分组函数和表达式使用DROPVIEW语句删除视图视图中的函数CREATEVIEWitem_viewASSELECTitemcode,LOWER(itemdesc)item_descFROMitemfile;SQL>DROPVIEWtoys_view;2021/2/455视图中可以使用单行函数、分组函数和表达式视图中的函数CREA约束的主要功能是保证表中的数据合法性,按照约束的分类,一共有五种约束,非空约束、唯一约束、主键约束、外键约束、检查约束、约束2021/2/456约束的主要功能是保证表中的数据合法性,按照约束的分类,一共有非空约束简称NK

createtablea(

idnumber,

namevarchar(2)notnull

);约束2021/2/457非空约束简称NK

约束2021/2/457唯一约束uniqueUK唯一约束指的是每一个列上的数据是不允许重复的,例如email下面建表createtablea(idnumber,namevarchar2(100)notnull,emailvarchar2(50)unique);约束2021/2/458唯一约束约束2021/2/458主键约束PrimaryKeyPK主键约束=非空约束+唯一约束,在之前设置唯一约束的时候发现可以为null值,而如果使用了主键约束之后则不能为空,而主键一般作为数据的唯一的一个标记出现,例如人员ID范例建立主键约束createtablea(idnumberprimarykey,namevarchar2(50)notnull);约束2021/2/459主键约束PrimaryKeyPK约束2021/2/459检查约束checkCK检查约束指的是为表中的数据增加一些过来条件设置年龄的时候范围是:0-200;设置性别的时候应该是:男、女、中;范例设置检查约束

createtablea(idnumber,namevarchar2(50)notnull,sexvarchar2(10)notnull,agenumber(3),constraintPK_idprimarykey(id),constraintCK_sexcheck(sexin('男','女','中')),constraintCK_agecheck(agebetween0and150));约束2021/2/460检查约束约束2021/2/460主外键约束之前的四种约束都是在单张表中进行的,而主外键是在两张表中进行的,这两张表是存在父子关系的,也就是子表中的某个字段的取值范围由父表所决定。

例如现在要求表示出一种关系,每一个人有多本书,应该定义两种数据表member(主)book(子)约束2021/2/461主外键约束约束2021/2/461createtablemember(

midnumber,

namevarchar2(50)notnull,

constraintPK_midprimarykey(mid)

);

createtablebook(

bidnumber,

titlevarchar2(50)notnull,

midnumber,

constraintPK_bidprimarykey(bid),

constraintfk_midforeignkey(mid)referencesmember(mid)

);约束2021/2/462createtablemember(

midnumbe删除父表之前,必须删除字表oracle之中专门提供一个强制性删除表的操作,

在删除的时候加上一句cascadeconstraintdroptablemembercascadeconstraint;或者droptablemembercascadeconstraintpurge;约束2021/2/463删除父表之前,必须删除字表约束2021/2/463索引3-1索引是与表相关的一个可选结构用以提高SQL语句执行的性能减少磁盘I/O使用CREATEINDEX语句创建索引在逻辑上和物理上都独立于表的数据Oracle自动维护索引2021/2/464索引3-1索引是与表相关的一个可选结构2021/2/464索引3-2B*树索引位图索引2021/2/465索引3-2B*树索引2021/2/465索引3-2索引有各种类型,除了标准索引外,还有一些特殊类型的索引:索引的类型基于函数的索引反向键索引位图索引唯一索引组合索引2021/2/466索引3-2索引有各种类型,除了标准索引外,还有一些特殊类型索引3-3SQL>CREATEUNIUQE|BITMAPINDEX<schema>.<index_name>ON<schema>.<table_name>(<column_name>|<expression>ASC|DESC,

<column_name>|<expression>ASC|DESC,...)

TABLESPACE<tablespace_name>

STORAGE<storage_settings>

LOGGING|NOLOGGING

COMPUTESTATISTICS

NOCOMPRESS|COMPRESS<nn>

NOSORT|REVERSE

PARTITION|GLOBALPARTITION<partition_setting>2021/2/467索引3-3SQL>CREATEUNIUQE|BIT索引3-3相关说明1)UNIQUE|BITMAP:指定UNIQUE为唯一值索引,BITMAP为位图索引,省略为B-Tree索引。

2)<column_name>|<expression>ASC|DESC:可以对多列进行联合索引,当为expression时即“基于函数的索引”

3)TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)

4)STORAGE:可进一步设置表空间的存储参数

5)LOGGING|NOLOGGING:是否对索引产生重做日志(对大表尽量使用NOLOGGING来减少占用空间并提高效率)

6)COMPUTESTATISTICS:创建新索引时收集统计信息

7)NOCOMPRESS|COMPRESS<nn>:是否使用“键压缩”(使用键压缩可以删除一个键列中出现的重复值)

8)NOSORT|REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值

9)PARTITION|NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区2021/2/468索引3-3相关说明2021/2/468索引3-3SQL>CREATEINDEXitem_indexONitemfile(itemcode)TABLESPACEindex_tbs;创建标准索引重建索引SQL>ALTERINDEXitem_indexREBUILD;删除索引SQL>DROPINDEXitem_index;2021/2/469索引3-3SQL>CREATEINDEXitem_i唯一索引SQL>CREATEUNIQUEINDEXitem_indexONitemfile(itemcode);唯一索引确保在定义索引的列中没有重复值Oracle自动在表的主键列上创建唯一索引使用CREATEUNIQUEINDEX语句创建唯一索引2021/2/470唯一索引SQL>CREATEUNIQUEINDEXi组合索引SQL>CREATEINDEXcomp_indexONitemfile(p_category,itemrate);组合索引是在表的多个列上创建的索引索引中列的顺序是任意的如果SQL语句的WHERE子句中引用了组合索引的所有列或大多数列,则可以提高检索速度2021/2/471组合索引SQL>CREATEINDEXcomp_ind反向键索引反转索引列键值的每个字节通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上创建索引时使用REVERSE关键字反向键索引SQL>CREATEINDEXrev_indexONitemfile(itemcode)REVERSE;SQL>ALTERINDEXrev_indexREBUIDNOREVERSE;2021/2/472反向键索引反转索引列键值的每个字节反向键索引SQL>CRE位图索引SQL>CREATEBITMAPINDEXbit_indexONorder_master(orderno);位图索引适合创建在低基数列上位图索引不直接存储ROWID,而是存储字节位到ROWID的映射减少响应时间节省空间占用2021/2/473位图索引SQL>CREATEBITMAPINDEXb索引中的分区可以将索引存储在不同的分区中与分区有关的索引有三种类型:局部分区索引-在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致全局分区索引-在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关全局非分区索引-在分区表上创建的全局普通索引,索引没有被分区2021/2/474索引中的分区可以将索引存储在不同的分区中2021/2/474获取索引的信息SQL>SELECTINDEX_NAME,TABLE_NAME,COLUMN_NAMEFROMUSER_IND_COLUMNSORDERBYINDEX_NAME,COLUMN_POSITION;与索引有关的数据字典视图有:USER_INDEXES-用户创建的索引的信息USER_IND_PARTITIONS-用户创建的分区索引的信息USER_IND_COLUMNS-与索引相关的表列的信息2021/2/475获取索引的信息SQL>SELECTINDEX_NAME,Oracle9i的安装和卸载通过运行OracleUniversalInstaller来安装和卸载Oracle数据库选择Oracle9iDatabase.0来安装数据库服务器。选择Oracle9iClient.0来安装Oracle客户端启动UniversalInstaller,选择“卸装产品…”,选中要卸载的组件2021/2/476Oracle9i的安装和卸载通过运行OracleUni使用Oracle数据库的开发流程服务器端安装Oracle服务器软件创建数据库(安装时自动创建)配置监听器(安装时自动配置)启动Oracle实例(自动启动服务)安装Oracle客户端软件配置网络服务名以新用户登录Oracle提交SQL查询创建新用户并授权创建用户表空间客户端2021/2/477使用Oracle数据库的开发流程服务器端安装OraclWindows中的Oracle服务3-1Oracle9i的每个实例在Windows中都作为一项服务启动服务是在Windows注册表中注册的可执行进程,由Windows操作系统管理“服务”对话框中的各项Oracle服务如图所示:2021/2/478Windows中的Oracle服务3-1OracleWindows中的Oracle服务3-2OracleHOME_NAMETNSListener该服务启动数据库服务器的监听器,监听器接受来自客户端应用程序的连接请求若监听器未启动,则客户端将无法连接到数据库服务器OracleServiceSID该服务启动系统标识符为SID的数据库实例,其中SID是在安装Oracle9i时输入的数据库名称OracleHOME_NAMEAgentOracle企业管理器组件智能代理服务,此智能代理用于执行作业和监控Oracle服务或对象的性能在使用Oracle管理服务器网络的环境中必须启动此服务2021/2/479Windows中的Oracle服务3-2OracleWindows中的Oracle服务3-3OracleHOME_NAMEHTTPServer该服务用于启动OracleHTTP服务器,它提供文档信息、基于Web的企业管理器和iSQL*Plus等服务OracleHOME_NAMEManagementServer该服务启动Oracle管理服务器,它用于维护管理控制台对各个被管理服务器节点之间的集中的、智能的和分布式的控制该服务必须经过企业管理器配置向导配置完成后才创建2021/2/480Windows中的Oracle服务3-3Oracle总结Oracle服务器由Oracle数据库和Oracle实例组成Oracle实例由系统全局区内存结构和用于管理数据库的后台进程组成Oracle中用于访问数据库的主要查询工具有SQL*Plus、iSQL*Plus和PL/SQLOracle企业管理器是用于管理、诊断和调整多个数据库的工具Oracle中的SYSTEM用户和SYS用户具有管理权限,而SCOTT用户只有基本的权限Oracle服务在Windows注册表中注册,并由Windows操作系统管理2021/2/481总结Oracle服务器由Oracle数据库和Oracl 谢谢大家! 谢谢大家!Oracle从入门到精通-经典Oracle从入门到精通-经典Oracle从入门到精通-经典课程地位.Net&C#SQLServerXMLSPMASP.NET&WebServiceOracleUMLSPR:ComputerBaseHTML&JavaScriptSQLServerBaseOOP&JavaBaseCSTBJSP/ServletEJB&WebServiceWinFormsStruts&JSFTesting&SQALinux2021/2/42Oracle从入门到精通-经典Oracle从入门到精通-经典课程地位.Net&C#SQLServerXMLSPMASP.NET&WebServiceOracleUMLSPR:ComputerBaseHTML&JavaScriptSQLServerBaseOOP&JavaBaseCSTBJSP/ServletEJB&WebServiceWinFormsStruts&JSFTesting&SQALinux2021/2/484课程地位.Net&C#SQLServerXMLSPMA课程目标理解Oracle数据库体系结构熟练掌握SQL命令和SQL函数使用Oracle的各种数据库对象使用PL/SQL编写存储过程掌握基本的数据库配置和管理2021/2/485课程目标理解Oracle数据库体系结构2021/2/43目标

了解Oracle体系结构的各种组件掌握Oracle中的基本用户管理了解Oracle的工具了解Oracle的安装和卸载2021/2/486目标了解Oracle体系结构的各种组件2021/2/Oracle数据库简介2-1对象关系型的数据库管理系统(ORDBMS)在管理信息系统、企业数据处理、因特网及电子商务等领域使用非常广泛在数据安全性与数据完整性控制方面性能优越跨操作系统、跨硬件平台的数据互操作能力Oracle数据库的主要特点支持多用户、大事务量的事务处理数据安全性和完整性控制支持分布式数据处理可移植性2021/2/487Oracle数据库简介2-1对象关系型的数据库管理系统Oracle数据库简介2-2Oracle数据库基于客户端/服务器技术客户端应用程序通过向服务器请求并接收信息的方式与数据库进行交互。它充当用户与数据库之间的接口请求响应数据库服务器对数据库表进行最佳管理,处理多个客户端对同一数据的并发访问。全面地保持数据完整性,并控制数据库访问权限等安全性需求网络服务器2021/2/488Oracle数据库简介2-2Oracle数据库基于客户Oracle9i体系结构Oracle服务器Oracle数据库Oracle实例Oracle数据库是一个数据的集合,该集合被视为一个逻辑单元管理数据库的后台进程和内存结构的集合称为Oracle实例

数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制Oracle服务器提供开放、全面和综合的信息管理,它由Oracle数据库和Oracle实例组成2021/2/489Oracle9i体系结构Oracle服务器OraclOracle主要组件实例内存结构后台进程

PMONSMONDBWRLGWRCKPT其他

数据库数据文件数据文件数据文件控制文件控制文件日志文件日志文件参数文件归档日志文件口令文件SGA用户进程服务器进程PGA共享池数据缓冲区日志缓冲区2021/2/490Oracle主要组件实例PMONSOracle实例Oracle实例是后台进程和内存结构的集合Oracle实例系统全局区后台进程分配启动2021/2/491Oracle实例Oracle实例是后台进程和内存结构的Oracle数据库Oracle数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区Oracle数据库包括逻辑结构和物理结构物理结构逻辑结构物理结构包含数据库中的一组操作系统文件。逻辑结构指数据库创建之后形成的逻辑概念之间的关系Oracle数据库2021/2/492Oracle数据库Oracle数据库由操作系统文件组成,会话会话是用户与Oracle服务器的单个连接当用户与服务器建立连接时创建会话当用户与服务器断开连接时关闭会话启动Oracle实例使用SQL*Plus连接至数据库创建用户进程创建服务器进程提交SQL查询2021/2/493会话会话是用户与Oracle服务器的单个连接启动OraOracle实例内存结构系统全局区(SGA)程序全局区(PGA)Oracle实例启动时分配系统全局区当服务器进程启动时分配程序全局区Oracle的内存结构包含以下两个内存区:内存区942021/2/494Oracle实例内存结构系统全局区(SGA)程序全局区系统全局区2-1数据库信息存储于SGA,由多个数据库进程共享共享池数据缓冲区日志缓冲区SGA的内存结构2021/2/495系统全局区2-1数据库信息存储于SGA,由多个数据库进程共系统全局区2-2共享池共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域共享池由库缓存和数据字典缓存组成。共享池的大小直接影响数据库的性能。数据缓冲区用于存储从磁盘数据文件中读入的数据,所有用户共享。服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。数据缓冲区的大小对数据库的读取速度有直接的影响。日志缓冲区日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。相对来说,日志缓冲区对数据库的性能影响较小。2021/2/496系统全局区2-2共享池共享池是对SQL、PL/SQL程序程序全局区程序全局区(PGA)包含单个服务器进程所需的数据和控制信息PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle数据库连接的用户进程所需的信息PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放2021/2/497程序全局区程序全局区(PGA)包含单个服务器进程所需的数据和Oracle实例进程结构Oracle实例有几种不同类型的进程,它们是:实例进程用户进程服务器进程后台进程用户进程是一个需要与Oracle服务器进行交互的程序。当用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程服务器进程用于处理连接到该实例的用户进程的请求。当用户连接至Oracle数据库实例创建会话时,即产生服务器进程后台进程是Oracle数据库为了保持最佳系统性能和协调多个用户请求而设置的。Oracle实例启动时即创建一系列后台进程2021/2/498Oracle实例进程结构Oracle实例有几种不同类型的后台进程2-1后台进程PMON实例的各种后台进程是:SMONDBWRLGWRCKPT其他2021/2/499后台进程2-1后台进程PMON实例的各种后台进程是:SMO后台进程2-2PMON进程监控进程清理出现故障的进程。释放所有当前挂起的锁定。释放故障进程使用的资源。SMON系统监控进程在实例失败之后,重新打开数据库时自动恢复实例。整理数据文件的自由空间,将相邻区域结合起来。释放不再使用的临时段。DBWR数据写入进程管理数据缓冲区,将最近使用过的块保留在内存中。将修改后的缓冲区数据写入数据文件中。LGWR日志写入进程负责将日志缓冲区中的日志数据写入日志文件。系统有多个日志文件,该进程以循环的方式将数据写入文件。2021/2/4100后台进程2-2PMON进程监控进程清理出现故障的进程。Oracle物理组件物理组件就是Oracle数据库所使用的操作系统物理文件。物理文件可分为三类:物理组件数据文件控制文件日志文件数据文件用于存储数据库数据,如表、索引数据等。控制文件是记录数据库物理结构的二进制文件。日志文件记录对数据库的所有修改信息,用于故障恢复2021/2/4101Oracle物理组件物理组件就是Oracle数据库所使用的Oracle逻辑组件3-1数据库的逻辑结构是从逻辑的角度分析数据库的组成。Oracle的逻辑组件包括:数据库表空间段区数据块

模式2021/2/4102Oracle逻辑组件3-1数据库的逻辑结构是从逻辑的角度Oracle逻辑组件3-2表空间是数据库中最大的逻辑单位,一个Oracle数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。表空间的大小等于构成该表空间的所有数据文件大小之和。CREATETABLESPACEtablespacenameDATAFILE‘filename’[SIZEinteger[K|M]][AUTOEXTEND[OFF|ON]];创建表空间的语法是:2021/2/4103Oracle逻辑组件3-2表空间是数据库中最大的逻辑单位Oracle逻辑组件3-2createtablespacetest_datadatafile'D:\oracle\oradata\Oracle9i\user_data.dbf'size50mautoextendonnext50mmaxsize20480mextentmanagementlocal;2021/2/4104Oracle逻辑组件3-2createtablespaOracle逻辑组件3-3段段是构成表空间的逻辑存储结构,段由一组区组成。按照段所存储数据的特征,将段分为四种类型,即数据段、索引段、回退段和临时段。区区为段分配空间,它由连续的数据块组成。当段中的所有空间已完全使用时,系统自动为该段分配一个新区。区不能跨数据文件存在,只能存在于一个数据文件中。数据块数据块是Oracle服务器所能分配、读取或写入的最小存储单元。Oracle服务器以数据块为单位管理数据文件的存储空间。模式模式是对用户所创建的数据库对象的总称。模式对象包括表、视图、索引、同义词、序列、过程和程序包等。2021/2/4105Oracle逻辑组件3-3段段是构成表空间的逻辑存储结构Oracle逻辑组件3-42021/2/4106Oracle逻辑组件3-42021/2/424Oracle网络配置2-1Oracle产品安装完成后,服务器和客户端都需要进行网络配置才能实现网络连接。服务器端配置监听器,客户端配置网络服务名。tnsnames.oraOracle客户端listener.oraOracle服务器2021/2/4107Oracle网络配置2-1Oracle产品安装完成后,服Oracle网络配置2-2服务器端监听器配置信息包括监听协议、地址及其他相关信息。配置信息保存在名为listener.ora的文件中。在安装服务器软件时自动配置一个监听器客户端的网络服务名配置信息包括服务器地址、监听端口号和数据库SID等,与服务器的监听器建立连接。配置信息保存在名为tnsnames.ora的文件中Oracle中的NetConfigurationAssistant和NetManager工具都能用来配置监听器和网络服务名2021/2/4108Oracle网络配置2-2服务器端监听器配置信息包括监听Oracle查询工具Oracle查询工具SQL*PlusiSQL*PlusPL/SQLOracle提供的工具非常容易使用。Oracle的查询工具包括:SQL*Plus是Oracle最常用的工具之一,用于接受和执行SQL命令以及PL/SQL块。iSQL*Plus可以执行能用SQL*Plus完成的所有任务。该工具的优势在于能通过浏览器访问它。

PL/SQL是SQL的扩展。PL/SQL结合了SQL语言的数据操纵能力和过程语言的流程控制能力2021/2/4109Oracle查询工具Oracle查询工具SQL*PluOracle企业管理器Oracle企业管理器为管理员提供了图形化的用户界面,并集成了管理数据库的工具2021/2/4110Oracle企业管理器Oracle企业管理器为管理员Oracle默认用户只有用合法的用户帐号才能访问Oracle数据库Oracle有几个默认的数据库用户

Oracle默认用户SYSSYSTEMSCOTT数据库中所有数据字典表和视图都存储在SYS模式中。SYS用户主要用来维护系统信息和管理实例。SYSTEM是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理数据库用户、权限和存储等SCOTT用户是Oracle数据库的一个示范帐户,在数据库安装时创建2021/2/4111Oracle默认用户只有用合法的用户帐号才能访问Oracl创建新用户要连接到Oracle数据库,就需要创建一个用户帐户每个用户都有一个默认表空间和一个临时表空间CREATEUSER命令用于创建新用户CREATEUSERusernameIDENTIFIEDBYpassword[DEFAULTTABLESPACEtablespace][TEMPORARYTABLESPACEtablespace];CREATEUSER命令的语法是:CREATEUSERMARTINIDENTIFIEDBYmartinpwdDEFAULTTABLESPACEUSERSTEMPORARYTABLESPACETEMP;创建一个名称为martin的用户,其密码为martinpwd2021/2/4112创建新用户要连接到Oracle数据库,就需要创建一个用户帐户授予权限3-1权限指的是执行特定命令或访问数据库对象的权利权限有两种类型,系统权限和对象权限系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作角色是一组相关权限的组合,可以将权限授予角色,再把角色授予用户,以简化权限管理。2021/2/4113授予权限3-1权限指的是执行特定命令或访问数据库对象的权利授予权限3-2GRANT命令可用于为用户分配权限或角色GRANTCONNECTTOMARTIN;CONNECT角色允许用户连接至数据库,并创建数据库对象GRANTRESOURCETOMARTIN;RESOURCE角色允许用户使用数据库中的存储空间GRANTCREATESEQUENCETOMARTIN;此系统权限允许用户在当前模式中创建序列,此权限包含在CONNECT角色中2021/2/4114授予权限3-2GRANT命令可用于为用户分配权限或角色授予权限3-3授予用户MARTIN操作TEST表对象的权限GRANTSELECTONTESTTOMARTIN;允许用户查询TEST表的记录GRANTUPDATEONTESTTOMARTIN;允许用户更新TEST表中的记录GRANTALLONTESTTOMARTIN;允许用户插入、删除、更新和查询TEST表中的记录2021/2/4115授予权限3-3授予用户MARTIN操作TEST表对象的更改和删除用户ALTERUSER命令可用于更改口令ALTERUSERMARTINIDENTIFIEDBYmartinpass;修改MARTIN用户的密码DROPUSER命令用于删除用户DROPUSERMARTINCASCADE;删除MARTIN用户模式2021/2/4116更改和删除用户ALTERUSER命令可用于更改口令AL用户管理Connectscott/tigerConnectSystem/sysassysdba断开链接disconnect解锁:alteruserscottaccountunlock;显示当前用户:showuser;查看当前用户下所有对象:select*fromtab;跨用户访问:select*fromscott.emp;2021/2/4117用户管理Connectscott/tiger2021/2/用户管理创建用户:createuserzsidentifiedbyzs;dropuserzs;dropuserzscascade;创建session权限:Grant权限to用户grantcreatesessiontozs;Oracle提供了n种角色:ConnectResourceDBAGrantconnect,resourcetozs;但是仍然不能创建表,是因为还没有表空间的权限。(10G已经有了!)2021/2/4118用户管理创建用户:2021/2/436用户管理提示密码失效:ALTERUSERtestPASSWORDexpire;对象授权:GRANT权限(select、update、insert、delete)ONschema.tableTO用户|-GRANTselectONscott.empTOtest;|-Grantallonscott.emptotest;--将表相关的所有权限付给test|-Grantupdate(ename)onemptotest;可以控制到列(还有insert)2021/2/4119用户管理提示密码失效:2021/2/437用户管理权限回收REVOKE权限ONschema.tableFROM用户|-REVOKEselectONscott.empFROMtest;查看权限select*fromuser_sys_privs;权限传递Grantcreatesessiontotestwithadminoption;(可以就可以实现权限传递)Q:如果权限sys->test->test1,这时断掉test的权限,test1还会有权限吗?A:在oracle9i是,答案是还会有。2021/2/4120用户管理权限回收2021/2/438用户管理角色角色就是一堆权限的集合Createrolemyrole;Grantcreatetabletomyrole;Droprolemyrole;删除角色grantunlimitedtablespacetouser;2021/2/4121用户管理角色2021/2/439用户管理grantconnect,resourcetouser;

然后,用户包括的权限:

CONNECT角色:--是授予最终用户的典型权利,最基本的

ALTERSESSION--修改会话

CREATECLUSTER--建立聚簇

CREATEDATABASELINK--建立数据库链接

CREATESEQUENCE--建立序列

CREATESESSION--建立会话

CREATESYNONYM--建立同义词

CREATEVIEW--建立视图RESOURCE角色:--是授予开发人员的

CREATECLUSTER--建立聚簇

CREATEPROCEDURE--建立过程

CREATESEQUENCE--建立序列

CREATETABLE--建表

CREATETRIGGER--建立触发器

CREATETYPE--建立类型2021/2/4122用户管理grantconnect,resourceto用户管理从dba_sys_privs里可以查到:

SQL>selectgrantee,privilegefromdba_sys_privswheregrantee='RESOURCE'orderbyprivilege2021/2/4123用户管理从dba_sys_privs里可以查到:

SQL>序列createsequencemyseqstartwith1incrementby2ordercache20selectmyseq.nextvalfromdualselectmyseq.currvalfromdual必须现有nextval才有currval.2021/2/4124序列createsequencemyseqstart序列createsequencemyseq1startwith1incrementby1cyclemaxvalue3nocache这样到3之后就会从1重新开始altersequencemy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论