1. ホーム
  2. Database

ORA-06550 "の解決策。1 行目、7 列目"

2022-02-13 14:24:30

正常に動作していた保守用本番ログコードを社内のテスト環境に掲載したところ、正常に動作せず、以下のエラーが報告されました。

execute() - pls-QuartzJob.java-quartzjob が実行を開始! 

java.sql.SQLException: ORA-06550: 行 1、列 7。 

PLS-00201: 識別子 'MONITORCHANGEPLS.MCP_ISCHANGE' を宣言する必要があります。 

ORA-06550: 1 行目、7 列目。 

PL/SQLです。ステートメント無視 

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) 

at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) 

at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215) 

at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954) 

at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168) 

at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285) 

at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329) 

at com.szair.smartme.productlogsys.dao.LogEditDao85.doInHibernate(LogEditDao.java:3310)atorg.springframework.orm.hibernate3.LogEditDao85.doInHibernate(LogEditDao.java:3310) このような場合、「LogEditDao85.doInHibernate(LogEditDao.java:3310)」と記述して、「HibernateTemplate.doExecute(HibernateTemplate.java:406)」を実行します。 szair.smartme.productlogsys.dao.LogEditDao.getChangeValue(LogEditDao.java:3288)atcom.szair.smartme.productlogsys.dao.LogEditDao85.doInHibernate(LogEditDao.java:3288)atcom.smartme.productlogsys.dao.logEditDao.getChangeValue(LogEditDao.java:3288) java:3310)atorg.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)atrog.springframework.orm.hibernate3.HibernateTemplate.DoExecute(HibernateTemplate.java:406) execute(HibernateTemplate.java:339) atcom.szair.smartme.productlogsys.dao.LogEditDao.getChangeValue(LogEditDao.java:3288) atcom.szair.smartme.productlogsys.dao.logEditDao.getChangeValue(LogEditDao.java.3287) LogEditDaoFastClassByCGLIBFastClassByCGLIBec6980fb.invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)atorg.springframework.aop.framework.Cglib2AopProxyec6980fb.logEditDaoFastClassByCGLIB.invoke(atoCGLIB.java:191) invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)atrog. springframework.aop.framework.Cglib2AopProxyCglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)。 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.framework.Cglib2AopProxyDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) atcom.szair.smartme. LogEditDaoDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) atcom.szair.smartme.productlogsys.dao.LogEditDaoDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:522) LogEditDaoEnhancerByCGLIBEnhancerByCGLIBe33f2ad0.getChangeValue() atcom.szair.smartme.productlogsys.service.LogeditServer.getChangeValue(LogeditServer.java:1224) atcom.szair.smartme.productlogsys.dao.getChangeValue(logeditServer.java.1224) service.LogeditServere33f2ad0.getChangeValue() atcom.szair .smartme.productlogsys.service.LogeditServer.getChangeValue(LogeditServer.java:1224) atcom.szair.smartme.productlogsys.service.LogeditServer.getChangeValue(java:1224) atcom.szair.smartme.productlogsys.service.LogeditServer.GetChangeValue(logeditServer.java:1224) LogeditServerFastClassByCGLIBFastClassByCGLIBa3f1c07d.invoke() atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)atorg.springframework.aop.framework.Cglib2AopProxya3f1c07d.logeditServerFastClassByCGLIBa3f1c07d(atoC.sf.cglib.proxy.MethodProxy.java:191) invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)atrog. springframework.aop.framework.Cglib2AopProxyCglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)を実行。 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.framework.Cglib2AopProxyDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) atcom.szair.smartme.productlogsys.service. LogeditServerDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) atcom.szair.smartme.productlogsys.service.LogeditServerEnhancerByCGLIBEnhancerByCGLIBf4a0e4fa.LogeditServerDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:4202) getChangeValue() atcom.szair.smartme.productlogsys.service.QuartzJob.execute(QuartzJob.java:60)atcom.szair.smartme.productlogsys.service.QuartzJobf4a0e4fa.getChangeValue() atcom.szair.smartme.productlogsys.service.QuartzJob.execute(QuartzJob.java:60) atcom.szair.smartme.productlogsys.service.QuartzJob(java.60)atcom.szair.productlogsys.Service.getChangeValue() atcom.szair.smartme.productlogsys.Service.quartzjob(quartzjob.java:60) QuartzJobFastClassByCGLIBFastClassByCGLIB29dcb96e.invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)atorg.springframework.aop.framework.Cglib2AopProxy29dcb96e.QuartzJobFastClassByCGLIB.invoke(CGLIB.java:191).atrg. invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)atorg. springframework.aop.framework.Cglib2AopProxyCglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)を実行します。 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.framework.Cglib2AopProxyDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) atcom.szair.smartme.productlogsys.service.QuartzJobDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) atcom.szair.smartme.productlogsys.Service.QuartzProxyDynamicAdvisedIntel.Intercept(Cglib2AopProxy.java:624) service.QuartzJobEnhancerByCGLIBEnhancerByCGLIBc475e8c1.execute()atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) atsun.reflect.DelegatingMethodAccessorImpl.invoke0 (NATIAB.java)atsun.delegatingメソッドアクセラレータ. invoke( DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:606)atorg.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)atrog.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBeanc475e8c1.Invoke(JobDetailFactoryBeanc.java:273) execute()atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 57)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.NativeMethodImpl.java:43(NativeMethodAccessorImpl) atsun.reflect.NativeMethodImpl.init.invoke(NativeMethodAccessorImpl.java: 57)@atjava.lang.reflect. .java:606)atrog.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)atrog.springframework.sequence.quartz. MethodInvokingJobDetailFactoryBeanMethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)。 

