2021년 12월 4일 토요일

ORACLE학원동영상/오라클 시퀀스(Oracle Sequence), 확장 가능한 시퀀스(Scalable Sequence), 오라클학원교육, 자바오라클교육

 

ORACLE학원동영상/오라클 시퀀스(Oracle Sequence), 확장 가능한 시퀀스(Scalable Sequence), 오라클학원교육, 자바오라클교육

 

http://ojc.asia/bbs/board.php?bo_table=LecOracle&wr_id=300 


오라클 시퀀스(Oracle Sequence), 확장 가능한 시퀀스(Scalable Sequence)

오라클 시퀀스(Oracle Sequence), 확장 가능한 시퀀스(Scalable Sequence)오라클 시퀀스확장 가능한 시퀀스(Scalable Sequences) 실습 : 오라클19C일반적으로 사용되는 시퀀스는 “일련번호 자동생성기”로 고유

ojc.asia


오라클 시퀀스

https://youtu.be/2FIsUlSXdys


확장 가능한 시퀀스(Scalable Sequences)

https://www.youtube.com/watch?v=S8OhalDs6Mk&list=PLxU-iZCqT52Dlz0zGgFiq1mBz21arFUHS&index=29 


                                                                 실습 : 오라클19C




일반적으로 사용되는 시퀀스는 “일련번호 자동생성기”로 고유한 정수를 생성하는데 사용하는 스키마 객체schema objects입니다. 


PK 값을 시퀀스를 이용하여 입력을 할때 시퀀스 번호는 대부분  1 씩 증가하므로 대량의 데이터가 입력된다면 입력되는 데이터는  B*Tree 인덱스의 한쪽끝 리프 블록에 배치되므로 이곳에서 경합이 발생하여 락lock이 발생할 수 있습니다. 


오라클 8i 이후 이 문제를 해결하기 위해 역방향 키 인덱스reverse key indexes를 사용했지만 오라클 18C 이후 확장 가능한 시퀀스scalable sequence를 제공 합니다.


확장 가능한 시퀀스는 6자리 접두사를 추가하는데  접두사는 3자리 인스턴스 offset, 3자리 세션 offset으로 구성됩니다. SQL*Plus 및 SQL Developer의 접속을 달리하면 세션이 변하므로 접두사는 변합니다.


[(instance id % 100) + 100] || [session id % 1000]


오라클에서 시퀀스 생성시 기본 속성은 NOSCALE이고 원하는 경우 명시 적으로 지정할 수 있습니다.


오라클에서 시퀀스를 생성할 때 “SCALE” 속성을 설정하면 “SCALE NOEXTEND”와 동일하며  MAXVALUE 값을 기반으로 6자리 접두사 + 0으로 채우고 순번값(1,2,3,,,)으로 시퀀스가 생성됩니다. (MAXVALUE가 10자리 9999999999 이라면 접두사 6자리 + 0001 이런식으로 시퀀스 값이 만들어 집니다.)


SCALE EXTEND”로 시퀀스를 만들면 6자리 접두사가 추가되어 MAXVALUE 길이 + 6으로 시퀀스 길이를 만듭니다.






실습


SCALABLE SEQUENCE를 생성 합니다.


minvalue 1, maxvalue 9999999999  값을 가지는 SEQ_TEST 확장 가능한 시퀀스를 생성하세요.

시퀀스 값을 MAXVALUE 길이와 같이 10자리로 만들기 위해 앞6자리는 인스턴스ID, 세션ID로 6자리를 만들고, 나머지4자리를 0으로 만 채우고 순번을 채웁니다.


CREATE SEQUENCE SEQ_TEST

MINVALUE 1

MAXVALUE 9999999999

SCALE;


<실행결과>

Sequence SEQ_TEST이(가) 생성되었습니다.


생성한 SCALABLE SEQUENCE의 NEXTVAL, CURRVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870001


시퀀스는 만들고 최초 NEXTVAL하면 1부터 시작됩니다. 시퀀스의 maxvalue가 9999999999 10자리 이고 앞6자리는 접두사가 위치합니다. 나머지 4자리에 시퀀스 값들이 증가하면서 위치 합니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870002


이전의 NEXTVAL에서 1 증가된 값 입니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 CURRVAL 값을 조회하세요.


SELECT SEQ_TEST.CURRVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870002



SCALE EXTEND로 시퀀스를 만들면 최종 시퀀스 번호는 SCALE로 만든 시퀀스보다 6자리 더 많습니다. 

실습


