当前位置: > 数据库 > Oracle >

《学习Oracle从这里开始》之解决错误篇

时间:2014-08-30 19:08来源:linux.it.net.cn 作者:it

想把自己以往工作中遇到的问题和解决办法写下来,留作纪念:

 

问题一:ORA-00031 
        问题描述:在执行以下语句时,报的错误,标记要删去的会话,但会话kill不掉:
             alter system kill session 'sid,serial#';
        解决办法:
             1、执行查询,将所有状态为KILLED的锁:
                 select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED';
             2、在服务器端执行orakill:
                 cmd==>orakill sid spid

问题二:ORA-00372
        问题描述:数据无法写入。
        解决办法:
             1、查询当前为Readonly的表空间:
                select a.TS#,a.ENABLED,a.NAME,b.NAME tablespacename from v$datafile a,v$tablespace b where a.ts#=b.ts# and a.ENABLED = 'READ ONLY';
             2、在服务器端以sysdba登录(具体方法参见我的博客:http://blog.itpub.net/25357621/viewspace-1246635/),执行下面的命令:
                alter tablespace tablespacename read wirte;

问题三:查看执行计划时为:'PLAN_TABLE' is old version
        解决办法:
             1、explain plan for select * from tablename;
             2、select * from table(dbms_xplan.display);
                如果不行,继续下面的步骤
             3、drop table plan_table;
             4、@D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlxplan.sql
             5、执行第一步和第二步,至此问题一般都解决了。

问题四:ORA-22812
        解决办法:直接在报错的SQL语句上添加hint即可:
              select /*+ nested_table_get_refs */ from tablename;

 

2014-08-08 14:35 补充:

问题五:ORA-28000  the account is locked
       解决办法:以sysdba登录执行:alter user user_name account unlock;
       模拟账户被锁现象:
       1、conn /as sysdba
       2、alter profile default limit failed_login_attempts 3;
       3、连续登录失败三次,如:conn aa/bb;
       4、conn /as sysdba
       5、alter user jd account unlock;
       6、解决办法:alter profile default limit failed_login_attempts unlimited;

 

自己在工作中也遇到了各种各样很多的问题,本来想把它写下来,留作纪念,在写的时候发现以往自己解决完问题后根本就没做记录,今天就先暂时写这么多,以后再遇到问题,再慢慢补充。

(责任编辑:IT)
------分隔线----------------------------