5
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Oracleでエクスポートしたデータを別スキーマにインポートする

Posted at

環境

  • CentOS6.4(64bit)
  • Oracle 11g
  • usr01というユーザー(スキーマ)を作成済み
  • MY_DATAという表領域(tablespace)を作成済み
  • MY_DATAにはempというテーブルが存在

現在の状況を確認

まずは現在の状態を確認します。

# Systemユーザー(DBA)でOracleにログイン
$sqlplus system/password@XE

# 表領域(テーブルスペース)のパスと名称の一覧を取得
SQL>select TABLESPACE_NAME,FILE_NAME from dba_data_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
USERS
/u01/app/oracle/oradata/XE/users.dbf

SYSAUX
/u01/app/oracle/oradata/XE/sysaux.dbf

UNDOTBS1
/u01/app/oracle/oradata/XE/undotbs1.dbf


TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSTEM
/u01/app/oracle/oradata/XE/system.dbf

MY_DATA
/u01/data/MY_DATA.dbf


# スキーマ一(ユーザー)覧
SQL>select distinct username from all_users;
select distinct username from all_users;

USERNAME
------------------------------
XS$NULL
USR01
MDSYS
FLOWS_FILES
HR
CTXSYS
OUTLN
APEX_040000
SYSTEM
APEX_PUBLIC_USER
XDB

USERNAME
------------------------------
ANONYMOUS
SYS

13行が選択されました。


# テーブル一覧
SQL>select owner,table_name from dba_tables where OWNER = 'USR01';

OWNER			       TABLE_NAME
------------------------------ ------------------------------
USR01			       EMP

ユーザーからはMY_DATAという表領域の作成しかしていないですが、他にもシステムで使う表領域も自動で作成されているということが分かりました。ユーザーも同じで幾つかのユーザーが登録されているようですね。

別スキーマへのインポート

では早速別スキーマへのインポートをやってみます。
impdp/expdpを使わず、imp/expでやっています。(現在はimpdp/expdpでやるのが推奨らしいですが、実際に使うのがimp/expだったので今回はこちらで)

  • usr01ユーザーでエクスポート
  • ユーザーusr02を作成
  • ユーザーusr02が作成された時に作成されるusr02のスキーマにエクスポートしたデータをインポート
# usr01スキーマの情報をエクスポート.実施後、エラーがないかログを確認
$exp userid=usr01/12345@XE file=usr01.dmp log=usr01_dump.log

# ユーザー(スキーマ)作成
$sqlplus system/password@XE
SQL> create user usr02 identified by 12345;
SQL> grant CONNECT,RESOURCE to usr02;
SQL> quit

# インポート。別のスキーマ.fromuser,touserで別スキーマにインポートすることを指定
$imp system/password@XE fromuser=usr01 touser=usr02 file=usr01.dmp log=usr02_restore.log

# 確認
$sqlplus usr02/12345@XE
SQL>emp desc;

usr02を削除するときは以下でOK

# ユーザー削除
SQL>drop user usr02 cascade;

ちなみに表領域を指定してエクスポートすることもできますが、その場合、DBAユーザー権限(systemユーザー)が必要でした。

5
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?