怪异问题!sql在pl/sql中执行结果与java jdbc执行结果不一致

做一查询系统(struts2+myeclipse+tomcat+oracle9),一般先在pl/sql中测试sql语句,无问题后在action中使用oracle thin模式连接数据库,执行sql语句,然后将查询结果存入HashMap后输出至jsp页面。
出现如下怪异问题:
1、在pl/sql中测试sql语句时结果正常。结果中有6个字段,其中两个字段为count()函数统计出的数值。
2、将在pl/sql中测试过的sql语句写入struts2的action中,通过jdbc thin模式执行,查询结果与pl/sql中测试结果不一致。
count()函数统计的那两个字段的值不一致,暂未发现规律。数值接近,互有高低。
在struts2的action中执行sql语句前,先打印sql语句,打印语句与pl/sql中测试语句一样,查询结果一致。
在action中执行sql语句后在将rs(RecordSet)存入HashMap前,输出rs内容,count()统计出的数值结果已经不一致。
该系统中类似查询功能有几个,实现方式方法相同,唯独这个出现pl/sql和jdbc执行同一句sql结果后部分字段数值不一致的诡异情况!
烦请大家帮助分析、支招!不胜感激!!


问题补充:lang_tu 写道向HashMap里存值时,键相同的值会被覆盖,比如:
Map map = new HashMap();
map.put("1", "1");
map.put("1", "211");
System.out.println("长度="+map.size()"   值="+map.get("1"));
打印结果:长度=1   值=211
因此你jsp页面显示的值可能会比sql语句查询的少


问题是在向HashMap中存值之前就已经不一致了。
问题补充:akunamotata 写道会不会是你pl/sql查询的table和jdbc查询的table根本不是一个table,但是是同名的,表空间不同。这个问题碰到过,纠结了很久,不知道能不能帮助你。


多谢兄台帮忙分析,不会的,是同一条sql语句,pl/sql中测试后写到action中,完了jdbc执行前还打印sql语句,也是同一条,但结果就是不一致,单步追踪测试,在rs = stmt.executeQuery(sql);后,getString方法取值时已经不一致了。
快疯了!


问题补充:多谢大家帮忙分析!
该功能只是查询,不涉及数据修改。
本来只是查询得到的结果直接存rs,为测试又写了个临时表(即create table table_name as sql),结果发现存到临时表里的数据已经不一致了。同时jdbc有错误提示,代码如下,请大家帮忙再看看!
type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

java.sql.SQLException: ORA-01003: ?????????

    oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
    oracle.jdbc.ttc7.v8Odscrarr.receive(v8Odscrarr.java:207)
    oracle.jdbc.ttc7.TTC7Protocol.describe(TTC7Protocol.java:770)
    oracle.jdbc.driver.OracleStatement.describe(OracleStatement.java:6572)
    oracle.jdbc.driver.OracleResultSetMetaData.<init>(OracleResultSetMetaData.java:59)
    oracle.jdbc.driver.OracleResultSetImpl.getMetaData(OracleResultSetImpl.java:163)
    yjcx.lfsbl.execute(lfsbl.java:97)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.


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

Apache Tomcat/6.0.13
 


问题补充:多谢大家帮忙分、支招,问题找到了,我的sql语句的条件中有汉字,oracle字符集和java字符集不一致,结果导致了查询结果不一致。
这里貌似只能有一个最佳答案,不能给所有参与的人散分,akunamotata比较积极,分就给你了,也谢谢参与的其他朋友!

回答: 怪异问题!sql在pl/sql中执行结果与java jdbc执行结果不一致

  1. pl/sql查询和jdbc查询,使用相同的排序方式...分析下结果不同之处,你也可以贴出来看看,帮你分析一下。

SQL与PL/SQL查询时间问题

  1. Q
    string ls_datelong,ll_amout
    ls_date=ProfileString(afile,"In_time","time","")
    select sum(A.amout)
    into : ll_amout
    from A
    where A.str_date >=to_date(ls_date,"yyyy-mm-dd hh24:mi:ss") and A.str_date<=(sysdate,"yyyy-mm-dd hh24:mi:ss")


    这样是不可以查出的,请问怎么写才对??ls_date是否还要转换?这是PL/SQL,SQL又怎么写?因为我有两个事务。 

    ls_date在ini得到是‘2012-10-20 00:00:00’
  2. A
    string ls_datelong,ll_amout
    ls_date=ProfileString(afile,"In_time","time","")
    select sum(A.amout)
    into : ll_amout
    from A
    where A.str_date >=to_date(:ls_date,"yyyy-mm-dd hh24:mi:ss") and A.str_date<=(sysdate,"yyyy-mm-dd hh24:mi:ss")

客户端pl/sql引擎和服务器端pl/sql的区别?

  1. Q
    我不懂客户端的pl/sql引擎是如何工作的,执行时是不是将还是一步步的调用服务器的数据库。如果清楚的话,请说说它的工作原理和流程。谢谢!
  2. A
    "客户端的pl/sql引擎"?

    pl/sql都是在服务器段执行的,客户端需要plsql引擎做什么?

