생계/SQL2020. 4. 28. 15:47

 아우터 조인은 별거 없으면서도 개발자들이 종종 실수 하는 쿼리 중 하나이다.

 아우터 조인의 개념과 활용을 한번 정리해 보자. 

 

  • 1. 아우터 조인의 개념 
 
   일반 조인은 집합 A 와 B 가 있을 때 양쪽 집합 모두 조인 조건을 만족하는 rows 만 리턴한다. 
 

 

 

   반면, 아웃터 조인은 A 가 기준이라면 A 의 모든 rows 에 대하여

   집합 B 가 조인 조건에 만족하면 나오고 그렇지 않으면 null 을 리턴한다. 

 

   이때 A 와 B 의 관계가 1:1 인 경우, 결과 rows 는 A 의 갯수와 동일하지만 1:N 인 경우는 결과는 N 이 된다.  

 

 
  • 2. 멀티컬럼 아우터 조인 
 
    아우터 조인 조건이 여러개인 것은 하나인 것과 다르지 않다. 
    즉, 조인조건이 '조건1' and '조건2' and '조건3' 이라면 조건을 모두 만족하는 rows 만 결과를 리턴한다. 
    나머지는 null 을 리턴한다. 

 

-- out multi col

 

 

-- multi col outer join 
drop table ot_test1;
drop table ot_test2;

create table ot_test1(
col1 int,
col2 varchar2(1),
col3 varchar2(1),
col4 varchar2(1)
);

create table ot_test2(
col1 int,
col2 varchar2(1),
col3 varchar2(1),
col4 varchar2(1)
);

insert into ot_test1 values('1','a','A','');
insert into ot_test1 values('1','a','B','!');
insert into ot_test1 values('1','b','A','@');
insert into ot_test1 values('2','a','A','#');
insert into ot_test1 values('3','a','A','');

insert into ot_test2 values('1','a','A','G');
insert into ot_test2 values('1','a','A','X');
insert into ot_test2 values('1','b','A','F');

 

select a.col1 a1, a.col2 a2, a.col3 a3, b.col4
  from ot_test1 a,
       ot_test2 b
where 1=1
and a.col1 = b.col1(+)
and a.col2 = b.col2(+)
and a.col3 = b.col3(+)
;

 

 

 

 

 

 

집합 A 에 5 개 rows 를 넣었고 집합 B 에는 3 개의 rows 를 넣었다.

아우터의 기준이 되는 A 의 5 개는 모두 나온다.

col1=1 col2=a col3=A 인 조인조건을 만족하는 B 집합이 2개가 모두 리턴된다.   

 

 

## 아우터 조인은 1:1 관계 에서는 스칼라 서브쿼리로 변경 가능하다. 

 

select a.col1 a1, a.col2 a2, a.col3 a3,
      (select b.col4
         from ot_test2 b
        where 1=1
          and a.col1 = b.col1
          and a.col2 = b.col2
          and a.col3 = b.col3
      ) b4
 from ot_test1 a
order by a1, a2, a3
;
=> ORA-001427

 

1:1 관계가 아닌 아우터 조인을 스칼라 서브쿼리로 변경하면 ORA-001427 가 뜬다.

 

이때 min, max 등의 그룹함수를 사용하면 에러를 회피할 수 있다.

 

select a.col1 a1, a.col2 a2, a.col3 a3,
      (select min(b.col4) 
         from ot_test2 b
         where 1=1
        and a.col1 = b.col1
        and a.col2 = b.col2
        and a.col3 = b.col3
      ) b4
  from ot_test1 a
order by a1, a2, a3
;
=> 스칼라서브쿼리에서 2개 이상의 행이 리턴되는 것을 막기 위해 min 함수를 썼다.

 

  • 3. 연속 아우터 조인
 
중첩해서 아우터 조인을 사용할 경우도 있다.
 
이럴때는 어디에 (+) 를 표시해야 할까.

 

-- consecutive out join

drop table out_a;
drop table out_b;
drop table out_c;

create table out_a(
col1 int,
col2 varchar2(1)
);

create table out_b(
col1 int,
col2 varchar2(1)
);

