반응형
■ [2025-06-06] ASM 내에 파일을 원격지의 ASM 위치로 copy 하기 (19c)

 

[2025-06-06] ASM 내에 파일을 원격지의 ASM 위치로 copy 하기 (19c)

 

 

[실습 환경]

 

<소스>
OS : Oracle Linux Server 7.9 (Linux rdb01d 5.4.17-2102.201.3.el7uek.x86_64)
DB : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production (Version 19.27.0.0.0)
RAC1 : ol7ora19r1(192.168.0.21) : ORA19R1
RAC2 : ol7ora19r2(192.168.0.22) : ORA19R2

 

<타켓>
OS : Oracle Linux Server 7.9 (Linux rdb01d 5.4.17-2102.201.3.el7uek.x86_64)
DB : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production (Version 19.26.0.0.0)
SINGLE : tdb01t(192.168.0.51) : ORCL

 

1. asmcmd 사용

 

1-1. 타켓에서 테스트용 디렉토리 생성

[+ASM:grid@tdb01t][/home/grid]$ asmcmd
ASMCMD [+] > cd DATA1
ASMCMD [+DATA1] > mkdir TEST

 

[+ASM:grid@tdb01t][/home/grid]$ lsnrctl status LISTENER_ORCL

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 06-JUN-2025 22:12:03

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ORCL)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_ORCL
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                06-JUN-2025 21:28:26
Uptime                    0 days 0 hr. 43 min. 37 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/19c/grid/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/tdb01t/listener_orcl/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ORCL)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.51)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA1" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_FRA1" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "ORCL" has 1 instance(s).
  Instance "ORCL", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
  Instance "ORCL", status READY, has 1 handler(s) for this service...
The command completed successfully

--> +ASM으로 접속 가능한 상태임을 확인

 

1-2. 소스에서 타켓으로 파일 복사

 

--DBI_TRACE 환경 변수를 1로 세팅

[+ASM1:grid@ol7ora19r1][/home/grid]$ export DBI_TRACE=1

 

--> 소스에서 원격지로 파일 복사

[+ASM1:grid@ol7ora19r1][/home/grid]$ asmcmd cp +DATA1_NEW/ORA19R/DATAFILE/USERS.268.1202826071 sys/oracle@192.168.0.51.+ASM:+DATA1/TEST/users.dbf

 