oracle9i怎样在PL/SQL中创建一个JOB来定时每分钟执行一个存储过程,在网上看了很多代码都不行

  1. Q
    因为从来没有用过JOB,所以使用网上的很多代码都没创建成功,希望哪位大侠给出具体步骤,就是在pl/sql中需要操作的步骤都给出来让我参照一下,万分感谢,急啊,在线等,拜托大家了! 网上的代码创建后没得问题,但是不执行  用 select * from user_jobs查询也没有JOB的记录!
  2. A
    如下去创建,在user_jobs中就可以看到了

    DECLARE   
      JOB        BINARY_INTEGER; --任务ID  
      v_begin    DATE;           --开始时间
      v_interval VARCHAR2(50);   --时间间隔
    BEGIN   
      v_begin:=sysdate;--当前时间开始执行
      v_interval:= 'trunc(sysdate,''mi'') + 1/ (24*60)';  --每分钟执行一次, 可以更改
      DBMS_JOB.SUBMIT(JOB,
              'test_pkg;', --存储过程名称
                v_begin,
              v_interval, 
              FALSE,
              0,
              FALSE);
      COMMIT;
    END;

为什么在PL/SQL中使用exec会报错,但是在golden中能正常使用

  1. Q
    请教下各位,以下这个语句,在PL/SQL中执行时 报错是“无效的sql语句”,但是在另外一个工具 Golden中使用时能够正常,是什么原因啊?
    exec :vBeginDate :='2014'||'1212';
    exec :vEndDate   :='2014'||'1214';

    select a.exchange_no,sum(decode(a.refund_flag,'0',b.accept_sum,-b.accept_sum)) accept_sum
    from sto_sale_master a,sto_commo_detail b
    where a.exchange_no=b.exchange_no
    and a.card_no='0'
    and a.sale_time between :vBeginDate and :vEndDate
    group by a.exchange_no
  2. A
    exec不是oracle的内置方法,只是个别工具对这个用法进行了实现,pl/sql不能使用属于正常

PL/SQL developer JOB 如何设置让当前的job 每月的最后一天自动执行呢?

  1. Q
    PL/SQL developer  JOB 如何设置让当前的job 每月的最后一天自动执行呢? 
    如果这个实现不了的话 每个月的第一天 执行也行?最好是能实现第一种方案中的 ,图中的参数怎么写呢,我是oracle新手,请大家帮帮忙,谢啦!!
    PL/SQL developer  JOB 如何设置让当前的job 每月的最后一天自动执行呢?

  2. A
    就这个问题,我觉得1楼说的方案很正确,但是你一定要定在月底执行的话,可以定成TRUNC(LAST_DAY(SYSDATE)) + 23/24,
    这个是月底的最后一天的23点执行,具体可以更改。

