오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가


★ 오라클 9i + 10g 실무중심 자격증취득 교육

 

오라클 공인 전문가 제도(Oracle Certified Professional)는 오라클 제품 사용자의 관련 업무별 전문

기술 지식 정도를 측정하여 대내외적으로 증명해 주며, 오라클의 제품과 최신 기술을 활용하여 최적의 솔루션을 설계, 개발, 응용하는데 필요한 인력의 역량을 인증해 주는 프로그램입니다.

 

* 교육 담당 & 관리자 : 김 윤 석
* 교육 문의 & 예약 접수 : 02) 6255-8046
* 홈페이지 http://www.itmoya.net/ocp/main_1.htm
- 오라클지정 교육원, 본원 시험실시, 40%바우쳐제공

 

2006 오라클 9I+10G 양성교육 일정은 국비지원 제도 사항으로 혜택을받으실수 있습니다.
자세한 교육내용를 알고 싶으시면 운영자에게 개인상담 / 전화 /메일로 주시면 자세한
세부 교육커리 와 수강료에 대해서 안내해 드리겠습니다.

 

※본원 오라클 지정 취업지원과정 교육 파트너(Oracle Workforce Development Program)

 

오라클의 정규 과정의 강의를 수행할 수 있는 강사를 보유한 기관을 대상으로 오라클의 교육과목에

대하여 공식교재와 S/W를 활용하여 교육과정을 진행하는 교육 기관입니다.

협력교육기관은 자체적으로 과정을 개설하며, 수강생을 모집하고, 강의를 수행하며, 교육 품질에 대한 책임도 협력 교육기관이 소유하는 형태의 교육 협력 파트너입니다.
오라클은 우수 IT인력 양성과 실업자/미취업자의 취업 지원을 위한 취업지원과정을 통해 오라클의 교육과정을 수강하고자 하는 수강희망자에게 폭넓은 기회를 제공하고자 노력하고 있습니다.

 

▶ 교육과정 : ORACL-DBA 9I [WDP공인지정센터]
▶ 개강안내 : 매월 초 개강 / 수시접수 / 교육시간 조정가능 / 평일,주말반 운영
▶ 교육대상 : 데이터베이스 전문가가 되기 원하는 사람
                    OCP 자격증 취득을 원하는 사람
                    오라클을 사용하여 SQL 프로그래밍을 하려는 사람
▶ 모집정원 : 15명[선착순마감]
▶ 교육혜택 : WDP지정센터로 오라클 교육과정 수강신청시 바우처 40% 할인쿠폰 증정 [재수강 무료]
▶ 교육장소 : 강남ITWILL교육센터 7층[오라클 공인 강의장]

 

<강남 국제자격증 시험센터>
전 과정 15명이내 소수 집중 강의와 30석 세미나형 강의
전 강의장 빔 프로젝트 또는 모니터 분배기를 통한 비쥬얼 교육
대학교수(경희대,중앙대,청강대 등) 및 현장경력 6년의 실무진 강사
담임선생님의 철저한 회원관리
1인 1대의 교육시스템
우수수강생중 선별하여 보원 프로젝트 참여기회 부여
노동부 지정 교육기관 - 고용보험 환급제도 실시 교육기관
제1회 KOEX전자상거래박람회 웹마스터대표교육기관선정
매일경제 TV방영
(크리에이티브21,인터넷 전문교육기관선정- 2월 18일 방영)
HOW PC 웹전문 교육기관 선정(1999년 11월호)
정통부,노동부 지정교육원
iMBC 라이프 협력업체 ,
동아일보 donga.com제휴업체
리눅스원지정교육기관
호산나넷 IT 지정교육원
KTF 지정교육기관

 

<시스템>
펜티엄 5 512MB 80GHDD LCD 모니터
최고급 강의 시스템-XGA Beam Projector
최고급 서버
전용 교육서버
HP Netserver LH4 Xeon 55O 4 Way RAID 5
및 Inter PⅢ-866 Dual 8대운영
Ciscon CCNA, CCNP, CCIE 실습용 랙 완비
SUN Ultra 10 10대보유
Unix 전용서버 운영
10M급 전용회선

 

▶ 오라클 9I 교육과정 및 세부내용
---------------------------------------------------------
1)Introduction to Oracle SQL and PL/SQL
2)Oracle9i Database: Fundamentals I
3)Oracle9i Database: Fundamentals II
4)Oracle9i Database: Performance Tuning
---------------------------------------------------------

 

교육과정 세부내용 - 8주교육 [주5일 일일3시간 진행]

 

* 1개월


<1,2주차> PL/SQL (1Z0-007)
OCP 자격증 개요
PL/SQL의 기초, 블록(선언부,실행부,예외 처리부)
제어문의 구조(IF문, CASE문, LOOP문, GOTO문, NULL문)
예외 처리(종류, 처리부의 형식, 처리 방식)
오라클 데이터 조작

(DML, CURSOR, CURSOR FOR LOOP, CURSOR Variable, CURSOR 연산식, DCL)
타입(COLLECTION, BULK BINDING, RECORD)
모듈 - 프로시저, 함수, 패키지(PRIVILEGE, 모듈 호출, FUNCTION, 패키지, 오버로딩, 외부 프로시저)
트리거(DML 트리거, INSTEAD OF TRIGGER, 시스템 이벤트 트리거)
Native Dynamic SQL(DBMS_SQL 패키지, 고유 동적 SQL)
객체(Object Type, COLLECTION, 객체 뷰, 이름 분석(Name Resolution)과 엘리어스)
상속

(Inheritance, Step by Step, 치환성(sbsstitutability), 타입의 진화(Type Evolution), 객체 뷰의 상속)

 

<3,4주차> Fundamental Ⅰ (1Z0-031)
Basic of the Oracle Database Architecture
(오라클 서버구조, 오라클 서버 시작하기, Oracle Instance의 관리,오라클 데이터베이스 생성)
Managing the Physical Database Structure
(데이터 딕셔너리의 내용과 용도, 컨트롤 파일의 유지, 리두 로그 파일 유지)
Managing Tablespaces and Datafiles
(데이터베이스의 논리적 구조에 대한 설명)
Storage Structures and Undo Data
(저장 구조 및 관계, 언두 데이터의 관리)
Managing Database Objects
(테이블의 관리, 인덱스 관리, 데이터 무결성 관리)
Managing Database Users
(사용자 관리, 비밀번호 보안 및 리소스 관리, 권한의 관리, 롤의 관리(Managing Roles)

 

* 2개월


<1,2주차> Fundamental Ⅱ (1Z0-032)
Networking 개요
Oracle Net Architecture 기본
Net Server-Side 구성의 기본
Oracle Net Services Client-Side 구성의 기본
오라클 공유 서버의 활용과 구성
Backup과 Recovery 개요
인스턴스와 미디어 복구 개요
Database Archive 모드 구성
Oracle Recovery Manager 개요와 구성
User-Managed Backups
RMAN Backups
User-Managed Complete Recovery
RMAN Complete Recovery
User-Managed Incomplete Recovery
RMAN Incomplete Recovery
RMAN Maintenance
Recovery Catalog 생성과 유지보수
데이터베이스간의 데이터 전송
데이터베이스내로 데이터 로딩

 

<3,4주차> Performance Tuning (1Z0-033)
Database Tuning 개요
오라클 성능 튜닝 방법
진단과 튜닝 도구
동적 성능 뷰의 통계
스태츠팩을 사용한 통계수집
경고 로그와 추적 파일
공유 풀 크기 조정
버퍼 개시의 크기 조정
나머지 SGA 구조의 크기 조정
데이터베이스 구성과 I/O 문제
정렬 작업의 최적화
래치 경합의 진단
롤백
언두세그먼트 튜닝
락 경합의 모니터링과 탐지
오라클 공유 서버의 튜닝
애플리케이션 튜닝
오라클 블록의 효율적 사용
SQL 구문 튜닝
OS 고려사항
데이터베이스 Resource Manager

 

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

9i설치후 8080 포트 사용하는 것 바꾸기

9i를 설치후 톰캣이나 여타 container를 설치 후 8080 포트를 오라클의 http 프로세스가 사용해서 8080 포트 사용이 불가하다는 질문을 가끔 받을 때가 있는데..

그런 경우의 처리는 이렇게 하면 된다.

 

우선, Oracle XDB 라는 녀석이 8080포트와 2100을 쓴다.

 

포트 변경 하는 법

1. [시작] -> [프로그램] -> [Oracle - OraHome92] -> [Configuration and Migration Tools] -> [Database Configuration Assistant] 선택
2. [다음] 버튼을 Click -> [데이터베이스의 데이이터베이스 옵션구성] 선택
3. 옵션을 구성하고자 하는 [사용 가능한 데이터베이스] 선택

4. Oracle XML DB 의 [사용자 정의 ...] 버튼을 Click  그리고 FTP 및 WebDAV 포트는 기본 설정인 2100 을 사용.
5. [확인] 버튼을 Click 하시고 [다음] 버튼을 Click .

    데이터베이스를 실행할 기본모드를 선택하시고 [완료]
6. 다른 db가 있다면 다시 수행

 

포트를 아예 안쓰고 싶다면  4, 5번 단계에서 'XML 프로토콜 비활성화'를 체크하면 가능 

 

설치시에 XML DB OPTION을 아예 사용하지 않도록 하면 xml db 자체를 설치 하지 않음

 

참고 - "XML Database Developer s Guide - Oracle XML DB" 책의 21장
"Configuring Oracle XML DB with Enterprise Manager"

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

MSSQL, MySQL에만 익숙해져있던 나에겐 오라클은 골치덩이 그 자체였다. 설치할 때 뜨는 무수한 오류와 (9i 버전으로 2000에 설치하니까 로그 파일을 찾을 수 없다는 오류가 계속 나왔다, 결국 xp에 설치했다) 사용하기 힘든 인터페이스, 또 왜 그리 느린지... 물론 내가 오라클에 대한 지식이 없어서 오라클의 강점을 느끼지 못하고 있는거지만 그래도 너무 불편하였다. 특히나! 설치 후 Oracle

Universal Installer 로 삭제를 해도 서비스 목록에서 나가지 않고 버팅기는 오라클의 위력이란 참...

그래서 이번엔 윈도우 2000 기준으로 오라클을 완전히 삭제하는 방법에 관한 팁이다. 이 방법은 물론 내가 알아낸 것이 아니라 여러 오라클 관련 포럼에서 보고 종합한 것이다.

 

오라클을 분명히 언인스톨 완료 까지 했는데 서비스 목록에 가보면 오라클 서비스가 지워지지 않고 계속 작동중인것을 볼 수 있을 것이다. 이런 상태에서 같은 버전, 혹은 다른 버전의 오라클을 설치했을 때 제대로 작동이 되지 않는다. (설치가 제대로 되지 않아 8i, 9i, 10g 버전을 골고루 깔아봤을 때 전 버전이 제대로 삭제되어있지 않으면 잘 설치가 되지 않았다) 이 것을 완전히 삭제 하려면 레지스트리에서 오라클에 관련된 항목을 모두 수동으로 삭제해 주어야 한다.  일단

 

1) 윈도우 서비스에 들어가서 오라클 관련 모든 서비스를 멈춘다.

 

regedit을 실행시킨 후

2) HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services

이 부분에서 Oracle로 시작되는 부분을 모두 지운다.

 

3) HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE

이 부분 마찬가지 Oracle로 시작되는 부분을 모두 지운다.

 

4) 물리적인 하드 드라이브에 존재하는 오라클 관련 폴더들을 지워준다. 하드를 파티션을 나누었을 때 C드라이브에 설치를 안해도 설치한 드라이브, C드라이브에 모두 오라클 관련 폴더가 남는다.

 

5) 재부팅 후 서비스에 오라클 서비스가 남아있는지 확인 한다.

 

실질적인 방법은 매우 간단하다. 하지만 이 과정을 거치지 않으면 제대로 삭제가 되지 않기때문에 서비스 문제 발생의 원인이 될 수 있다.

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Oracle - PL/SQL


PLSQL 이란?


PL/SQL 이란 ?

 
- PL/SQL 은 Oracle's Procedural Language extension to SQL. 의 약자 입니다.

 - SQL문장에서 변수정의, 조건처리(IF), 반복처리(LOOP, WHILE, FOR)등을 지원하며,
   오라클 자체에 내장되어 있는 Procedure Language입니다

 - DECLARE문을 이용하여 정의되며, 선언문의 사용은 선택 사항입니다.  

 - PL/SQL 문은 블록 구조로 되어 있고 PL/SQL 자신이 컴파일 엔진을 가지고 있습니다.



PL/SQL의 장점

 - PL/SQL 문은 BLOCK 구조다수의 SQL 문을 한번에 ORACLE DB 로 보내서 처리하므로
   수행속도를 향상 시킬수 있습니다.

 - PL/SQL 의 모든 요소는 하나 또는 두개이상의 블록으로 구성하여 모듈화가 가능하다.

 - 보다 강력한 프로그램을 작성하기 위해서 큰 블록안에 소블럭을 위치시킬 수 있습니다.

 - Variable, Constant, Cursor, Exception을 정의하고, SQL문장과 Procedural 문장에서
   사용합니다. .

 - 단순, 복잡한 데이터형태의 변수를 선언합니다.

 - 테이블의 데이터 구조와 DataBase의 컬럼럼에 준하여 동적으로 변수를 선언 할 수 있습니다.

 - Exception 처리 루틴을 이용하여 Oracle Server Error를 처리합니다.

 - 사용자 정의 에러를 선언하고 Exception 처리 루틴으로 처리 가능 합니다.


PL/SQL Block 구조


PL/SQL Block Structure

 - PL/SQL은 프로그램을 논리적인 블록으로 나누는 구조화된 블록 언어 입니다.

 - PL/SQL 블록은 선언부(선택적), 실행부(필수적),예외 처리부(선택적)로 구성되어 있고,  
   BEGIN과 END 키워드는 반드시 기술해 주어야 합니다.

 - PL/SQL 블록에서 사용하는 변수는 블록에 대해 논리적으로 선언할 수 있고 사용할 수 있습니다.

 

● DECLARE
    - Optional
    - Variables, cursors, user-defined exceptions

● BEGIN
    - Mandatory
    - SQL Statements
    - PL/SQL Statements

● EXCEPTION
    - Actions to perform when errors occur

● END;
    - Mandatory



  ◈ Declarative Section(선언부)

   -  변수, 상수, CURSOR, USER_DEFINE Exception선언


  ◈ Executable Section(실행부)

   -  SQL, 반복분, 조건문실행
   -  실행부는 BEGIN으로 시작하고 END 로 끝납니다.
   -  실행문은 프로그램 내용이 들어가는 부분으로서 필수적으로 사용되어야 합니다.


  ◈ Exception Handling Section(예외처리)

    - 예외에 대한 처리.
    - 일반적으로 오류를 정의하고 처리하는 부분으로 선택 사항입니다.



PL/SQL 프로그램의 작성 요령

 
 - PL/SQL 블록내에서는 한 문장이 종료할 때마다 세미콜론(;)을 사용합니다. .

  - END뒤에 ;을 사용하여 하나의 블록이 끝났다는 것을 명시 합니다.

  - PL/SQL 블록의 작성은 편집기를 통해 파일로 작성할 수도 있고,
    SQL프롬프트에서 바로 작성할 수도 있습니다.

  - SLQ*PLUS환경에서는 DELCLARE나 BEGIN이라는 키워드로 PL/SQL블럭이 시작하는 것을
    알 수 있습니다.

 - 단일행 주석 : --

 - 여러행 주석 : /* */

 - PL/SQL 블록은 행에 / 가있으면 종결 됩니다.
 


PL/SQL 블럭의 유형


Block Type(PL/SQL 블럭의 유형)

 
[ Anonymous ]

 
[ Procedure ]

 
[ Function ]



 ◈ Anonymous Block(익명 블록)
 
    이름이 없는 블록을 의미 합니다.
    실행하기 위해 프로그램 안에서 선언되고 실행 시에 실행을 위해 PL/SQL 엔진으로 전달됩니다.
    선행 컴파일러 프로그램과 SQL*Plus 또는 서버 관리자에서 익명의 블록을 내장할 수 있습니다.
 
    
 ◈ Procedure(프로시저)
    
    특정 작업을 수행할수 있는 이름이 있는 PL/SQL 블록으로서.
    매개 변수를 받을수 있고.. 반복적으로 사용할수 있는거죠..
    보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL블록을
    데이터 베이스에 저장하기 위해 생성합니다.
 
 
 ◈ Function(함수)
 
    보통 값을 계산하고 결과값을 반환하기 위해서 함수를 많이 사용 합니다.
    대부분 구성이 프로시저와 유사하지만 IN 파라미터만 사용 할 수 있고,
    반드시 반환될 값의 데이터 타입을 RETURN문에 선언해야 합니다.
    또한 PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 합니다.


프로시저(PROCEDURE)


프로시져란..


특정 작업을 수행할수 있고, 이름이 있는 PL/SQL 블록으로서. 매개 변수를 받을수
있고.. 반복적으로 사용
할수 있는거죠.. 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는
PL/SQL블록을 데이터 베이스에 저장하기 위해 생성합니다.

CREATE OR REPLACE 구문을 사용하여 생성합니다.
IS 로 PL/SQL의 블록을 시작합니다.
LOCAL 변수는 IS 와 BEGIN 사이에 선언합니다.
 

    [Syntax]

    CREATE OR REPLACE procedure name
       IN argument
       OUT argument
       IN OUT argument

    IS

       [변수의 선언]

    BEGIN   
    --> 필수

       [PL/SQL Block]
       -- SQL문장, PL/SQL제어 문장

       [EXCEPTION]  --> 선택
      -- error가 발생할 때 수행하는 문장

    END;   --> 필수


프로시저 작성 예제

SQL>CREATE OR REPLACE PROCEDURE update_sal
        /* IN  Parameter */
        (v_empno         IN    NUMBER)
        
       IS

       BEGIN

       UPDATE emp
       SET sal = sal  * 1.1
       WHERE empno = v_empno;

       COMMIT;

       END update_sal;
       /

 프로시져가 생성되었습니다.


설명..
프로시저의 이름은 update_sal이고..
프로시저 update_sal은 사번(v_empno)를 입력받아서 급여를 update시켜주는 sql문입니다.
프로시저를 끝마칠때에는 항상 "/"를 지정 합니다.

프로시저의 실행
EXECUTE 문을 이용해 프로시저를 실행합니다.

SQL> execute update_sal(7369);
 
PL/SQL 처리가 정상적으로 완료되었습니다.

7369번 사원의 급여가 10% 인상됐습니다.
SELECT 문을 실행시켜보면 데이터가 수정된 것을 확인할수 있습니다.



Parameter란

 
실행 환경과 program사이에 값을 주고 받는 역할을 합니다.

 
블록 안에서의 변수와 똑같이 일시적으로 값을 저장하는 역할을 합니다.

 
function에서는 IN만 있고, OUT과, INOUT는 사용하지 않습니다.

 
Parameter의 타입
    - IN :  실행환경에서 program으로 값을 전달
    - OUT : program에서 실행환경으로 값을 전달
    - INOUT : 실행환경에서 program으로 값을 전달하고,
                  다시 program에서 실행환경으로 변경된 값을 전달
.
 


함수(FUNCTION)


 ◈ 함수(Function)

 - 보통 값을 계산하고 결과값을 반환하기 위해서 함수를 많이 사용 합니다.

 - 대부분 구성이 프로시저와 유사 하지만 IN 파라미터만 사용 할 수 있습니다.

 - 반드시 반환될 값의 데이터 타입을 RETURN문에 선언해야 합니다.

 - 또한 PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 합니다.
 


[Syntax]

CREATE OR REPLACE FUNCTION function name
  [(argument...)]
  RETURN  datatype
    -- Datatype은 반환되는 값의 datatype입니다.

IS

   [변수 선언 부분]

BEGIN

  [PL/SQL Block]

    -- PL/SQL 블록에는 적어도 한 개의 RETURN 문이 있어야 합니다.
    -- PL/SQL Block은 함수가 수행할 내용을 정의한 몸체부분입니다.

END;
 



SQL> CREATE OR REPLACE FUNCTION FC_update_sal
         (v_empno         IN    NUMBER)

          -- 리턴되는 변수의 데이터타입을 꼭 정의해야 합니다
          RETURN NUMBER  .

        IS

        v_sal  emp.sal%type;

        BEGIN

        UPDATE emp
        SET sal  = sal  * 1.1
        WHERE empno  = v_empno;
   
        COMMIT;
 
        SELECT sal
        INTO v_sal
        FROM emp
        WHERE empno = v_empno;

        -- 리턴문이 꼭 존재해야 합니다
        RETURN v_sal;

       END;

함수가 생성되었습니다.
 



설명..

이 함수에는 v_sal이라는 %type 변수가 사용되고 있습니다.
스칼라 데이터 타입을 참고하세요.
프로지저와 마찬가지로 세미콜론(;)으로 블록을 종료한 뒤 "/"를 붙여 코드를 끝마칩니다.


함수의 실행

먼저 함수의 반환값을 저장할 변수를 선언합니다.

SQL> VAR salary NUMBER;


EXECUTE 문을 이용해 함수를 실행합니다.
SQL>EXECUTE :salary := FC_update_sal(7900);

PL/SQL 처리가 정상적으로 완료되었습니다.


오라클 SQL에서 선언된 변수의 출력은 PRINT문을 사용합니다.
PRINT문으로 함수의 반환값을 저장한 salary의 값을 확인하면 됩니다.

SQL>PRINT salary;
 
    SALARY
----------
      1045

결과가 이렇게 나옵니다.
 


스칼라 데이터 타입

변수 선언 방법






Identifier의 이름은 sql의 object명과 동일한 규칙을 따릅니다.

Identifier를 상수로 지정하고 싶은 경우는 CONSTANT라는 KEYWORD를 명시하고
    반드시 초기화를 할당합니다.

NOT NULL이 정의되어 있으면 초기값을 반드시 지정하고,
    정의되어 있지 않을 때는 생략 가능합니다.

초기값은 할당 연산자(:=)를 사용하여 정의 합니다.

초기값을 정의하지 않으면 Identifier는 NULL값을 가지게 됩니다.

일반적으로 한줄에 한 개의 Identifier를 정의 합니다.
 


스칼라 데이터 타입은 단수 데이터형으로 한가지의 데이터 값만 가집니다.
 

BINARY_INTEGER

-2147483647에서 2147483647 사이의 정수

NUMBER[(P, S)]

고정 및 부동 소숫점 수에 대한 기본 유형

CHAR[(최대길이)]

32767바이트까지의 고정길이 문자 데이터에 대한 기본 유형으로 최대길이를 명시하지 않으면 기본적으로 길이는 1로 설정

LONG

32760바이트까지의 가변길이 문자 데이타

VARCHAR2(최대길이)

32767바이트까지의 가변길이 문자 데이타

DATE

날짜와 시각에 대한 기본 유형

BOOLEAN

논리연산에 사용되는 세 가지 값(TRUE, FALSE, NULL) 중 하나를 저장 하는 기본 유형

 

선언 예제

v_price CONTANT NUMBER(4,2) := 12.34 ;     -- 상수 숫자 선언(변할 수 없다)

v_name VARCHAR22(20) ;

v_Bir_Type   CHAR(1) ;

v_flag   BOOLEAN  NOT NULL := TRUE ;      -- NOT NULL 값 TRUE로 초기화

v_birthday DATE;



%TYPE 데이터형


%TYPE 데이터형은 기술한 데이터베이스 테이블의 컬럼 데이터 타입을 모를 경우 사용할 수 있고,

또. 코딩이후 데이터베이스 컬럼의 데이터 타입이 변경될 경우 다시 수정할 필요가 없습니다.

이미 선언된 다른 변수나 데이터베이스 컬럼의 데이터 타입을 이용하여 선언합니다.

 데이터 베이스 테이블과 컬럼 그리고 이미 선언한 변수명이 %TYPE앞에 올수 있습니다.


%TYPE 속성을 이용하여 얻을 수 있는 장점
   - 기술한 DB column definition을 정확히 알지 못하는 경우에 사용할 수 있습니다.
   - 기술한 DB column definition이 변경 되어도 다시 PL/SQL을 고칠 필요가 없습니다.
 

예제
v_empno  emp.empno%TYPE := 7900 ;
v_ename emp.ename%TYPE;
 

예제 프로시져..

SQL>CREATE OR REPLACE PROCEDURE Emp_Info
      -- IN Parameter
      ( p_empno IN emp.empno%TYPE )

        IS

        -- %TYPE 데이터형 변수 선언
        v_empno emp.empno%TYPE;
        v_ename emp.ename%TYPE;
        v_sal   emp.sal%TYPE;

        BEGIN

        DBMS_OUTPUT.ENABLE;

        -- %TYPE 데이터형 변수 사용
        SELECT empno, ename, sal
        INTO v_empno, v_ename, v_sal  
        FROM emp
        WHERE empno = p_empno ;

        -- 결과값 출력
        DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_empno );
        DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_ename );
        DBMS_OUTPUT.PUT_LINE( '사원급여 : ' || v_sal );

        END;
       /


프로시져가 생성되었습니다.

SQL>SET SERVEROUTPUT ON;     --  DBMS_OUTPUT 결과값을 화면에 출력 하기위해


실행 결과
SQL> EXECUTE Emp_Info(7369);

사원번호 : 7369
사원이름 : SMITH
사원급여 : 880
 
PL/SQL 처리가 정상적으로 완료되었습니다.
 


%ROWTYPE


하나 이상의 데이터값을 갖는 데이터 타입으로 배열과 비슷한 역할을 하고 재사용이 가능합니다.
%ROWTYPE데이터 형과, PL/SQL테이블과 레코드가 복합 데이터 타입에 속합니다.


%ROWTYPE


 테이블이나 뷰 내부의 컬럼 데이터형, 크기, 속석등을 그대로 사용할수 있습니다.

 %ROWTYPE 앞에 오는 것은 데이터 베이스 테이블 이름입니다.

 지정된 테이블의 구조와 동일한 구조를 갖는 변수를 선언할수 있습니다.

 데이터베이스 컬럼들의 수나 DATATYPE을 알지 못할 때 편리 합니다.

 테이블의 데이터 컬럼의 DATATYPE이 변경될 경우 프로그램을 재수정할 필요가 없습니다.  
 
 


%ROWTYPE 예제 프로시져..

SQL>CREATE OR REPLACE PROCEDURE RowType_Test
        ( p_empno IN emp.empno%TYPE )

    IS

        -- %ROWTYPE 변수 선언
        v_emp   emp%ROWTYPE ;

   BEGIN

        DBMS_OUTPUT.ENABLE;

        -- %ROWTYPE 변수 사용
        SELECT empno, ename, hiredate
        INTO v_emp.empno, v_emp.ename, v_emp.hiredate
        FROM emp
        WHERE empno = p_empno;

       DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_emp.empno );
       DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_emp.ename );
       DBMS_OUTPUT.PUT_LINE( '입 사 일 : ' || v_emp.hiredate );

   END;
        /

   프로시져가 생성되었습니다.



실행 결과

SQL> SET SERVEROUTPUT ON ;  -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용

SQL> EXECUTE RowType_Test(7900);

사원번호 : 7900
사원이름 : JAMES
입 사 일 : 81/12/03

PL/SQL 처리가 정상적으로 완료되었습니다.


PL/SQL 테이블


  
PL/SQL 에서의 테이블은 오라클 SQL에서의 테이블과는 다릅니다. PL/SQL에서의 테이블은
일종의 일차원 배열이라고 생각하시면 이해하기 쉬울겁니다.


테이블은 크기에 제한이 없으면 그 ROW의 수는 데이터가 들어옴에 따라 자동 증가 합니다.

BINARY_INTEGER 타입의인덱스 번호로 순서가 정해집니다.

하나의 테이블에 한 개의 컬럼 데이터를 저장 합니다.  
 




예제


TYPE prdname_table IS TABLE OF VARCHAR2(30)
INDEX BY BINARY_INTEGER;

--
prdname_table 테이블타입으로 prdname_tab변수를 선언해서 사용
prdname_tab   prdname_table ;
 



PL/SQL 테이블 예제 프로시져..

SQL>CREATE OR REPLACE PROCEDURE Table_Test
    (v_deptno IN emp.deptno%TYPE)

    IS

         -- 각 컬럼에서 사용할 테이블의 선언
         TYPE empno_table IS TABLE OF emp.empno%TYPE
         INDEX BY BINARY_INTEGER;

         TYPE ename_table IS TABLE OF emp.ename%TYPE
         INDEX BY BINARY_INTEGER;

         TYPE sal_table IS TABLE OF emp.sal%TYPE
         INDEX BY BINARY_INTEGER;

         -- 테이블타입으로 변수를 선언해서 사용
         empno_tab  empno_table ;
         
ename_tab  ename_table ;
         
sal_tab    sal_table;

         i BINARY_INTEGER := 0;

   BEGIN

         DBMS_OUTPUT.ENABLE;

         FOR emp_list IN(SELECT empno, ename, sal FROM emp WHERE deptno = v_deptno) LOOP

          /* emp_list는 자동선언되는 BINARY_INTEGER형 변수로 1씩 증가합니다.
            
emp_list대신 다른 문자열 사용가능 */

                i := i + 1;

               -- 테이블 변수에 검색된 결과를 넣습니다
                empno_tab(i) := emp_list.empno ;     
                ename_tab(i) := emp_list.ename ;
                sal_tab(i)   := emp_list.sal ;

          END LOOP;

          -- 1부터 i까지 FOR 문을 실행
          FOR cnt IN 1..i LOOP

             -- TABLE변수에 넣은 값을 뿌려줌
             DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || empno_tab(cnt) );
             DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || ename_tab(cnt) );
             DBMS_OUTPUT.PUT_LINE( '사원급여 : ' || sal_tab(cnt) );

          END LOOP;

  END;
  /

프로시져가 생성되었습니다.

실행 결과

SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)
SQL> EXECUTE Table_Test(10);

사원번호 : 7782
사원이름 : CLARK
사원급여 : 2450
사원번호 : 7839
사원이름 : KING
사원급여 : 5000
사원번호 : 7934
사원이름 : MILLER
사원급여 : 1300

PL/SQL 처리가 정상적으로 완료되었습니다.

 emp 테이블에 있는 데이터의 입력한 부서에 해당하는 사원번호, 사원이름, 사원급여를
 뿌려주는 프로시져 입니다


PLSQL 레코드


여러개의 데이터 타입을 갖는 변수들의 집합입니다.

스칼라, RECORD, 또는 PL/SQL TABLE datatype중 하나 이상의 요소로 구성됩니다.

논리적 단위로서 필드 집합을 처리할 수 있도록 해 줍니다.

PL/SQL 테이블과 다르게 개별 필드의 이름을 부여할 수 있고, 선언시 초기화가 가능합니다.
 

예제

  TYPE record_test IS RECORD
    ( record_empno   NUMBER,
      record_ename   VARCHAR2(30),
      record_sal        NUMBER);

      prd_record    record_test;


PL/SQL RECORD 예제 프로시져..

SQL> CREATE OR REPLACE PROCEDURE Record_Test
      ( p_empno IN emp.empno%TYPE )

     IS

         -- 하나의 레코드의 세가지의 변수타입 선언

         TYPE emp_record IS RECORD
         (v_empno    NUMBER,
          v_ename    VARCHAR2(30),
          v_hiredate  DATE );

         emp_rec   emp_record ;

   BEGIN

         DBMS_OUTPUT.ENABLE;

         -- 레코드의 사용
         SELECT empno, ename, hiredate
         INTO emp_rec.v_empno, emp_rec.v_ename, emp_rec.v_hiredate
         FROM emp
         WHERE empno = p_empno;

        DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || emp_rec.v_empno );
        DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || emp_rec.v_ename );
        DBMS_OUTPUT.PUT_LINE( '입 사 일 : ' || emp_rec.v_hiredate );

   END;
 /


프로시져가 생성되었습니다.


실행 결과
SQL> SET SERVEROUTPUT ON ;  
-- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE Record_Test(7369);

사원번호 : 7369
사원이름 : SMITH
입 사 일 : 80/12/17

PL/SQL 처리가 정상적으로 완료되었습니다.

 %ROWTYPE예제와 비교해 보세요


PL/SQL Table of Record


⊙ PL/SQL TABLE변수 선언과 비슷하며 데이터타입을 %ROWTYPE으로 선언하면 됩니다.
PL/SQL TABLE과 RECORD의 복합 기능을 합니다.

 



DECLARE

TYPE dept_table_type IS TABLE OF dept%ROWTYPE
INDEX BY BINARY_INTEGER;

-- Each element of dept_table  is a record
dept_table   dept_table_type ;
 



PL/SQL TABLE OF RECORD 예제 프로시져..

CREATE OR REPLACE PROCEDURE Table_Test
IS
        i BINARY_INTEGER := 0;
 
     -- PL/SQL Table of Record의 선언
    TYPE dept_table_type IS TABLE OF dept%ROWTYPE
     INDEX BY BINARY_INTEGER;
 
     dept_table dept_table_type;
 
BEGIN
 
 
    FOR dept_list IN (SELECT * FROM dept) LOOP
 
                i:= i+1;
  
        -- TABLE OF RECORD에 데이터 보관
        dept_table(i).deptno := dept_list.deptno ;     
        dept_table(i).dname := dept_list.dname ;
        dept_table(i).loc   := dept_list.loc ;
 
    END LOOP;
 
 
    FOR cnt IN 1..i LOOP
 
     -- 데이터 출력
     DBMS_OUTPUT.PUT_LINE( '부서번호 : ' || dept_table(cnt).deptno ||
                                          '부서명 : ' ||  dept_table(cnt).dname ||
                                          '위치 : ' || dept_table(cnt).loc );
 
    END LOOP;
 
 END;
/
 
 
SQL>set serveroutput on;
SQL>exec Table_test;
부서번호 : 10부서명 : ACCOUNTING위치 : NEW_YORK
부서번호 : 20부서명 : RESEARCH위치 : DALLAS
부서번호 : 30부서명 : 인사과위치 : CHICAGO
부서번호 : 40부서명 : OPERATIONS위치 : BOS%TON
 
PL/SQL 처리가 정상적으로 완료되었습니다.
 


INSERT


PL/SQL에서의 INSERT 문은 SQL과 비슷합니다.
 

사원 등록 예제 프로시져..

SQL> CREATE OR REPLACE PROCEDURE Insert_Test
        ( v_empno  IN emp.empno%TYPE,
          v_ename  IN emp.ename%TYPE,
          v_deptno IN emp.deptno%TYPE )

        IS

      BEGIN

          DBMS_OUTPUT.ENABLE;
    
          INSERT INTO emp(empno, ename, hiredate, deptno)
          VALUES(v_empno, v_ename, sysdate, v_deptno);

          DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_empno );
          DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_ename );
          DBMS_OUTPUT.PUT_LINE( '사원부서 : ' || v_deptno );
          DBMS_OUTPUT.PUT_LINE( '데이터 입력 성공 ' );

       END ;
      /           

프로시져가 생성되었습니다.


실행 결과
SQL> SET SERVEROUTPUT ON ;  
-- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL>  EXECUTE Insert_Test(1000, 'brave', 20);

사원번호 : 1000
사원이름 : brave
사원부서 : 20
데이터 입력 성공

PL/SQL 처리가 정상적으로 완료되었습니다.
 


UPDATE

상품 수정 예제 프로시저..
※ 특정 사원의 급여를 일정%센트 인상/인하하는 프로시져


SQL>CREATE OR REPLACE PROCEDURE Update_Test
       ( v_empno IN    emp.empno%TYPE,       -- 급여를 수정한 사원의 사번
         v_rate     IN    NUMBER )                     -- 급여의 인상/인하율

         IS

         -- 수정 데이터를 확인하기 위한 변수 선언
         v_emp  emp%ROWTYPE ;

         BEGIN

         DBMS_OUTPUT.ENABLE;

         UPDATE emp
         SET sal = sal+(sal * (v_rate/100))   -- 급여를 계산
         WHERE empno = v_empno ;

         DBMS_OUTPUT.PUT_LINE( '데이터 수정 성공 ' );

         -- 수정된 데이터 확인하기 위해 검색
         SELECT empno, ename, sal
         INTO v_emp.empno, v_emp.ename, v_emp.sal
         FROM emp
         WHERE empno = v_empno ;

         DBMS_OUTPUT.PUT_LINE( ' **** 수 정 확 인 **** ');
         DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_emp.empno );
         DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_emp.ename );
         DBMS_OUTPUT.PUT_LINE( '사원급여 : ' || v_emp.sal );

         END ;
         /

프로시저가 생성되었습니다.

프로시저 실행
SQL> SET SERVEROUTPUT ON ;  -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE Update_Test(7900, -10);

데이터 수정 성공
**** 수 정 확 인 ****
사원번호 : 7900
사원이름 : JAMES
사원급여 : 855

PL/SQL 처리가 정상적으로 완료되었습니다.

7900번 사원의 급여를 10% 인하했습니다.


DELETE

사원 삭제 예제 프로시저..