create table out_c(
col1 int,
col2 varchar2(1)
);

insert into out_a values(1,'a');
insert into out_a values(2,'b');
insert into out_a values(3,'G');
insert into out_a values(4,'');

insert into out_b values(1,'a');
insert into out_b values(3,'');
insert into out_b values(5,'');
insert into out_b values(6,'d');

insert into out_c values(1,'a');
insert into out_c values(2,'a');
insert into out_c values(3,'c');
insert into out_c values(3,'f');
insert into out_c values(6,'a');

 

 

-- 올바른 중첩 아우터 조인 쿼리 

 

SELECT *
FROM OUT_A A
     ,OUT_B B
     ,OUT_C C
WHERE A.COL1 = B.COL1(+)
AND B.COL1 = C.COL1(+)
ORDER BY A.COL1
;

 

 

 

-- 잘못 작성된 아우터 조인 

 

SELECT *
  FROM OUT_A A
      ,OUT_B B
      ,OUT_C C
 WHERE A.COL1 = B.COL1(+)
   AND B.COL1 = C.COL1
ORDER BY A.COL1
;

 

 

 

 이것의 결과는  일반조인의 결과와 같다. 

 

-- 일반적인 조인  

 

SELECT *
  FROM OUT_A A
      ,OUT_B B
      ,OUT_C C
 WHERE A.COL1 = B.COL1
   AND B.COL1 = C.COL1
ORDER BY A.COL1
;

 

 

 

## A = B(+)  and B(+) = C 이런 아우터 조인은 가능할까?

 

 -- 이런 아우터 조인이 될까 

SELECT *
  FROM OUT_A A
      ,OUT_B B
      ,OUT_C C
 WHERE A.COL1 = B.COL1(+)
   AND B.COL1 (+) = C.COL1
ORDER BY A.COL1
=> 이 결과는 A 와 B 의 아우터 조인 집합과 C의 카티션 곱이다. 

 

  •  4. Full outer join  

오라클은 아우터 조인되는 집합쪽에 (+) 기호를 넣는다. 

그렇다면 양쪽 아우터 조인은 양쪽 집합에 (+) 를 넣으면 될것 같은데 그렇게 하면 에러가 난다. 

 

full outer join 은 ansi 방식으로 작성하거나 왼쪽 아우터 조인 오른쪽 아우터 조인을 union 하는 방식으로 쓸수 있다. 

 

 

--  FULL OUTER JOIN

drop table out_a;
drop table out_b;

create table out_a(
col1 int,
col2 varchar2(1)
);

create table out_b(
col1 int,
col2 varchar2(1)
);

insert into out_a values(1,'a');
insert into out_a values(3,'c');
insert into out_a values(5,'');

insert into out_b values(1,'a');
insert into out_b values(4,'%');
insert into out_b values(5,'$');

 

-- 일반조인


SELECT A.COL1, B.COL1, A.COL2, B.COL2
  FROM out_a A,
       out_b B
 WHERE A.COL1 = B.COL1
;

 

 

 

 

-- 맞지않는 문법

 
SELECT A.COL1, B.COL1, A.COL2, B.COL2
  FROM out_a A,
       out_b B
 WHERE A.COL1(+) = B.COL1(+)
;
=> ORA-01468

 

 

 

-- ansi 


SELECT A.COL1, B.COL1, A.COL2, B.COL2
  FROM out_a A full outer join out_b B
    ON A.COL1 = B.COL1
ORDER BY a.COL1
;

 

 

 

 

 

 

 

 

 

 

-- union


SELECT A.COL1, B.COL1, A.COL2, B.COL2
  FROM out_a A,
     out_b B
 WHERE A.COL1 = B.COL1(+)
UNION
SELECT A.COL1, B.COL1, A.COL2, B.COL2
  FROM out_a A,
       out_b B
 WHERE A.COL1(+) = B.COL1
;

 

 

 

 

  •  5. Lateral outer join  

 Lateral 구문은 오라클에서 좀 더 유연하게 아우터 조인을 사용하는 것을 지원한다.

 오라클 아우터 조인은 조인 조건에 in 이나 or 가 올 경우 에러가 난다. 

