欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Oracle基础培训.ppt

    • 资源ID:6513463       资源大小:689.50KB        全文页数:92页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Oracle基础培训.ppt

    Oracle基础,2023/11/8,Contents,2023/11/8,基本概念,数据库:是一个数据集合,我们大多数情况下讲的数据库概念不仅是指物理数据,还指内存、进程对象的组合。ORACLE数据库都将数据存储在文件中,在其内部,数据库结构提供了数据对文件的逻辑映射,允许不同类型的数据分开存放。这些逻辑划分称为表空间。表空间(Tablespace):是数据库的逻辑划分,每个数据库至少有一个表空间(system表空间)。数据文件(DataFile):每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件。建立新表空间需要建立新的数据文件。实例(Instance):也称为服务器(server),是存取和控制数据库的软件机制,它由系统全局区SGA和后台进程组成。,2023/11/8,Oracle的物理结构,数据文件是物理存储ORACLE数据库数据的文件,每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的所有数据文件包含了全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中每一个数据文件只与一个数据库联系一个表空间可包含一个或多个数据文件,2023/11/8,Oracle的物理结构,日志文件每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所做的修改,所以对数据库做的全部修改是记录在日志中。日志文件的主要作用是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),可以在不同磁盘上维护两个或多个日志副本。日志文件中的信息仅在系统故障或介质故障时用来恢复数据库,2023/11/8,Oracle的物理结构,控制文件数据库名。数据库数据文件和日志文件的名字和位置。数据库建立日期。控制文件用于标识数据库和日志文件数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件,2023/11/8,Oracle的物理结构,参数文件(init.ora)设置SGA的大小。设置数据库的全部缺省值。设置数据库的范围。在数据库建立时定义数据库的物理属性。指定控制文件名和路径。通过调整内存结构,优化数据库性能。,2023/11/8,系统全局区,共享池共享SQL区和数据字典区组成,参数shared_pool_size确定共享池大小数据块缓冲区用于存储从数据文件中读出的数据DB_BLOCK_SIZE确定数据块的大小DB_BLOCK_BUFFERS确定数据块的数目DB_BUFFERS=DB_BLOCK_BUFFERSDB_BLOCK_SIZE=物理内存(1525)%日志缓冲区以记录项的形式备份数据库缓冲区中被修改的缓冲块,由参数LOG_BUFFER确定字典缓冲区用于存放数据字典信息行SGA设置大小总原则SGA=DB_BLOCK_BUFFERSDB_BLOCK_SIZE+SHARE_POOL_SIZE+SORT_AREA_SIZE+1M+3DB_BLOCK_SIZE(CPUs+2)PARALELL_MAX_SREVERS,2023/11/8,逻辑结构,ORACLE的逻辑结构是由一个或多个表空间组成,一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(tablespace)。一个表空间可将相关的逻辑结构组合在一起。一个表空间由一组分类段组成。一个段由一组范围组成。一个范围由一批数据库块组成。一个数据库块对应一个或多个物理块。,2023/11/8,表,表是数据库的最基本的逻辑结构,一切数据都存放在表中,一个ORACLE数据库就是由若干个数据表组成。其它数据库对象都是为了用户很好地操作表中的数据。表是关系模型中反映实体与属性关系的二维表格,它由列和行组成,通过行与列的关系,表达出了实体与属性的关系列名:列的名称。长度:该列所能容纳的最大数据位数。类型:该列存储的数据类型,常用数据类型如0.0.0 0.所示。关键字:该列能唯一表示一行内容,则称该列为关键字。非空列:该列值是不能为空的。,2023/11/8,表,删除表数据Delete:删除数据时,数据库需要写日志,ORACLE数据库还需要占用回滚段,每次事务越大,对数据库的冲击越大,所以在删除或者更新数据时,一定要注意控制事务的大小Truncate:删除表中所有数据,并回收空间。,2023/11/8,删除表,删除表命令为DROP,利用DROP命令删除表注意:删除表中全部行。删除表中全部索引。如果它不是聚集的成分,系统将收回该表的所有存储空间。如果该表为视图的基表,或在存储过程、函数或包中被引用,ORACLE将使这些对象无效但没有被删除,在表恢复后,这些对象仍可使用。,2023/11/8,建表约束,非空完整性约束唯一完整性约束主码完整性约束check完整性约束检查处理 sex check(m,w)限制插入sex字段只能是检查中的两种引用完整性约束。,2023/11/8,建表约束,引用完整性约束时需要注意以下几点先建主表,后从表。从表引用的必须是主表的主码或定义了唯一性约束的列。从表的外来码值必须匹配与主表的引用码的值当删除主表记录时,从表指定了ondelete cascade子句,连带删除从表记录,否则,若从表中有对应记录,则不能删除主表记录。,2023/11/8,视图(View),数据中表的窗口,在表上的查询所形成的一个数据集体。通过视图,你将看到你所需要的信息,而排除其它不关心的内容。主要作用如下将表中所需要的列和行选取出来传递给用户。不是真正将数据重新复制一遍,不占用存储空间。不仅在表的基础上建立,还可在视图的基础之上再建立视图,2023/11/8,视图(View),建立视图主要基于保护数据安全,防止机密数据泄露。简化数据查询方式,建立有效的查询。保持数据独立性,保证程序不会随着数据的位置变化、名称变化而需要修改。,2023/11/8,索引(Index),索引是与表相关的一种选择结构。索引可建立在一表的一列或多列上,由ORACLE自动维护和使用。加快查询速度。确保唯一性特征。索引是一种数据库对象,并不改变表的逻辑结构,而是在物理存储结构上增加一些辅助信息,以提高查询速度。当表中记录增加或删除时,索引结构均要发生变化,因此,当有大量数据装入数据库时,应该先装入数据,后建立索引,以提高数据装入速度。只有当按指定的索引列的值查找或按索引列的顺序存取表时,才可利用索引提高性能。,2023/11/8,B-tree索引,适合于大量的增、删、改操作适合高基数的列(唯一值多)典型的树状结构每个节点都是数据块大多都在物理上一层、两层或三层不定。叶子块数据是排序的,从左到右递增在分支块或根块中放的是索引的范围。,2023/11/8,位图索引,适合于决策支持系统(OLAP);做update操作时代价非常高;基数比较少的时候才适合建位图索引,2023/11/8,不会使用索引的情况(一),存在数据类型隐形转换的select*from emp where emp_id=123;-emp_id是number型列上有数学运算的select*from emp where salary*2 9i以上版本可用,2023/11/8,不会使用索引的情况(二),字符串连接(|)的,如:select*from emp where first_name|s=DONALD;IS NULL 与 IS NOT NULL 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。函数的索引 日期类型也是很容易用到的,而且在SQL语句中会使用to_char函数以查询具体的的范围日期。如:select*from emp where TO_CHAR(birth_day,YYYY)=2003;如果频繁使用类似语句,可以建立基于此函数的索引如:CREATE INDEX Ind_emp_birth ON emp(to_char(birth_day,YYYY);,2023/11/8,组合索引,即同时包含两个或两个以上的列的索引当使用基于规则的优化器(RBO)时,只有组合索引的前导列出现在SQL语句的where子句时,才会使用到该索引;A、B、C在使用oracle9i之前基于成本的优化器(CBO)时,只有组合索引的前导列出现在SQL语句的where子句时,才会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径;从Oracle9i起,Oracle引入了一种新的索引扫描方式索引跳跃扫描(index skip scan),这种扫描方式只有基于成本的优化器(CBO)才能使用。这样,当SQL语句的where子句中即使没有组合索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,Oracle就会使用该方式扫描组合索引;,2023/11/8,执行计划,按F5查看 执行计划相关参数基数(Card):指计划中这一步所处理的行数。耗费(Cost):指cbo中这一步耗费的资源,这个值是相对值。字节(bytes):指cbo中这一步所处理的所有记录的字节数,是估算出来的一组值。,2023/11/8,数据扫描,全表扫描(Full Table Scans,FTS)oracle读取表中的所有行,并检查每一行是否满足语句的WHERE限制条件。一个多块读操作可以一次IO读取多块数据(db_block_multiblock_read_count参数设定),而不是一次只读取一个数据块,这极大的减少了IO总次数,提供系统的吞吐量,所以多块读的方法可以十分高效地实现全表扫描,而且只有在全表扫描的情况下才能使用多块读操作。使用FTS的前提条件:在较大的表上不建议使用全表扫描,除非取出数据量比较多,超过总量的5%10%。通过rowid存取行的ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID来存取数据可以快速定位到目标数据上,是oracle存取单行数据的最快方法。这种存取方法不会用到多块读操作,一次IO只能读取一个数据块。我们会经常在执行计划中看到该存取方法,如通过索引查询数据。,2023/11/8,数据扫描,索引扫描:先通过index查询到数据对应的rowid(对于非唯一索引可能返回多个rowid值),然后根据rowid直接从表中得到具体的数据,这种查找方式称为索引扫描。一个rowid唯一表示一行数据,该行对应的数据块是通过一次IO得到的,在这种情况下oracle只会读取一个数据库块。索引扫描由两步组成:扫描索引得到对应的rowid。通过找到的rowid从表中读出具体的数据。,2023/11/8,索引扫描:,每步都是单独的一次IO,对于索引,由于经常使用,绝大多数已经cache到内存中,所以第一步的IO经常是逻辑IO,即数据可以从内存中得到。但是对于第二步,如果表比较大,其数据不可能全在内存中,所以其IO很有可能是物理IO,这是一个机械操作,相对于逻辑IO来说,是机器费时间的。所以如果大表进行索引扫描,取出的数据如果大于总量的5%10%,使用索引扫描效率会下降。如果查询的数据全在索引中找到,就可以避免第二步操作,避免了不必要的IO,此时即使通过索引扫描取出的数据比较多,效率还是很高的。如果sql语句中对索引列进行排序,因为索引已经预先排好序了,那么在执行计划中不需要再对索引列进行排序。根据索引的类型以及where限制条件的不同,有4种类型的索引扫描:(1)索引唯一扫描(index unique scan);(2)索引范围扫描(index range scan);(3)索引全扫描(index full scan)(4)索引快速扫描(index fast full scan),2023/11/8,数据扫描,索引唯一扫描(index unique scan)通过唯一索引查找一个数值返回单个rowid,如果存在unique或primary key约束,oracle经常使用唯一性扫描。索引范围扫描(index range scan)使用index range scan的3种情况:(1)在唯一所列列上使用了range操作符(、=、=、between)。(2)在组合索引上只使用部分列进行查询,导致查询出多行。(3)对非唯一索引列上进行的任何查询。索引全扫描(index full scan)与全表扫描对应,也有相应的全索引扫描。索引快速扫描(index fast full scan)扫描索引中所有的数据块,与index full scan很类似,但是一个显著的区别就是它不对查询出的数据进行排序,即数据不是以排序顺序被返回。在这种存取方法中,可以使用多块读功能,也可以进行并行读入,以便获得最大吞吐量,缩短执行时间。,2023/11/8,同义词(Synonym),同义词是表、视图或其它数据库实体的一个别名。可以用与存取表、视图等实体同样的方法来存取别名。简单性(用户名.表名同义词名)。表的独立性(只需修改同义词的定义,避免修改大量应用程序)。,2023/11/8,序列(Sequence),序列是一个数据库对象,利用它可以生成唯一的整数,序列的值是由ORACLE程序自动生成。创建序列:SQLcreate sequence SEQ_T increment by 10 start with 10 maxvalue 1000 cycle;上例说明:increment by 10 增量值为10。start with 10 指定生成的第一个序列号为10。maxvalue 1000 指定序列可生成的最大值。cycle 序列上升到最大值1000后,继续由开始值10开始生成。引用序列:序列当前值:SEQ_T.currval 序列下一个值:SEQ_T.nextval,2023/11/8,数据库链(Database Link),数据库链是本地数据库中的一个对象,利用它可以存取远程数据库上的对象。在远程表或视图之后附加db链名,即可在SQL语句中引用远程表或视图。有专用数据库链和公用数据库链之分,专用数据库链仅为建立者使用;公用数据库链必须用关键字public定义,公用数据库链可为全部用户使用create database link USER2(连接名字,利用该名字就可以直接上数据库)using USER2(服务名称,即在本地的net manager中配置的连接远程数据库的服务名)connect to SCOTT1(连接远程数据库时的用户名)identified by TIGER1(密码),2023/11/8,数据字典,ORACLE数据库的最重要的部分之一,是由一组只读的表及其视图所组成。这些表和视图是数据库被建立同时由数据库系统建立起来的,起着系统状态的目录表的作用。数据字典描述表、列、索引、用户、访问权以及数据库中的其它实体,当其中的一个实体被建立、修改或取消时,数据库将自动修改数据字典。因此,数据字典总是包含着数据库的当前描述。数据字典提供有关该数据库的信息,可提供的信息如下:,ORACLE用户的名字。每一个用户所授的特权和角色。模式对象的名字(表、视图、索引、同义词等)。关于完整性约束的信息。列的缺省值。有关数据库中对象的空间分布信息及当前使用情况。审计信息(如谁存取或修改各种对象)。其它一般的数据库信息。,2023/11/8,数据字典,可用SQL存取数据字典,由于数据字典为只读,只允许查询。数据字典中全部基本表和用户可存取视图为ORACLE用户SYS所持有,所有对象包含在SYS模式中,安全管理员对该帐号要严格控制。当ORACLE数据库系统启动后,数据字典总是可用,它驻留在SYSTEM表空间中。数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以前缀相区别,前缀为USER、ALL和DBA。前缀为USER的视图,为用户视图,是在用户的模式内。前缀为ALL的视图为扩展的用户视图(为用户可存取的视图)。前缀为DBA的视图为DBA的视图(为全部用户可存取的视图)。,2023/11/8,常用数据字典与视图,ORACLE数据库有三个可查看系统数据库字典的用户:system、internal、sys,其它用户只能查看授权表空间的数据库字典,以某一用户登录数据库后可查看一些数据字典,了解数据库的资源情况,对日常维护的故障定位能起很大的帮助,下面就一些常用的数据表(视图)进行简单的说明:,dba_tablespaces(user_tablespaces)除三个系统用户以外的用户登录可查看user_tablespaces表。dba_tablespaces(user_tablespaces)表可查看本数据库的表空间,它存放各个表空间的属性,包括:表空间名、表空间宿主、以及存储参数(initial、next、maxextents、minextents、blocks等)等。dba_data_files(user_data_files)该表可查看数据库所有数据库数据文件,它存放了各个数据文件的属性,包括:表空间名、宿主、数据文件名、大小、可用空间以及ID号等。dba_segments(user_segments)该表可查看数据库所有段,它存放了各个段的属性,包括:段名、表空间名、宿主、大小、第一个区间的块号等。,dba_rollback_segs 该表可查看数据库所有回滚段,它存放了各个数据库回滚段的属性,包括:回滚段名、表空间名、宿主、存储参数(initial、next、maxextents、minextents等)、第一个区间的块号、占用数据库文件ID号。dba_extents 该表可查看数据库所有区间,它存放了各个区间的属性,包括:区间ID、使用段ID、所属对象(object)名、宿主、占用数据库文件ID(对应dba_data_files中的ID号)、块号等。常见应用:查看各对象的区间是否已达到了最大区间数量select object_name,sum(*)from dba_extents group by object_name;dba_free_spaces可查看数据库表空间的使用情况,如查看各数据库表空间的可用空间:select tablespace_name,sum(bytes)from dba_free_spaces group by talbespace_name;,2023/11/8,事务管理,事务(transaction)数据库是多用户的共享资源,在多个用户并行地存取数据时,应对数据做并发控制,以免存取不正确的数据,破坏数据库的一致性。数据库的任何状态变化都要能反映客观世界的某种真实存在的合理状态,反映到数据库中,就是数据要满足一定的约束条件,这种约束条件就是一致性约束。为了完成复杂的修改动作,往往需要临时破坏数据库的状态一致性。因此,就有必要把这种对数据库复杂修改的一连串动作序列合并起来,这就是事务。事务是数据库维护数据一致性的单位,它将数据库从一致性状态转换成新的一致性状态。,2023/11/8,事务管理,事务提交提交事务:即将在事务中由SQL语句所执行的改变永久化。数据库数据的更新操作提交以后,这些更新操作就不能再撤消。ORACLE的提交命令如下:SQLCOMMIT;事务回退事务回退的含义是:撤消未提交事务中的SQL语句所作的对数据修改。ORACLE允许撤消未提交的整个事务,也允许撤消部分(需设置保存点)。回退之后,数据库将恢复事务开始时的状态或保留点状态。回退命令如下:SQLROLLBACK;保存点保存点就是将一个事务划分成为若干更小的部分,以便在必要时,使当前事务只回退一部分,而其余工作得到保留SAVEPOINT ROLLBACK TO 保存点名,2023/11/8,Oracle安装,Oracle默认用户SYS用户是Oracle中的超级用户,主要用于维护系统信息和管理实例,数据库中数据字典的所有表和视图都存储在SYS模式中 SYSTEM用户是Oracle中默认的管理员,它拥有DBA权限。该用户拥有Oracle管理工具使用的内部表和视图,通常通过SYSTEM用户管理Oracle数据库的用户、权限和存储等,2023/11/8,ORACLE的四种状态,ORACLE数据库任何时候可以处于四种状态之一:SHUTDOWN:数据库关闭NOMOUNT:例程启动MOUNT:例程启动,控制文件打开OPEN:例程启动,所有数据文件打开数据库可以在几种状态之间转变ALTER DATABASE 状态,2023/11/8,SQL*Plus方式的ORACLE数据库启动和关闭,启动数据库sqlplus user_name/user_password as sysdbaSTARTUP;,2023/11/8,关闭数据库,用IMMEDIATE选项关闭未授权的事务退回(如果长期有未授权的事务存在,这种关闭的方法可能不会完成得很快)。ORACLE不等待用户当前的数据库连接断开,ORACLE不问原因地退回激活事务,并断开所有的连接用户。数据库下次启动将不要求任何实例恢复程序。,2023/11/8,关闭数据库,用NORMAL选项关闭在语句发生后不允许新的连接。在数据库关闭前,ORACLE等待当前所有与数据库连接的用户断开连接。数据库的下一次启动将不需要任何实例恢复程序。,2023/11/8,关闭数据库,带有TRANSACTIONAL选项关闭当用户希望在允许活动事务首先完成时进行一个计划中的事务关闭时应用此种方式。带有ABORT选项关闭ORACLE处理的当前客户端SQL语句立即中断。未递交的事务将不会退回。ORACLE将不等待当前与数据库的连接断开,即ORACLE将断开所有的连接用户。数据库的下一次启动将要求实例恢复程序。如果正常与立即关闭选项都不能工作,要立即退出当前的数据库实例,2023/11/8,使用企业管理器进行性能监控,输入网址,例如:http:/127.0.0.1:1158/em,进入EM。,2023/11/8,进入性能页,2023/11/8,进入顶级活动,2023/11/8,EM,2023/11/8,查询耗资源的SQL语句,在时间进度条上,选择时间段,在左下方显示该时间段耗资源的语句。点击耗资源SQL的“SQL散列值”列,显示该SQL语句的详细内容。对耗资源的SQL语句进行优化。,2023/11/8,PL/SQL,ORACLE对SQL规范的扩展,是一种块结构语言,包括一整套的数据类型、条件结构、循环结构和异常处理结构模块化结构。定义标识符(常量、变量、游标等)。用过程化语言控制结构进行程序设计。错误处理。提高操作性能,2023/11/8,PL/SQL块的基本结构,声明部分(declarative section)(可选)。执行部分(executable section)(必须)。异常处理部分(exception section)(可选)。,2023/11/8,PL/SQL,PL/SQL常见的类型转换函数TO_CHAR按照可选的格式将参数转换为字符类型TO_DATE按照可选的格式将参数转换为日期类型TO_NUMBER按照可选的格式将参数转换为NUMBER类型,2023/11/8,PL/SQL控制结构,条件控制:IF-THEN-ELSE循环:LOOP、FOR、WHILE跳转控制:GOTOGOTO sss;,2023/11/8,异常处理,异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行 预定义(Predefined)错误 非预定义(Predefined)错误即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。用户定义(User_define)错误 程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。,2023/11/8,异常处理标准格式,异常处理部分一般放在 PL/SQL 程序体的后半部,结构为:EXCEPTION WHEN first_exception THEN WHEN second_exception THEN WHEN OTHERS THEN END;异常处理可以按任意次序排列,但 OTHERS 必须放在最后.,2023/11/8,非预定义的异常处理,在PL/SQL 块的定义部分定义异常情况 EXCEPTION;将其定义好的异常情况,与标准的ORACLE错误联系起来,使用EXCEPTION_INIT语句:PRAGMA EXCEPTION_INIT(,);在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。,2023/11/8,非预定义的异常处理,INSERT INTO departments VALUES(50,FINANCE,CHICAGO);DECLARE v_deptno departments.department_id%TYPE:=,2023/11/8,用户自定义的异常处理,当与一个异常错误相关的错误出现时,就会隐含触发该异常错误。用户定义的异常错误是通过显式使用 RAISE 语句来触发。当引发一个异常错误时,控制就转向到 EXCEPTION块异常错误部分,执行错误处理代码。步骤如下:在PL/SQL 块的定义部分定义异常情况:EXCEPTION;RAISE;在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。,2023/11/8,用户自定义的异常处理,DECLARE v_empno employees.employee_id%TYPE:=,2023/11/8,在声明部分引发异常错误,如果在声明部分引起异常情况,即在声明部分出现错误,那么该错误就能影响到其它的块DECLARE name varchar2(12):=EricHu;其它语句BEGIN 其它语句EXCEPTION WHEN OTHERS THEN 其它语句END;例子中,由于Abc number(3)=abc;出错,尽管在EXCEPTION中说明了WHEN OTHERS THEN语句,但WHEN OTHERS THEN也不会被执行。,2023/11/8,异常处理,在一般的应用处理中,建议程序人员要用异常处理,因为如果程序中不声明任何异常处理,则在程序运行出错时,程序就被终止,并且也不提示任何信息在 PL/SQL 中使用 SQLCODE,SQLERRM异常处理函数SQLCODE 返回遇到的Oracle错误号,SQLERRM 返回遇到的Oracle错误信息.,2023/11/8,游标属性,SQL%FOUND和SQL%NOTFOUND在执行任何DML语句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在执行DML语句后,SQL%FOUND的属性值将是:a.TRUE:INSERTb.TRUE:DELETE和UPDATE,至少有一行被DELETE或UPDATE.c.TRUE:SELECT INTO至少返回一行当SQL%FOUND为TRUE时,SQL%NOTFOUND为FALSE。SQL%ROWCOUNT在执行任何DML语句之前,SQL%ROWCOUNT的值都是NULL,对于SELECT INTO语句,如果执行成功,SQL%ROWCOUNT的值为1,如果没有成功,SQL%ROWCOUNT的值为0,同时产生一个异常NO_DATA_FOUND.SQL%ISOPENSQL%ISOPEN是一个布尔值,如果游标打开,则为TRUE,如果游标关闭,则为FALSE.对于隐式游标而言SQL%ISOPEN总是FALSE,这是因为隐式游标在DML语句执行时打开,结束时就立即关闭。,2023/11/8,游标,-For 循环游标-(1)定义游标-(2)定义游标变量-(3)使用for循环来使用这个游标declare-类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER;-定义一个游标变量v_cinfo c_emp%ROWTYPE,该类型为游标c_emp中的一行数据类型 c_row c_job%rowtype;begin for c_row in c_job loop dbms_output.put_line(c_row.empno|-|c_row.ename|-|c_row.job|-|c_row.sal);end loop;end;,2023/11/8,Fetch游标,-Fetch游标-使用的时候必须要明确的打开和关闭declare-类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER;-定义一个游标变量 c_row c_job%rowtype;begin open c_job;loop-提取一行数据到c_row fetch c_job into c_row;-判读是否提取到值,没取到值就退出-取到值c_job%notfound 是false-取不到值c_job%notfound 是true exit when c_job%notfound;dbms_output.put_line(c_row.empno|-|c_row.ename|-|c_row.job|-|c_row.sal);end loop;-关闭游标 close c_job;end;,2023/11/8,Fetch游标,使用游标和while循环来显示所有部门的的地理位置(用%found属性)declare-游标声明 cursor csr_TestWhile is-select语句 select LOC from Depth;-指定行指针 row_loc csr_TestWhile%rowtype;begin-打开游标 open csr_TestWhile;-给第一行喂数据 fetch csr_TestWhile into row_loc;-测试是否有数据,并执行循环 while csr_TestWhile%found loop dbms_output.put_line(部门地点:|row_loc.LOC);-给下一行喂数据 fetch csr_TestWhile into row_loc;end loop;close csr_TestWhile;end;,2023/11/8,动态游标,使用动态游标步骤:定义游标类型:TYPE 游标类型名 REF CURSOR;声明游标变量:游标变量名 游标类型名;生成查询语句作为游标:OPEN 游标变量名 FOR 查询语句字符串;,2023/11/8,动态游标,declare bm number;zw varchar2(10);tt number;str varchar2(50);type cur_type is ref cursor;-定义游标类型 cur cur_type;-定义游标变量 begin str:=select deptno,sum(sal)from emp group by deptno;-查询字符串 open cur for str;dbms_output.put_line(每个部门的工资总和:);while cur%found loop dbms_output.put_line(bm|tt);fetch cur into bm,tt;end loop;end;,2023/11/8,ORACLE的用户管理,2023/11/8,修改用户,2023/11/8,删除用户,DROP USER 用户名 CASCADE若不使用CASCADE选项,则必须在该用户的所有实体都删除之后,才能删除该用户。使用CASCADE后,则不论用户实体有多大,都一并删除,2023/11/8,ORACLE的权限管理,ORACLE的安全机制,是由系统权限、实体权限和角色权限这三级体系结构组成的 系统权限的授予命令为GRANT系统权限的回收命令为REVOKE,2023/11/8,管理角色,创建角色,如创建一个名为dept1的角色,口令字为hello CREATE ROLE dept1 IDENTIFIED BY hello使用角色,可以通过修改用户的缺省角色来使用角色,或通过授权的方法来将角色授予其它角色或用户ALTER USER scott DEFAULT ROLE DEVELOPER使角色生效或失效,DBA可以通过控制角色的生效或失效,来暂时回收用户的一部分权限SET ROLE dept1 DISABLE删除角色DROP ROLE dept1,2023/11/8,ORACLE数据库的备份与恢复,Export 转入程序 ORACLE数据库有两类备份方法,第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归档模式下,且需要极大的外部存储设备,例如磁带机;第二类备份方式为逻辑备份,客户服务中心业务数据库就是采用这种方式,这种方法不需要数据库运行在归档模式下,不但备份简单,而且可以不需要外部存储设备,2023/11/8,逻辑备份,表模式(T):这种模式可以卸出当前用户数据库模式下的表,甚至是所有的表。具有特权的用户可根据所指定的数据库模式来(限制表)卸出他们所包含的表。缺省情况是卸出属于当前正在进行卸出的用户的所有表。用户模式(U):这种模式可以卸出当前用户数据库模式下的所有实体(表、数据和索引)。全数据库模式(F):只有具有EXP_FULL_DATABASE角色的用户才可能以这种模式卸出。以这种模式进行卸出的用户,除SYS模式下的内容之外,数据库中所有实体都可以卸出。下面列出给用户赋予EXP_FULL_DATABASE角色的方法。,2023/11/8,表模式,EXP ICDMAIN/ICD BUFFER=8192(或64000)FILE=EXP_ICDMAIN_SERVICEINFO.DMP TABLES=ICDMAIN.SERVICEINFO(多个表以逗号分隔)ROWS=Y COMPRESS=NLOG=EXP_ICDMAIN_SERVICEINFO.LOG,2023/11/8,用户模式,EXP ICDMAIN/ICD OWNER=ICDMAIN BUFFER=8192(或64000)FILE=EXP_ICDMAINDB.DMP 或(磁带设备/dev/rmt0)ROWS=Y COMPRESS=N LOG=EXP_ICDMAINDB.LOG,2023/11/8,全数据库模式,EXP ICDMAIN/ICD BUFFER=8192(或64000)FILE=EXP_ICDMAIN_DB.DMP(或磁带设备/dev/rmt0)FULL=Y ROWS=Y COMPRESS=NLOG=EXP_ICDMAIN_DB.LOG 对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据EXP ICDMAIN/ICD BUFFER=8192(或64000)FILE=EXP_ICDMAIN_DB.DMP(或磁带设备/dev/rmt0)FULL=Y INCTYPE=INCREMENTAL ROWS=Y COMPRESS=NLOG=EXP_ICDMAIN_DB.LOG,2023/11/8,Import 转入程序,mport和Export是两个相配套的实用程序,Export把数据库中的数据卸出到操作系统文件中,而Import实用程序则把Export卸出的数据恢复到数据库中。按备份方案确定恢复方案,例如:采用表逻辑备份方案,则恢复方案也采用恢复到表的方式(不应恢复到用户)。要使用Import,必须具有CREATE SESSION特权,以便能注册到ORACLE RDBMS中去。这一特权属于在数据库创建时所建立的CONNECT角

    注意事项

    本文(Oracle基础培训.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开