일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Dell Venue 8 Pro
- cmd로msi파일설치
- YCSB
- 파이썬 스톱워치
- putty
- 인강배속
- OTT셋톱박스
- 영상배속
- cubrid
- 시스템예약종료
- Windows
- #Oracle
- CentOS7
- Oracle
- docker container restore
- ventoy 사용법
- 컨테이너 복원
- GUI 또는 CLI전환
- CentOS
- 컨테이너 백업
- docker
- Linux
- 웹영상배속
- MySQL
- docker container backup
- 딜라이브플러스h3
- cloudready OS
- cmd인스톨러설치
- ipvlan
- VPN
- Today
- Total
일단은 프로그래머 나부랭이
ORACLE 테이블 복사 (PK나 INDEX도 다 복사하는 방법) 본문
이전에 올린 테이블 복사 방법은 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 |