摘要:
从AWR报告里发现一个SQL存在大量的version_count. SYS@xezf(qs-xezf-db1)> select sql_id,version_count from v$sqlarea where version_count> 500 order by 2 desc ;SQL_ID VERSION_COUNT------------- -------------9rwd4wkwm4bsy 3046cpqsn8zak6sw4 298566x4djqka2ppy 9760z7n7sst85222 617 在v$sqlarea 中保存了SQL的cursor,当有大量的ver 阅读全文
摘要:
读一致性即确保查询的结果与发起查询的时刻的数据一致,不管在此查询期间其他事务有没有更改数据。首先假设我们有如下函数用来根据部门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... 阅读全文
摘要:
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 阅读全文
摘要:
已知:测试用户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... 阅读全文
摘要:
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 阅读全文
摘要:
--******************************************-- 使用DBMS_SHARED_POOL包将对象固定到共享池--****************************************** DBMS_SHARED_POOL包提供存储过程来将PL/SQL对象或SQL游标固定到Oracle 共享池。一旦这些对象固定之后,将不再参与aged out,而是常驻内存,即便是使用alter system flush shared_pool也不会将对象清除出共享池。 对于一些大值对象装载进共享池时容易引发两种类型的问题: ORA-04031 errors.. 阅读全文