パスワード・ファイルおよびウォレット・ファイルのクラウドへのコピー

パスワードおよびウォレット・ファイルをプライマリ・データベースからOracle Cloud Infrastructureのスタンバイにコピーします。

データベース名の取得とウォレットの確認

Oracle Cloud Infrastructure (OCI)インスタンスの一意のデータベース名およびOracleシステムID (SID)を取得し、ウォレットの場所を確認します。

データベース名は、オンプレミス・データベースと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インスタンスからのデータファイルの削除

Oracle Cloud Infrastructure (OCI)インスタンスからデータファイルを削除します。

  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. sysdbaとして、コマンドshutdown 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. ローカル・ホストからbastionホストを介してスタンバイ・データベース・インスタンスにトンネリングし、パスワード・ファイルをコピーします。
    パスワード・ファイルは、$ORACLE_HOME/dbs/orapwORACLE_SIDディレクトリにあります。
    次の例では、id_rsaをSSHキーで置き換え、要塞ホストおよびOracle Cloud Infrastructure (OCI)データベース・ノードの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トンネルをオープンし、パスワード・ウォレットをOracle Cloud Infrastructure (OCI)のスタンバイ・データベース・ホストの/home/oracle/ディレクトリにコピーします。

  1. オンプレミス・ホストでウォレットを見つけ、ウォレット・ファイルをすべてのユーザーが読取り、書込みおよび実行できるようにします。
    cd /opt/oracle/admin/$ORCLSID/wallet
    この例では、ウォレットにewallet.p12およびcwallet.ssoという2つのファイルが含まれます。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にコピーします。