SCALABLE SEQUENCE를 삭제 후 “SCALE EXTEND”로 재생성 합니다.


minvalue 1, maxvalue 9999999999  값을 가지는 SEQ_TEST 시퀀스를  SCALE EXTEND 옵션으로 생성하세요.(삭제 후 재생성 하세요)

오른쪽 10자리는 0으로 채우면서 시퀀스 일련번호를 할당하고 앞6자리는 인스턴스ID, 세션ID로 6자리를 만듭니다.


DROP SEQUENCE SEQ_TEST;

CREATE SEQUENCE SEQ_TEST 

MINVALUE 1

MAXVALUE 9999999999

SCALE EXTEND;


<실행결과>

Sequence SEQ_TEST이(가) 생성되었습니다.


생성한 SCALABLE SEQUENCE의 NEXTVAL, CURRVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870000000001


시퀀스의 maxvalue가 9999999999 인데 이자리수보다 6자리 많습니다. maxvalue 까지 10자리를 0으로 채우고 시퀀스 값들이 시작되며, 앞6자리에 추가로 접두사가 위치 합니다. 총16자리 입니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870000000002


이 전의 NEXTVAL 값에서 1이 증가 되었습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 CURRVAL 값을 조회하세요.


SELECT SEQ_TEST.CURRVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870000000002


실습


이전에 작성한 확장 가능한 시퀀스를 NOSCALE로 변경합니다.


ALTER SEQUENCE SEQ_TEST NOSCALE;


<실행결과>

Sequence SEQ_TEST이(가) 변경되었습니다.


변경한 SCALABLE SEQUENCE의 CURRVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 CURRVAL 값을 조회하세요.


SELECT SEQ_TEST.CURRVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870000000002


NOSCALE 옵션 시퀀스로 변경 되었지만 NEXTVAL을 하지않아 이전에 작성한 시퀀스의 번호 16자리 1013870000000002 값이 16자리 시퀀스 값입니다.


변경한 SCALABLE SEQUENCE의 NEXTVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

ORA-08004: 시퀀스 SEQ_TEST.NEXTVAL exceeds MAXVALUE은 사례로 될 수 없습니다. 시퀀스의 maxvalue가 9999999999 인데 현재 시퀀스의 CURRVAL은 “1013870000000002“ 이므로 maxvalue 값을 초과하여 오류가 발생합니다.


시퀀스를 “SCALE NOEXTEND”로 변경합니다.


SEQ_TEST 확장 가능한 시퀀스를 “SCALE NOEXTEND”로 변경하세요.

SCALE NOEXTEND는 SCALE 옵션과 동일하며 현재 시퀀스값 자체가 16자리에서 ALTER SEQUENCE 되었으므로 이므로 이 값을 NEXTVAL 하기 위해서는 접두어 6자리가 추가되어 총22자리가 있어야 합니다.


ALTER SEQUENCE SEQ_TEST SCALE NOEXTEND;


<실행결과>

Sequence SEQ_TEST이(가) 변경되었습니다.



변경한 SCALABLE SEQUENCE의 CURRVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 CURRVAL 값을 조회하세요.


SELECT SEQ_TEST.CURRVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870000000002


“SCALE NOEXTEND” 옵션 시퀀스로 변경 되었으므로 “1013870000000002” 값이 16자리 시퀀스 값입니다. NEXTVAL 하면 앞에 6자리 접두사가 붙으니 자리 수 주의해야 합니다.


변경한 SCALABLE SEQUENCE의 NEXTVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

ORA-08004: 시퀀스 SEQ_TEST.NEXTVAL exceeds MAXVALUE은 사례로 될 수 없습니다. 시퀀스의 maxvalue가 9999999999 10자리인데 현재 시퀀스의 CURRVAL은 “1013870000000002” 16자리 이고 NEXTVAL을 하면 앞에 6자리 접두사가 붙어 총 22자리가 필요하므로 maxvalue를 초과하였다는 오류가 발생합니다.


시퀀스의 maxvalue를 9999999999999999999999 22자리로 변경합니다. 

SEQ_TEST 확장 가능한 시퀀스의 maxvlaue를 9999999999999999999999 22자리 값으로 변경하세요.


ALTER SEQUENCE SEQ_TEST MAXVALUE 9999999999999999999999;


<실행결과>

Sequence SEQ_TEST이(가) 변경되었습니다.


변경한 SCALABLE SEQUENCE의 NEXTVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013871999990000000003


