*출처 : 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.