oracle 如何将依赖项/ uber jar作为单个java数据库对象加载

t98cgbkg  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(94)

简单地说,我的问题是:我希望将Java类作为单独的紧凑对象加载,然后发布它们,但这些类具有依赖性,这会导致数据库出现问题。也就是说,如果我尝试通过这个命令加载uber/fat jar:

CALL dbms_java.loadjava('-r -v -f /home/usr/javastuff/Application.jar');

我得到了+350个Java数据库(模式)对象,导致服务器出现问题(有时;它是不相关的),并且从一个依赖项管理如此多的对象会变得混乱。如果我有更多的依赖项,Java数据库对象的数量就会激增。为了给予一个例子,假设这个Java类(ojdbc只是一个占位符):

import java.sql.SQLException;
import oracle.sql.BLOB;

public class Application {
    public static Long BlobLength(BLOB myBlob) throws SQLException {
        // Do Logic
        return myBlob.getLength();
    }
}

我希望这种类型的方法是可扩展和可扩展的,而不会从其依赖关系中产生数千个Java数据库对象。换句话说,我希望这些方法来自自包含的单元,以便重用和组织。如果可以通过Java资源或类似资源实现的话,单独封装每个依赖jar也是可以接受的。
我欢迎任何解决方案(即使用oracle软件包),如果它是一个奇怪的解决方案。我只是想避免在我的数据库中有成千上万的无用的Java对象,这些对象来自我只使用过一次的依赖项。

j2qf4p5b

j2qf4p5b1#

这不应该是一个问题。如果它创建了350个模式对象,那么这就是它将XML加载到数据库所需要的,您只需接受这一点。

  • 如果你只使用它们一次,那么就使用它们,然后卸载它们。
  • 如果您无法跟踪所有对象,则创建一个单独的用户(和模式),并将临时用户加载到该用户/模式中,并将您需要调用的函数的EXECUTE特权授予主用户/模式,然后删除该临时用户。
  • 如果问题是您正在使用动态SQL并从模式的数据字典中阅读对象,并且额外的350个项目导致了性能问题,则在查询数据字典时添加过滤器以排除java对象 (注意:这不是Oracle的问题,而是您的动态SQL代码的问题)
  • 如果您的服务器确实因为架构中有350个额外的对象而出现性能问题(并且这与您查询数据字典无关),那么请与Oracle支持部门(根据您的支持合同)建立联系,并让他们解决性能问题。

相关问题