サイドバーの壁紙
博主头像
tin博主等级

子の曰わく、我れ三人行なえば必ず我が師を得(う)。其の善き者を択びてこれに従う。其の善からざる者にしてこれを改む。

  • 累積執筆 72 記事
  • 累計作成 32 タグ
  • 累計受入 2 コメント

目 次CONTENT

記事目次

Oracleでexp/impの使用

tin
tin
2023-10-13 / 0 コメント / 1 いいね! / 731 読み / 1,430 文字

Oracleでexp/impの使用

1. 背景:

Oracleでデータのバックアップと戻しにあたって、エクスポート/インポートの機能を利用できます。
エクスポート/インポートについて、下記の2種類コマンドがあります。
・exp/imp
・expdp/impdp

2. exp と imp:

  1. expimp は旧バージョンOracleデータベースユーティリティで、データのエクスポートとインポートに使用され、バージョン間の移行には適していない。
  2. expdpimpdp は新バージョンOracle(Oracle10g以降)データポンプユーティリティで、高度なオプションを提供し、バージョン間のデータベース移行に適しており、効率的なデータ操作が可能。

3. 現場仕事の実情

expdpimpdp は新バージョンOracleであり、柔軟で効率的な方法ですが、
expdp/impdp を行う場合、ディレクトリ・オブジェクトの作成と権限の付与が必要(SQLにより実施すること)。
Data Pump(expdp/impdp)の使い方

本番環境では、「バックアップ前にはSQLによりディレクトリの作成、権限の付与;戻し完了後には作業後のディレクトリの削除、権限の取消」などの作業はできるだけ避けるほうがいいですね。
特に戻し作業は必ず実施するわけでもないので、作業後のディレクトリの削除、権限の取消は余計な作業になるかもしれません。
なのでexp/impを利用することは無難でしょう。

4. データのみのバックアップと戻し

①データのバックアップ(expコマンドにはdata_onlyのオプションがなし)
exp user/password@service-name file=table_name.dmp log=exp_table_name.log
②既存テーブルのデータをクリア
sqlplus user/password@service-name
truncate table_name;
commit;
exit;
③データの戻し
imp user/password@service-name file=table_name.dmp log=imp_table_name.log data_only=y

備考:impを実行する際、IMP-00403(警告:このインポートでは、権限の問題により失敗したDDLを含むのSQLファイル”imp_table_name_sys.sql”が生成されました)が出た場合、警告は無視しても良い(データのみのインポートだから、DDLコマンドがありません)。
また、心配する場合、ls -l imp_table_name_sys.sqlで生成したファイルが0バイトであることを確認できます。

5. テーブルまるごと(テーブル定義&データ)のバックアップと戻し

①テーブルのバックアップ
exp user/password@service-name file=table_name.dmp log=exp_table_name.log
②既存テーブルの削除
sqlplus user/password@service-name
drop table_name cascade constraints
③テーブルの戻し
imp user/password@service-name file=table_name.dmp log=imp_table_name.log ignore=y

6. 備考(DDLとは)

DDL(Data Definition Language)コマンドは、データベース管理システム(DBMS)内でデータベースの構造を定義および変更するためのコマンドです。以下は一般的なDDLコマンドのいくつかです。

1. CREATE TABLE

テーブルを作成するためのコマンドです。テーブルの列(フィールド)やデータ型、制約条件などを指定します。

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    hire_date DATE
);

2. ALTER TABLE

既存のテーブルを変更するためのコマンドです。列の追加、変更、削除、制約の追加などが可能です。

ALTER TABLE employees
ADD COLUMN email VARCHAR(100);

3. DROP TABLE

テーブルを削除するためのコマンドです。テーブルとその中のデータが完全に削除されます。

DROP TABLE employees;

4. CREATE INDEX

インデックスを作成するためのコマンドです。インデックスはデータベースの検索パフォーマンスを向上させるのに役立ちます。

CREATE INDEX idx_employee_id ON employees (employee_id);

5. CREATE VIEW:

ビューを作成するためのコマンドです。ビューはテーブルのクエリ可能な仮想ビューを提供します。

CREATE VIEW active_employees AS
SELECT * FROM employees WHERE hire_date <= '2023-01-01';

6. CREATE DATABASE / DROP DATABASE

データベースの作成または削除を行うコマンドです。データベース管理システムによって構文が異なります。

これらは一般的なDDLコマンドの例であり、データベース管理システムによって構文やサポートされるコマンドが異なることがあります。
また、注意が必要なのは、DDLコマンドはデータベース構造に直接影響を与えるため、慎重に扱う必要があることです。

1
  • 1

コメント欄