--만약 포트를 지정한다면
asmcmd cp --port 1522 +DATA1_NEW/ORA19R/DATAFILE/USERS.268.1202826071 sys/oracle@192.168.0.51.+ASM:+DATA1/TEST/users.dbf
--> 이렇게 포트를 지정하면됨

 

    DBI 1.644-ithread default trace level set to 0x0/1 (pid 4578 pi 98c010) at DBI.pm line 297 via asmcmdshare.pm line 456
    -> DBI->connect(dbi:Oracle:(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/19c/grid/bin/oracle)(ARGV0=oracle+ASM1_asmcmd)(ENVS='ORACLE_HOME=/u01/app/19c/grid,ORACLE_SID=+ASM1,ORA_SERVER_BROKER_MODE=NONE')(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(ORACLE_HOME=/u01/app/19c/grid)(SID=+ASM1))(SECURITY=(AUTHENTICATION_SERVICE=beq))(enable=setuser)), , ****, HASH(0x1d695f0))
    -> DBI->install_driver(Oracle) for linux perl=5.038002 pid=4578 ruid=54322 euid=54322
       install_driver: DBD::Oracle version 1.90 loaded from /u01/app/19c/grid/perl/lib/site_perl/5.38.2/x86_64-linux-thread-multi/DBD/Oracle.pm
    <- STORE('ShowErrorStatement', 1)= ( 1 ) [1 items] at Oracle.pm line 80
    <- install_driver= DBI::dr=HASH(0x2a4e7e0)
    <- default_user(undef, undef, ...)= ( undef undef ) [2 items] at DBI.pm line 670
    <- DESTROY(DBI::st=HASH(0x2a2ece0))= ( ) [0 items] at Oracle.pm line 347
    <- connect('(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/19c/grid/bin/oracle)(ARGV0=oracle+ASM1_asmcmd)(ENVS='ORACLE_HOME=/u01/app/19c/grid,ORACLE_SID=+ASM1,ORA_SERVER_BROKER_MODE=NONE')(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(ORACLE_HOME=/u01/app/19c/grid)(SID=+ASM1))(SECURITY=(AUTHENTICATION_SERVICE=beq))(enable=setuser))', undef, ...)= ( DBI::db=HASH(0x2a2eb18) ) [1 items] at DBI.pm line 682
    <- STORE('PrintError', 0)= ( 1 ) [1 items] at DBI.pm line 734
    <- STORE('AutoCommit', 1)= ( 1 ) [1 items] at DBI.pm line 734
    <- STORE('Username', undef)= ( 1 ) [1 items] at DBI.pm line 737
    <- connected('dbi:Oracle:(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/19c/grid/bin/oracle)(ARGV0=oracle+ASM1_asmcmd)(ENVS='ORACLE_HOME=/u01/app/19c/grid,ORACLE_SID=+ASM1,ORA_SERVER_BROKER_MODE=NONE')(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(ORACLE_HOME=/u01/app/19c/grid)(SID=+ASM1))(SECURITY=(AUTHENTICATION_SERVICE=beq))(enable=setuser))', undef, ...)= ( undef ) [1 items] at DBI.pm line 744
    <- connect= DBI::db=HASH(0x2a2eb18)
    <- STORE('dbi_connect_closure', CODE(0x2a2e248))= ( 1 ) [1 items] at DBI.pm line 753
    <- prepare('/* ASMCMD */ select instance_name from v$instance')= ( DBI::st=HASH(0x2a2ec38) ) [1 items] at asmcmdshare.pm line 4008
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x2a0e158)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x2a2ed40))= ( ) [0 items] at asmcmdshare.pm line 6531
    <- prepare('/* ASMCMD */ select version_full from v$instance')= ( DBI::st=HASH(0x2a58708) ) [1 items] at asmcmdshare.pm line 4008
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x2a0e0f8)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x2a2ece0))= ( ) [0 items] at asmcmdshare.pm line 2294
    -> DBI->connect(dbi:Oracle:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.51)(PRIVILEGE=sysdba)(INTERNAL_LOGON=sysdba)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=+ASM)(INSTANCE_NAME=+ASM))), sys, ****, HASH(0x2a586f0))
    <- connect('(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.51)(PRIVILEGE=sysdba)(INTERNAL_LOGON=sysdba)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=+ASM)(INSTANCE_NAME=+ASM)))', 'sys', ...)= ( DBI::db=HASH(0x3002f88) ) [1 items] at DBI.pm line 682
    <- STORE('PrintError', 0)= ( 1 ) [1 items] at DBI.pm line 734
    <- STORE('AutoCommit', 1)= ( 1 ) [1 items] at DBI.pm line 734
    <- STORE('Username', 'sys')= ( 1 ) [1 items] at DBI.pm line 737
    <- connected('dbi:Oracle:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.51)(PRIVILEGE=sysdba)(INTERNAL_LOGON=sysdba)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=+ASM)(INSTANCE_NAME=+ASM)))', 'sys', ...)= ( undef ) [1 items] at DBI.pm line 744
    <- connect= DBI::db=HASH(0x3002f88)
    <- STORE('dbi_connect_closure', CODE(0x2ffffb0))= ( 1 ) [1 items] at DBI.pm line 753
    <- prepare('/* ASMCMD */ select instance_name from v$instance')= ( DBI::st=HASH(0x30031c8) ) [1 items] at asmcmdshare.pm line 4008
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x3003408)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x3003060))= ( ) [0 items] at asmcmdshare.pm line 6531
    <- prepare('/* ASMCMD */ select value from v$parameter where name = ?')= ( DBI::st=HASH(0x30031c8) ) [1 items] at asmcmdshare.pm line 4227
    <- bind_param(1, 'instance_type', ...)= ( 1 ) [1 items] at asmcmdshare.pm line 2894
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x2ffff38)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x3002fa0))= ( ) [0 items] at asmcmdshare.pm line 2900
    <- prepare('/* ASMCMD */ select group_number, state from v$asm_diskgroup_stat where name = ?')= ( DBI::st=HASH(0x3003300) ) [1 items] at asmcmdshare.pm line 4227
    <- bind_param(1, 'DATA1_NEW', ...)= ( 1 ) [1 items] at asmcmdshare.pm line 3688
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x3003618)2keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x2a2eda0))= ( ) [0 items] at asmcmdshare.pm line 3698
    <- prepare('/* ASMCMD */ select reference_index from v$asm_alias where group_number = ? and parent_index = ? and upper(name) = ?')= ( DBI::st=HASH(0x2fffef0) ) [1 items] at asmcmdshare.pm line 4227
