« January 2006 | 首页

1 2 3 4 5 6 7 8 9 (Page 4 of 9)



| March 2006 »

February 18, 2006

本周言论 之 软件特性

为一个程序调不出来,为一个隐蔽故障不能发现,要死要活...那种劳累是难以形容的,比我现在到外头做做报告,人大开会要累得多。
--"当代毕昇"王选

A lot of people complain about the Firefox "memory leak(s)". All versions of Firefox no doubt leak memory -
it is a common problem with software this complicated.What I think many people are talking about however with Firefox 1.5 is not really a memory leak at all. It is in fact a feature.
--Ben Goodger( Firefox 项目主程序员) 把 Firefox 的内存泄漏问题解释为“软件特性”

Digg是第一次让科技新闻的读者决定那些新闻是每天重要的,而不是编辑。
--Digg的创始人Kevin Rose

中国上3G的时间比较晚,可以采用更先进的技术
--中国移动总裁王建宙

我们卖出一张唱片,非法的网络下载就已经造成了9张唱片的损失。
--华友飞乐唱片公司总经理钟雄兵


这一系列 Blog 记录我看到的一些有趣、有意义或者是比较幽默的言论。尽量减少自己的评论。当然,这些言论只是我本周看到的,不一定是发生在本周。

February 17, 2006

图形工具是 DBA 的敌人?

最近 AnySQLITPub 上发了一个帖子: 多少DBA能离开OEM/TOAD/PLSQL Dev来工作? , 引来了很多人的讨论. 整理一下大家的观点,大致分为如下几类:

  • 工具能提高效率, 为啥不用?
  • 坚决不用;
  • 用不用都成; 解决问题就成;
  • 用来学习; 查看一些 SQL 很方便;

真是个仁者见仁,智者见智的问题. 图形化工具对于一个合格的 DBA 来说, 很多时候还是有缺点的,

一个图形化工具慢慢把 DBA 工作大众化了.这样作为一个DBA用图形化工具被人家看到了,显得不那么专业: 都是图形化的工具,普通开发人员随便点击几下子鼠标,不也成了 DBA 了? Oracle 10g 大大加强了 OEM 的功能, 很多人惊呼 Oracle 数据库管理员下岗的日子快到了. 在我看来,这恰恰是一个好消息。图形化工具上手容易,不可避免的很多人会浅尝辄止不去研究系统细节的问题,正是真正的 DBA 提高身价的好时候 :)

二是, 对图形化工具一旦产生依赖性, 应付突发事件的时候会有些局促感, 直观的东西隐藏了太多细节,而作为一个 DBA 更多的时候是要主动发现细节内容体现出来的问题; 这一点在讨论中很多人也提到了,一看没有安装 Toad ,就没法子上手了。

问题可能还有其他的,但是不是说 GUI 工具一无是处了,也不能说有这些问题就坚决不用 GUI 了。有的时候,开发人员依赖于 IDE 的, 就遇到的问题咨询 DBA ,不显得自己 IDE 用的很熟练的样子还真的说不过去; 再比如,抽取 DDL 语句这样的日常操作, GUI 工具的便利性还是有一些的。

还是针对图形化工具可能给我们带来的问题来说吧。"工具善其事,必先利其器", 这个“器”可不是 GUI 工具哦. 建立一套针对自己的跨平台工具包是必须的,很多 DBA 都有一套适合自己的工具包. 当然,光有工具没有用,适当的提高一下记忆力也有必要,至少,再参加面试的时候可以唬主考官一下。

参见 AnySQL 的Blog上的PR

--
一句题外话:作为一个 DBA ,你是希望合格的 DBA 多一些还是少一些好呢?

用 Statspack 收集 SQL 执行计划历史信息

小技巧一个:在一个开发环境中,可以考虑把用户的SQL执行计划历史也收集进来.很简单,但是对开发 DBA 会很有帮助, 根据 HASH_VALUE 查询相关过去某个时间段内的 SQL 执行计划.一共两步:

1 Statspack 的 level 6 收集所有的统计和执行计划. 用 level 6 收集快照(Snap)信息:

SQL> execute statspack.snap (i_snap_level=>6);

2 运行 $ORACLE_HOME/rdbms/admin/sprepsql.sql 脚本抽取特定 HASH_VALUE 的 SQL 信息:

Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 16
Begin Snapshot Id specified: 16

Enter value for end_snap: 21 End Snapshot Id specified: 21

