はじめに
Oracle DBのdata pumpを急に勉強しないといけなくなったため、OCI Free TierにAutonomous DB を立てて、data pump のexport/importするまでを試す。
Autonomous DBと、接続用のlinuxインスタンスの作成手順は以下。
ここでは、autonomous DBにADMINで初めてアクセスしたところから出発する。
専用に
-
表領域autonomous DBでは作成できない? - ユーザ・スキーマ
- 表
- ディレクトリオブジェクト
を作成したうえでデータをexpdp/impdpすることが目標。
Oracle DB自体ずぶの初心者のため、都度メモを書きながらになる点ご了承ください。
以下、明示的に記載していない場合はADMINでログインしています。
PS C:\Users\xxx\OneDrive\sandbox\OCI> ssh -i .\ssh-key.key opc@xxx.xxx.xxx.xxx -o ServerAliveInterval=60
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sat Oct 28 09:56:47 2023 from 106.131.228.9
[opc@my-instance ~]$ sqlplus ADMIN/"XXX"@myautonomousdb_medium
SQL*Plus: Release 19.0.0.0.0 - Production on 土 10月 28 09:59:59 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 土 10月 28 2023 09:33:41 +00:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
に接続されました。
SQL>
表領域の作成(できず)
結論から言うとautonomous DBではADMIN権限であっても表領域を作成することはできないらしい。
この章は試行錯誤したメモです。
ASMディスクの容量を確認
SQL> SELECT group_number, name, state, total_mb, free_mb, free_mb/total_mb*100 as free_pct FROM v$asm_diskgroup;
GROUP_NUMBER NAME STATE TOTAL_MB FREE_MB FREE_PCT
------------ ------------------------------ ----------- ---------- ---------- ----------
1 DATA CONNECTED 269033472 260329236 96.7646271
2 RECO CONNECTED 67239936 65434188 97.314471
-
FREE_PCT
を見ると、余力は十分あることがわかる -
DATA
領域- oracle データベースの実際のデータファイルを格納する領域。
- ユーザーデータ・テーブル・インデックスなどがDATA領域に格納される。
-
RECO
領域- recovery領域の略。リカバリ・バックアップ・フラッシュバックに関連するファイルが格納される領域。
既存のデータファイルの一覧を確認
- 物理的なデータを意味する
- 一つの表領域(論理単位)に対して、一つ以上のデータファイル(物理データ)が対応する。
- データファイルの一覧は
dba_data_files
を参照。各列の意味は以下。
SQL> select * from dba_data_files;
FILE_NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_ LOST_WR
---------- ------------------------------ ---------- ---------- --------- ------------ --- ---------- ---------- ------------ ---------- ----------- ------- -------
+DATA/FEPP1POD/07416308B33C6B60E0630618000AFF4D/DATAFILE/system.3244.1149741681
5033 SYSTEM 1227882496 149888 AVAILABLE 1024 YES 3.5184E+13 4294967293 1280 1226833920 149760 SYSTEM OFF
+DATA/FEPP1POD/07416308B33C6B60E0630618000AFF4D/DATAFILE/sysaux.3653.1149741681
5034 SYSAUX 3657891840 446520 AVAILABLE 1024 YES 3.5184E+13 4294967293 1280 3651567616 445748 ONLINE OFF
+DATA/FEPP1POD/07416308B33C6B60E0630618000AFF4D/DATAFILE/undotbs1.5314.1149741681
5035 UNDOTBS1 1101004800 134400 AVAILABLE 1024 YES 1101004800 134400 262144 1099956224 134272 ONLINE OFF
+DATA/FEPP1POD/07416308B33C6B60E0630618000AFF4D/DATAFILE/data.5881.1149741681
5036 DATA 1178599424 143872 AVAILABLE 1024 YES 3.5184E+13 4294967293 262144 1172275200 143100 ONLINE OFF
+DATA/FEPP1POD/07416308B33C6B60E0630618000AFF4D/DATAFILE/dbfs_data.5364.1149741681
5037 DBFS_DATA 104857600 12800 AVAILABLE 1024 YES 3.5184E+13 4294967293 262144 98533376 12028 ONLINE OFF
+DATA/sampleschema_dbf
5038 SAMPLESCHEMA 2.1475E+11 26214400 AVAILABLE 1024 YES 3.5184E+13 4294967293 1310720 2.1468E+11 26205708 ONLINE OFF
+DATA/FEPP1POD/07416308B33C6B60E0630618000AFF4D/DATAFILE/undo_8.5223.1150175949
5217 UNDO_8 100007936 12208 AVAILABLE 1024 YES 1101004800 134400 262144 98959360 12080 ONLINE OFF
7 rows selected.
- oracleがデフォルトで使用するSYSTEM表領域、SUSAUX表領域のデータファイルがあることがわかる。
- 加えて、SAMPLESHEMA なる表領域も用意されていることがわかる。
- data_fileの読み方だが、
-
+DATA
:ASMディスクグループの名前。
-
# SAMPLESCHEMA表領域が持つデータファイルの一覧を取得する
SQL> select * from dba_data_files where tablespace_name = 'SAMPLESCHEMA';
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_ LOST_WR
------------------------------ ---------- ------------------------------ ---------- ---------- --------- ------------ --- ---------- ---------- ------------ ---------- ----------- ------- -------
+DATA/sampleschema_dbf 5038 SAMPLESCHEMA 2.1475E+11 26214400 AVAILABLE 1024 YES 3.5184E+13 4294967293 1310720 2.1468E+11 26205708 ONLINE OFF
-
USER_BITES
が、ユーザが利用可能な領域。2E+11 = 18GBぐらい。 -
AUT
: AUTOEXTENSIBLE が自動拡張有効化がなされているか、の意味。YESなので自動拡張される。
既存の表領域の一覧を確認
-
データベースの中身(テーブルなど)が格納される場所。論理的な管理単位。
-
一つの表領域(論理単位)に対して、一つ以上のデータファイル(物理データ)が対応する。
- 対応は前節の通り。
-
バックアップ/リストア時の最小単位になるため、大きすぎないサイズで設計しておくとよい
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
DATA
DBFS_DATA
SAMPLESCHEMA
TEMP
UNDO_8
8 rows selected.
- 表領域単位にいくつかオプションを設定可能。
- ブロックサイズ
- クオータ
- オンライン/オフライン:ユーザに利用させるかどうかを制御できる
# 詳細を表示
SQL> select tablespace_name,block_size,initial_extent,next_extent,min_extents,max_extents,max_size,pct_increase,min_extlen,status,contents from dba_tablespaces;
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE PCT_INCREASE MIN_EXTLEN STATUS CONTENTS
-------------------- ---------- -------------- ----------- ----------- ----------- ---------- ------------ ---------- --------------------------- ---------------------------------------------------------------
SYSTEM 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT
SYSAUX 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT
UNDOTBS1 8192 65536 1 2147483645 2147483645 65536 ONLINE UNDO
DATA 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT
DBFS_DATA 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT
SAMPLESCHEMA 8192 65536 1 2147483645 2147483645 65536 READ ONLY PERMANENT
TEMP 8192 1048576 1048576 1 2147483645 0 1048576 ONLINE TEMPORARY
UNDO_8 8192 65536 1 2147483645 2147483645 65536 ONLINE UNDO
8行が選択されました。
表領域を作成
SQL> create tablespace NEW_TABLESPACE datafile '+DATA' size 100m autoextend ON maxsize 500m logging extent management local segment space management auto;
create tablespace NEW_TABLESPACE datafile '+DATA' size 100m autoextend ON maxsize 500m logging extent management local segment space management auto
*
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています
- どうもautonomoous DBでは表領域の作成ができないらしい。
-
SELECT * FROM DBA_TAB_PRIVS WHERE PRIVILEGE = 'SELECT' AND TABLE_NAME = 'V$ASM_DISK';
しても何も表示されない。admin権限であってもなおasmディスクグループへの権限は渡されていない模様。
-
下記にも記載がある。
一応、意図した設定を記載。
-
LOGGING
orNOLOGING
-
LOGGING
の場合、REDOログ(INSERT,DELETE, UPDATEなど)を保存するようになる。せっかくRECO領域があるなら使う。 -
NOLOGGING
の場合、REDOログを保存しない。動作は早くなる可能性があるものの・・・普通は指定しない。
-
-
EXTENT MANAGEMENT
-
LOCAL
- 表領域の各セグメント(テーブル・インデックスなど)ごとに拡張を管理。各セグメントが競合しづらい。
-
DICTIONARY
- 各セグメントの拡張情報はデータディクショナリで一括管理される。
-
-
SEGMENT SPACE MANAGEMENT
-
AUTO
- セグメントの空きスペースを自動で管理。ガベージコレクション的な感じか。
-
MANUAL
- を手でやる。むずそう。
- ちなみに・・・
-
EXTENT MANAGEMENT
がDICTIONARY
の場合は、SEGMENT SPACE MANAGEMENT
をAUTO
は選択できない。
-
- そもそも・・・
- データブロック:データベース内の基本的なI/O単位。2KB-32KBで最初に選択できる。
- エクステント:データベースのストレージ管理の単位。データブロックの定数倍で選択する。
-
スキーマの作成
スキーマの作成
表領域はあきらめてスキーマの作成に移る。
create user alphajinsei identified by xxx default tablespace DATA temporary tablespace TEMP;
- デフォルト表領域はもとから存在するDATAを選択。本当は別個に作りたかったところだが・・・
- 一時表領域ももとから存在するTEMPを選択。こちらは違和感なし。
SQL> select username from dba_users where username = 'ALPHAJINSEI';
USERNAME
--------------------------------------------------------------------------------
ALPHAJINSEI
ちゃんと作成されている。
権限の付与
create user
しただけでは以下のようにログインすらできない。
[opc@my-instance ~]$ sqlplus alphajinsei/xxx@myautonomousdb_medium
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 18:46:59 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
ERROR:
ORA-01045: user ALPHAJINSEI lacks CREATE SESSION privilege; logon denied
権限を付与する。
SQL> grant connect to alphajinsei;
権限付与が成功しました。
SQL> grant resource to alphajinsei;
権限付与が成功しました。
これで接続できる。
[opc@my-instance ~]$ sqlplus alphajinsei/xxx@myautonomousdb_medium
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 18:52:52 2023
Version 19.20.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.21.0.1.0
SQL> select * from user_tables;
no rows selected
表の作成
以下を参考にさせていただいた。
先ほど作成したユーザーalphajiseni で接続する。
[opc@my-instance ~]$ sqlplus alphajinsei/xxx@myautonomousdb_medium
SQL*Plus: Release 19.0.0.0.0 - Production on 土 10月 28 10:24:28 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 土 10月 28 2023 09:33:27 +00:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
に接続されました。
SQL>
最初に表が存在しないことを確認。
select table_name from user_tables;
テーブルの作成
create table emp
(
emp_id number(3) primary key,
name varchar2(10 char) not null,
hire_date date not null,
salary number(10) not null,
dept_id number(2)
);
以下の通り作成できた。
SQL> select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
EMP
describe emp でサマリが表示される
SQL> desc emp
Name Null? Type
----------------------------------------- -------- ----------------------------
EMP_ID NOT NULL NUMBER(3)
NAME NOT NULL VARCHAR2(10 CHAR)
HIRE_DATE NOT NULL DATE
SALARY NOT NULL NUMBER(10)
DEPT_ID NUMBER(2)
データの流しこみ
事前にデータが存在しないことを確認。
SQL> select * from emp;
no rows selected
いくつか事前準備が必要。
1.権限追加
・ADMINでログインしてEMP表へのinsertと、tablespcaeの権限を付与する。
SQL> grant insert on alphajinsei.EMP to alphajinsei;
Grant succeeded.
SQL> grant unlimited tablespace to alphajinsei ;
Grant succeeded.
2.日付の形式を変更
デフォルトだと以下の設定になっているので、
SQL> select * from v$nls_parameters where parameter='NLS_DATE_FORMAT';
PARAMETER
----------------------------------------------------------------
VALUE CON_ID
---------------------------------------------------------------- ----------
NLS_DATE_FORMAT
DD-MON-RR 92
使いやすい形式に変更する。
SQL> alter session set NLS_DATE_FORMAT='RR-MM-DD';
Session altered.
※永続化したい場合はalter session set NLS_DATE_FORMAT='RR-MM-DD' scope=SPFILE;
を指定する必要あり。?このままでは毎回上記を打つことになり若干面倒・・・
3.ロケールの設定
ロケールを日本語に設定する。クライアントのインスタンスの環境変数に設定する。
[opc@my-instance ~]$ tail -n 4 .bashrc
export ORACLE_BASE=/usr/lib/oracle/
export ORACLE_HOME=/usr/lib/oracle/19.20
export TNS_ADMIN=/usr/lib/oracle/19.20/client64/lib/network/wallet/
export NLS_LANG=japanese_japan.UTF8 ★これを設定
データの流し込み
insertできた。
SQL> insert into emp values('100','佐藤','00-04-01','500000','50');
1行が作成されました。
SQL> select * from emp;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 佐藤 00-04-01 500000 50
ディレクトリオブジェクトの作成
ディレクトリオブジェクトの作成
表ができたところで早速expdpしたいところだが、expdpするにはまず入出力先のディレクトリオブジェクトが必要。早速作成する。以下はADMINユーザで実施。
SQL> create directory dpdir1 as 'dpdir1';
ディレクトリが作成されました。
SQL> select directory_name, directory_path from dba_directories;
DIRECTORY_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DPDIR1
/u03/dbfs/07416308B33C6B60E0630618000AFF4D/data/dpdir1
DATA_PUMP_DIR
/u03/dbfs/07416308B33C6B60E0630618000AFF4D/data/dpdump
...
- 普通はディレクトリ名には実パスを指定するところだが、autonomous DBはSaaS特有の事情により、ディレクトリ名(dpdir1)だけ与えると自動でディレクトリ(
/u03/dbfs/07416308B33C6B60E0630618000AFF4D/data/dpdir1
)が勝手に与えられるようになっている。 - デフォルトでもdatapump用に
DATA_PUMP_DIR
というディレクトリオブジェクトがあり、こちらも利用可能。今回は自分で作成。
権限付与
すぐこの後にALPHAJINSEIユーザでdatapumpすることを見越して、あらかじめディレクトリオブジェクトの読み書き権限を付与しておく。
SQL> grant read,write on directory DPDIR1 to ALPHAJINSEI;
権限付与が成功しました。
補足
ディレクトリオブジェクトに何が格納されているかは以下のコマンドで確認できる。
ただ、ファイルの中身を見ることはできず、中身を見たい場合はオブジェクトストレージにいちいち転送する必要がある。手順は後述。
SQL> SELECT * FROM DBMS_CLOUD.LIST_FILES('DPDIR1');
OBJECT_NAME
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BYTES
----------
CHECKSUM
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATED LAST_MODIFIED
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
alphajinsei_exp.log
1243
23-10-23 16:25:07.000000 +00:00 23-10-28 13:30:24.000000 +00:00
Data Pump
ようやく本題。作成したスキーマalphajinsei
、表emp
、ディレクトリオブジェクトdpdir1
を用いて、表のexport/importを行う。
export
スキーマ単位でexportする。問題なくexportできた。
[opc@my-instance ~]$ expdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI;
Export: Release 19.0.0.0.0 - Production on 土 10月 28 12:35:23 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
"ALPHAJINSEI"."SYS_EXPORT_SCHEMA_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/COMMENTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMAの処理中です
. . "ALPHAJINSEI"."EMP" 6.914 KB 1行がエクスポートされました
ORA-39173: 暗号化データがダンプ・ファイル・セットに暗号化されずに格納されました。
マスター表"ALPHAJINSEI"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
ALPHAJINSEI.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
/u03/dbfs/07416308B33C6B60E0630618000AFF4D/data/dpdir1/expdat_emp.dmp
ジョブ"ALPHAJINSEI"."SYS_EXPORT_SCHEMA_01"が土 10月 28 12:36:00 2023 elapsed 0 00:00:34で正常に完了しました
[opc@my-instance ~]$
EMPテーブル削除
empテーブルがロストした想定で、いったんEMPテーブルを削除する。
(この後、先ほどexportしたデータをそのままimportして復活させる)
SQL> select * from emp
2 ;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 佐藤 00-04-01 500000 50
SQL> DROP TABLE emp PURGE;
表が削除されました。
SQL> commit;
コミットが完了しました。
SQL> select * from emp;
select * from emp
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
import
先ほどはalphajinseiスキーマ単位でexport したが、
importはempテーブル単位で実施する。
無事にインポートできた。
[opc@my-instance ~]$ impdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log TABLES=emp
Import: Release 19.0.0.0.0 - Production on 土 10月 28 12:37:55 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
マスター表"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"は正常にロード/アンロードされました
"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log TABLES=emp
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "ALPHAJINSEI"."EMP" 6.914 KB 1行がインポートされました
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
ジョブ"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"が土 10月 28 12:38:05 2023 elapsed 0 00:00:08で正常に完了しました
[opc@my-instance ~]$
無事empテーブルを復活させることができた。
SQL> select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
EMP
SQL> select * from emp;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 佐藤 00-04-01 500000 50
datapumpの挙動を確認
せっかくなので、datapumpの挙動を調べてみる。
適当言っている可能性が高いので遠目に見てください。。
情報は古いが以下のスライドがわかりやすい
https://www.oracle.com/jp/a/tech/docs/technical-resources/20100908-expimp-beginner.pdf
別名のemp2 表にインポートする
過去のデータを別名でDBにインポートして、現在のデータを見比べる・・・などのユースケースを想定する。
事前状態確認
SQL> select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
EMP
別名でimport
REMAP_TABLE=emp:emp2
を指定してimportする。
事前にemp2を作っておく必要はない。
※emp2を事前に作っておいてもimportできる。ただしTABLE_EXISTS_ACTION
のオプションが必要。
[opc@my-instance ~]$ impdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log REMAP_TABLE=emp:emp2
Import: Release 19.0.0.0.0 - Production on 土 10月 28 12:48:04 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
マスター表"ALPHAJINSEI"."SYS_IMPORT_FULL_01"は正常にロード/アンロードされました
"ALPHAJINSEI"."SYS_IMPORT_FULL_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log REMAP_TABLE=emp:emp2
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "ALPHAJINSEI"."EMP2" 6.914 KB 1行がインポートされました
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
オブジェクト型SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMAの処理中です
ジョブ"ALPHAJINSEI"."SYS_IMPORT_FULL_01"が土 10月 28 12:48:14 2023 elapsed 0 00:00:07で正常に完了しました
emp2として表が作成され、データもimportされていることがわかる。
SQL> select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
EMP2
EMP
SQL> select * from emp2;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 佐藤 00-04-01 500000 50
emp表を上書きする
TABLE_EXISTS_ACTION=REPLACE
のオプションを指定すると、既存の同名の表が存在した場合でも内容を上書きしてimportできる。データのリストアを行う手段の一つとして使えるか。
事前準備
事前準備として、既存の表に更新が入ったていで修正を加えておく。
SQL> select * from emp;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 佐藤 00-04-01 500000 50
SQL> update emp set NAME='田中' where EMP_ID=100;
1行が更新されました。
SQL> insert into emp values('200','加藤','00-05-01','600000','60');
1行が作成されました。
SQL> select * from emp order by emp_id;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 田中 00-04-01 500000 50
200 加藤 00-05-01 600000 60
SQL> commit;
コミットが完了しました。
リストア
TABLE_EXISTS_ACTION=REPLACE
オプションをつけてテーブルをimpdpする。
[opc@my-instance ~]$ impdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log TABLES=emp TABLE_EXISTS_ACTION=REPLACE
Import: Release 19.0.0.0.0 - Production on 土 10月 28 12:41:03 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
マスター表"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"は正常にロード/アンロードされました
"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log TABLES=emp TABLE_EXISTS_ACTION=REPLACE
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "ALPHAJINSEI"."EMP" 6.914 KB 1行がインポートされました
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
ジョブ"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"が土 10月 28 12:41:12 2023 elapsed 0 00:00:06で正常に完了しました
emp表の中身がもとに戻っていることがわかる。
[opc@my-instance ~]$ sqlplus alphajinsei/xxx@myautonomousdb_medium
SQL*Plus: Release 19.0.0.0.0 - Production on 土 10月 28 12:41:18 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 土 10月 28 2023 12:41:03 +00:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
に接続されました。
SQL> select * from emp order by emp_id;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 佐藤 00-04-01 500000 50
SQL>
補足
ちなみに、TABLE_EXISTS_ACTION
オプションを指定せずに普通に実行するとエラーになる。
SQL> select * from emp;
EMP_ID NAME HIRE_DAT SALARY DEPT_ID
---------- ------------------------------ -------- ---------- ----------
100 佐藤 00-04-01 500000 50
SQL>
SQL>
SQL> quit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0との接続が切断されました。
[opc@my-instance ~]$ impdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log TABLES=emp
Import: Release 19.0.0.0.0 - Production on 土 10月 28 12:42:40 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
マスター表"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"は正常にロード/アンロードされました
"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log TABLES=emp
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
ORA-39151: 表"ALPHAJINSEI"."EMP"が存在します。スキップのtable_exists_actionのため、すべての依存メタデータおよびデータはスキップされます
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
ジョブ"ALPHAJINSEI"."SYS_IMPORT_TABLE_01"が完了しましたが、1エラーが土 10月 28 12:42:48 2023 elapsed 0 00:00:06で発生しています
[opc@my-instance ~]$
ドライラン
expdpのドライラン(出力ファイルサイズの見積もり
実際にダンプファイルを出力することはせず、出力ダンプファイルのサイズを見積もる。
-
ESTIMATE_ONLY=YES
をつけて実行する。見積の手法として追加でオプションを指定でき、-
ESTIMATE=BLOCKS
:ブロックサイズ * オブジェクトのブロックサイズで見積もる。精度は高くない -
ESTIMATE=STATISTICS
:統計情報をもとに見積もる。
-
※出力がないので当然だが、DUMPFILE=expdat_emp.dmp
は指定しようとしてもエラーになる。
ESTIMATE_ONLY=YES ESTIMATE=BLOCKS
を指定した場合
どう考えても1件しかデータの入っていないEMP表が64 KBなはずがないのだが、データブロックだかエクステントだかの単位で見積もられているものと思われる。
[opc@my-instance ~]$ expdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI ESTIMATE_ONLY=YES ESTIMATE=BLOCKS;
Export: Release 19.0.0.0.0 - Production on 土 10月 28 13:15:21 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
"ALPHAJINSEI"."SYS_EXPORT_SCHEMA_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI ESTIMATE_ONLY=YES ESTIMATE=BLOCKS
BLOCKSメソッドを使用して見積り中です...
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. 見積"ALPHAJINSEI"."EMP" 64 KB
. 見積"ALPHAJINSEI"."EMP2" 64 KB
BLOCKSメソッドを使用した見積り合計: 128 KB
ジョブ"ALPHAJINSEI"."SYS_EXPORT_SCHEMA_01"が土 10月 28 13:15:30 2023 elapsed 0 00:00:07で正常に完了しました
ESTIMATE_ONLY=YES ESTIMATE=STATISTICS
を指定した場合
こちらのほうが精度よく見積もってくれる。
[opc@my-instance ~]$ expdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI ESTIMATE_ONLY=YES ESTIMATE=STATISTICS;
Export: Release 19.0.0.0.0 - Production on 土 10月 28 13:15:42 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
"ALPHAJINSEI"."SYS_EXPORT_SCHEMA_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI ESTIMATE_ONLY=YES ESTIMATE=STATISTICS
STATISTICSメソッドを使用して見積り中です...
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. 見積"ALPHAJINSEI"."EMP" 6.582 KB
. 見積"ALPHAJINSEI"."EMP2" 6.582 KB
STATISTICSメソッドを使用した見積り合計: 13.16 KB
ジョブ"ALPHAJINSEI"."SYS_EXPORT_SCHEMA_01"が土 10月 28 13:15:51 2023 elapsed 0 00:00:07で正常に完了しました
[opc@my-instance ~]$
impdpのドライラン(実行予定SQLの表示)
実際にデータをimportすることはせず、実行される予定のSQLを表示するだけにとどめる。
SQLFILE=DPDIR1:emp.sql
のように出力先SQLファイルを指定する。
[opc@my-instance ~]$ impdp alphajinsei/xxx@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log SQLFILE=DPDIR1:emp.sql
Import: Release 19.0.0.0.0 - Production on 土 10月 28 13:30:17 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
マスター表"ALPHAJINSEI"."SYS_SQL_FILE_FULL_01"は正常にロード/アンロードされました
"ALPHAJINSEI"."SYS_SQL_FILE_FULL_01"を起動しています: alphajinsei/********@myautonomousdb_medium DIRECTORY=dpdir1 DUMPFILE=expdat_emp.dmp LOGFILE=alphajinsei_exp.log SQLFILE=DPDIR1:emp.sql
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
オブジェクト型SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMAの処理中です
ジョブ"ALPHAJINSEI"."SYS_SQL_FILE_FULL_01"が土 10月 28 13:30:23 2023 elapsed 0 00:00:04で正常に完了しました
[opc@my-instance ~]$
確かに問題なくSQL生成はできており、ディレクトリオブジェクトDPDIR1
に格納されていることはわかる・・・が、簡単に読み出す手段がないのが面倒・・・。
中身を見ようと思うと前述の通りオブジェクトストレージに移す必要がある。
SQL> SELECT * FROM DBMS_CLOUD.LIST_FILES('DPDIR1') where object_name='emp.sql';
OBJECT_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BYTES
----------
CHECKSUM
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATED LAST_MODIFIED
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
emp.sql
2137
23-10-28 13:28:59.000000 +00:00 23-10-28 13:30:22.000000 +00:00
SQL>
ディレクトリオブジェクトに格納したデータを確認する
この際なので、上記のemp.sql
ふくめ、ディレクトリオブジェクトに格納したデータをオブジェクトストレージに移して確認するところまでやる。
バケットの準備
新規にalphajinsei-bucketを作成する。
正規のURIを確認する意図で、試しにテストデータをアップロードしてみる。
テストファイルのURIはhttps://nrliaoyraehn.objectstorage.ap-tokyo-1.oci.customer-oci.com/n/nrliaoyraehn/b/alphajinsei-bucket/o/testupload.txt
だった。
ユーザーの準備
既存のユーザdeca meronにAdministrator権限を付与(本来は厳密に設計すべきだがよくわからないので割愛)
認証トークンを生成
credentialの作成
ADMINでログインして以下SQLを叩く。
SQL> BEGIN
2 DBMS_CLOUD.CREATE_CREDENTIAL(
3 credential_name => 'decameron_credential',
4 username => 'decameron0107@gmail.com',
5 password => 'xxx'
6 );
7 END;
8 /
PL/SQLプロシージャが正常に完了しました。
SQL>
デフォルトのクレデンシャルを変更しておく。(不要かも?)
SQL> ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.decameron_credential';
データベースが変更されました。
SQL>
Autonomous DB -> object storageへのデータのコピー
ADMINでログイン。ディレクトリオブジェクトDPDIR1
に格納されているファイルのうち、前節「impdpのドライラン(実行予定SQLの表示)」で生成したemp.sql
をobject storageにコピーしたい。
SQL> SELECT object_name FROM DBMS_CLOUD.LIST_FILES('DPDIR1') ;
OBJECT_NAME
--------------------------------------------------------------------------------
alphajinsei_exp.log
expdat.dmp
expdat2.dmp
expdat_emp.dmp
BLOCKS.sql
expdat_emp2.dmp
emp.sql
7行が選択されました。
早速DBMS_CLOUD.PUT_OBJECT
で、emp.sql
をobject storageに移す。
※コマンドの詳細は以下。
叩いてみた結果が以下。問題なく通っている。
SQL> BEGIN
2 DBMS_CLOUD.PUT_OBJECT(
3 credential_name => 'decameron_credential',
4 object_uri => 'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/nrliaoyraehn/b/alphajinsei-bucket/o/emp.sql',
5 directory_name => 'DPDIR1',
6 file_name => 'emp.sql'
7 );
8 END;
9 /
PL/SQLプロシージャが正常に完了しました。
SQL>
object storageにも確かにemp.sql
が配置されている。
emp.sql
の中身を確認
ここまでしてようやくemp.sql
の中身を確認できる。
ダウンロードして確認した結果が以下。
- 大きくわけて、
CREATE TABLE
の処理と、制約の追加の2つのSQLが投入される。 - emp表の一行分のデータも入っているはずなので、INSERT 文も記載されていることを期待したが、ここには表れないようだ。DDLしか記載されないのだろうか?
まあとりあえず見れたのでよしとする。
-- CONNECT ALPHAJINSEI
ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 ';
-- new object type path: SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
BEGIN
sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','CURRENT_SCHEMA'), export_db_name=>'GE65A5B90992C2A_MYAUTONOMOUSDB', inst_scn=>'40068001910627');
COMMIT;
END;
/
-- new object type path: SCHEMA_EXPORT/TABLE/TABLE
CREATE TABLE "ALPHAJINSEI"."EMP"
( "EMP_ID" NUMBER(3,0),
"NAME" VARCHAR2(10 CHAR) COLLATE "USING_NLS_COMP" NOT NULL ENABLE,
"HIRE_DATE" DATE NOT NULL ENABLE,
"SALARY" NUMBER(10,0) NOT NULL ENABLE,
"DEPT_ID" NUMBER(2,0)
) DEFAULT COLLATION "USING_NLS_COMP" SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 10 MAXTRANS 255
COLUMN STORE COMPRESS FOR QUERY HIGH ROW LEVEL LOCKING LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "DATA" ;
-- new object type path: SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
ALTER TABLE "ALPHAJINSEI"."EMP" ADD PRIMARY KEY ("EMP_ID")
USING INDEX PCTFREE 10 INITRANS 20 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "DATA" ENABLE;
-- new object type path: SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
-- new object type path: SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
-- new object type path: SCHEMA_EXPORT/STATISTICS/MARKER
-- new object type path: SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
BEGIN
COMMIT;
END;
/
-- fixup virtual columns...
-- done fixup virtual columns
同様の方法で、ディレクトリオブジェクトに格納していたダンプファイルなり、datapumpのログなりを取得してくることができる。
蛇足:object storageに直接export / import する
蛇足だが・・・直前に「ディレクトリオブジェクトに格納していたダンプファイルを取得してくる」と書いたが、
そもそもディレクトリオブジェクトを経由せずとも、直接object storageにダンプファイルをexportすることもできる。
object storageに直接export
[opc@my-instance ~]$ expdp ADMIN/"xxx"@myautonomousdb_medium credential=decameron_credential DIRECTORY=dpdir1 DUMPFILE=https://nrliaoyraehn.objectstorage.ap-tokyo-1.oci.customer-oci.com/n/nrliaoyraehn/b/alphajinsei-bucket/o/expdat_emp_os.dmp LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI;
Export: Release 19.0.0.0.0 - Production on 土 10月 28 18:28:39 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
"ADMIN"."SYS_EXPORT_SCHEMA_01"を起動しています: ADMIN/********@myautonomousdb_medium credential=decameron_credential DIRECTORY=dpdir1 DUMPFILE=https://nrliaoyraehn.objectstorage.ap-tokyo-1.oci.customer-oci.com/n/nrliaoyraehn/b/alphajinsei-bucket/o/expdat_emp_os.dmp LOGFILE=alphajinsei_exp.log SCHEMAS=ALPHAJINSEI
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/USERの処理中です
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/ROLE_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/PASSWORD_HISTORYの処理中です
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMAの処理中です
. . "ALPHAJINSEI"."EMP" 6.937 KB 2行がエクスポートされました
. . "ALPHAJINSEI"."EMP2" 6.914 KB 1行がエクスポートされました
ORA-39173: 暗号化データがダンプ・ファイル・セットに暗号化されずに格納されました。
マスター表"ADMIN"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
******************************************************************************
ADMIN.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
https://nrliaoyraehn.objectstorage.ap-tokyo-1.oci.customer-oci.com/n/nrliaoyraehn/b/alphajinsei-bucket/o/expdat_emp_os.dmp
ジョブ"ADMIN"."SYS_EXPORT_SCHEMA_01"が土 10月 28 18:29:16 2023 elapsed 0 00:00:35で正常に完了しました
[opc@my-instance ~]$
バケット上では以下のファイルが生成される。謎に2ファイルできる・・・
object storageから直接import
同様にimportもできる。
※ADMINユーザーを利用しているめ、importしたいテーブル名はalphajinsei.emp
とユーザー名を明示している点に注意。
[opc@my-instance ~]$ impdp ADMIN/"xxx"@myautonomousdb_medium credential=decameron_credential DUMPFILE=https://nrliaoyraehn.objectstorage.ap-tokyo-1.oci.customer-oci.com/n/nrliaoyraehn/b/alphajinsei-bucket/o/expdat_emp_os.dmp LOGFILE=alphajinsei_exp.log TABLES=alphajinsei.emp TABLE_EXISTS_ACTION=REPLACE
Import: Release 19.0.0.0.0 - Production on 土 10月 28 20:31:10 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
マスター表"ADMIN"."SYS_IMPORT_TABLE_01"は正常にロード/アンロードされました
"ADMIN"."SYS_IMPORT_TABLE_01"を起動しています: ADMIN/********@myautonomousdb_medium credential=decameron_credential DUMPFILE=https://nrliaoyraehn.objectstorage.ap-tokyo-1.oci.customer-oci.com/n/nrliaoyraehn/b/alphajinsei-bucket/o/expdat_emp_os.dmp LOGFILE=alphajinsei_exp.log TABLES=alphajinsei.emp TABLE_EXISTS_ACTION=REPLACE
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "ALPHAJINSEI"."EMP" 6.914 KB 1行がインポートされました
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
ジョブ"ADMIN"."SYS_IMPORT_TABLE_01"が土 10月 28 20:31:22 2023 elapsed 0 00:00:10で正常に完了しました
感想
autonomous DB、起動するのも管理も簡単だが、
出力ファイルをいちいちobject storageを介さないと見れない点についてはやはり面倒くさい・・・