SELECT A.EMPNO, B.DNAME
  FROM EMP A,
             DEPT B
 WHERE A.DEPTNO = B.DEPTNO(+) OR A.DEPTNO = B.DEPTNO2(+)

 => 에러 

 위의 SQL 은 아래와 같이 or 조건을 union 으로 분리해서 작성해야 정상 동작한다. 

SELECT A.EMPNO, B.DNAME
  FROM EMP A,
    DEPT B
 WHERE A.DEPTNO = B.DEPTNO(+) 
UNION 
SELECT A.EMPNO, B.DNAME
  FROM EMP A,
    DEPT B
 WHERE A.DEPTNO = B.DEPTNO2(+)

해당 SQL은 lateral 을 사용하면 좀 더 간결하게 작성할수 있다. 

SELECT A.EMPNO, B.DNAME
  FROM EMP A 
           , LATERAL (
                     SELECT B.DNAME
                         FROM DEPT B
                     WHERE A.DEPTNO = B.DEPTNO OR A.DEPTNO = B.DEPTNO2 
    ) (+)B

 

 

 

도움이 되셨다면 "공감" 마구 눌러주세요

반응형

'생계 > SQL' 카테고리의 다른 글

[oracle]프로시져 out 파라미터 호출하기  (0) 2022.07.13
sql 튜닝 트레이스  (0) 2019.10.21
서브쿼리에 대해서 알아보자  (0) 2019.06.06
Posted by 돌고래트레이너
생계/Oracle2019. 8. 29. 16:34

토드를 사용하면 object 의 DDL 정보를 쉽게 확인 할 수 있다. 

그래서 계정의 경우 부여받은 role, 권한 까지  모두 확인할수 있다.

그러나 orange 에서는 그게 안되서 각 권한에 해당하는 sql 을 작성해서 확인해야한다. 

뭐.. 항상 토드를 쓰는 환경으로 갈수는 없는 일이니까  이번 기회에 정리를 하자.

 

## Role 이 포함한 권한 확인

- select * from dba_tab_privs where grantee='ROLE 이름';

 

## 유저에게 부여된 권한 확인

- select * from dba_role_privs where grantee='USER이름';

- select * from dba_sys_privs where grantee='USER이름';  ( create view 등) 

 

## DB object 에 대한 권한을 누가 가지고 있나  ( role 은 제외되고 grantee 만 되나보다)

  select * from dba_tab_privs where table_name= 'PLSQL/TABLE';

 

## A 의 object권한을 B 에 동일하게 주기

 

select 'GRANT '||PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME||' TO 받는사람(B);'

from dba_tab_privs where grantee=주는사람(A);

 

## userB 에게 없는 userA 의 object 권한을 주기 (A 의 권한이랑 똑같이 B 에게 주기)

권한은 중복으로 줘도 상관이 없지만 중복없이 주는 쿼리는 outer join 이나 차집합으로 구할수 있다.

SELECT 'GRANT '||A.PRIVILEGE||' ON '||A.OWNER||'.'||A.TABLE_NAME||' TO userB;' STMT
  FROM (
        select '유저A 이름
' AS NM, GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE,TYPE
          from dba_tab_privs
         where GRANTEE ='userA'
       )A,
       (
        select '유저B 이름
' AS NM, GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE,TYPE
          from dba_tab_privs
         where GRANTEE ='userB'
       )B
 WHERE A.OWNER = B.OWNER(+) 
   AND A.TABLE_NAME = B.TABLE_NAME(+)
   AND A.GRANTOR = B.GRANTOR(+)
   AND A.PRIVILEGE = B.PRIVILEGE(+)
   AND B.NM IS NULL
ORDER BY A.OWNER, A.TABLE_NAME, A.PRIVILEGE, A.TYPE

 

반응형
Posted by 돌고래트레이너
생계/Oracle2018. 4. 10. 14:09

구글 클라우드 플랫폼에 오라클 12c 를 설치하고 접속해보자 


앞선 포스팅에서 구글 클라우드 플랫폼(이하 GCP) 에 MSSQL 을 설치하고 