총22자리에 시퀀스 값이 할당 되었고 앞 부분 6자리는 접두사 입니다.


이번에는 시퀀스를 “SCALE EXTEND”로 변경합니다.


SEQ_TEST 확장 가능한 시퀀스를 SCALE EXTEND로 변경하세요.


ALTER SEQUENCE SEQ_TEST SCALE EXTEND;


<실행결과>

Sequence SEQ_TEST이(가) 변경되었습니다.


변경한 SCALABLE SEQUENCE의 NEXTVAL을 조회해 보겠습니다.


DUAL 테이블을 이용하여  SEQ_TEST 시퀀스의 NEXTVAL 값을 조회하세요.


SELECT SEQ_TEST.NEXTVAL AS SEQ FROM DUAL;


<실행결과>

 
SEQ
1
1013870000001999990000000004


22자리 최대길이에 더해 앞6자리에 새로운 접두사가 붙었습니다. 전체 28자리 입니다. SCALE EXTEND는 MAXVALUE 길이를 늘이지 않아도 자동 확장 합니다.


생성한 확장 가능한 시퀀스를 딕셔너리 뷰에서 조회해 보겠습니다.

실습


USER_SEQUENCES 뷰는 사용자가 생성한 시퀀스의 정보를 제공하는 뷰 입니다.


USER_SEQUENCES 뷰에서 SEQ_TEST 시퀀스의 정보를 조회하세요.


SELECT SEQUENCE_NAME,

       SCALE_FLAG,

       EXTEND_FLAG

FROM   USER_SEQUENCES

WHERE  SEQUENCE_NAME = 'SEQ_TEST';


<실행결과>

 
SEQUENCE_NAME
SCALE_FLAG
EXTEND_FLAG
1
SEQ_TEST
Y
Y


SEQ_TEST 시퀀스는 이전 실습에서 SCALE EXTEND로 변경을 한 상태 입니다. 그래서 SCALE_FLAG, EXTEND_FLAG 값이 ‘Y’ 입니다.


 

​ 

 

 

#확장가능한시퀀스,#Scale시퀀스, #오라클시퀀스,#시퀀스, #오라클학원, #SQL학원, #SQL교육, #오라클교육, #ORACLE교육, #ORACLE학원, #ORACLE동영상, #ORACLE강좌, #오라클학원동영상, SQL학원동영상,확장가능한시퀀스,Scale시퀀스, 오라클시퀀스,시퀀스,오라클학원, SQL학원, SQL교육, 오라클교육, ORACLE교육, ORACLE학원, ORACLE동영상, ORACLE강좌, 오라클학원동영상, SQL학원동영상  


(오라클학원/자바학원)오라클 데이터베이스링크(Oracle Database Link, DBLink) 실습, 동의어, DBLink실습동영상, 오라클학원교육보다 좋아요~

 

(오라클학원/자바학원)오라클 데이터베이스링크(Oracle Database Link, DBLink) 실습, 동의어, DBLink실습동영상, 오라클학원교육보다 좋아요~ 


http://ojc.asia/bbs/board.php?bo_table=LecOracle&wr_id=299 


오라클 데이터베이스링크(Oracle Database Link, DBLink) 실습, 동의어, DBLink실습동영상, 오라클학원교육