SQL> CREATE OR REPLACE PROCEDURE Delete_Test
    ( p_empno IN  emp.empno%TYPE )

        IS

        -- 삭제 데이터를 확인하기 레코드 선언
        TYPE del_record IS  RECORD
        ( v_empno      emp.empno%TYPE,
          v_ename      emp.ename%TYPE,
          v_hiredate    emp.hiredate%TYPE) ;

          v_emp  del_record ;

        BEGIN

        DBMS_OUTPUT.ENABLE;

         -- 삭제된 데이터 확인용 쿼리
         SELECT empno, ename, hiredate
         INTO v_emp.v_empno, v_emp.v_ename, v_emp.v_hiredate
         FROM emp
         WHERE empno = p_empno ;

        DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_emp.v_empno );
        DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_emp.v_ename );
        DBMS_OUTPUT.PUT_LINE( '입 사 일 : ' || v_emp.v_hiredate );

        -- 삭제 쿼리
        DELETE
        FROM emp
        WHERE empno = p_empno ;

        DBMS_OUTPUT.PUT_LINE( '데이터 삭제 성공 ' );

       END;
 /

프로시저가 생성되었습니다.


프로시저 실행 (결과화면)
SQL> SET SERVEROUTPUT ON ;  
-- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE Delete_Test(7900);
사원번호 : 7900
사원이름 : JAMES
입 사 일 : 81/12/03
데이터 삭제 성공

 
PL/SQL 처리가 정상적으로 완료되었습니다.

※ 7900사원을 삭제했습니다.


FOR LOOP

FOR LOOP문



  -  index 는 자동 선언되는 binary_integer 형 변수이고. 1씩 증가합니다.
  -  reverse 옵션이 사용될 경우 index 는 upper_bound에서 lower_bound로 1씩 감소합니다.
  -  IN 다음에는 coursor나 select 문이 올수 있습니다.



    FOR문 예제


    DECLARE

    -- 사원 이름을 출력하기 위한 PL/SQL 테이블 선언
    TYPE ename_table IS TABLE OF emp.ename%TYPE
    INDEX BY BINARY_INTEGER;

    -- 사원 급여를 출력하기 위한 PL/SQL 테이블 선언
    TYPE sal_table IS TABLE OF emp.sal%TYPE
    INDEX BY BINARY_INTEGER;

    ename_tab    ename_table;
    sal_tab      sal_table;

    i BINARY_INTEGER := 0;

    BEGIN

    DBMS_OUTPUT.ENABLE;

    FOR emp_list IN  (SELECT ename, sal FROM emp WHERE deptno = 10) LOOP

       i := i +1 ;

       ename_tab(i) := emp_list.ename;     -- 테이블에 상품 이름을 저장
       sal_tab(i)      := emp_list.sal;          -- 테이블에 상품 가격을 저장

    END LOOP;


    FOR cnt IN   1..i   LOOP         --  화면에 출력

       DBMS_OUTPUT.PUT_LINE('사원이름 : ' || ename_tab(cnt));
       DBMS_OUTPUT.PUT_LINE('사원급여 : ' || sal_tab(cnt));

    END LOOP;

    END;
    /



    사원이름 : CLARK
    사원급여 : 2450
    사원이름 : KING
    사원급여 : 5000
    사원이름 : MILLER
    사원급여 : 1300

    PL/SQL 처리가 정상적으로 완료되었습니다.


LOOP문, WHILE문



EXIT 문이 사용되었을 경우, 무조건 LOOP문을 빠져나갑니다,

EXITH WHEN 이 사용될 경우  WHEN 절에 LOOP를 빠져 나가는 조건을 제어할수 있습니다.


LOOP 문 예제

SQL> SET SERVEROUTPUT ON ;  -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL>  DECLARE

          v_cnt number(3) := 100;

          BEGIN

          DBMS_OUTPUT.ENABLE ;

          LOOP

              INSERT INTO emp(empno, ename , hiredate)
              VALUES(v_cnt, 'test'||to_char(v_cnt),  sysdate);

              v_cnt := v_cnt+1;

              EXIT WHEN v_cnt > 110;

          END LOOP;

          DBMS_OUTPUT.PUT_LINE('데이터 입력 완료');
          DBMS_OUTPUT.PUT_LINE(v_cnt-100 || '개의 데이터가 입력되었습니다');

          END;           
         /

데이터 입력 완료
11개의 데이터가 입력되었습니다

PL/SQL 처리가 정상적으로 완료되었습니다
.


WHILE LOOP 문

    WHILE LOOP문은 FOR 문과 비슷하며 조건이 TRUE일 경우만 반복되는 LOOP문 입니다.

    예제

    WHILE cnt < 10 LOOP

       INSERT INTO emp(empno, ename , hiredate)
       VALUES(emp_seq.nextval, 'test',  sysdate);

    cnt := cnt + 1 ;

    END LOOP ;

    cnt가 10이면 반복 While Loop를 탈출

    EXIT WHEN
    조건 => 조건이 만족할 때 반복 loop를 탈출합니다. .


조건제어(IF)




IF문 예제 프로시저..

SQL>CREATE OR REPLACE PROCEDURE Dept_Search
(p_empno IN emp.empno%TYPE )

IS

v_deptno emp.deptno%type ;

BEGIN

DBMS_OUTPUT.ENABLE;

SELECT deptno
INTO v_deptno
FROM emp
WHERE empno = p_empno ;

IF v_deptno = 10 THEN

DBMS_OUTPUT.PUT_LINE( ' ACCOUNTING 부서 사원입니다. ' );

ELSIF v_deptno = 20 THEN

DBMS_OUTPUT.PUT_LINE( ' RESEARCH 부서 사원입니다. ' );

ELSIF v_deptno = 20 THEN

DBMS_OUTPUT.PUT_LINE( ' SALES 부서 사원입니다. ' );

ELSIF v_deptno = 20 THEN

DBMS_OUTPUT.PUT_LINE( ' OPERATIONS 부서 사원입니다. ' );

ELSE

DBMS_OUTPUT.PUT_LINE( ' 부서가 없네요... ' );

END IF ;

END ;
/


프로시저가 생성되었습니다.

SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

프로시저 실행

SQL> EXECUTE Dept_Search(7900);

부서가 없네요...
PL/SQL 처리가 정상적으로 완료되었습니다.


SQL> EXECUTE Dept_Search(7369);

RESEARCH 부서 사원입니다.
PL/SQL 처리가 정상적으로 완료되었습니다.


암시적 커서(Implicit Cursor)


  암시적인 커서는 오라클이나 PL/SQL실행 메커니즘에 의해 처리되는 SQL문장이 처리되는 곳에 대한
  익명의 에드레스입니다. 오라클 데이터 베이스에서 실행되는 모든 SQL문장은 암시적인 커서이며
  그것들과 함께 모든 암시적인 커서 속성이 사용될 수 있습니다.

     -암시적 커서의 속성

    SQL%ROWCOUNT : 해당 SQL 문에 영향을 받는 행의 수

    SQL%FOUND : 해당 SQL 영향을 받는 행의 수가 1개 이상일 경우 TRUE

    SQL%NOTFOUND : 해당 SQL 문에 영향을 받는 행의 수가 없을 경우 TRUE

    SQL%ISOPEN : 항상 FALSE, 암시적 커서가 열려 있는지의 여부 검색

    (암시적 커서는 SQL 문이 실행되는 순간 자동으로 열림과 닫힘 실행)


    암시적 커서 예제

    CREATE OR REPLACE PROCEDURE Implicit_Cursor
    (p_empno emp.empno%TYPE)

    is

    v_sal  emp.sal%TYPE;
    v_update_row NUMBER;

    BEGIN

    SELECT sal
    INTO v_sal
    FROM emp
    WHERE empno = p_empno ;

    -- 검색된 데이터가 있을경우
    IF  SQL%FOUND THEN     

        DBMS_OUTPUT.PUT_LINE('검색한 데이터가 존재합니다 : '||v_sal);

    END IF;

    UPDATE emp
    SET sal = sal*1.1
    WHERE empno = p_empno;

    -- 수정한 데이터의 카운트를 변수에 저장
    v_update_row := SQL%ROWCOUNT;

    DBMS_OUTPUT.PUT_LINE('급여가 인상된 사원 수 : '|| v_update_row);

    END;

    프로시저가 생성되었습니다.


    SQL> SET SERVEROUTPUT ON ;  -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)
    SQL> EXECUTE Implicit_Cursor(7369);

    검색한 데이터가 존재합니다 : 880
    급여가 인상된 사원 수 : 1

    PL/SQL 처리가 정상적으로 완료되었습니다.
     


Explicit Cursor



▣ 커서란 무엇인가?

커서는 Private SQL의 작업영역 입니다.
오라클 서버에 의해 실행되는 모든 SQL문은 연관된 각각의 커서를 소유하고 있습니다.
커서의 종류
   - 암시적 커서 : 모든 DML과 PL/SQL SELECT문에 대해 선언됩니다.
   - 명시적 커서 : 프로그래머에 의해 선언되며 이름이 있는 커서입니다.
 

▣ Explicit Cursor의 흐름도?

▣ 문법(Syntax)




▣ 커서 열기(OPEN)

커서의 열기는 OPEN문을 사용합니다.
커서안의 검색이 실행되며 아무런 데이터행을 추출하지 못해도 에러가 발생하지 않습니다.

    OPEN   cursor_name;


▣ 커서 패치(FETCH)

커서의 FETCH는 현재 데이터 행을 OUTPUT변수에 반환합니다.
커서의 SELECT문의 컬럼의 수와 OUTPUT변수의 수가 동일해야 합니다.
커서 컬럼의 변수의 타입과 OUTPUT변수의 데이터 타입도 동일해야 합니다.
커서는 한 라인씩 데이터를 패치 합니다.

    FETCH   cursor_name INTO variable1, variable2 ;


▣ 커서 닫기(CLOSE)

사용을 맞친 커서는 반드시 닫아 주어야 합니다.
필요하다면 커서를 다시 열 수 있습니다.
커서를 닫은 상태에서 FETCH를 할 수 없습니다.

    CLOSE   cursor_name;
 


Explicit Cursor 예제
특정 부서의 평균급여와 사원수를 출력..


FOR문에서 커서 사용(Cursor FOR Loops)


FOR문을 사용하면 커서의 OPEN, FETCH, CLOSE가 자동 발생하므로 따로 기술할
    필요가 없습니다
레코드 이름도 자동 선언되므로 따로 선언할 필요가 없습니다.


 

FOR문에서 커서 사용 예제
부서별 사원수와 급여 합계를 구하는 프로시저입니다.

SQL> CREATE OR REPLACE PROCEDURE ForCursor_Test
        IS

        CURSOR dept_sum IS
        SELECT b.dname, COUNT(a.empno) cnt, SUM(a.sal) salary
        FROM emp a, dept b
        WHERE a.deptno = b.deptno
        GROUP BY b.dname;

     BEGIN

       -- Cursor를 FOR문에서 실행시킨다
       FOR emp_list IN dept_sum LOOP

          DBMS_OUTPUT.PUT_LINE('부서명 : ' || emp_list.dname);
          DBMS_OUTPUT.PUT_LINE('사원수 : ' || emp_list.cnt);
          DBMS_OUTPUT.PUT_LINE('급여합계 : ' || emp_list.salary);

       END LOOP;

   EXCEPTION

       WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');

   END;
   /

프로시져가 생성되었습니다.

실행 결과

SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE ForCursor_Test;
부서명 : ACCOUNTING
사원수 : 3
급여합계 : 8750
부서명 : RESEARCH
사원수 : 6
급여합계 : 10875
부서명 : SALES
사원수 : 6
급여합계 : 9305
 
PL/SQL 처리가 정상적으로 완료되었습니다.
 


명시적 커서의 속성(Explicit Cursor Attributes)

▣ Explicit Cursor 속성
 
%ISOPEN
      - 커서가 OPEN되어 있으면 TRUE
      -  %ISOPEN속성을 이용하여 커서가 열려있는지 알 수 있습니다.

%NOTFOUND
      - 패치한 데이터가 행을 반환하지 않으면 TRUE
      -  %NOTFOUND속성을 이용하여 루프를 종료할 시점을 찾습니다.

%FOUND
      - 패치한 데이터가 행을 반환하면 TRUE

%ROWCOUNT
     -
현재까지 반환된 모든 데이터 행의 수
      - %ROWCOUNT속성을 이용하여 정확한 숫자만큼의 행을 추출합니다.

 

커서의 속성 예제

SQL>CREATE OR REPLACE PROCEDURE AttrCursor_Test
       IS
 
       v_empno     emp.empno%TYPE;
       v_ename     emp.ename%TYPE;
       v_sal          emp.sal%TYPE;

      CURSOR emp_list IS
         SELECT empno, ename, sal
         FROM emp;    

 
    BEGIN


      DBMS_OUTPUT.ENABLE;

      OPEN emp_list;   

      LOOP    

        FETCH emp_list INTO v_empno, v_ename, v_sal;

           -- 데이터를 찾지 못하면 빠져 나갑니다
           EXIT WHEN emp_list%NOTFOUND;       
     
      END LOOP;    


       DBMS_OUTPUT.PUT_LINE('전체데이터 수 ' || emp_list%ROWCOUNT);
    

     CLOSE emp_list;
    
     EXCEPTION
    
       WHEN OTHERS THEN

         DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);
        
    END;
   /



프로시져가 생성되었습니다.

실행 결과

SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE AttrCursor_Test;
전체데이터 수 15

PL/SQL 처리가 정상적으로 완료되었습니다.
 


파라미터가 있는 커서(Cursors with Parameters)

커서가 열리고 질의가 실행되면 매개 변수 값을 커서에 전달한다.
다른 active set을 원할때 마다 explicit커서를 따로 선언해야 한다


▣ 문법(Syntax)

 


파라미터가 있는 커서 예제

SQL> CREATE OR REPLACE PROCEDURE ParamCursor_Test
        (param_deptno   emp.deptno%TYPE)
        IS

         v_ename     emp.ename%TYPE;

       -- Parameter가 있는 커서의 선언
        CURSOR emp_list(v_deptno emp.deptno%TYPE) IS
        SELECT ename
        FROM emp
        WHERE deptno = v_deptno;

       BEGIN

        DBMS_OUTPUT.ENABLE;
        DBMS_OUTPUT.PUT_LINE(' ****** 입력한 부서에 해당하는 사람들 ****** ');              

       -- Parameter변수의 값을 전달(OPEN될 때 값을 전달한다)
        FOR emplst IN emp_list(param_deptno) LOOP    

          DBMS_OUTPUT.PUT_LINE('이름 : ' || emplst.ename);

        END LOOP;    

        EXCEPTION     

          WHEN OTHERS THEN

             DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);         

        END;
        /

프로시져가 생성되었습니다.

실행 결과

SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE ParamCursor_Test(10);
****** 입력한 부서에 해당하는 사람들 ******
이름 : CLARK
이름 : KING
이름 : MILLER

PL/SQL 처리가 정상적으로 완료되었습니다.
 


The WHERE CURRENT OF Clause

WHERE CURRENT OF

   - ROWID를 이용하지 않고도 현재 참조하는 행을 갱신하고 삭제할 수 있게 합니다.
   - 추가적으로 FETCH문에 의해 가장 최근에 처리된 행을 참조하기 위해서
      "W
HERE CURRENT OF 커서이름 "    절로 DELETE나 UPDATE문 작성이 가능합니다..
   - 이 절을 사용할 때 참조하는 커서가 있어야 하며,  
      
FOR UPDATE절이 커서 선언 query문장 안에 있어야 합니다.
      그렇지 않으면 error가 발생합니다..

 

WHERE CURRENT OF 예제

SQL> SET SERVEROUTPUT ON ;  -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용

SQL>CREATE OR REPLACE PROCEDURE where_current
         IS

        CURSOR
emp_list IS
             SELECT empno
             FROM emp
             WHERE empno = 7934
            
FOR UPDATE;

      BEGIN

        
--DBMS_OUTPUT.PUT_LINE명령을 사용하기 위해서
        DBMS_OUTPUT.ENABLE;    

        FOR emplst IN emp_list LOOP
             
 --emp_list커서에 해당하는 사람의 직업을  SALESMAN으로 업데이트 시킵니다.
              UPDATE emp
              SET job = 'SALESMAN'
            
WHERE CURRENT OF emp_list;

            DBMS_OUTPUT.PUT_LINE('수정 성공');

        END LOOP;
 
        EXCEPTION
           WHEN OTHERS THEN
                
-- 에러 발생시 에러 메시지 출력
                DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);
END;  
 

--먼저 데이터를 확인해 보세용
SQL> SELECT job FROM emp WHERE empno = 7934;

JOB
---------
CLERK

 --PLSQL을 실행시키고..
SQL> EXECUTE where_current;
수정 성공  
--DBMS_OUTPUT.PUT_LINE명령으로 출력한거..

PL/SQL 처리가 정상적으로 완료되었습니다.
 

-- 다시 데이터를 확인하면 변경된 것을 볼 수 있습니다.
SQL>  SELECT job FROM emp WHERE empno = 7934;
 
JOB
---------
SALESMAN


예외(Exception)



예외(Exception)란?

오라클 PL/SQL의 오류를 예외라고 부릅니다.

오류는 PL/SQL을 컴파일 할때 문법적인 오류로 발생하는 컴파일 타임 오류와,
    프로그램을 실행할때 발생하는 실행타임 오류로 구분할수 있습니다.
 
 



PL/SQL오류의 종류

 예  외

 설  명

 처  리


   미리 정의된 오라클 서버 오류
(Predefined Oracle Server)
 

  PL/SQL에서 자주 발생하는
  약20개의 오류

  선언할 필요도 없고, 발생시에
예외 절로 자동 트랩(Trap)
된다.


  미리 정의되지 않은 오라클
  서버 오류

  (Non-Predefined Oracle   Server)
 

  미리 정의된 오라클 서버
오류를 제외한
모든 오류

  선언부에서 선언해야 하고 발생시
  자동 트랩된다.


  사용자 정의 오류
  (User-Defined)
 

  개발자가 정한 조건에
만족하지 않을경우
발생하는 오류

   선언부에서 선언하고 실행부에서
   RAISE문을 사용하여 발생시켜야
   한다



Execption 문법(Syntax)

WHEN OTHERS절은 맨 마지막에 옵니다.

예외 처리절은 EXCEPTION부터 시작합니다.

허용합니다.

예외가 발생하면 여러 개의 예외 처리부 중에 하나의 예외 처리부에 트랩(Trap)됩니다.


 


미리 정의된 예외(Predefined Exceptions)

  오라클 PL/SQL은 자주 일어나는 몇가지 예외를 미리 정의해 놓았으며,
      이러한 예외는 개발자가 따로 선언할 필요가 없습니다
 

미리 정의된 예외의 종류?

NO_DATA_FOUND : SELECT문이 아무런 데이터 행을 반환하지 못할때

TOO_MANY_ROWS : 하나만 리턴해야하는 SELECT문이 하나 이상의 행을 반환할 때

INVALID_CURSOR : 잘못된 커서 연산

ZERO_DIVIDE : 0으로 나눌때

DUP_VAL_ON_INDEX : UNIQUE 제약을 갖는 컬럼에 중복되는 데이터가 INSERT될때

   이 외에도 몇 개가 더 있습니다.

미리 정의된 예외 예제

SQL> CREATE OR REPLACE PROCEDURE PreException_test
         (v_deptno  IN emp.empno%TYPE)  
    
   IS

       v_emp   emp%ROWTYPE;

   BEGIN

      DBMS_OUTPUT.ENABLE;

      SELECT empno, ename, deptno
      INTO v_emp.empno, v_emp.ename, v_emp.deptno
      FROM emp
      WHERE deptno = v_deptno ;

      DBMS_OUTPUT.PUT_LINE('사번 : ' || v_emp.empno);
      DBMS_OUTPUT.PUT_LINE('이름 : ' || v_emp.ename);
      DBMS_OUTPUT.PUT_LINE('부서번호 : ' || v_emp.deptno);

   EXCEPTION

      WHEN   DUP_VAL_ON_INDEX   THEN
    
          DBMS_OUTPUT.PUT_LINE('데이터가 존재 합니다.');
          DBMS_OUTPUT.PUT_LINE('DUP_VAL_ON_INDEX 에러 발생');

      WHEN   TOO_MANY_ROWS   THEN  

        DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS에러 발생');

      WHEN   NO_DATA_FOUND   THEN  

        DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND에러 발생');

      WHEN   OTHERS   THEN  

        DBMS_OUTPUT.PUT_LINE('기타 에러 발생');

  END;
  /

프로시저가 생성되었습니다.




프로시저 실행

SQL> SET SERVEROUTPUT ON ;  -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE PreException_Test(20);
TOO_MANY_ROWS에러 발생

PL/SQL 처리가 정상적으로 완료되었습니다.


 TOO_MANY_ROWS에러를 타는 이유?

 -
SELECT문의 결과가 1개 이상의 행을 리턴하기 때문이다..
 - TOO_MANY_ROWS를 피하기 위해서는 FOR문이나 LOOP문으로 SELECT문을 처리해야 합니다.

아래와 같이 바꾸면 에러가 발생하지 않습니다.


    
 FOR  emp_list  IN
         
(SELECT empno, ename, deptno
         FROM emp
         WHERE deptno = v_deptno)
  LOOP

         DBMS_OUTPUT.PUT_LINE('사번 : ' || emp_list.empno);
         DBMS_OUTPUT.PUT_LINE('이름 : ' || emp_list.ename);
         DBMS_OUTPUT.PUT_LINE('부서번호 : ' || emp_list.deptno);
 
     END LOOP;
 


미리 정의되지 않은 예외(Non-Predefined Exception)


 

STEP 1 : 예외의 이름을 선언(선언절)

STEP 2 : PRAGMA EXCEPTION_INIT문장으로 예외의 이름과 오라클 서버
                  오류 번호를 결합(선언절)

STEP 3 : 예외가 발생할 경우 해당 예외를 참조한다(예외절)
 

리 정의되지 않은 예외 예제

SQL> CREATE OR REPLACE PROCEDURE NonPreException_Test
       IS

          not_null_test EXCEPTION;    -- STEP 1

          /* not_null_test는 선언된 예외 이름
             -1400
Error 처리번호는 표준 Oracle7 Server Error 번호 */
          PRAGMA EXCEPTION_INIT(not_null_test, -1400);       -- STEP 2

        BEGIN

          DBMS_OUTPUT.ENABLE;

        -- empno를 입력하지 않아서 NOT NULL 에러 발생
        INSERT INTO emp(ename, deptno)
        VALUES('tiger', 30);

        EXCEPTION

        WHEN not_null_test THEN    -- STEP 3

            DBMS_OUTPUT.PUT_LINE('not null 에러 발생 ');

       END;
        /

프로시져가 생성되었습니다.

실행 결과

SQL> SET SERVEROUTPUT ON ;    -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE NonPreException_Test;
not null 에러 발생

PL/SQL 처리가 정상적으로 완료되었습니다.
 


사용자 정의 예외(User-Defined Exceptions)



 오라클 저장함수 RAISE_APPLICATION_ERROR를 사용하여 오류코드 -20000부터
   -20999의 범위 내에서 사용자 정의 예외를 만들수 있습니다.


 

STEP 1 : 예외의 이름을 선언(선언절)

STEP 2 : RAISE문을 사용하여 직접적으로 예외를 발생시킨다(실행절)

STEP 3 : 예외가 발생할 경우 해당 예외를 참조한다(예외절)
 

사용자 정의 예외 예제 Procedure

입력한 부서의 사원이 5명보다 적으면 사용자 정의 예외가 발생하는 예제 입니다.

SQL>CREATE OR REPLACE PROCEDURE User_Exception
        (v_deptno IN emp.deptno%type )
      IS

       -- 예외의 이름을 선언
       user_define_error EXCEPTION;     -- STEP 1
       cnt     NUMBER;

     BEGIN

       DBMS_OUTPUT.ENABLE;   

       SELECT COUNT(empno)
       INTO cnt
       FROM emp
       WHERE deptno = v_deptno;

       IF cnt < 5 THEN
         -- RAISE문을 사용하여 직접적으로 예외를 발생시킨다
          RAISE user_define_error;         -- STEP 2
       END IF;

      EXCEPTION
        -- 예외가 발생할 경우 해당 예외를 참조한다.
       WHEN user_define_error THEN      -- STEP 3
           RAISE_APPLICATION_ERROR(-20001, '부서에 사원이 몇명 안되네요..');

   END;
  /


프로시져가 생성되었습니다.

실행 결과
SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE user_exception(10);
BEGIN user_exception(10); END;
 *
1행에 오류:
ORA-20001: 부서에 사원이 몇명 안되네요..
ORA-06512: "SCOTT.USER_EXCEPTION", 줄 17에서
ORA-06512: 줄 1에서

 10부서의 사원이 5보다 적기 때문에 사용자 정의 예외가 발생했습니다.

SQL> EXECUTE user_exception(20);
PL/SQL 처리가 정상적으로 완료되었습니다. 

20부서로 실행을 하면 에러가 발생하지 않는 것 을 알 수 있습니다..


사용자 정의 예외(User-Defined Exceptions)



 오라클 저장함수 RAISE_APPLICATION_ERROR를 사용하여 오류코드 -20000부터
   -20999의 범위 내에서 사용자 정의 예외를 만들수 있습니다.


 

STEP 1 : 예외의 이름을 선언(선언절)

STEP 2 : RAISE문을 사용하여 직접적으로 예외를 발생시킨다(실행절)

STEP 3 : 예외가 발생할 경우 해당 예외를 참조한다(예외절)
 

사용자 정의 예외 예제 Procedure

입력한 부서의 사원이 5명보다 적으면 사용자 정의 예외가 발생하는 예제 입니다.

SQL>CREATE OR REPLACE PROCEDURE User_Exception
        (v_deptno IN emp.deptno%type )
      IS

       -- 예외의 이름을 선언
       user_define_error EXCEPTION;     -- STEP 1
       cnt     NUMBER;

     BEGIN

       DBMS_OUTPUT.ENABLE;   

       SELECT COUNT(empno)
       INTO cnt
       FROM emp
       WHERE deptno = v_deptno;

       IF cnt < 5 THEN
         -- RAISE문을 사용하여 직접적으로 예외를 발생시킨다
          RAISE user_define_error;         -- STEP 2
       END IF;

      EXCEPTION
        -- 예외가 발생할 경우 해당 예외를 참조한다.
       WHEN user_define_error THEN      -- STEP 3
           RAISE_APPLICATION_ERROR(-20001, '부서에 사원이 몇명 안되네요..');

   END;
  /


프로시져가 생성되었습니다.

실행 결과
SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

SQL> EXECUTE user_exception(10);
BEGIN user_exception(10); END;
 *
1행에 오류:
ORA-20001: 부서에 사원이 몇명 안되네요..
ORA-06512: "SCOTT.USER_EXCEPTION", 줄 17에서
ORA-06512: 줄 1에서

 10부서의 사원이 5보다 적기 때문에 사용자 정의 예외가 발생했습니다.

SQL> EXECUTE user_exception(20);
PL/SQL 처리가 정상적으로 완료되었습니다. 

20부서로 실행을 하면 에러가 발생하지 않는 것 을 알 수 있습니다..


Package(패키지)

package?

   패키지(package)는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL
      프로지져와 함수들의 집합 입니다

   패키지는 선언부와 본문 두 부분으로 나누어 집니다.


패키지 선언부

- 선언절은 패키지에 포함될 PL/SQL 프로시저나, 함수, 커서, 변수, 예외절을 선언 합니다.
- 패키지 선언부에서 선언한 모든 요소들은 패키지 전체에 적용됩니다.
- 즉 선언부에서 선언한 변수는 PUBLIC 변수로 사용 됩니다.



 


패키지 본문

- 패키지 본문은 패키지에서 선언된 부분의 실행을 정의 합니다.
- 즉 실재 프로시져나 함수의 내용에 해당하는 부분이 옵니다.



 


아주 간단한 패키지 예제입니다.

4개의 프로시저가 존재하고 있습니다.

프로시저명

프로시저 기능

all_emp_info

  모든 사원의  사원 정보 (사번, 성명, 입사일)

all_sal_info

  모든 사원의  급여 정보 (평균급여, 최고급여, 최소급여)

dept_emp_info

  특정 부서의  사원 정보 (사번, 성명, 입사일)

dept_sql_info

  특정 부서의  급여 정보 (평균급여, 최고급여, 최소급여)

위 4개의 프로시저를 가지고 패키지를 생성하겠습니다.


all_sal_info

 

  1. 모든 사원의  사원 정보(사번, 성명, 입사일)를 보여 주는 프로시져

SQL> CREATE OR REPLACE PROCEDURE all_emp_info
          IS
        
            CURSOR emp_cursor IS
            SELECT empno, ename, to_char(hiredate, 'RRRR/MM/DD') hiredate
            FROM emp
            ORDER BY hiredate;
        
          BEGIN
        
            FOR  aa  IN emp_cursor LOOP
       
                DBMS_OUTPUT.PUT_LINE('사번 : ' || aa.empno);
                DBMS_OUTPUT.PUT_LINE('성명 : ' || aa.ename);
                DBMS_OUTPUT.PUT_LINE('입사일 : ' || aa.hiredate);
        
            END LOOP;
        
          EXCEPTION
                WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
        
          END;

Procedure created.

all_sal_info

 

  2. 모든 사원의  급여 정보 (평균급여, 최고급여, 최소급여)

SQL>CREATE OR REPLACE PROCEDURE all_sal_info
        IS
                
            CURSOR emp_cursor IS
            SELECT round(avg(sal),3) avg_sal, max(sal) max_sal, min(sal) min_sal
            FROM emp;
                
        BEGIN
        
            FOR  aa  IN emp_cursor LOOP
                
                DBMS_OUTPUT.PUT_LINE('전체급여평균 : ' || aa.avg_sal);
                DBMS_OUTPUT.PUT_LINE('최대급여금액 : ' || aa.max_sal);
                DBMS_OUTPUT.PUT_LINE('최소급여금액 : ' || aa.min_sal);
                        
            END LOOP;
        
        
        EXCEPTION
            WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
        END;
/

Procedure created.     

dept_emp_info

 

  3. 특정 부서의  사원 정보 (사번, 성명, 입사일)

SQL> CREATE OR REPLACE PROCEDURE dept_emp_info
          (v_deptno IN  NUMBER)
          IS
        
                CURSOR emp_cursor IS
                SELECT empno, ename, to_char(hiredate, 'RRRR/MM/DD') hiredate
                FROM emp
                WHERE deptno = v_deptno
                ORDER BY hiredate;
        
          BEGIN
        
            FOR  aa  IN emp_cursor LOOP
       
                DBMS_OUTPUT.PUT_LINE('사번 : ' || aa.empno);
                DBMS_OUTPUT.PUT_LINE('성명 : ' || aa.ename);
                DBMS_OUTPUT.PUT_LINE('입사일 : ' || aa.hiredate);
        
            END LOOP;
        
          EXCEPTION
            WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');

          END;

dept_sql_info

 

  4. 특정 부서의  급여 정보 (평균급여, 최고급여, 최소급여)   

SQL>CREATE OR REPLACE PROCEDURE dept_sal_info
          (v_deptno IN  NUMBER)
        IS
                
            CURSOR emp_cursor IS
            SELECT round(avg(sal),3) avg_sal, max(sal) max_sal, min(sal) min_sal
            FROM emp
            WHERE deptno = v_deptno;
                
                
        BEGIN
        
            FOR  aa  IN emp_cursor LOOP
                
                DBMS_OUTPUT.PUT_LINE('전체급여평균 : ' || aa.avg_sal);
                DBMS_OUTPUT.PUT_LINE('최대급여금액 : ' || aa.max_sal);
                DBMS_OUTPUT.PUT_LINE('최소급여금액 : ' || aa.min_sal);
                        
            END LOOP;
        
        
        EXCEPTION
            WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
        END;      


선언부를 먼저 생성 합니다.

package 예제
(선언부)

SQL>CREATE OR REPLACE PACKAGE emp_info AS

            PROCEDURE all_emp_info;                                           -- 모든 사원의  사원 정보

            PROCEDURE all_sal_info                                            -- 모든 사원의  급여 정보

            PROCEDURE dept_emp_info (v_deptno IN  NUMBER)     -- 특정 부서의  사원 정보

            PROCEDURE dept_sal_info (v_deptno IN  NUMBER) ;       -- 특정 부서의  급여 정보       

        END emp_info;

Package created.


선언부를 생성 하고 나서 본문 부분을 생성 합니다.

package 예제
(본문)

SQL>
CREATE OR REPLACE PACKAGE BODY emp_info AS

                
-- 모든 사원의  사원 정보
                
PROCEDURE all_emp_info
                IS        

                        CURSOR emp_cursor IS
                        SELECT empno, ename, to_char(hiredate, 'RRRR/MM/DD') hiredate
                        FROM emp
                        ORDER BY hiredate;
        
                BEGIN
        
                        FOR  aa  IN emp_cursor LOOP
       
                                DBMS_OUTPUT.PUT_LINE('사번 : ' || aa.empno);
                                DBMS_OUTPUT.PUT_LINE('성명 : ' || aa.ename);
                                DBMS_OUTPUT.PUT_LINE('입사일 : ' || aa.hiredate);
        
                        END LOOP;
        
                EXCEPTION
                        WHEN OTHERS THEN
                                DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
        
                
END all_emp_info;
 

 
                
 -- 모든 사원의  급여 정보
                
PROCEDURE all_sal_info
                IS
                
                        CURSOR emp_cursor IS
                        SELECT round(avg(sal),3) avg_sal, max(sal) max_sal, min(sal) min_sal
                        FROM emp;
                
                BEGIN
        
                        FOR  aa  IN emp_cursor LOOP
                
                                DBMS_OUTPUT.PUT_LINE('전체급여평균 : ' || aa.avg_sal);
                                DBMS_OUTPUT.PUT_LINE('최대급여금액 : ' || aa.max_sal);
                                DBMS_OUTPUT.PUT_LINE('최소급여금액 : ' || aa.min_sal);
                        
                        END LOOP;
        
        
                EXCEPTION
                        WHEN OTHERS THEN
                                DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
                
END all_sal_info;
 

 
                
--특정 부서의  사원 정보
                
PROCEDURE dept_emp_info (v_deptno IN  NUMBER)
                IS
        
                        CURSOR emp_cursor IS
                        SELECT empno, ename, to_char(hiredate, 'RRRR/MM/DD') hiredate
                        FROM emp
                        WHERE deptno = v_deptno
                        ORDER BY hiredate;
        
                BEGIN
        
                        FOR  aa  IN emp_cursor LOOP
       
                                DBMS_OUTPUT.PUT_LINE('사번 : ' || aa.empno);
                                DBMS_OUTPUT.PUT_LINE('성명 : ' || aa.ename);
                                DBMS_OUTPUT.PUT_LINE('입사일 : ' || aa.hiredate);
        
                        END LOOP;
        
                EXCEPTION
                        WHEN OTHERS THEN
                                DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
 
               
 END dept_emp_info;
 
 
                
--특정 부서의  급여 정보
                
PROCEDURE dept_sal_info (v_deptno IN  NUMBER)
                IS
                
                        CURSOR emp_cursor IS
                        SELECT round(avg(sal),3) avg_sal, max(sal) max_sal, min(sal) min_sal
                        FROM emp 
                        WHERE deptno = v_deptno;
                
                
                BEGIN

                        FOR  aa  IN emp_cursor LOOP 
                
                                DBMS_OUTPUT.PUT_LINE('전체급여평균 : ' || aa.avg_sal);
                                DBMS_OUTPUT.PUT_LINE('최대급여금액 : ' || aa.max_sal);
                                DBMS_OUTPUT.PUT_LINE('최소급여금액 : ' || aa.min_sal);
                        
                        END LOOP;
        
        
                EXCEPTION
                        WHEN OTHERS THEN
                                DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');

                
END dept_sal_info;        
                
        
END emp_info;
         /
 
 Package body created.

 



패키지의 실행

패키지의 실행은 패키지 명 다음에 .을 찍고 프로시저냐 함수 명을 써 줍니다.


먼저 set serveroutput on을 실행한후..
SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)


다음 명령들을 실행해 보세요..
SQL> exec emp_info.all_emp_info;

SQL> exec emp_info.all_sal_info;

SQL> exec emp_info.dept_emp_info(10);

SQL> exec emp_info.dept_sal_info(10); 


Trigger(트리거)

트리거란?

INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때
묵시적으로 수행되는 PROCEDURE 입니다.

Trigger는 TABLE과는 별도로 DATABASE에 저장됩니다.
Trigger는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있습니다.





- BEFORE : INSERT, UPDATE, DELETE문이 실행되기 전에 트리거가 실행됩니다.
- AFTER : INSERT, UPDATE, DELETE문이 실행된 후 트리거가 실행됩니다.
- trigger_event : INSERT, UPDATE, DELETE 중에서 한 개 이상 올 수 있습니다.
- FOR EACH ROW : 이 옵션이 있으면 행 트리거가 됩니다.

-- 행 트리거 : 컬럼의 각각의 행의 데이터 행 변화가 생길때마다 실행되며,
그 데이터 행의 실제값을 제어할수 있습니다.
-- 문장 트리거 : 트리거 사건에 의해 단 한번 실행되며, 컬럼의 각 데이터 행을 제어할수 없습니다.

간단한 행 트리거 예제

SQL>CREATE OR REPLACE TRIGGER triger_test
BEFORE
UPDATE ON dept
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' || : old.dname);
DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || : new.dname);
END;
/


SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

-- UPDATE문을 실행시키면..
SQL>UPDATE dept
SET dname = '총무부'
WHERE deptno = 30

-- 트리거가 자동 실행되어 결과가 출력됩니당.
변경 전 컬럼 값 : 인사과
변경 후 컬럼 값 : 총무부

1 행이 갱신되었습니다.

간단한 행 트리거 예제2 (PLSQL BLOCK이 있는 트리거)

SQL>CREATE OR REPLACE trigger sum_trigger
BEFORE
INSERT OR UPDATE ON emp
FOR EACH ROW

DECLARE

-- 변수를 선언할 때는 DECLARE문을 사용해야 합니다
avg_sal NUMBER;

BEGIN

SELECT ROUND(AVG(sal),3)
INTO avg_sal
FROM emp;

DBMS_OUTPUT.PUT_LINE('급여 평균 : ' || avg_sal);

END;
/

트리거가 생성되었습니다.

SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

-- INSERT문을 실행합니다..

SQL> INSERT INTO EMP(EMPNO, ENAME, JOB, HIREDATE, SAL)
VALUES(1000, 'LION', 'SALES', SYSDATE, 5000);

-- INSERT문을 실행되기 전까지의 급여 평균이 출력됩니다.
급여 평균 : 2073.214

1 개의 행이 만들어졌습니다.

출처 : http://www.oracleclub.com/

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

ORA-19400 to ORA-24279

ORA-19400 System type conflict with object SYS.string

Cause: The user had an object with the same name as one of the system types. The system types were not initialized properly.

Action: Remove the conflicting object and re-run migration.


ORA-19500 device block size string is invalid

Cause: The device block size returned by sequential I/O OSD is invalid.

Action: If the block size was set by using the PARMS option of the Recovery Manager ALLOCATE CHANNEL command, then the specified block size must be changed. If no PARMS option was specified on the ALLOCATE CHANNEL command, then this is an internal error that should be reported to Oracle.


ORA-19501 read error on file "string", blockno string (blocksize=string)

Cause: Read error on input file.

Action: Check the file.


ORA-19502 write error on file "string", blockno string (blocksize=string)

Cause: Write error on output file.

Action: Check the file.


ORA-19503 cannot obtain information on device, name="string", type="string", parms="string"

Cause: Call to get device information returned an error.

Action: Check device name, type, and parameters.


ORA-19504 failed to create file "string"

Cause: Call to create file returned an error.

Action: Check additional messages and check access permissions.


ORA-19505 failed to identify file "string"

Cause: Call to identify the file returned an error.

Action: Check additional messages, and check whether the file exists.


ORA-19506 failed to create sequential file, name="string", parms="string"

Cause: Call to create the sequential file returned an error.

Action: Check additional messages, check access permissions.


ORA-19507 failed to retrieve sequential file, handle="string", parms="string"

Cause: Call to retrieve the sequential file returned an error.

Action: Check additional messages, and check if the file exists.


ORA-19508 failed to delete file "string"

Cause: Call to delete the file returned an error.

Action: Check additional messages.


ORA-19509 failed to delete sequential file, handle="string", parms="string"

Cause: Call to delete the sequential file returned an error.

Action: Check additional messages.


ORA-19510 failed to set size of string blocks for file "string" (blocksize=string)

Cause: Call to resize the file returned an error.

Action: Check additional messages.


ORA-19511 Error received from media manager layer, error text: string

Cause: An error occurred in the media management software which is linked with the Oracle server to perform backup and restore in cooperation with Recovery Manager.

Action: If the text of message 19511 does not provide enough information to resolve the problem, then you should contact the vendor of the media management software.


ORA-19550 cannot use backup/restore functions while using dispatcher

Cause: An attempt was made to use backup/restore functions while connected to the dispatcher in a shared server. This is not allowed because the device that is used for backup and restore must remain allocated to a single process.

Action: Connect directly to the instance then re-execute the backup or restore function.


ORA-19551 device is busy, device type: string, device name: string

Cause: The indicated device could not be allocated because it is allocated to another session, or no device was named, or all devices of the requested type are busy.

Action: Either attempt to allocate another device or wait until the required device is no longer busy.


ORA-19552 device type string is invalid

Cause: The device type indicated is invalid.

Action: Supply a correct device type and retry the allocation.


ORA-19553 device name string is invalid

Cause: The device name indicated is invalid.

Action: Supply a correct device name and retry the allocation.


ORA-19554 error allocating device, device type: string, device name: string

Cause: The specified device could not be allocated.

Action: One or more other messages should be displayed to help pinpoint the cause of the error. Correct the error and retry the allocation.


ORA-19555 invalid LOG_ARCHIVE_MIN_SUCCEED_DEST parameter value

Cause: The value of parameter LOG_ARCHIVE_MIN_SUCCEED_DEST was not set within the valid range.

Action: Specify a correct value for parameter LOG_ARCHIVE_MIN_SUCCEED_DEST. If the archive log parameters LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST are in use, set parameter LOG_ARCHIVE_MIN_SUCCEED_DEST to either 1 or 2.


ORA-19556 required destination LOG_ARCHIVE_DUPLEX_DEST currently is deferred

Cause: The destination for parameter LOG_ARCHIVE_DUPLEX_DEST was deferred when it was required to be enabled. The destination was deferred automatically when an ALTER SYSTEM command for parameter LOG_ARCHIVE_DEST defined a destination which duplicated an existing LOG_ARCHIVE_DUPLEX_DEST parameter destination.

Action: Change the destination value for the LOG_ARCHIVE_DUPLEX_DEST parameter.


ORA-19557 device error, device type: string, device name: string

Cause: An error occurred in the platform-specific device code.

Action: One or more other messages should be displayed to help pinpoint the cause of the error. Correct the error and retry the allocation.


ORA-19558 error de-allocating device

Cause: The specified device could not be de-allocated.

Action: One or more other messages should be displayed to help pinpoint the cause of the error. Correct the error and retry the allocation.


ORA-19559 error sending device command: string

Cause: An error occurred while sending the indicated command to the session device.

Action: One or more other messages should be displayed to help pinpoint the cause of the error. Correct the error and retry the allocation.


ORA-19560 string is not a valid device limit

Cause: An invalid type of device limit was specified in a call to X$DBMS_BACKUP_RESTORE.SETLIMIT.

Action: Use one of the documented limits: KBYTES, READRATE, or PARALLEL.


ORA-19561 string requires a DISK channel

Cause: The attempted command requires that a DISK device channel be allocated to the session, but a non-DISK device was found.

Action: Deallocate the current device and allocate a DISK channel, then retry the command.


ORA-19562 file string is empty

Cause: The indicated file, which is an archive log, control file, or datafile was found to be empty during a copy, backup, or scan] operation.

Action: Ensure that the correct files are being specified for the copy or backup operation.


ORA-19563 string header validation failed for file string

Cause: When opening the file to be placed in a copy or backup set, to be inspected, or used as the target for an incremental restore, the header was not recognized as a valid file header for a file of the indicated type (datafile, archived log, or control file), belonging to the current database.

Action: Ensure that the correct files are being specified for the copy or backup operation.


ORA-19564 error occurred writing string bytes at block number string

Cause: An error occurred while writing to a file.

Action: One or more other messages should be displayed to help pinpoint the cause of the error. Correct the error if possible, then retry the copy, backup, or restore operation.


ORA-19565 BACKUP_TAPE_IO_SLAVES not enabled when duplexing to sequential devices

Cause: An attempt was made to specify duplexing to sequential devices, but the BACKUP_TAPE_IO_SLAVES initialization parameter was not enabled.

Action: Specify BACKUP_TAPE_IO_SLAVES=TRUE in the INIT.ORA file, or do not specify duplexing to sequential devices.


ORA-19566 exceeded limit of string corrupt blocks for file string

Cause: The user specified limit of allowable corrupt blocks was exceeded while reading the specified datafile for a datafile copy or backup.

Action: No action required. The copy or backup operation fails. The session trace file contains detailed information about which blocks were corrupt.


ORA-19567 cannot shrink file string because it is being backed up or copied

Cause: An ALTER statement attempted to reduce the size of the indicated file while the same file is being backed up or copied.

Action: Retry the resize after the backup or copy is complete.


ORA-19568 a device is already allocated to this session

Cause: A device cannot be allocated to a session if another device is already allocated.

Action: Deallocate the current device.


ORA-19569 no device is allocated to this session

Cause: An operation was attempted which requires a device to be allocated to the current session, and there is no device allocated.

Action: Allocate a device then retry the operation.


ORA-19570 file number string is outside valid range of 1 through string

Cause: A file number used in a copy, backup, or restore operation is not valid for the current database.

Action: Specify a valid file number.


ORA-19571 string recid string stamp string not found in controlfile

Cause: The input file specified for a copy or backup operation could not be opened because the record describing the file is not found in the control file.

Action: Specify a correct RECID/stamp and retry the copy or backup.


ORA-19572 cannot process file string, file is being being resized

Cause: The input file specified for a copy or backup operation could not be opened because the file is being resized.

Action: Wait for the resize to complete then retry the copy or backup.


ORA-19573 cannot obtain string enqueue for datafile string

Cause: The file access enqueue could not be obtained for a file specified in a backup, copy or restore operation. If the enqueue type shown is SHARED, then the file is the input file for a backup or copy. If the type is EXCLUSIVE, then the file is the output file for a datafile copy or restore which is attempting to overwrite the currently active version of that file. In this case, the file must be offline or the database must be closed. If the type is read-only, then you are attempting to back up or copy this file while the database is in NOARCHIVELOG mode.

Action: Wait until the conflicting operation is complete, then retry the copy or backup. If the database is in NOARCHIVELOG mode, then all files being backed up must be closed cleanly.


ORA-19574 output filename must be specified

Cause: This type of copy or restore requires an output file name.

Action: Specify an output file name and retry the copy.


ORA-19575 expected string blocks in file string, found string

Cause: During a backup, restore, copy, or scan operation, the indicated file did not contain as many blocks as were indicated in the file header.

Action: The input copy or backup piece is probably corrupt. If another backup or copy exists of the file that is being restored, then the corrupt file can be deleted from the recovery catalog and the operation can be restarted.


ORA-19576 datafile string not defined in control file

Cause: The specified file number was not found in the control file.

Action: Specify a correct file number and retry the operation.


ORA-19577 file string is MISSING

Cause: A copyDataFileCopy, restoreDataFileTo or proxyRestoreDataFile function specified a file number but no output file name, indicating that the output file name should be taken from the control file. However, the control file entry for this file indicates that it was created for a file that was present in the data dictionary but not named during the last CREATE CONTROLFILE statement, so the name in the control file cannot be used for restoration.

Action: Either specify an output file name or issue a SQL RENAME command to enter a valid name for this file in the control file.


ORA-19578 end of volume while duplexing to sequential files, backup piece incomplete

Cause: An end of volume (EOV) condition was detected while duplexing to sequential files, and this condition cannot be handled currently.

Action: Before retrying the backup, make sure the backup pieces will fit in the volume, or disable duplexing.


ORA-19579 archivelog record for string not found

Cause: No archived log record corresponding to the input file could be found in the control file.

Action: Specify a valid archive log file name and retry the operation.


ORA-19580 string conversation not active

Cause: A backup or restore operation was attempted before a conversation was started.

Action: Start a conversation then retry the operation.


ORA-19581 no files have been named

Cause: An attempt was made to proceed from the file naming phase to the piece processing phase of a backup or restore conversation before any files have been specified for backup or restore.

Action: Specify some files then retry the operation.


ORA-19582 archivelog file header validation for string failed

Cause: The archived log file header is corrupt and could not be validated.

Action: Provide a valid archive log file and retry the operation.


ORA-19583 conversation terminated due to error

Cause: An error occurred which forced the termination of the current backup or restore conversation.

Action: There should be other error messages to help identify the cause of the problem. Correct the error and begin another conversation.


ORA-19584 file string already in use

Cause: The indicated file, which was specified as the target for a copy, restore, or delete operation is already in use by the database.

Action: Specify a different name and retry the operation.


ORA-19585 premature end of volume on piece string

Cause: While creating the indicated backup piece, an end-of-volume condition was encountered before all of the backup set control data was written to the backup piece. This is most likely a media error, because the amount of backup set control data is very small in relation to the total amount of data in a backup set.

Action: Retry the piece with a larger piece of output media.


ORA-19586 string k-byte limit is too small to hold piece directory

Cause: The user-specified limit of k-bytes per backup piece is not enough to hold the backup set control data.

Action: Use the setLimit procedure to increase the k-byte limit and retry the operation.


ORA-19587 error occurred reading string bytes at block number string

Cause: An error occurred while reading from a file.

Action: One or more other messages should be displayed to help pinpoint the cause of the error. Correct the error then retry the copy, backup, or restore operation.


ORA-19588 string recid string stamp string is no longer valid

Cause: The indicated record has been marked as deleted. This indicates that the corresponding file has either been overwritten by another copy or restore, or that the copy was 'consumed' by a switchToCopy operation.

Action: If you know the name of the file you wish to copy, then inspect it and then retry the copy specifying the new RECID.


ORA-19589 string is not a snapshot or backup controlfile

Cause: The control file that is the source for a backup or copy operation is not a snapshot or backup control file.

Action: Specify the name of a snapshot or backup control file.


ORA-19590 conversation already active

Cause: An attempt was made to begin a backup or restore conversation, but another conversation is already active in this session.

Action: Either continue the current conversation, or call backupCancel or restoreCancel to end the current conversation before starting a new one.


ORA-19592 wrong string conversation type

Cause: An attempt was made to specify a type of file to be backed-up or restored, but the current conversation cannot process this type of file. For example, you specified an archived log to be included in a datafile backup set. The specified file will not be included in the backup or restore operation.

Action: No action required. The conversation is still active, and more files can be specified.


ORA-19593 datafile number string already included as string

Cause: This datafile is already specified for inclusion in this backup or restore conversation. A backup or restore conversation may process only a single instance of a datafile.

Action: No action required. The conversation is still active, and more files can be specified.


ORA-19594 controlfile already included as string

Cause: The control file is already specified for inclusion in this backup or restore conversation. A backup or restore conversation may process only a single instance of the control file.

Action: No action required. The conversation is still active, and more files can be specified.


ORA-19595 archivelog string already included in backup conversation

Cause: The indicated archive log has already been specified for inclusion in this backup conversation.

Action: No action required. The conversation is still active, and more files can be specified.


ORA-19596 SPFILE already included

Cause: The SPFILE is already specified for inclusion in this backup or restore conversation. A backup or restore conversation may process only a single instance of the SPFILE.

Action: No action required. The conversation is still active, and more files can be specified.


ORA-19597 file string blocksize string does not match set blocksize of string

Cause: A file was specified for inclusion in a backup set but it has a logical block size different from the rest of the files in the backup set. All files in a backup set must have the same logical block size.

Action: Specify a file that has the same block size as the rest of the files in the backup set. The conversation is still active and more files can be specified.


ORA-19598 can not backup SPFILE because the instance was not started with SPFILE

Cause: A backup command requested a backup of the SPFILE, but no SPFILE was used to start up the instance.

Action: Create an SPFILE and restart the instance using the SPFILE.


ORA-19599 block number string is corrupt in string string

Cause: A corrupt block was found in a controlfile, archivelog, or backup piece that is being read for a backup or copy. Corruption is not tolerated in controlfiles, archivelogs, or backup pieces.

Action: No action required. The copy or backup operation fails. Note that in the case of a backup set, the conversation is still active and the piece may be retried.


ORA-19600 input file is string string (string)

Cause: This message identifies the input file for a failed copy operation. Both the file number and name (if the name has been determined) are shown.

  • For a datafile, the file number refers to the datafile's absolute file number as shown in the DBA_DATA_FILES view.
  • For a datafile-copy, the file number refers to the copy's control file record number as shown in the V$DATAFILE_COPY view.
  • For a datafile-copy, the file number refers to the copy's control file record number as shown in the RECID column of the V$DATAFILE_COPY view.
  • For an archived log, the file number refers to the log's control file record number as shown in the RECID column of the V$ARCHIVED_LOG view.

Action: Other messages should display to help pinpoint the cause and the solution.


ORA-19601 output file is string string (string)

Cause: This message identifies the output file for a failed copy operation. The fields are as described in message 19600. When creating a new datafile copy, its control file record number may not have been determined when the message is printed. In that case, the record number shown is zero.

Action: See other error message.


ORA-19602 cannot backup or copy active file in NOARCHIVELOG mode

Cause: An attempt was made to copy or backup a file that was not closed cleanly, and the database was in NOARCHIVELOG mode. This is not allowed because when restored, the file will require redo application before it is usable, and redo is not currently being saved beyond the contents of the online redo logs.

Action: Take the tablespace offline clean or close the database and retry the copy or backup.


ORA-19603 cannot backup or copy active file with KEEP .. UNRECOVERABLE option

Cause: The user tried to copy or backup a file that was not closed cleanly, with the KEEP .. UNRECOVERABLE option. This is not allowed because when restored, the file will require redo application before it is usable, and redo will not be saved because of the KEEP .. UNRECOVERABLE option.

Action: Take the tablespace offline cleanly, or close the database and retry the copy or backup.


ORA-19604 conversation file naming phase is over

Cause: A call was made to specify a file to be backed up or restored after the first backup piece has been processed.

Action: You cannot specify more files to be processed during a backup or restore conversation after the first backup piece has been processed. If more files must be specified, you must begin a new conversation.


ORA-19605 input filename must be specified

Cause: The input file name was not specified for a control file copy operation.

Action: Specify an input file name and retry the operation.


ORA-19606 Cannot copy or restore to snapshot controlfile

Cause: A control file copy or restore operation specified the name of the snapshot control file as the output file. It is not permitted to overwrite the snapshot control file in this manner. Other methods are available to create the snapshot control file.

Action: Specify a different file name and retry the operation. If this is a restore, then the restore conversation remains active and more files may be specified.


ORA-19607 string is an active controlfile

Cause: A control file copy, restore, or backup specified the name of a control file named in the INIT.ORA file as the input or output file.

Action: Specify a different file name and retry the operation. If this is a backup or restore conversation, then the conversation remains active and more files may be specified.


ORA-19608 string is not a backup piece

Cause: The specified file is not a backup piece produced by the DBMS_BACKUP_RESTORE package. Either the first block of the backup piece is corrupt or this file is not a backup piece.

Action: Specify a different file name and retry the operation.


ORA-19609 string is from different backup set: stamp string count string

Cause: The specified file is not from the backup set which is currently being processed. It is part of a different backup set. The identification of the set containing this piece is shown.

Action: Specify the correct backup piece and retry the operation.


ORA-19610 directory block string is corrupt

Cause: The indicated directory block failed checksum validation. This backup piece is unusable.

Action: Supply another copy of the same backup piece, or terminate the restore conversation.


ORA-19611 backup piece out of order. Expected string but found string

Cause: This backup piece is out of sequence.

Action: Supply the correct backup piece.


ORA-19612 datafile string not restored due to string

Cause: The indicated file could not be restored, because all of its data blocks were not found in the backup piece.

Action: The restore conversation remains active, and the current piece must be reprocessed. If the failure cannot be resolved by reprocessing the current piece, then the restore conversation must be cancelled.


ORA-19613 datafile string not found in backup set

Cause: The indicated file could not be restored, because it is not in this backup set. If the file number is zero, then this refers to the control file.

Action: This message is issued when the directory from the first backup piece is read and one or more files named for restoration were not found. The restore conversation is still active, but no data has been read and you must supply the first backup piece of a backup set that contains all of the requested files.


ORA-19614 archivelog thread string sequence string not found in backup set

Cause: The indicated archived log file was named explicitly for restoration but is not contained in this backup set.

Action: This message is issued when the directory from the first backup piece is read and one or more files named for restoration were not found. The restore conversation is still active, but no data has been read and you must supply the first backup piece of a backup set that contains all of the requested files.


ORA-19615 some files not found in backup set

Cause: Some files that were specified for restoration were not found in the backup set directory. Message 19613 or 19614 is issued for each file that was not found.

Action: See the instructions for message 19613.


ORA-19616 output filename must be specified if database not mounted

Cause: A datafile restore specified no target file name, but the database is not mounted. The database must be mounted when no target file name is specified, so that the target file name can be obtained from the control file.

Action: The restore conversation remains active. If you wish to restore datafiles without their target file names, then mount the database before continuing. Otherwise, a target file name must be specified on all datafile restoration calls.


ORA-19617 file string contains different resetlogs data

Cause: The indicated file contains resetlogs data which is different from the archived log files which are already included in the backup set. All archived log files in a backup set must have the same resetlogs data.

Action: The restore conversation remains active, and you may continue to specify archived log files for inclusion in the backup set.


ORA-19618 cannot name files after restoreValidate has been called

Cause: A call was made to specify a file to restore from a backup set, but a previous call to restoreValidate has already been made.

Action: You must cancel and restart the conversation if you wish to specify files to restore.


ORA-19619 cannot call restoreValidate after files have been named

Cause: restoreValidate was called after some files had already been specified for restoration.

Action: You must cancel and restart the conversation if you wish to call restoreValidate.


ORA-19621 archivelog range has already been specified

Cause: A range of logs has already been specified. Only one SCN range may be specified per conversation.

Action: The restore conversation remains active and more logs may be specified by thread and sequence number, if desired.


ORA-19622 archivelog thread string sequence string not restored due to string

Cause: The indicated file could not be restored, because all of its data blocks were not found in the backup piece.

Action: The restore conversation remains active, and the current piece must be reprocessed. If the failure cannot be resolved by reprocessing the current piece, then the restore conversation must be cancelled.


ORA-19623 file string is open

Cause: A SwitchToCopy operation specified a datafile copy whose parent datafile is open.

Action: Take the owning tablespace offline or close the database, then retry the operation.


ORA-19624 operation failed, retry possible

Cause: A backup, restore or image copy operation failed with an I/O error. If the source of the I/O error can be corrected, then the operation may be retried.

Action: This message is used by Recovery Manager to decide whether or not to retry the operation.


ORA-19625 error identifying file string

Cause: A file specified as input to a copy or backup operation, or as the target for an incremental restore, could not be identified as an Oracle file. An operating system-specific error accompanies this error to help pinpoint the problem.

Action: Specify an different file and retry the operation.


ORA-19626 backup set type is string - can not be processed by this conversation

Cause: The data in the backup set is not compatible with the current conversation.

Action: Either supply the first piece from a backup set that matches the current conversation or start a new restore conversation which can process this backup set.


ORA-19627 cannot read backup pieces during controlfile application

Cause: This is a control file restore conversation, which is using the offline range information from one or more control files to update datafile checkpoint data. Backup sets are not used during this type of conversation.

Action: The conversation is still active and more control files may be applied.


ORA-19628 invalid SCN range

Cause: The starting SCN for restoreRedoLogRange is greater than the ending SCN.

Action: Specify a starting SCN which is less than or equal to the ending SCN.


ORA-19629 no files in specified archivelog SCN range

Cause: This backup set contains no files in the specified range.

Action: Either supply a backup set that contains files in the correct range or start a new conversation and specify a range which will select some files from this backup set.


ORA-19630 end of volume encountered while copying backup piece

Cause: While copying a backup piece from the operating system native file system to an output device, the output device encountered end-of-volume.

Action: The copy fails. This could happen if a tape was used which is not large enough to hold the entire backup piece.


ORA-19631 archivelog record contains no file name

Cause: This archive log record represents a switch into an active log that took place without archiving its prior contents. The prior contents of the log file are lost.

Action: Specify the RECID of an archive log record that contains a file name. Fixed view V$ARCHIVED_LOG can be used to examine the archived logs.


ORA-19632 file name not found in controlfile

Cause: The name passed to getFno was not found in the control file.

Action: Supply a valid file name.


ORA-19633 controlfile record string is out of sync with recovery catalog

Cause: The control file record describing the file to be deleted in a call to deleteBackupPiece, deleteDataFilecopy, proxyDelete or deleteArchivedLog does not match the validation data supplied by Recovery Manager.

Action: Contact Oracle Support Services.


ORA-19634 filename required for this function

Cause: The FNAME or handle parameter was not specified for deletePiece, deleteDataFileCopy, deleteRedoLog or proxyDelete.

Action: Specify the FNAME or handle parameter when calling these functions.


ORA-19635 input and output filenames are identical

Cause: Identical input and output file names were specified for a datafile copy operation.

Action: Specify an output file name which is different from the input file name.


ORA-19636 archivelog thread string sequence string already included

Cause: The indicated archive log has already been specified for inclusion in this restore conversation. A restore conversation may process only one copy of any archive log.

Action: No action required. The conversation is still active, and more files can be specified.


ORA-19637 backupPieceCreate requires file name when using DISK device

Cause: The session device is currently allocated to disk, and so a file name is required.

Action: Supply a file name and retry the operation.


ORA-19638 file string is not current enough to apply this incremental backup

Cause: The checkpoint of the target for this incremental backup is less than the start of the incremental backup. If this backup were applied, then any changes made between the datafile checkpoint and the start of the incremental backup could be lost.

Action: Supply a backup set that can be applied and retry the operation.


ORA-19639 file string is more current than this incremental backup

Cause: The checkpoint of the target for this incremental backup is greater than or equal to the checkpoint of the file in the incremental backup set. This backup cannot advance the checkpoint of the target file, so there is no point in applying it.

Action: Supply a backup set that can be applied and retry the operation.


ORA-19640 datafile checkpoint is SCN string time string

Cause: This message identifies the datafile checkpoint for a datafile that was too old to take an incremental backup from, or the target of an incremental restore that could not be applied.

Action: See other error message.


ORA-19641 backup datafile checkpoint is SCN string time string

Cause: This message identifies the checkpoint of a datafile in an incremental backup set that could not be applied.

Action: See other error message.


ORA-19642 incremental-start SCN is string

Cause: This message identifies the starting SCN of an incremental backup that could not be applied.

Action: See other error message.


ORA-19643 datafile string: incremental-start SCN is too recent

Cause: The incremental-start SCN which was specified when starting an incremental datafile backup is greater than the datafile checkpoint SCN, which could cause some blocks to be missed.

Action: Specify a smaller incremental-start SCN.


ORA-19644 datafile string: incremental-start SCN is prior to resetlogs SCN string

Cause: The incremental-start SCN which was specified when starting an incremental datafile backup is less than the resetlogs SCN.

Action: Specify a larger incremental-start SCN.


ORA-19645 datafile string: incremental-start SCN is prior to creation SCN string

Cause: The incremental-start SCN which was specified when starting an incremental datafile backup is less than the datafile's creation SCN.

Action: Specify a larger incremental-start SCN.


ORA-19646 cannot change size of datafile string from string to string

Cause: The indicated file was resized before this incremental backup was taken, but the incremental backup failed to set the file to the new size.

Action: Examine the other messages which should be present to indicate the cause of the failure.


ORA-19647 non-zero LEVEL cannot be specified when INCREMENTAL is FALSE

Cause: BackupSetDataFile was called with a non-zero BACKUP_LEVEL and a FALSE incremental indication.

Action: Either set incremental to TRUE or change BACKUP_LEVEL to zero.


ORA-19648 datafile string: incremental-start SCN equals checkpoint SCN

Cause: The incremental-start SCN which was specified when starting an incremental datafile backup is equal to the datafile's checkpoint SCN. Since an incremental backup can only be applied to a datafile whose checkpoint SCN is between the backup set incremental-start SCN (inclusive) and the backup set checkpoint SCN (exclusive), there is no datafile that this backup set could ever be applied to.

Action: Specify a smaller incremental-start SCN.


ORA-19649 offline-range record recid string stamp string not found in file string

Cause: applyOfflineRange was called with a RECID/stamp which was not found in the indicated control file. This probably means that the specified control file is no longer the same control file that Recovery Manager thinks it is.

Action: Specify the RECID/stamp of a record that exists in the control file copy.


ORA-19650 Offline-range record recid string stamp string in file string has SCN string

Cause: This messages identifies the offline-clean SCN from the indicated offline-range record in the indicated file.

Action: See other error message.


ORA-19651 cannot apply offline-range record to datafile string: SCN mismatch

Cause: applyOfflineRange cannot apply an offline-range record to a target datafile unless the datafile's checkpoint SCN exactly matches the offline-clean SCN in the specified offline-range record.

Action: Specify an offline-range record whose offline-clean SCN matches the target datafile's checkpoint.


ORA-19652 cannot apply offline-range record to datafile string: file is fuzzy

Cause: The target datafile for an applyOfflineRange call is fuzzy.

Action: Specify a target datafile that is closed cleanly.


ORA-19653 cannot switch to older file incarnation

Cause: SwitchToCopy was called with a datafile copy for a datafile that was dropped prior to the time this control file was backed up.

Action: Restore and mount an earlier control file. It is acceptable to use a control file that was backed up prior to the creation of the specified datafile.


ORA-19654 must use backup controlfile to switch file incarnations

Cause: This switchToCopy operation is attempting to switch incarnations of a datafile, but the currently mounted control file is not a backup control file.

Action: Restore and mount a backup control file.


ORA-19655 cannot switch to incarnation with different resetlogs data

Cause: This switchToCopy operation is attempting to switch to a datafile which comes from a different resetlogs version of the database.

Action: Either restore a backup control file that was taken from the same database version as the target datafile-copy, or switch to a different datafile-copy.


ORA-19656 cannot backup, copy, or delete online log string

Cause: The indicated log file is an active log. You can only backup, copy, or delete archived logs.

Action: The indicated log file cannot be processed. Select another file.


ORA-19657 cannot inspect current datafile string

Cause: The file being inspected is already part of the currently mounted database.

Action: No action required. The file is already part of the database.


ORA-19658 cannot inspect string - file is from different resetlogs

Cause: The resetlogs data in the log file being inspected does not match that in the currently mounted control file.

Action: The indicated file cannot be processed; inspect another file.


ORA-19659 incremental restore would advance file string past resetlogs

Cause: This incremental backup cannot be applied to the specified datafile, because the datafile is from an earlier incarnation of the database, and its checkpoint would be advanced too far to be recoverable in the current incarnation of the database.

Action: This incremental cannot be applied to this datafile. If you wish to recover the file to the resetlogs SCN so that the database can be opened with the RESETLOGS option, then you must use redo-log recovery, not incremental restore, to continue recovering this file.


ORA-19660 some files in the backup set could not be verified

Cause: A restore conversation was made to verify all the files in a backup set, and the files which were printed in messages 19661 or 19662 could not be verified because corrupt blocks for those files were found in the backup set.

Action: Unless the damage to the backup set can be repaired, the indicated files cannot be restored from this backup set.


ORA-19661 datafile string could not be verified

Cause: Some data blocks for the indicated datafile were corrupt in the backup set.

Action: Unless the damage to the backup set can be repaired, the indicated datafile cannot be restored from this backup set.


ORA-19662 archived log thread string sequence string could not be verified

Cause: Some data blocks for the indicated archived log were corrupt in the backup set.

Action: Unless the damage to the backup set can be repaired, the indicated archived log cannot be restored from this backup set.


ORA-19663 cannot apply current offline range to datafile string

Cause: An attempt was made to apply the current offline range to the specified datafile, but the datafile is either not current enough or is not at the correct SCN to apply the offline range.

Action: The datafile remains unchanged.


ORA-19664 file type: string, file name: string

Cause: This message is issued to identify the file which is the subject of an error.

Action: No action required. This is an informational message. There should be other Oracle messages explaining the cause of the error.


ORA-19665 size string in file header does not match actual file size of string

Cause: The size of the file as indicated in the file header does not match the true size of the file. The two differing sizes are shown in units of logical blocks.

Action: This file is not usable; it has most likely been truncated.


ORA-19666 cannot do incremental restore of the controlfile

Cause: The control file was included in an incremental restore conversation

Action: If you wish to restore the control file, you must do a full restore of the control file.


ORA-19667 cannot do incremental restore of datafile string

Cause: The backup of the datafile is a full backup.

Action: If you wish to restore the datafile, you must do a full restore of the datafile.


ORA-19668 cannot do full restore of datafile string

Cause: The backup of the datafile is an incremental backup.

Action: If you wish to restore the datafile, you must do an incremental restore of the datafile.


ORA-19669 proxy copy functions cannot be run on DISK channel

Cause: A proxy copy procedure was called, but the device which is allocated to the current session has type DISK.

Action: Allocate a non-DISK channel and retry the operation. Note that proxy copy requires a third-party media management software product that supports the this backup/restore feature.


ORA-19670 file string already being restored

Cause: A proxy restore function has already named this file as a restore destination.

Action: Use a different file name. If this message occurs during a Recovery Manager job, then this is an internal error in Recovery Manager, and you should contact Oracle Support Services.


ORA-19671 media management software returned invalid proxy handle

Cause: During a proxy backup or restore, the media management software returned an invalid file handle. This is an internal error in the media management software which is linked with Oracle to provide backup/restore services.

Action: Contact the media management software vendor.


ORA-19672 media management software returned invalid file status

Cause: During a proxy backup or restore, the media management software returned an invalid file status. This is an internal error in the media management software which is linked with Oracle to provide backup/restore services.

Action: Contact the media management software vendor.


ORA-19673 error during proxy copy of file string

Cause: During a proxy backup or restore, an error occurred while copying this file, but other files may have been copied successfully.

Action: There should be other errors on the error stack which explain why the file could not be successfully copied.


ORA-19674 file string is already being backed up with proxy copy

Cause: Recovery Manager attempted to back up the specified file with proxy copy, but the file is already being backed up by another Recovery Manager job.

Action: Wait until the other Recovery Manager backup of this file is complete, then retry the backup.


ORA-19675 file string was modified during proxy copy

Cause: A proxy backup of the specified file failed because the file was brought online or otherwise modified while the proxy backup was in progress. This file was offline or read only when the backup began, so the file was not put into hot-backup mode, therefore no modifications are permitted while the backup is in progress.

Action: Take another backup of this file.


ORA-19676 one or more files failed during proxy backup or restore

Cause: During a proxy backup or restore, errors were encountered while processing some files. The files for which no error messages are shown were processed successfully.

Action: Examine the messages regarding the specific files to determine the cause of the problems.


ORA-19677 RMAN configuration name exceeds maximum length of string

Cause: The configuration name string exceeds the maximum length.

Action: Supply a correct configuration name and retry the function.


ORA-19678 RMAN configuration value exceeds maximum length of string

Cause: The configuration value string exceeds the maximum length.

Action: Supply a correct configuration value and retry the operation.


ORA-19679 RMAN configuration number string is outside valid range of 1 through string

Cause: An invalid RMAN Configuration number was specified.

Action: Specify a correct datafile number and retry the operation.


ORA-19680 some blocks not recovered. See trace file for details

Cause: Some blocks were not recovered during block media recovery.

Action: See trace files for details of the problem.


ORA-19681 block media recovery on control file not possible

Cause: File number 0 was specified in block media recovery.

Action: Check file number.


ORA-19683 real and backup blocksize of file string are unequal

Cause: The block size changed between the backup & the real file.

Action: Use the correct backup.


ORA-19684 block media recovery failed because database is suspended

Cause: Database is suspended, probably by an ALTER SYSTEM SUSPEND statement.

Action: Execute ALTER SYSTEM RESUME then retry block media recovery.


ORA-19690 backup piece release string incompatible with Oracle release string

Cause: The backup piece was created by incompatible software.

Action: Either restart with a compatible software release or create another backup using the current release.


ORA-19700 device type exceeds maximum length of string

Cause: The device type indicated is invalid.

Action: Supply a correct device type and retry the allocation.


ORA-19701 device name exceeds maximum length of string

Cause: The device name indicated is invalid.

Action: Supply a correct device name and retry the allocation.


ORA-19702 device parameter exceeds maximum length of string

Cause: The device parameter exceeds the port-specific maximum length.

Action: Correct the parameter and retry the operation.


ORA-19703 device command string exceeds maximum length of string

Cause: The device command string exceeds maximum length.

Action: Correct the command and retry the operation.


ORA-19704 file name exceeds maximum length of string

Cause: The specified file name, which was a parameter to a copy, backup, or restore operation, exceeds the maximum file name length for this operating system.

Action: Retry the operation with a shorter file name.


ORA-19705 tag value exceeds maximum length of string characters

Cause: During a backup or copy operation, the user supplied a tag value too long to fit in the file header.

Action: Supply a shorter tag and retry the operation.


ORA-19706 invalid SCN

Cause: The input SCN is either not a positive integer or too large.

Action: Check the input SCN and make sure it is a valid SCN.


ORA-19707 invalid record block number - string

Cause: The input number is either negative or too large.

Action: Check the input record block number and make sure it is a valid number clauses in the CREATE DATABASE statement.


ORA-19708 log destination exceeds maximum length of string characters

Cause: When starting a restore conversation, the user specified a log restore destination longer than the port-specific maximum.

Action: Supply a shorter destination and retry the operation.


ORA-19709 numeric parameter must be non-negative integer

Cause: A numeric parameter to an X$DBMS_BACKUP_RESTORE procedure is negative or contains a fractional portion.

Action: Supply a valid numeric parameter.


ORA-19710 unsupported character set string

Cause: When the target database is not mounted, RMAN sets the target database character set to the value specified in the users environment.

Action: Specify a valid character set in the environment. This is usually done via the NLS_LANG environment variable.


