删除Oracle中的架构:SQL错误:无法从套接字读取更多数据
我试图在我们的开发环境中删除Oracle11g中的一个模式,但返回了SQL错误:没有更多的数据可从套接字读取。架构上没有负载,因为它只是一个dev db。这是一个小分贝,没有任何疯狂的事情发生。我一直看到这个错误。重新启动实例有时可以解决问题。我似乎找不到任何能说明解决办法的信息。谢谢 据我所知,此消息通常是由错误引起的。此外,当它出现在您的警报日志和/或跟踪文件中时,将包含有关错误实际可能是什么的更多详细信息。要查找会话运行的跟踪文件,请执行以下操作:删除Oracle中的架构:SQL错误:无法从套接字读取更多数据,oracle,schema,oracle11g,Oracle,Schema,Oracle11g,我试图在我们的开发环境中删除Oracle11g中的一个模式,但返回了SQL错误:没有更多的数据可从套接字读取。架构上没有负载,因为它只是一个dev db。这是一个小分贝,没有任何疯狂的事情发生。我一直看到这个错误。重新启动实例有时可以解决问题。我似乎找不到任何能说明解决办法的信息。谢谢 据我所知,此消息通常是由错误引起的。此外,当它出现在您的警报日志和/或跟踪文件中时,将包含有关错误实际可能是什么的更多详细信息。要查找会话运行的跟踪文件,请执行以下操作: select U_DUMP.val
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“不再从套接字读取数据”查询不返回任何内容。有时,即使在该点之后尝试访问架构,也会再次出现“无更多数据可从套接字读取”错误。请检查此错误。这将有助于提高您的内容质量,谢谢,但我已经完成了此操作。这是我的答案有问题吗?如果是,我会解决此问题!(很抱歉打扰)我应该添加一些文档吗?它只是解决了我的问题,不记得我在哪里找到了确切的答案,但这就是我所做的一切,让错误消失。