Tips: AUL License, DBA Tools

学习与成长的困惑

Posted by anysql on 2010-08-29

    参加工作的人, 都会对学习与成长有一定的困惑, 在某个特定的时期还可能困于其中, 这些都是正常的. 昨天和一个工作一年的DBA同事去聊天, 刚好他有这个疑问, 于时就和他说了一下我的感觉.

    成长中最大的困惑来自于取舍不定, 8月25日技术部的半年会和8月26日公司的半年会中, 我看着年轻人在舞台上表演, 非常地有才, 心里很有冲动, 要去学一学, 找他们比一比. 不过等节目过后没有多久, 我突然明白过来, 本质上我是想和他们比年轻, 而这个是比不过的, 比他们大了一轮, 是铁定的事实, 所以我没有为此感到烦恼, 在心中将这个目标轻轻地放下了. 看见有的DBA很历害, 做得非常好, 就要去学习, 会因为一年内没有跟上而伤神; 看见有的SA对底层很了解, 就要去学习, 会因为一年内没有跟上而忧郁. 世间美好的事或者人实在太多了, 更何况要在一年就与他们端平呢? 拿我自已来讲, 在工作了十年后, 才对Oracle有些感觉, 也只是不管遇到什么问题, 都可以找到思路的感觉, 但他只工作了一年, 就要得到这么多, 非得和其他比, 精神可嘉, 陷于其中就不好了.

    昨天我故意选择了在爬山时去讨论这个问题, 从西湖边上的老和山出发, 一开始没有定目标. 在刚上山时, 大一轮的我直喘气, 而他却闲庭信步一样. 到北高峰时, 我注意到他也开始有些喘气了, 我选择了继续走. 大部份人只走到北高峰, 很少人再向前走的, 从山上向下看, 向杭州城的西看, 很美, 除了空气不够通透. 在那一段路上, 同事感觉是走得比较累的, 走过了最困难的一段下坡后, 我让他回头看看, 并问他从老和山要来到这里, 有什么好方法? 从山上过来, 只有一步一个脚印地过来, 好象没有其他方法, 我们也就两个小时多一点, 就到了这里, 一步一个脚印好象也不慢啊, 而且一路上的感觉很好. 在学习与工作上又何曾不是如此呢?在爬山时一步一步走, 我们领略了很多风景, 但学习上你正在一步一步走时, 却产生了很多疑惑.

    看书是学习的重要手段, 但工作后经常觉得没有时间看书, 或者是看书能起的作用越来越少. 对于前一点, 我们知道在学校时, 经常是考试前几天突击的, 这样也能过了考试, 但工作中这种方式看书对工作是没有什么帮助的, 现在来讲考试中的题目是比较固定的, 而工作中遇到的问题是不固定的, 因此看书应当象上面那样一步一步地看, 但要不停地去看去慢慢理解. 其实我问同事, 你一本书看多少次? 他告诉我只看了一篇, 如果说看一篇就想全部用出书中的, 那每个人读完高中读完大学后就已经足够他用一生了, 工作中就不要再看书了. 其实第一次看时, 实在搞不明白的就先跳过去吧, 象恋爱, 没有人能肯定第一次失败后, 第二次一定能成功, 也就是光学习一次是不够的. 才看了一两次书, 就为无所得而烦恼, 实在不需要.

    年轻人的事情, 应当多找找年轻人去聊聊, 在一个公司大家既是朋友也是战友, 既然是战友, 肯定要谈战, 因此在外面活动时谈谈工作也很正常, 而且一定要谈, 同战友一起谈大家一起进步.

DataReport的多栏显示

Posted by anysql on 2010-08-23

    当显示一些窄表数据时, 我们希望能在页面上分几列显示, 比如使用横向排的两个表格显示EMP表中全部14个员工的编号和名字, 以减少页面滚动, 在可视的一页中呈现尽可能多的数据.

EMPNO ENAME
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
EMPNO ENAME
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER

    在DataReport只需要设定数据的页面数, 在上面的例子中是2页, 就可以达到分栏显示的目标了.

WEBCHART.QUERY_2=SELECT EMPNO,ENAME FROM EMP
WEBCHART.PAGES_2=2

    和分组展示功能无缝集成, 如下页所示:

DEPTNO ENAME
10 CLARK
KING
MILLER
20 JONES
FORD
ADAMS
SMITH
DEPTNO ENAME
20 SCOTT
30 WARD
TURNER
ALLEN
JAMES
BLAKE
MARTIN

    当我们在一个页面中显示大量服务器的主要负载数据时, 分栏显示的效果就会很好.

AIX下获得HBA卡的IO流量信息

Posted by anysql on 2010-07-14

    IO历史是调优的兵家必争之地, 然而存贮厂商对IO的性能数据接口采用了保守的态度, 不对用户免费开放, 只提供定向开发服务, 没办法只能从主机这块入手了. 在AIX下可以用scsistat小程序来实时查看HBA卡上的流量.

    在命令行不带参数运行时, 会将IO性能数据直接写在屏幕上.