ORA-19711 cannot use reNormalizeAllFileNames while database is open

Cause: An attempt was made to re-normalize all the file names in the control file while the database is open.

Action: Close the database before using the reNormalizeAllFileNames procedure.


ORA-19712 table name exceeds maximum length of string

Cause: The table name string exceeds the maximum length.

Action: Retry the operation with a shorter table name.


ORA-19713 invalid copy number: string

Cause: The copy number is not in a valid range or you have reached the maximum limit.

Action: Report the error and other information to support.


ORA-19714 length for generated piece name longer than string

Cause: The specified format exceeds the maximum length for the piece name.

Action: Change the format to create shorter piece names.


ORA-19715 invalid format for piece name

Cause: A restricted format was used incorrectly.

Action: Change the format by removing the restricted format.


ORA-19720 Error occurred when converting an OCI number into an SCN

Cause: This is most likely caused by an invalid SCN number that came from an external file, such as an export file.

Action: See other errors on the error stack to look for the source of the problem.


ORA-19721 Cannot find datafile with absolute file number string in tablespace string

Cause: Cannot find one of the data files that should be in the pluggable set.

Action: Make sure all datafiles are specified via import command line option or parameter files.


ORA-19722 datafile string is an incorrect version

Cause: The datafile is an incorrect version. It contains either less or more changes then the desired version.

Action: Make sure the right datafiles are transported. Make sure the datafile is copied while its tablespace is read only.


ORA-19723 Cannot recreate plugged in read-only datafile string

Cause: The datafile is plugged in read only. It cannot re-created.

Action: Use ALTER DATABASE RENAME FILE command instead.


ORA-19724 snapshot too old: snapshot time is before file string plug-in time

Cause: The snapshot SCN is before the SCN at which the referred datafile is plugged into the database.

Action: retry the query.


ORA-19725 can not acquire plug-in enqueue

Cause: There maybe another ALTER DATABASE RESET COMPATIBILITY command issued concurrently, preventing this process from acquiring the plug-in enqueue.

Action: Retry the operation.


ORA-19726 cannot plug data [string] at level string into database running at compatibility level string

Cause: Some of the data in the pluggable set requires a compatibility level higher than what is currently allowed by the database. The string in square bracket is the name of the compatibility type associated with the data.

Action: Raise the value of the COMPATIBLE initialization parameter and retry the operation.


ORA-19727 cannot plug data [string] at level string into database running Oracle string

Cause: Some of the data in the pluggable set requires a compatibility level higher than the release level of the Oracle executable. The string in square bracket is the name of the compatibility type associated with the data.

Action: Upgrade Oracle and retry the operation.


ORA-19728 data object number conflict between table string and partition string in table string

Cause: The non-partitioned table has the same data object number as one of the partitions in the partitioned table. One cannot exchange the table with the partition in this case.

Action: Use the ALTER TABLE MOVE PARTITION command to move the offending partition, so that the partition will get a new data object number. Retry the operation then.


ORA-19729 File string is not the initial version of the plugged in datafile

Cause: The file is not the initial version of the plugged in datafile.

Action: Use the correct initial version of the plugged in datafile.


ORA-19730 can not convert offline plugged-in datafile string

Cause: As part of making a tablespace read-write, we need to convert datafiles that are plugged in read only. The file must be online.

Action: Bring the datafile online and retry the operation.


ORA-19731 cannot apply change to unverified plugged-in datafile string

Cause: Recovery was not able to verify the referred datafile according to information in the control file. Before encountering this change vector for this file, somehow recovery did not encounter the file conversion redo that is supposed to verify the file. This may happen due to corrupted or incorrect control file used for media recovery.

Action: Use the correct control file and continue recovery.


ORA-19732 incorrect number of datafiles for tablespace string

Cause: The number of datafiles in the export file for the referred tablespace is not the same as expected. This is most likely caused by a user editing the export file.

Action: Use the correct export file and retry the operation.


ORA-19733 COMPATIBLE parameter needs to be string or greater

Cause: The COMPATIBLE initialization parameter is not high enough to allow the operation. Allowing the command would make the database incompatible with the release specified by the current COMPATIBLE parameter.

Action: Shutdown and restart with a higher compatibility setting.


ORA-19734 wrong creation SCN - control file expects converted plugged-in datafile

Cause: When a tablespace is plugged into a database, the tablespace is initially read only. Oracle converts the header of the plugged-in datafiles (assign them a new creation SCN) when the tablespace is first made read-write. This error occurs when the creation SCN in the file header is different from the creation SCN in the control file, possibly because this is the initial version of plugged-in datafile.

Action: Either restore the converted datafile or continue recovering the datafile.


ORA-19735 wrong creation SCN - control file expects initial plugged-in datafile

Cause: When a tablespace is plugged into a database, the tablespace is initially read only. Oracle converts the header of the plugged-in datafiles (assign them a new creation SCN) when the tablespace is first made read-write. This error occurs when the creation SCN in the file header is different from the creation SCN in the control file, possibly because this is the converted datafile.

Action: Either restore the initial version of the plugged-in datafile, or continue database recovery, which will recover the control file.


ORA-19736 can not plug a tablespace into a database using a different national character set

Cause: Oracle does not support plugging a tablespace into a database using a different national character set.

Action: Use import/export or unload/load to move data instead.


ORA-19999 skip_row procedure was called

Cause: The SKIP_ROW procedure was called which raises this error.

Action: SKIP_ROW should only be called within a trigger or a procedure called by a trigger.


ORA-20000 string

Cause: The stored procedure RAISE_APPLICATION_ERROR was called which causes this error to be generated.

Action: Correct the problem as described in the error message or contact the application administrator or database administrator for more information.


ORA-21000 error number argument to raise_application_error of stringstring is out of range

Cause: An attempt was made to specify a number not in the allowed range.

Action: Use an error number in the range of -20000 to -20999, inclusive.


ORA-21001 error number argument to raise_system_error of stringstring is out of range

Cause: An attempt was made to specify a number not in the allowed range.

Action: Use an error number in the range of -23300 to -24299, or -29300 to -29399, inclusive.


ORA-21300 objects option not installed

Cause: The objects option is not installed at this site. object types and other object features are, therefore, unavailable.

Action: Install the objects option. The objects option is not part of the Oracle Server product and must be purchased separately. Contact Oracle Support Services if the objects option needs to be purchased.


ORA-21301 not initialized in object mode

Cause: This function requires the OCI process to be initialized in object mode.

Action: Specify OCI_OBJECT mode when calling OCIInitialize().


ORA-21500 internal error code, arguments: [string], [string], [string], [string], [string], [string], [string], [string]

Cause: This is the generic error number for the OCI environment (client-side) internal errors. This indicates that the OCI environment has encountered an exceptional condition.

Action: Report to Oracle Support Services. The first argument is the internal error number.


ORA-21501 program could not allocate memory

Cause: The operating system has run out of memory.

Action: Take action to make more memory available to the program.


ORA-21503 program terminated by fatal error

Cause: A program is in an unrecoverable error state.

Action: Report to Oracle Support Services.


ORA-21520 database server driver not installed

Cause: User attempted to access a database server through an object-mode OCI environment but the necessary driver for supporting such access to the database server is not installed or linked in.

Action: Check if the driver corresponding to the database server has been installed/linked in and entered in the server driver table.


ORA-21521 exceeded maximum number of connections in OCI (object mode only)

Cause: User exceeded the maximum number of connections (255) that can be supported by an OCI environment in object mode.

Action: Close some of existing and unused connections before opening more connections.


ORA-21522 attempted to use an invalid connection in OCI (object mode only)

Cause: User attempted to use an invalid connection or a connection that has been terminated in an OCI environment (object mode), or user attempted to de-reference a REF obtained from a connection which has been terminated.

Action: Ensure that the connection exists and is still valid.


ORA-21523 functionality not supported by the server (object mode only)

Cause: User attempted to use a functionality that the server does not support.

Action: Upgrade the server.


ORA-21524 object type mismatch

Cause: The object type of the object is different from what is specified.

Action: Check the type of the object and correct it.


ORA-21525 attribute number or (collection element at index) string violated its constraints

Cause: Attribute value or collection element value violated its constraint.

Action: Change the value of the attribute or collection element such that it meets its constraints. The constraints are specified as part of the attribute or collection element's schema information.


ORA-21526 initialization failed

Cause: The initialization sequence failed. This can happen, for example, if an environment variable such as NLS_DATE_FORMAT is set to an invalid value.

Action: Check that all NLS environment variables are well-formed.


ORA-21560 argument string is null, invalid, or out of range

Cause: The argument is expecting a non-null, valid value but the argument value passed in is null, invalid, or out of range. Examples include when the LOB/FILE positional or size argument has a value outside the range 1 through (4GB - 1), or when an invalid open mode is used to open a file, and so on.

Action: Check your program and correct the caller of the routine to not pass a null, invalid or out-of-range argument value.


ORA-21561 OID generation failed

Cause: The handles passed in may not be valid.

Action: Check the validity of the env, svc handles.


ORA-21600 path expression too long

Cause: The path expression that is supplied by the user is too long. The path expression is used to specify the position of an attribute in an object. This error occurs when one of the intermediate elements in the path expression refers to an attribute of a built-in type. Thus, the OCI function cannot proceed on to process the rest of the elements in the path expression.

Action: Pass in the correct path expression to locate the attribute.


ORA-21601 attribute is not an object

Cause: The user attempts to perform an operation (that is valid only for an object) to an attribute of a built-in type. An example of such an illegal operation is to dynamically set a null structure to an attribute of a built-in type.

Action: Avoid performing such operation to an attribute of built-in type.


ORA-21602 operation does not support the specified typecode

Cause: The user attempts to perform an operation that does not support the specified type code.

Action: Use the range of valid type codes that are supported by this operation.


ORA-21603 property id [string] is invalid

Cause: The specified property ID is invalid.

Action: Specify a valid property ID. Valid property IDs are enumerated by OCIObjectPropId.


ORA-21604 property [string] is not a property of transient or value instances

Cause: An attempt was made to get a property which applies only to persistent objects.

Action: Check the lifetime and only get this property for persistent objects.


ORA-21605 property [string] is not a property of value instances

Cause: An attempt was made to get a property which applies only to persistent and transient objects.

Action: Check the lifetime and only get this property for persistent and transient objects.


ORA-21606 can not free this object

Cause: An attempt was made to free an object that is persistent and dirty and the OCI_OBJECTFREE_FORCE flag is not specified.

Action: Either flush the persistent object or set the flag to OCI_OBJECTFREE_FORCE


ORA-21607 memory cartridge service handle not initialized

Cause: Attempt to use the handle without initializing it.

Action: Initialize the memory cartridge service handle.


ORA-21608 duration is invalid for this function

Cause: Attempt to use a duration not valid for this function.

Action: Use a valid duration: a previously created user duration or OCI_DURATION_STATEMENT or OCI_DURATION_SESSION. For callout duration or external procedure duration, use OCIExtProcAllocCallMemory.


ORA-21609 memory being resized without being allocated first

Cause: Attempt to resize memory without allocating it first.

Action: Allocate the memory first before resizing it.


ORA-21610 size [string] is invalid

Cause: Attempt to resize memory with invalid size.

Action: Pass in a valid size (must be a positive integer).


ORA-21611 key length [string] is invalid

Cause: Attempt to use an invalid key length.

Action: Key length is invalid and valid range is 0 to 64.


ORA-21612 key is already being used

Cause: Attempt to use a key that is already used.

Action: Use a new key that is not yet being used.


ORA-21613 key does not exist

Cause: Attempt to use a non-existent key.

Action: Use a key that already exists.


ORA-21614 constraint violation for attribute number string

Cause: Constraints on the attribute were violated.

Action: Correct the value (of the attribute) so that it satisfies constraints.


ORA-21615 copy of an OTS (named or simple) instance failed

Cause: See following message.

Action: Check that no attribute value violates constraints.


ORA-21700 object does not exist or is marked for delete

Cause: User attempted to perform an inappropriate operation to an object that is non-existent or marked for delete. Operations such as pinning, deleting and updating cannot be applied to an object that is non-existent or marked for delete.

Action: Re-initialize the reference to reference an existent object or unmark the object.


ORA-21701 attempt to flush objects to different servers

Cause: User attempted to flush objects to different servers in one function call. These objects are obtained by calling a callback functions provided by the program.

Action: Avoid performing this operation.


ORA-21702 object is not instantiated or has been de-instantiated in cache

Cause: User attempted to perform an inappropriate operation to a transient object that is not instantiated in the object cache. Operations that cannot be applied to a not-instantiated transient object include deleting or pinning such an object.

Action: Check their code to see if they are performing such an operation without instantiating the object first, or performing such an operation after the allocation duration of the object has expired.


ORA-21703 cannot flush an object that is not modified

Cause: See the error message.

Action: The object should not be flushed.


ORA-21704 cannot terminate cache or connection without flushing first

Cause: See the error message.

Action: The transaction should be aborted or committed before terminating the cache or connection.


ORA-21705 service context is invalid

Cause: The service context that is supplied by the user is not valid.

Action: Establish the service context.


ORA-21706 duration does not exist or is invalid

Cause: The duration number that is supplied by the user is not valid.

Action: Establish the duration or use a correct predefined duration.


ORA-21707 pin duration is longer than allocation duration

Cause: The pin duration supplied by the user is longer than the allocation duration. This affects operations such as pinning and setting default parameters.

Action: Use a shorter pin duration or use the null duration.


ORA-21708 inappropriate operation on a transient object

Cause: An attempt was made to perform an inappropriate operation on a transient object. Operations that cannot be applied to a transient object include flushing and locking.

Action: Avoid performing such operations on a transient object.


ORA-21709 cannot refresh an object that has been modified

Cause: An attempt was made to refresh an object that has been marked for delete, update or insert (new).

Action: Unmark the object before refreshing it.


ORA-21710 argument is expecting a valid memory address of an object

Cause: The object memory address that is supplied by the user is invalid. The user may have passed in a bad memory address to a function that is expecting a valid memory address of an object.

Action: Pass in a valid memory address of an object to the function.


ORA-21779 duration not active

Cause: An attempt was made to use a duration that has been terminated.

Action: Avoid performing such operation.


ORA-22053 overflow error

Cause: This operation's result is above the range of Oracle number.

Action: Decrease the input value(s) so that the result is in the range of Oracle number.


ORA-22054 underflow error

Cause: This operation's result is below the range of Oracle number.

Action: Increase the input value(s) so that the result is in the range of Oracle number.


ORA-22055 unknown sign flag value [string]

Cause: Signed flag used is not OCI_NUMBER_SIGNED or OCI_NUMBER_UNSIGNED.

Action: Use either OCI_NUMBER_SIGNED or OCI_NUMBER_UNSIGNED as sign flag.


ORA-22056 value [string] is divided by zero

Cause: Given value is divided by zero.

Action: Modify divisor value to be non-zero.


ORA-22057 bad integer length [string]

Cause: The length of the integer (that is, number of bytes) to be converted to or from an Oracle number is invalid.

Action: Use integer length 1, 2, 4 or 8 bytes only.


ORA-22059 buffer size [string] is too small - [string] is needed

Cause: The buffer to hold the resulting text string is too small.

Action: Provide a buffer of the required size.


ORA-22060 argument [string] is an invalid or uninitialized number

Cause: An invalid or uninitialized number was passed in.

Action: Use a valid number. To initialize a number, call OCINumberSetZero().


ORA-22061 invalid format text [string]

Cause: The numeric format string for converting characters to or from an Oracle number is invalid.

Action: Use valid format string as documented in the Oracle Call Interface Programmer's Guide.


ORA-22062 invalid input string [string]

Cause: The text string for converting to numbers is invalid.

Action: Use a valid input string as documented in the Oracle Call Interface Programmer's Guide.


ORA-22063 reading negative value [string] as unsigned

Cause: An attempt was made to convert a negative number to an unsigned integer.

Action: Use the sign flag ORLTSB to convert a signed number.


ORA-22064 invalid NLS parameter string [string]

Cause: The NLS parameter string for converting characters to or from an Oracle number is invalid.

Action: Use valid format string as documented in the Oracle Call Interface Programmer's Guide.


ORA-22065 number to text translation for the given format causes overflow

Cause: Rounding done due to the given string format causes overflow.

Action: Change the string format such that overflow does not occur.


ORA-22130 buffer size [string] is less than the required size [string]

Cause: The size of the buffer into which the hexadecimal REF string is to be written is too small.

Action: Provide a buffer of the required size.


ORA-22131 hexadecimal string length is zero

Cause: The given hexadecimal string length must be greater than zero.

Action: Specify a length greater than zero.


ORA-22132 hexadecimal string does not correspond to a valid REF

Cause: The given hexadecimal string is invalid.

Action: Provide a valid hexadecimal string which was previously returned by a call to OCIRefToHex().


ORA-22140 given size [string] must be in the range of 0 to [string]

Cause: The given resize size is invalid.

Action: Ensure that the given size is in the required range.


ORA-22150 variable-length array has not been initialized

Cause: An un-initialized variable-length array is being operated upon.

Action: Initialize the variable-length array prior to calling this function.


ORA-22151 cannot resize non-zero variable-length array to zero elements

Cause: An attempt was made to resize a non-zero variable-length array to 0 elements.

Action: Specify a non-zero size.


ORA-22152 destination variable-length array is not initialized

Cause: The variable-length array on the right-hand-side of an assignment or the destination array of an append is not initialized.

Action: Initialize the destination variable-length array prior to calling this function.


ORA-22153 source variable-length array is not initialized

Cause: The variable-length array on the left-hand-side of an assignment or the source array of an append is not initialized.

Action: Initialize the destination variable-length array prior to calling this function.


ORA-22160 element at index [string] does not exist

Cause: Collection element at the given index does not exist.

Action: Specify the index of an element which exists.


ORA-22161 type code [string] is not valid

Cause: Given type code is not valid.

Action: Use one of the type codes enumerated in OCITypeCode.


ORA-22162 element at index [string] has been previously deleted

Cause: An attempt was made to delete a non-existent collection element.

Action: Check for the existence of the element prior to calling this function.


ORA-22163 left hand and right hand side collections are not of same type

Cause: Left hand and right side collections are not of same type.

Action: Ensure that the same collection type is passed for both left hand and right hand side of this function.


ORA-22164 delete element operation is not allowed for variable-length array

Cause: An attempt was made to delete an element of a variable-length array.

Action: Ensure that the collection is not a variable-length array prior to calling this function.


ORA-22165 given index [string] must be in the range of 0 to [string]

Cause: Given index is not in the required range.

Action: Ensure that the given index is in the required range.


ORA-22166 collection is empty

Cause: Given collection is empty.

Action: Test if collection is empty prior to invoking this function.


ORA-22167 given trim size [string] must be less than or equal to [string]

Cause: Given trim size is greater than the current collection size.

Action: Ensure that the given size is less than or equal to the collection size prior to calling this function.


ORA-22275 invalid LOB locator specified

Cause: There are several causes:

  1. The LOB locator was never initialized
  2. The locator is for a BFILE and the routine expects a BLOB/CLOB/NCLOB locator
  3. The locator is for a BLOB/CLOB/NCLOB and the routine expects a BFILE locator
  4. Trying to update the LOB in a trigger body -- LOBs in trigger bodies are read-only
  5. The locator is for a BFILE/BLOB and the routine expects a CLOB/NCLOB locator
  6. The locator is for a CLOB/NCLOB and the routine expects a BFILE/BLOB locator

Action: For (1), initialize the LOB locator by selecting into the locator variable or by setting the LOB locator to empty. For (2),(3), (5), and (6),pass the correct type of locator into the routine. For (4), remove the trigger body code that updates the LOB value.


ORA-22276 invalid locator for LOB buffering

Cause: One of the following:

  1. The locator was never enabled for buffering.
  2. It is not an updated locator but is being used for a write/flush operation.

Action: For (1) enable the locator for buffering; (2) ensure that only an updated locator is used for a LOB update operation.


ORA-22277 cannot use two different locators to modify the same LOB

Cause: LOB buffering is enabled and an attempt was made to modify the LOB using two different LOB locators.

Action: When using LOB buffering, modify the LOB through one LOB locator only.


ORA-22278 must update the LOB only through the LOB buffers

Cause: LOB buffering is enabled for this LOB and there are buffers for this LOB in the buffer pool. Thus, updating the LOB through means other than the LOB buffers is not allowed.

Action: Update the LOB through the LOB buffers using the locator that has LOB buffering enabled. If this operation is required, buffers associated with this LOB should either be flushed as necessary or buffering should be disabled. Once this is done, reissue the command.


ORA-22279 cannot perform operation with LOB buffering enabled

Cause: The operation attempted is not allowed when LOB buffering is enabled.

Action: If the operation is required, LOB buffering should not be used. In this case, flush buffers associated with the input LOB locator as necessary, disable buffering on the input LOB locator and reissue the command.


ORA-22280 no more buffers available for operation

Cause: One of the following:

  1. All buffers in the buffer pool have been used up by previous operations.
  2. An attempt was made to flush a LOB without any previous buffered update operations.

Action: For (1), flush the LOB(s) through the locator that is being used to update the LOB. For (2), write to the LOB through a locator enabled for buffering before attempting to flush buffers.


ORA-22281 cannot perform operation with an updated locator

Cause: The input locator has buffering enabled and was used to update the LOB value through the LOB buffering subsystem. The modified buffer has not been flushed since the write that was performed by the input locator; thus, the input locator is considered an updated locator. Updated locators cannot be the source of a copy operation. Only one locator per LOB may be used to modify the LOB value through the LOB buffering subsystem.

Action: Depending on whether the modifications made through the input locator to the LOB buffering subsystem should be written to the server, either flush the buffer to write the modifications, or, disable buffering on the locator to discard the modifications. Then, reissue the command.


ORA-22282 non-contiguous append to a buffering enabled LOB not allowed

Cause: The buffered write operation has an input offset value more than one byte or character past the end of the LOB.

Action: Specify an input offset value which is exactly one character or byte greater than the length of the LOB that you are attempting to update through a buffered write operation.


ORA-22283 filename contains characters that refer to parent directory

Cause: Filename contains a path "../" which references a parent directory.

Action: Ensure that the filename does not contain characters which reference a parent directory.


ORA-22285 non-existent directory or file for string operation

Cause: An attempt was made to access a directory that does not exist, or attempted to access a file in a directory that does not exist.

Action: Ensure that a system object corresponding to the specified directory exists in the database dictionary, or make sure the name is correct.


ORA-22286 insufficient privileges on file or directory to perform string operation

Cause: The user does not have the necessary access privileges on the directory alias and/or the file for the operation.

Action: Ask the database/system administrator to grant the required privileges on the directory alias and/or the file.


ORA-22287 invalid or modified directory occurred during string operation

Cause: The directory alias used for the current operation is not valid if being accessed for the first time, or has been modified by the database administrator since the last access.

Action: If you are accessing this directory for the first time, provide a valid directory name. If you have been already successful in opening a file under this directory before this error occurred, then close the file and retry the operation with a valid directory alias as modified by your database administrator. Oracle recommends that directories should be modified only during quiescent periods.


ORA-22288 file or LOB operation string failed string

Cause: The operation attempted on the file or LOB failed.

Action: See the next error message in the error stack for more detailed information. Also, verify that the file or LOB exists and that the necessary privileges are set for the specified operation. If the error still persists, report the error to the database administrator.


ORA-22289 cannot perform string operation on an unopened file or LOB

Cause: The file or LOB is not open for the required operation to be performed.

Action: Precede the current operation with a successful open operation on the file or LOB.


ORA-22290 operation would exceed the maximum number of opened files or LOBs

Cause: The number of open files or LOBs has reached the maximum limit.

Action: Close some of the opened files or LOBs and retry the operation.


ORA-22291 Open LOBs exist at transaction commit time

Cause: An attempt was made to commit a transaction with open LOBs at transaction commit time.

Action: Close the LOBs before committing the transaction.


ORA-22292 Cannot open a LOB in read-write mode without a transaction

Cause: An attempt was made to open a LOB in read-write mode before a transaction was started.

Action: Start a transaction before opening the LOB in read-write mode. Ways to start a transaction include issuing a SQL DML or SELECT FOR UPDATE command. Opening the LOB in read-only mode does not require a transaction.


ORA-22293 LOB already opened in the same transaction

Cause: An attempt was made to open a LOB that already is open in this transaction.

Action: Close the LOB before attempting to reopen it.


ORA-22294 cannot update a LOB opened in read-only mode

Cause: An attempt was made to write to or update a LOB opened in read-only mode.

Action: Close the LOB and reopen it in read-write mode before attempting to write to or update the LOB.


ORA-22295 cannot bind more than 4000 bytes data to LOB and LONG columns in 1 statement

Cause: An attempt was made to bind more than 4000 bytes of data to both LOB and LONG columns in the same insert or update statement. You can bind more than 4000 bytes of data to either a LONG column or one or more LOB columns, but not both.

Action: Bind more than 4000 bytes of data to either the LONG column or one or more LOB columns, but not both.


ORA-22296 invalid ALTER TABLE option for conversion of LONG datatype to LOB

Cause: An attempt was made to specify ALTER TABLE options which are disallowed during conversion of LONG datatype to LOB. The only ALTER TABLE options allowed during conversion of LONG datatype to LOB are the default clause and LOB storage clause for the column being converted to LOB.

Action: Remove the disallowed options.


ORA-22297 warning: Open LOBs exist at transaction commit time

Cause: An attempt was made to commit a transaction with open LOBs at transaction commit time.

Action: This is just a warning. The transaction was commited successfully, but any domain or functional indexes on the open LOBs were not updated. You may want to rebuild those indexes.


ORA-22303 type "string"."string" not found

Cause: An attempt was made to obtain information for a type that cannot be found.

Action: Check that the schema is correct and that the type has been created correctly.


ORA-22304 input type is not an object type

Cause: An attempt was made to obtain the supertype information for a non-object type.

Action: Pass in only an object type.


ORA-22305 attribute/method/parameter "string" not found

Cause: Type element with the given name is not found in the type.

Action: Check to make sure that the type element exists.


ORA-22306 type "string"."string" already exists

Cause: An attempt was made to create a type that already exists.

Action: Check to make sure that the type has not been created prior to this.


ORA-22307 operation must be on a user-defined type

Cause: An attempt was made to perform an operation that is allowed only on a user-defined type, and the type is not a user-defined type.

Action: Check to make sure that only user-defined types are being operated on.


ORA-22308 operation not allowed on evolved type

Cause: An attempt was made to replace a type whose attribute definition has been altered.

Action: Submit ALTER TYPE ADD/DROP statement instead of ALTER TYPE REPLACE.


ORA-22309 attribute with name "string" already exists

Cause: An attempt was made to create an object type where more than one attributes have the same name.

Action: Check to make sure that all attribute names are unique.


ORA-22310 ALTER TYPE error. Refer to table "string"."string" for errors

Cause: An invalid alter type statement was submitted.

Action: Correct the errors listed in the specified table and resubmit the statement.


ORA-22311 type for attribute "string" does not exist

Cause: The type of the attribute does not exist.

Action: No types were created/modified for this DDL transaction. Redo the DDL transaction and add the creation of the attribute's type in the DDL transaction.


ORA-22312 must specify either CASCADE or INVALIDATE option

Cause: An attempt was made to alter a type which has a dependent type or table without specifying the CASCADE or INVALIDATE option.

Action: Resubmit the statement with either the CASCADE or INVALIDATE option. Specify CASCADE if you want to cascade the type change to dependent types and tables; otherwise, specify INVALIDATE to invalidate all dependents.


ORA-22313 cannot use two versions of the same type "string"

Cause: The version of this type conflicts with the version of this type used by another library that was linked in with the application. An application may only use one version of a type.

Action: Check that the libraries being linked with this application and use the same versions of the type.


ORA-22314 method information mismatch in ALTER TYPE

Cause: The number of methods or the method signature do not match that of the original type declaration. This is not supported.

Action: Make sure the method signature stay identical for the previously declared method. Do not drop existing methods.


ORA-22315 type "string" does not contain a map or order function

Cause: The input type does not contain a map or order function so one cannot be returned.

Action: Add a map or order function to the type or catch this error.


ORA-22316 input type is not a collection type

Cause: An attempt was made to obtain information for collection types on a non-named collection type.

Action: Use a named collection type for the function.


ORA-22317 typecode number is not legal as a number type

Cause: An attempt was made to use a number type code that is not valid.

Action: Use only OCI_TYPECODE_SMALLINT, OCI_TYPECODE_INTEGER, OCI_TYPECODE_REAL, OCI_TYPECODE_DOUBLE, OCI_TYPECODE_FLOAT, OCI_TYPECODE_NUMBER, or OCI_TYPECODE_DECIMAL.


ORA-22318 input type is not an array type

Cause: An attempt was made to obtain the number of elements for a non-array type.

Action: Pass in only a named collection type which is an array.


ORA-22319 type attribute information altered in ALTER TYPE

Cause: The type attribute information does not match that of the original type declaration when altering type. Attributes cannot be altered during ALTER TYPE. Only new methods can be added.

Action: Check that all type alterations are legal.


ORA-22320 missing user version string

Cause: The VERSION option is specified without a user version string.

Action: Resubmit the statement with the version string following the VERSION keyword.


ORA-22321 method does not return any result

Cause: OCITypeResult() was called on a method that does not return any results.

Action: Check that you are passing in the correct method descriptor, or that your method creation was done correctly.


ORA-22322 error table "string"."string" has incorrect structure

Cause: The specified error table does not have the expected table structure.

Action: Execute the DBMS_UTILITY.CREATE_ALTER_TYPE_ERROR_TABLE procedure to create an error table, then resubmit the statement using the new error table.


ORA-22323 error table "string"."string" does not exist

Cause: The error table does not exist.

Action: Resubmit the statement with a correct error table name.


ORA-22324 altered type has compilation errors

Cause: The use of the ALTER TYPE statement caused a compilation error.

Action: Correct the error reported and resubmit the statement.


ORA-22326 cannot change a type to FINAL if it has subtypes

Cause: An attempt was made to change a type with subtypes to FINAL.

Action: Drop all subtypes of the target type before changing it to FINAL.


ORA-22327 cannot change a type to NOT INSTANTIABLE if it has dependent tables

Cause: An attempt was made to change a type with dependent tables to NOT INSTANTIABLE.

Action: Drop all dependent tables of the target type and resubmit the statement.


ORA-22328 object "string"."string" has errors. string

Cause: Altering the target type causes errors in its dependent object.

Action: Correct the problem in the dependent object and resubmit the statement.


ORA-22329 cannot alter a non-object type

Cause: An attempt was made to execute ALTER TYPE on a non-object type.

Action: Drop the non-object type first, then re-create it as an object type.


ORA-22330 cannot alter a type that is not valid

Cause: An attempt was made to perform ALTER TYPE on an invalid type.

Action: Use the CREATE OR REPLACE TYPE command to modify the type.


ORA-22331 cannot alter an incomplete type

Cause: An attempt was made to perform ALTER TYPE on an incomplete type.

Action: Use CREATE TYPE to completely define the original type before executing the ALTER TYPE.


ORA-22332 a dependent object in schema "string" has errors. string

Cause: Altering the target type causes errors in its dependent object.

Action: Correct the problem in the dependent object and resubmit the statement.


ORA-22333 cannot reset type "string"."string" due to invalid dependent types and tables

Cause: An attempt was made to reset the type version with invalid dependent types and tables.

Action: Use the ALTER TYPE COMPILE statement to compile all invalid dependent types and use the ALTER TABLE UPGRADE INCLUDING DATA statement to upgrade all the dependent tables, then resubmit the statement.


ORA-22334 cannot reset type "string"."string". Dependent tables must be upgraded to latest version.

Cause: An attempt was made to reset the type version when the data in the dependent table has not been upgraded to the latest type version.

Action: Use the ALTER TABLE UPGRADE INCLUDING DATA statement to upgrade the data in the dependent tables then resubmit the statement.


ORA-22335 The client cannot work with an altered type

Cause: A pre 9.0.0 client has requested a type that has been altered on the server.

Action: Only 9.0.0 and higher clients can access altered types.


ORA-22336 table contained 8.0 image format, must specify INCLUDING DATA

Cause: One of the following:

  1. An attempt was made to alter a type with a dependent table in 8.0 image format and the NOT INCLUDING TABLE DATA option was specified.
  2. An attempt was made to upgrade a table in 8.0 image format with the NOT INCLUDING DATA option specified.

Action: Resubmit the statement with the INCLUDING DATA option.


ORA-22337 the type of accessed object has been evolved

Cause: The type of the accessed object has been altered and the client's object is based on an earlier type definition.

Action: The user needs to exit the application and modify the application to accommodate the type change. From SQL/PLUS, reconnect and resubmit the statement.


ORA-22338 must specify CASCADE INCLUDING DATA when altering the final property

Cause: An attempt was made to alter the final property of a type with dependent tables without specifying the CASCADE INCLUDING DATA option.

Action: Resubmit the statement with the CASCADE INCLUDING DATA option.


ORA-22339 cannot alter to not final since its attribute column is substitutable

Cause: An attempt was made to alter a type to not final when its embedded attribute is defined as substitutable in some tables. Note, this is a restriction in 9.0 version because when a type is altered to not final, column of that type is set to not substitutable at all levels; thus, it is an error if one of its embedded attribute column is already marked substitutable.

Action: Recreate the table and specify NOT SUBSTITUTABLE AT ALL LEVELS for all columns of non final type. Then resubmit the ALTER TYPE statement.


ORA-22340 cannot string type "string"."string". Dependent tables must be upgraded to latest version

Cause: An attempt was made to reset the version, drop or alter a type when the data in dependent table has not been upgraded to the latest version.

Action: Use the ALTER TABLE UPGRADE INCLUDING DATA statement to upgrade the data in the dependent tables then resubmit the statement.


ORA-22341 cannot assign supertype instance to subtype

Cause: An attempt was made to assign or copy a supertype instance to a container (destination) that can only hold a subtype instance.

Action: Make sure the runtime type of the source of the assignment or copy is the same type as the destination or is a subtype of the destination type.


ORA-22342 dependent VARRAY column exceeds the maximum inline column size

Cause: An attempt was made to alter a type (add or modify attribute) which causes the size of its dependent VARRAY column to exceed the maximum inline column size. However, the VARRAY column was not specified to be stored as LOB at the table level when the table was created.

Action: Specify the VARRAY column to be stored as LOB at the table level when the table is created.


ORA-22343 Compilation error for type invalidated by ALTER TYPE

Cause: Compilation failed for a type which was invalidated by ALTER TYPE.

Action: Check what is causing the compilation error, correct it, and try again.


ORA-22344 can not specify CONVERT TO SUBSTITUTABLE option for ALTER TYPE other than NOT FINAL change

Cause: An attempt was made to specify CONVERT TO SUBSTITUTABLE option for ALTER TYPE other than NOT FINAL change.

Action: Specify CONVERT TO SUBSTITUTABLE option only for ALTER TYPE NOT FINAL change.


ORA-22345 recompile type string.string before attempting this operation

Cause: An attempt was made to perform an operation which requires the specified datatype to be valid, but the datatype is invalid.

Action: Recompile the specified type and retry the operation.


ORA-22369 invalid parameter encountered in method string

Cause: An invalid parameter is being passed to this method of SYS.AnyType, SYS.AnyData, or SYS.AnyDataSet.

Action: Check the parameters being passed to this method and make sure that the parameters are allowed.


ORA-22370 incorrect usage of method string

Cause: This method of SYS.AnyType, SYS.AnyData, or SYS.AnyDataSet is being used inappropriately.

Action: Check the documentation for correct usage.


ORA-22371 Table contains data of type string.string, version string, which does not exist

Cause: Some of the older versions of the type may have been deleted because one or more of the referenced types was dropped.

Action: These data could not be read as the whole ADT. Read the data at individual scalar attribute level.


ORA-22600 encountered 8.0.2 (Beta) VARRAY data that cannot be processed

Cause: Production Oracle8 (8.0.3 and beyond) encountered some VARRAY data which was created and stored by Oracle8 8.0.2 (Beta 2). Production Oracle8 cannot understand or process such VARRAY data.

Action: Delete the VARRAY data from the table by dropping the table, deleting the rows, or nulling out the VARRAY columns, and then reinsert the VARRAY data. There is no provided script or tool to help automate this conversion.


ORA-22601 pickler TDS context [string] is not initialized

Cause: An attempt was made to use the pickler TDS context without initializing it.

Action: Use OCIPicklerTdsCtxInit to initialize the context.


ORA-22602 pickler TDS handle [string] is not well-formed

Cause: An attempt was made to use the pickler TDS handle without initializing or constructing it.

Action: Use OCIPicklerTdsInit to initialize the handle before it is constructed. Use OCIPicklerTdsGenerate to generate the TDS before its attributes can be accessed.


ORA-22603 cannot add an attribute to the already generated TDS handle

Cause: An attempt was made to add an attribute to the already constructed TDS.

Action: Use a TDS handle that is initialized but not yet constructed.


ORA-22604 TDS handle already generated

Cause: An attempt was made to generate TDS that is already generated.

Action: Use a TDS handle that is initialized but not yet generated.


ORA-22605 FDO handle [string] is not initialized

Cause: An attempt was made to use an uninitialized FDO handle.

Action: Use OCIPicklerFdoInit to initialize FDO handle.


