일단은 프로그래머 나부랭이

ORACLE 테이블 복사 (PK나 INDEX도 다 복사하는 방법) 본문

DBMS

ORACLE 테이블 복사 (PK나 INDEX도 다 복사하는 방법)

하필이면 도대체가 2018. 3. 8. 17:37

이전에 올린 테이블 복사 방법은 PK나 INDEX등의 내용은 없이 테이블 구조와 데이터만 복사하는 방법이었다.
그래서 A계정 테이블의 스크립트를 불러와서 B계정에 테이블을 생성하는 방법을 고안해봤다.(이걸 자동으로 하기 위해서 프로시져로 만들었다)

하지만 이 방법은 SYS계정에서만 가능하다.
SYS계정과 같은 권한이 없는 계정에서 아래의 프로시져를 돌리면 권한이 불충분하다는 오류가 나온다.

일일히 스크립트를 복사+붙여넣기+실행하는게 싫어서 아래와 같은 프로시져를 만들었는데, 필요에 따라 활용하시기 바랍니다.

_________________________________________________________
CREATE OR REPLACE PROCEDURE SYS.프로시저명 
IS
    v_script       VARCHAR2(2000);
    
    CURSOR V_T_NAME IS
        select
            replace(dbms_metadata.get_ddl('TABLE','A계정의테이블명','A계정'),'"A계정명".','"B계정명".')script
        from all_users
        WHERE USERNAME='A계정명'
    ;

BEGIN
         FOR TN IN V_T_NAME LOOP
            BEGIN
            
                v_script := TN.script;
       
                EXECUTE IMMEDIATE v_script;
                
            EXCEPTION
                WHEN OTHERS THEN
                
                DBMS_OUTPUT.PUT_LINE(' QUERY '|| v_script);
                DBMS_OUTPUT.PUT_LINE(' error '|| TN.script||'  :  '||sqlerrm);
            END;
        END LOOP;
   
end;
_________________________________________________________


P.S : 이 프로시져를 활용하면 특정 계정의 전체 테이블 구조를 쉽게 복사 할 수 있습니다.


'DBMS' 카테고리의 다른 글

LOB과 BFILE에 대해서 정리  (0) 2018.04.10
오라클 테이블 DDL Script 얻는 방법  (0) 2018.03.08
ORACLE 테이블 복사  (0) 2018.03.08
오라클 권한 정리  (0) 2018.03.08
oracle 테이블 생성일자 조회 방법  (0) 2018.03.08

Comments