dbd_rebind_ph() (2): rebinding :p1 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(1, 3)= ( 1 ) [1 items] at asmcmdshare.pm line 3285
    <- bind_param(2, 50331648)= ( 1 ) [1 items] at asmcmdshare.pm line 3286
    <- bind_param(3, undef, ...)= ( 1 ) [1 items] at asmcmdshare.pm line 3287
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x3003738)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x3003420))= ( ) [0 items] at asmcmdshare.pm line 3293
    <- prepare('/* ASMCMD */ select reference_index from v$asm_alias where group_number = ? and parent_index = ? and upper(name) = ?')= ( DBI::st=HASH(0x3003510) ) [1 items] at asmcmdshare.pm line 4227
dbd_rebind_ph() (2): rebinding :p1 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(1, 3)= ( 1 ) [1 items] at asmcmdshare.pm line 3285
dbd_rebind_ph() (2): rebinding :p2 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(2, "50331701")= ( 1 ) [1 items] at asmcmdshare.pm line 3286
    <- bind_param(3, undef, ...)= ( 1 ) [1 items] at asmcmdshare.pm line 3287
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x3003720)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x2a2ef98))= ( ) [0 items] at asmcmdshare.pm line 3293
    <- prepare('/* ASMCMD */ select reference_index from v$asm_alias where group_number = ? and parent_index = ? and upper(name) = ?')= ( DBI::st=HASH(0x30033f0) ) [1 items] at asmcmdshare.pm line 4227
dbd_rebind_ph() (2): rebinding :p1 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(1, 3)= ( 1 ) [1 items] at asmcmdshare.pm line 3285
dbd_rebind_ph() (2): rebinding :p2 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(2, "50331860")= ( 1 ) [1 items] at asmcmdshare.pm line 3286
    <- bind_param(3, 'USERS.268.1202826071', ...)= ( 1 ) [1 items] at asmcmdshare.pm line 3287
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x30036d8)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x3003690))= ( ) [0 items] at asmcmdshare.pm line 3293
    <- prepare('/* ASMCMD */ select group_number, state from v$asm_diskgroup_stat where name = ?')= ( DBI::st=HASH(0x2fffe18) ) [1 items] at asmcmdshare.pm line 4227
    <- bind_param(1, undef, ...)= ( 1 ) [1 items] at asmcmdshare.pm line 3688
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x30036a8)2keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x3003438))= ( ) [0 items] at asmcmdshare.pm line 3698
    <- prepare('/* ASMCMD */ select reference_index from v$asm_alias where group_number = ? and parent_index = ? and upper(name) = ?')= ( DBI::st=HASH(0x3003780) ) [1 items] at asmcmdshare.pm line 4227
dbd_rebind_ph() (2): rebinding :p1 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(1, 1)= ( 1 ) [1 items] at asmcmdshare.pm line 3285
    <- bind_param(2, 16777216)= ( 1 ) [1 items] at asmcmdshare.pm line 3286
    <- bind_param(3, undef, ...)= ( 1 ) [1 items] at asmcmdshare.pm line 3287
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( HASH(0x300d928)1keys ) [1 items] row1 at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x3003420))= ( ) [0 items] at asmcmdshare.pm line 3293
    <- prepare('/* ASMCMD */ select reference_index from v$asm_alias where group_number = ? and parent_index = ? and upper(name) = ?')= ( DBI::st=HASH(0x300d880) ) [1 items] at asmcmdshare.pm line 4227