at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113) 

at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 

at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529) 

execute() - pls-QuartzJob.java-execute() - 更新データなし!

ウェブで情報を確認すると、有用な提案は以下の通りです。 

1 , 

http://www.th7.cn/program/java/201510/620030.shtml 

Oracle Stored Procedure Result Setの練習をしていて遭遇した問題! 

plsql開発ツールで作成したストアでスタートしましたが、プロパティを見るとオーナーがsysになっています。 

しかし、javaのコードでは上記のようなエラーが表示されます。 

原因はパーミッションの問題です。 

解決方法 上記のプロシージャを削除し、Oracle自身のsql plus(sysではなくOracleにログインしたユーザー名でjavaコードで呼び出す)を開き、プロシージャを直接作成するコードを貼り付けて、OK!でjavaコードを実行できるようにします。

2, 

http://bbs.csdn.net/topics/390100723 

2.1 パッケージの所有者とアプリケーションでデータベースに接続するユーザが異なるため。例えば、パッケージのオーナーはユーザーmで、データベースに接続するアプリケーションのユーザーはtです。 

この場合、ユーザーtはユーザーmでパッケージにアクセスできません。シノニムを作成し、実行権限を与える必要があります。 

2.2 データテーブルとパッケージがsysdba権限で作成されているため、通常の権限ではアクセスできないため、この現象に遭遇しました。

その後、Oracleデータベースからパッケージと以下のストアドプロシージャを削除し、新規に作成しようとしたところ、途中でローカルプログラムが起動し続け、パッケージが削除される前にコンソールに以下のエラーが報告されました。

execute() - pls-QuartzJob.java-quartzjob が実行を開始! 

java.sql.SQLException: ORA-06550: 行 1、列 7。 

PLS-00201: 識別子 'MONITORCHANGEPLS.MCP_ISCHANGE' を宣言する必要があります。 

ORA-06550: 1 行目、7 列目。 

PL/SQLです。ステートメント無視 

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) 

at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) 

at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215) 

at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954) 

at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168) 

at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285) 

at oracle.jdbc.driver.OraclePreparedStatement.__xr__14__executeQuery(OraclePreparedStatement.java:3329) 

at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source) 

at sun.reflect.DelegatingMethodAccessorImpl.__invoke(Unknown Source) 

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 

at java.lang.reflect.Method.invoke(Unknown Source) 

at com.zeroturnaround.xrebel.runtime.oracle.jdbc.driver.OraclePreparedStatementinv14____xr__14__executeQuery.invoke( OraclePreparedStatementinv14_____xr___14_____executeQuery.java)を実行する。 

at com.zeroturnaround.xrebel.analyzer.XRPreparedStatementSpy.invoke(XRebel:43) 

at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java) 

