'Oracle'에 해당되는 글 4건

[Oracle] alter table

DB/ORACLE 2022. 5. 12. 16:17
ALTER TABLE TEMP_TEST ADD (F VARCHAR(10));

-- 추가된 컬럼에는 기본값으로 널값이 들어갑

ALTER TABLE TEMP_TEST ADD (F VARCHAR(10) DEFAULT 'AA');

-- 추가된 컬럼에는 기본값으로 'AA'값이 들어감

ALTER TABLE TEMP_TEST ADD (G VARCHAR(10) NULL);

-- NULL이란 키워드를 사용하면 에러발생

 

ALTER TABLE TABLE_NAME ADD (COLUMN_NAME DATA_TYPE NOT NULL);

-- 해당 테이블에 로우가 없다면 정상실행

-- 해당 테이블에 로우가 있다면 에러발생

 

ALTER TABLE TEMP_TEST ADD (E VARCHAR(10) NOT NULL);

-- 현재 입력된 로우가 없다면 정상실행 로우가 있다면 에러발생

-- 위의 명령이 아래상황 일때는 실행됨

CREATE TABLE TEMP_TEST1

(A CHAR(2), B CHAR(2) NOT NULL);

COMMIT;

ALTER TABLE TEMP_TEST1 ADD C CHAR(2) NOT NULL;

SELECT * FROM TEMP_TEST1;

 

ALTER TABLE T_RA020 ADD RES_CD CHAR(2);

-- 기존에 로우가 있다면 추가한 컬럼값은 기본값이 널값으로 들어감

ALTER TABLE T_RA020 ADD POS_CD CHAR(2) DEFAILT '11';

-- 기존에 로우가 있다면 추가한 컬럼값은 기본값이 '11'값으로 들어감

 

 

 

컬럼 수정

 

ALTER TABLE T_KA031 MODIFY (FILE_NM_C CHAR(200) NOT NULL);

-- 기존에 있는 값중에 널값이 있다면 에러발생

-- 기존에 있는 값중에 널값이 없다면 정상실행

-- file_nm_c의 컬럼이 null인데 위의 명령어 쓰면 에러발생 아래의 명령어 써야 정상실행

ALTER TABLE t_bc016 MODIFY etc_remark CHAR(100);

 

ALTER TABLE T_KA031 MODIFY FILE_NM_C CHAR(200) NOT NULL;

-- 위의 명령과 같은 역할을 한다.

ALTER TABLE T_KA031 MODIFY FILE_NM_C CHAR(200) NULL;

-- 에러발생

ALTER TABLE t_ba060 MODIFY (dcsn_idea lvarchar(1000) NOT NULL);

-- 1000바이로 수정

 

char(300)이면 memo컬럼으로 변경됨

 

※ 인포믹스에서는 ALTER 명령후에 COMMIT 처리를 꼭 해야한다.

※ 인포믹스에서는 NOT NULL 제약조건을 안쓰면 기본적으로 NULL로 설정된다.

 

ALTER TABLE 명령시 "could not open database table" 에러출력 대처방법

 

테이블에 ALTER TABLE 명령시 "could not open database table" 에러가 발생하면 현재 

테이블을 티맥스 서비스 파일에서 물고 있거나 제우스 웹서버에서 물고 있는중이므로 

티맥스 서버와 제우스 웹서버를 내렸다가 실행후 다시 올리면 된다.
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

alter system set DEFERRED_SEGMENT_CREATION=FALSE scope=both;

 


Oracle 11g R2에는 디스크 공간을 확보하는 새로운 기능이 있다.

새로운 파라미터인 "DEFERRED_SEGMENT_CREATION"이 추가되었는데 초기값은 "TRUE"로 되어 있다.

이 파라미터는 exp를 통해 스키마를 export할 때 영향을 준다.

문제는 일반적인 exp 명령어를 이용해 export하면 빈 테이블들은 백업되지 않는다는 것이다.

Data Pump(expdp)를 이용한 export는 문제가 없다.

이 기능을 비활성화 시키기 위해 아래와 같이 파라미터의 값을 변경하면된다.

SQL> alter system set DEFERRED_SEGMENT_CREATION=FALSE scope=both;

이 기능을 적용한 후에 생성된 빈 테이블을은 백업이 잘되지만 이미 생성되어 있던 테이블들은 적용되지 않으므로 

tablespace를 이동하거나 테이블을 재생성해야 한다.

이제, 파라미터 변경 후에 생성된 테이블들은 exp를 통해서도 잘 백업되어진다.

블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

TO_CHAR 

TO_CHAR함수는 DATE형, NUMBER형을 VARCHAR2형으로 바꺼 줍니다.  

SQL>SELECT TO_CHAR(SYSDATE, 'MONTH') CHARTEST FROM dual ; 

       CHARTEST 
 -------------- 
             JUNE 

오늘이 6월 25일 이니깐요.. 오늘의 달인 6월이 찍힘니다.

SQL>SELECT TO_CHAR(SYSDATE) CHARTEST FROM dual ; 

       CHARTEST 
 -------------- 
          21/06/25

오늘이 6월 25일 이니깐요.. 오늘의 날짜가 문자형으로 찍힙니다. 
 


TO_DATE 

TO_DATE함수는 CHARVARCHAR2형을 DATE 타입으로 변환합니다. 
 
 SQL>SELECT TO_DATE('2021/06/25','RRRR/MM/DD') FROM dual ; 

       TO_DATE( 
   ------------  
      2021/06/25  

'2021/06/25'문자열이 날짜형으로 변합니다
 


TO_NUMBER 

TO_NUMBER함수는 CHARVARCHAR2의 데이터 타입을 숫자형식으로 변환합니다. 
 
 SQL>SELECT TO_NUMBER('1210616') FROM dual ; 

    TO_NUMBER( 
    -------------- 
             1210616 
 
'1210616'문자열이 숫자형으로 변합니다
 
Conversion Functions
  

블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

Oracle 10g부터는 휴지통 기능이 있습니다.

앞으로 지우실때는 다음 과 같이 지우시면 됩니다.

DROP TABLE 테이블명 CASCADE CONSTRAINTS PURGE


그리고 휴지통에 있는 정보는 DROP 명령어로는 지울수가 없고

휴지통 비우기 명령어로 지우셔야합니다.

PURGE RECYCLEBIN;


참고로 휴지통에 있는 테이블 복원하는 명령어는 다음과 같습니다.
FLASHBACK TABLE 테이블명 TO BEFORE DROP

블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,