오라클 데이터베이스링크(Oracle Database Link, DBLink) 실습, 동의어, DBLink실습동영상, 오라클학원교육보다 좋아요~오라클 데이터베이스 링크(Oracle Database Links, DBLinks)이론 및 실습(데이터베이스링크,

ojc.asia

 

https://youtu.be/V8zNphSZJdo

오라클 데이터베이스 링크

(Oracle Database Links, DBLinks)


                                                        이론 및 실습(데이터베이스링크, 동의어)



                                                               실습 : 오라클19C


https://youtu.be/Fz3r6jNhXUs

데이터베이스 링크database links는 다른 데이터베이스에 접근할 수 있도록 하는 스키마 객체schema objects로 원격 데이터베이스의 테이블 또는 뷰를 접근하기 위해 실무에서도 많이 사용하고 있습니다. 


모든 사용자가 사용할 수있는 공용public 데이터베이스 링크와 데이터베이스 링크를 만든 계정에서만 사용할 수 있는 전용private 데이터베이스 링크가 있습니다.


데이터베이스 링크는 로컬 데이터베이스에 연결된 클라이언트가 로컬 데이터베이스에 저장된 데이터베이스 링크를 사용하여 원격 데이터베이스의 테이블, 뷰에 액세스 할 수 있는데 SQL문에서 테이블 또는 뷰 이름에 @dblink이름을 추가하여 다른 데이터베이스의 테이블 또는 뷰를 참조 할 수 있습니다. 


SELECT 문을 사용하여 다른 데이터베이스의 테이블이나 뷰를 쿼리 할 수 ​​있고 INSERT, UPDATE, DELETE문을 사용하여 원격 테이블 및 뷰에 액세스 할 수도 있습니다.


원격 데이터베이스에 대해 ORCL2라는 데이터베이스 링크를 생성하였다면 이를 이용하여 원격 데이터베이스의 테이블 또는 뷰에 액세스 접근할 수 있습니다.


EMP@ORCL2라는 형식으로 원격 데이터베이스의 EMP 테이블의 데이터를 쿼리할 수 ​​있습니다.


SELECT * FROM EMP@ORCL2;


데이터베이스 링크를 통해 원격 테이블 또는뷰에 접근할 때 현재의 로컬 데이터베이스는  오라클 클라이언트 역할을 합니다.


또한 동의어synonyms를 사용하여 데이터베이스 링크를 통해 테이블에 접근하기위한 구문을  단순화 할 수 있습니다.

 

CREATE SYNONYM REMOTE_EMP FOR EMP@ORCL2;


그리고 데이터베이스 링크가 있는 원격 테이블 이름 대신 동의어를 사용합니다.


SELECT * FROM REMOTE_EMP;


[기본형식]

CREATE [PUBLIC] DATABASE LINK [schema.]db_link_name
CONNECT TO user_name IDENTIFIED BY password
USING connect_string

  • PUBLIC : 공용 데이터베이스 링크를 정의하며 생략하면 전용 데이터베이스 링크를 정의합니다.
  • db_link_name : 데이터베이스 링크 이름
  • user_name : 원격 데이터베이스에 접속하기 위한 사용자 계정
  • password : 원격 데이터베이스에 접속하기 위한 사용자의 비밀번호
  • connect_string : 원격 데이터베이스에 접근하기 위한 연결 문자열 또는 tnsnames.ora 파일에 정의된 TNS이름


실제 물리적으로 원격 데이터베이스를 구성하기는 힘들어 원격 데이터베이스와 같은 역할을 하는 데이터베이스를 오라클 Database Configuration Asistant로 로컬 PC에 추가로 생성을 하고 이를 원래 실습하던 계정(scott)에서 데이터베이스 링크를 생성하여 추가한 원격 데이터베이스의 테이블을 쿼리해 보겠습니다.

실습


1. 실습을 의해 로컬 PC에 데이터베이스를 추가로 생성 합니다.


시작 >> Oracle - OraDB19Home1 >> Database Configuration Assitant 를 선택하고 orcl2 라는 이름의 데이터베이스를 생성 합니다.



전역 데이터베이스 이름을 “orcl2”로 부여하였습니다. 관리비밀번호는 적당히 입력을 하고 컨테이너 데이터베이스 생성(E) 체크를 해제 후 “다음”을 클릭 합니다. 관리자 비밀번호는 꼭 기억을해 주세요. 원격 DB에서 사용자를 생성하기 위해 관리자 계정으로 접근할 때 필요 합니다.



“완료”를 클릭하여 데이터베이스를 생성 합니다.


2. SQL Developer에서 추가로 생성한 ORCL2 데이터베이스의 관리자 계정(SYSTEM/관리자비밀번호)으로 로그인을하여 scott 이라는 사용자를 생성하고 EMP 테이블을 생성 후 데이터를 입력합니다.



새로운 연결의 이름을 orcl2로 했고 사용자이름은 데이터베이스 관리자인 system 그리고 이전에 DB 생성시 부여한 관리자 비밀번호를 입력 후 아래쪽 SID에 orcl2 라고 입력합니다. 다 입력하셨으면 “접속”을 클릭 합니다.


scott이라는 사용자를 생성 합니다.(비밀번호 소문자 tiger로 부여 했습니다.)

오라클 11g 이후부터 기본적으로 비밀번호의 대소문자는 구별 합니다.


오라클 12C 이후부터 계정 앞에 c## 키워드를 붙이도록 규칙이 바뀌었는데 이를 사용하지 않기 위해서는 ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE로 해야 합니다. 아래 명령을 차례로 실행하세요.


SCOTT 사용자를 생성하면서 비밀번호는 tiger로 부여하세요. 사용자 생성 후 CONNECT, RESOURE 롤을 부여하고 사용자의 기본 테이블 스페이스를 USERS로 부여합니다. 또한 USERS 테이블스페이스에 대해 제한없이 사용할 수 있는 권한을 부여하세요.


ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;

CREATE USER scott IDENTIFIED BY tiger;

GRANT CONNECT, RESOURCE TO scott;


--GRANT UNLIMITED TABLESPACE TO scott;  또는

ALTER USER scott DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;


<실행결과>

Session이(가) 변경되었습니다.

User SCOTT이(가) 생성되었습니다.

Grant을(를) 성공했습니다.

User SCOTT이(가) 변경되었습니다.


SQL Developer에서 추가한 원격 DB의 SCOTT 계정으로 새로운 연결을 하나 만들고 접속해 보겠습니다. 좌 상단의 + 버튼을 클릭하여 접속정보를 입력 합니다.


Name은 임의로 orcl2_scott 이라고 했습니다. 

사용자 이름은 scott, 비밀번호는 tiger, 아래의 SID는 orcl2라고 입력 후 “접속” 버튼을 클릭 하면 접속이 됩니다. 열려진 질의 탐색기 창에서 테이블을 생성하고 데이터를 한건 입력 하겠습니다.


empno(PK), ename 2개의 컬럼을 가지는  EMP 테이블을 생성 후 데이터를 한건 입력하세요.


CREATE TABLE EMP (

    EMPNO NUMBER PRIMARY KEY,

    ENAME VARCHAR2(50)

);


INSERT INTO EMP (EMPNO, ENAME) VALUES (1, '1길동');

COMMIT;


<실행결과>

Table EMP이(가) 생성되었습니다.

1 행 이(가) 삽입되었습니다.

커밋 완료.





추가로 설치한 데이터베이스에 scott 이라는 사용자를 생성하고 그 안에 EMP 테이블을 만들고 데이터를 한건 입력 했습니다.


이제는 원래 사용하던 데이터베이스 ORCL의 scott 계정으로 돌아와서 추가로 설치한 원격 데이터베이스인 ORCL2에 대해 데이터베이스 링크를 생성하고 EMP 테이블을 쿼리한 후 동의어를 만들어서도 쿼리해 보겠습니다.

실습


SQL Developer에서 원래 접속했던 데이터베이스인 ORCL로 scott 계정(비밀번호는 소문자 : tiger)으로 접속을 하겠습니다.



접속을 한후 데이터베이스 링크를 생성 합니다.


원격 DB ORCL2의 scott 계정에 대한 데이터베이스 링크 ORCL2를 생성하세요.


CREATE DATABASE LINK ORCL2 CONNECT TO scott IDENTIFIED BY "tiger"

USING '(DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = ORCL2)

    )

)';