[oracle@test:/home/oracle/xinloufx]scsistat.bin
2010-07-14 17:07:15,test,fscsi2,2368,32,150,148,4
2010-07-14 17:07:15,test,fscsi3,2368,48,151,148,2
2010-07-14 17:07:15,test,fscsi0,2352,32,149,147,0
2010-07-14 17:07:15,test,fscsi1,2368,32,150,148,2
2010-07-14 17:07:25,test,fscsi2,2304,32,146,144,1
2010-07-14 17:07:25,test,fscsi3,2320,32,147,145,2
2010-07-14 17:07:25,test,fscsi0,2288,80,148,143,3
2010-07-14 17:07:25,test,fscsi1,2320,48,148,145,5

    各个列的数据依次为: 时间, 主机名, 光纤通道, RBLKS, WBLKS, XFERS, XRATE, IOTIME. 可以将数据用file选项输出到文件, 然后进行数据处理.

scsistat.bin file=scsistat.dat wait=60

    上面的命令将会每分钟收集一次性能数据,并将性能数据写入到scsistat.dat文件. 画成曲线分析,将会更显效果.

    上面的曲线可用AnySQL DataReport轻松制作出来.

控制SQLULDR2的字符集

Posted by anysql on 2010-06-24

    默认情况下, Oracle客户端程序的字符集都由环境变量(NLS_LANG)决定, 很多时侯会因为忽略了环境变量的检查, 尤其是在Shell或Perl脚本中调用时, 导致导出的数据变成了乱码. 在OCI 8的接口中, 可以使用OCIEnvNlsCreate函数在程序中指定客户端字符集, 从而跳过环境变量的影响, 于是就在SQLULDR2工具中新增了两个选项, 用于指定导出时了字符集.

    新的SQLULDR2工具命令行帮助如下所示:

SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.1
(@) Copyright Lou Fangxin (AnySQL.net) 2004 – 2010, all rights reserved.

Usage: SQLULDR2 keyword=value [,keyword=value,...]

Valid Keywords:
  user    = username/password@tnsname
  sql    = SQL file name
  query  = select statement
  field  = separator string between fields
  record  = separator string between records
  rows    = print progress for every given rows (default, 1000000)
  file    = output file name(default: uldrdata.txt)
  log    = log file name, prefix with + to append mode
  fast    = auto tuning the session level parameters(YES)
  text    = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).
  charset = character set name of the target database.
  ncharset= national character set name of the target database.
  parfile = read command option from parameter file

  for field and record, you can use ’0x’ to specify hex character code,
  \r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0×09, :=0x3a, #=0×23, “=0×22 ‘=0×27

    在一个GBK的数据库中存入”中国”两个字, 然后以GBK和UTF8两种不同的字符集进行导出, 在命令行指定字符集设置.

C:\>sqluldr2 scott/tiger query=test charset=ZHS16GBK
      0 rows exported at 2010-06-24 09:12:27, size 0 MB.
      1 rows exported at 2010-06-24 09:12:27, size 0 MB.
        output file uldrdata.1.txt closed at 1 rows, size 0 MB.

C:\>dir uldrdata.1.txt
2010-06-24  09:12                5 uldrdata.1.txt

C:\>sqluldr2 scott/tiger query=test  charset=UTF8
      0 rows exported at 2010-06-24 09:12:42, size 0 MB.
      1 rows exported at 2010-06-24 09:12:42, size 0 MB.
        output file uldrdata.1.txt closed at 1 rows, size 0 MB.

C:\>dir uldrdata.1.txt
2010-06-24  09:12                7 uldrdata.1.txt

    用GBK导出时, 文件大小为5个字节, 两个汉字(一个汉字占两个字节)再加一个换行符. 而用UTF8导出时, 文件大小为7, 两个汉字(一个汉字占三个字节)加上一个换行符. 如果用SQLULDR2为特定的数据库写脚本程序时, 在命令行指定字符集, 将使脚本更加强壮.

    另外, SQLULDR2将终结新功能的开发了, 除非有商业的需求.

2011年起SQLULDR2中的收费功能

Posted by anysql on 2010-06-19

    决定从2011年开始, 对文本导出工具SQLULDR2中的部份功能收费, 当然这些收费的功能一般是用不到的, 所以大家也不用太担心这个工具还能不能再用. 四个收费的功能是: 自动生成SQL*Loader控制文件, 按记录数切分文件, 按大小切分文件, 大表并行导出, 如果对这个有很强的意见, 可以在这里回复.

    自动生成SQL*Loader控制文件功能取决于是否用TABLE参数指定目标文件名.

sqluldr2 … table=target_table control=target_table.ctl

    按记录数切分文件的功能取决于三个命令行选项: FILE, ROWS, BATCH. 其中FILE选项指定的文件名中需要包括”%b”特征串, 以表示生成的文件号. ROWS指定单个文件的记录数, 而BATCH则指定是否切换成多个文件.

sqluldr2 … rows=100000 batch=yes file=uldrdata.%b.txt

    按大小切分文件的功能取决于两个命令行选项: FILE, SIZE. 其中FILE选项指定的文件名中需要包括”%b”特征串, 以表示生成的文件号; 而SIZE选项指定每个文件的目标大小.

sqluldr2 … size=100 file=uldrdata.%b.txt

    大表并行导出功能, 用法比较复杂一些, 可以参照这篇英文文章. 注册码和源数据库的名字关联,只要源库的名字相同,则可以共用注册码,并且DataCopy, DataSync, oramon也自动获得注册码, 实际上是这四个工具的注册码一起获得.


(©)Copyright 2006-2010 AnySQL.net. All rights reserved.