Thursday 7 July 2011

【SE的メモ】Oracle DBのデータ移行 ver1.00

IT未経験文系卒が日々業務で直面する仕事をコンプラ違反にならない程度に書いていこうと思います。
今回はデータベースのデータ移行について。

Oracle Database(以降DB)に対するデータの移行作業は、
新しく作ったDBに古いDBからデータを送ったり、
今あるDBのデータを保管しておいて、テスト終了後に元に戻したりする際に使うことが多く、
多分チームの下っ端が任されることが多いです笑

使うもの:
大体使うのは下記の3つ。

FFFTP
用途:
FTPクライアント。ローカルにあるファイルをDBのあるサーバに送ったり、逆にDB側にあるファイルをローカルにダウンロードしたりする際に使う。
DB移行でやり取りするファイルは、Export/Importのパラメータファイル、データ移行のダンプファイル、あとログファイルとか。
http://www.forest.impress.co.jp/lib/inet/servernt/ftp/ffftp.html

Tera Term
用途:
Unixコマンドでファイルの権限変えたり※、Oracleユーザーで入って実際にExport/Importしたりするのに使う。
http://www.forest.impress.co.jp/lib/inet/servernt/remote/utf8teraterm.html

SQL Developer
用途:
Oracle DBをいじるのに便利なツール。
ただ単純にExport/Importすると、トリガーとか制約とかに引っかかって上手く移行できないケースがあるので、Developer使って制約解除したりするとすんなり移行できたりするときもある(できない時もある)。
http://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html

やり方:
とりあえずExport/Importのパラメータファイルを作る。
この辺を参考にすると分かりやすい。
http://luna.gonna.jp/oracle/ora_export.html
http://www9.plala.or.jp/okuman/oracle/expimp.html
DB全量というよりは、スキーマ(DBの中の一部分)ごとに抜き出すことが多い気がする。
定義のみの移動ならROWSはN、データも移動するならROWSはYでパラメータを指定する。

作成したパラメータファイル、ダンプファイル、ログファイルをFFFTPでDBサーバに移動。で、ここでおそらくファイルの参照権限を変えておくのがベター。
Tera Term上で【chmod 777 ファイル名】とコマンドしてパーミッション何でもあり状態にする。
詳しくはこの辺↓↓↓
http://www.k-tanaka.net/unix/chmod.html
この状態であとは心おきなく、Export/Importを敢行・・・できないこともあります。
サーバの容量が足りないためテーブル毎に分割してやらなきゃいけなかったり、サーバの機能が低くてExportのdmpファイルを超細かく分割して、サーバ側で結合しなきゃいけなかったり、なんだり。その辺は若干の工夫が求められる感じ。

このエントリはまた追記していく感じにしたいかと。
とりあえずDB移行作業2回を踏まえて書いてみました。
色々方法はあるかと思いますが、IT未経験の1.5年目の経験を踏まえての記録ということで御容赦を。




よくある事象
Q.テーブルの項目順がマスタと違う、変えなきゃいけん。
A.基本的にはテーブルのカラム順を後から変更することはできないので、一度dropしてから再度定義する必要があるっぽい。

Q.同じサーバで別のDB使いたい。
A.Export ORACLE_SID = xxxxでデータベース識別子を変更。
Echo $ORACLE_SIDで一応識別子を確認する。

Seja o primeiro a comentar

Post a Comment

Analysis

Followers

  ©Life is like a box of chocolates. Template by Dicas Blogger.

TOPO