<실행결과>

Database link ORCL2이(가) 생성되었습니다.


SERVICE_NAME에는 추가로 만든 데이터베이스의 전역 데이터베이스 이름인 ORCL2를 입력했고 HOST에는 로컬 PC에 DB를 설치했으므로 localhost라고 했습니다. 위의 CONNECT TO 절에는 ORCL2 데이터베이스의 사용자 계정 및 비밀번호를 기술 합니다. CREATE 다음에 PUBLIC 키워드를 사용해서 데이터베이스 링크를 만들면 공용으로 만들어 모든 사용자들이 이용할 수 있습니다.


데이터베이스 링크는 원격 DB의 IP 또는 HOSTNAME, 접속하고 싶은 사용자 계정 정보를 가지고 있는 스키마 오브젝트 입니다. 그래서 접근하고 싶은 테이블을 기술할 때는 테이블명@DB링크명 으로 작성 합니다.


scott 사용자의 EMP 테이블을 SELECT 해 보겠습니다.


데이터베이스 링크를 사용하여 원격 데이터베이스 ORCL에서 scott 사용자의 EMP 테이블을 SELECT 하세요.


SELECT * FROM EMP@ORCL2;


<실행결과>

 
EMPNO
ENAME
1
1
1길동


원격 데이터베이스의 EMP 테이블의 내용이 잘 조회 됩니다.^^


데이터베이스 링크 EMP@ORCL2에 대해 동의어를 만들어서 쿼리해 보겠습니다.

실습


동의어를 생성 합니다.


EMP@ORCL2에 대한 동의어 ORCL2를 생성하세요.


CREATE SYNONYM ORCL2_SCOTT_EMP FOR EMP@ORCL2;


<실행결과>

Synonym ORCL2_SCOTT_EMP이(가) 생성되었습니다.


