简介
本课程是专门为从事Oracle系统应用开发编程人员而设置;较详细介绍Oracle 11g/12c版本PL/SQL基本使用和高级编程方法与性能技巧。包括:内置包的基本介绍、PL/SQL应用监控与调试、性能问题的诊断和优化方法等。
目标
1、了解Oracle 11g/12c版本PL/SQL高级编程方法相关知识;
2、掌握Oracle 11g/12c版本PL/SQL应用性能诊断与优化方法;
3、掌握 PL/SQL应用维护方法与技巧
课程时长
3天(18H)
受众人群
基于Oracle 系统的应用系统开发人员;基于Oracle 的数据库管理与维护人员;基于Oracle 环境的应用测试人员;Oracle 系统技术支持/性能调整人员
分享提纲
1、PL/SQL 知识概要 | 针对具有PL/SQL使用基础和经验的技术人员,本部分以样例的形式直接回顾PL/SQL编程的方法,省略基本原理的描述。 | 1.1SQL*Plus 环境 1.2SQL*Plus 必须掌握的命令回顾 (几个关键命令 ) 1.3SQL Developer 4.x 下载概要 1.4安装SQL Developer 1.5SQL Developer 连接与 TNS 1.6使用 SQL Developer 编辑与调试 PL/SQL 程序 |
2、PL/SQL 基础概要 | 2.1变量与数据类型 2.2显式光标与隐式光标回顾 2.3异常处理 2.4异常处理与应用错误捕获方法 | |
3、 PL/SQL 编程基础 | 如果对Oracle 系统的性能感兴趣时,下面的性能视图可帮助你了解到性能问题的关键信息,这里,我们通过样例的方法来解析性能问题的诊断步骤和方法。 | 3.1 函数与存储过程编程方法 3.2包的概念与编写方法(概要) 3.3触发器与触发器编写方法(概要) |
4、Oracle11g/12c内置包与新功能 | Oracle 系统内部的应用主要是由内置支持,现在的Oracle EM 图形界面实际运行时也要通过内置包来完成。作为开发一个通用的软件产品,掌握Oracle系统的内置包的使用可以达到事半功倍的效果。这里主要概要介绍常见的内置包,详细的介绍会分散在之后的各小章节上。 | 4.1默认安装下Oracle 11g普通内置包 4.2特殊需要与特殊内置包及其安装脚本 4.3SYS Schema下常见的内置包概要 4.4其他Schema 下的内置包概要 4.512c 版本内置包变化与新内置包 |
5、元数据与DBMS_METADATA包 | 无论你是否参与表结构和索引、视图等创建,但当你采用PL/SQL编程时都与相关的对象产生联系,这些联系有的是显式的,有些则是隐式的。当PL/SQL出现问题时,了解元数据概念和使用内置包获取相关对象的信息,给解决问题的方向就找对了。这里介绍元数据报的使用方法和样例,帮助开发与维护工程师快速定位问题非常关键。 | 5.1关于元数据问题 5.2DBMS_METADATA元数据包基本程序说明 5.3DBMS_METADATA包获取依赖关系和权限信息 5.4DBMS_METADATA包较深入使用研究 5.5_METADATA包 实现维护技巧与样例 |
6、DML与事务可恢复问题 | 如果你编写的应用中包含有DML语句,则与事务有关,当Oracle服务器与存储出现问题时会影响到相关的DML语句的正常运行,也就说,会导致某些DML语句没有正常结束,那么自然导致数据完整性问题。如何主动地避免这样的问题发生和发生DML失败时自动解决是衡量一个编写DML语句的开发人员是否严谨的关键。 | 6.1关于DML操作与撤销数据概念 6.2Oracle 11g/12c 的DML操作与完整性方法 6.3DBMS_RESUMABLE 包用途说明 6.4如何用DBMS_RESUMABLE 避免DML操作失败 6.5基于10g/11g/12c 版本的DML操作失败监控方法 |
7、Web环境PL/SQL应用监控与调试 | 现在许多基于Oracle环境运行的应用既包括直接内部程序,也包括来自Web环境的应用。针对复杂的Oracle应用环境,需要诊断直接的应用或者来自Web系统的应用进行实时的跟踪与监控,从而进行问题的定位。 | 7.1使用DBMS_SESSION包 实现会话监控 7.2使用DBMS_SESSION包 实现会话跟踪 7.3用DBMS_APPLICATION_INFO包 实现应用诊断 7.4Web环境应用监控与跟踪 使用DBMS_MONITOR 包实现Web环境的应用跟踪 |
8、PL/SQL应用与环境问题分析 | 当PL/SQL应用在运行时,都要使用Oracle服务器的资源和访问相关的对象。如果某个应用运行时处于不良的状态,维护人员需要获取当时的相关情况。这里介绍的DBMS_UTILITY包就像它的名称一样,主要用于处理各种Oracle系统内部的信息,包括获取相关的数据运行信息,会话时的相关信息等。 | 8.1PL/SQL 应用运行与服务器资源 8.2DBMS_UTILITY包及其函数与存储过程 8.3使用DBMS_UTILITY包获取相关信息样例 |
9、11g/12c版本的PL/SQL性能方法 | 编写PL/SQL 应用也要与时俱进,因为每个Oracle版本都存在差异,比如,10g/11g 新的数据类型、对批量数据的处理增加了FORALL语句等。这里分别介绍这两部分的内容。 | 9.1变量类型与性能 9.210g/11g 新数据类型与性能 9.312c 版本 数据类型 的变化 9.4关于批量绑定概念 9.5使用 FORALL 进行批量绑定 9.611g 版本 结果缓存新方法 9.7SELECT 语句 查询结果缓存方法 9.8DBMS_RESULT_CACHE包与缓存管理 |
10、PL/SQL应用优化与会话参数调整 | 本部分介绍Oracle 11g版本的会话级相关参数及其在PL/SQL应用中的设置方法。此外,还介绍DBMS_SYSTEM包设置会话级参数的样例。 | 10.1会话与使用资源实时监控方法 10.2关于会话参数设置问题 10.3Oracle 11g/12c PL/SQL 相关的新参数 10.4使用DBMS_SYSTEM包与参数设置 10.5依赖关系与无效对象快速查询 10.6无效对象的编译各种方法与技巧 10.7其他的性能诊断工具使用方法 |
11、PL/SQL应用性能诊断方法 | PL/SQL编写的程序不可能都是高效的应用,面对那些运行效率低下的应用的诊断就是PL/SQL开发人员和维护人员关注的主题。这里介绍基于10g和11g版本诊断方法和技巧。 | 11.1SQL 语句跟踪方法 11.2使用DBMS_PROFILE包诊断 11.3使用DBMS_HPROF包诊断 11.4PL/SQL 性能诊断的其他工具与方法 11.5更多内置包的监控方法 |
12、Oracle PL/SQL 应用的安全实现 | Oracle 系统PL/SQL 应用在完成创建后, PL/SQL代码存储在数据字典中,当PL/SQL应用经过授权给用户后,用户即可执行相应的PL/SQL应该用。但是,这样的机制在默认情况下也存在安全问题的,本小节介绍如何确保PL/SQL应用的安全和数据库的安全。 | 12.1DBMS_DDL包实现PL/SQL 加密概要 12.2关于定义者与调用者 12.3SQL injections(注入)概要 12.4减少被攻击面 12.5使用 DBMS_ASSERT 包防止攻击 12.6编写有免疫的代码 |
13、(可选)复杂PL/SQL应用与相关的包概要 | 本部分介绍Oracle 环境复杂应用相关的知识,比如会话间如何实时交换数据,如果将PL/SQL查询结果转换为HTML文件等。此外,还介绍12c 版本的新变化。 | 13.1DBMS_PIPE包管道实现会话间通信 13.2DBMS_FILE 包与OS文件的I/O 方法 13.312c 版本DBMS_METADATA元数据包新变化 13.412c版本 DBMS_SQL.RETURN_RESULT 新变化 |
14、(可选)PL/SQL调试技术 | 应用系统效率不加,具体的原因就是相应的SQL语句的问题,而PL/SQL程序包含多个SQL语句,哪些语句是问题的根源就需要进行跟踪和调试,这里介绍的是如何对PL/SQL进行跟踪的方法。 | 14.1关于SQL跟踪方法与工具 14.2安装DBMS_TRACE() 14.3使用DBMS_TRACE()管理运行 14.4PL/SQL 跟踪样例 |
15(选)DBMS_APPLICATION_INFO包 | 由于PL/SQL 程序不具备交互性,所以跟踪时确定问题语句比较困难。这个内置包就是用于定位正在执行的PL/SQL源代码中实际处理逻辑,通过调用该包来记录正在执行的操作的当前位置,从而确定问题根源。针对这个所提供的功能,我们介绍的内容如下: | 15.1DBMS_APPLICATION_INFO 15.2包使用简单样例 15.3跟踪B/S结构的会话 15.4实践样例 |
16、(可选)DBMS_MONITOR包 | 现在多数应用系统环境的都是B/S结构,而许多Java或4GL通过调用PL/SQL 程序实现数据库的处理,正是由于此,对B/S的跟踪采用原来的方法不易确定其真实位置,所以,从Oracle10g开始,用DBMS_MONITOR包通过模块名称和客户机名称来建立一个跟踪,从而实现问题的确定。本部分介绍的内容包括: | 16.1会话概念回顾 16.2用DBMS_MONITOR包需要设置的参数 16.3服务名称、模块名称和动作名称的组合进行跟踪 16.4DBMS_MONITOR-会话级跟踪样例 |
17、(可选)UTL_FILE包 | 许多应用系统环境采用PL/SQL编程主要为了加快数据处理的效率,但也有采用PL/SQL的内置包灵活实现各种操作。这个内置包可实现对OS路径文件的操作,包括写文件和读文件等。你可使用这个包浆你的处理结果转换成PDF或HTML等格式文件。本部分介绍的内容包括: | 17.1关于OS文件的I/O 问题 17.2UTL_FILE 包的功能 17.3使用UTL_FILE实现查询结果输出为HTML |
18、(可选)DBMS_PIPE包 | 在较复杂的应用系统中,经常需要将某些数据快速实时传递给一组约定好的进程中,从而快速进行特别的处理。这个包可实现在进程传递数据包的方法。本部分介绍的内容包括: | 18.1Oracle 系统中的进程 18.2DBMS_PIPE功能 18.3DBMS_PIPE存储过程 18.4DBMS_PIPE例子 |
19(可选)DBMS_TRANSACTION包 | 对于采用Oracle系统进行分布式环境应用开发的人员来说,经常担心的是每个DML语句是否成功完成,如果没有成功完成,则如何找到问题所在和恢复相关事务。而恢复事务在Oracle系统里与别的数据库不同,可用手工方法恢复,也可自动恢复。采用这个内置包可实现对分布事务的管理。本部分介绍的内容包括: | 19.1Oracle 系统的分布式处理流程 19.2关于Oracle 系统的两阶段提交 19.3未决事务的处理 19.4使用DBMS_TRANSACTION包处理未决事务 |
Jerry Zhao
百林哲咨询(北京)有限公司专家团队成员
Jerry Zhao
百林哲咨询(北京)有限公司专家团队成员
Jerry Zhao
百林哲咨询(北京)有限公司专家团队成员
Jerry Zhao
百林哲咨询(北京)有限公司专家团队成员
Jerry Zhao
百林哲咨询(北京)有限公司专家团队成员
Jerry Zhao
百林哲咨询(北京)有限公司专家团队成员
Jerry Zhao
百林哲咨询(北京)有限公司专家团队成员