'dblink ***.nextval'에 해당되는 글 1건

  1. 2009.09.24 ORA-02069: global_names parameter must be set to TRUE for this operation
02.Oracle/DataBase2009. 9. 24. 19:48
반응형
alter session set global_names=true;


dblink tl seq 를 자동증가 할때  ***.nextval

ORA-04054: 데이터베이스 링크 'HSCPROD.NEXTVAL'가 존재하지 않습니다
                    
SELECT AAA_SEQ@hscprod.NEXTVAL
  FROM DUAL; (X)

SELECT AAA_SEQ.NEXTVAL@hscprod
  FROM DUAL (O)



SEQUENCE

 CREATE TABLE T1(ID NUMBER(4) CONSTRAINT T1_PK PRIMARY KEY, DATA VARCHAR2(30));


PK에 대해 SEQUENCE를 줄수 있다. 입력시에 아래처럼. 테이블에 시퀀스 하나씩!

 SQL> INSERT INTO T1 VALUES(T1_S.NEXTVAL, 'AA');

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

 SQL> CREATE SEQUENCE T1_S;

시퀀스가 생성되었습니다.

SQL> SELECT * FROM T1;

        ID DATA
---------- ------------------------------
         1 AA
         2 BB


 세션마다 CURRVAL은 다르지만, NEXTVAL은 같다. 세션에서 NEXTVAL을 사용하게 되면 하나씩 올라가게 된다..

 GAP이 생기면 시퀀스를 쓰지 말아야 하는거죠. 시퀀스대신 SELECT MAX(ID)+1 처럼 해야 된다. <- LOCK이 걸릴수 있기때문에 쓰지 마라.

 ISQL에서는 트랜젝션이 있으니까 상관없긴 하다.


  1  CREATE SEQUENCE DEPT_S
  2  INCREMENT BY 10
  3* START WITH 10
SQL> /

시퀀스가 생성되었습니다.

SQL> SELECT DEPT_S.NEXTVAL FROM DUAL;

   NEXTVAL
----------
        10

SQL> SELECT DEPT_S.NEXTVAL FROM DUAL;

   NEXTVAL
----------
        20


3,5,2,4,6,2,4,6 으로 증가하게 하려면?

 SQL>
  1  CREATE SEQUENCE TS
  2  INCREMENT BY 2
  3  START WITH 3
  4  MAXVALUE 6
  5  MINVALUE 2
  6* CYCLE NOCACHE

시퀀스가 생성되었습니다.

SQL> SELECT TS.NEXTVAL FROM EMP;

   NEXTVAL
----------
         3
         5
         2
         4
         6
         2
         4
         6
         2
         4
         6

   NEXTVAL
----------
         2
         4
         6

14 개의 행이 선택되었습니다.

Posted by 1010