원격 데이터베이스 scott 사용자의 EMP 테이블을 SELECT 해 보겠습니다.


동의어를 사용하여 원격 데이터베이스 scott 사용자의 EMP 테이블을 SELECT 하세요.


SELECT * FROM ORCL2_SCOTT_EMP;


<실행결과>

 
EMPNO
ENAME
1
1
1길동



원격 데이터베이스 scott 사용자의 테이블을 접근하기 위한 데이터베이스 링크 ORCL2를 삭제합니다.


데이터베이스 링크 ORCL2를 삭제하세요.


DROP DATABASE LINK ORCL2;


<실행결과>

Database link ORCL2이(가) 삭제되었습니다.


이전에 작성한 동의어 ORCL2_SCOTT_EMP를 삭제 합니다.


동의어 ORCL2_SCOTT_EMP를 삭제하세요.


DROP SYNONYM ORCL2_SCOTT_EMP;


<실행결과>

Synonym ORCL2_SCOTT_EMP이(가) 삭제되었습니다.


#데이터베이스링크,#DB링크, #DBLINK,#오라클DB링크, #오라클학원, #SQL학원, #SQL교육, #오라클교육, #ORACLE교육, #ORACLE학원, #ORACLE동영상, #ORACLE강좌, #오라클학원동영상, #SQL학원동영상,데이터베이스링크, DB링크, DBLINK,오라클DB링크,오라클학원, SQL학원, SQL교육, 오라클교육, ORACLE교육, ORACLE학원, ORACLE동영상, ORACLE강좌, 오라클학원동영상, SQL학원동영상  


오라클학원교육/오라클교육학원, 오라클 동의어, 시퀀스(Oracle Synonym, Sequence), 사용자 생성(CREATE USER), 오라클 뷰 간단한 오라클동영상교육으로 보세요~

 

오라클학원교육/오라클교육학원, 오라클 동의어, 시퀀스(Oracle Synonym, Sequence), 사용자 생성(CREATE USER), 오라클 뷰 간단한 오라클동영상교육으로 보세요~


http://ojc.asia/bbs/board.php?bo_table=LecOracle&wr_id=298

이미지 썸네일 삭제
오라클 시퀀스(Oracle Sequence), ORACLE교육/오라클교육/SQL교육/오라클시퀀스교육

오라클 시퀀스(Oracle Sequence), ORACLE교육/오라클교육/SQL교육/오라클시퀀스교육오라클 시퀀스(Oracle Sequence)실습 : 오라클19C오라클 시퀀스sequence는 다중 사용자 환경에서 사용하는 “숫자(일련번호) 자동 생성기” 입니다. 주로 PK primary key, UKunique key 컬럼 값을 유일하게 자동 생성하는 경우…

ojc.asia





#오라클USER, #오라클사용자, #CREATEUSER, #ORACLE뷰, #오라클VIEW, #오라클교육, #오라클학원, #ORACLE, #ORACLE교육, #ORACLE학원, #VIEW, #뷰란, #오라클동영상, #ORACLE동영상, #오라클강의, #ORACLE강의, #ORACLE강좌, #오라클강좌, 오라클USER, 오라클사용자, CREATEUSER, 오라클뷰, ORACLE뷰, 오라클VIEW, 오라클교육, 오라클학원, ORACLE, ORACLE교육,



오라클 시퀀스(Oracle Sequence), 오라클학원교육에서 많이 본 MS-SQL IDENTITY, MySQL AUTO_INCREMENT와 유사하죠, 오라클 시퀀스(Oracle Sequence), ORACLE교육/오라클교육/SQL교육/오라클시퀀스교육

 

오라클 시퀀스(Oracle Sequence), 오라클학원교육에서 많이 본 MS-SQL IDENTITY, MySQL AUTO_INCREMENT와 유사하죠, 오라클 시퀀스(Oracle Sequence), ORACLE교육/오라클교육/SQL교육/오라클시퀀스교육


http://ojc.asia/bbs/board.php?bo_table=LecOracle&wr_id=298 


오라클 시퀀스(Oracle Sequence), ORACLE교육/오라클교육/SQL교육/오라클시퀀스교육

오라클 시퀀스(Oracle Sequence), ORACLE교육/오라클교육/SQL교육/오라클시퀀스교육오라클 시퀀스(Oracle Sequence)실습 : 오라클19C오라클 시퀀스sequence는 다중 사용자 환경에서 사용하는 “숫자(일련번호)

ojc.asia




