开发者社区> 文艺小青年> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用Oracle数据库进行企业开发(二)

简介:
+关注继续查看
 工欲善其事,必先利其器。Oracle自身带了一些辅助的客户端工具,但是都不太好用,但真正的DBA都喜欢用命令行方式来操作数据库。我们不是DBA,我们是程序员,所以我们很有必要去找一些好用的工具以提高我们的工作效率。下面推荐两款工具:
    1.PL/SQL Developer
    这个工具从名字就可以看出,非常适合开发人员使用,这个工具对数据库本身的管理功能很弱,给DBA使用的功能也很少。这个工具的版本更新较快,目前常用的是5.0和7.0,6.0的好像不太稳定。
    使用这个工具,可以实现建表、建视图等基本功能,还可以运行命令文件。在如下所指的菜单中可以找到相应的功能。
o_o1.JPG

    如果SQL为查询语句,则直接在主窗口的表格中可以显示查询内容,如下图:
o_o2.JPG

    图上有几个比较重要的按钮,第一个表示锁定,点击成功后,可以对表格中的数据进行编辑;紧接着的绿色向下,表示向下翻一页的数据,因为这个工具默认不会取出所有的数据,这样可以提高性能;再后面的两个三角加一个横线的按钮,表示可以把所有的数据全部取出放在表格中,这种方式使用的时候要注意,如果数据量很大,会造成客户端内存不足;“竖向按钮”可以把一个记录行竖向排版,更方便显示和编辑,如下图:
o_o3.JPG

    如果需要编辑数据,有两种办法:
    使用update命令,如update table_name set column_name=’value’;
    也可以使用表格自身的编辑功能,如:select * from table_name for update
    上面虽然是个查询语句,但是因为最后带着for update子句,则这句话同时将数据库这个表锁定,并且在表格上面的“锁”标志可以使用,实现数据的编辑,如下图:
o_o4.JPG

    如果不喜欢for update子句,还有另外一个更简单的办法,在左侧菜单中找到相对应的表,然后点右键,出现一个“Edit Data”
o_o5.JPG

    这个功能会自动新建一个SQL窗口,并实现对数据的编辑。
    以上几种方式作用相同,可根据实际情况来决定。
    说过了如何编辑数据,下面说一下PL/SQLDeveloper一个比较好用的功能:单步调试。
    在编写存储过程的时候,都会像一般写程序一样调试,但是如果不借用一些工具的话,对存储过程的调试是相当困难的,不过好在我们现在有了这个好用的工具。
o_o6.JPG

    上图是一个最简单的存储过程的例子,中间过程对一个变更进行多次赋值,最后返回,我们只来看一下中间变量值的变化过程:
    首先在函数名Test上点右键,出现菜单,选择Test(测试):
o_o7.JPG

    然后会出现专门的调试窗口,如下图:
o_o8.JPG

    如果函数有参数,在最底下还会出现输入参数的地方。如何开始调试呢,看一下上图中的齿轮的地方,点击它,即可进入调试状态,然后后面的一系列按钮都变为可用状态,如下图:
o_o9.JPG

    其中绿色的三角表示运行,直到碰到断点才结束,后面几个按钮和其它语言一样,分别表示单步、把子函数作为一个语句、从子函数中跳过,最后的红色我没有试验过。
    上面提到了断点,那么如何添加断点呢?这要回到存储过程的编辑状态,在下图红色位置单击一下,就会自动添加一个断点,也可以使用Ctrl+B功能键来处理。
o_o10.JPG

    有了以上断点后,程序运行到这里,系统会自动停下来等待处理,当然这种方式只适用于调试模式,对于正常F8运行模式无效。
o_o11.JPG

    当系统停在某个断点的时候,把鼠标放在某个变量上,就会自动显示这个变量的当前值,如上图,当然,也可以添加监控,实时看某个变量的变化过程,在下图的位置来添加监控。
o_o12.JPG

    上图红线的位置是新添加的一个监控变量,可以随着程序的运行而不断变化,并可以根据需要添加多个变量同时监控。
    当然有时您可能会被告之当前函数无法取得调试信息,这时就要手动添加一下,添加的方式是在package的名字上点右键,菜单中选择“Add Debug Information”
o_o13.JPG

    说完了单步调试,再来看一下执行计划
    在大型数据库中,都有执行计划的概念,也就是数据库会很公正的告诉你,它用什么样的方式(路径)来执行你提交的请求,你可以自己判断一下它的执行路线是否正确,如果不正确,你可以很明确的告诉它去修改运行路径。
    在正常的情况下,F8按钮可以运行一个SQL语句,当你点击F5功能键的时候,就是启动执行计划的分析了,这比命令行方式要方便很多倍,而且效果非常直观,如下图:
