2011年1月24日星期一

HTML5学习材料

英文学习资料 http://diveintohtml5.org

2010年12月6日星期一

TEMPFILEの作り直す

TEMP領域が一度使われたら、v$sort_segment内の数字は減らすことができません。
それをリセットする方法を紹介します。

1.TEMPDATAを削除
  alter database tempfile '/path/to/temp/file' drop;
2.TMEPDATAを追加しなおす
  alter tablespace temp add tempfile '/path/to/temp/file';

※TEMP領域名は temp とする場合

2010年11月26日星期五

ORACLE里面的统计行数

ORACLE里面有很多统计用的函数,比如COUNT, SUM, MAX, LAST_VALUE, FIRST_VALUE。
乍一看可能觉得很好理解,没什么复杂的。
但是如果一个窗口的概念不弄明白的话,你会觉得很复杂,很难用,然后怀疑这些个函数都不好用了。

比方说你想一张薪水的历史记录表,
salary_history
emp_id,
salary,
update_date

你想找出每个人最新的薪水的值
select last_value(salary) over (partition by emp_id order by update_date rows between unbounded preceding and unbounded following) from salary_history;

其中 rows between unbounded preceding and unbounded following 就是指定了窗口:所有的数据。
如果不指定的话,默认的窗口是 range between unbounded preceding and current row,也就是当前记录为止的所有记录。

这个默认窗口只是对有order by的数据才有效, 而max, count函数如果不指定order by, 那么他的对象就是所有的数据。这点在ORACLE的文档里并没有提及的。

2010年11月9日星期二

通过表移动来提高Oracle表的空间利用率

表经过多次的插入,更新,删除之后,会存在断片化的问题。表空间的使用率降低,而且影响性能。
可以用以下的方法来改善。

alter table tab1 move;
alter index tab1_ind1 rebuild;
alter index tab1_ind2 rebuild;

表的移动,内部动作是把表数据拷贝到临时表空间,复制处理结束后,切换掉旧的表空间,所以需要有空余的表空间才能支持这个操作。
索引重建是因为旧的ROWID发生变化,导致无效

2010年11月8日星期一

oracle v$session v$process

v$session 里面有关于进程process的信息,那个客户端的信息, 而v$process里面的spid是oracle服务进程的ID,不要搞混了。

v$session里面的process列里面有的时候显示 196:1148, 2段信息是客户端自己的序列号

这两个视图由以下相连接

v$session.paddr = v$process.addr

2010年11月4日星期四

/proc/cpuinfoの見方

# cat /proc/cpuinfo |egrep 'physical id|core' |sort

1个物理CPU,4个Core,单线程

core id         : 0
core id         : 1
core id         : 2
core id         : 3
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0


2个物理CPU,2core,2线程

core id         : 0
core id         : 0
core id         : 1
core id         : 1
core id         : 2
core id         : 2
core id         : 3
core id         : 3
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1

2010年10月8日星期五

小技巧:如何把竖着排列的数据转换成横着排列

最开始想到的是用 xargs 命令,这样就可以把数据显示出来了。

cat filename  | xargs

但是xargs是专为执行命令开发的,所以当数据头尾有双引号或者单引号是会被删掉的。
之后想到的是用替换命令把行尾的回车替换成空格

cat filename | sed -e 's/\n/ /'
可惜sed对回车的正规表达式支持不够。

最后我改用perl,perl的正规表达式很强,该有的都有,不该有的也有:)命令如下
cat filename | perl -pe 's/\n/ /'

perl对处理文字方面的确很强。可以与其他命令串联组合使用,很实用。