오라클 시퀀스(Oracle Sequence)




실습 : 오라클19C



오라클 시퀀스sequence는 다중 사용자 환경에서 사용하는 “숫자(일련번호) 자동 생성기” 입니다. 주로 PK primary key, UKunique key 컬럼 값을 유일하게 자동 생성하는 경우에 사용됩니다.


https://youtu.be/S8OhalDs6Mk


MS-SQL 및 MySQL은 테이블의 속성으로 시퀀스 기능을 제공하는데 MS-SQL은 컬럼의 identity 속성으로 MySQL은 auto_increment 속성으로 제공 합니다. 반면 오라클에서는 테이블 또는 컬럼과는 독립적으로 생성되는 스키마 오브젝트로 생성 및 삭제 됩니다.


https://www.youtube.com/watch?v=Fz3r6jNhXUs&list=PLxU-iZCqT52Dlz0zGgFiq1mBz21arFUHS&index=28 


시퀀스.CURRVAL : 시퀀스의 현재 값을 리턴 합니다.

시퀀스.NEXTVAL : 시퀀스를 증가시키고 다음값을 리턴 합니다.


[기본형식]

CREATE SEQUENCE sequence_name
             [INCREMENT BY n]
             [START WITH n]
             [{MAXVALUE n | NOMAXVALUE}]
             [{MINVALUE n | NOMINVALUE}]
             [{CYCLE | NOCYCLE}]
             [{CACHE n | NOCACHE}]

  • INCREMENT BY n : 생성되는 SEQUENCE 번호 간격을 정수 n으로 정의 합니다. 이 옵션이 생략되면 시퀀스는 1씩 증가 합니다.
  • START WITH n : 첫 번째 SEQUENCE 번호를 정의 합니다. 생략되면 시퀀스는 1부터 시작 합니다.
  • MAXVALUE n : SEQUENCE의 최대값을 정의 합니다. NOMAXVALUE가 기본값 이며 최대값은 10의 27승 입니다.
  • MINVALUE n : 생성 가능한 SEQUENCE의 최소값을 정의 합니다. 디폴트가 NOMINVALUE이며 최소값은 1 입니다.
  • CYCLE | NOCYCLE : 기본값은 NOCYCLE, 시퀀스 값이  MAXVALUE에 도달 시 MINVALUE부터 다시시작할지 설정하며 NOCYCLE로 설정된 경우 MAXVALUE 이후 시퀀스 생성불가 합니다.
  • CACHE n : 서버가 메모리 캐시에 미리 생성해 놓는 시퀀스 개수로 기본 값은  20 이고 캐시하지 않으려면 NOCACHE 옵션을 사용하면 됩니다. 하나의 트랜잭션 내에서 시퀀스가 생성되어 사용되다가 롤백 되는 경우에 다음 시퀀스 번호는 SKIP 될 수 있습니다. 기본값은 CACHE 20 이며, 지정할 수 있는 최대값은 MAXVALUE - MINVALUE 입니다. 


시퀀스를 생성 후 딕셔너리 뷰에서 확인을 하고 INSERT문에서 활용을 한 후 삭제해 보겠습니다.

실습


시퀀스를 생성 합니다.


8000부터 시작해서 1 씩 증가하는 시퀀스를 생성해 보세요.


CREATE SEQUENCE SEQ_EMP_EMPNO START WITH 8000 INCREMENT BY 1;


<실행결과>

Sequence SEQ_EMP_EMPNO이(가) 생성되었습니다.


생성한 시퀀스를 딕셔너리 뷰에서 확인을 합니다. USER_SEQUENCES 뷰에서 사용자가 생성한 시퀀스 정보를 조회 합니다.


SEQ_EMP_EMPNO 시퀀스의 이름, 증분 값, 캐시사이즈, 마지막 생성 번호를 조회 하세요.


SELECT SEQUENCE_NAME, INCREMENT_BY, CACHE_SIZE, LAST_NUMBER 

FROM    USER_SEQUENCES

WHERE SEQUENCE_NAME = 'SEQ_EMP_EMPNO';


<실행결과>

 
SEQUENCE_NAME
INCREMENT_BY
CACHE_SIZE
LAST_NUMBER
1
SEQ_EMP_EMPNO
1
20
8000


시퀀스 생성시 시작값을 8000으로 부여해서 마지막 생성 번호는 8000으로 되어 있음을 확인할 수 있습니다.


생성한 시퀀스의 현재 값을 조회 합니다.