o_o14.JPG

    上面一部分是SQL语句,下面就是相对应的执行计划。与实际运行不同,在这里查看执行计划,不会真正的运行SQL语句,所以会很快得到计划结果,而不论数据量到底有多大。
    上面已经看到执行计划,那看这个计划有什么用呢?从计划里,我们可以清楚的看到是否使用了索引,如上图,TABLE ACCESS FULL(FTS)就是没有使用索引,如果数据量很大,而需要检查一条记录的时候,FTS将把所有数据进行扫描,速度是非常慢的,也就是利用这个执行计划,可以知道如何调优,比如建立索引等。还有一些更深入的用法,属于调优部分,不再多讲。
    这个工具还有很多的小功能,非常实用的亮点,大家可以在使用过程中不断发现。
    2.TOAD
    与上一个工具不同,这个工具更侧重于DBA管理功能,要说写代码的支持,我觉得还是上面的工具更人性化。
    作为开发人员,在TOAD里,我们可以做以下几个工作:
    A.导入导出功能
    TOAD的导入导出功能,实际上也是调用了Oracle自己的EXP/IMP功能,只是加上了UI界面,操作更加友好,可以实现更好的交互,因为使用命令行方式,交互很容易出错。在TOAD的菜单“DBA”中,可以找到导入和导出的功能,先看一下导出:
o15_o.JPG

    首先要指定导出方式,一般来说,常规的备份是按用户来备份,即第二个,其它各有个的功能,可以查询一下相关的文档。然后进行下一步:
o_o16.JPG

    选中需要备份的用户后,把它们放入右侧的框中,一次可以选择多个用户,然后再进行下一步,如果没什么特别需要,全按默认参数处理即可:
o_o17.JPG

    以此类推,一直点下一步,即可实现数据的导出。这种导出一般作为数据库的逻辑备份策略,与rman备份可以互为补充。
    导入的方式与导出基本相似,操作方式也相似,就不再多讲了,总之,用TOAD的导入导出会比较方便。 
    B.表分析
    从理论上讲,我觉得这个功能应该是DBA来操作的,但是程序员如果有权限,也可以自己操作,不过最好是在测试环境,对于正式环境,发现问题,需要申请DBA进行协助,因为有些不当的操作,会破坏原有的执行计划,甚至更严重的后果。
    说到这里,要说一下为什么要进行表分析。如果要回答这个问题,首先要说一下Oracle是怎么进行SQL查询的:查询中有一个步骤就是对所需要的SQL进行分析,得出正确的执行计划。在上一个工具中,我们已经提到怎么样检查执行计划,现在要做的就是当发现执行计划不对的时候,我们做一下表分析,有可能再检查执行计划就对了(只是有可能),因为执行计划需要依靠表分析的信息。
    这个功能位于Tools目录的Analyze All Objects,如下图:
o_o18.JPG

    点击后,出现新的窗口,对于程序员来说,我们只需要分析我们自己的表即可。
o_o19.JPG

    点击后,就把当前用户自己的所有表列出为供选择了,如下图:
o_o20.JPG

    然后选中左侧的复选框,点绿色的箭头,就开始了表分析,一般不做任务参数调整的话,会很快完成,并且在工具栏上有进度指示,大家可以自己看一下。     TOAD里的功能实在是太多了,大家有权限的话,自己试一下吧,记住不要在生产环境做测试噢。


本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2010/04/07/1706109.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
oracle数据库带或不带数据导入导出操作大全
oracle数据库带或不带数据导入导出操作大全
106 0
Oracle数据库的增删改操作介绍
前面的博文介绍了Oracle的简单查询操作,博客地址:http://blog.csdn.net/weixin_36380516/article/details/65935879 这里再对Oracle的更新操作即Oracle的增删改操作进行简单的介绍 首先要掌握对表结构的基本操作。 增加字段: alter table 表名 add(字段名 字段类型和长度) alter table
988 0
Oracle 11g数据库相关操作
1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出,怎么解决? 办法一:   设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。
676 0
ADO.Net对Oracle数据库的操作【转载】
一 ADO.Net简介 访问数据库的技术有许多,常见的有一下几种:开放数据库互联(ODBC)、数据访问对象(DAO)、远程数据对象 (RDO)、 ActiveX数据对象(ADO)。我们今天主要要学习ADO.NET中OracleClient命名空间中的几个常用对象,用这作为对ADO.NET认 识学习的开始。
1106 0
Oracle 数据库性能优化3日实战(企业培训)
课程名称一: Oracle性能优化及调整 课程时长 1天 课程深度: 高级 上机实验: 10%-30% 授课对象: Oracle开发人员、Oracle数据库管理人员,应用程序开发人员 课程描述: 本课程讲述Oracle数据库物理层规划,系统性能的监控,数据库性能参数调整,统计信息的收集,使用自动化调试工具优化数据库,I/O子系统的配置与设计以及性能优化方法论等。
1826 0
Oracle 10g Express Edition(XE) 转至数据库主页中文乱码问题的解决
Oracle 10g Express Edition是Oracle专门为小型用户提供的免费版本。
886 0
3576
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载