包编译卡住的终极解决办法

在数据库开发过程中,经常遇到一个很烦躁的现象:刚修改好的包一编译就卡死了,PL/SQL变成一片空白,又不忍心关闭,这可是耗死多少脑细胞才写出来的!!!只好去求DBA帮忙解决,可是人家也不是每次都会耐心帮你解决,结果经常碰一鼻子灰,所以了,求人不如求己,下面就让我们自己学会去解决这个烦人的问题。。

首先我们先了解下与这种卡死现象相关的几个视图:

1)v$access

V$ACCESS displays information about locks that are currently imposed on library cache objects. The locks are imposed to ensure that they are not aged out of the library cache while they are required for SQL execution.

v$access里存放的是数据字典缓存中的对象,包括表,包,游标等(库缓存缓存的是最近执行的代码),所以你当前编译的包是可以查到的,执行完毕后一般就会v$access中消失。不过有种情况要注意下,如果一个session执行了包A后就停下来了(session对应的状态为INACTIVE),执行完毕后,session与包A可能还是存在于v$access中,直到这个session再次执行另外的sql,这种情况是不会影响你包的编译。所以当你看到v$access中有你要编译的包,不要惊慌,它不一定是凶手,去v$session中确认下状态再做判断。

2)DBA_DDL_LOCKS

DBA_DDL_LOCKS lists all DDL locks held in the database and all outstanding requests for a DDL lock.

当你编译包时,oracle就会对这个包加个DDL锁,同时也会这个包所引用的对象加DDL锁(与DDL锁对应的是DML锁,记录在V$locked_object里,sql语句执行完毕后,DML锁不会消失,必须commit或rollback)


下面我们做几个实验来验证上面的理论(其实上面也是我从别处看到的,对不对还得自己去验证)

1. 用PL/SQL随便调试个sp,让它停在调试状态;


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java开发框架,可以简化Java应用程序的开发和部署。它可以帮助开发者快速构建独立的、可以运行的Spring应用程序,并且提供了许多便捷的功能和特性。 在开发过程中,热部署是一个非常重要的功能。当我们修改了代码后,可以快速部署和查看修改的效果,而无需重新启动应用程序。然而,Spring Boot默认情况下并不支持热部署,因此我们需要进行一些配置才能实现热部署的功能。 使用Spring Boot进行热部署的终极解决办法是使用Spring Loaded或JRebel插件。这两个插件可以实现在修改代码后自动重新加载修改的类。具体配置步骤如下: 1. 在pom.xml文件中添加Spring Loaded或JRebel插件的依赖。 对于Spring Loaded,添加以下依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.8.RELEASE</version> <scope>provided</scope> </dependency> ``` 对于JRebel,添加以下依赖: ```xml <dependency> <groupId>org.zeroturnaround</groupId> <artifactId>jrebel-spring-boot2</artifactId> <version>1.0.0</version> </dependency> ``` 2. 在IDE中启用自动编译功能。 在IDE的设置中,启用自动编译选项,以便在修改代码后自动重新编译。 3. 启用热部署功能。 对于Spring Loaded,使用以下命令启动应用程序: ```bash java -javaagent:springloaded.jar -noverify -jar your-application.jar ``` 对于JRebel,使用以下命令启动应用程序: ```bash java -javaagent:jrebel.jar -jar your-application.jar ``` 4. 修改代码并保存。 在代码修改后,保存文件以触发自动重新加载。 通过以上步骤配置后,修改的代码将会自动重新加载,无需手动重启应用程序。这就是使用Spring Boot进行热部署的终极解决办法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值