접속하는 것까지 테스트 해보았다.  

GCP 를 활용하여 테스트서버를 구축하는 것의 장점은 인터넷만 가능하다면

어디든 접속이 가능하다는 것이다. 


GCP 에 오라클을 설치하고 접속하는 것 또한 MSSQL 과 과정이 동일하다.

오라클이 사용하는 포트로만 변경하면 된다. 




1. 구글 클라우드 플랫폼 준비


GCP 계정이 없다면 이전에 작성한 내용을 참고해서 만들어보자. 간단하다 


http://riorio.tistory.com/107



2. Oracle 12c 설치하기 


오라클닷컴 에서 oracle 12c 를 다운로드 한다. 


 윈도우에 설치하는 것은 간단하다. 따로 작성하진 않겠다.


3. 방화벽 설정


GCP 에 oracle 를 설치하고 나서 바로 접속하려면 접속이 되지 않는다. 

몇가지 작업을 해줘야 한다. 


- VPC 네트워크 설정

    GCP 콘솔로 들어간 후 왼쪽의 스크롤바를 내려서 VPC 네트워크를 확인한다.  


 


  콘솔로 이동!


왼쪽에 길게 늘어선 메뉴 스크롤바를 내린다



방화벽 규칙을 만들자 

디폴트로 만들어진 방화벽 규칙 + MSSQL 테스트용으로 작성한 방화벽 

규칙 말고는 없다. 

이 상태에서는 외부에서 오라클 DB 서버로 접속이 안된다. 




방화벽 규칙의 이름을 만들자

대상은 네트워크의 모든 인스턴스로 선택





테스트 서버로 접속을 허용할 ip 또는 ip 대역을 입력한다. 

나는 내 pc 로만 접속할거라 내 pc 의 ip 를 입력했다. 

0.0.0.0 을 입력하면 모든 ip 가 허용된다.

ORACLE 접속을 테스트할 예정이니 ORACLE 이 

사용할 포트 (default 1521) 를 규칙에 맞게 써준다. 


만들기 클릭



시간이 좀 지나면 방화벽 규칙이 만들어진걸 확인 할 수가 있다. 


- 테스트서버 방화벽


테스트 서버의 윈도우즈 방화벽에 oracle 전용 inbound rule 을 추가하자.


제어판 -> 시스템 및 보안 -> 윈도우즈 방화벽 -> 고급설정 


Inbound Rules 에서 New Rule 추가 






oracle 포트를 입력 하자 








새로운 방화벽 규칙에 이름을 지어주자. 



4. 테스트 


여기까지 설정했으면 외부서버에서 테스트 서버의 oracle 에 접속이 되는지

테스트 해보자.


- DB server side 


우선 oracle 서버에 접속 테스트용 계정을 만들자. 


SQL> create user c##test identified by test container=all;

User created.

SQL> grant create session to c##test;

Grant succeeded.


- Client side


 내pc 에서 접속을 하려면 oracle client 가 설치 되어 있어야 한다. 

 tnsnames.ora 파일 수정 


GCP =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = ##테스트서버IP )(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )


ip 와 서비스 네임은 환경에 맞게 수정한다. 



접속이 잘된다. 


이상 끗

반응형

'생계 > Oracle' 카테고리의 다른 글

다른 owner 의 테이블 truncate  (0) 2018.05.31
리눅스환경 오라클 삭제 linux  (0) 2018.05.24
oracle 12c silent mode 설치  (0) 2017.12.13
스키마모드 datapump 테스트  (0) 2017.12.06
오라클 datafile resize  (0) 2017.11.06
Posted by 돌고래트레이너
카테고리 없음2017. 12. 19. 17:16

오라클 12c 설치 후 pdb 에 접속하기


dbca 로 DB 설치 후 netca 로 리스너를 구성하지 않고 수동으로

listener.ora 를 만들어 구동하면 pdb 가 service 에 나오지 않는다. 

반드시 netca 를 통해서 리스너를 설정하자. 



 netca  silent 로 리스너 구성


[oracle@oracdb netca]$ netca -silent -responseFile /home/oracle/database/response/netca.rsp


