免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lincats
打印 上一主题 下一主题

Oracle真的有那么难吗?学会PL/SQL就是你必须迈过的一道坎(获奖名单已公布--6-15) [复制链接]

论坛徽章:
0
51 [报告]
发表于 2012-06-03 10:53 |只看该作者
oracle开发,基础最重要,通过不断积累掌握sql语句的最优化写法。
实践是学习的最好途径, 多动手,多思考

论坛徽章:
0
52 [报告]
发表于 2012-06-03 21:51 |只看该作者
本帖最后由 alang85 于 2012-06-03 22:38 编辑

回复 1# lincats

总的来说,进行PL/SQL开发能尽量多了解业务对自身有很大提高,也有利于PL/SQL优化,写出高效代码。

1,PL/SQL的在企业级应用开发中的重要作用,如何开始进行PL/SQL的开发。

(1),PL/SQL是ORACLE在标准SQL语言上的过程性扩张,允许嵌入SQL语句,允许定义常量和变量,允许过程语言结果,允许使用异常处理ORACLE错误。
(2),PL/SQL能提高程序的运行性能,将PL/SQL块内嵌到应用程序中,最大优点可以降低网络开销,提高应用程序的性能。
(3),PL/SQL提供模块化的程序设计功能,简化应用程序的开发和维护工作,可以将企业规则和商业逻辑集成到PL/SQL程序中,包括存储过程,函数,包中,然后在应用程序中调用相应的功能。
(4),具有过程语言控制机构,PL/SQL允许使用条件分支语句和循环语句。
(5),具有良好的兼容性,ORACLE运行的任何平台都可以使用PL/SQL块。

2,如何编写高效的PL/SQL应用程序。
1.pl/sql块的sql越简单越好,将一个复杂的查询慢的sql语句拆成多个sql语句的执行效率往往比较高效。
2.pl/sql块中的逻辑判断语句应该将发生频率高的逻辑写在前头。
3.避免在pl/sql中编写不可能执行的逻辑。
4.能不用cursor的时候尽量不要用cursor。
5.内存足够的情况下适当的使用索引表。
6.编写规范的PL/SQL命名规范,良好的规范给人以享受和艺术的体验。
7.避免ORACLE类型的隐形转化。
8.OLTP环境绑定变量,减少硬解析。
9.避免动态SQL语句,动态SQL是在执行过程中编译,而普通SQL在过程执行前就已经编译过,就是一次编译多次执行,提高效率。
10.设法减少表的扫描次数,避免在SQL语句对函数的调用。

一句话来总结,简介为王。

论坛徽章:
0
53 [报告]
发表于 2012-06-04 08:37 |只看该作者
我没有Oracle的数据库

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
54 [报告]
发表于 2012-06-04 12:48 |只看该作者
本帖最后由 renxiao2003 于 2012-06-04 13:04 编辑