Specify the Hash Value ~~~~~~~~~~~~~~~~~~~~~~ Enter value for hash_value: 479732399 Hash Value specified is: 479732399

Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~ The default report file name is sp_16_21_479732399. To use this name, press to continue, otherwise enter an alternative. Enter value for report_name:

Using the report name sp_16_21_479732399

STATSPACK SQL report for Hash Value: 479732399 Module: java@Localhost(TNS V1-V3)
DB Name DB Id Instance Inst Num Release Cluster Host ------------ ----------- ------------ -------- ----------- ------- ------------ DEMO 1702625429 DEMO 1 9.2.0.6.0 NO Localhost
Start Id Start Time End Id End Time Duration(mins) --------- ------------------- --------- ------------------- -------------- 16 17-Feb-06 09:54:05 21 17-Feb-06 16:24:05 390.00
SQL Statistics ~~~~~~~~~~~~~~ -> CPU and Elapsed Time are in seconds (s) for Statement Total and in milliseconds (ms) for Per Execute % Snap Statement Total Per Execute Total --------------- --------------- ------ Buffer Gets: 7,931 7,931.0 .00 Disk Reads: 6,688 6,688.0 1.35 Rows processed: 0 0.0 CPU Time(s/ms): 0 450.0 Elapsed Time(s/ms): 2 2,022.0 Sorts: 0 .0 Parse Calls: 1 1.0 Invalidations: 0 Version count: 1 Sharable Mem(K): 145 Executions: 1
SQL Text ~~~~~~~~ select * from view_return where ((return_status = 'SUCCESS') AND (Seller_id = :1))
Known Optimizer Plan(s) for this Hash Value ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Shows all known Optimizer Plans for this database instance, and the Snap Id's they were first found in the shared pool. A Plan Hash Value will appear multiple times if the cost has changed -> ordered by Snap Id
First First Plan Snap Id Snap Time Hash Value Cost -------- --------------- ------------ ---------- 18 17 Feb 06 11:54 3233489309 319
Plans in shared pool between Begin and End Snap Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Shows the Execution Plans found in the shared pool between the begin and end snapshots specified. The values for Rows, Bytes and Cost shown below are those which existed at the time the first-ever snapshot captured this plan - these values often change over time, and so may not be indicative of current values -> Rows indicates Cardinality, PHV is Plan Hash Value -> ordered by Plan Hash Value
-------------------------------------------------------------------------------- | Operation | PHV/Object Name | Rows | Bytes| Cost | -------------------------------------------------------------------------------- |SELECT STATEMENT |----- 3233489309 ----| | | 319 | |HASH JOIN | | 396 | 198K| 319 | | HASH JOIN | | 396 | 93K| 311 | | HASH JOIN OUTER | | 396 | 80K| 258 | | HASH JOIN | | 309 | 48K| 251 | | TABLE ACCESS FULL |ORACLE_RETURN | 309 | 31K| 3 | | TABLE ACCESS FULL |ORACLE_RETURN_GOODS | 201K| 10M| 239 | | TABLE ACCESS FULL |ORACLE_TIMEOUT | 678 | 32K| 6 | | TABLE ACCESS FULL |ORACLE_GOODS | 42K| 1M| 49 | | TABLE ACCESS BY GLOBAL INDEX RO|ORACLE_GOODS | 1K| 279K| 6 | | INDEX RANGE SCAN |IND_ORACLE_GOODS_NAME| 1 | | 1 | --------------------------------------------------------------------------------
End of Report

@>

多么糟糕的一条语句阿 :)

February 16, 2006

Oracle Raptor 更名为 Oracle SQL Developer

Oracle 最近喜欢上了对产品项目改名字, 继 Oracle HTML DB 更名为 Oracle Application Express 之后, Raptor 项目也更名为 Oracle SQL Developer .

Raptor 项目发展迅速, 不到三个月时间的时间内, 已经从 Early Adopter release 1 发展到了 Early Adopter release 4 .

Oracle 承诺在 06 年第一季度发布正式版本.并且,该软件将一直免费. 这样 Oracle SQL Developer + Oracle Database 10g Express Edition 构成了一套免费的 Oracle 开发环境.

我感兴趣的这个版本的一些改进:

1 第一次启动的时候提示关联相关文件类型;
2 登录框处可以选择密码保存了;
3 SQL WorkSheet 提供的 SQL History 功能进行改进; (Oracle SQL*Plus 什么时候提供命令行历史功能呢 ?)

用不了多久,可以建议公司的开发人员抛掉 PL/SQL Developer 转而使用 Oracle SQL Developer 了

本站相关标签|Tags Cloud