ORA-22606 pickler image handle [string] is not well-formed

Cause: An attempt was made to use the image handle without initializing/ constructing it.

Action: Use OCIPicklerImageInit to initialize the handle before it is constructed. Use OCIPicklerImageGenerate to generate the image before its attributes can be accessed.


ORA-22607 image handle already generated

Cause: An attempt was made to generate image that is already generated.

Action: Use a image handle that is initialized but not yet generated.


ORA-22608 cannot add an attribute to the already generated image handle

Cause: An attempt was made to add an attribute to the already constructed image.

Action: Use a image handle that is initialized but not yet constructed.


ORA-22609 error string during initialization of FDO

Cause: An error occurred during FDO initialization.

Action: Take an action based on the specified error.


ORA-22610 error while adding a scalar to the image handle

Cause: An error occurred while adding a scalar attribute to the image handle.

Action: Make sure image handle is initialized before adding scalar.


ORA-22611 TDS version is not recognized

Cause: Incorrect TDS handle is passed.

Action: Make sure image handle is initialized with the correct TDS.


ORA-22612 TDS does not describe a collection TDS

Cause: Collection construct/access routines are being on an image but the TDS does not describe that a collection TDS.

Action: Make sure a collection TDS is used before invoking collection routines on the image handle.


ORA-22613 buflen does not match the size of the scalar

Cause: BUFLEN is incorrect.

Action: Make sure BUFLEN is correct and matches the size of the scalar.


ORA-22614 error while construction the collection in the image

Cause: An error occurred during the construction of collection.

Action: Make sure image handle is initialized and OCIPicklerImageCollBegin is called to begin collection.


ORA-22615 attribute is not a collection

Cause: Collection routine is invoked upon a non-collection attribute.

Action: Make sure attribute is a collection.


ORA-22616 image is not of Oracle 8.1 format

Cause: The function being invoked is applicable only for 8.1 images.

Action: Make sure image is of 8.1 format.


ORA-22617 error while accessing the image handle collection

Cause: An error occurred while accessing collection in the image handle.

Action: Make sure image is initialized correctly and the collection is constructed properly.


ORA-22618 attribute is a BAD NULL in the image handle

Cause: The attribute in question is probably the attribute of a null embedded image.

Action: Make sure attribute number is valid or it is NULL or NOT NULL.


ORA-22619 all collection elements have already been accessed

Cause: An attempt was made to access a collection element after all the collection elements are already accessed.

Action: This function should not be invoked any more.


ORA-22620 buffer size too small to hold the value

Cause: Buffer size is not enough to hold the value. Most likely while doing the character set conversion, a bigger buffer is needed.

Action: Pass in a bigger buffer. If the client character set format differs from that of server, doing the conversion may result in 4X expansion.


ORA-22621 error transfering an object from the agent

Cause: An error was returned from the pickler routines on the agent side.

Action: Contact Oracle Support Services.


ORA-22625 OCIAnyData is not well-formed

Cause: Attempt to use the OCIAnyData without initializing constructing it.

Action: Use OCIAnyDataBeginConstruct to initialize the handle before it is adding attributes. Use OCIAnyDataEndConstruct to complete the construction. Or use OCIAnyDataConvert to do the construction. MAke sure it is properly constructed before accessing attributes.


ORA-22626 Type Mismatch while constructing or accessing OCIAnyData

Cause: Type supplied is not matching the type of the AnyData. If piece wise construction or access is being attempted, the type supplied is not matching the type of the current attribute.

Action: Make sure the type supplied matches the type of object to be constructed or accessed.


ORA-22627 tc [string] must be that of object/varray/nested table

Cause: Type code is not that of object/varray/nested table

Action: Make sure the type code is OCI_TYPECODE_OBJECT, OCI_TYPECODE_VARRAY, or OCI_TYPECODE_TABLE


ORA-22628 OCIAnyData already constructed

Cause: Attempt to add attributes to OCIAnyData that is already constructed.

Action: Use the OCIAnyData that is initialized but not yet constructed.


ORA-22629 OCIAnyData is null

Cause: Attempting an operation that is not valid on null OCIAnyData.

Action: Make sure OCIAnyData is not null.


ORA-22630 attribute [string] is null or it is not well-formed

Cause: Passing an attribute that is null or not well-formed.

Action: Make sure the attribute is not null or is well-formed.


ORA-22631 attribute [string] is is not well-formed or does not match the type

Cause: Passing an attribute that is not well-formed or does not match the input type.

Action: Make sure the attribute is well-formed and matches the type specified.


ORA-22632 AnyDataSet parameter is not valid for the current operation

Cause: The AnyDataSet parameter is null or invalid for the current operation.

Action: Check the documentation for the current operation.


ORA-22633 Error freeing AnyDataSet

Cause: AnyDataSet that is passed in may not be valid.

Action: Check all the AnyDataSet parameters.


ORA-22634 Error adding new instance to AnyDataSet

Cause: Current instance in the AnyDataSet has not been fully constructed.

Action: Make sure that the current instance is fully constructed before adding new instance.


ORA-22800 invalid user-defined type

Cause: An attempt was made to use an incomplete type as a constructor.

Action: Complete the type definition before using it in a query.


ORA-22801 invalid object row variable

Cause: The specified object row variable is not available in the scope of name resolution.

Action: Verify the specified object row variable is correct, or use an object row variable visible in scope.


ORA-22803 object type contains zero attributes

Cause: An attempt was made to create or specify a column or constructor of an object type that has no attributes. Only object types that have at least one attribute are allowed in this context.

Action: Specify a valid object type.


ORA-22804 remote operations not permitted on object tables or user-defined type columns

Cause: An attempt was made to perform queries or DML operations on remote object tables or on remote table columns whose type is one of object, REF, nested table or VARRAY.

Action: Remove the reference to remote tables in the statement.


ORA-22805 cannot insert NULL object into object tables or nested tables

Cause: An attempt was made to insert a NULL object into an object table or a Nested Table.

Action: Ensure that a non-NULL object is inserted into the table or insert an object with attributes whose values are NULL.


ORA-22806 not an object or REF

Cause: An attempt was made to extract an attribute from an item that is neither an object nor a REF.

Action: Use an object type or REF type item and retry the operation.


ORA-22807 cannot resolve to a scalar type or a collection type

Cause: Invalid use of a non-scalar (for example, object type) item.

Action: Change the item's data type and retry the operation.


ORA-22808 REF dereferencing not allowed

Cause: An attempt was made to access an object type's attributes by de-referencing a REF item.

Action: Make the item an object type instead of a REF to an object type.


ORA-22809 nonexistent attribute

Cause: An attempt was made to access a non-existent attribute of an object type.

Action: Check the attribute reference to see if it is valid. Then retry the operation.


ORA-22810 cannot modify object attributes with REF dereferencing

Cause: An attempt was made to modify the attributes an object by de-referencing a REF column in an UPDATE statement.

Action: Update the table containing the object that the REF points to, or change the REF column to an object type column.


ORA-22812 cannot reference nested table column's storage table

Cause: An attempt to access the nested table column's storage table is not allowed in the given context.

Action: Issue the statement against the parent table containing the nested table column.


ORA-22813 operand value exceeds system limits

Cause: Object or Collection value was too large. The size of the value might have exceeded 30k in a SORT context, or the size might be too big for available memory.

Action: Choose another value and retry the operation.


ORA-22814 attribute or element value is larger than specified in type

Cause: Value provided for the object type attribute or collection element exceeded the size specified in the type declaration.

Action: Choose another value and retry the operation.


ORA-22816 unsupported feature with RETURNING clause

Cause: RETURNING clause is currently not supported for object type columns, LONG columns, remote tables, INSERT with subquery, and dereferencing inside returning clause.

Action: Use separate SELECT statements to get the values.


ORA-22817 subquery not allowed in the default clause

Cause: An attempt was made to use a subquery in the column default clause expression.

Action: Remove the subquery from the default clause.


ORA-22818 subquery expressions not allowed here

Cause: An attempt was made to use a subquery expression where these are not supported.

Action: Rewrite the statement without the subquery expression.


ORA-22819 scope of input value does not correspond to the scope of the target

Cause: An attempt was made to operate on a REF value scoped to a different table than the expected one.

Action: Use a REF which is scoped to the expected table and retry the operation.


ORA-22826 cannot construct an instance of a non instantiable type

Cause: An attempt was made to use a non instantiable type as a constructor.

Action: None.


ORA-22828 input pattern or replacement parameters exceed 32K size limit

Cause: Value provided for the pattern or replacement string in the form of VARCHAR2 or CLOB for LOB SQL functions exceeded the 32K size limit.

Action: Use a shorter pattern or process a long pattern string in multiple passes.


ORA-22850 duplicate LOB storage option specificed

Cause: A LOB storage option (CHUNK, PCTVERSION, CACHE, NOCACHE, TABLESPACE, STORAGE, INDEX) was specified more than once.

Action: Specify all LOB storage options only once.


ORA-22851 invalid CHUNK LOB storage option value

Cause: The specified CHUNK LOB storage option value must be an integer.

Action: Choose an appropriate integer value and retry the operation.


ORA-22852 invalid PCTVERSION LOB storage option value

Cause: The specified PCTVERSION LOB storage option value must be an integer.

Action: Choose an appropriate integer value and retry the operation.


ORA-22853 invalid LOB storage option specification

Cause: A LOB storage option was not specified.

Action: Specify one of CHUNK, PCTVERSION, CACHE, NOCACHE, TABLESPACE, STORAGE, INDEX as part of the LOB storage clause.


ORA-22854 invalid option for LOB storage index

Cause: A valid LOB store index option was not specified.

Action: Specify one of (INITTRANS, MAXTRANS, TABLESPACE, STORAGE) as part of the LOB storage index.


ORA-22855 optional name for LOB storage segment incorrectly specified

Cause: The optional name for LOB storage segment was specified with multiple columns in the column list.

Action: Specify each column LOB storage only with optional name(s).


ORA-22856 cannot add columns to object tables

Cause: An attempt was made to add columns to an object table. Object tables cannot be altered to add columns since its definition is based on an object type.

Action: Create a new type with additional attributes, and use the new type to create an object table. The new object table will have the desired columns.


ORA-22857 cannot modify columns of object tables

Cause: An attempt was made to alter the object table by modifying existing columns. An object table cannot be altered to modify existing columns since it is based on an object type. The table definition must be in sync with the corresponding type.

Action: Create a new type with the desired attribute types and use it to create an object table. The new object table will have the desired columns.


ORA-22858 invalid alteration of datatype

Cause: An attempt was made to modify the column type to object, REF, nested table, VARRAY or LOB type.

Action: Create a new column of the desired type and copy the current column data to the new type using the appropriate type constructor.


ORA-22859 invalid modification of columns

Cause: An attempt was made to modify an object, REF, VARRAY, nested table, or LOB column type.

Action: Create a new column of the desired type and copy the current column data to the new type using the appropriate type constructor.


ORA-22860 object type expected

Cause: An attempt was made to create an object table using a non- object type, or to create a column that is a REF to a non-object type.

Action: Use a valid object type in the table or column definition.


ORA-22861 invalid user-defined type

Cause: An attempt was made to create a column or object table of a non-existent type.

Action: Specify a valid type in the table or column definition.


ORA-22862 specified object identifier doesn't match existing object identifier

Cause: An attempt was made to specify an object identifier for the type that does not match the existing identifier of the incomplete type of the same name.

Action: Specify the correct object identifier or leave it out of the statement.


ORA-22863 synonym for datatype string.string not allowed

Cause: A synonym specification for a datatype is not supported.

Action: Do not use the synonym for the datatype.


ORA-22864 cannot ALTER or DROP LOB indexes

Cause: An attempt was made to ALTER or DROP a LOB index.

Action: Do not operate directly on the system-defined LOB index. Perform operations on the corresponding LOB column.


ORA-22865 more than one column specified

Cause: An attempt was made to specify multiple columns where only one is allowed.

Action: Specify a single column and retry the operation.


ORA-22866 default character set is of varying width

Cause: A character LOB was defined but the default character set is not fixed width.

Action: Ensure that the character set is of fixed width before defining character LOBs.


ORA-22868 table with LOBs contains segments in different tablespaces

Cause: An attempt was made to drop a tablespace which contains the segment(s) for the LOB columns of a table but does not contain the table segment.

Action: Find table(s) with LOB columns which have non-table segments in this tablespace. Drop these tables and reissue drop tablespace.


ORA-22869 depth of type dependency hierarchy exceeds maximum limit

Cause: The type dependency hierarchy was structured to have depth greater than 1024.

Action: Restructure the type dependency hierarchy to a shorter depth.


ORA-22870 ALTER TYPE with REPLACE option a non-object type

Cause: An attempt was made to perform ALTER TYPE with REPLACE option a non-object type.

Action: Drop the non-object type first, then re-create it as an object type.


ORA-22871 ALTER TYPE with REPLACE is not allowed for pure incomplete types

Cause: An attempt was made to perform ALTER TYPE with REPLACE option for a pure incomplete type.

Action: Completely define the original type, before using the ALTER TYPE with REPLACE option.


ORA-22872 OID INDEX clause not allowed on tables with primary key based object identifiers

Cause: An attempt was made to create an OID INDEX on a table with primary key-based object identifiers.

Action: Remove the OID INDEX clause.


ORA-22873 primary key not specified for primary key based object table

Cause: An attempt was made to create a primary key based object table without specifying a primary key.

Action: Specify a primary key and retry the operation.


ORA-22874 attribute "string" is not part of the type "string"

Cause: Attribute specified in the USER_DEFINED clause is not an attribute of the REF type.

Action: Ensure that the name specified in the USER_DEFINED clause is the name of a valid attribute of the REF type.


ORA-22875 cannot drop primary key of an object table whose object identifier is primary key based

Cause: An attempt was made to drop the primary key of an object table which has a primary key based object identifier.

Action: Remove the drop primary key clause.


ORA-22876 this user-defined type is not allowed or it cannot be used in this context

Cause: An attempt was made to create a kind of user-defined type which is not allowed, or an attempt to create table columns or use default constructor with a type on which these are not supported.

Action: Ensure that the type is permitted in this context.


ORA-22877 invalid option specified for a HASH partition or subpartition of a LOB column

Cause: One or more invalid options were encountered while parsing the physical attributes of a LOB partition or subpartition. Either the LOB partition is in a table partitioned using the HASH method, or the LOB subpartition is in a table subpartitioned using the HASH method. TABLESPACE is the only valid option for a HASH partition or subpartition.

Action: Remove the invalid option(s).


ORA-22878 duplicate LOB partition or subpartition specified

Cause: An attempt was made was made to specify a partition or subpartition that has already been specified for the LOB column.

Action: Remove the duplicate specification.


ORA-22879 cannot use the LOB INDEX clause for partitioned tables

Cause: An attempt was made to specify a LOB INDEX clause in a CREATE TABLE or ALTER TABLE statement for a partitioned table.

Action: Remove the LOB INDEX clause.


ORA-22880 invalid REF

Cause: An invalid REF was accessed.

Action: Modify the REF and retry the operation.


ORA-22881 dangling REF

Cause: The object corresponding to the REF that was accessed does not exist.

Action: Ensure that the REF value is pointing to an existing object.


ORA-22882 object creation failed

Cause: The object cannot be created in the database.

Action: Check to see if the object table exists and the object size is not too big. Then retry the operation.


ORA-22883 object deletion failed

Cause: The object could not be deleted from the database.

Action: Check to see if the object table exists. Then retry the operation.


ORA-22884 object modification failed

Cause: The object could not be modified in the database.

Action: Check to see if the object table exists and the object size is not too big. Then retry the operation.


ORA-22885 cannot get REF to a non-persistent object

Cause: An attempt was made to get a REF for something other than an object in an object table. REFs can only be taken for objects in object tables.

Action: Rewrite the query to obtain REF values from object tables.


ORA-22886 scoped table "string" in schema "string" is not an object table

Cause: The scoped table specified for a REF column is not an object table.

Action: Ensure that the scoped table is an object table. Then retry the operation.


ORA-22887 type of REF column is not the same as that of its scoped table

Cause: The type specified for the REF column and the type specified for the scope table are different.

Action: Ensure that the types of a REF column and its scoped table are the same.


ORA-22888 duplicate SCOPE clauses for a REF column

Cause: Multiple SCOPE clauses were specified for a single REF column.

Action: Remove the duplicate SCOPE clauses and retry the operation.


ORA-22889 REF value does not point to scoped table

Cause: An attempt was made to insert a REF value that does not point to the scoped table.

Action: Ensure that the REF values point to the scoped table.


ORA-22890 cannot specify name for REF column constraint

Cause: An attempt was made to specify a constraint name for a constraint on a REF column.

Action: Remove the constraint name and retry the operation.


ORA-22891 cannot have multiple columns in REF constraint

Cause: An attempt was made to specify multiple columns in a single REF constraint.

Action: Specify separate constraints for each column and retry the operation.


ORA-22892 scoped table "string" does not exist in schema "string"

Cause: The scoped table specified for a REF column does not exist.

Action: Ensure that the scoped table exists and retry the operation.


ORA-22893 constraint can be specified only for REF columns

Cause: The constraint specified does not apply to non-REF columns.

Action: Remove the constraint and retry the operation.


ORA-22894 cannot add constraint on existing unscoped REF columns of non-empty tables

Cause: An attempt was made to add a constraint to existing unscoped REF columns of a table which contains one or more rows.

Action: Remove the constraint specification or add the constraint after emptying the table.


ORA-22895 referenced table "string" in schema "string" is not an object table

Cause: The referenced table specified for a REF column is not an object table.

Action: Ensure that the referenced table is an object table. Then retry the operation.


ORA-22896 cannot have both scope and referential constraint on REF column "string"

Cause: REF column has both a referential and a scope constraint. A referential constraint implies a scope constraint.

Action: Remove either the referential or scope constraint and then retry the operation.


ORA-22897 no scope clause specified for user-defined REF column "string"

Cause: User-defined REF column does not have a scope constraint.

Action: Specify a scope constraint for the user-defined REF column and retry the operation.


ORA-22898 existing scope clause on "string" points to a table other than the one mentioned in the referential constraint

Cause: Table mentioned in the referential integrity constraint is different from the scope table of the REF column.

Action: Specify the scope table of the REF column in the referential integrity constraint and then retry the operation.


ORA-22899 cannot specify both scope and rowid constraint on ref column

Cause: An attempt was made to specify both a scope and a ROWID constraint on a REF column.

Action: Remove either the ROWID or scope constraint and then retry the operation.


ORA-22900 the SELECT list item of THE subquery is not a collection type

Cause: The THE subquery must SELECT a nested table or VARRAY item.

Action: Change the subquery to SELECT a nested table or VARRAY item.


ORA-22901 cannot compare nested table or VARRAY or LOB attributes of an object type

Cause: Comparison of nested table or VARRAY or LOB attributes of an object type was attempted in the absence of a MAP or ORDER method.

Action: Define a MAP or ORDER method for the object type.


ORA-22902 CURSOR expression not allowed

Cause: CURSOR on a subquery is allowed only in the top-level SELECT list of a query.

Action: Remove the CURSOR expression and retry the operation.


ORA-22903 MULTISET expression not allowed

Cause: MULTISET expressions are allowed only inside a CAST to a nested table or VARRAY type.

Action: put the MULTISET (subquery) expression inside a CAST to a nested table or VARRAY type.


ORA-22904 invalid reference to a nested table column

Cause: An invalid reference was made to a nested table column.

Action: Remove invalid reference to the nested table column and retry the operation.


ORA-22905 cannot access rows from a non-nested table item

Cause: An attempt was made to access rows of an item whose type is not known at parse time or that is not of a nested table type.

Action: Use CAST to cast the item to a nested table type.


ORA-22906 cannot perform DML on expression or on nested table view column

Cause: An attempt was made to perform a DML on an expression or on a nested table view column where a nested table column of a base table is expected.

Action: Only nested table column of a base table is allowed in the DML.


ORA-22907 invalid CAST to a type that is not a nested table or VARRAY

Cause: An attempt was made to CAST to a type that is not a nested table or VARRAY.

Action: Respecify CAST to a nested table or VARRAY type.


ORA-22908 reference to NULL table value

Cause: The evaluation of the THE subquery or nested table column resulted in a NULL value implying a NULL table instance. The THE subquery or nested table column must identify a single non-NULL table instance.

Action: Ensure that the evaluation of the THE subquery or nested table column results in a single non-null table instance. If happening in the context of an INSERT statement where the THE subquery is the target of an insert, then ensure that an empty nested table instance is created by updating the nested table column of the parent table's row specifying an empty nested table constructor.


ORA-22909 exceeded maximum VARRAY limit

Cause: The total number of elements used in VARRAY construction exceeds the specified VARRAY limit.

Action: Do not use the more than the specified limit of elements for VARRAY construction.


ORA-22910 cannot specify schema name for nested tables

Cause: Table name was qualified with schema name in the nested table column's (or attribute's) storage clause.

Action: Respecify the nested table item's storage clause without the schema name qualification. By default, the storage table for the nested table item is created in the same schema as the containing table.


ORA-22911 duplicate storage specification for the nested table item

Cause: The storage clause is specified more than once for the NESTED TABLE column.

Action: Remove the duplicate storage specification.


ORA-22912 specified column or attribute is not a nested table type

Cause: The storage clause is specified for a column or attribute that is not a nested table column or attribute.

Action: Specify a valid nested table column or attribute.


ORA-22913 must specify table name for nested table column or attribute

Cause: The storage clause is not specified for a nested table column or attribute.

Action: Specify the nested table storage clause for the nested table column or attribute.


ORA-22914 DROP of nested tables not supported

Cause: An attempt was made to DROP a nested table.

Action: Nested tables cannot be explicitly dropped. nested tables can only be dropped by dropping their containing parent table.


ORA-22915 cannot ALTER nested tables to ADD/MODIFY columns

Cause: An attempt was made to ADD or MODIFY columns of a nested table. Columns cannot be added or modified for a nested table.

Action: Instead, alter the parent table's nested table column to cause any such change.


ORA-22916 cannot do an exact FETCH on a query with Nested cursors

Cause: Exact FETCH on a query was specified which is not allowed if the query returns any cursors.

Action: Do not use an exact FETCH.


ORA-22917 use VARRAY to define the storage clause for this column or attribute

Cause: Not using VARRAY to define storage clause for VARRAY column or attribute.

Action: Specify VARRAY before the column storage clause and resubmit the statement.


ORA-22918 specified column or attribute is not a VARRAY type

Cause: An attempt was made to define a VARRAY storage clause for a column or attribute which is not VARRAY type.

Action: Specify VARRAY storage clause for a VARRAY column or attribute.


ORA-22919 dangling REF error or lock object failed for no wait request

Cause: The error could be one of the following: the object corresponding to the REF does not exist or the object was locked by another user and the lock with nowait request failed.

Action: Ensure that the REF value is pointing to an existing object or issue a lock request without the nowait option.


ORA-22920 row containing the LOB value is not locked

Cause: The row containing the LOB value must be locked before updating the LOB value.

Action: Lock the row containing the LOB value before updating the LOB value.


ORA-22921 length of input buffer is smaller than amount requested

Cause: The buffer length is not big enough to hold the amount of data requested.

Action: Verify that the number of bytes/characters specified in the input amount parameter is not bigger than the number of bytes specified in the input buffer length parameter. Allocate more space for the input buffer if necessary.


ORA-22922 nonexistent LOB value

Cause: The LOB value associated with the input locator does not exist. The information in the locator does not refer to an existing LOB.

Action: Repopulate the locator by issuing a SELECT statement and retry the operation.


ORA-22923 amount of data specified in streaming LOB write is 0

Cause: An attempt was made to write LOB value via the streaming mechanism (that is, unlimited write) but the input amount of data to stream was specified as 0. Thus, the user is trying to write 0 bytes to the LOB value.

Action: Write more than 0 bytes to the LOB value.


ORA-22924 snapshot too old

Cause: The version of the LOB value needed for the consistent read was already overwritten by another writer.

Action: Use a larger version pool.


ORA-22925 operation would exceed maximum size allowed for a LOB value

Cause: An attempt was made to write too much data to the LOB value. LOB size is limited to 4 gigabytes.

Action: Either start writing at a smaller LOB offset or write less data to the LOB value.


ORA-22926 specified trim length is greater than current LOB value's length

Cause: The input length for which to trim the LOB value to is greater than the current length of the LOB value.

Action: May not need to trim the LOB value because it's already smaller than the trim length specified. Or, if trimming the LOB value really is required, use a smaller trim length.


ORA-22927 invalid LOB locator specified

Cause: One of the following:

  1. The LOB locator was never initialized.
  2. The locator is for a BFILE and the routine expects a BLOB/CLOB/NCLOB locator.
  3. The locator is for a BLOB/CLOB/NCLOB and the routine expects a BFILE locator.
  4. An attempt was made to update the LOB in a trigger body -- LOBs in trigger bodies are read only.

Action: For (1), initialize the LOB locator by selecting into the locator variable or by setting the LOB locator to empty. For (2) and (3), pass the correct type of locator into the routine. For (4), remove the trigger body code that updates the LOB value.


ORA-22928 invalid privilege on directories

Cause: An attempt was made to grant or revoke an invalid privilege on a directory.

Action: Only CREATE, DELETE, READ and WRITE privileges can be granted or revoked on directories. Do not grant or revoke other privileges.


ORA-22929 invalid or missing directory name

Cause: The required directory name is invalid or missing.

Action: Specify a valid name.


ORA-22930 directory does not exist

Cause: An attempt was made to access a directory that does not exist.

Action: Make sure the name is correct.


ORA-22931 MOVE of nested table to a different tablespace not supported

Cause: An attempt was made to move a nested table to a different tablespace.

Action: Nested tables always collocate in the same tablespace as the parent. A nested table can be moved to a different tablespace only by moving its containing table to the target tablespace.


ORA-22933 cannot change object with type or table dependents

Cause: An attempt was made to replace, drop, or rename an object with type or table dependents.

Action: Drop depending objects or use FORCE option if available.


ORA-22950 cannot ORDER objects without MAP or ORDER method

Cause: An object type must have a MAP or ORDER method defined for all comparisons other than equality and inequality comparisons.

Action: Define a MAP or ORDER method for the object type.


ORA-22951 NULL returned by ORDER method

Cause: ORDER method used to compare two object values returned NULL which is not allowed.

Action: Redefine the ORDER method to not return a NULL.


ORA-22970 name does not correspond to an object view

Cause: Either the expression is not a view name or the name specified does not correspond to an object view.

Action: Replace the expression with the name of an object view.


ORA-22971 invalid datatype for PRIMARY KEY-based object identifier

Cause: When creating an object view, the datatype of an expression in the WITH OBJECT OID clause is not allowed for PRIMARY KEY-based OID.

Action: Replace the expression with one of appropriate scalar datatype.


ORA-22972 NULL value not allowed in PRIMARY KEY-based object identifier

Cause: A value constituting the PRIMARY KEY-based object identifier is NULL.

Action: Ensure the expressions in MAKE_REF system function or attributes in the WITH OBJECT OID clause of an object view do not evaluate to NULL.


ORA-22973 size of object identifier exceeds maximum size allowed

Cause: Size of the PRIMARY KEY-based object identifier of an object view exceeded the maximum size of 1000 bytes.

Action: Specify fewer or smaller PRIMARY KEY attributes in the WITH object OID clause when creating the object view.


ORA-22974 missing WITH OBJECT OID clause

Cause: WITH OBJECT OID clause was not specified when creating an object view.

Action: Specify the WITH OBJECT OID clause.


ORA-22975 cannot create a PRIMARY KEY-based REF to this object view

Cause: The object view specified in the MAKE_REF function does not have a PRIMARY KEY-based object identifier. A PRIMARY KEY-based REF cannot be created for such a view.

Action: Specify an object view that has a PRIMARY KEY-based object identifier in the MAKE_REF function.


ORA-22976 incorrect number of arguments to MAKE_REF

Cause: Number of arguments for MAKE_REF is different from the number of PRIMARY KEY attributes of the object view.

Action: Specify all the necessary arguments for MAKE_REF.


ORA-22977 missing or invalid attribute

Cause: Either the attribute name is missing in the WITH OBJECT OID clause or it is invalid.

Action: Specify a valid attribute of the object type of the object view.


ORA-22978 only simple attribute name is allowed in the WITH OBJECT OID clause

Cause: An attempt was made to specify a Nested attribute in the WITH OBJECT OID clause.

Action: Specify a top-level attribute of the object type of the object view.


ORA-22979 cannot INSERT object view REF or user-defined REF

Cause: An attempt was made to insert an object view REF or user-defined REF in a REF column created to store system generated REF values.

Action: Make sure the REF to be inserted is not from an object view or from a user-defined REF column


ORA-22980 must specify a set of attributes for the WITH OBJECT OID clause

Cause: The WITH OBJECT OID DEFAULT clause was used, but the underlying view or table does not have a OID.

Action: Specify attributes for the WITH OBJECT OID clause to create a primary key based object identifier for the object view.


ORA-22981 must specify a table/view having system generated OID

Cause: The super-view is based on a table/view having the system generated OID and the sub-view must also be based on a similar table/view.

Action: Specify a table/view having the system generated OID and retry the operation.


ORA-22982 cannot create sub-view under this view

Cause: The view derives its OID from a table/view having primary key based OID and sub-views cannot be created under such views.

Action: Specify a view having the system generated OID or a view created with the specification of attributes in the WITH OBJECT ID clause and retry the operation.


ORA-22983 not a user-defined REF

Cause: Attempt to use a system generated REF value where a user-defined REF value should be used.

Action: Make sure the REF value is user-defined.


ORA-22984 view query cannot contain references to a super view

Cause: The query defining the view contains references to a super-view of the view being created.

Action: Make sure that the view query does not reference a super-view.


ORA-22990 LOB locators cannot span transactions

Cause: A LOB locator selected in one transaction cannot be used in a different transaction.

Action: Reselect the LOB locator and retry the operation.


ORA-22991 insufficient space allocated for argument string

Cause: The data to be returned in the argument is greater than the amount of space allocated for the argument.

Action: Allocate more space for the argument.


ORA-22992 cannot use LOB locators selected from remote tables

Cause: A remote LOB column cannot be referenced.

Action: Remove references to LOBs in remote tables.


ORA-22993 specified input amount is greater than actual source amount

Cause:

  1. For LOB write, the amount of data received is different from the amount that was indicated would be sent.
  2. For LOB copy and load from file, the end of the source LOB/FILE value was reached before the specified input amount was copied/loaded.

Action: (1) will happen when using OCI's piecewise mechanism with polling or with a callback function. Modify the code either to send the amount specified or to pass 0 as the input amount so that any amount of data can be sent. (2) will happen if the specified input amount is too large for the source LOB/FILE given the starting source offset. Either decrease the starting source offset, or decrease the amount to copy/load.


ORA-22994 source offset is beyond the end of the source LOB

Cause: The source offset for a LOB COPY or LOB LOADFROMFILE is beyond the end of the source LOB.

Action: Check the length of the LOB and then adjust the source offset.


ORA-22995 TABLESPACE DEFAULT option is invalid in this context

Cause: TABLESPACE DEFAULT option can be specified for LOB columns only in the following contexts:

  • at the table level for a partitioned table
  • at the partition level for a composite partition

An attempt was made to use the TABLESPACE DEFAULT option in a different context.

Action: Remove the TABLESPACE DEFAULT option.


ORA-22996 NEXT extent size is smaller than LOB chunksize

Cause: An attempt was made to create or alter a LOB segment so that its NEXT extent size was less than the LOB chunk size.

Action: Specify a NEXT extent size that is greater than or equal to the LOB chunk size.


ORA-22997 VARRAY | OPAQUE stored as LOB is not specified at the table level

Cause: An attempt was made to specify a VARRAY|OPAQUE column to be stored as LOB at the partition/subpartition/template level. However, the VARRAY|OPAQUE column was not specified to be stored as LOB at the table level when the table was created.

Action: Specify the VARRAY | OPAQUE column to be stored as LOB at the table level when the table is created. Alternatively, do not specify the VARRAY | OPAQUE column to be stored as LOB at the partition/subpartition/template level if it is not specified at the table level when the table is created.


ORA-22998 CLOB or NCLOB in multibyte character set not supported

Cause: A CLOB or NCLOB in a fixed-width or varying-width multibyte character set was passed to a SQL character function which does not support multibyte LOB data.

Action: Use DBMS_LOB functions such as DBMS_LOB.INSTR() and DBMS_LOB.SUBSTR() or use PLSQL DBMS_LOB.READ/WRITE to access LOB data.


ORA-23290 This operation may not be combined with any other operation

Cause: An ALTER TABLE RENAME [COLUMN | CONSTRAINT] operation was given in conjunction with another ALTER TABLE Operation. This is not allowed.

Action: Ensure that RENAME COLUMN/RENAME CONSTRAINT is the only operation specified in the ALTER TABLE statement.


ORA-23291 Only base table columns may be renamed

Cause: An attempt was made to rename a column of a non-base table, such as an object table, nested table, or materialized view table. This is not allowed.

Action: No action required.


ORA-23292 The constraint does not exist

Cause: The given constraint name does not exist.

Action: Give an existing constraint's name.


ORA-23293 Cannot rename a column which is part of a join index

Cause: The column participates in a join index.

Action: If you need to rename the column, then you need to drop the join index.


ORA-23300 string

Cause: The stored procedure RAISE_SYSTEM_ERROR was called which causes this error to be generated.

Action: Correct the problem as described in the error message or contact the application administrator or database administrator for more information.


ORA-23301 mixed use of deferred rpc destination modes

Cause: Replication catalog determined deferred RPC destinations were mixed with destination determined by other mechanisms in the same transaction.

Action: Do not mix destination types in the same transaction.


ORA-23302 application raised communication failure during deferred RPC

Cause: An application declared a communication failure during a deferred RPC.

Action: Retry the application when communication is restored.


ORA-23303 application raised generic exception during deferred RPC

Cause: An application declared a generic failure during a deferred RPC.

Action: Determined by the application.


ORA-23304 malformed deferred rpc at arg string of string in call string, in tid string

Cause: A deferred RPC call was issued without the correct number of arguments as determined by the count parameter to DBMS_DEFER.CALL.

Action: Be sure the number of arguments matches the count.


ORA-23305 internal deferred RPC error: string

Cause: An internal error occurred in deferred RPC.

Action: Report the error and other information to support.


ORA-23306 schema string does not exist

Cause: The schema name was null or misspelled, or the schema does not exist locally.

Action: Specify the schema correctly, or create it with CREATE USER.


ORA-23307 replicated schema string already exists

Cause: The given database already replicates the given schema.

Action: Choose a different schema or a different database.


ORA-23308 object string.string does not exist or is invalid

Cause: The given name was null or misspelled, the given type was wrong, the object does not exist as a valid database object, or the object does not exist as a replicated object with the appropriate status.

Action: Ensure the object is valid in the database, is visible to the user, and, if appropriate, is a valid object in ALL_REPOBJECT.


ORA-23309 object string.string of type string exists

Cause: An object in the same name space exists, perhaps with a different type or shape, or the same object has already been registered as an REPOBJECT in another object group.

Action: Remove the offending object with the SQL DROP command, unregister the offending object with DBMS_REPCAT.DROP_MASTER_REPOBJECT(), or reinvoke the request using TRUE for a boolean parameter such as retry or USE_EXISTING_OBJECT.


ORA-23310 object group "string"."string" is not quiesced

Cause: The requested operation requires the object group to be suspended.

Action: Invoke SUSPEND_MASTER_ACTIVITY at the REPGROUP's MASTERDEF, wait until the status has changed to quiesced, and then retry the original request.


ORA-23312 not the masterdef according to string

Cause: The group name is null, the group name is misspelled, the invocation or given database is not the MASTERDEF, or one of the masters does not believe the invocation database is the MASTERDEF.

Action: If the given group name and MASTERDEF were both correct, connect to the MASTERDEF and retry the request, or relocate the MASTERDEF at the (errant) databases using RELOCATE_MASTERDEF.


ORA-23313 object group "string"."string" is not mastered at string

Cause: The group name is null, the group name is misspelled, the invocation database is not a master, or the invocation database does not believe the given database is a master.

Action: If the given group name was correct, connect to a current master and retry the request, make the invocation database a master with ADD_MASTER_DATABASE, or use SWITCH_MVIEW_MASTER if the invocation database is a materialized view site.


ORA-23314 database is not a materialized view site for "string"."string"

Cause: The invocation database is not a snapshot database for the given object group.

Action: Connect to the desired materialized view database and retry the request, or make the invocation database a materialized view site with CREATE_MVIEW_REPSCHEMA or CREATE_MVIEW_REPGROUP.


ORA-23315 repcatlog version or request string is not supported by version string

Cause: Either incompatible REPCAT versions are used, or a REPCATLOG record has been corrupted.

Action: Convert the master to a compatible version of REPCAT or retry the request.


ORA-23316 the masterdef is string

Cause: The requested operation is not permitted on a MASTERDEF site.

Action: Relocate the MASTERDEF to another master and retry the operation.


ORA-23317 a communication failure has occurred

Cause: The remote database is inaccessible.

Action: Ensure the remote database is running, the communications network is functioning, and the appropriate database links are present.


ORA-23318 a ddl failure has occurred