1,PL/SQL的在企业级应用开发中的重要作用,如何开始进行PL/SQL的开发。
在数据库开发领域,Oracle的PL/SQL开发语言是很有名的4G开发语言,在PC机的运算速度慢,成本高的时代里,将大量的数据运算让后台服务器进行处理,发挥了服务器的功能,提高了应用程序的预算和相应速度,这个开发语言是功不可没的。虽然现在普通PC的性能提高了,计算速度上来了,但将复杂的大量的数据运算提交给服务器完成,能显著的提升自己的应用程序性能,所以PL/SQL的作用还是无可替代的。那么,如何才能记性PL/SQL的高效开发呢,俗话说,工欲善其事,必先利其器。所以要进行PL/SQL的开发,必须要有一个好的开发工具,目前市场上的开发调试工具很多,如Oracle官方推出的免费的SQL Developer,第三方公司提供的收费工具如PL/SQL Developer,Toad for Oracle等,我当初使用的就是PL/SQL Developer。当然使用的是破解版了(没钱买啊,有钱一定支持正版)。这些工具都提供PL/SQL的编辑,调试功能。
有了工具后,还需要对PL/SQL的语法结构有较好的了解,建议可以看看相关的书籍,本身这个语言就是4G语言,接近于人类语言,除了SQL语句处理,就是一些基本的流程和异常处理;当掌握了这些基本的知识你就可以进行了。不管使用什么编程语言,你必须要了解你的业务需要实现的功能,只有了解了需求,你才能真正写出适合你的需求的功能来。
2,如何编写高效的PL/SQL应用程序。
至于高效的PL/SQL应用程序,其实我感觉应该就是运算速度快,容错性好,结构清晰等;要想运算速度快,必须得处理好业务处理流程,在对数据处理中注意相关表的优化,游标数据,对象数据的合理应用。容错性,做好相应的异常处理。结构上根据自己项目部的编程规范,这样就能写出来的程序在项目组中有很好的通用性。
好多年不写PL/SQL程序了,都有些忘记了。上述不正确之处,希望大家批评指正。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
55 [报告]
发表于 2012-06-04 13:04 |只看该作者
写个“第四代”,告诉我包含非法关键字。晕啊。

论坛徽章:
0
56 [报告]
发表于 2012-06-04 16:08 |只看该作者
工作需要linux+oracle,但是oracle还是不懂...

论坛徽章:
0
57 [报告]
发表于 2012-06-04 17:15 |只看该作者
azhaoguilong 发表于 2012-06-04 16:08
工作需要linux+oracle,但是oracle还是不懂...


那就先从PL/SQL开始吧,可以让你慢慢的对ORACLE充满兴趣哦。

论坛徽章:
0
58 [报告]
发表于 2012-06-04 20:43 |只看该作者
说一个工作中的例子吧,我们的MRP运算要处理上千W的数据,为了完成这个运算,写了一个PL/SQL package,里面包含4大部分:
1,收集ERP中的来源数据,将他们保存到全局临时表(这个过程非常慢,因为要从多个表中进行复杂的连接查询,提取所需要的需求、走货、订单、库存、工单、采购订单等数据)这部分用了7个存储过程来实现。[DBA经常对于这部分的SQL进行性能调优,权衡各种资源的平衡,在SQL语句中应用Hint改善查询的性能,并且将这部分的调用过程放在了晚上最空闲的时候(通过Oracle的Job来实现)]。
2,在全局临时表适当的创建了索引,以便提升运算时的检索速度(理解全局临量表的作用,由于全局临时表中的数据不需要进行事务处理操作,因此避免产生重作日志,使用了最优化的方式进行装载)。
3,运算部分,大量使用了索引表,将核心的运算数据,通过批量装载的方式(Bulk collect into)收集到索引表中。(这里需要理解Oracle的集合类型的使用),这个过程反而非常快,因为数据已经准备好。
4,运算完成后,将全局临时表中的结果转载到MRP结果表中,实现MRP的运算。

简单的介绍了这个实现过程,实际上,这里面就关联到相当多的PL/SQL知识:
1,PL/SQL语言元素的使用,包,过程和函数,参数传递,游标的应用,异常的处理,表结构的设计和优化,Job的使用等等。
2,SQL性能调优,通过观察执行计划,了解SQL语句的执行效率,通过应用适当的Hint来改变SQL的执行计划,定期进行统计数据的收集等等。
3,PL/SQL调优,绑定变量的应用,值类型和引用类型的传递,参数的作用域范围,事务的提交时机(何时该放一个Commit提交事务,将一个大的事务切分出来),Oracle的集合类型和批次操作等等。

论坛徽章:
0
59 [报告]
发表于 2012-06-09 09:41 |只看该作者
需打通任督二脉 ~~~

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
60 [报告]
发表于 2012-06-10 12:06 |只看该作者
回复 47# xbokx


    oracle和mysql的市场定位, 客户目标群不同的。
   
    在高端事务型数据库行业, oracle的稳定性还是比较出色的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP