Tag: oracle

使用JDBC将PL / SQL过程与用户定义的记录一起调用为IN参数

我试图调用以下PL / SQL过程,该过程将用户定义的记录类型作为IN参数。 — User Defined Record TYPE EMP_REC IS RECORD ( id employees.employee_id%type, name employees.last_name%type, dept_name departments.department_name%type, job_title jobs.job_title%type, salary employees.salary%type, manager_id employees.employee_id%type, city locations.city%type, phone employees.phone_number%type ); 以下是用户定义记录的定义: — PURPOSE: Prints all employee information from the employee record — Example Of: PROCEDURE that takes in a parameter of RECORD type PROCEDURE print_employee_all_details(empl1 emp_rec […]

JPA / Hibernate选择查询返回重复记录

我有一个表,比如,具有ID,State和User_ID的Instrument作为列。 所以我有这个JPA查询返回所有具有匹配User_ID的乐器记录。 query = manager.createQuery(“SELECT instrument from Instrument instrument where instrument.User_ID=:User_ID”,Instrument.class); query.setParameter(“User_ID”, User_ID); List instruments= query.getResultList(); for(Instrument instrument:instruments){ System.out.println(“Instrument ID “+instrument.getID()); // using sysout as it is not prod code yet } 它只返回与匹配记录重复多次的第一条记录。 11:13:01,703 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1 11:13:01,704 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1 11:13:01,704 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1 我在Db中有三个记录,仪器ID为1,2和3 […]

JDBC瘦驱动程序:无效的数据包长度

当我对我的一些Java代码运行自动批量测试时,我遇到了一个奇怪的“无效数据包长度”(这就是拼写错误的方式)错误,我希望有人之前遇到过此错误或者可能指向我正确的方向。 通过JUnitunit testing或从GUI测试我的代码时,我没有遇到此错误。 我在自动批量测试中只遇到此错误。 关于我的批量测试的一点点:对于某些输入,我的代码将运行很长时间(这是预期的),但是为了将结果加速到更合理的时间范围,我正在创建一个新的线程来运行每个个别测试,以便我可以在一些给定的最大经过时间后停止测试。 请注意,测试和实际代码都需要连接到同一个数据库实例才能加载数据。 实际代码使用单个连接从数据库中读取(它不是multithreading的)。 我仍然试图找出测试连接数据库的最佳方法(因此这个问题)。 我的第一个想法是,我正在做一些不友好的事情,因为我关闭我的测试线程以尽早退出运行。 我打电话给被弃用了 threadObject.stop(); 方法,因为我的实际代码不是multithreading的,没有“友好”的方式来杀死内置的线程。在几个(~2-3)停止线程后,我的JDBC连接抛出一个“Invalid Packet Lenght”错误,然后其他测试的“套接字关闭”exception。 我尝试了所有这些相同的结果: 重用实际代码使用的相同连接 创建一个新连接,并为所有测试重用相同的第二个连接 每次我停止()长时间运行的测试时关闭并重新创建测试连接 为每个测试创建一个新连接(这可以工作,直到我最大化我的连接数) 我已经确定了两个连接,“test”和“actual”,“test”连接是抛出exception的连接。 组态: Eclipse 3.4 Java Compliance 1.6 ojdbc14_g.jar JDBC驱动程序 Oracle 9 DB 我究竟做错了什么? 我应该采用不同的方式处理“测试”连接吗? 我是否需要重新构建我的“实际”连接才能运行批量测试? 导致“无效数据包长度”错误的原因是什么?

审核数据库中多个表的历史记录

我的数据库中有3-4个表,我想跟踪它们的变化。 我主要关注更新。 每当发生更新时,我想在审计表中存储先前的条目(值或完整行)。 我想到的基本专栏如下: AuditId, TableName, PK1, PK2, PK3, PKVal1, PKVal2, PKVal3, UpdateType, PrevEntryJSON JSON将采用以下格式: Key:Value ,我更喜欢随着列的不断变化,我希望保留所有值,即使它们没有变化。 其他选项是删除带有100个列的JSON,这些列的名称与不同的列相同(所有表的累计)。 我想听听别人对此的看法。 我怎么能改进它以及我可以面对哪些问题? 通过触发器可能不是更好的方式,但我对此持开放态度。 谢谢,

Tomcat是否使用pl / sql模块的缓存版本?

好想象一下这种情况。 我对pl / sql模块进行了更改,重新编译它,一切都很好。 没有错误。 然后我尝试访问在Tomcat上运行的应用程序的GUI屏幕。 该屏幕调用oracle数据库中的pl / sql模块。 当我提交应该调用pl / sql模块来处理数据的表单时,我收到此错误 ORA-20001: ORA-06508: PL/SQL: could not find program unit being called 我检查了$ USER_OBJECTS中的所有包,并且没有状态为INVALID。 我重新启动了Tomcat,然后它开始工作。 这是否意味着当我第一次重新编译包时,我有效地删除了对Tomcat使用的包的一些缓存引用? 与数据库的连接是通过JDBC和DBCP连接池实现的。 重新编译可能会使连接无效吗?

如何使用连接字符串和jdbc url

我正在尝试使用以下url将oracle与jdbc连接起来 String url = “jdbc:oracle:thin:@:1522:dev;includeSynonyms=true”; 但它抛出以下错误。 java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: :1522:dev;includeSynonyms=true 如果我从url中删除属性(includeSynonyms = true),我可以连接。 我正在使用ojdbc14.jar 请帮我

在PLSQL Oracle中抛出特定的错误消息…在hibernate中捕获?

是否可以在PL / SQL oracle存储过程中抛出特定的错误消息,并在调用时在Hibernate中捕获它?

使用Hibernate Criteria和Oracle,有什么更好的方法与时间一起工作?

我想按时间选择实体。 我的Oracle DBMS的字段类型为DATE,其中包含日期和时间。 这是我的代码。 如何按时间标准选择数据? Calendar timeCal = new GregorianCalendar(0,0,0,0,0,0); Date timeMin = timeCal.getTime(); timeCal.add(Calendar.HOUR_OF_DAY, 1); Date timeMax = timeCal.getTime(); if (minDate != null && maxDate != null) criteria.add(Restrictions.between(“eventDate”, minDate, maxDate)); if (onDate != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(onDate); calendar.add(Calendar.DAY_OF_MONTH, 1); criteria.add(Restrictions.between(“eventDate”, onDate, calendar.getTime())); } if(minTime!=null&&maxTime!=null){ /* How to add Restriction on eventDate […]

将ARRAY传递给存储过程时出现死锁

在将ARRAY发送到stord proc时,我们正在获得java级死锁。 我正在附加线程转储。 Found one Java-level deadlock: ============================= “http-bio-8080-exec-11”: waiting to lock monitor 0x00000000406fb2d8 (object 0x00000000fea1b130, a oracle.jdbc.driver.T4CConnection), which is held by “http-bio-8080-exec-4” “http-bio-8080-exec-4”: waiting to lock monitor 0x00000000407d6038 (object 0x00000000fe78b680, a oracle.jdbc.driver.T4CConnection), which is held by “http-bio-8080-exec-11” Java stack information for the threads listed above: =================================================== “http-bio-8080-exec-11”: at oracle.sql.TypeDescriptor.getName(TypeDescriptor.java:682) – waiting to lock (a […]

JDBC使用TLS证书连接到Oracle数据库

我试图在java中编写一个连接类,使用jdbc驱动程序连接到oracle数据库,但我想保护用于连接到oracle数据库的jdbcurl / username / password等参数。 我必须使用TLS证书概念连接到java中的oracle数据库。 我试着寻找一个有效的例子,却找不到一个。 任何人都可以给我一个如何实现它的想法,最近我还要添加连接池概念。 提前致谢