删除Oracle中的架构:SQL错误:无法从套接字读取更多数据

删除Oracle中的架构:SQL错误:无法从套接字读取更多数据,oracle,schema,oracle11g,Oracle,Schema,Oracle11g,我试图在我们的开发环境中删除Oracle11g中的一个模式,但返回了SQL错误:没有更多的数据可从套接字读取。架构上没有负载,因为它只是一个dev db。这是一个小分贝,没有任何疯狂的事情发生。我一直看到这个错误。重新启动实例有时可以解决问题。我似乎找不到任何能说明解决办法的信息。谢谢 据我所知,此消息通常是由错误引起的。此外,当它出现在您的警报日志和/或跟踪文件中时,将包含有关错误实际可能是什么的更多详细信息。要查找会话运行的跟踪文件,请执行以下操作: select U_DUMP.val

我试图在我们的开发环境中删除Oracle11g中的一个模式,但返回了SQL错误:没有更多的数据可从套接字读取。架构上没有负载,因为它只是一个dev db。这是一个小分贝,没有任何疯狂的事情发生。我一直看到这个错误。重新启动实例有时可以解决问题。我似乎找不到任何能说明解决办法的信息。谢谢

据我所知,此消息通常是由错误引起的。此外,当它出现在您的警报日志和/或跟踪文件中时,将包含有关错误实际可能是什么的更多详细信息。要查找会话运行的跟踪文件,请执行以下操作:

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');

我公司的一位dba给了我这个。它是

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;
创建或替换过程“SYS”。“DROP_SCHEMA_FAST”(pSchema IN
瓦查尔(2)
是
碳纳米管数(5):=0;
sql1-varchar2(4000);
x PLS_整数;
--禁用约束:
光标cur1选择“更改表格”| |所有者| |'。| |表格|名称| |“禁用约束”| |约束|名称sql2
从owner=pSchema和status='ENABLED'的所有约束中
表_名称不象“BIN$%”,约束_名称不象“SYS_%”,约束_名称不象“%PK%”;
光标cur2选择“更改表格”| |所有者| |'。| |表格|名称| |“禁用约束”| |约束|名称sql2
从owner=pSchema和status='ENABLED'的所有约束中
和表_name不象'BIN$%'和约束_name不象'SYS_%';
--截断所有表:
光标cur3从所有表中选择“截断表”| |所有者| |'。| |表名称sql2,其中所有者=pSchema
表_名称与“BIN$%”不同;
开始
从dba_用户中选择COUNT(*),其中UPPER(用户名)=UPPER(pSchema);

如果(cnt也有这个问题,通过在
Tools->Preferences->Database->PL/SQL Compiler

中将“PLScope identifiers:”设置为“None”来修复。我在尝试删除用户后直接尝试了这个命令。我仍然收到错误17410“不再从套接字读取数据”查询不返回任何内容。有时,即使在该点之后尝试访问架构,也会再次出现“无更多数据可从套接字读取”错误。请检查此错误。这将有助于提高您的内容质量,谢谢,但我已经完成了此操作。这是我的答案有问题吗?如果是,我会解决此问题!(很抱歉打扰)我应该添加一些文档吗?它只是解决了我的问题,不记得我在哪里找到了确切的答案,但这就是我所做的一切,让错误消失。