[20150719]Null特性、sed的變量調用、鎖死對象的處理,for in與echo的結合使用

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章