Parsing command line arguments:

    Parameter "silent" = true

    Parameter "responsefile" = /home/oracle/database/response/netca.rsp

Done parsing command line arguments.

Oracle Net Services Configuration:

Profile configuration complete.

Oracle Net Listener Startup:

    Running Listener Control: 

      /oracle/product/12.1.0/dbhome_1/bin/lsnrctl start LISTENER

    Listener Control complete.

    Listener started successfully.

Listener configuration complete.

Oracle Net Services configuration successful. The exit code is 0

 


service 확인 


[oracle@oracdb admin]$ lsnrctl service


LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 19-DEC-2017 17:13:43


Copyright (c) 1991, 2014, Oracle.  All rights reserved.


Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracdb)(PORT=1521)))

Services Summary...

Service "cdbtest" has 2 instance(s).

  Instance "cdbtest", status UNKNOWN, has 1 handler(s) for this service...

    Handler(s):

      "DEDICATED" established:0 refused:0

         LOCAL SERVER

  Instance "cdbtest", status READY, has 1 handler(s) for this service...

    Handler(s):

      "DEDICATED" established:7 refused:0 state:ready

         LOCAL SERVER

Service "cdbtestXDB" has 1 instance(s).

  Instance "cdbtest", status READY, has 1 handler(s) for this service...

    Handler(s):

      "D000" established:0 refused:0 current:0 max:1022 state:ready

         DISPATCHER <machine: oracdb, pid: 2843>

         (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=32331))

Service "pdb01" has 1 instance(s).

  Instance "cdbtest", status READY, has 1 handler(s) for this service...

    Handler(s):

      "DEDICATED" established:7 refused:0 state:ready

         LOCAL SERVER

The command completed successfully



------------  netca.rsp -------------------------------------------------------------

[GENERAL]

RESPONSEFILE_VERSION="12.1"

CREATE_TYPE="CUSTOM"

SHOW_GUI=false

[oracle.net.ca]

INSTALLED_COMPONENTS={"server","net8","javavm"}

INSTALL_TYPE=""typical""

LISTENER_NUMBER=1

LISTENER_NAMES={"LISTENER"}

LISTENER_PROTOCOLS={"TCP;1521"}

LISTENER_START=""LISTENER""

NAMING_METHODS={"TNSNAMES"}

NSN_NUMBER=1

NSN_NAMES={"EXTPROC_CONNECTION_DATA"}

NSN_SERVICE={"PLSExtProc"}

NSN_PROTOCOLS={"TCP;oracdb;1521"}


------------  netca.rsp -------------------------------------------------------------



PDB 에 접속


[oracle@oracdb admin]$ sqlplus c##test/test@pdb


SQL*Plus: Release 12.1.0.2.0 Production on Tue Dec 19 16:56:11 2017


Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Last Successful login time: Tue Dec 19 2017 09:57:37 +09:00


Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


SQL> show con_name


CON_NAME

------------------------------

PDB01

SQL> 




--------------------------- tnsnames.ora --------------------------------- 

cdbtest =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = cdbtest)

    )

  )

 

pdb =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb01)

    )

  )


--------------------------- tnsnames.ora --------------------------------- 


 

--------------------------- listener.ora --------------------------------- 

# listener.ora Network Configuration File: /oracle/product/12.1.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )



SID_LIST_LISTENER =

(SID_LIST =

  (SID_DESC =

   (GLOBAL_DBNAME = cdbtest)

   (ORACLE_HOME = /oracle/product/12.1.0/dbhome_1/)

   (SID_NAME = cdbtest)

   )

 )

--------------------------- listener.ora --------------------------------- 




끗. 공감 구걸



반응형
Posted by 돌고래트레이너
생계/Oracle2017. 12. 6. 10:56


스키마모드 datapump 테스트 


● EXPDP



- exclude 에 like 사용하기

expdp test/test  parfile=like.par

-------------- like.par -------------------------- 

directory=datapump

logfile=schema_exp.log

dumpfile=schema.dmp

filesize =100G

schemas=A,B,C,testS

exclude=table:"like '%EX_TAB'"

content=ALL

--------------------------------------------------


