はじめに
先日のアップデートで、Autonomous DatabaseにOCI File Storageのファイルシステムがアタッチできるようになりました。
従来は、Data Pumpを使用して既存のOracle DatabaseからAutonomous Databaseに移行する際にはObject Storageを経由する必要がありましたが、このアップデートによりOCI File Storageを使用したData Pumpによる移行が可能になりました。
これにより、Autnomous Databaseへの移行がより簡単に、より短時間で行えるようになりました。
オンプレミスとOCI環境がIPSec VPNやFast Connectで接続されている場合、オンプレミス側のサーバでもOCI File Storageのファイルシステムをマウントすることができます。
そのため、こちらの図のように、エクスポートしたダンプファイルを移動することなく、既存DBからAutonomous Databaseへの移行が可能になります。
今回はこちらのサンプルスキーマをロードしたDBからHRスキーマをexpdpでOCI File Storageのファイルシステム上にエクスポートし、OCI File Storageのファイルシステム上のダンプファイルをAutonomous Databaseにimpdpでインポートして移行するシナリオを検証してみました。
1. File Storage Service ファイルシステムの作成
こちらの記事を参考に、File Storage Serviceのファイルシステムを作成します。
今回は以下のような設定でファイルシステムを作成しました。
作成後にエクスポートの詳細画面の「マウント・コマンド」をクリックして、ファイルシステムをマウントする際に必要なコマンドを確認します。
2. 既存DBサーバでのFile Storage ファイルシステムのマウント
既存DBの稼働するサーバでFile Storage ファイルシステムをマウントします。
File Storage ファイルシステムをマウントするためのマウントポイント/mnt/FSSを作成します。
[opc@basedb /]$ sudo mkdir -p /mnt/FSS
mountコマンドで/mnt/FSSにFile Storageをマウントします。
[opc@basedb /]$ sudo mount fss.testsubnet.testvcn.oraclevcn.com:/FSS /mnt/FSS
Oracleの実行ユーザが書き込みできるように、マウントポイント/mnt/FSSのパーミッションを変更します。
[opc@basedb /]$ sudo chmod 777 /mnt/FSS
3. 既存DBの確認
SQL*Plusから既存DBに、エクスポートの対象であるHRユーザとして接続します。
[oracle@basedb ~]$ sqlplus hr/Demo#2Demo#2@pdb1
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 19 19:57:12 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Sat Nov 19 2022 19:17:21 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
SQL>
既存のDB内のHRスキーマの内容を確認します。
SQL> col table_name for a15
SQL> SELECT table_name, num_rows FROM user_tables;
TABLE_NAME NUM_ROWS
--------------- ----------
COUNTRIES 25
DEPARTMENTS 27
EMPLOYEES 107
JOBS 19
JOB_HISTORY 10
LOCATIONS 23
REGIONS 4
7 rows selected.
SQL>
HRスキーマには、7つのテーブルがあることがわかりました。
SQL*Plusを終了します。
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
[oracle@basedb ~]$
4. 既存DBからFile Storageへのエクスポート
SQL*Plusから既存DBにsystemとして接続します。
[oracle@basedb ~]$ sqlplus system/Demo#1Demo#1@pdb1
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 19 19:57:12 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Sat Nov 19 2022 19:17:21 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
SQL>
File Storage ファイルシステムのマウントポイント/mnt/FSSを参照するディレクトリ・オブジェクトFSS_DIRを作成します。
SQL> CREATE DIRECTORY FSS_DIR AS '/mnt/FSS';
Directory created.
SQL >
SQL*Plusを終了します。
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
[oracle@basedb ~]$
expdpコマンドで、既存DBからHRスキーマをFSS_DIR(= File Storage)内にhr.dumpというファイル名でエクスポートします。
[oracle@basedb ~]$ expdp system/Demo#1Demo#1@pdb1 directory=FSS_DIR dumpfile=hr.dump schemas=hr encryption_password=DumpPassw0rd
Export: Release 19.0.0.0.0 - Production on Sun Nov 20 00:35:45 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/********@pdb1 directory=FSS_DIR dumpfile=hr.dump schemas=hr encryption_password=********
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
. . exported "HR"."EMPLOYEES" 17.09 KB 107 rows
. . exported "HR"."LOCATIONS" 8.445 KB 23 rows
. . exported "HR"."JOB_HISTORY" 7.203 KB 10 rows
. . exported "HR"."JOBS" 7.117 KB 19 rows
. . exported "HR"."DEPARTMENTS" 7.132 KB 27 rows
. . exported "HR"."COUNTRIES" 6.375 KB 25 rows
. . exported "HR"."REGIONS" 5.554 KB 4 rows
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
/mnt/FSS/hr.dump
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Sun Nov 20 00:36:37 2022 elapsed 0 00:00:49
[oracle@basedb ~]$
無事エクスポートが完了しました。
ディレクトリ・オブジェクトFSS_DIRの実体である/mnt/FSS(=File Storage ファイルシステムをマウントしているマウントポイント)の内容を確認してみます。
[oracle@basedb ~]$ ls -l /mnt/FSS
total 776
-rw-r----- 1 oracle oinstall 2580 Nov 19 19:34 export.log
-rw-r----- 1 oracle oinstall 737280 Nov 19 19:34 hr.dump
[oracle@basedb ~]$
エクスポートファイルhr.dumpとexpdpのログexport.logが出力されていることが確認できました。
SQL*Plusから既存DBにsysdbaとして接続します。
[oracle@basedb ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 19 19:57:12 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Sat Nov 19 2022 19:17:21 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
SQL>
エクスポートが完了したので、ディレクトリ・オブジェクトFSS_DIRを削除します。
SQL> DROP DIRECTORY FSS_DIR;
Directory dropped.
SQL>
SQL*Plusを終了します。
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
[oracle@basedb ~]$
umountコマンドでFile Storage ファイルシステムをアンマウントします。
[opc@basedb /]$ sudo unmount /mnt/FSS
5. Autonomous DatabasaeへのFile Storage ファイルシステムのアタッチ
SQL*Plusから移行先となるAutonomous Databaseにadminとして接続します。
[oracle@basedb ~]$ sqlplus admin/Demo#1Demo#1@adb
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 19 19:44:37 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0
SQL>
File Storage ファイルシステムをアタッチするためのディレクトリ・オブジェクトFSS_DIRを作成します。
SQL> CREATE DIRECTORY FSS_DIR AS 'FSSDIR';
Directory created.
SQL>
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEMを使用して、作成したディレクトリ・オブジェクトFSS_DIRにFile Storage ファイルシステムをアタッチします。
SQL> BEGIN
2 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM(
3 file_system_name => 'FSS',
4 file_system_location => 'fss.testsubnet.testvcn.oraclevcn.com:/FSS',
5 directory_name => 'FSS_DIR',
6 description => 'Mounting a FSS'
7 );
8 END;
9 /
PL/SQL procedure successfully completed.
SQL>
Autonomous DatabaseにFile Storage ファイルシステムをアタッチすることができました。
SQL*Plusを終了します。
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0
[oracle@basedb ~]$
6. Autonomous Databaseへのインポート
準備が整ったので、File Storage ファイルシステムにあるダンプファイルhr.dumpをAutonomous Databaaseにインポートします。
impdpコマンドで、Autonomous DatabasaeにディレクトリFSS_DIR(=File Storage ファイルシステム)にあるダンプファイルhr.dump内のHRスキーマをインポートします。
[oracle@basedb ~]$ impdp admin/Demo#1Demo#1@adb directory=FSS_DIR dumpfile=hr.dump schemas=hr exclude=grant encryption_password=DumpPassw0rd
Import: Release 19.0.0.0.0 - Production on Sun Nov 20 00:47:03 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Master table "ADMIN"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "ADMIN"."SYS_IMPORT_SCHEMA_01": admin/********@adb directory=FSS_DIR dumpfile=hr.dump schemas=hr exclude=grant encryption_password=********
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "HR"."EMPLOYEES" 17.09 KB 107 rows
. . imported "HR"."LOCATIONS" 8.445 KB 23 rows
. . imported "HR"."JOB_HISTORY" 7.203 KB 10 rows
. . imported "HR"."JOBS" 7.117 KB 19 rows
. . imported "HR"."DEPARTMENTS" 7.132 KB 27 rows
. . imported "HR"."COUNTRIES" 6.375 KB 25 rows
. . imported "HR"."REGIONS" 5.554 KB 4 rows
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "ADMIN"."SYS_IMPORT_SCHEMA_01" successfully completed at Sat Nov 19 15:47:27 2022 elapsed 0 00:00:18
[oracle@basedb ~]$
無事インポートが完了しました。
7. インポートの確認
SQL*PlusからAutonomous DatabaseにインポートされたHRユーザとして接続します。
[oracle@basedb ~]$ sqlplus hr/Demo#2Demo#2@adb
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 19 19:53:43 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0
SQL>
HRスキーマ内の内容を確認します。
SQL> col table_name for a15
SQL> SELECT table_name, num_rows FROM user_tables;
TABLE_NAME NUM_ROWS
--------------- ----------
COUNTRIES 25
JOBS 19
LOCATIONS 23
EMPLOYEES 107
REGIONS 4
JOB_HISTORY 10
DEPARTMENTS 27
7 rows selected.
SQL>
移行元のHRスキーマのテーブルがインポートされていることが確認できました。
SQL*Plusを終了します。
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0
[oracle@basedb ~]$
8. Autonomous Databaseからの File Storage ファイルシステムのデタッチ
SQL*PlusからAutonomous Databaseにadminユーザとして接続します。
[oracle@basedb ~]$ sqlplus admin/Demo#1Demo#1@adb
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Nov 19 20:12:11 2022
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Sat Nov 19 2022 19:52:47 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0
SQL>
DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEMプロシージャで、ディレクトリ・オブジェクトFSS_DIRからFile Storage ファイルシステムをデタッチします。
SQL> BEGIN
2 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM(file_system_name => 'FSS');
3 END;
4 /
PL/SQL procedure successfully completed.
SQL>
ディレクトリ・オブジェクトFSS_DIRを削除します。
SQL> DROP DIRECTORY FSS_DIR;
Directory dropped.
SQL>
以上で、既存のOracle DatabaseからAutonomous DatabaseへのData Pumpによる移行をOCI File Storage経由で行うことができました。
参考資料
・Autonomous Databasae:File Storage ServiceのファイルシステムをAutonomous Databaseにアタッチしてみた
・Oracle Data Pump エクスポート
・Oracle Data Pump インポート
・CREATE DIRECTORY