Anonim

데이터베이스 메이븐은 Oracle이라는 이름을 관계형 데이터베이스 관리 시스템 (DBMS) 세계의 강국으로 인식 할 것입니다. 오라클은 수십 년 동안 매우 강력한 DBMS 솔루션을 생산해 왔으며이 분야의 리더로 남아 있습니다. 데이터베이스 제품의 많은 최종 사용자는 미리 디자인 된 솔루션을 사용할 때 혼동되거나 당황 할 수 있으며 오류 메시지를 생성합니다. Oracle에서 생성 된 일반적인 오류 메시지 중 하나는 ORA-06512 오류입니다.

또한 ora-00942 오류 해결 방법 기사를 참조하십시오.

Oracle은 40 년 동안 다양한 형태로 사용되어 온 데이터베이스 관리 시스템입니다. 원래 SCOTT 스키마라는 이름을 사용했는데 이는 Oracle의 원래 직원 중 한 사람의 이름을 따서 명명되었습니다. 사용자 이름 'scott'과 비밀번호 'tiger'를 사용하여 처음으로 Oracle에 로그인했는데 Scott의 이름을 따서 명명되었습니다. 이제 Oracle의 용도에 따라 사용되는 여러 스키마가 있습니다.

Oracle에 대해 처음부터 자세히 알고 싶다면이 페이지가 매우 유용합니다.

ORA-06512 오류 수정

Oracle에서 ORA-06512 오류는 문제가 발생한 위치를 알려주는 일반적인 예외 오류입니다. 문제가 있음을 알려주지 만 잘못되는 것은 아니라는 점에서 Oracle이 생성하는 가장 구체적인 오류 중 하나입니다.

예를 들어 일반적인 오류 메시지는 다음과 같습니다.

“ORA-01422 : 정확한 가져 오기는 요청 된 수보다 많은 행을 반환합니다.

ORA-06512 : 66 행의 "DATABASE_NAME"에서

ORA-06512 : 1 행째 "

첫 번째 줄은 어떤 유형의 오류가 발생했는지 알려줍니다.이 경우 쿼리는 쿼리가 예상하는 것보다 많은 데이터를 반환하므로 처리 방법을 모릅니다. 'ORA-01422'코드는보고자하는 실제 오류 코드입니다. ORA-06512는 일반적인 오류 코드입니다.

두 번째 줄은 오류가 발생한 위치를 알려줍니다. DATABASE_NAME은 현재 작업중 인 데이터베이스가 될 것입니다. 66 번째 줄은 오류가 발생한 줄이며 오류를 수정하기 위해 확인해야하는 줄입니다.

오류 구문의 세 번째 줄은 호출의 출처를 알려줍니다. 1 행을 확인하면 DATABASE_NAME에 대한 호출이 표시됩니다.

이 특정 오류를 수정하려면 '정확한 페치가 요청 된 수보다 많은 행을 리턴합니다.'인 ORA-01422로 인해 발생하는 문제를 수정하거나 Oracle에이를 무시하도록 예외 처리기를 추가해야합니다. 핵심 문제를 해결하는 것이 항상 바람직하므로이 방법이 좋습니다.

당신이 할 수있는 두 가지가 있습니다. 쿼리가 둘 이상의 행을 반환 할 것으로 예상되면 놀라지 않도록 수정할 수 있습니다. 쿼리가 단일 행만 반환 할 것으로 예상하는 경우 해당 행에 대해서도 해당 쿼리를 수정할 수 있습니다.

하나 이상의 행을 예상합니다.

X in (select * from t where…)의 경우

고리

- X 레코드를 여기에서 처리하십시오.

엔드 루프;

이것은 둘 이상의 행이 리턴되는 데이터베이스 쿼리에서 오류를 제거해야합니다.

단일 행만 반환 될 것으로 예상되면 다음을 시도해보십시오.

시작하다

*를…로 선택하십시오.

t에서 ….

방법….

예외

NO_DATA_FOUND 인 경우

레코드가 없을 때 오류 처리 코드

TOO_MANY_ROWS 인 경우

너무 많은 레코드가 발견되면 오류 처리 코드

종료;

이 두 번째 방법은 'ORA-01422 : 정확한 페치가 요청 된 수보다 많은 행을 반환합니다.'오류와 원래 ORA-06512 오류를 발생시키지 않고 단일 행만 제공해야합니다.

또한 여러 행 응답의 첫 번째 행만 반환하도록 쿼리를 조정할 수 있습니다. 데이터베이스를 완전히 제어하지 못하거나 너무 많은 것을 망설이고 싶지만 여전히 대답이 필요한 경우에 효과적입니다.

알리다

select * from t에 대한 c1 커서 여기서…

시작하다

열린 c1;

c1을로 가져옵니다 ..

(c1 % notfound)이면

레코드를 찾을 수없는 오류 처리

경우 종료;

c1을 닫고;

종료;

(SQL을 알고 있다면 이러한 명령 줄에 약간 혼란 스러울 수 있습니다. Oracle은 Transact-SQL을 사용하지 않고 SQL, PL / SQL의 자체 절차 언어 확장입니다. Transact-SQL과 유사하지만 PL / SQL은 PL / SQL FAQ는 Oracle에 대해 배울 때 유용 할 것입니다.)

따라서 여기서 기본적인 교훈은 ORA-06512 오류 그 자체가 아니라 직접 수정할 수있는 것이 아닙니다. 대신 실제 오류가 무엇인지, 다른 오류 코드가 알려주는 것을 파악한 다음 해당 오류를 하나씩 해결해야합니다.

공유 할 Oracle 팁이나 요령이 있습니까? 의견에 대해 알려주십시오!

Oracle DB에서 Ora-06512 오류 해결 방법