2013年3月6日水曜日

Oracle SEQUENCEがエクスポート出来ないの

Oralceデータベースを他の端末へ、頻繁に移行が必要なプログラムを作っている。。
今回の要件では、データベースを一括ではエクスポートが出来ないのだが、そうなると、SEQUENCEがエクスポート出来なくなる。

そこで、回避策を考えてみた。

1.まず、SEQUENCEを適当なテーブルに放り込む。
create table seq_move as select sequence_name, last_number from user_sequences where sequence_name = 'シーケンス名'';
2.1で作ったテーブルも一緒にエクスポートする。
3.別のPCで、テーブルをインポートする。
4.インポートした先で、SQLを実行して、テーブルからSEQUENCEを作成する。

declare
lastnum number;
vsql varchar2(512);
begin
select last_number into lastnum from seq_move;
vsql := 'create sequence シーケンス名 start with ' || lastnum || ' CACHE 100' ;
execute immediate vsql;
end;

とりあえず、無事移行が出来ました。
CACHEした番号は、あっさりと捨てることにしています。



0 件のコメント:

コメントを投稿