oracle 中的运行脚本创建表的时候突然死机,或者突然断电了,重新打开 运行刚才的脚本 就会卡住 ,这种情况怎么解决

解决方案 »

  1.   

    删除最后没有创建成功的 table ,,然后重建。最好脚本贴出来看看~
      

  2.   

    就是 执行创建表的时候 突然死掉了,表没有创建完成,关掉sql 重新执行 就会吊死,删除也吊死  ,每次我都只能重新换个表明 再创建
      

  3.   

    每次
    数据库一天down几次?跟好玩一样的啊
    理论上数据库应该会自动释放,你也可以手动杀掉进程,或者干掉会话
      

  4.   

    drop table G4_table;
    create table  G4_table as
    select /*+parallel(t,8)*/ t.serv_id,t.region_id,acc_nbr
    from v_prd_prod_ins_day_eff@odscpy t ---crm主产品实例(日)
    inner join(select tt.serv_id,tt.serial_num,
    row_number()over(partition by serial_num order by created desc) rn
    from v_crm_mk_asset_day@odscpy tt---crm营销资源
    where tt.rec_status=1 
    and tt.imsi_lte is not null)t1 
    on t1.serial_num=(case when substr(t.imsi_pid,1,2)='89' then t.imsi_pid else t.sim_nbr end)
    and t1.rn=1
    where t.rec_status=1
    and t.serv_state not in ('1400');
      

  5.   

    很简单的一个查询建表。
    杀掉该会话试试,具体方法
    先管理员登录数据库
    SELECT
     a.object_id, a.session_id, b.object_name, c.*
       FROM
     v$locked_object a, dba_objects b, v$session c
    WHERE  a.object_id = b.object_id
    AND  a.SESSION_ID = c.sid(+);
    找到sid和serial#'
    alter system kill session 'sid, serial#'  ;杀掉会话,再试试能否创建表。
      

  6.   


    v$locked_object a, dba_objects b, v$session 
    第一个是查是否有加锁的对象,第三个是所有的打开的会话
      

  7.   


    v$locked_object a, dba_objects b, v$session 
    第一个是查是否有加锁的对象,第三个是所有的打开的会话能不能根据这个进程 查出来是哪个查询脚本在运行
      

  8.   


    v$locked_object a, dba_objects b, v$session 
    第一个是查是否有加锁的对象,第三个是所有的打开的会话杀掉会话的时候提示 标记要终止的会话
      

  9.   

    用于查询正在执行的 sql :
    select a.program, b.spid, c.sql_text,c.SQL_ID  from v$session a, v$process b, v$sqlarea c where a.paddr = b.addr
    and a.sql_hash_value = c.hash_value  and a.username is not null;
    这个可用于查看某个 pid 对应的 sql :
    SELECT sql_text FROM v$sqltext a WHERE (a.hash_value, a.address) IN(SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),DECODE(sql_hash_value, 0, prev_sql_addr, sql_address) FROM v$session b WHERE b.paddr =(SELECT addr FROM v$process c WHERE c.spid = '5389'))ORDER BY piece ASC;
    你可以先试试去掉并行,我觉得应该是并行导致了锁表和阻塞