- exclude 에 in 사용하기

expdp test/test  parfile=in.par

-------------- in.par --------------------------

directory=datapump

logfile=schema_exp.log

dumpfile=schema.dmp

filesize =100G

schemas=A,B,C,testS

exclude=table:"IN('EX_TAB')"

content=ALL

--------------------------------------------------


** parameter 파일을 사용하지 않고 직접 커먼드에 쓸때는

모든 특수문자 앞에 '\' 를 넣어줘야 한다. 

ex) expdp test/test full=y EXCLUDE=TABLE:\"IN \(\'TEMP\',\'TEMP1\'\)\"


● IMPDP


full dump 에서 testS 스키마만 imptest 스키마에 이관하기


1. Index,TRIGGER,statistics,constraint 는 제외하고 import 하는 경우


impdp  test/test parfile=imp_ddl.par


---------imp_ddl.par ------------------------- 

directory=datapump 

logfile=full_data.log 

dumpfile=full_data.dmp 

schemas=testS

remap_schema=testS:imptest

content=metadata_only

exclude=index,TRIGGER,statistics,constraint

-----------------------------------------------


아래 에러가 난다면 ..

ORA-39168: Object path TRIGGER was not found. 

 

- 뷰를 확인해서 valid value 인지 확인


* exclude, include 에 사용가능한 object type 확인은

 full mode =>  DATABASE_EXPORT_OBJECTS

 schema mode => SCHEMA_EXPORT_OBJECTS

 table/tablespace mode => TABLE_EXPORT_OBJECTS

뷰에서 확인 가능.


select *

from SCHEMA_EXPORT_OBJECTS

where object_path like '%TRIG%'


- export 에 trigger 가 없는 경우


export dump 에 trigger 가 없는 경우, 
impdp exclude 에 trigger 를 적으면, 그냥 넘어가는게 
아니고 error 를 뱉는다. 
exclude 구문에 trigger 를 제외하거나, dump 에 trigger 가 
포함되면 에러가 나지 않는다. 


* LOB 타입은 exclude  안되


2. data 만 import 하는 경우


impdp test/test parfile=imp_data.par


-----------imp_data.par  ----------------- 

directory=datapump 

logfile=imp_data.log 

dumpfile=full_data.dmp 

schemas=testS

remap_schema=testS:imptest

content=data_only

-----------------------------------------------



3. Index 등 기타 object 만 import 하는 경우


impdp test/test parfile=imp_idx.par


------------imp_idx.par -------------------- 

directory=datapump 

logfile=imp_idx.log 

dumpfile=full_data.dmp 

schemas=testS

remap_schema=testS:imptest

content=metadata_only

include=index,TRIGGER,statistics,constraint

-----------------------------------------------



datapump 로 이관하는 테스트를 정리해봤다. 

parameter 파일을 쓰면 좀 더 편하지만 잘못 작성할경우 에러메세지가 

안나오기도 하더란..


필요하신분은 참고하시길..







반응형
Posted by 돌고래트레이너
생계/OERR2017. 9. 7. 13:55

 

 

    impdp 할때 ora error

 

      실제 파일이 존재함에도 발생.

 

      구글링으로 parallel 구문 없애고 다시 실행하니 됨.

 

 

   ** 추가

     paralle 실패한 이유 : RAC 환경에서  디렉토리 접근권한이 node1 에만 있다면 parallel 안먹힘.

 

 

     impdp 시에 index 가 있으면 undo 사용량이 많아진다. index 를 unusuable 시키면 impdp 가 에러난다.

     (alter index ... unusable 은 sqlplus 에서만 되네... 희안하네..)

     -> index drop 후 재생성

 

 

    - expdp parallel :

 

    expdp id/pwd directory=dba_dir tables=A.B:partition dumpfile=dudump%U.dmp parallel=4 logfile=expdplog CONTENT=DATA_ONLY

 

    

 

  • For Data Pump Export, the PARALLEL parameter value should be less than or equal to the number of output dump files.
  • For Data Pump Import, the PARALLEL parameter value should not be much larger than the number of files in the dump file set.
 

 

반응형
Posted by 돌고래트레이너