数据库等待事件管理-library cache lock

  1. 密码延迟验证

  2. liabrary cache lock测试(重新编译)

在move表过程中避免产生library cache lock

SELECT * FROM T1;

CREATE OR REPLACE procedure RO

AS

ID1 VARCHAR2(100);

ID2 VARCHAR2(100);

ID3 NUMBER:=10;

BEGIN

  FOR ID4 IN 1..ID3 LOOP

    DELETE FROM T1 WHERE ROWNUM<ID4;

    COMMIT;

    END LOOP;

    END;

SQL> select OBJECT_NAME,OBJECT_TYPE,STATUS from user_objects where object_name='RO';

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           VALID

###############对存储过程依赖对象进行ddl重新定义#######################

1 重命名

 ALTER TABLE T1 RENAME TO T4;

SQL> /

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           INVALID

SQL>  exec ro();

begin ro(); end;

ORA-06550: 第 1 行, 第 7 列:

PLS-00905: 对象 SYSTEM.RO 无效

ORA-06550: 第 1 行, 第 7 列:

PL/SQL: Statement ignored

ALTER TABLE T4 RENAME TO T1;

SQL> select OBJECT_NAME,OBJECT_TYPE,STATUS from user_objects where object_name='RO';

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           INVALID

SQL> exec ro();

PL/SQL procedure successfully completed

SQL> /

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           VALID

2 添加列

alter table t1 add id1 varchar2(100);

SQL> select OBJECT_NAME,OBJECT_TYPE,STATUS from user_objects where object_name='RO';

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           INVALID

SQL> exec ro();

PL/SQL procedure successfully completed

SQL> select OBJECT_NAME,OBJECT_TYPE,STATUS from user_objects where object_name='RO';

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           VALID

3 删除列

alter table t1 drop column  id1 ;

SQL> select OBJECT_NAME,OBJECT_TYPE,STATUS from user_objects where object_name='RO';

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           INVALID

SQL> exec ro();

PL/SQL procedure successfully completed

SQL> select OBJECT_NAME,OBJECT_TYPE,STATUS from user_objects where object_name='RO';

OBJECT_NAM OBJECT_TYPE         STATUS

---------- ------------------- -------

RO         PROCEDURE           VALID

总结:对于无效对象,对象重新被调用时将对对象进行重新编译。

SQL> COL OWNER FOR A6

SQL> COL NAME FOOR A10REFERENCED_OWNER

SQL> COL TYPE FOR A10

SQL> COL REFERENCED_OWNER FRO A10

SQL> COL REFERENCED_NAME FOR A10

SQL> SELECT *FROM DBA_DEPENDENCIES T1 WHERE T1.referenced_NAME='T1'

OWNER  NAME                           TYPE       REFERENCED_OWNER               REFERENCED REFERENCED_TYPE   

------ ------------------------------ ---------- ------------------------------ ---------- ------------------

PUBLIC A                              SYNONYM    SYS                            T1         TABLE                                                                                 

SYS    A                              SYNONYM    SYS                            T1         TABLE                                                                                           

SYSTEM RO                             PROCEDURE  SYSTEM                         T1         TABLE                                                                                           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值