[20150719]Null特性、sed的变量调用、锁死对象的处理,for in与echo的结合使用
2015-07-19 15:28
295 查看
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
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
相关文章推荐
- FLUSH TABLES WITH READ LOCK 和 LOCK TABLES 之种种
- [LeeCode]Power of Two
- Centos 6.5 配置hadoop2.7.1
- 极客学院 java 集合使用 简单代码
- 点是否在 三角形,凸多边形, 凹多边形,四面体内 的判断
- 【LeetCode 34】Search for a Range
- COM线程模型调试
- [LeetCode]Permutations II(!!!!!DFS递归&&回溯)
- Apache的prefork模式和worker模式
- html5实现带提示文字的输入框(摆脱js)
- 数据表
- Hadoop Counter
- 2015/7/19 Django学习之入门
- Git基础---Git常用命令
- [Android]The connection to adb is down, and a severe error has occured.
- java创建二叉树并实现非递归中序遍历二叉树
- VS2012如何创建模板
- 学习MongoDB 七: MongoDB索引(索引基本操作)(一)
- dos格式转变为unix格式 总结
- C++中的unique(),unique_copy()的用法