2011年6月24日

摘要: 读一致性即确保查询的结果与发起查询的时刻的数据一致,不管在此查询期间其他事务有没有更改数据。首先假设我们有如下函数用来根据部门id求该部门的总薪资:CREATE OR REPLACE FUNCTION sum2(p_deptno IN NUMBER) RETURN NUMBER IS --PRAGMA AUTONOMOUS_TRANSACTION; l_ret NUMBER; BEGIN dbms_lock.sleep(5); --DBMS_BACKUP_RESTORE.SLEEP(5); dbms_output.put_line(systimestamp); SELECT... 阅读全文

posted @ 2011-06-24 20:47 xublogs 阅读(462) 评论(0) 推荐(0) 编辑

摘要: SET TRANSACTION READ ONLY实际上是实现数据库四大事务(ACID)中隔离性(Isolation)的一种手段,用来将数据的读一致性定在某一时间点,即不管其他事务如何更改数据(不能在当前session中再使用自治事务),在当前事务中进行查询的结果始终不变。由于Oracle的读一致性是通过undo段来实现的,所以如果在此期间DML修改的数据量很大而undo空间设置过小可能会导致ORA-01555(快照过旧)错误。Test Code:Step 1, @session 1(SET TRANSACTION READ ONLY):Connected to Oracle Database 阅读全文

posted @ 2011-06-24 20:11 xublogs 阅读(1226) 评论(0) 推荐(0) 编辑

摘要: 已知:测试用户tuser1,测试角色trole1,trole1已经授权给了tuser1。在测试一段程序时需要用到延时,于是就把dbms_lock授权给了trole1,放在匿名块里测试没有问题:SQL> set serveroutput on; SQL> SQL> BEGIN 2 dbms_output.put_line(systimestamp); 3 -- dbms_backup_restore.sleep(3); 4 dbms_lock.sleep(3); 5 dbms_output.put_line(systimestamp); 6 EN... 阅读全文

posted @ 2011-06-24 16:39 xublogs 阅读(1826) 评论(0) 推荐(0) 编辑

摘要: Suppose a subprogram declares an IN parameter, an OUT parameter, and an IN OUT parameter. When you call the subprogram, the IN parameter is passed by reference. That is, a pointer to the IN actual parameter is passed to the corresponding formal parameter. So, both parameters reference the same memor 阅读全文

posted @ 2011-06-24 13:59 xublogs 阅读(4465) 评论(0) 推荐(0) 编辑