学习《Oracle 9i10g编程艺术》的笔记 (十) 锁
1.在Oracle 中,你会了解到:
事务是每个数据库的核心,它们是“好东西”。
应该延迟到适当的时刻才提交。不要太快提交,以避免对系统带来压力。这是因为,如果
事务很长或很大,一般不会对系统有压力。相应的原则是:在必要时才提交,但是此前不要提
交。事务的大小只应该根据业务逻辑来定。
只要需要,就应该尽可能长时间地保持对数据所加的锁。这些锁是你能利用的工具,而不
是让你退避三舍的东西。锁不是稀有资源。恰恰相反,只要需要,你就应该长期地保持数据上
的锁。锁可能并不稀少,而且它们可以防止其他会话修改信息。
在Oracle 中,行级锁没有相关的开销,根本没有。不论你是有1 个行锁,还是1 000 000
个行锁,专用于锁定这个信息的“资源”数都是一样的。当然,与修改1 行相比,修改1 000 000
行要做的工作肯定多得多,但是对1 000 000 行锁定所需的资源数与对1 行锁定所需的资源数
完全相同,这是一个固定的常量。
不要以为锁升级“对系统更好”(例如,使用表锁而不是行锁)。在Oracle 中,锁升级(lock
escalate)对系统没有任何好处,不会节省任何资源。也许有时会使用表锁,如批处理中,此
时你很清楚会更新整个表,而且不希望其他会话锁定表中的行。但是使用表锁绝对不是为了避
免分配行锁,想以此来方便系统。
可以同时得到并发性和一致性。每次你都能快速而准确地得到数据。数据读取器不会被数
据写入器阻塞。数据写入器也不会被数据读取器阻塞。这是Oracle 与大多数其他关系数据库之
间的根本区别之一。
2.丢失更新
丢失更新(lost update)是一个经典的数据库问题。实际上,所有多用户计算机环境都存在这个问
题。简单地说,出现下面的情况时(按以下所列的顺序),就会发生丢失更新:
(1) 会话Session1 中的一个事务获取(查询)一行数据,放入本地内存,并显示给一个最终用户User1。
(2) 会话Session2 中的另一个事务也获取这一行,但是将数据显示给另一个最终用户User2。
(3) User1 使用应用修改了这一行,让应用更新数据库并提交。会话Session1 的事务现在已经执行。
(4) User2 也修改这一行,让应用更新数据库并提交。会话Session2 的事务现在已经执行。
这个过程称为“丢失更新”,因为第(3)步所做的所有修改都会丢失。例如,请考虑一个员工更新屏幕,
这里允许用户修改地址、工作电话号码等信息。应用本身非常简单:只有一个很小的搜索屏幕要
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
今天做了1个数据导入需求,文本记录有12万多条,TXT文件大小6M多,因为以前都是用oracle的text import方式导入,刚试验了一下,不灵验,当导入到2万多条的时候,PLSQL就当掉了,走不动了。
因为考虑到1次导入,所有决定采用SQLLOADER的方式。 ......
把自己搜集的资料贴出来,学习工作方便占。
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2.CHR
给出整数,返回对应的字符;
SQ ......
--JOBS
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT(job => X,
what => 'sp_test();',
next_date => to_date('28-04-2009 11:58:00',
'dd/mm/yyyy hh24:mi:ss'),
interval => 'SYSDATE+1');
END;
/
commit;
select to_char(sysdate-90,'yyyymmdd') from dual; --选择日期
select * from ......
删除AIX下的ORACLE
===========================================================
作者: wmlm(http://wmlm.itpub.net)
发表于:2008.12.02 18:17
分类: oracle
出处:http://wmlm.itpub.net/post/12871/474762
---------------------------------------------------------------
rm -Rf /etc/oratab
rm -Rf /et ......