Cause: User-supplied or system-generated DDL did not execute successfully.

Action: Examine DDL, database state, REPCATLOG, and ALL_ERRORS to determine why the failure occurred.


ORA-23319 parameter value string is not appropriate

Cause: The given value of a parameter is either null, misspelled, or not supported.

Action: Refer to the documentation and use parameter values that are appropriate for the given situation.


ORA-23320 the request failed because of values string and string

Cause: A missing DDL record for a REPCATLOG record, or inconsistency in REPCAT views.

Action: Retry the request, or make the views consistent.


ORA-23321 Pipename may not be null

Cause: You called DBMS_PIPE with a null pipe name.

Action: Find out the name of the pipe and call function with non-null pipe name.


ORA-23322 Privilege error accessing pipe

Cause: You either tried to create a pipe that already existed and belonged to someone else, or remove a pipe that you were not authorized to use, or put a message into a pipe that you were not authorized for, or get a message from a pipe that you were not authorized for.

Action: You may have to use a different pipe name.


ORA-23323 parameter length exceeds deferred RPC limits

Cause: A deferred RPC parameter was longer than the deferred RPC limits of 4000 bytes for char/varchar2 parameters and 2000 bytes for raw parameters.

Action: Use smaller parameters.


ORA-23324 error string, while creating deferror entry at "string" with error string

Cause: The given error was encountered while attempting to create a DEFERROR entry for the give error code and the give database.

Action: Correct the cause of the given error.


ORA-23325 parameter type is not string

Cause: A conflict resolution priority function was given a type different than the type assigned to the priority group; or the priority group has no type assigned or a function; or DBMS_DEFER_SYS_QUERY was called to retrieve a deferred RPC parameter from the deferred RPC queue, but the type of the parameter does not match the return type of the function.

Action: Use the function corresponding to the parameter type.


ORA-23326 object group "string"."string" is quiesced

Cause: Either SUSPEND_MASTER_ACTIVITY has been called before the object group has resumed normal operation or a (deferred) RPC operation was attempted while the object group was quiesced.

Action: If SUSPEND_MASTER_ACTIVITY has been called and a RESUME_MASTER_ACTIVITY request is pending, wait until it completes, and then reinvoke SUSPEND_MASTER_ACTIVITY. Otherwise, resume database activity with the RESUME_MASTER_ACTIVITY call.


ORA-23327 imported deferred rpc data does not match string of importing db

Cause: Deferred RPC queues were imported from a database with a different global name or operating system than importing database.

Action: Deferred RPC data should only be imported into a database with the same global name and hardware and operating system.


ORA-23328 mview base table "string"."string" differs from master table "string"."string"

Cause: When creating a materialized view through REPCAT, the materialized view base table name did not match a replicated table name at the master.

Action: Change the materialized view DDL to use the same base table as the replicated table name at the master.


ORA-23329 successful user-provided ddl but no materialized view "string"."string"

Cause: The DDL provided by the user to create a materialized view was executed without error, but materialized view does not exist.

Action: Manually back-out the DDL, and reregister with matching DDL and materialized view.


ORA-23330 column group string already exists

Cause: The column group was already registered in the object group.

Action: Use a column group name not yet registered in the replicated object group.


ORA-23331 column group string does not exist

Cause: The given column group is either null, misspelled or not registered.

Action: Use a registered column group.


ORA-23332 group string is in use; cannot drop

Cause: The given column group or priority group is being used to resolve conflicts.

Action: Call DBMS_REPCAT procedures DROP_UPDATE_RESOLUTION, DROP_DELETE_RESOLUTION, DROP_UNIQUE_RESOLUTION so that the column group or priority group is no longer in use before dropping.


ORA-23333 column string is already part of a column group

Cause: An attempt was made to add a column to a column group when the column was already a member of a column group.

Action: Drop the column from its existing column group before trying to add it to another.


ORA-23334 column string does not exist in table or column group

Cause: The given column is either null, misspelled or is not part of the given table or column group.

Action: Use a column that is a member of the table or column group.


ORA-23335 priority group string already exists

Cause: The priority group was already registered in the object group.

Action: Use a column group name not yet registered in the object group.


ORA-23336 priority group string does not exist

Cause: The priority group was already registered in the object group.

Action: Use a priority group name not yet registered in the object group.


ORA-23337 priority or value not in priority group string

Cause: The specified value or priority has not been registered as part of the priority group.

Action: Either specify a different value or priority that is already part of the priority group, or add the value to the priority group.


ORA-23338 priority or value already in priority group string

Cause: The specified value or priority has already been registered as part of the priority group.

Action: Either specify a different value or priority that not already part of the priority group, or drop the value to the priority group.


ORA-23339 duplicate conflict resolution information

Cause: The specified combination of column group, sequence, conflict type and/or parameter table name, parameter column name, and parameter sequence number has already been registered.

Action: Verify that additional conflict resolution information needs to be added and provide a new sequence number. If modifying existing information, the existing information must be dropped first.


ORA-23340 incorrect resolution method string

Cause: User function is specified when conflict resolution method was not "USER FUNCTION" or specified resolution method is not one of the predefined methods.

Action: If user function is specified when conflict resolution method was not "USER FUNCTION", either reregister function with method as "USER FUNCTION" or specify a NULL user function. Otherwise, specify one of the documented supported conflict resolution methods.


ORA-23341 user function required

Cause: A NULL user function was specified for the "USER FUNCTION" method.

Action: Provide user function name (for example, "schema"."package"."function") that conforms to the documented user function specifications or specify one of the documented supported conflict resolution methods.


ORA-23342 invalid parameter column string

Cause: The parameter column name is null or misspelled, the invocation database is not a master, or is of the wrong type for the specified conflict resolution method.

Action: Specify a parameter column from the specified column group that has a correct type for the conflict resolution method.


ORA-23343 no match for specified conflict resolution information

Cause: The specified combination of column group, sequence, conflict type has not been registered (for example, for adding a comment).

Action: Specify a combination of column group, sequence, conflict type has been registered.


ORA-23344 constraint (string.string) does not exist

Cause: A null, misspelled or non-existent constraint was specified when registering a uniqueness conflict.

Action: Register a named constraint for the specified table.


ORA-23345 table "string"."string" not registered to collect statistics

Cause: A procedure that deals with conflict resolution statistics-gathering was called for a table that was not registered to collect statistics.

Action: Call DBMS_REPCAT.REGISTER_STATISTICS to register the table.


ORA-23346 primary key or object ID is undefined for table or materialized view string

Cause: An attempt was made to generate replication support for a table or materialized view without a primary key (as defined by a constraint or DBMS_REPCAT.SET_COLUMNS) or an object ID.

Action: For a table, add a primary key constraint or define a primary key using DBMS_REPCAT.SET_COLUMNS or use object tables. For a ROWID materialized view, set min_communication to false or use primary key or object ID materialized views.


ORA-23347 datatype string for column string table string not supported

Cause: The table has a column whose datatype is not supported by REPCAT.

Action: Remove the column from the table, or alter the column to have one of the supported datatypes.


ORA-23348 cannot replicate procedure string; only IN parameters supported

Cause: An attempt was made to generate replication support for a package that has a procedure with OUT or IN OUT parameters.

Action: Remove the procedure from the package, or remove the OUT or IN OUT parameters from the procedure.


ORA-23349 cannot generate replication support for functions

Cause: An attempt was made to generate replication support for a package that has a public function, or for a standalone function.

Action: Remove the public function from the package, or alter the function to be a procedure.


ORA-23350 maximum number of recursive calls exceeded

Cause: This usually occurs when trying to resolve conflicts in a table while concurrent updates to the same row create more conflicts.

Action: Re-execute the deferred transaction from DefError using DBMS_DEFER_SYS.EXECUTE_ERROR.


ORA-23351 parameter datatype string for procedure string not supported

Cause: The procedure has a parameter whose datatype is not supported by REPCAT.

Action: Remove the parameter from the procedure, or alter the parameter to have one of the supported datatypes.


ORA-23352 duplicate destination for deferred transaction

Cause: A duplicate destination was specified for a deferred transaction either in a DBMS_DEFER.CALL call or an earlier DBMS_DEFER.TRANSACTION call or a dbms_defer_sys.add_default_dest call.

Action: Remove the duplicate entry.


ORA-23353 deferred RPC queue has entries for object group "string"."string"

Cause: The requested action cannot be performed until the queue is empty for the given object group.

Action: Use DBMS_DEFER_SYS.EXECUTE or DBMS_DEFER_SYS.DELETE_TRAN to empty the queue.


ORA-23354 deferred RPC execution disabled for "string" with "string"

Cause: Deferred RPC cannot be executed at the destination with the specified catchup value because their propagation has been disabled.

Action: Enable deferred RPC execution with the DBMS_DEFER_SYS.SET_DISABLED call.


ORA-23355 object string.string does not exist or is invalid at master site

Cause: The given name was null or misspelled, the given type was wrong, the object does not exist as a valid database object at the master site, or the object does not exist as a replicated object with the appropriate status.

Action: Ensure the object is valid in the master database, and is visible to the user, and, if appropriate, is a valid object in ALL_REPOBJECT.


ORA-23356 masterdef recognizes a master which does not recognize the masterdef

Cause: Possibly DROP_MASTER_REPGROUP was run at a master site but REMOVE_MASTER_DATABASES was not run at master definition site for that master.

Action: Run REMOVE_MASTER_DATABASES from master definition site to remove the appropriate master (see associated error messages).


ORA-23357 the propagator does not exist

Cause: The propagator does not exist.

Action: Register a new propagator.


ORA-23358 invalid remote user

Cause: The local user does not match the remote user connected via a database link.

Action: Drop and re-create the identified database link with the connect-to user identical to the owner of the database link.


ORA-23359 error on creating a ddl record for a repcatlog record

Cause: The USERID in the REPCATLOG record does not match the USERID of the connected user.

Action: Retry the operation with a different user.


ORA-23360 only one materialized view for master table "string" can be created

Cause: An attempt was made to create more than one materialized view on a given master table in the same rep group.

Action: Create these other materialized views in a different rep group at another site.


ORA-23361 materialized view "string" does not exist at master site

Cause: The materialized view does not exist at the master site for offline instantiation of the materialized view.

Action: The correct procedure is to create the materialized view in a different schema at the master site, and then follow the instructions for offline instantiation of materialized views.


ORA-23362 invalid user

Cause: The given user does not exist.

Action: Enter the name of a valid user and retry the operation.


ORA-23363 mismatch of mview base table "string" at master and mview site

Cause: The name of the base table of the materialized view at the master site is different from the base table at the materialized view site. This error may arise during offline instantiation of materialized views.

Action: Retry offline instantiation with a materialized view name less than 24 bytes.


ORA-23364 Feature not enabled: Advanced replication

Cause: The Advanced Replication feature is not enabled at this site. Updatable materialized views, deferred RPCs, and other replication features are, therefore, unavailable.

Action: Do not attempt to use this feature. Contact Oracle Support Services if the Advanced Replication feature has been purchased but not enabled.


ORA-23365 site string does not exist

Cause: site specified in argument REFERENCE_SITE or argument COMPARISON_SITE in call to DIFFERENCES() routine or RECTIFY() routine does not name an existing site.

Action: Make sure that database sites specified really do exist, and rerun the routine.


ORA-23366 integer value string is less than 1

Cause: Value of argument MAX_MISSING to routine DIFFERENCES() cannot be less than 1. Value of argument COMMIT_ROWS to routines DIFFERENCES() and RECTIFY() cannot be less than 1.

Action: Choose an integer value for those arguments to be 1 or greater.


ORA-23367 table string is missing the primary key

Cause: Table specified in argument "oname1" or "oname2" in call to "differences()" routine does not contain either a primary key or a virtual primary key (defined through DBMS_REPCAT package under symmetric replication).

Action: Make sure the tables specified have a primary key defined.


ORA-23368 name string cannot be null or the empty string

Cause: Argument SNAME1, SNAME2, ONAME1, ONAME2, MISSING_ROWS_SNAME, MISSING_ROWS_ONAME1, MISSING_ROWS_ONAME2 to DIFFERENCES() or RECTIFY() cannot be NULL or '' (empty string).

Action: Change argument to non-null or non-empty string.


ORA-23369 value of "string" argument cannot be null

Cause: Argument MAX_MISSING to DIFFERENCES() routine cannot be NULL.

Action: Legal values for MAX_MISSING are integers 1 or greater.


ORA-23370 table string and table string are not shape equivalent (string)

Cause: The tables specified are not shape equivalent, which means intuitively that the number of columns, the names, their datatypes and lengths are not the same. Specifically, problem is in the parentheses and is one of the following: the number of columns are not equal, datatypes of columns with same name in different tables are different, lengths of varchar2 and char columns are not equal, precision and scale of number datatypes are not equal.

Action: Make sure the two tables being compared have the same number of columns, same column names, and same datatypes.


ORA-23371 column string unknown in table string

Cause: Some column in ARRAY_COLUMNS argument (or COLUMN_LIST argument) to DIFFERENCES() routine does not correspond to a column in the specified table.

Action: Make sure that all the columns in either ARRAY_COLUMNS or COLUMN_LIST are present in the specified table.


ORA-23372 type string in table string is unsupported

Cause: Certain types in the table comparison utility are not supported.

Action: Make sure that the types of columns in the tables to be compared are the ones supported by symmetric replication.


ORA-23373 object group "string"."string" does not exist

Cause: The group name was null or misspelled, or the group does not exist locally.

Action: Specify the group correctly, or create it with DBMS_REPCAT.CREATE_MASTER_REPGROUP().


ORA-23374 object group "string"."string" already exists

Cause: The given database already replicates the given object group. A materialized view repgroup cannot be created at a given site where a master repgroup with the same name already exists.

Action: Choose a different group or a different database.


ORA-23375 feature is incompatible with database version at string

Cause: A feature not compatible with the specified database was used.

Action: Set or raise the value of the COMPATIBLE initialization parameter to match the necessary compatibility level.


ORA-23376 node string is not compatible with replication version "string"

Cause: A feature not compatible with the remote database was used.

Action: Upgrade the remote database and retry the operation.


ORA-23377 bad name string for missing_rows_oname1 argument

Cause: An attempt was made to use the name of the reference site table as the name of the missing_rows_oname1 argument.

Action: Provide a separately created table with a different name for MISSING_ROWS_ONAME1 argument. The separately created table will contain the differences between the tables being compared.


ORA-23378 connection qualifier "string" is not valid for object group "string"."string"

Cause: The connection qualifier used in the database link for the specified object group does not match the qualifier specified for the group in CREATE_MASTER_REPGROUP.

Action: Use or create a database link which contains the correct connection qualifier.


ORA-23379 connection qualifier "string" is too long

Cause: The maximum length of a database link, including the connection qualifier, is 128 bytes.

Action: Use a shorter connection qualifier, or shorten the name of the database link


ORA-23380 propagation mode "string" is not valid

Cause: The specified propagation is misspelled, or is not supported. For materialized view sites, all materialized view object groups at the same materialized view site with the same master object group must all have the same propagation method.

Action: Refer to Oracle9i Replication for valid propagation modes. For materialized view sites, also ensure that the propagation modes of all materialized view object groups with the same master object group are the same.


ORA-23381 generated object for base object string.string@string does not exist

Cause: The system generated object(s) for the specified base object do not exist at the specified site. The current operation requires the base object to have generated replication support.

Action: Ensure that the generated replication object(s) for the base object exist and are valid at the specified site. If the generated object(s) do not exist, then the procedure DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT() needs to be called from the master definition site for the base object. missing_rows_oname1 argument. The separately created table will contain the differences between the tables being compared.


ORA-23382 materialized view repgroup "string"."string" is not registered at site string

Cause: The materialized view REPGROUP is not currently registered at the master and so cannot be unregistered.

Action: No action required.


ORA-23383 registration for materialized view repgroup "string"."string" failed at site string

Cause: Insertion into local REPSCHEMA table failed.

Action: No action required.


ORA-23384 replication parallel push string argument out of range

Cause: Specified numeric argument to DBMS_DEFER_SYS.PUSH is invalid.

Action: Fix the argument value and try again.


ORA-23385 replication parallel push string argument not valid

Cause: Specified string argument to DBMS_DEFER_SYS.PUSH is invalid.

Action: Fix the argument value and try again.


ORA-23386 replication parallel push cannot create slave processes

Cause: An error was occurred while creating slave processes for parallel push.

Action: If the PARALLEL_MAX_SERVERS initialization parameter is zero, reconfigure the parameter to be greater than zero. Otherwise, contact Oracle Support Services.


ORA-23387 replication parallel push dequeue error

Cause: An attempt to dequeue a deferred transaction failed while trying to assign a new queue batch number.

Action: Contact Oracle Support Services.


ORA-23388 replication parallel push watermark error

Cause: An error occurred during parallel push while trying to update the high-water-mark information in SYSTEM.DEF$_DESTINATION.

Action: Contact Oracle Support Services.


ORA-23389 obsolete procedure; drop objects and recreate using new master

Cause: DBMS_REPCAT.SWITCH_MVIEW_MASTER is no longer supported.

Action: Drop the objects in the object group and re-create them using the new master.


ORA-23392 could not find materialized view to be associated with "string"."string"

Cause: Could not find materialized view associated with a trigger or index that is being pulled from the master site.

Action: Ensure that materialized view, master, and master index or trigger are registered as replicated objects.


ORA-23393 the user is already the propagator

Cause: The given user is already the current propagator.

Action: No action required.


ORA-23394 duplicate propagator

Cause: More than one valid propagator exists.

Action: Unregister any duplicate propagator.


ORA-23395 object "string"."string" of type "string" does not exist or is invalid

Cause: The given name was null or misspelled, the given type was wrong, the object does not exist as a valid database object, or the object does not exist as a replicated object with the appropriate status.

Action: Ensure the object is valid in the database, is visible to the user, and, if appropriate, is a valid object in ALL_REPOBJECT.


ORA-23396 database link "string" does not exist or has not been scheduled

Cause: The database link does not exist in the schema of the replication propagator or has not been scheduled.

Action: Ensure that the database link exists in the database, is accessible and is scheduled for execution.


ORA-23397 global name "string" does not match database link name "string"

Cause: The database link name at the local node does not match the global name of the database that the link accesses.

Action: Ensure that global names is set to true and the link name matches the global name.


ORA-23398 user name "string" at database link "string" does not match local user name "string"

Cause: The user name of the replication administration user at the local node and the user name at the node corresponding to the database link are not the same. Symmetric replication expects the two users to be the same.

Action: Ensure that the user ID of the replication administration user at the local node and the user ID at the node corresponding to the database link are the same.


ORA-23399 generation of replication support for "string"."string" is not complete

Cause: Replication support for the specified object has not been generated or the generation process is not yet complete.

Action: Ensure that replication support has been generated for the object. Use DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT() to generate replication support for the object.


ORA-23400 invalid materialized view name "string"

Cause: A null, misspelled, or badly formed materialized view name was given to DBMS_MVIEW.REFRESH.

Action: Provide a valid materialized view name to DBMS_MVIEW.REFRESH.


ORA-23401 materialized view "string"."string" does not exist

Cause: A materialized view name was given to DBMS_MVIEW.REFRESH that is not in SYS.SNAP$ or its associated views.

Action: Provide a materialized view name that is in SYS.SNAP$, ALL_MVIEWS or USER_MVIEWS.


ORA-23402 refresh was aborted because of conflicts caused by deferred txns

Cause: There are outstanding conflicts logged in the DefError table at the materialized view's master.

Action: Resolve the conflicts in the master DefError table and refresh again after the table is empty. Alternatively, refresh with REFRESH_AFTER_ERRORS set to TRUE, which will proceed with the refresh even if there are conflicts in the master's DefError table. Proceeding despite conflicts can result with an updatable materialized view's changes appearing to be temporarily lost (until a refresh succeeds after the conflicts are resolved).


ORA-23403 refresh group "string"."string" already exists

Cause: Making a new refresh group when there is already a group of the same name in SYS.RGROUP$.

Action: Choose a different refresh group name.


ORA-23404 refresh group "string"."string" does not exist

Cause: A refresh group name was given that is not in SYS.RGROUP$.

Action: Provide a refresh group name that is in SYS.RGROUP$ or DBS_RGROUP.


ORA-23405 refresh group number string does not exist

Cause: A refresh group number was given that is not in SYS.RGROUP$.

Action: Provide a refresh group number that is in SYS.RGROUP$ or DBS_RGROUP.


ORA-23406 insufficient privileges on user "string"

Cause: The caller is not the owner of the materialized view and does not have ALTER ANY MATERIALIZED VIEW privileges.

Action: Perform the operation as the owner of the materialized view or as a user with ALTER ANY MATERIALIZED VIEW privileges.


ORA-23407 object name string must be shaped like "schema"."object" or "object"

Cause: The object name (for example, the rollback segment, the materialized view name, the refresh group) was incorrectly specified.

Action: Retry the operation with the object name properly specified (like "schema"."object" or "object").


ORA-23408 this replication operation is not supported in a mixed configuration

Cause: Operation is not supported if the object group is replicated at a pre-V8 node.

Action: Ensure that all nodes of the replicated object group are V8.


ORA-23409 could not find an unused refresh group number

Cause: 1000 consecutive refresh group numbers, as defined by the RGROUPSEQ number, were already used by rows in SYS.RGROUP$.

Action: Alter the sequence number to be within a legal unused range and destroy unneeded refresh groups.


ORA-23410 materialized view "string"."string" is already in a refresh group

Cause: A materialized view of the same name is already in a refresh group.

Action: Subtract the materialized view from the current refresh group and add it to its new refresh group, or combine the two refresh groups into a single refresh group.


ORA-23411 materialized view "string"."string" is not in refresh group "string"."string"

Cause: The specified materialized view is not in the specified refresh group.

Action: Try again with the proper materialized view and refresh group names.


ORA-23412 master table's primary key columns have changed

Cause: The master table's primary key constraint was modified after the primary key materialized view was created.

Action: Drop and re-create the primary key materialized view.


ORA-23413 table "string"."string" does not have a materialized view log

Cause: The fast refresh cannot be performed because the master table does not contain a materialized view log.

Action: Use the CREATE MATERIALIZED VIEW LOG command to create a materialized view log on the master table.


ORA-23414 materialized view log for "string"."string" does not record rowid values

Cause: A ROWID materialized view is being fast refreshed, but the materialized view log does not record ROWID information.

Action: Use the CREATE MATERIALIZED VIEW LOG...ADD ROWID command to begin recording ROWID information in the materialized view log.


ORA-23415 materialized view log for "string"."string" does not record the primary key

Cause: A primary key materialized view is being fast refreshed, but the materialized view log does not record primary key information.

Action: Use the CREATE MATERIALIZED VIEW LOG...ADD PRIMARY KEY command to begin recording primary key information in the materialized view log.


ORA-23416 table "string"."string" does not contain a primary key constraint

Cause: The master table does not contain a primary key constraint or the primary key constraint has been disabled.

Action: Create a primary key constraint on the master table or enable the existing constraint.


ORA-23417 unknown materialized view type: string

Cause: A fast refresh is being performed on a materialized view of an unknown or unsupported type.

Action: Check ALL_MVIEWS and ensure that the materialized view being refreshed is a valid materialized view.


ORA-23418 cannot unregister the propagator who is currently in use

Cause: The propagator is currently used in propagating replication RPCs.

Action: Try again later when there is no transaction active in propagating replication RPCs.


ORA-23419 regenerate replication support before resuming master activity

Cause: There are tables in the object group that require regeneration of replication support.

Action: Check the GENERATION_STATUS column in the ALL_REPOBJECT view. Regenerate replication support for any table in the object group with a 'NEEDSGEN' status. Resume master activity.


ORA-23420 interval must evaluate to a time in the future

Cause: The parameter INTERVAL evaluates to a time earlier than SYSDATE.

Action: Choose an expression that evaluates to a time later than SYSDATE.


ORA-23421 job number string is not a job in the job queue

Cause: There is no job visible to the caller with the given job number.

Action: Choose the number of a job visible to the caller.


ORA-23422 Oracle Server could not generate an unused job number

Cause: Oracle Server could not generate a job number that was not used to identify another job.

Action: Retry the operation.


ORA-23423 job number string is not positive

Cause: The given job number is less than 1.

Action: Choose a positive integer.


ORA-23424 materialized view "string"."string" at string not registered

Cause: The specified materialized view has not been successfully registered at this site.

Action: Register the materialized view manually at either the master site or the materialized view site.


ORA-23425 invalid materialized view identifier string

Cause: The argument provided to DBMS_MVIEW.PURGE_MVIEW_FROM_LOG is an invalid materialized view identifier or it does not identify an Oracle8 fast refreshable materialized view or the materialized view has already been purged.

Action: If the materialized view is an Oracle8 fast refreshable materialized view then provide PURGE_MVIEW_FROM_LOG with its valid materialized view identifier.


ORA-23426 deferred RPC queue has entries for string

Cause: The requested action cannot be performed until the queue is empty for the given site/database link.

Action: Use DBMS_DEFER_SYS.PUSH, DBMS_DEFER_SYS.PURGE_QUEUE or DBMS_DEFER_SYS.DELETE_TRAN to empty the queue.


ORA-23427 deferred purge queue argument string out of range

Cause: Specified numeric argument to DBMS_DEFER_SYS.PURGE_QUEUE is invalid.

Action: Fix the argument value and try again.


ORA-23428 job associated instance number string is not valid

Cause: A job is associated with an instance that is not running.

Action: Choose a running instance for job affinity, or set force parameter to TRUE.


ORA-23430 argument "string" cannot be NULL or empty string

Cause: The caller has provided an argument whose value cannot be NULL or the empty string.

Action: Check that the varchar2 value provided is not NULL or the empty string, and retry the call.


ORA-23431 wrong state: string

Cause: The routine was executed against a replicated object group that was in the wrong state.

Action: Make sure that the replicated object group is in the state given in the error message.


ORA-23432 master site string already exists

Cause: An attempt was made to instantiate a replicated object group at a master site that was already a part of the object group.

Action: If you were trying to add this site, do nothing because it already exists; otherwise, pick the name of another site, and rerun the routine.


ORA-23433 executing against wrong master site string

Cause: An attempt was made to execute the routine at a site that is different from the site specified in the argument of the routine.

Action: Provide an argument to the routine that correctly indicates the site against which the routine should be executing.


ORA-23434 master site string not known for object group

Cause: The site name given as an argument to a routine was not already known to the replicated object group.

Action: Execute the DBMS_OFFLINE_OG.BEGIN_INSTANTIATION() routine to add a new site to the replicated object group.


ORA-23435 cannot create an updatable ROWID materialized view with LOB columns

Cause: The propagation of LOB data from materialized view sites to the master site requires a primary key on the replicated table. Thus updatable ROWID materialized views that contain LOB columns are not supported.

Action: Create a primary key materialized view instead of a ROWID materialized view. If the materialized view already exists, it can be converted to a primary key materialized view using the ALTER MATERIALIZED VIEW DDL command.


ORA-23436 missing template authorization for user

Cause: The specified template authorization does not exist.

Action: Check the values for user name and refresh template name to ensure a valid row exists in the DBA_REPCAT_USER_AUTHORIZATIONS view.


ORA-23437 template authorization already exists for user

Cause: The specified user already has been authorized to use the specified refresh group template.

Action: Check the values for user name and refresh template name or query the DBA_REPCAT_USER_AUTHORIZATIONS view to ensure that the correct values were passed as parameters.


ORA-23438 missing refresh group template

Cause: The specified refresh group template does not exist.

Action: Verify that the refresh group template does not exist by querying the DBA_REPCAT_REFRESH_TEMPLATES view.


ORA-23439 refresh group template already exists

Cause: The specified refresh group template already exists.

Action: Verify that the refresh group template exists by querying the DBA_REPCAT_REFRESH_TEMPLATES view.


ORA-23440 incorrect public template value

Cause: The public template parameter is not 'Y', 'N' or NULL.

Action: Correct the value of the public template parameter. It must be 'Y','N' or NULL.


ORA-23441 object does not exist for refresh group template

Cause: The specified object does not exist in the refresh group template.

Action: Correct the object name and object type parameters. Check the DBA_REPCAT_TEMPLATE_OBJECTS view to verify the correct name and type of the object.


ORA-23442 object already exists for the refresh group template

Cause: The specified object already exists in the refresh group template.

Action: Change the object name and object type parameters. Query the DBA_REPCAT_REMPLATE_OBJECTS view to verify the correct name and type of the object.


ORA-23443 missing template parameter

Cause: The specified template parameter does not exist.

Action: Correct the template parameter value and execute the procedure again. Use the DBA_REPCAT_TEMPLATE_PARMS view to verify the name of the refresh group template and parameter name.


ORA-23444 duplicate template parameter

Cause: The template parameter already exists for the specified refresh group template.

Action: Correct the template parameter value and execute the procedure again. Use the DBA_REPCAT_TEMPLATE_PARMS view to verify the name of the refresh group template and parameter name.


ORA-23445 missing template site

Cause: The template site specified by the site name, user name and refresh group template name does not exist.

Action: Correct the invalid parameter and execute the procedure again. Use the DBA_REPCAT_TEMPLATE_SITES view to query the existing template sites.


ORA-23446 duplicate template site

Cause: The template site specified by the site name, user name and refresh group template name already exists.

Action: Correct the invalid parameter and execute the procedure again. Use the DBA_REPCAT_TEMPLATE_SITES view to query the existing template sites.


ORA-23447 missing user parameter value

Cause: The user parameter value specified by the user name, parameter name and refresh group template name does not exist.

Action: Correct the invalid parameter and execute the procedure again. Use the DBA_REPCAT_USER_PARM_VALUES view to query the existing user parameters.


ORA-23448 duplicate user parameter value

Cause: The user parameter value specified by the user name, parameter name and refresh group template name already exists.

Action: Correct the invalid parameter and execute the procedure again. Use the DBA_REPCAT_USER_PARM_VALUES view to query the existing user parameters.


ORA-23449 missing user name

Cause: The user specified by the user name parameter does not exist in the database.

Action: Correct an invalid user name or create the user in the master database. Use the DBA_USERS view to select the valid database users.


ORA-23450 flavor already contains object "string"."string"

Cause: The flavor already contains the specified object.

Action: Check that the specified object is correct. To add all columns of a table object, delete the object from the flavor and then add it again.


ORA-23451 flavor string already defined for object group "string"."string"

Cause: The given object group already contains a (possibly unpublished) definition of the specified flavor.

Action: Check the spelling of the flavor name. Check for an unpublished flavor of the desired name.


ORA-23452 flavor string of object group "string"."string" is already published

Cause: The given object group already contains a (published) definition of the specified flavor.

Action: Check the spelling of the flavor name.


ORA-23453 requested operation is not supported on top flavor

Cause: The TOP flavor has a NULL name and may not be directly defined or deleted.

Action: Supply the name of a flavor other than the TOP flavor or use DBMS_REPCAT routines to implicitly change the TOP flavor.


ORA-23454 flavor string not defined for object group "string"."string"

Cause: The given object group does not contain a (published) definition of the specified flavor.

Action: Check the spelling of the flavor name. Ensure the flavor has been defined (and published) for the object group.


ORA-23455 flavor string contains object "string"

Cause: The given flavor contains the object to be dropped.

Action: Purge the flavor or choose another object to drop.


ORA-23456 flavor string does not contain "string"

Cause: The flavor does not contain the given object, column, or attribute.

Action: Either drop the flavor or choose a different object, column, or attribute.


ORA-23457 invalid flavor ID string

Cause: The given flavor ID is invalid.

Action: Make sure this flavor has been instantiated. If the flavor ID is outside the range (-2147483647, 2147483647), contact Oracle Support Services.


ORA-23458 inappropriate flavor string at string

Cause: The given flavor at the given database prevents the operation from succeeding.

Action: Either change the database flavor or choose a different operation.


ORA-23459 flavor string must contain "string"

Cause: The flavor must contain the given object, column, or attribute.

Action: Either choose a different database flavor or ensure the object, column, or attribute is available.


ORA-23460 missing value for column string in resolution method "string" for "string"."string"."string"

Cause: Before resolving conflicts, some values necessary for resolving conflicts are not available; or, after resolving conflicts, some values necessary for retrying the SQL are not available.

Action: define appropriate flavors, provide necessary values through availability vector in USER FLAVOR FUNCTION for conflict resolution.


ORA-23461 fail to resolve conflict for "string"."string"."string"

ORA-23462 flavor string in use at site string

Cause: The given flavor cannot be deleted because it is being used at the given site.

Action: Change the flavor of the site, or unregister it if it is a materialized view site.


ORA-23463 flavor incompatible with object "string"."string"

Cause: An existing flavor includes the specified object with an incompatible type.

Action: Change the type of the object, or delete the flavor if it is not in use.


ORA-23464 flavor lacks column string of "string"."string"

Cause: The flavor includes some columns of an object group but not all the required columns.

Action: Change the flavor definition to include all required columns.


ORA-23465 flavor already includes column string of "string"."string"

Cause: The flavor includes the specified column which is being added.

Action: Check that the specified column is correct.


ORA-23466 flavor requires missing object "string"."string"

Cause: The flavor includes the specified object which does not exist.

Action: Check that the specified object name is correct, and create the object if appropriate.


ORA-23467 flavor lacks object "string"."string"

Cause: The flavor does not include the specified object which is being dropped.

Action: Check that the specified object is correct.


ORA-23468 missing string string

Cause: The template is missing the object with the specified key.

Action: Add the object to the template.


ORA-23469 string is different between templates

Cause: The values for the specified columns are different in each template for the same key values.

Action: Correct the column values to make the templates the same.


ORA-23470 invalid status

Cause: The status should be DELETED, INSTALLING or INSTALLED. Any other status is invalid.

Action: Check that the specified status value is correct.


ORA-23471 template not authorized for user

Cause: The refresh template is private and the user has not been authorized to instantiate the template.

Action: Authorize the user to use the template.


ORA-23472 materialized view "string"."string" must be atomically refreshed

Cause: Non-atomic refresh is not supported for the specified materialized view.

Action: Set the value of the ATOMIC parameter to FALSE in the refresh procedure being used or remove the specified materialized view from the set of materialized views being refreshed.


ORA-23473 replication RPC processing for "string"."string" is disabled

Cause: The processing of replication RPCs for the object group that contains this object is disabled. This includes RPCs in the error queue.

Action: Processing of replication RPCs is disabled when the object group is being offline instantiated. Wait until offline instantiation is finished.


ORA-23474 definition of "string"."string" has changed since generation of replication support

Cause: The current columns in the specified table and their column types do not match the columns and column types when replication support was last generated.

Action: Regenerate replication support for the affected table. All flavors that include the specified table should be checked for validity. Types for any UDT columns should also be checked for validity.


ORA-23475 key column string must be sent and compared

Cause: The specified column is a key column and must be sent and compared during replication propagation.

Action: Make sure every key column is sent and compared.


ORA-23476 cannot import from string to string

Cause: This object was imported from a database with a different global name than the importing database.

Action: Only import this object into a database with the same global name.


ORA-23477 unable to alter propagation mode for object group "string"."string"

Cause: The propagation method of a materialized view object group can only be altered when no other object groups with the same master object group are sharing the materialized view site.

Action: Ensure that there are no other materialized view object groups at the local site with the same master object group.


ORA-23478 object group string is already mastered at string

Cause: There is at least one other materialized view repgroup at the local site with the same group name but a different master site.

Action: Ensure that all materialized view repgroups at the local site with the same group name have the same master.


ORA-23480 Column string is not a top-level column of "string"."string".

Cause: The column is either not a top-level column or is not present in the table or materialized view.

Action: Ensure only valid top-level columns are used.


ORA-23482 column string of "string"."string": object types not allowed.

Cause: The column is of Object Type.

Action: Ensure that all the columns are not of Object Type.


ORA-23483 object "string"."string" not allowed in this operation.

Cause: The specified operation does not support the given object.

Action: Do not invoke the operation for this object.


ORA-23484 internal internet Application Server error: string

Cause: An internal error occurred in internet Application Server.

Action: Report the error and other information to support.


ORA-23485 Column group "string" must consist of a single numeric column only

Cause: The column group doesn't contain only one numeric column.

Action: Use a column group containing a single numeric column.


ORA-23487 object groups "string"."string" and "string"."string" do not have the same connection qualifier

Cause: The specified two object groups do not have the same connection qualifier.

Action: Do not invoke the operation on the above object groups, or ensure they have the same connection qualifier.


ORA-23488 propagation mode "string" for "string" is not allowed for this operation

Cause: This operation does not support the specified dblink in the above propagation mode.

Action: Do not invoke the operation for this dblink, or change the propagation mode for this dblink.


ORA-23489 duplicate entry "string"

Cause: The specified value is duplicated in the parameter list.

Action: Remove duplicated entries in the parameter list.


ORA-23490 extension request "string" with status "string" not allowed in this operation

Cause: The specified operation is not allowed for the extension request with the specified status.

Action: Ensure the extension request has the appropriate status before retrying this operation.


ORA-23491 no valid extension request at "string"

Cause: The specified database does not have a valid extension request.

Action: Ensure there is a valid extension request in the DBA_REPEXTENSIONS view before retrying this operation.


ORA-23492 no new sites for extension request "string"

Cause: There is no new site with the specified extension request.