关于在Pl/sql中创建数据库的问题?

  1. Q
    在Oracle的Pl/Sql程序中, 我以System身份登录执行下述命令:
    Create Database DBDEMOS
    Controlfile Reuse
    Logfile 'C:\Program Files\Common Files\Borland Shared\Data\DBDEMOS.log' Size 1M Reuse
    Datafile 'C:\Program Files\Common Files\Borland Shared\Data\DBDEMOS.ora' Size 10M Reuse Autoextend on
    Next 10M Maxsize 200M;
    为什么提示我没有权限创建数据库?
    请问我该如何登录才能拥有权限创建数据库?
  2. A
    手工创建数据库的全部脚本及说明 

     
    系统环境: 
    1、操作系统:Windows 2000 Server,机器内存128M
    2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
    3、安装路径:D:\ORACLE

    建库步骤: 
    1、手工创建相关目录
    D:\Oracle\admin\test
    D:\Oracle\admin\test\adhoc
    D:\Oracle\admin\test\bdump
    D:\Oracle\admin\test\cdump
    D:\Oracle\admin\test\create
    D:\Oracle\admin\test\exp
    D:\Oracle\admin\test\pfile
    D:\Oracle\admin\test\udump

    D:\Oracle\oradata\test
    D:\Oracle\oradata\test\archive

    2、手工创建初始化启动参数文件:D:\Oracle\admin\test\pfile\inittest.ora,内容:

    3、手工创建D:\Oracle\Ora81\DATABASE\inittest.ora文件,

       内容:IFILE='D:\Oracle\admin\test\pfile\inittest.ora'

    4、使用orapwd.exe命令,创建D:\Oracle\Ora81\DATABASE\PWDtest.ora

       命令:D:\Oracle\Ora81\bin\orapwd file=D:\Oracle\Ora81\DATABASE\PWDtest.ora password=ORACLE entries=5


    5、通过oradim.exe命令,在服务里生成一个新的实例管理服务,启动方式为手工
       set ORACLE_SID=test
       D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"

    6、生成各种数据库对象
    D:\>svrmgrl

    --创建数据库
    connect INTERNAL/oracle
    startup nomount pfile="D:\Oracle\admin\test\pfile\inittest.ora"
    CREATE DATABASE test
    LOGFILE 'D:\Oracle\oradata\test\redo01.log' SIZE 2048K,
        'D:\Oracle\oradata\test\redo02.log' SIZE 2048K,
        'D:\Oracle\oradata\test\redo03.log' SIZE 2048K
    MAXLOGFILES 32
    MAXLOGMEMBERS 2
    MAXLOGHISTORY 1
    DATAFILE 'D:\Oracle\oradata\test\system01.dbf' SIZE 58M  REUSE AUTOEXTEND ON NEXT 640K
    MAXDATAFILES 254
    MAXINSTANCES 1
    CHARACTER SET ZHS16GBK
    NATIONAL CHARACTER SET ZHS16GBK;

    控制文件、日志文件在上面语句执行时生成


    connect INTERNAL/oracle
    --修改系统表空间
    ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
    ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;

    --创建回滚表空间
    CREATE TABLESPACE RBS DATAFILE 'D:\Oracle\oradata\test\rbs01.dbf' SIZE 256M REUSE
    AUTOEXTEND ON NEXT 5120K
    MINIMUM EXTENT 512K
    DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

    --创建用户表空间
    CREATE TABLESPACE USERS DATAFILE 'D:\Oracle\oradata\test\users01.dbf' SIZE 128M REUSE
    AUTOEXTEND ON NEXT 1280K
    MINIMUM EXTENT 128K
    DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

    --创建临时表空间
    CREATE TABLESPACE TEMP DATAFILE 'D:\Oracle\oradata\test\temp01.dbf' SIZE 32M REUSE
    AUTOEXTEND ON NEXT 640K
    MINIMUM EXTENT 64K
    DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;

    --创建工具表空间
    CREATE TABLESPACE TOOLS DATAFILE 'D:\Oracle\oradata\test\tools01.dbf' SIZE 64M REUSE
    AUTOEXTEND ON NEXT 320K
    MINIMUM EXTENT 32K
    DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

    --创建索引表空间
    CREATE TABLESPACE INDX DATAFILE 'D:\Oracle\oradata\test\indx01.dbf' SIZE 32M REUSE
    AUTOEXTEND ON NEXT 1280K
    MINIMUM EXTENT 128K
    DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

    --创建回滚段
    CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
    CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );

    --使回滚段在线
    ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
    ALTER ROLLBACK SEGMENT "RBS24" ONLINE;

    --修改sys用户的临时表空间为TEMP
    alter user sys temporary tablespace TEMP;

    --创建数据字典表
    @D:\Oracle\Ora81\Rdbms\admin\catalog.sql;
    @D:\Oracle\Ora81\Rdbms\admin\catexp7.sql
    @D:\Oracle\Ora81\Rdbms\admin\catproc.sql
    @D:\Oracle\Ora81\Rdbms\admin\caths.sql

    connect system/manager
    @D:\Oracle\Ora81\sqlplus\admin\pupbld.sql

    connect internal/oracle
    @D:\Oracle\Ora81\Rdbms\admin\catrep.sql
    exit

    --生成SQL*Plus帮助系统
    sqlplus SYSTEM/manager
    @D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sql helpus.sql
    exit

    --修改system用户默认表空间和临时表空间
    svrmgrl
    connect internal/oracle
    alter user system default tablespace TOOLS;
    alter user system temporary tablespace TEMP;
    exit

    7、将test实例启动服务设置成自动启动方式
    D:\Oracle\Ora81\bin\oradim -edit -sid test -startmode auto

求大神帮忙提供方法(没有方法回复一下也好啊):java执行带有pl/sql的存储过程和块的sql脚本

  1. Q
    需求:用java执行带有pl/sql的存储过程、函数和块的sql脚本

    脚本说明:为了对一些表进行重新创建并插入数据的操作,创建了一个Oracle的脚本,里面有存储过程、函数和sql块

    尝试过ant、ibatis来执行sql脚本都会因为存储过程中的“;”报错,

    如果大家都没有办法的话我只能选择用java实现:将sql脚本传到linux环境,然后用sqlplus命令来执行脚本
  2. A
    你放在sql 环境中可以执行吗?

PL/SQL 中DELETE语句无效问题

  1. Q
    不知道怎么回事,以前在pl/sql中使用delete语句能将表中数据删除,现在却不行了。数据库是oracle类型,请问哪位大侠知道怎么回事,有什么办法可以改过来?
  2. A
    执行DELETE语句后,查看下方有多少数据被删除

    commit之后 重新登录  

pl/sql中可以实现自动备份吗

  1. Q
    如题,我要实现自动备份,而且假如是周期是一个星期,每天备份一次,还要依次将上个星期的删除掉,也就是说我最后就一共是最近7天的7个备份数据库。
    例如我今天的备份应该是上星期六到今天的
    我数据库是pl/sql的。
    个人水平不怎么样,最好有例子,这样看起来易懂。
    oracle的也行
  2. A
    可以写一个数据库备份脚本,然后用windows计划任务定期执行即可
    下面就是一个导出库的的例子
    exp system/manager file=d:\backup\oracle\oracle%date:~0,10%.dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%.log