dbd_rebind_ph() (2): rebinding :p1 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(1, 1)= ( 1 ) [1 items] at asmcmdshare.pm line 3285
dbd_rebind_ph() (2): rebinding :p2 with UTF8 value so setting csform=SQLCS_IMPLICIT    <- bind_param(2, "16778329")= ( 1 ) [1 items] at asmcmdshare.pm line 3286
    <- bind_param(3, undef, ...)= ( 1 ) [1 items] at asmcmdshare.pm line 3287
    <- execute= ( '0E0' ) [1 items] at asmcmdshare.pm line 4311
    <- fetchrow_hashref= ( undef ) [1 items] at asmcmdshare.pm line 4034
    <- finish= ( 1 ) [1 items] at asmcmdshare.pm line 4055
    <- DESTROY(DBI::st=HASH(0x3003588))= ( ) [0 items] at asmcmdshare.pm line 3293
    <- prepare('
        begin
          dbms_diskgroup.getfileattr(:fileName, :fileType, :fileSz, :blkSz);
        end;
        ')= ( DBI::st=HASH(0x30034e0) ) [1 items] at asmcmdbase.pm line 4709
    <- bind_param(':fileName', '+DATA1_NEW/ORA19R/DATAFILE/USERS.268.1202826071')= ( 1 ) [1 items] at asmcmdbase.pm line 4716
    <- bind_param_inout(':fileType', SCALAR(0x1c04360), ...)= ( 1 ) [1 items] at asmcmdbase.pm line 4719
    <- bind_param_inout(':fileSz', SCALAR(0x1c04378), ...)= ( 1 ) [1 items] at asmcmdbase.pm line 4720
    <- bind_param_inout(':blkSz', SCALAR(0x1c04390), ...)= ( 1 ) [1 items] at asmcmdbase.pm line 4721
    <- execute= ( 1 ) [1 items] at asmcmdbase.pm line 4724
    <- prepare('
       begin
       dbms_diskgroup.copy('', '', '', :src_path, :src_ftyp, :src_blksz,
                           :src_fsiz, :connect_iden, :usrname, :passwd,
                           :dst_path, 1, :dst_pblksize, :sparse_option, 0, '',
                           :dbuniquename);
       end;
       ')= ( DBI::st=HASH(0x3003360) ) [1 items] at asmcmdbase.pm line 5201
    <- DESTROY(DBI::st=HASH(0x3003528))= ( ) [0 items] at asmcmdbase.pm line 5201
    <- bind_param(':src_path', '+DATA1_NEW/ORA19R/DATAFILE/USERS.268.1202826071')= ( 1 ) [1 items] at asmcmdbase.pm line 5218
    <- bind_param(':src_ftyp', 12)= ( 1 ) [1 items] at asmcmdbase.pm line 5219
    <- bind_param(':src_blksz', 8192)= ( 1 ) [1 items] at asmcmdbase.pm line 5220
    <- bind_param(':src_fsiz', '640')= ( 1 ) [1 items] at asmcmdbase.pm line 5221
    <- bind_param(':connect_iden', '(description=(address_list=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.51)(privilege=sysdba)(internal_logon=sysdba)(PORT=1521)))(connect_data=(service_name=+ASM) (instance_name=+ASM)))')= ( 1 ) [1 items] at asmcmdbase.pm line 5222
    <- bind_param(':usrname', 'sys')= ( 1 ) [1 items] at asmcmdbase.pm line 5223
    <- bind_param(':passwd', '"oracle"')= ( 1 ) [1 items] at asmcmdbase.pm line 5224
    <- bind_param(':dst_path', '+DATA1/TEST/users.dbf')= ( 1 ) [1 items] at asmcmdbase.pm line 5225
    <- bind_param(':dst_pblksize', 0)= ( 1 ) [1 items] at asmcmdbase.pm line 5226
    <- bind_param(':sparse_option', '0')= ( 1 ) [1 items] at asmcmdbase.pm line 5227
    <- bind_param(':dbuniquename', '')= ( 1 ) [1 items] at asmcmdbase.pm line 5228
copying +DATA1_NEW/ORA19R/DATAFILE/USERS.268.1202826071 -> 192.168.0.51:+DATA1/TEST/users.dbf
    <- execute= ( 1 ) [1 items] at asmcmdbase.pm line 5233
    <- DESTROY(DBI::st=HASH(0xfa02b8))= ( ) [0 items] at asmcmdbase.pm line 5261
    <- DESTROY(DBI::db=HASH(0x3002eb0))= ( ) [0 items] at asmcmdbase.pm line 2952
    <- DESTROY(DBI::db=HASH(0x2a2ea28))= ( ) [0 items] at asmcmdcore line 1503
    <- disconnect_all= ( ) [0 items] (not implemented) at DBI.pm line 761
!   <- DESTROY(DBI::dr=HASH(0x2a4e738))= ( ) [0 items] during global destruction

 

1-3. 타켓에서 파일 확인

[+ASM:grid@tdb01t][/home/grid]$ asmcmd ls -sl +DATA1/TEST/
Type      Redund  Striped  Time             Sys  Block_Size  Blocks    Bytes    Space  Name
DATAFILE  UNPROT  COARSE   JUN 06 22:00:00  N          8192     641  5251072  8388608  users.dbf => +DATA1/ASM/DATAFILE/users.dbf.352.1203113221

 

ASMCMD [+DATA1/ASM/DATAFILE] > cp +DATA1/ASM/DATAFILE/users.dbf.352.1203114179 +DATA1/TEST/users.dbf
copying +DATA1/ASM/DATAFILE/users.dbf.352.1203114179 -> +DATA1/TEST/users.dbf

--> 제대로 가져온것을 확인!

 

2. dbms_file_transfer 사용 (db link 사용)

 

--소스
[ORA19R1:oracle@ol7ora19r1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 6 23:02:36 2025
Version 19.27.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.27.0.0.0

[2025-06-06:23:02:36][ol7ora19r1]<SYS@ORA19R1> drop directory SOURCE_DUMP;

Directory dropped.

Elapsed: 00:00:00.10

 

[2025-06-06:23:02:36][ol7ora19r1]<SYS@ORA19R1> create directory SOURCE_DUMP as '+DATA1_NEW/ORA19R/DATAFILE/';

Directory created.

Elapsed: 00:00:00.03

 

[2025-06-06:23:02:36][ol7ora19r1]<SYS@ORA19R1> grant read,write on directory SOURCE_DUMP to public;

Grant succeeded.

Elapsed: 00:00:00.02

 

--타켓
[ORCL:oracle@tdb01t][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 6 23:03:20 2025
Version 19.26.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.26.0.0.0


[2025-06-06:23:03:20][tdb01t]<ORCL@SYS> create directory TARGET_DUMP as '+DATA1/TEST';
[2025-06-06:23:03:20][tdb01t]<ORCL@SYS> grant read,write on directory TARGET_DUMP to public;

[2025-06-06:23:03:20][tdb01t]<ORCL@SYS> drop public database link SOURCEDB;

Database link dropped.

Elapsed: 00:00:00.02
[2025-06-06:23:03:20][tdb01t]<
ORCL@SYS> create public database link SOURCEDB connect to system identified by oracle using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.24)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORA19R)))';

