비밀번호 및 전자 지갑 파일을 클라우드에 복사

비밀번호 및 전자 지갑 파일을 기본 데이터베이스에서 Oracle Cloud Infrastructure의 대기로 복사합니다.

데이터베이스 이름 가져오기 및 전자 지갑 확인

OCI(Oracle Cloud Infrastructure) 인스턴스에 대한 고유 데이터베이스 이름 및 Oracle SID(시스템 ID) 를 가져오고 전자 지갑 위치를 확인합니다.

데이터베이스 이름은 OCI의 온-프레미스 데이터베이스와 데이터베이스 시스템에 대해 동일해야 합니다.
  1. OCI에서 고유한 데이터베이스 이름 및 SID를 가져옵니다.
    ORACLE_UNQNAME는 OCI 데이터베이스 시스템의 current db_unique_name 입니다. ORACLE_SIDONPREMSID 입니다. 이 예에서 Oracle SID는 ORCLCDB 입니다.
    env | grep ORA
  2. SQL 명령을 실행하여 온-프레미스 전자 지갑 파일의 위치를 확인하십시오.
    select * from V$ENCRYPTION_WALLET;
  3. OCI에서 대기 데이터베이스에 대한 전자 지갑 위치를 기록해 둡니다. 이 작업은 이후 단계에서 수행해야 합니다.
     /opt/oracle/dcs/commonstore/wallets/tde/ORACLE_UNQNAME/

    예: OCI의 전자 지갑:

    $ ls -lrt
    total 20
    -rw------- 1 oracle oinstall 2555 Aug 27 06:32 ewallet_2020082706324337.p12
    -rw------- 1 oracle oinstall 5467 Aug 27 06:32 ewallet.p12
    -rw------- 1 oracle oinstall 5512 Aug 27 06:32 cwallet.sso

    예를 들어, 온-프레미스 전자 지갑 위치는 다음과 같습니다:

    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB/xdb_wallet
    bash-4.2$ ls -lrt
    total 8
    -rw-------. 1 oracle oinstall 3835 Aug 27 02:23 ewallet.p12
    -rw-------. 1 oracle oinstall 3880 Aug 27 02:23 cwallet.sso

OCI 인스턴스에서 데이터 파일 제거

OCI(Oracle Cloud Infrastructure) 인스턴스에서 데이터 파일을 제거합니다.

  1. OCI 인스턴스에서 데이터 파일을 제거하는 스크립트를 생성합니다.
    다음은 예제 스크립트입니다:
    SQL> set heading off linesize 999 pagesize 0 feedback off trimspool on
    SQL> spool /tmp/files.lst
    SQL> select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from 	v$logfile;
    SQL> spool off
    SQL> create pfile='/tmp/ ORACLE_UNQNAME.pfile' from spfile;         
    SQL> exit
  2. sysdbashutdown immediate 명령을 사용하여 OCI에서 대기 데이터베이스를 종료, 마운트 해제 및 종료합니다.
    SQL> shutdown immediate
  3. /tmp 디렉토리에서 files.lst 파일을 열고 a.b. 행을 제거하여 데이터 파일을 제거합니다.
    a.   SQL> select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile;
    b.   SQL> spool off
    c.   If you don’t have ASM disks, then you will have to remove ALL the asmcmd command from the files.lst else the database files won't be deleted.
    d.   Chmod 777 /tmp/files.lst
    e.   Save and Execute the Script. $ ./tmp/files.lst
    f.   All files for the starter database have now been removed.

대기 데이터베이스에 비밀번호 복사

IP 주소를 사용하여 배스천 호스트와 대상 데이터베이스 호스트 간에 SSH 터널을 열어 온-프레미스 데이터베이스에서 대기 데이터베이스 호스트로 비밀번호 파일을 복사합니다.

  1. 배스천 호스트를 통해 로컬 호스트에서 대기 데이터베이스 인스턴스로 터널링하고 비밀번호 파일을 복사합니다.
    비밀번호 파일은 $ORACLE_HOME/dbs/orapwORACLE_SID 디렉토리에 있습니다.
    다음 예에서는 id_rsa를 SSH 키로 바꾸고 배스천 호스트 및 OCI(Oracle Cloud Infrastructure) 데이터베이스 노드의 IP 주소를 사용합니다.
    scp -i ~/Keys/id_rsa -o ProxyCommand="ssh -i ~/Keys/id_rsa -W %h:%p opc@IP_address_of_your_bastion_host" orapwORACLE_SID opc@IP address of your OCI DB Node:~/tmp
  2. 복사된 파일을 OCI의 대기 데이터베이스 인스턴스에 저장합니다.
    sudo cp orapwORACLE_SID /u01/app/oracle/product/19.0.0/dbhome_1/dbs/
  3. 온-프레미스 및 OCI 파일 orapwORACLE_SID에서 md5sum 명령을 실행하고 지문이 동일한지 확인합니다.
    md5sum /u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwORACLE_SID
    

전자 지갑 파일을 대기 데이터베이스에 복사합니다.

IP 주소를 사용하여 배스천 호스트와 대기 데이터베이스 호스트 간에 SSH 터널을 열어 OCI(Oracle Cloud Infrastructure) 의 대기 데이터베이스 호스트에 있는 /home/oracle/ 디렉토리에 비밀번호 전자 지갑을 복사합니다.

  1. 온-프레미스 호스트에서 전자 지갑을 찾아 모든 사용자가 전자 지갑 파일을 읽기, 쓰기 및 실행 가능하도록 설정합니다.
    cd /opt/oracle/admin/$ORCLSID/wallet
    이 예제에서 전자 지갑은 ewallet.p12cwallet.sso의 두 파일을 포함합니다. chmod 777 명령을 사용하여 모든 사용자가 두 파일을 읽기, 쓰기 및 실행 가능하도록 설정합니다.
  2. OCI DB 호스트에서 $ORACLE_HOME/network/admin/sqlnet.ora 파일의 sqlnet.ora에 ENCRYPTION_WALLET_LOCATION 매개변수가 포함되어 있는지 확인합니다.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE) (METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  3. Tunnel 명령을 사용하여 전자 지갑 파일을 /tmp 폴더의 OCI DB 호스트로 복사합니다.
    ~/Keys/id_rsa : Replace it with your Ssh keys
    192.0.2.254: IP address of your bastion host.
    10.10.30.2: IP address of your OCI DB Node.
    
    scp -i ~/Keys/id_rsa -o ProxyCommand="ssh -i ~/Keys/id_rsa -W %h:%p opc@192.0.2.254" ewallet.p12 opc@10.10.30.2:/tmp/
    
    scp -i ~/Keys/id_rsa -o ProxyCommand="ssh -i ~/Keys/id_rsa -W %h:%p opc@192.0.2.254" cwallet.sso opc@10.10.30.2:/tmp/
  4. /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME 디렉토리의 OCI DB 호스트에서 기존 전자 지갑 파일을 제거합니다.
  5. OCI 호스트의 OPC 사용자(Oracle 사용자 아님) 로 모든 사용자가 전자 지갑 파일을 읽고 쓸 수 있도록 합니다.
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
  6. 전자 지갑 파일을 /tmp 폴더에서 /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME로 복사합니다.