【发布时间】:2020-03-27 00:57:31
【问题描述】:
这是我不断收到的错误
SQL 错误:ORA-01000:超出最大打开游标 01000. 00000 - “超出最大打开游标”
这是我一直在处理的代码
DROP TABLE STUDENT;
CREATE TABLE STUDENT
(
Student_ID NUMBER(5) NOT NULL ENABLE
,F_NAME VARCHAR2(30) NOT NULL ENABLE
,L_NAME VARCHAR2(30) NOT NULL ENABLE
,HomePhone_Number NUMBER(10)
,Home_Address VARCHAR2(35)
,City VARCHAR2(35)
,State VARCHAR(2)
,Zip_Code NUMBER(5)
,Spouse_FName VARCHAR2(25)
,Spouse_LName VARCHAR2(25)
,Enrolled_ID NUMBER(10)
,Academic_Advisor_ID NUMBER(5)
,PRIMARY KEY (Student_ID) ENABLE
);
DROP TABLE FACULTY;
CREATE TABLE FACULTY
(
Faculty_ID NUMBER(5) NOT NULL ENABLE
,F_Name VARCHAR2(30) NOT NULL ENABLE
,L_Name VARCHAR2(30) NOT NULL ENABLE
,OfficePhone_Numnber NUMBER(10)
,Office_Number NUMBER(10)
,PRIMARY KEY (Faculty_ID) ENABLE
);
DROP TABLE ADVISOR;
CREATE TABLE ADVISOR
(
Student_ID NUMBER(5),
Faculty_ID NUMBER(5),
Advisor_TYPE VARCHAR2(20)
);
--INSERT VALUES INTO STUDENT
INSERT INTO STUDENT VALUES
(1,'Emily','Bronte',9542403843,'742 Evergreen Terrace','Springfield','IL',34567,'Jason','Bourne',1001);
INSERT INTO STUDENT VALUES
(2,'Alice','Walker',5481354795,'3584 NW 29th St','Mason','FL',17465,'Michael','Myers',1002);
INSERT INTO STUDENT VALUES
(3,'Kurt','Vonnegut',5481354796,'14 Blanchfield','Summer','FL',12444,'Jane','Vonnegut',1003);
INSERT INTO STUDENT VALUES
(4,'Isaac','Asimov',5481354743,'6754 N Riva Ridge Loop','Evans Mills','NY',13602,'April','Asimov',1004);
INSERT INTO STUDENT VALUES
(5,'Thomas','Elliot',5481354799,'6754 W Riva Ridge Loop','Evans Mills','NY',13602,'Sara','Elliot',1005);
INSERT INTO STUDENT VALUES
(6,'Louisa','Alcott',5481357117,'6754 S Riva Ridge Loop','Evans Mills','NY',13602,'Freddy','Alcott',1006);
--INSERT VALUES INTO FACULTY
INSERT INTO FACULTY VALUES(500,'Marth','Graham');
INSERT INTO FACULTY VALUES(501,'Mikhail','Baryshinokov');
INSERT INTO FACULTY VALUES(502,'Jerome', 'Robbins');
INSERT INTO FACULTY VALUES(503,'Arthur', 'Mitchell');
INSERT INTO FACULTY VALUES(504,'Kir','Jooss');
--INSERT VALUES INTO ADVISOR
INSERT INTO ADVISOR VALUES( 1, 500, 'Academic Advisor');
INSERT INTO ADVISOR VALUES( 2, 501, 'Academic Advisor');
INSERT INTO ADVISOR VALUES( 3, 502, 'Academic Advisor');
INSERT INTO ADVISOR VALUES( 4, 503, 'Academic Advisor');
INSERT INTO ADVISOR VALUES( 5, 504, 'Academic Advisor');
INSERT INTO ADVISOR VALUES( 1, 502, 'Thesis Advisor');
INSERT INTO ADVISOR VALUES( 2, 504, 'Thesis Advisor');
INSERT INTO ADVISOR VALUES( 3, 503, 'Thesis Advisor');
INSERT INTO ADVISOR VALUES( 4, 501, 'Thesis Advisor');
INSERT INTO ADVISOR VALUES( 5, 500, 'Thesis Advisor');
COMMIT;
SET AUTOTRACE ON;
--QUERY : All students under a specific advisor
SELECT FACULTY.Faculty_ID,FACULTY.F_Name,FACULTY.L_Name,STUDENT.Student_ID,F_Name,L_Name
FROM STUDENT,FACULTY,ADVISOR
WHERE (STUDENT.STUDENT_ID = ADVISOR.STUDENT_ID) AND
(FACULTY.Faculty_ID = ADVISOR.Faculty_ID)
ORDER BY FACULTY.Faculty_ID;
CREATE UNIQUE INDEX index_name
ON ADVISOR(Student_ID,Faculty_ID);
SET AUTOTRACE ON;
--QUERY : All students under a specific advisor
SELECT FACULTY.Faculty_ID,FACULTY.F_Name,FACULTY.L_Name,STUDENT.Student_ID,F_Name,L_Name
FROM STUDENT,FACULTY,ADVISOR
WHERE (STUDENT.Student_ID = ADVISOR.Student_ID) AND
(FACULTY.Faculty_ID = ADVISOR.Faculty_ID)
ORDER BY FACULTY.Faculty_ID;
在 Oracle SQL 开发人员的运行脚本上运行后,这是我得到的错误
错误报告 -
SQL 错误:ORA-01000:超出最大打开游标
01000. 00000 - “超出最大打开游标”
*原因:
*行动:
无法收集统计数据请不确定用户是否具有正确的访问权限。
统计功能要求授予用户对 v_$sesstat、v_$statname 和 v_$session 的选择权。
【问题讨论】:
-
你能添加更多关于这个问题的上下文吗?你在什么环境下运行这个?
select value from v$parameter where name = 'open_cursors';的结果是什么我很惊讶这段代码会抛出最大打开游标错误,因为我希望它只使用大约一个游标。查看此数据字典视图以检查是否有任何意外打开的游标:select * from gv$open_cursor order by sid; -
完全正确;这里没有任何可疑之处。您发布的代码的哪一部分引发了错误?
-
错误开始于命令中的第 1 行 - DROP TABLE STUDENT 错误报告 - SQL 错误:ORA-01000: 最大打开游标超过 01000。00000 - “超过最大打开游标” sqldeveloper
-
@Steve 如果一个简单的 DDL 抛出一个打开的游标错误,这意味着您的数据库出现了严重错误。你可以运行
select value from v$parameter where name = 'open_cursors';- 我想知道是否有人降低了像 1 这样可笑的东西的数量。另外,这是 整个 错误消息,还是有消息堆栈?可能有一个数据库触发器失败,导致每个 DDL 失败。如果你有 DBA,我会让他们参与进来。如果这是您自己管理的测试实例,我会尝试重新启动或只是构建一个新数据库。