SEQ_EMP_EMPNO 시퀀스의 현재 값(CURRVAL)을 조회 하세요.


SELECT SEQ_EMP_EMPNO.CURRVAL FROM DUAL;


<실행결과>

ORA-08002: 시퀀스 SEQ_EMP_EMPNO.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다.


생성된 시퀀스는 최초 한번은 NEXTVAL을 해야만 CURRVAL 값을 조회할 수 있습니다.


SEQ_EMP_EMPNO.NEXTVAL해 보겠습니다.


SEQ_EMP_EMPNO 시퀀스의 다음값을(NEXTVAL)을 조회 하세요.


SELECT SEQ_EMP_EMPNO.NEXTVAL FROM DUAL;


<실행결과>


 
NEXTVAL
1
8000


NEXTVAL을 했지만 최초 시작 값 8000이 조회 됩니다.시퀀스 생성 후 최초 NEXTVAL을 하면 생성시 부여한 START WITH 값이 조회 됩니다. 그 이후부터는 NEXTVAL을 하면 1 씩 증가  합니다.


다시 SEQ_EMP_EMPNO.NEXTVAL 후 시퀀스의 현재 값(CURRVAL)을 조회 해 보겠습니다.


SEQ_EMP_EMPNO 시퀀스의 다음값을(NEXTVAL)을 조회 하세요.


SELECT SEQ_EMP_EMPNO.NEXTVAL FROM DUAL;


<실행결과>

 
NEXTVAL
1
8001


SEQ_EMP_EMPNO 시퀀스의 현재값을(CURRVAL)을 조회 하세요.


SELECT SEQ_EMP_EMPNO.CURRVAL FROM DUAL;


<실행결과>

 
CURRVAL
1
8001


SEQ_EMP_EMPNO 시퀀스를 이용하여 EMP 테이블에 데이터를 입력해 보겠습니다. 현재 시퀀스의 CURRVAL 값은 8001 입니다.


SEQ_EMP_EMPNO 시퀀스를 이용하여 EMP 테이블에 2건의 데이터를 입력 합니다.


INSERT INTO EMP (EMPNO, ENAME) VALUES (SEQ_EMP_EMPNO.NEXTVAL, '홍길동');

INSERT INTO EMP (EMPNO, ENAME) VALUES (SEQ_EMP_EMPNO.NEXTVAL, '김길동');

COMMIT;


EMPNO는 처음 INSERT 문에 의해 8002가 되고 두번째 INSERT문에 의해서는 8003이 됩니다.


EMP 테이블의 데이터를 조회해 보겠습니다.


EMP 테이블에서 이름(ename)에 “길동” 이라는 문자열이 포함된 사원을 조회 하세요.


SELECT EMPNO, ENAME FROM EMP 

WHERE ENAME LIKE '%길동%';


<실행결과>

 
EMPNO
ENAME
1
8002
홍길동
2
8003
김길동


DROP SEQUENCE 명령으로 시퀀스를 삭제해 보겠습니다.


SEQ_EMP_EMPNO 시퀀스를 삭제 하세요.


DROP SEQUENCE  SEQ_EMP_EMPNO;


<실행결과>

Sequence SEQ_EMP_EMPNO이(가) 삭제되었습니다.


다음과 같은 경우에는 시퀀스를 사용할 수 없습니다.


1. CREATE TABLE EMP_TEST ( 

       EMPNO NUMBER DEFAULT SEQ_EMP_EMPNO.NEXTVAL

    )

위 구문은 오라클12C 이전 버전에서는 오류가 발생 합니다. 12C 이상에서는 사용 가능 합니다.


2. SELECT DISTINCT SEQ_EMP_EMPNO.NEXTVAL FROM DUAL

DISTINCT와 함께 시퀀스 값을 사용할 수 없습니다.


3. SELECT SUM(SAL) FROM EMP 

    GROUP BY SEQ_EMP_EMPNO.NEXTVAL


시퀀스는 GROUP BY 절에 사용될 수 없습니다.


#시퀀스, #오라클시퀀스,#sequence, #오라클학원, #SQL학원, #SQL교육, #오라클교육, #ORACLE교육, #ORACLE학원, #ORACLE동영상, #ORACLE강좌, #오라클학원동영상, #SQL학원동영상,시퀀스, 오라클시퀀스,sequence, 오라클학원, SQL학원, SQL교육, 오라클교육, ORACLE교육, ORACLE학원, ORACLE동영상, ORACLE강좌, 오라클학원동영상, SQL학원동영상 


(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...