1.在sql*plus下已由sys 账号 将sysdba 权限赋值给 system;
2.在sql*plus 和em管理器下都可以创建和修改数据库
3.在spring 配置dataSource 
代码如下:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
    <property name="url" value="jdbc:oracle:thin:@202.114.23.65:1521:EMSDB"></property>
    <property name="username" value="system"></property>
    <property name="password" value="seven"></property>
    <property name="maxActive" value="100"></property>
    <property name="maxIdle" value="30"></property>
    <property name="maxWait" value="50"></property>
</bean>
测试代码如下:
BasicDataSource ds  = (BasicDataSource)ctx.getBean("dataSource");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
    stmt.execute("delete from SYS.MES_MAINTENANCE_PLAN");错误信息:
exception in thread "main" java.sql.SQLException: ORA-01031: 权限不足 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:742)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:206)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:945)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1159)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1678)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1644)
at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
at test.MaintenancePlanDaoImplTest.main(MaintenancePlanDaoImplTest.java:47)
大家帮帮忙呀!
谢谢各位啦

解决方案 »

  1.   

    要用这个帐号来连接,你要专门在服务器上开放权限的不过,建议你不要这么做,sys和system都是专门的管理用户,不要用他们来做一般的数据库的事情,如果你需要管理权限,就给你的其他用户dba权限,然后用那个用户来做事情
      

  2.   

    权限不够呀,system虽然是sysdba,但不是sys下表的owner,先用sys以sysdba登陆,然后grant delete on sys.MES_MAINTENANCE_PLAN to system;再测试你的程序