*출처 :  http://notgivuphil.tistory.com/tag/%EC%BB%AC%EB%9F%BC%20%EC%88%9C%EC%84%9C


-- 1. 백업 테이블 생성 --

CREATE TABLE tab1_back

AS

SELECT * FROM tab1;

 

-- 2. 테이블 삭제

DROP TABLE tab1;

 

-- 3. 테이블 생성(컬럼 순서 변경)

CREATE TABLE tab1

(col1    varchar2(8),
col3    number(5),

col2    varchar2(1),

CONSTRAINT pk_tab1 PRIMARY KEY(col1));

 

-- 4.백업자료 복구

INSERT INTO tab1(col1, col2, col3)

SELECT col1, col2, col3 FROM tab1_back;

===================================
*앙마의 덧글

TOAD를 이용하면 간편하게 컬럼순서 변경이 가능합니다.
shema browser에서 해당 table를 선택하고
Rebuilder table을 선택

Rebuilder Table 창이 열리면
Column을 선택한다.
마우스로 특정 컬럼을 클릭한다음 드레그로 원하는 위치로 이동한다.
모두 재정렬이 끝났으면 SQL탭을 클릭한다.

상단의 Excute Script now 버턴을 클릭하면 끄읕 .......
원본 테이블은 테이블명_X 하는 식으로 _X가 붙어서 자동으로 백업된다.

정상적으로 순서가 정렬되었는지 확인 후 _X가 붙은 백업 테이블은 삭제한다.


아래는 Toad로 만들어진 스크립트 예이다.

--  **********************************************************************

--  Table Rebuild script generated by TOAD 
-- 
--  Original table: TSM0009
--  Backup of table: TSM0009_X1
--  Date: 2008-12-05 오후 4:49:30
-- 
SET LINESIZE 200
-- 
--  Make backup copy of original table
ALTER TABLE COMUSER.TSM0009 RENAME TO TSM0009_X1 ;
 
 

-- Drop all user named constraints
ALTER TABLE COMUSER.TSM0009_X1 DROP CONSTRAINT SYS_C0016587 ;

--  Recreate original table
CREATE TABLE COMUSER.TSM0009
(
  MENU_CD        VARCHAR2(10 BYTE),
  SCRN_CD        VARCHAR2(12 BYTE),
  SCRN_YN        VARCHAR2(1 BYTE),
  SUPI_MENU_CD   VARCHAR2(10 BYTE),
  SYS_SCN_CD     VARCHAR2(20 BYTE),
  MENU_NM        VARCHAR2(100 BYTE),
  MENU_LVL       VARCHAR2(20 BYTE),
  MENUSEQ        VARCHAR2(20 BYTE),
  USE_YN         VARCHAR2(1 BYTE),
  VBG_RGST_DTM   DATE,
  VBG_RGER_ID    VARCHAR2(8 BYTE),
  LAST_MDFY_DTM  DATE,
  LAST_UPDER_ID  VARCHAR2(8 BYTE)
)
TABLESPACE TS_COM01D
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;

COMMENT ON TABLE COMUSER.TSM0009 IS 'HSM_메뉴 (TSM0009)';

COMMENT ON COLUMN COMUSER.TSM0009.MENU_CD IS '메뉴 코드';

COMMENT ON COLUMN COMUSER.TSM0009.SCRN_CD IS '화면 코드';

COMMENT ON COLUMN COMUSER.TSM0009.SCRN_YN IS '화면 여부';

COMMENT ON COLUMN COMUSER.TSM0009.SUPI_MENU_CD IS '상위 메뉴 코드';

COMMENT ON COLUMN COMUSER.TSM0009.SYS_SCN_CD IS '시스템구분코드';

COMMENT ON COLUMN COMUSER.TSM0009.MENU_NM IS '메뉴 명';

COMMENT ON COLUMN COMUSER.TSM0009.MENUSEQ IS '메뉴일련번호';

COMMENT ON COLUMN COMUSER.TSM0009.USE_YN IS '사용 여부';

COMMENT ON COLUMN COMUSER.TSM0009.VBG_RGST_DTM IS '최초 등록 일시';

COMMENT ON COLUMN COMUSER.TSM0009.VBG_RGER_ID IS '최초 등록자 ID';

COMMENT ON COLUMN COMUSER.TSM0009.LAST_MDFY_DTM IS '최종 수정 일시';

COMMENT ON COLUMN COMUSER.TSM0009.LAST_UPDER_ID IS '최종 수정자 ID';
 
--  Copy the data from the renamed table 
INSERT /*+ APPEND */
INTO COMUSER.TSM0009 INS_TBL
(MENU_CD, SCRN_CD, SCRN_YN, SUPI_MENU_CD,
SYS_SCN_CD, MENU_NM, MENU_LVL, MENUSEQ,
USE_YN, VBG_RGST_DTM, VBG_RGER_ID, LAST_MDFY_DTM,
LAST_UPDER_ID)
SELECT
MENU_CD, SCRN_CD, SCRN_YN, SUPI_MENU_CD,
SYS_SCN_CD, MENU_NM, MENU_LVL, MENUSEQ,
USE_YN, VBG_RGST_DTM, VBG_RGER_ID, LAST_MDFY_DTM,
LAST_UPDER_ID
FROM COMUSER.TSM0009_X1 SEL_TBL ;
 
Commit ;
 

-- Drop all other user named indexes
-- (none)

 


--  Recreate Indexes, Constraints, and Grants

ALTER TABLE COMUSER.TSM0009 ADD (
  PRIMARY KEY
 (MENU_CD)
    USING INDEX
    TABLESPACE TS_COM01D
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
               ));


ALTER TABLE COMUSER.TSM0009 ADD (
  FOREIGN KEY (SUPI_MENU_CD)
 REFERENCES COMUSER.TSM0009 (MENU_CD));


GRANT INSERT, SELECT, UPDATE ON COMUSER.TSM0009 TO BUSUSER;

GRANT DELETE, INSERT, SELECT, UPDATE ON COMUSER.TSM0009 TO CONV;

GRANT INSERT, SELECT, UPDATE ON COMUSER.TSM0009 TO DSMUSER;

GRANT INSERT, SELECT, UPDATE ON COMUSER.TSM0009 TO HKOUSER;

GRANT INSERT, SELECT, UPDATE ON COMUSER.TSM0009 TO KCCUSER;

GRANT INSERT, SELECT, UPDATE ON COMUSER.TSM0009 TO TGRUSER;

GRANT SELECT ON COMUSER.TSM0009 TO TMPUSER;
 
--  Recreate the FKeys that reference the NEW table
 
 
--  There are no dependent objects to recompile.
 
--  There are no triggers to rebuild.


올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼

불후의 명곡은 오른쪽 스티큐브에서 들으실 수 있습니다.

Posted by 픽시