2023, Oracle and/or its affiliates 12 SQL> select current_size/1024/1024 as current_size_mb from v$sga_dynamic_components where component='streams pool'; STREAMS_POOL_SIZEの値を確認します STREAMS_POOL_SIZEの値を指定するコマンド(不足する場合): SQL> alter system set streams_pool_size=256m scope=both; CURRENT_SIZE_MB --------------- 128 実行結果:
its affiliates 24 インポートを実行します $ impdp dpuser/password parfile=impdp.par Import: Release 19.0.0.0.0 - Production on Tue May 2 18:20:53 2023 Version 19.16.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. ;;; Connected to: Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production ***省略*** 02-MAY-23 22:14:22.925: Job "DPUSER"."SYS_IMPORT_SCHEMA_01" successfully completed at Tue May 2 22:14:22 2023 elapsed 0 03:53:28 実行コマンド: 実行結果:
its affiliates 26 移行したスキーマのテーブルの種類やオブジェクトの数がソースDBとターゲットDBで一致するか確認する SQL> select table_name from dba_tables where owner = 'SCOTT'; テーブル一覧の確認(ソースDB、ターゲットDB) SQL> select count(*) from scott.customers; テーブルそれぞれのレコード数の確認(ソースDB、ターゲットDB) SQL> select object_name, object_type from dba_objects where owner = 'SCOTT' order by object_name; スキーマ所有のオブジェクト一覧の確認(ソースDB、ターゲットDB):
its affiliates 27 インポートを実行した後にディクショナリ統計を収集して最新の統計情報を維持します SQL> begin dbms_stats.gather_schema_stats('SYS'); dbms_stats.gather_schema_stats('SYSTEM'); end; ターゲットDBで実行するコマンド:
its affiliates 44 $ expdp dpuser/Welcome1 attach=SYS_EXPORT_SCHEMA_01 Export> kill_job Are you sure you wish to stop this job ([yes]/no): yes SQL*Plusを終了し、以下のコマンドを実行するとジョブを強制終了できます [oracle@host-10-5-1-231]$ expdp dpuser/Welcome1 attach=SYS_EXPORT_SCHEMA_01 Export: Release 12.1.0.2.0 - Production on Thu Jun 22 08:47:23 2023 ***省略*** Job: SYS_EXPORT_SCHEMA_01 Owner: DPUSER Operation: EXPORT ***省略*** Process Name: DW07 State: UNDEFINED Export> kill_job Are you sure you wish to stop this job ([yes]/no): yes [oracle@host-10-5-1-231]$ 実行例:
its affiliates 45 28-MAR-23 23:56:37.663: ORA-39082: Object type PACKAGE BODY:"SCOTT"."ORDERENTRY" created with compilation warnings 28-MAR-23 23:56:37.868: Job "DPUSER"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) at Tue Mar 28 23:56:37 2023 elapsed 0 09:51:33
affiliates 46 SQL> SELECT OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS FROM ALL_OBJECTS WHERE STATUS = 'INVALID'; OWNER OBJECT_NAME OBJECT_TYPE STATUS ----------- -------------------- ------------------ ---------------- SCOTT ORDERENTRY PACKAGE BODY INVALID SQL> show errors package body scott.orderentry Errors for PACKAGE BODY SCOTT.ORDERENTRY: LINE/COL ERROR -------- ----------------------------------------------------------------- 104/13 PL/SQL: Statement ignored 104/13 PLS-00201: identifier 'DBMS_LOCK' must be declared 107/13 PL/SQL: Statement ignored 107/13 PLS-00201: identifier 'DBMS_LOCK' must be declared 194/11 PL/SQL: SQL Statement ignored 195/40 PL/SQL: ORA-00932: inconsistent datatypes: expected DATE got TIME WITH TIME ZONE エラー内容を確認します
affiliates 48 SQL> GRANT EXECUTE ON DBMS_LOCK TO scott; Grant succeeded. SQL> EXECUTE UTL_RECOMP.RECOMP_SERIAL('SCOTT'); PL/SQL procedure successfully completed. SCOTTにDBMS_LOCK権限を付与し、もう一度再コンパイルコマンドを実行します SQL> SHOW ERRORS PACKAGE BODY SOE.ORDERENTRY No errors. エラー内容を確認します
2023, Oracle and/or its affiliates 55 SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_ID = d.PLATFORM_ID; PLATFORM_NAME -------------------------------------------------------------------------------- ENDIAN_FORMAT -------------- Linux x86 64-bit Little 以下のように確認する エンディアン形式がソースDBとターゲットDBで異なる場合、Oracle Recovery Manager(Oracle RMAN)の CONVERTコマンドか、DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、 転送されるデータファイルをターゲット・プラットフォームの形式に変換する必要があります
and/or its affiliates 58 Data Pumpのexpdpコマンドを実行するためのユーザを準備します (専用のスキーマ作成を推奨) エクスポート操作に必要な権限を付与します SQL> create user dpuser identified by password; SQL> alter user dpuser quota unlimited on users; SQL> grant read, write on directory dump_dir to dpuser; SQL> alter user dpuser default tablespace system; SQL> alter user dpuser quota unlimited on users; SQL> grant datapump_exp_full_database to dpuser; ソースDBで実行するコマンド: • 移行対象の表領域がUSERSの場合、実行ユーザ(dpuser)のデフォルト表領域をUSERSに設定すると、 expdp実行の際にエラーになるため、別の表領域(※)に変更する必要があります ⇒ エラーの詳細、(※)に関しては本資料の「 Full Transportable Export/Import Tips」の項目に記述します
and/or its affiliates 59 Data Pumpのimpdpコマンドを実行するためのユーザを準備します (専用のスキーマ作成を推奨) エクスポート操作に必要な権限を付与します SQL> create user dpuser identified by password; SQL> alter user dpuser quota unlimited on users; SQL> grant read, write on directory dump_dir to dpuser; SQL> grant datapump_imp_full_database to dpuser; ターゲットDBで実行するコマンド:
Oracle and/or its affiliates 63 SQL> alter tablespace users read only; ソースDBで実行するコマンド: SQL> select status from dba_tablespaces where tablespace_name = 'USERS’; STATUS --------- READ ONLY 確認コマンド: • エクスポートが完了し、表領域のデータファイルがターゲットDB環境に転送されたら、 表領域を読取り/書込みモードに戻すことができます
and/or its affiliates 71 インポートを実行します $ impdp dpuser/password@pdb parfile=ftimpdp.par Import: Release 19.0.0.0.0 - Production on Mon May 1 18:30:42 2023 Version 19.16.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. ;;; Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 – Production ***省略*** 01-MAY-23 18:32:10.556: Job "DPUSER"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Mon May 1 18:32:10 2023 elapsed 0 00:01:26 実行コマンド: 実行結果:
and/or its affiliates 73 移行したスキーマのテーブルの種類やオブジェクトの数がソースDBとターゲットDBで一致するか確認する SQL> select table_name from dba_tables where owner = 'SCOTT'; テーブル一覧の確認(ソースDB、ターゲットDB) SQL> select count(*) from scott.customers; テーブルそれぞれのレコード数の確認(ソースDB、ターゲットDB) SQL> select object_name, object_type from dba_objects where owner = 'SCOTT' order by object_name; スキーマ所有のオブジェクト一覧の確認(ソースDB、ターゲットDB):
and/or its affiliates 85 $ expdp dpuser/Welcome1 parfile=ftexp.par ***省略*** ORA-31626: job does not exist ORA-31633: unable to create master table "DPUSER.SYS_EXPORT_FULL_05" ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 ORA-06512: at "SYS.KUPV$FT", line 1048 ORA-01647: tablespace 'USERS' is read-only, cannot allocate space in it dpuserのデフォルト表領域をUSERS(移行対象の表領域)のまま実行 【原因】 • Data Pumpのエクスポートでは、制御プロセスが制御表を作成する領域が必要であり、読取り専用モードに設定し たデフォルト表領域であるUSERSに作成しようとするためエラーとなります 【解決策】 • 実行ユーザ(dpuser)のデフォルト表領域を読取り/書込みモードの表領域(※)に変更することで解決できます (※) 必要に応じてダミー表領域を作成してください