Action: Ensure there is at least one new site in the DBA_REPSITES_NEW view for this request before retrying this operation.


ORA-23493 "string" is not a new site for extension request "string"

Cause: The specified extension request does not include the specified site as a new site.

Action: Ensure the specified site is a new site for this extension request before retrying this operation.


ORA-23494 too many rows for destination "string"

Cause: The specified destination has too many rows in the system.def$_destination table.

Action: Ensure the specified destination has at most two valid rows before retrying this operation.


ORA-23495 serial propagation can not be used for "string"

Cause: The sites involved may be in the process of adding a new site without quiescing.

Action: Check the def$_destination table for this destination and try parallel propagation.


ORA-23496 can not change disabled status for "string" and "string"

Cause: The disabled status for this site is set internally for synchronization during adding a new master without quiescing.

Action: Ensure adding a new master without quiescing finished before invoking this procedure.


ORA-23500 cannot switch master for a multi-tier materialized view repgroup "string"."string"

Cause: An attempt was made to switch master for a materialized view repgroup when its parent repgroup is also a materialized view repgroup. This is not allowed.

Action: Drop and recreate the materialized view repgroup based on a proper parent repgroup.


ORA-23501 refresh template cannot be instantiated for database with compatibility equal to or less than 8.0

Cause: Instantiation of a refresh template is not supported for database compatibility equal to or less than 8.0.

Action: Be sure the database compatibility is equal to 8.1 or higher.


ORA-23502 valid directory for offline instantiation is not specified

Cause: An attempt was made to offline instantiate to a directory which is not specified or null.

Action: There are two ways to specify the directory:

  • As a parameter OFFLINE_DIRPATH to the API
  • As an initialization parameter named UTL_FILE_DIR

Make sure you have specified an appropriate directory in which the offline file can be created.


ORA-23503 error occurred during IAS instantiation

Cause: An attempt was made to instantiate a IAS site. Error occurred during IAS instantiation.

Action: See the other errors on the error stack to look for the source of the problem. If the error still persists, contact Oracle Support Services.


ORA-23504 columns added to table do not match list of columns to be added

Cause: The list of columns passed as a parameter does not match the columns to be added to the table.

Action: Correct the DDL string or list of columns and rexecute.


ORA-23505 Object "string"."string" is missing.

Cause: The specified object does not exist.

Action: Check that the specified object is correct.


ORA-23514 invalid or incorrect number of arguments

Cause: The arguments passed to the online redefinition API were invalid or missing.

Action: Call the online redefinition API with the right number of valid arguments.


ORA-23515 materialized views and/or their indices exist in the tablespace

Cause: An attempt was made to drop a tablespace which contains materialized views and/or their indices.

Action: Drop the materialized views in this tablespace. Also, find indices belonging to materialized views in this tablespace and drop then. Then try dropping the tablespace.


ORA-23531 site owner already exists in the template

Cause: Site owner for the template already exists.

Action: Do not create multiple siteowners for this template.


ORA-23532 tables with different synchronization mechanisms are in the same group

Cause: Tables belonging to the same replication group were specified to be cached with different synchronization mechanisms.

Action: Do not specify different synchronization mechanisms while caching tables belonging to the same replication group.


ORA-23533 object "string"."string" can not be cached

Cause: An attempt was made to cache an object which is not supported.

Action: Do not cache an object which is not supported.


ORA-23534 missing column in materialized view container table "string"."string"

Cause: After import, the materialized view container table has missing columns.

Action: Check if materialized view container table was imported correctly.


ORA-23535 instantiating templates from multiple back ends is not allowed

Cause: An attempt was made to set a new non-null back end database for an iAS site.

Action: Call dbms_ias_configure.set_back_end_db procedure with null dblink. Then, call the same procedure with the new non-null dblink.


ORA-23536 the object "string"."string" is not cached at the middle tier as expected.

Cause: The object may have been dropped or renamed at the back end after dbms_ias_inst.start_ias_inst was executed.

Action: Check the validity of the object at the back end and retry the instantiation.


ORA-23537 function or procedure string is not allowed to be invoked from this site.

Cause: This function or procedure is restricted to the backend or middle tier site.

Action: Connect to the proper site before calling this function or procedure.


ORA-23538 cannot explicitly refresh a NEVER REFRESH materialized view ("string")

Cause: An attempt was made to explicitly refresh a NEVER REFRESH materialized view.

Action: Do not perform this refresh operation or remove the materialized views from the list.


ORA-23600 cannot create PROPAGATION, string already exists

Cause: The propagate_name already exists.

Action: Drop the propagate_name using DROP_PROPAGATE command or specify propagate_name.


ORA-23601 PROPAGATION_NAME string does not exist

Cause: Propagation does not exist.

Action: Query the DBA_PROPAGATION view to find existing propagation_name.


ORA-23602 Invalid streams process type string

Cause: Specified streams process type is not valid.

Action: Specify either capture or apply.


ORA-23605 invalid value "string" for STREAMS parameter string

Cause: An attempt was made to specify an invalid parameter value.

Action: Specify a valid value for the parameter. Check the documentation for valid parameter values.


ORA-23606 invalid object string

Cause: An attempt was made to specify an invalid object.

Action: Specify a valid object.


ORA-23607 invalid column "string"

Cause: An invalid column was specified in the column list.

Action: Check the columns in the object and specify the right column name.


ORA-23608 invalid resolution column "string"

Cause: An invalid column was specified as the resolution column. The resolution column must belong to the list of columns specified in the 'column_list' parameter.

Action: Check the columns in the column_list and specify the right resolution column name.


ORA-23619 non-Oracle system error: string

Cause: A non-Oracle database has returned an error message to STREAMS when attempting to apply a DML statement. The non-Oracle system error message is a parameter to this Oracle error.

Action: Corrective action may or may not be possible (depending on the non-Oracle system error). If corrective action is possible, then correct the problem and try applying the transaction again.


ORA-24000 invalid value string, string should be of the form [SCHEMA.]NAME

Cause: An invalid value was specified for the parameter.

Action: Specify a string of the form [SCHEMA.]NAME.


ORA-24001 cannot create QUEUE_TABLE, string already exists

Cause: The queue table already exists in the queueing system.

Action: Drop the table first using the DROP_QUEUE_TABLE() command or specify another table.


ORA-24002 QUEUE_TABLE string does not exist

Cause: QUEUE_TABLE does not exist.

Action: Query on the user view USER_QUEUE_TABLES to find out existing queue tables.


ORA-24003 Queue table index string inconsistent with queue table string

Cause: The queue table index has not yet been successfully imported.

Action: Import the queue table index before attempting to use the queue table. If the import failed, correct the problem and try to import the queue table index again.


ORA-24004 invalid column name string in SORT_LIST, should be ENQ_TIME or PRIORITY

Cause: Invalid column name was specified in the SORT_LIST.

Action: The valid column names are ENQ_TIME and PRIORITY.


ORA-24005 must use DBMS_AQADM.DROP_QUEUE_TABLE to drop queue tables

Cause: An attempt was made to use the SQL command DROP TABLE for queue tables, but DROP TABLE is not supported for queue tables.

Action: Use the DBMS_AQADM.DROP_QUEUE_TABLE procedure instead of the DROP TABLE command.


ORA-24006 cannot create QUEUE, string already exists

Cause: The queue requested to be created already exists.

Action: Specify another queue name. Query USER_QUEUES for all the existing queues in the users's schema.


ORA-24007 invalid value string, MAX_RETRIES should be non-negative integer

Cause: An invalid value was specified for MAX_RETRIES.

Action: Specify a non-negative integer.


ORA-24008 queue table string.string must be dropped first

Cause: An error was detected when dropping a queue table in a cluster, tablespace, or schema.

Action: Use the DBMS_AQADM.DROP_QUEUE_TABLE procedure to drop the specified queue table first; then, retry the operation.


ORA-24009 invalid value string, QUEUE_TYPE should be NORMAL_QUEUE or EXCEPTION_QUEUE

Cause: Invalid queue type parameter.

Action: Valid values are NORMAL_QUEUE for normal queue and EXCEPTION_QUEUE for exception queue.


ORA-24010 QUEUE string does not exist

Cause: The specified queue does not exist.

Action: Specify a valid queue. Query USER_QUEUES for all the valid queues.


ORA-24011 cannot drop QUEUE, string should be stopped first

Cause: The queue has not been stopped. That is, either enqueue or dequeue is still enabled.

Action: Stop the queue first using the STOP_QUEUE command and disable it from both enqueueing and dequeueing.


ORA-24012 cannot drop QUEUE_TABLE, some queues in string have not been dropped

Cause: A queue exists in the queue table which has not been dropped. All queues need to be dropped first.

Action: Drop all queues belonging to this queue table using the DROP_QUEUE() command. Be sure to stop the queues appropriately before dropping them. Alternately, use the force option in DROP_QUEUETABLE.


ORA-24013 invalid value string, RETRY_DELAY should be non-negative

Cause: A negative value was specified for RETRY_DELAY.

Action: Specify a non-negative value for RETRY_DELAY.


ORA-24014 invalid value string, RETENTION_TIME should be FOREVER or non-negative

Cause: Queue retention was specified, but the retention time was specified to be less than zero.

Action: Specify the retention time to be non-negative or FOREVER. Alternately do not specify retention.


ORA-24015 cannot create QUEUE_TABLE, QUEUE_PAYLOAD_TYPE string.string does not exist

Cause: An invalid QUEUE_PAYLOAD_TYPE specified during CREATE_QUEUE_TABLE.

Action: The QUEUE_PAYLOAD_TYPE should be RAW or an object type that already exists in the database.


ORA-24016 cannot create QUEUE_TABLE, user string does not have execute privileges on QUEUE_PAYLOAD_TYPE string.string

Cause: An invalid object type specified for QUEUE_PAYLOAD_TYPE during CREATE_QUEUE_TABLE.

Action: Make sure you have execute privileges on the object type specified for the queue.


ORA-24017 cannot enable enqueue on QUEUE, string is an exception queue

Cause: An attempt was made to enable enqueueing to an exception queue.

Action: No action required.


ORA-24018 STOP_QUEUE on string failed, outstanding transactions found

Cause: There were outstanding transactions on the queue, and WAIT was set to false, so STOP_QUEUE was unsuccessful in stopping the queue.

Action: Set WAIT to TRUE and try STOP_QUEUE again. It will hang till all outstanding transactions are completed.


ORA-24019 identifier for string too long, should not be greater than string characters

Cause: The identifier specified is too long.

Action: Try again with a shorter identifier.


ORA-24020 Internal error in DBMS_AQ_IMPORT_INTERNAL, string

Cause: An internal error occurred in the package. DBMS_AQ_IMPORT_INTERNAL.

Action: Contact Oracle Support Services.


ORA-24021 queue table definition not imported for string.string

Cause: The queue definition is not updated because the queue table was not imported properly.

Action: Import the queue table again.


ORA-24022 the specified parameters has no effect on the queue

Cause: The parameter combination will not cause the queue to be started or stopped.

Action: No action required. This is a warning.


ORA-24023 Internal error in DBMS_AQ_EXP_INTERNAL.string [string] [string]

Cause: An internal error occurred in the package DBMS_AQ_EXP_INTERNAL.

Action: Contact Oracle Support Services.


ORA-24024 Internal error in DBMS_AQ_IMP_INTERNAL.string [string] [string]

Cause: An internal error occurred in the package DBMS_AQ_IMP_INTERNAL.

Action: Contact Oracle Support Services.


ORA-24025 invalid value string, QUEUE_PAYLOAD_TYPE should be RAW or an object type

Cause: Parameter QUEUE_PAYLOAD_TYPE has invalid value.

Action: Specify a valid object type or RAW.


ORA-24026 operation failed, queue string.string has errors

Cause: An attempt was made to enqueue, dequeue or administer a queue which has errors.

Action: Drop the queue table setting the force option to true.


ORA-24027 AQ HTTP propagation encountered error, status-code string, string

Cause: AQ propagation's HTTP request to the propagation servlet at the specified address encountered an error.

Action: Specify a valid address in the connect string of the propagation destination dblink, the dblink user has the correct permissions, check if the AQ propagation servlet was properly installed.


ORA-24028 cannot create a reciever non-repudiable single consumer queue

Cause: Tried to create a reciever non-repudiable single consumer queue.

Action: This feature is not supported.


ORA-24029 operation not allowed on a single-consumer queue

Cause: Tried an operation not allowed on a single-consumer queue.

Action: Specify the operation on a multi-consumer queue.


ORA-24030 Only one of rule or rule-set must be specified

Cause: Specified both a rule and rule-set for the operation.

Action: Specify only one of rule or rule-set.


ORA-24031 invalid value, string should be non-NULL

Cause: Parameter is NULL.

Action: Specify a non-NULL value for the parameter.


ORA-24032 object string exists, index could not be created for queue table string

Cause: Oracle AQ tried to create an index with the name specified in the error message. The index could not be created for the specified queue table because a object exists with the same name.

Action: Drop the object specified in the error message and retry the command. You can also choose a different name for the queue table.


ORA-24033 no recipients for message

Cause: An enqueue was performed on a queue that has been set up for multiple dequeuers but there were neither explicit recipients specified in the call nor were any queue subscribers determined to be recipients for this message.

Action: Either pass a list of recipients in the enqueue call or add subscribers to the queue for receiving this message.


ORA-24034 application string is already a subscriber for queue string

Cause: An application name that was already a subscriber for the queue was specified in the DBMS_AQ.SUBSCRIBE call.

Action: Choose another application name and retry the call.


ORA-24035 AQ agent string is not a subscriber for queue string

Cause: An AQ agent that was not a subscriber for the queue was specified.

Action: Check the name and/or address of the agent and retry the call.


ORA-24036 invalid SORT_ORDER column string specified for queue table

Cause: The CREATE QUEUE TABLE command was issued with MESSAGE_GROUPING set to TRANSACTIONAL and a sort order column other than priority. Only the priority column can be specified in the sort order for queue tables with transactional grouping.

Action: Change the sort order list in the CREATE QUEUE TABLE command and retry the call.


ORA-24037 schema string in QUEUE_NAME is not same as schema string in QUEUE_TABLE

Cause: The schema specified in the QUEUE_NAME parameter of CREATE_QUEUE is not the same as the schema specified in the QUEUE_TABLE parameter.

Action: Use the same schema name for both the QUEUE_NAME and QUEUE_TABLE parameters and retry the command.


ORA-24038 RETRY_DELAY and MAX_RETRIES cannot be used for a 8.0 compatible multiple consumer queue

Cause: The CREATE_QUEUE or ALTER_QUEUE command was issued with a non-zero RETRY_DELAY and a QUEUE_TABLE that was created for multiple consumers and with COMPATIBLE parameter set to '8.0'.

Action: Either set the RETRY_DELAY to zero or upgrade the queue table to 8.1 compatible using the DBMS_AQADM.MIGRATE_QUEUE_TABLE procedure.


ORA-24039 Queue string not created in queue table for multiple consumers

Cause: Either an ADD_SUBSCRIBER, ALTER_SUBSCRIBER, or REMOVE_SUBSCRIBER procedure, or an ENQUEUE with a non-empty recipient list, was issued on a queue that was not created for multiple consumers.

Action: Create the queue in a queue table that was created for multiple consumers and retry the call.


ORA-24041 propagation schedule exists for QUEUE string and DESTINATION string

Cause: A SCHEDULE_PROPAGATION was issued for a queue and destination pair which has an existing propagation schedule.

Action: Issue UNSCHEDULE_PROPAGATION to remove the existing schedule and then reissue the SCHEDULE_PROPAGATION call.


ORA-24042 no propagation schedule exists for QUEUE string and DESTINATION string

Cause: AN UNSCHEDULE_PROPAGATION was issued for a queue and destination pair which has no existing propagation schedule.

Action: Verify the spelling of the specified QUEUE and DESTINATION and then reissue the call with the correct spelling.


ORA-24043 destination string uses a reserved name, names with AQ$_ prefix are not valid

Cause: An attempt was made to specify a reserved name for a destination.

Action: Enter a different value or NULL for the local destination. Then retry the operation.


ORA-24044 source string and destination string object types do not match

Cause: A message recipient's queue has a different object structure than the sender's queue. The message cannot be propagated.

Action: Either remove the recipient from the subscriber's list for the sender's queue or create the destination queue with an object type that matches the source queue's object type.


ORA-24045 invalid agent address string, agent address should be of the form [SCHEMA.]NAME[@DATABASE LINK]

Cause: An invalid value was specified for the agent address parameter.

Action: Specify a string of the form [SCHEMA.]NAME[@DATABASE LINK].


ORA-24046 protocol attribute reserved for future use

Cause: The protocol attribute of the AQ agent object type is reserved for future use.

Action: Do not specify the protocol attribute in the agent object type.


ORA-24047 invalid agent name string, agent name should be of the form NAME

Cause: An invalid value was specified for the agent name parameter.

Action: Specify a string of the form NAME. Then retry the operation.


ORA-24048 cannot create QUEUE_TABLE, user does not have access to AQ object types

Cause: An attempt was made to issue the CREATE_QUEUE_TABLE command, but the user who issued the command does not have access to internal AQ object types.

Action: Use the DBMS_AQADM.GRANT_TYPE_ACCESS procedure to grant the user access to the AQ object types.


ORA-24049 invalid agent name string, names with AQ$_ prefix are not valid

Cause: An attempt was made to use a reserved prefix in the agent name.

Action: Enter a different value for the agent name. Then, retry the operation.


ORA-24050 subscribers are not supported for exception queue string

Cause: An ADD_SUBSCRIBER, ALTER_SUBSCRIBER, or REMOVE_SUBSCRIBER procedure was issued on a queue that was created as an EXCEPTION_QUEUE.

Action: Specify a NORMAL_QUEUE in the procedure.


ORA-24051 cannot propagate object type payloads that have a REF or BFILE attribute

Cause: An ADD_SUBSCRIBER or ENQUEUE procedure with a non-NULL address field in the agent type was issued on a queue whose payload has a REF or BFILE attribute. Propagation of object type payloads that have a REF or BFILE attribute currently is not supported.

Action: Specify an agent with a NULL address field so that the agent can dequeue from the same queue. Or, change the object type definition to one that does not use REF or BFILE attributes.


ORA-24052 cannot propagate object type payloads with LOB attributes to an 8.0 release

Cause: The recipient of a message with LOB attributes was using an Oracle 8.0 release. Propagation of LOB attributes is supported only in Oracle 8.1 and higher releases.

Action: Upgrade the target release to Oracle 8.1 and retry. Or, change the object type definition to one that does not use LOBs.


ORA-24053 PRIMARY_INSTANCE and SECONDARY_INSTANCE must be non-negative

Cause: One of PRIMARY_INSTANCE or SECONDARY_INSTANCE was negative.

Action: Specify non-negative integers for PRIMARY_INSTANCE and SECONDARY_INSTANCE.


ORA-24054 cannot propagate to an Oracle 8.0.3 release or lower release

Cause: The recipient of a message was using an Oracle 8.0.3 release or lower release. Propagation is supported only in Oracle 8.0.4 and higher releases.

Action: Upgrade the target release to Oracle 8.0.4 or higher and retry.


ORA-24055 cannot delete propagation status rows that are in prepared state

Cause: An attempt was made to use the internal administration procedure to delete status rows from the SYS.AQ$_PROPAGATION_STATUS table that were in the prepared state.

Action: Wait for the propagation to complete successfully before retrying the operation.


ORA-24056 internal inconsistency for QUEUE string and destination string

Cause: The sequence numbers used in the SYS.AQ$_PROPAGATION_STATUS table were inconsistent for the given queue and destination.

Action: Contact Oracle Support Services.


ORA-24057 cannot define subscriber with rule for queue string

Cause: An ADD_SUBSCRIBER or ALTER_SUBSCRIBER procedure with a rule was issued on a queue for which rule based subscribers are not supported. Rule based subscribers currently are supported only for NORMAL (persistent) multi-consumer queues created using an Oracle release 8.1.0 or higher compatible queue table.

Action: Create a NORMAL multi-consumer queue in an Oracle release 8.1.0 or higher compatible queue table, and retry the call. Or, if the queue is a normal (persistent) multi-consumer queue, convert the queue table to Oracle 8.1.0 or higher compatibility and retry.


ORA-24058 cannot downgrade QUEUE_TABLE that has propagation in a prepared state

Cause: An attempt was made to downgrade the queue table when there were messages being propagated that were in the prepared state.

Action: Wait for the propagation to complete before retrying the operation.


ORA-24059 invalid COMPATIBLE parameter setting string specified in DBMS_AQADM.string

Cause: An invalid compatible parameter was specified in the DBMS_AQADM procedure. The parameter setting must be of the form '8.x.y' where x is the release number and y is the update number.

Action: Specify a valid COMPATIBLE parameter setting, and retry the operation.


ORA-24060 cannot convert QUEUE_TABLE, string already is compatible with release string

Cause: The source queue table in the DBMS_AQADM procedure is compatible with the specified COMPATIBLE parameter setting.

Action: Choose a different COMPATIBLE parameter setting to convert the queue table to the desired compatibility.


ORA-24061 cannot specify non-zero SECONDARY_INSTANCE if PRIMARY_INSTANCE was zero

Cause: A non-zero value was specified for SECONDARY_INSTANCE when PRIMARY_INSTANCE was zero.

Action: Specify a non-zero primary instance before you specify a non-zero secondary instance.


ORA-24062 Subscriber table string inconsistent with queue table string

Cause: The subscriber table has not yet been successfully imported.

Action: Import the subscriber table before attempting to use the queue table. If the import failed, correct the problem and try to import the subscriber table again.


ORA-24063 cannot downgrade QUEUE_TABLE that has queues with rule-based subscribers

Cause: An attempt was made to downgrade the queue table when there were queues on which rule-based subscribers are defined.

Action: Remove the rule-based subscribers for all queues in this queue table and retry.


ORA-24064 propagation for QUEUE string and DESTINATION string already enabled

Cause: An ENABLE_SCHEDULE_PROPAGATION command was issued for a queue and destination pair whose propagation schedule already was enabled.

Action: Make sure the QUEUE and DESTINATION are correct when you issue the ENABLE_SCHEDULE_PROPAGATION command.


ORA-24065 propagation for QUEUE string and DESTINATION string already disabled

Cause: A DISABLE_SCHEDULE_PROPAGATION command was issued for a queue and destination pair whose propagation schedule already was disabled.

Action: Make sure the QUEUE and DESTINATION are correct when you issue the DISABLE_SCHEDULE_PROPAGATION command.


ORA-24066 invalid privilege specified

Cause: An invalid privilege is specified for granting or revoking privilege.

Action: Specify a valid privilege.


ORA-24067 exceeded maximum number of subscribers for queue string

Cause: An attempt was made to add new subscribers to the specified, but the number of subscribers for this queue has exceeded the maximum number (1024) of subscribers allowed per queue.

Action: Remove existing subscribers before trying to add new subscribers.


ORA-24068 cannot start queue string, queue table string is being migrated

Cause: An attempt was made to start a queue in a queue table that is being migrated.

Action: Complete the queue table migration, and retry the operation.


ORA-24069 cannot downgrade queue table string while it is being upgraded

Cause: An attempt was made to downgrade a queue table, but a previous command to upgrade the queue table has not yet completed successfully.

Action: Complete the upgrade of the queue table by re-executing the DBMS_AQADM.MIGRATE_QUEUE_TABLE procedure. Then, downgrade the queue table.


ORA-24070 cannot upgrade queue table string while it is being downgraded

Cause: An attempt was made to upgrade a queue table, but a previous command to downgrade the queue table has not yet completed successfully.

Action: Complete the downgrade of the queue table by re-executing the DBMS_AQADM.MIGRATE_QUEUE_TABLE procedure. Then, upgrade the queue table.


ORA-24071 cannot perform operation string, queue table string is being migrated

Cause: An attempt was made to perform an operation on a queue in a queue table that is being migrated.

Action: Complete the queue table migration, and retry the operation.


ORA-24072 cannot execute MIGRATE_QUEUE_TABLE procedure; must own queue table

Cause: An attempt was made to upgrade or downgrade a queue table using the DBMS_AQADM.MIGRATE_QUEUE_TABLE procedure, but the user who executed the procedure does not own the queue.

Action: Reconnect as the owner of the queue table, and then execute the DBMS_AQADM.MIGRATE_QUEUE_TABLE procedure.


ORA-24073 cannot specify RETENTION_TIME on exception queue string.string

Cause: An attempt was made to create or alter an exception queue by specifying a non-zero RETENTION_TIME.

Action: Use the default RETENTION_TIME parameter value for exception queues.


ORA-24074 RETRY_DELAY and MAX_RETRIES cannot be used for exception queue string

Cause: The CREATE_QUEUE or ALTER_QUEUE command was issued with a non-zero RETRY_DELAY and an exception queue.

Action: Do not specify RETRY_DELAY or MAX_RETRIES for exception queues.


ORA-24075 cannot specify agent with NULL address and non-NULL protocol

Cause: An ADD_SUBSCRIBER or enqueue was attempted with an agent that had a NULL address and a non-NULL protocol.

Action: Either specify a non-NULL address or set the protocol to NULL.


ORA-24076 cannot perform operation string for NON_PERSISTENT queue string.string

Cause: One of the operations, SCHEDULE_PROPAGATION, ALTER_QUEUE, LISTEN, DEQUEUE was issued for a NON_PERSISTENT queue.

Action: Do not specify a NON_PERSISTENT queue for these operations.


ORA-24077 cannot create propagation schedule for EXCEPTION queue string.string

Cause: A SCHEDULE_PROPAGATION was issued for an EXCEPTION queue. Propagation schedules can be created only for NORMAL queues.

Action: To propagate messages from a queue, specify the queue type as NORMAL.


ORA-24078 cannot specify a non-NULL SECONDARY_INSTANCE if PRIMARY_INSTANCE was NULL

Cause: A non-NULL value was specified for SECONDARY_INSTANCE when PRIMARY_INSTANCE was NULL.

Action: Specify a non-NULL primary instance before you specify a non-NULL secondary instance.


ORA-24079 invalid name string, names with AQ$_ prefix are not valid for string

Cause: An attempt was made to use a reserved prefix for the object name.

Action: Enter a different name for this object. Then, retry the operation.


ORA-24080 unschedule_propagation pending for QUEUE string and DESTINATION string

Cause: A propagation administration command was issued for a queue and destination pair whose propagation is being unscheduled.

Action: Do not issue propagation administration commands for a propagation schedule on which there is a pending unschedule request.


ORA-24081 compatible parameter needs to be string or greater

Cause: The value of the COMPATIBLE parameter was not high enough to allow the operation.

Action: Shut down and restart with a higher compatibility setting.


ORA-24082 propagation may still be happening for the schedule for QUEUE string and DESTINATION string

Cause: The snapshot process executing the propagation schedule did not respond to the disable propagation command.

Action: Make sure that the job for the propagation schedule has been ended.


ORA-24083 cannot specify remote subscribers for string QUEUE string

Cause: An ADD_SUBSCRIBER call with a non-null address field was issued on a queue which does not support remote subscribers. Remote subscribers are not supported for NON_PERSISTENT QUEUES.

Action: Specify a null address field and retry the call.


ORA-24084 DBLINK name in address field of agent string is not unique within the first 24 bytes"

Cause: Advanced Queuing requires that the agent's DBLINK name should be unique within the first 24 bytes (for 8.0 compatible queue tables)

Action: Specify a DBLINK name that is unique within the first 24 bytes or migrate to 8.1 compatible queue tables where this restriction is not there.


ORA-24085 operation failed, queue string is invalid

Cause: An attempt was made to enqueue, dequeue or administer a queue which is invalid. This could have occurred because the payload type of the queue's queue table was dropped.

Action: Drop the queue table setting the force option to true.


ORA-24086 cannot create an 8.0 compatible string queue

Cause: An attempt was made to create an 8.0 compatible queue table and enable a feature that is supported only on 8.1 style queue tables.

Action: This feature is not supported.


ORA-24087 Invalid database user string

Cause: An invalid database username was specified.

Action: Specify a valid database user.


ORA-24088 AQ Agent string does not exist

Cause: This AQ Agent does not exist.

Action: Specify a valid AQ agent. Check the DBA_AQ_AGENTS view for a list of valid aq agents.


ORA-24089 AQ Agent string already exists

Cause: This AQ agent has already been created.

Action: Specify another agent name or use the ALTER api to modify the agent.


ORA-24090 at least one protocol must be enabled

Cause: No protocol was enabled for aq agent.

Action: Enable one of the protocols by setting one of the enable parameters to true.


ORA-24093 AQ agent string not granted privileges of database user string

Cause: The specified AQ agent does not have privileges of the specified database user.

Action: Specify a valid combination of AQ agent and database user. Check the DBA_AQ_AGENT_PRIVS or USER_AQ_AGENT_PRIVS view for user/agent mappings.


ORA-24094 invalid transformation, target type does not match that of the queue

Cause: The target type of the transformation specified was different from the type of the queue.

Action: Provide a valid transformation whose target type is the same as the queue type.


ORA-24095 invalid transformation, source type does not match that of the queue

Cause: The source type of the transformation specified was different from the type of the queue.

Action: Provide a valid transformation whose source type is the same as the queue type.


ORA-24096 invalid message state specified

Cause: Invalid value was specified for message state.

Action: Provide a valid message state as specified in the documentation.


ORA-24097 Invalid value string, string should be non-negative

Cause: A negative value or NULL was specified for the parameter.

Action: Specify a non-negative integer.


ORA-24098 invalid value string for string

Cause: An Invalid value or NULL was specified for the parameter.

Action: Check the documentation for valid values.


ORA-24099 operation not allowed for 8.0 compatible queues

Cause: The specified operation is only supported for queues with compatibility equal to 8.1 or higher.

Action: Upgrade the 8.0 compatible queue to release 8.1 using DBMS_AQADM.MIGRATE_QUEUE_TABLE or specify a queue with compatibility euqal to 8.1 or higher.


ORA-24100 error in ktz testing layer

Cause: There is an error in the Transaction layer test ICDs.


ORA-24120 invalid string parameter passed to DBMS_REPAIR.string procedure

Cause: An invalid parameter was passed to the specified DBMS_REPAIR procedure.

Action: Specify a valid parameter value or use the parameter's default.


ORA-24121 both cascade and a block range passed to DBMS_REPAIR.CHECK_OBJECT procedure

Cause: Both cascade and a block range were specified in a call to DBMS_REPAIR.CHECK_OBJECT.

Action: Use either cascade or a block range, or do not use either one.


ORA-24122 invalid block range specification

Cause: An incorrect block range was specified.

Action: Specify correct values for the BLOCK_START and BLOCK_END parameters.


ORA-24123 feature string is not yet implemented

Cause: An attempt was made to use the specified feature, but the feature is not yet implemented.

Action: Do not attempt to use the feature.


ORA-24124 invalid ACTION parameter passed to DBMS_REPAIR.string procedure

Cause: An invalid ACTION parameter was specified.

Action: Specify CREATE_ACTION, PURGE_ACTION or DROP_ACTION for the ACTION parameter.


ORA-24125 Object string.string has changed

Cause: An attempt was made to fix corrupt blocks on an object that has been dropped or truncated since DBMS_REPAIR.CHECK_OBJECT was run.

Action: Use DBMS_REPAIR.ADMIN_TABLES to purge the repair table and run DBMS_REPAIR.CHECK_OBJECT to determine whether there are any corrupt blocks to be fixed.


ORA-24126 invalid CASCADE_FLAG passed to DBMS_REPAIR.string procedure

Cause: CASCADE_FLAG was specified for an object that is not a table.

Action: Use CASCADE_FLAG only for tables.


ORA-24127 TABLESPACE parameter specified with an ACTION other than CREATE_ACTION

Cause: The TABLESPACE parameter can only be used with CREATE_ACTION.

Action: Do not specify TABLESPACE when performing actions other than CREATE_ACTION.


ORA-24128 partition name specified for a non-partitioned object

Cause: A partition name was specified for an object that is not partitioned.

Action: Specify a partition name only if the object is partitioned.


ORA-24129 table name string does not start with string prefix

Cause: An attempt was made to pass a table name parameter without the specified prefix.

Action: Pass a valid table name parameter.


ORA-24130 table string does not exist

Cause: An attempt was made to specify a map, repair, or sync table that does not exist.

Action: Specify a valid table name parameter.


ORA-24131 table string has incorrect columns

Cause: An attempt was made to specify a map, repair, or sync table that does not have a correct definition.

Action: Specify a table name that refers to a properly created table.


ORA-24132 table name string is too long

Cause: An attempt was made to specify a table name is greater than 30 characters long.

Action: Specify a valid table name parameter.


ORA-24141 rule set string.string does not exist

Cause: An attempt to access or modify a ruleset was made, which failed because the ruleset does not exist.

Action: Only access or modify existing rulesets.


ORA-24142 invalid ruleset name

Cause: An attempt to create a ruleset with an invalid name was made. The ruleset name cannot be NULL, and cannot be more than 26 characters, unless a RULES_TABLE_NAME is also specified, in which case the ruleset name may be up to 30 characters.

Action: Retry the create with a valid ruleset name.


ORA-24143 invalid evaluation context name

Cause: An attempt to create a rule/ruleset on an invalid evaluation name was made. The evaluation_context can not be more than 30 characters. The evaluation context with the name specified must exist.

Action: Retry the create with a valid evaluation context name.


ORA-24144 rules engine internal error, arguments: [string], [string]

Cause: An internal error occurred in the rules engine. This indicates that the rules engine has encountered an exception condition.

Action: Contact Oracle Support Services. The first argument is the error and the second argument is the package.


ORA-24145 evaluation context string.string already exists

Cause: An evaluation context of the given name already exists.

Action: Specify another name for the evaluation context being created.


ORA-24146 rule string.string already exists

Cause: A rule of the given name already exists.

Action: Specify another name for the rule being created.


ORA-24147 rule string.string does not exist

Cause: The rule of the given name does not exist.

Action: Create the rule or specify one that exists.


ORA-24148 cannot drop rule string.string with dependents

Cause: The rule still belongs to some rulesets, cannot be dropped.

Action: Do not drop a rule that belongs to rulesets without force option.


ORA-24149 invalid rule name

Cause: An attempt to create a rule with an invalid name was made.

Action: The rule name can not be NULL, and can not be more than 30 characters.


ORA-24150 evaluation context string.string does not exist

Cause: The evaluation context of the given name does not exist.

Action: Create the evaluation context or specify one that exists.


ORA-24151 no evaluation context is associated with rule string.string or rule set string.string

Cause: When adding a rule to a rule set, either the rule or the rule set must have an evaluation context associated with it.

Action: Do not add a rule without an evaluation context to a ruleset that does not have a default evaluation context.


ORA-24152 cannot drop evaluation context string.string with dependents

Cause: The evaluation context still belongs to some rules or rule sets, cannot be dropped.

Action: Do not drop an evaluation context with dependents without force option.


ORA-24153 rule set string.string already exists

Cause: A rule set of the given name already exists.

Action: Specify another name for the rule set being created.


ORA-24154 rule string.string already in rule set string.string

Cause: A rule can be added to a rule set only once.

Action: Do not add a rule to a rule set that already contains this rule.


ORA-24155 rule string.string not in rule set string.string

Cause: The rule to be removed from the rule set is not in the rule set.

Action: Do not remove a rule from a rule set that does not contain the rule.


ORA-24156 duplicate table alias string

Cause: There is a table alias of the same name in the evaluation context.

Action: Do not add two table aliases of the same name to an evaluation context.


ORA-24157 duplicate variable name string

Cause: There is a variable of the same name in the evaluation context.

Action: Do not add two variables of the same name to an evaluation context.


ORA-24158 invalid table alias

Cause: Table alias name or base table name is not specified in the table alias definition.

Action: Specify both alias name and alias base table in the table alias structure.


ORA-24159 invalid variable definition

Cause: Variable name or variable type is not specified in the variable definition.

Action: Specify both variable name and variable type in the variable definition structure.


ORA-24160 name string already exists in the name value pair list

Cause: There is already a name-value pair with the same name in the NVlist.

Action: Try another name.


ORA-24161 name string does not exist in the name value pair list

Cause: There is not such a name-value pair in the NVlist.

Action: Check that the name-value pair exists in the NVList.


ORA-24162 name value pair list is full, cannot add another entry

Cause: The NVList is full (1024 elements) and cannot hold more elements.

Action: Do not add elements to a full list.


ORA-24163 dblink is not supported in rules engine DDLs

Cause: The object name has a database link in it, which is not supported.

Action: Do not specify remote objects in rules engine DDLs.


ORA-24164 invalid rule engine system privilege: string

Cause: No such system privilege number for rule engine objects.

Action: Check specification of dbms_rule_adm for valid system privilege numbers.


ORA-24165 invalid rule engine object privilege: string

Cause: No such object privilege number for rule engine objects.

Action: Check specification of dbms_rule_adm for valid object privilege numbers.


ORA-24166 evaluation context string.string has errors

Cause: Cannot resolve the table aliases and the variable types specified in the evaluation context.

Action: Make sure all base tables exist and all variable types are correct.

Action: ORA-24167 incompatible rule engine objects, cannot downgrade

Cause: There are rule engine objects in the database that cannot be downgraded.

Action: Check utlincmp.sql and remove all incompatible rules engine objects before downgrading.