Database link created.

Elapsed: 00:00:00.04

--> 타켓에서 소스DB로 붙어 보기
[2025-06-06:23:03:20][tdb01t]<
ORCL@SYS> select * from dual@SOURCEDB;

DUM
---
X

1 row selected.

 

--타켓에서 소스에 있는 파일 복사해오기

--grid user 로 디렉토리 미리 생성
ASMCMD [+DATA1] > mkdir +DATA1/TEST


--DBMS_FILE_TRANSFER.GET_FILE 사용법
BEGIN
DBMS_FILE_TRANSFER.GET_FILE (
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
source_database IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2);
END;
/

 

--타켓에서 소스에 있는 파일 복사해오기
[2025-06-06:23:03:20][tdb01t]<ORCL@SYS>
set timing on
BEGIN
dbms_file_transfer.get_file('SOURCE_DUMP',
'USERS.268.1202826071',
'SOURCEDB',
'TARGET_DUMP',
'users.dbf');
END;
/

 

--가져온 파일 확인
[+ASM:grid@tdb01t][/home/grid]$ asmcmd ls -sl +DATA1/TEST
Type      Redund  Striped  Time             Sys  Block_Size  Blocks    Bytes    Space  Name
DATAFILE  UNPROT  COARSE   JUN 06 23:00:00  N          8192     641  5251072  8388608  users.dbf => +DATA1/ORCL/DATAFILE/GET_FILE.352.1203117337

--> 제대로 가져온것을 확인!

반응형

+ Recent posts