確認したこと
Oracle Database 10g から23c へのデータ移行
Datapump Export / Import を使用します。
環境
<移行元>
・Windows 2003
・Oracle Database 10g
<移行先>
・Oracle Linux 8.8
・Oracle Database 23c Free (Developer Release)
注意:2023/7時点で正式な製品版ではないため、正式リリース前の事前検証用になります。
Oracle Database 10gからDatapump Export
移行対象のデータ確認
今回は、Oracle Databaseの有名なサンプルスキーマであるScottを対象に検証します。
検索すると 4 テーブル、2 インデックスありました。
dept表のデータも検索してみます。
これらを移行することとします。
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on 木 7月 13 06:32:40 2023
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
に接続されました。
SQL> select object_type,object_name from dba_objects where owner='SCOTT' order by 1,2;
OBJECT_TYPE OBJECT_NAME
------------------- ------------------------------
INDEX PK_DEPT
INDEX PK_EMP
TABLE BONUS
TABLE DEPT
TABLE EMP
TABLE SALGRADE
6行が選択されました。
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
SQL> exit
Export
Oracle Database 10gから、Scottユーザのオブジェクト・データのみ、Exportを行います。
従来型ではなく、DataPumpExportを使用します。
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on 木 7月 13 06:32:40 2023
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
に接続されました。
--★ Exportに使用するディレクトリオブジェクトのパスを確認 ★--
SQL> select directory_name,directory_path from dba_directories;
DIRECTORY_NAME
------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
DATA_PUMP_DIR
C:\oracle\product\10.2.0/admin/gpsdb/dpdump/
ORACLE_OCM_CONFIG_DIR
C:\oracle\product\10.2.0\db_1/ccr/state
SQL> exit
Oracle Database 10g Release 10.2.0.5.0 - 64bit Productionとの接続が切断されました。
--★ 確認したディレクトリオブジェクト「data_pump_dir」を使用してExport ★--
C:\>expdp system/password dumpfile=data_pump_dir:10g.dmp logfile=data_pump_dir:10gexp.log schemas=scott
Export: Release 10.2.0.5.0 - 64bit Production on 木曜日, 13 7月, 2023 6:35:56
Copyright (c) 2003, 2007, Oracle. All rights reserved.
接続先: Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
"SYSTEM"."SYS_EXPORT_SCHEMA_01"を起動しています: system/******** dumpfile=data_pump_dir:10g.dmp logfile=data_pump_dir:10gexp.log schemas=scott
BLOCKSメソッドを使用して見積り中です...
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
BLOCKSメソッドを使用した見積り合計: 192 KB
オブジェクト型SCHEMA_EXPORT/USERの処理中です
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/ROLE_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
. . "SCOTT"."DEPT" 5.656 KB 4行がエクスポートされました
. . "SCOTT"."EMP" 7.742 KB 12行がエクスポートされました
. . "SCOTT"."SALGRADE" 5.585 KB 5行がエクスポートされました
. . "SCOTT"."BONUS" 0 KB 0行がエクスポートされました
マスター表"SYSTEM"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
SYSTEM.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
C:\ORACLE\PRODUCT\10.2.0\ADMIN\GPSDB\DPDUMP\10G.DMP
ジョブ"SYSTEM"."SYS_EXPORT_SCHEMA_01"が06:37:04で正常に完了しました
ExportされたDmpファイルの確認
23c:ディレクトリオブジェクトの確認
ここから23ck環境での作業です。
まずはImportのためにどこのDmpファイルを配置すればよいか、
ディレクトリオブジェクトのパスを確認します。
23cではマルチテナント環境が必須のため、PDB内での確認となります。
[oracle@host01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - Developer-Release on 木 7月 13 09:37:59 2023
Version 23.2.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0
に接続されました。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
SQL> alter session set container=freepdb1;
セッションが変更されました。
SQL> select directory_name,directory_path from dba_directories;
DIRECTORY_NAME DIRECTORY_PATH
---------------------------------------- --------------------------------------------------------------------------------
SDO_DIR_ADMIN /opt/oracle/product/23c/dbhomeFree/md/admin
XMLDIR /opt/oracle/product/23c/dbhomeFree/rdbms/xml
XSDDIR /opt/oracle/product/23c/dbhomeFree/rdbms/xml/schema
ORACLE_BASE /opt/oracle
ORACLE_HOME /opt/oracle/product/23c/dbhomeFree
OPATCH_INST_DIR /opt/oracle/product/23c/dbhomeFree/OPatch
DATA_PUMP_DIR /opt/oracle/admin/FREE/dpdump/FC950AB002EFA9B3E055020C29FC1158
DBMS_OPTIM_LOGDIR /opt/oracle/product/23c/dbhomeFree/cfgtoollogs
DBMS_OPTIM_ADMINDIR /opt/oracle/product/23c/dbhomeFree/rdbms/admin
OPATCH_SCRIPT_DIR /opt/oracle/product/23c/dbhomeFree/QOpatch
OPATCH_LOG_DIR /opt/oracle/product/23c/dbhomeFree/rdbms/log
JAVA$JOX$CUJS$DIRECTORY$ /opt/oracle/product/23c/dbhomeFree/javavm/admin/
12行が選択されました。
SQL> exit
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0との接続が切断されました。
[oracle@host01 ~]$
23c:データのインポート
前手順で確認したDATA_PUMP_DIRディレクトリに、10gで取得したDmpファイルを配置します。
その後、impdpコマンドで、「PDB」にImportを行います。
[oracle@host01 ~]$ cd /opt/oracle/admin/FREE/dpdump/FC950AB002EFA9B3E055020C29FC1158
[oracle@host01 FC950AB002EFA9B3E055020C29FC1158]$ ls
10G.DMP
[oracle@host01 FC950AB002EFA9B3E055020C29FC1158]$ impdp system/oracle@localhost:1521/freepdb1 dumpfile=data_pump_dir:10G.DMP logfile=data_pump_dir:imp.log
Import: Release 23.0.0.0.0 - Developer-Release on 木 7月 13 09:42:34 2023
Version 23.2.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
マスター表"SYSTEM"."SYS_IMPORT_FULL_01"は正常にロード/アンロードされました
"SYSTEM"."SYS_IMPORT_FULL_01"を起動しています: system/********@localhost:1521/freepdb1 dumpfile=data_pump_dir:10G.DMP logfile=data_pump_dir:imp.log
オブジェクト型SCHEMA_EXPORT/USERの処理中です
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/ROLE_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."DEPT" 5.656 KB 4行がインポートされました
. . "SCOTT"."EMP" 7.742 KB 12行がインポートされました
. . "SCOTT"."SALGRADE" 5.585 KB 5行がインポートされました
. . "SCOTT"."BONUS" 0 KB 0行がインポートされました
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
ジョブ"SYSTEM"."SYS_IMPORT_FULL_01"が木 7月 13 22:42:44 2023 elapsed 0 00:00:06で正常に完了しました
[oracle@host01 FC950AB002EFA9B3E055020C29FC1158]$
23c:データの確認
正しくImportされたことを確認します。
10gと同じテーブル、インデックス、データが確認できました。
10gから23cに無事にデータ移行できました!
[oracle@host01 FC950AB002EFA9B3E055020C29FC1158]$ sqlplus scott/tiger@localhost:1521/freepdb1
SQL*Plus: Release 23.0.0.0.0 - Developer-Release on 木 7月 13 09:45:44 2023
Version 23.2.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
最終正常ログイン時間: 木 7月 13 2023 09:45:02 -04:00
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0
に接続されました。
SQL> col object_name for a30
SQL> select object_type,object_name from user_objects order by 1,2;
OBJECT_TYPE OBJECT_NAME
----------------------- ------------------------------
INDEX PK_DEPT
INDEX PK_EMP
TABLE BONUS
TABLE DEPT
TABLE EMP
TABLE SALGRADE
6行が選択されました。
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>