2012-02-16 1 views
1

J'essaie de supprimer un schéma dans Oracle 11g sur notre environnement de développement et je reviens Erreur SQL: Plus de données à lire à partir du socket. Il n'y a pas de charge sur le schéma car c'est juste un dev db. C'est un petit db sans rien de fou. Je vois cette erreur tout le temps. Redémarrer l'instance résout parfois le problème. Je n'arrive pas à trouver des informations qui pourraient indiquer une solution. Merci!Schéma d'abandon dans Oracle: Erreur SQL: Plus de données à lire à partir du socket

Répondre

1

Je comprends que ce message est souvent dû à un bogue. Aussi, quand il apparaît une entrée dans votre journal d'alerte et/ou un fichier de trace contiendra plus de détails sur ce que l'erreur pourrait être réellement. Pour trouver votre fichier de trace pour l'exécution de la session:

select U_DUMP.value 
     || '/' 
     || DB_NAME.value 
     || '_ora_' 
     || V$PROCESS.SPID 
     || nvl2(V$PROCESS.TRACEID, '_' || V$PROCESS.TRACEID, null) 
     || '.trc' 
     "Trace File" 
    from V$PARAMETER U_DUMP 
     cross join V$PARAMETER DB_NAME 
     cross join V$PROCESS 
     join V$SESSION 
     on V$PROCESS.ADDR = V$SESSION.PADDR 
where U_DUMP.NAME = 'user_dump_dest' 
     and DB_NAME.NAME = 'db_name'     
     and v$session.audsid=sys_context('userenv','sessionid'); 
+0

J'ai essayé cette commande directement après avoir essayé de laisser tomber l'utilisateur. Je reçois toujours l'erreur 17410 "plus de données à lire à partir du socket" et la requête ne renvoie rien. Parfois même essayer d'accéder au schéma après ce point me donne à nouveau une erreur "Plus de données à lire depuis le socket". – philrabin

1

Un dba à ma compagnie m'a donné celui-ci. Il est

CREATE OR REPLACE PROCEDURE "SYS"."DROP_SCHEMA_FAST" (pSchema IN 
    VARCHAR2) 
IS 
    cnt NUMBER(5) := 0; 
    sql1 varchar2(4000); 
    x PLS_INTEGER; 
--disable constraints: 
    cursor cur1 is select 'alter table ' || OWNER ||'.'||table_name||' disable constraint '||constraint_name sql2 
      from all_constraints where owner=pSchema and status='ENABLED' 
      and table_name not like 'BIN$%' and constraint_name not like 'SYS_%' and constraint_name not like '%PK%'; 

    cursor cur2 is select 'alter table ' || OWNER ||'.'||table_name||' disable constraint '||constraint_name sql2 
      from all_constraints where owner=pSchema and status='ENABLED' 
      and table_name not like 'BIN$%' and constraint_name not like 'SYS_%'; 

--truncate all tables: 
cursor cur3 is select 'truncate table ' || OWNER ||'.'||table_name sql2 from all_tables where owner=pSchema 
and table_name not like 'BIN$%'; 

BEGIN 
    SELECT COUNT(*) INTO cnt FROM dba_users WHERE UPPER(username) = UPPER(pSchema); 
    IF (cnt <= 0) THEN 
     RETURN; 
    END IF; 
    sql1 := 'ALTER USER ' || UPPER(pSchema) || ' ACCOUNT LOCK'; 
    EXECUTE IMMEDIATE sql1; 

--disable constraints: 
FOR ao_rec IN cur1 LOOP 
     EXECUTE IMMEDIATE ao_rec.sql2; 
END LOOP; 

FOR ao_rec IN cur2 LOOP 
     EXECUTE IMMEDIATE ao_rec.sql2; 
END LOOP; 
--truncate all tables: 
FOR ao_rec IN cur3 LOOP 
     EXECUTE IMMEDIATE ao_rec.sql2; 
END LOOP; 

--drop schema: 
sql1 := 'DROP USER ' || UPPER(pSchema) || ' CASCADE'; 
    EXECUTE IMMEDIATE sql1; 
exception when others then null; 
END; 
0

avait aussi ce problème, glissai en réglant « identificateurs de PLScope: » à « None » dans Tools->Preferences ->Database->PL/SQL Compiler

+0

S'il vous plaît vérifier cette [URL] (http://stackoverflow.com/help) il sera utile de lever la qualité de votre contenu –

+0

Eh bien, merci, mais je suis déjà passé par cela. C'est quelque chose que j'ai mal fait avec ma réponse? Si oui, je vais résoudre le problème! (et désolé pour le dérangement) – student0495

+0

Dois-je ajouter quelque chose comme de la documentation? C'était juste quelque chose qui a résolu le problème pour moi, je ne me souviens pas où j'ai trouvé la réponse exactement mais c'est tout ce que j'ai fait pour faire disparaître l'erreur. – student0495

Questions connexes