[20150719]Null特性、sed的变量调用、锁死对象的处理,for in与echo的结合使用

来源:互联网 发布:java中sleep的用法 编辑:程序博客网 时间:2024/05/29 02:49

1、NULL的特性


NULL是数据库中特有的数据类型,当一条记录的某个列为NULL,则表示这个列的值是未知的、是不确定的。既然是未知的,就有无数种的可能性。因此,NULL并不是一个确定的值。

这是NULL的由来、也是NULL的基础,所有和NULL相关的操作的结果都可以从NULL的概念推导出来。

判断一个字段是否为NULL,应该用IS NULL或IS NOT NULL,而不能用‘=’。对NULL的判断只能定性------(即是不是NULL(IS NULL/IS NOT NULL)),而不能定值。简单的说,由于NULL存在着无数的可能,因此两个NULL不是相等的关系,同样也不能说两个NULL就不相等,或者比较两个NULL的大小,这些操作都是没有意义,得不到一个确切的答案的。因此,对NULL的=、!=、>、<、>=、<=等操作的结果都是未知的,也就算说,这些操作的结果仍然是NULL。


因此在使用case 语句时如

case col_name when null

这样的方式是不可使用的


2、sed对变量进行引用查找替换的小知识

sed: 可以使用单引号及双引号(可引用变量)——使用双引号时默认为引用环境变量


3、oracle中锁的处理

1.下面的语句用来查询哪些对象被锁:

select object_name,machine,s.sid,s.serial# 
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;



2.下面的语句用来杀死一个进程:
alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)


【注】以上两步,可以通过Oracle的管理控制台来执行。


3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program 
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24 (24是上面的sid)


4.在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令: 
#kill -9 12345(即第3步查询出的spid)


4、对使用echo后得到的列表的处理:

对非空行的循环列表,考虑for line in
e.g.


for line in `echo *.sh`
do
..
done

0 0
原创粉丝点击