at com.szair.smartme.productlogsys.dao.LogEditDao85.doInHibernate(LogEditDao.java:3310)atorg.springframework.orm.hibernate3.LogEditDao85.doInHibernate(LogEditDao.java:3310) このような場合、「LogEditDao85.doInHibernate(LogEditDao.java:3310)」と記述して、「HibernateTemplate.doExecute(HibernateTemplate.java:406)」を実行します。 szair.smartme.productlogsys.dao.LogEditDao.getChangeValue(LogEditDao.java:3288)atcom.szair.smartme.productlogsys.dao.LogEditDao85.doInHibernate(LogEditDao.java:3288)atcom.smartme.productlogsys.dao.logEditDao.getChangeValue(LogEditDao.java:3288) java:3310)atorg.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)atrog.springframework.orm.hibernate3.HibernateTemplate.DoExecute(HibernateTemplate.java:406)atorg.springframework.olm.Hibernate3.HibernateTemplate. execute(HibernateTemplate.java:339) atcom.szair.smartme.productlogsys.dao.LogEditDao.getChangeValue(LogEditDao.java:3288) atcom.szair.smartme.productlogsys.dao.logEditDao.getChangeValue(LogEditDao.java:3287) LogEditDaoFastClassByCGLIBFastClassByCGLIBec6980fb.invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)atorg.springframework.aop.framework.Cglib2AopProxyec6980fb.logEditDaoFastClassByCGLIB.invoke(atoCGLIB.dao.dao) atoCGLIB.fml(cglib2AopProxy.java) invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)atrog. springframework.aop.framework.Cglib2AopProxyCglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)を追加。 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.framework.Cglib2AopProxyDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) atcom.szair.smartme. LogEditDaoDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) atcom.szair.smartme.productlogsys.dao.LogEditDaoDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:525) LogEditDaoEnhancerByCGLIBEnhancerByCGLIB7c34ab1d.getChangeValue() atcom.szair.smartme.productlogsys.service.LogeditServer.getChangeValue(LogeditServer.java:1224) atcom.szair.smartme.productlogsys.getChangeBerry.logEditDaoEnhancerByCGLIB7c34ab1d. service.LogeditServer7c34ab1d.getChangeValue() atcom.szair .smartme.productlogsys.service.LogeditServer.getChangeValue(LogeditServer.java:1224) atcom.szair.smartme.productlogsys.service.LogeditServer(java:1224) atcom.smartme.productlogsys.service.GetChangeValue(logeditServer.java:1224) LogeditServerFastClassByCGLIBFastClassByCGLIBa3f1c07d.invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)atorg.springframework.aop.framework.Cglib2AopProxya3f1c07d.logditServerFastClassByCGLIB(a).invoke(atorg.springframework.auto).logditServerProxy(a).invoke(atorg.springframework.auto) invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)atrog. springframework.aop.framework.Cglib2AopProxyCglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)を実行。 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.framework.Cglib2AopProxyDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) atcom.szair.smartme.productlogsys.service. LogeditServerDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) atcom.szair.smartme.productlogsys.service.LogeditServerEnhancerByCGLIBEnhancerByCGLIB4258661f.LogeditServerDynamicAdvisedInterceptor.intercept(Cgrib2AopProxy.java:524) getChangeValue() atcom.szair.smartme.productlogsys.service.QuartzJob.execute(QuartzJob.java:60)atcom.szair.smartme.productlogsys.service.QuartzJob4258661f.getChangeValue() atcom.szair.smartme.productlogsys.service.QuartzJob.execute(QuartzJob.java:60) atcom.szair.smartme.productlogsys.service.QuartzJob(java.getChangeValue(java.60)atcom.szair.smartme.productlogsys.service.quartz.execute(quartz.getChangeValue() QuartzJobFastClassByCGLIBFastClassByCGLIB29dcb96e.invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)atorg.springframework.aop.framework.Cglib2AopProxy29dcb96e.invoke(methodProxy.java:149) atorg.springframework.auto.cg.cglib.cglib.proxy.invoke(methodProxy.java:149) invoke()atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)atrog. springframework.aop.framework.Cglib2AopProxyCglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)で定義されたメソッドです。 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 

at org.springframework.aop.framework.Cglib2AopProxyDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) atcom.szair.smartme.productlogsys.service. QuartzJobDynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) atcom.szair.smartme.productlogsys. Service.QuartzJobEnhancerByCGLIBEnhancerByCGLIB41170d0.execute()  

  at sun.reflect.GeneratedMethodAccessor123.invoke(Unknown Source)  

  at sun.reflect.DelegatingMethodAccessorImpl.__invoke(Unknown Source)  

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  

  at java.lang.reflect.Method.invoke(Unknown Source)  

  at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)  

  MethodInvokingJobDetailFactoryBean41170d0.execute()で、org.springframework.scheduling.quartz. GeneratedMethodAccessor123.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.__invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.__invoke(Unknown Source) DelegatingMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.util.DelegatingMethodAccessorImpl(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl(Unknown Method) このような場合は、以下のようにします。 

at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) 

at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 

at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529) 

execute() - pls-QuartzJob.java-execute() - 更新データなし!

比較すると、報告されたエラーはほぼ同じで、テスト環境でのエラーは、データベース内のパッケージとその下のストアドプロシージャにアクセスできないことが原因であることがわかります。

最後に確認したところ、テスト環境のデータソースがローカルマシンと同じユーザー名で設定されていないため、他のアカウントで作成されたストアドプロシージャにアクセスできないことがわかりました。ローカルの設定は、つい数日前にテストリポジトリからダウンしていたのですが、数日の間に誰かが変更していて、私はそのことを知らされていなかったので、今後注意が必要です。

取得元:https://www.cnblogs.com/jxldjsn/p/9090757.html