ORA-24168 rule string.string cannot have default evaluation context

Cause: If a rule is added to a rule set with more than one evaluation context, then it must not have an evaluation context itself.

Action: Do not set the evaluation context of such rules to a non-null value.


ORA-24169 rule condition has unrecognized variables

Cause: The rule references variables not in the evaluation context.

Action: Modify the rule condition to remove illegal reference.


ORA-24180 invalid transformation expression, the transformation expression does not evaluate to the target type/attribute

Cause: The transformation expression does not evaluate to the target type or the target type's specified attribute.

Action: Provide valid transformation expression which evaluates to the target type or the target type's specified attribute.


ORA-24181 The type string does not exist

Cause: The source or destination type for the transformation does not exist

Action: Create the type or specify one that exists.


ORA-24182 attribute number specified does not exist

Cause: The target type of the transformation does not have the attribute number specified in the ADD_ATTRIBUTE_TRANSFORMATION command.

Action: check the target type definition and specify a valid attribute number.


ORA-24183 invalid transformation

Cause: The transformation specified is invalid because the source or the target type have been dropped/modified.

Action: Drop and recreate the transformation.


ORA-24184 transformation string.string, already exists

Cause: A transformation of the given name already exists.

Action: Specify another name for the transformation being created.


ORA-24185 Transformation string.string, does not exist

Cause: The transformation being specified does not exist.

Action: Create the transformation before using it or specify an existing transformation.


ORA-24186 wrong object type, could not transform message

Cause: The object type of the message to be transformed does not match the source type of the specified transfomation.

Action: Specify another transformation or specify a message of the correct type.


ORA-24190 length of payload excceeds string

Cause: The length of payload being taken excceeds the limit of varchar2 or raw.

Action: Use clob type or blob type to call get_text or get_bytes.


ORA-24191 the property name string has existed

Cause: The property name being set has existed.

Action: Use another property name.


ORA-24192 the property name cannot be null

Cause: The property name cannot be null.

Action: Make sure the property name is not null.


ORA-24193 the property value exceeds the valid range string

Cause: The property values being set exceeds the valid range.

Action: Make sure the property value is within the valid range.


ORA-24201 duplicate publisher, publisher already added to the queue

Cause: Attempted to add a publisher to the queue again.

Action: Specify another publisher or use DBMS_AQADM.ALTER_PUBLISHER to alter the publisher's properties.


ORA-24202 publisher does not exist for the queue

Cause: Attempted to alter or drop a non existent publisher from a queue.

Action: Specify another publisher.


ORA-24270 a row already exists in the string table for these parameters

Cause: A call was made to create a new row in the specified table. A row already exists in the table with the specified values.

Action: Delete the existing row using the appropriate API or check the parameters used to create the row.


ORA-24271 translation type must be either T, S or M

Cause: The translation type parameter is not a T, S or an M. A value other than T, S or M was specified.

Action: Correct the translation type and re-execute the API call.


ORA-24272 initialization value must be either F or T

Cause: The initialization value must be either F or T. A value other than F or T was specified.

Action: Correct the initialization value and re-execute the API call.


ORA-24273 translation text is required if translation type is T or S

Cause: If a translation type of T or S is specified, translation text must be supplied.

Action: Provide translation text and re-execute the API call.


ORA-24274 no row exists in the string table for these parameters

Cause: A call was made to update a row that does not exist or a foreign key value supplied to create a table does not exist.

Action: Create the row using the appropriate API or check the parameters used to create the new row to ensure that all specified values exist.


ORA-24275 function 'string' parameter 'string' missing or invalid

Cause: The function pkgname.funcname was called with a parameter parmname that was null, 0 length, or had an invalid value.

Action: Correct the parameter to supply values that comply with its datatype and limits as specified in the documentation.


ORA-24276 function 'string' output 'string' maximum value exceeded

Cause: The function pkgname.funcname computed a value for the output parmname that exceeded the maximum allowed. This can occur when multiple input parameters, each valid separately, combine to specify an invalid result. For example, when a length parameter multiplied by a copies parameter yields a total length exceeding the maximum for the output datatype.

Action: Correct the input values to produce a result that will comply with the limits as specified in the documentation.

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

엑셀에 데이터-외부데이터 가져오기-새쿼리만들기
데이터 원본 선택 화면이 나옵니다.

앞에서 만들어진 ODBC 연결명을 선택
Data Base 비번을 넣으면 테이블이 나오고, 해당 테이블 선택후 필드를 선택할 수 있습니다. 

엑셀에서 오라클 Data 보기입니다.

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Window에 ODBC설정
Wind95/98 은 설정판(Control-Panel)에 ODBC설정이 있을것이고

Win/NT나 2000서버 등은 관리도구에 ODBC설정이 있습니다...
이것을 실행한후 '시스템DSN'에서 추가버튼을 눌러
'Microsoft ODBC for Oracle'인 ODBC드라이브를 선택한후
데이타원본이름과 설명 그리고 DB를 Connect할 사용자그리고
이전에 'Net8 Configuration Assistant'에서 설정한
'로컬 네트 서비스 이름'을 서버에 입력하면 ODBC설정이 끝난것입니다...

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

게시판을 만드는 과정은 아래와 같은 단계로 진행될 것입니다. 물론 쬐금은 변경될 수도 있습니다. ^^  이것은 일단 대략적으로 잡아본 목차이니까요..  ^^

1) 데이터베이스의 구성 & ODBC 세팅
2) UDA : OLE DB & ADO
3) 게시판 글 쓰기
4) 글의 목록(리스트) 보기
5) 글의 본문 보기
6) 글의 조회수 증가 및 이전글, 다음글
7) 글을 수정, 삭제하기
8) HTML 태그(tag)효과의 제한 및 페이지 바로 가기 기능
9) 글에 커멘트 달기
10) 글을 검색하기 (Search)
11) 자료실 기능을 접목하자 (ABCUpload 4버전 사용)
12) 강좌 사이에 여러분이 요청한 내용들... 추가..

자..  그럼 어디한번 시작해 볼까요??

1)  데이터베이스를 구성하자.

이제 ASP로 제작하는 것 중에 가장 기본인, 간단한 게시판을 제작해 보려고 합니다. 웹 프로그래밍에서 "게시판의 제작"은 상당히 중요한대요. 앞으로 다루게 될 쇼핑몰 제작, 계층형 게시판 제작같이 초보자들로서는 제작하기에 조금은 부담스러운 것들도 "게시판의 제작"을 마치고 나면 그리 크게 로직적으로 어려움이 없을 것이기 때문입니다.

모든 것의 기본이라고 볼 수 있죠..  게시판을 만들어 보는 것은 말입니다..  ^^ 잘 만들어 둔 게시판은 두고두고 유용하게 써먹을 수가 있습니다.  제 사이트가 그런 식이지요... ^^

일단, 게시판을 제작하기 위해서는 게시물(데이터)들을 저장할 데이타베이스가 필요한데요. 여기서는 가장 접하기 쉬운 MS-Access을 사용하려고 합니다.  요즘처럼 불법 소프트웨어가 문제가 되는 시기에는 어쩔 수 없지 않겠습니까?  하지만...   이 글을 읽고 계시는 업체의 분들을 위해서... SQL 서버의 경우도 같이 이야기를 하려고 합니다....  ^^

자. 이제 Access를 열어 우리가 사용할 데이터베이스를 만들어 봅시다. 이름은 여러분들 마음대로 주어도 되겠지만, 기왕이면 같이 해 나가는 공부이니 같은 이름으로 만들자구요. 자. 데이터베이스의 이름은 "MyDataBase"라고 주기로 합시다.

우선 Access를 열고 새로운 데이터베이스를 만듭니다.

mdb 라는 확장자로 MyDataBase.mdb 를 저장합니다. 저는 C:\Study\MyDataBase.mdb 로 저장했습니다. 데이터베이스를 다 만들었다면(이것은 진짜 하나도 안 어려웠습니다) 이제는 테이블을 만들어야 하겠습니다. 테이블은 다음 그림과 같은 구조로 만들도록 하며 테이블의 이름은 "MyBoard"라고 주도록 합시다...

디자인보기에서 새 테이블 만들기를 선택해서 새롭게 테이블을 추가합니다.

위의 그림을 참고로... 테이블을 구성하도록 합니다..  ^^ 제공되는 그림은 Windows 2000, Ms Office 2000 을 기준으로 한 것이라 조금 여러분과 다를 수 있습니다만... 중요한 부분은 거의 같을 것입니다.

근데요... 이거 그림보고도 스스로 못 만드시는 분은 어쩔 수 없습니다. Access 라는 툴을 따로 공부하세요... 여기서 Ms-Accesss는 어떻게 사용하고 SQL 서버는 어떻게 사용하고.. 그런 것을 다 알려드릴 수는 없습니다. 그랬다간 ASP 이야기는 꺼내보지도 못하고 강좌가 끝나버릴 수도 있으니까요..  ^^ 서점에 가보시면 알겠지만, MS-Access도 책 한권입니다. 그리 만만한 넘이 아니지요..... 어쨋든.. 만듭시다... 하고자 한다면 아무리 초삥이어도 만들 수 있습니다. 진짭니다. 한번 해 보세요...

잠깐 !!

컬럼 이름을 정할 때는 주의해야 할 것이 있습니다.
그것은 이미 데이터베이스 내에서 쓰이는 키워드 변수들은 컬럼이름으로 사용해서는 안된다는 것이죠.
예를 들면 컬럼이름으로 no, number, group, level 등등 과 같은 것들은 사용하면 안 됩니다.
이런 변수들은 이미 데이터베이스의 내에서 사용되는 변수들이어서 컬럼이름을 이런 키워드와
같은 이름으로 주게 되면 Error가 발생하거나, Insert나 Update 등등의 쿼리가 제대로 동작하지 않게 됩니다.
그래서 일반적으로는 컬럼 이름 앞에 접두어를 붙이는 것을 추천하고 있습니다.
예를 들면, 위에서 처럼 BOARD의 약자인 b를 붙인 b_name, b_email, b_title 등등이 그런 예이지요

테이블 구조에서 보면 알겠지만 우리는 게시판에서 글을 쓰는 사용자의 이름과 E mail 주소, 홈페이지 주소, 제목, 글, 글을 쓴 날짜, 글을 읽은 조회수, 글의 비밀번호를 저장하게 될 것입니다. 조회수와 글 번호를 제외한 모든 컬럼은 문자열로 하며, 상당히 긴 글이 들어올지 모르는 '글(b_content)' 컬럼은 메모(text) 타입으로 맞추어 주도록 합니다.

그리고, 조회수와 글번호는 숫자타입으로 맞추어 주세요(위의 그림을 참조로 말입니다). 이렇게 만들었다면 이제 한 가지를 더 체크해 주어야 하는데요. 사용자 중에는 아직 메일주소가 없거나 홈페이지가 없는 사용자들이 있을 수 있을 것이기에... 그런 사람들의 경우는 메일주소나 홈페이지 값이 입력되지 않을 것입니다. 그래서 b_email 컬럼과 b_url 컬럼은 빈 문자열을 허용해 주어야 할 것입니다.. 즉, 널 문자값을 허용해 주어야 한다는 것이지요.

기본적으로 모든 컬럼은 반드시 값을 기입해야만 하게 되어있습니다. 그러므로, 우리는 우선 email 컬럼을 선택한 후 화면의 하단에서 널 문자 허용의 체크를 "예"로 해주어야 합니다. 다음 그림과 같이 말입니다.

b_email 컬럼에 "빈 문자열 허용"을 해 주었다면 b_url 컬럼도 같이 체크해 주어야 할 것입니다. 이제 테이블 구조는 완성이 된 듯 하네요. 이제 제작될 우리의 게시판은 이 테이블에 데이터를 저장할 것임다. Ms-Access에서의 경우는 위와 같았구요...

Ms SQL 서버를 사용하시는 분들은 먼저 데이터베이스를 다음 그림과 같이 추가로 하나를 만드세요..

이름은 역시 MyDataBase가 좋겠지요 ?? 그리고, 해당 데이터베이스에 테이블을 만드셔야 하겠지만.... 그것은 Access 때와 같은 모습으로 만드시면 됩니다...  하지만, 여러분이 Ms SQL 서버를 사용하고 싶으시다면... 결코 만만하게 생각하시고 시작하셔서는 안됩니다. ASP 를 하기 보다 앞서서 따로이 SQL 서버를 공부해 주셔야만 합니다. 이것은 두꺼운 책 한권이구요. 사실 SQL 서버자체는 ASP 보다 내용이 더욱 깊습니다.

웹 프로그래머 입장에서 SQL 서버를 깊게 관리자격으로 파고 드는 것은 무리이겠지만.. 그래도 적어도 기본적인 SQL 서버 책은 한권정도 뗴셔야 합니다... 안 그러면 테이블을 하나 만드는 것도 어렵습니다. SQL 서버도 서버제품입니다. 이 SQL 서버만 공부하는 데에도 상당한 시간과 노력이 필요합니다. 결코 쉽게 생각하지 마세요...  여담이지만, 사실 SQL 서버만 잘해도 먹고 사는데에 지장이 전혀 없습니다. 그리고, SQL 서버의 경우는 위처럼 비주얼하게 테이블을 만드는 것 보다는요.... 아무래도 쿼리 스크립트를 직접 사용하는 것이 더욱 바람직 할 것입니다....  ^^  다음과 같은 스크립트를 통해서 테이블을 만들도록 하세요.. ^^  그게 더 나을 것 같습니다.

     CREATE TABLE [dbo].[MyBoard] (
         [board_idx] [int] IDENTITY (1, 1) NOT NULL primary key clustered,
         [b_name] [varchar] (50) NOT NULL ,
         [b_title] [varchar] (50)  NOT NULL ,
         [b_date] [smalldatetime] NOT NULL default getdate(),
         [b_email] [varchar] (100)  NULL ,
         [b_url] [varchar] (100)  NULL ,
         [b_readnum] [smallint] NOT NULL default 0,
         [b_ipaddr] [varchar] (50)  NOT NULL ,
         [b_pwd] [varchar] (10)  NOT NULL ,
         [b_content] [text]  NOT NULL
      )

이제 여러분들은 MyDatabase 라는 데이터베이스를 만드셨구요..  그 데이터베이스 안에 MyBoard 라는 테이블을 만들었습니다..  그 데이터베이스에는 원한다면 다른 테이블들도 얼마든지 만들 수가 있답니다..  ^^  하지만, 지금 우리는 게시판을 만들려고 하니깐, MyBoard 테이블에만 관심을 가지시면 된답니다.

자... 이제 데이터베이스와 테이블이 준비되었으니... ODBC를 잡을 차례인 듯 합니다.. ODBC 는 무엇일까요?  ASP를 비롯한 어플리케이션에서 데이터베이스를 연동할 수 있도록 해주는 방법이랍니다. 데이터베이스는 많은 종류의 것들이 있습니다. Ms Access, Ms SQL, Oracle, 사이베이스, Informix...

그 외에도 상당히 많은 데이터베이스 제품들이 존재하지요.. 하지만, 이들은 모두 나름대로의 규칙들과 문법들을 가지고 있습니다. 그렇다고 우리가 모든 데이터베이스 제품들에 대해서... 공부할 수는 없는 노릇이지요... 어쨋든 중요한 것은 우리가 ASP를 통해서 데이터베이스와 연동을 해야한다는 점입니다... 데이터베이스가 무엇이든지 간에... 우리는 데이터를 저장하고 싶고, 불러오고 싶기도 한 것이지요..

바로 ASP와 같은 어플리케이션들과 데이터베이스 사이에서 연결통로를 만들어 주는 것이 ODBC 입니다. 우리는 데이터베이스 제품이 어디 것인지는 상관없이 단지 ODBC 만 세팅해 주게 되면... ADO라는 마이크로 소프트 데이터 액서스 컴포넌트를 사용해서... 데이터베이스 서버에 접근, 데이터의 저장, 조회등을 할 수가 있게 된답니다..  ^^

2000년이 지나면서 사실 OLEDB라는 것이 무척이나 주목을 받고 있으며, 이는 ODBC를 대체할 기술로 각광을 받기 시작하고 있지요.. OLEDB에 대해서는 조만간 다른 강좌를 통해서 따로 이야기를 해보도록 하겠습니다. 어쨋든 현재 우리에게 중요한 것은 ASP 에서 데이터베이스와 연동을 하기 위해서... 해당 데이터베이스를 서버측에서 ODBC 세팅해 주어야 한다는 것이랍니다...  ^^ 그래야... 데이터베이스로 ASP 에서 접근이 가능하게 되니까 말입니다..

그렇다면 Access 의 경우 ODBC 잡는 법을 먼저 같이 해봅시다..  다음처럼 말이지요..
이 강좌는 여러분이 윈도우즈 2000을 사용한다는 가정에서 쓰여지고 있으니.. 그림도 2000 기준입니다.
하지만,  혹시 98이나, Windows NT 를 사용하시는 분이 있다면 죄송합니다만  Taeyo's ASP 책을 참고하시도록 하세요.
^^ 윈도우의 보여지는 모습만 조금 틀려졌을 뿐, 세팅순서는 거의 같습니다..  ^^

우선  을 누르고,   메뉴를 선택한 다음

 메뉴를 선택하시구요.....    를 선택합니다.

그러면 다음과 같은 ODBC 윈도우가 나타날 것입니다..  ^^ 
그러면, 바로 탭중에서 System DSN 탭을 선택하도록 합니다.

경우에 따라서는 기본적으로 잡혀져 있는 System Data Source 가 있을 수도 있지만 일단 무시하시구요.
(저의 경우는 ECDCMusic 와 LocalServer 이라는 것이 있지만...  일단 무시합니다) 
우리는 우리가 사용할 데이터베이스를 여기서 ODBC 세팅하는 것이 필요한 것이니까...
우리가 하고자 하는 일에만 집중하도록 하자구요..

자... 현재의 윈도우에서 Add 버튼을 눌러서... 새롭게 우리가 사용할 데이터베이스를 ODBC 잡아주도록 합시다.
그러면, 다음과 같은 그림이 뜨면서.. 어떤 데이터베이스를 ODBC 잡을 것인지... 지정해 줄수 있습니다.
Access를 사용하고 싶다면, 여기서 Access를... SQL을 사용하고 싶다면 여기서 SQL을 선택하면 됩니다.
Oracle도 기타 ODBC 드라이버가 제공되는 기타 데이터베이스도 모두 여기서 세팅이 가능합니다

잠시후,  Access 데이터베이스의 ODBC 세팅이 끝난 뒤 Ms SQL 서버일 경우 ODBC 잡는 법을 설명드릴 때 다시 이 윈도우를 보실 수 있을 것입니다...  ^^

여기서 중요한 것은 "데이터 원본 이름" 입니다.. 여기서 지정한 데이터 원본 이름을 통해서... 우리는 ASP 페이지에서 세팅된 데이터베이스를 접근할 수 있을테니까요....  "설명" 부분에는 자신이 알아보기 편하게 현재 데이터베이스의 설명을 적으시면 됩니다. 이제 MyDB 란 데이터 원본 이름(DSN: Data Source Name) 을 지정했으니... 어떤 데이터베이스를 MyDB 란 이름으로 사용할 것인지를 지정해야 합니다...

우리는 좀 전에 C:\Study\MyDataBase.mdb에 MDB 파일을 만들어 두었으니 그 파일을 지정하면 될 것입니다.위의 윈도우에서 가운데의  데이터베이스 : [선택] 버튼을 누르면 다음과 같은 윈도우가 뜨면서.. 파일을 지정할 수 있게 될 것입니다.... C:\Study\MyDataBase.mdb를 찾아서 지정해 주세요..

그리고 나면 다음과 같이 윈도우에 데이터베이스가 지정되어지게 될 것입니다.

이제 ODBC 설정은 끝났습니다.  이제 [확인] 버튼을 누르고 나면 우리는 ASP 페이지나 기타 여러 어플리케이션에서... MyDataBase.Mdb라는 데이터베이스 파일을 MyDB 란 이름으로써 사용할 수가 있게된 것입니다..  ^^

쉽지 않나요? 이것은 Access 의 경우의 ODBC 세팅이었구요... 이 ODBC가 세팅된 데이터베이스를 ASP 페이지에서 사용하는 것은 다음 강좌부터 진행될 것입니다.

그렇다면, Ms SQL 서버인 경우는 어떻게 될까요? 그러한 경운, 다시금 위의 ODBC 설정 윈도우를 열어서....  다시금 System DSN을 추가한다고 선택하면 됩니다.

방금 Access 로 잡아놓은 세팅이 보일 것입니다. 그것은 그것이고... 이번에 하려는 것은 SQL 서버를 사용하는 사용자일 경우입니다... DSN 이름.. 즉, 데이터 원본 이름은 중복될 수 없습니다..  ^^  고로, 이제 MyDB란 이름의 DSN은 사용할 수가 없다는 의미이지요...  그리고, SQL 서버를 쓰실분들은 위에서 한 Access 를 ODBC 잡는 것을... 하실 필요가 전혀 없습니다...  ^^   너무나도 당근과 같은 이야기지용...

SQL 서버의 특정 데이터베이스를 ODBC 잡는 것은 Access의 경우보다는 조금 어렵습니다. SQL 서버는 말그대로 서버이기에 계정이라는 것이 있고, 각각의 계정은 비밀번호를 가지고 있습니다. 그리고, 보안적인 부분이 강하게 움직이는 것이 서버이지요...  ^^  그러한 이유로 조금 더 복잡합니다만... 세팅에 어려움은 없습니다. 여러분은 금방 외울 수 있을 것입니다..  모든 ODBC세팅에 빠지지 않는 것이 무엇인지 기억하시면 되니까요... ODBC 세팅에 빠져서는 안되는 것일 무엇일까요??   마치 5W1H 와 같은 것...

어떤 데이터베이스 제품의 어떤 데이터베이스를 어떤 이름의 DSN으로 잡느냐는 것입니다.

위의 Access 의 경우에도 위의 조건을 따랐습니다. 먼저, 데이터베이스 제품을 선택했고, DSN이름을 지정한 다음, 해당 데이터베이스 파일을 지정해 주었습니다. 이는 SQL 서버에서도 오라클에서도 달라지지 않습니다.. 단지, 서버 제품에서는 사용자 계정 아이디와 비밀번호가 존재하기에 그것까지 세팅해 주는 부분이 추가되지요..

자.. 이 사실을 기억하시고...  이제 SQL 서버를 ODBC 연결해 보도록 합시다...^^

System DSN 탭에서..   [ADD]를 하게되면...  위와 같은 윈도우가 나오는데... 일반적으로 SQL 서버는 가장 밑에 존재하고 있습니다. 그것을 지정하시고..  [마침]을 누르시면 됩니다. 그러면 다음과 같은 윈도우가 등장합니다. 여기는 DSN과 설명 그리고... 데이터베이스 서버가 어떤 것인지 지정하는 부분이 등장합니다. DSN 명이 우리가 나중에 ASP 에서 사용할 이름이기에.. 이 이름을 잘 지정하고 외워두어야 합니다.

저는 아까의 Access와 구분을 하기 위해서.. MySQLDB 라고 주어 보았습니다. Access와는 다른 부분이... Server 라는 부분인데..  여러분의 네트웍상에는 여러대의 SQL 서버가 있을 수 있기 때문에...  그 서버의 이름을 지정하는 부분이 필요합니다. 여러 데이터베이스 서버가 존재할 수 있기 때문에 그중에 하나를 선정하는 것이지요.. 대부분, 자신의 PC 에 SQL 서버를 설치하고 있으실 것이기에...  다들 (local) 이라고 하시면 됩니다. 아니면, 자신의 컴이름을 기입하셔도 되져.. 컴 이름이 Sony 라면.  그 부분을 Sony 라고 적어주면 됩니다.

그리고.. [다음]...  그러면 이제 어떤 윈도우가 나올까요?

이번에는 어떤 아이디와 패스워드로 데이터베이스 서버로 접근할 것인지를 물어보는 윈도우가 나옵니다. NT 인증과 SQL 인증을 사용할 수 있는데..  대부분 SQL 인증을 많이들 사용합니다. 이것은 SQL 서버를 접근할 수 있는 계정을 NT 계정과는 따로  사용하겠다는 의미이지요...

저의 경우는 SQL 인증을 선택했구요.... 해당 아이디와 비밀번호는 SQL 서버의 기본적인 어드민 계정인 Sa를 사용했습니다. 기본적으로 Sa 계정은 암호가 없습니다.

하지만, 가급적.. 아니 반드시 SQL 서버 설치후 Sa 계정에게 반드시 암호를 부여하는 것이 좋습니다
(하지만, 사실 가급적 이 계정은 사용하지 않는 것이 좋긴 하죠.. 새로 계정을 하나 만들어서 사용하는 것이...)
저는 암호를 부여했기에... 위에 그림처럼 암호도 같이 지정하고 있는 것을 볼 수 있습니다. 지정이 잘 되었다면 다음으로 진행합니다.  혹, 다음과 같은 에러 메시지를 만나셨나요???

이 에러 메시지는 계정 아이디와 암호가 일치하지 않아서 나는 에러입니다... 이런 에러가 나면 SQL 서버 로 가셔서... 계정의 아이디와 암호를 다시금 확인해 보세요... 누군가가 암호를 바꾸어 두었던가, 그런 계정이 존재하지 않던가 할 것입니다...  ^^ 아이디와 암호도 모두 맞추어 주었다면...  ^^  다음과 같은 윈도우가 나옵니다...

그렇습니다. 바로 이제 우리가 사용할 데이터베이스를 선택하는 윈도우이지요...  ^^

기본적으로는 화면이 비활성화 되어져 있어서... 조금 혼란스러울 수 있습니다만... 여기의 가장 첫번째 체크박스에 체크표시를 하시고.. 위의 그림처럼.. 사용할 데이터베이스를 지정해 주어야 합니다. 우리의 경우 MyDataBase 이기에.. 그것을 선택하시면 됩니다. 이 단계를 제대로 거치치 않으면 기본적으로 Master 데이터베이스가 잡히게 되기에.. ODBC 를 잡아놓고도 제대로 ASP 페이지에서 데이터베이스로 접근이 안되는 일이 발생할 수 있습니다.

설정이 되었으면 다음으로...

그러면 위와 같은 윈도우가 나오는데요... 이것에서 우리가 세팅해 줄 것은 아무 것도 없습니다. 그냥 웃으면서 넘어가세요... ^^ [마침] 버튼을 눌러주시면, 다음과 같은 마지막 윈도우가 등장합니다.

여기서 지금까지 여러분이 세팅을 잡은 내역이 보여지는데요.. 그게 영어라 여러분은 별로 읽어보고 싶지 않을 수 있습니다...   하지만, 데이터베이스 이름은 가급적 꼭 확인하도록 하세요....  ^^ 그리고, 기분 나쁘다고 넘 성급하게 [OK] 를 누르지 마시구요... 꼭.. Test Data Source 를 해보세요

그리고,  위와같이 TESTS COMPLETED SUCCESSFULLY! 라고 메시지가 나오는 것을 확인 하셔야만 합니다...  이러면 ODBC 세팅이 완벽하다는 것을 알 수가 있지요... 여기까지 꼭 확인해 보셔야만 한답니다..... 이래서 Access 와 Ms SQL 서버의 ODBC 설정부분은 다 설명을 드렸네여..

뜨아아... 첫 강좌인데도.. 무척이나..  긴 이야기를 했습니다요...  하지만, 그래도 뭔가 부족해 보이는 것은 왜일까요? 흠흠... 이번 강좌에 대한 여러분의 멘트를 기대해 보구요.... 다음 강좌부터 이제 진짜 "게시판 만들기"는 시작됩니다...

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

1. OCP 자격 취득하면 혜택이 무엇입니까?
 한국오라클 교육센터 정규 과정 교육비의 20% 할인 혜택이 주어집니다.
 오라클의 세미나 및 기술교육에 초대됩니다.
 한국오라클 교육 협력사로 등록시 자격 요건이 됩니다.
 한국오라클 입사 채용 심사시 우대기준이 됩니다.
 본인 희망시 소정의 절차를 거쳐 한국오라클의 계약강사로 활동 할 수 있습니다.
 오라클 제품 및 전략에 대한 최신 정보를 받아 보실 수 있습니다.
 오라클 공인 전문가를 업계의 필요한 부문에 연결하여 드립니다.

2. OCP 시험은 언제/어디에서 봅니까?

OCP는 오라클에서 주관하며, Sylvan*Prometric에서 시험을 대행하고 있습니다.
현재 국내에는 Sylvan*Prometric과 계약되어 있는 테스트센터가 10여 곳이 있습니다.
이곳으로 시험에 대한 문의를 하시면 되고, 일정은 본인이 원하시는 일자와 시간에
테스트센터로 예약하시어 응시하시면 됩니다.

3. 과목당 몇 문제나 출제 됩니까?

과목마다 다르며 대부분 60 ~ 70 문제 정도 출제됩니다. 경우에 따라 채점 되지
않는 추가적인 문제가 출제될 수도 있습니다. 이는 문제 은행에 추가하기 위해
시범적으로 난이도 등을 테스트 하기 위해 출제됩니다.

4. 시험은 몇 퍼센트를 맞아야 합격이 가능합니까?

과목마다 조금씩 다르며, 각각 800 만점으로 되어 있고 580 ~ 620점 이상이면
합격하실 수 있습니다. 옮긴이 주:제 경험으로 모두 620점이 Cut-line입니다.

5. 한 과목에 떨어지면 이 과목은 언제 다시 응시할 수 있습니까?

한달 뒤에 재응시 가능합니다.

6 OCP 한글 시험은 언제부터 가능합니까?

현재 OCP-DBA7.3 Track과 OCP DBA8 Track 업그레이드 시험인 Oracle8 New Features
과목은 응시 가능합니다.

7 OCP 자격증이 아직 오지 않았습니다. 어디로 문의하면 됩니까?

오라클은 자격제도에 관한 일체를 Sylvan*Prometric에 대행하고 있습니다.
자격증에 대한 명의는 오라클이나 발행 및 전달은 Sylvan*Prometric에서 책임지고
있습니다. 아직 받지 못하셨다면 합격일로 부터 6주까지 기다려 보신 다음 시험을
보신 테스트센터로 문의하시면 됩니다.

8 OCP를 취득하기 위한 자격조건과 공부를 시작하여 취득하기까지 걸리는 시간은 ?

OCP를 취득하기 위해 특별한 자격 조건은 없으나 데이타베이스라고 하는 광범위하고
깊이 있는 분야의 학습을 위해서는 데이타베이스의 개념 및 기초 지식이 필요하며
준비를 위해 필요한 시간은 개인별 차이가 있겠으나 일반적으로 데이타베이스에 대한
기초 지식만을 가지고 있는 초보자의 경우 약 6-8개월 가량 소요되며 1~2년 정도의
오라클 사용 경험을 가진 중급자의 경우 3개월에서 4개월 정도 3년 이상의 고급
사용자의 경우는 약 1~2개월 정도의 준비 기간이 필요합니다.
9 OCP를 취득 준비시 주의 사항은?

일부 무책임한 사람들에 의해 온라인 테스트의 한계를 이용하여 기출문제 등을
배포하는 경우가 있는데 이를 암기식으로 외워 자기 기술력 향상을 게을리 할 경우
자격증 취득은 가능할 지 모르나 이후에 본인 스스로 할 수 있는 일은 아무 것도
없다는 것 입니다. 특히 운 좋게 취업이 되었다고 하여도 요즘과 같이 데이타의
중요성이 강조되는 시기에 자칫 회사의 중요한 자산(데이타)에 손실이라도 입히는
경우 심각한 문제가 발생할 수 있을 것입니다.
옮긴이 주: 정말 맞는 말입니다. IMF로 한참 취업이 안되던 1999년초 모 회사(금융관련)에
취직이 된 신입사원이 Data를 날려 버리는 일로 인해 회사에 엄청난 피해를 입히게 되고
퇴사를 하게 된 일도 있었답니다. 기출문제만 찾아 다니지 마십시요.

10.자격증을 공부하는 사람들에게 권해주고 싶은 효과적인 학습방법은 ?

현재 OCP를 취득하기 위해서는 한국오라클교육센터에서 진행하는 과정을 수강하는
것이 가장 유리합니다. 이는 이 분야의 심도 있는 내용의 강의를 진행할 강사진에서
보면 그 답은 확연합니다. 대부분의 강사가 한국오라클의 정규 직원들로 최소 2년
이상의 오라클 전문교육 경력을 보유하고 있습니다.
 각 Track을 구성하고 있는 테스트에 대한 정규 개별 과정을 수강하고 준비하는 방법
 단기간에 Job-Related된 집약적인 교육을 통해 투자시간 대비 효과를 극대화하는
      전문가양성과정을 수강하여 준비하는 방법
 IC(Interactive Courseware, 구CBT : 자율학습프로그램)를 통해 학습하는 방법
 각 Track의 시험은 오라클 교육교재와 CBT를 중심으로 출제되고 있으며,
      단순한 암기 위주의 지식 보다는 이해를 바탕으로 하는 응용력 측정에 비중을
      두고 있음에 유의하여 준비하는 것이 바람직합니다.

11. 자격증 소지자가 어떤 업체에서 종사하고 있으며, 업체에서 하는 업무에서 얼마나
     활용  되고 있는가?

대부분 IT업체나 SI업체에 종사하고 있으며 실무 개발자나 DBA들이 응시하여
합격한 것으로 나타나 실무 경험에 OCP Test 준비를 통한 이론적인 부분이 결합하여
업무 능률을 배가하고 있고 취득자 대부분도 업무 능률 향상에 매우 만족해
하고 있습니다. 또한 현재 학생들의 OCP 취득을 위해 방학특강, 오라클의 대학
정규과정 제공, 대졸 미취업자을 위한 국제공인자격과정(정보통신부 주관) 등
여러 각도로 학생들과 미취업자들의 OCP준비를 위한 과정들을 진행하고 있으며
오라클을 사용하는 각 기업들로서는 전산 관련 업무 담당자의 입사 전 교육이
실현되어 교육비용의 감소, 입사와 동시에 업무 투입 등 많은 이점을 받을 수 있습니다.

12. 오라클 자격증에 대한 전망은?

인증제도란 자사 제품에 대한 홍보의 일환으로도 훌륭한 역할을 할 수 있는 마케팅
프로그램으로 각 회사는 이 분야에 있어 치열한 경쟁 구도를 이루고 있습니다.
1989년 이래로 Certification Program을 진행한 Novell을 비롯하여 Microsoft,
LOTUS 등 70개가 넘는 H/W, S/W Vendor들이 1991년 이래로 Certification Program을
진행하고 있고 고객에게서도 상당한 호응을 받고 있습니다. 인증제도가 개인에게 있어서는
관련 Career에 대한 기술적인 보증과 고소득을 의미합니다. 이미 특정 인증제도의
몇몇 인원들은 고소득의 연봉을 성취하고 있으며 개인의 기술적인 주가를 마음껏
올리고 있는 데서 증명됩니다. 오라클에서도 많은 협력사와 고객들로 부터 주목 받고
있는 OCP가 기존의 타사의 다른 인증 제도 못지않은 좋은 프로그램으로 자리 매김을
하리라 확신합니다. 이것은 오라클 고객들에게 향후 검증된 유능한 인력을 적재적소에
투입해 줄 수 있으므로 해서 대 고객 만족의 좋은 수단이 될 수 있는 바탕을 만드는
계기라 할 수 있습니다. 여러 개의 자격 제도중 한 개를 선택하여 취득하길 원한다면
다음과 같은 것들을 고려함이 타당합니다.
첫째 : 관련 제품의 시장 점유율 및 인지도
둘째 : 희소성. 즉, 누구나 쉽게 취득할 수 있는 것이라면 투자할 필요가 없다.
셋째 : 자격제도를 주관하는 회사의 공신력
넷째 : 자격제도를 취득할 수 여러가지 준비 방법의 제공입니다.
현재 데이타베이스 분야에서 독보적인 기술력을 발휘하여 Market을 주도하고 있는
오라클의 자격증이라면 인지도면에서나 공신력면에서 주저없이 도전해 볼 만 합니다.

 

※ 오프라인 오라클 교육은...

http://www.itmoya.net/ocp/main_1.htm

- 오라클지정 교육센터, 바우쳐제공, 자체 시험실시

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

LENGTH 함수와 LENGTHB 함수
  

오라클에서 LENGTH 함수를 사용하면 한글을 1byte로 계산하여 리턴 합니다. 
 한글을 2byte로 계산하여 리턴 받으려면 LENGTHB 함수를 사용해야 합니다.


LENTGTHB 함수는 byte 단위로 계산을 합니다.
  
 -- LENGTH 함수
SQL>SELECT name, LENGTH(name) LEN  FROM lentest;
 
NAME                        LEN
-------------------- ----------
오라클                        3
oracle                        6
 
 -- LENGTHB 함수 
SQL>SELECT name, LENGTHB(name) LEN  FROM  lentest;
 
NAME                        LEN
------------------- ----------
오라클                        6
oracle                        6

 

추천학원

오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가 데이터베이스관리자 9i 10g 오라클공인교육센터 오라클인증 sql 오라클 ocp 오라클학원 ocp학원 오라클자격증 ocp자격증 oracle oracle자격증 oracle학원 db db관리자 db전문가 데이터베이스전문가

Posted by genesmer
,