Oracleでexp/impの使用
1. 背景:
Oracleでデータのバックアップと戻しにあたって、エクスポート/インポートの機能を利用できます。
エクスポート/インポートについて、下記の2種類コマンドがあります。
・exp/imp
・expdp/impdp
2. exp と imp:
exp
とimp
は旧バージョンOracleデータベースユーティリティで、データのエクスポートとインポートに使用され、バージョン間の移行には適していない。expdp
とimpdp
は新バージョンOracle(Oracle10g以降)データポンプユーティリティで、高度なオプションを提供し、バージョン間のデータベース移行に適しており、効率的なデータ操作が可能。
3. 現場仕事の実情
expdp
と impdp
は新バージョン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コマンドはデータベース構造に直接影響を与えるため、慎重に扱う必要があることです。
コメント欄