備忘録

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

長いテーブル名のマテビューログはつくれるのか?

マテリアライズドビュー・ログのテーブル名はOracleが勝手につけている。
MLOG$_<元のテーブル名> という名前なので、30文字中6文字を使っている。25文字以上のテーブルにはマテビューログは作れないの?なんて思ったので試してみた。
結果は、実質問題なし。
長い場合は、元のテーブル名を途中でちょん切って連番でつけている。
MLOG$_<元のテーブル名の前方20文字> + 連番(最大9999と思う)
なので、普通そんな前方一致で合致するテーブルをそんなに作らんので問題ない。

最後まで使い切ったらどんなエラーがでるか見ようと思ったが、
9600テーブル超えたあたりマテビュー作成が激遅になったので止めた。

SQL> drop table TBL456789012345678901234567890;

表が削除されました。

SQL> create table TBL456789012345678901234567890 (
2 n1 number(10)
3 );

表が作成されました。

SQL> ALTER TABLE TBL456789012345678901234567890 ADD CONSTRAINT PK_XXXX PRIMARY KEY(n1);

表が変更されました。

SQL> CREATE MATERIALIZED VIEW LOG ON TBL456789012345678901234567890 WITH ROWID, PRIMARY KEY;

マテリアライズド・ビュー・ログが作成されました。

SQL>
SQL> drop table TBL45678901234567890;

表が削除されました。

SQL> create table TBL45678901234567890 (
2 n1 number(10)
3 );

表が作成されました。

SQL> ALTER TABLE TBL45678901234567890 ADD CONSTRAINT PK_TBL45678901234567890 PRIMARY KEY(n1);

表が変更されました。

SQL> CREATE MATERIALIZED VIEW LOG ON TBL45678901234567890 WITH ROWID, PRIMARY KEY;

マテリアライズド・ビュー・ログが作成されました。

SQL>
SQL> drop table TBL45678901234567890123;

表が削除されました。

SQL> create table TBL45678901234567890123 (
2 n1 number(10)
3 );

表が作成されました。

SQL> ALTER TABLE TBL45678901234567890123 ADD CONSTRAINT PK_bbbb PRIMARY KEY(n1);

表が変更されました。

SQL> CREATE MATERIALIZED VIEW LOG ON TBL45678901234567890123 WITH ROWID, PRIMARY KEY;

マテリアライズド・ビュー・ログが作成されました。

SQL>
SQL> select master, log_table from USER_MVIEW_LOGS where master like 'TBL456%';

MASTER LOG_TABLE
------------------------------------------------------------ ------------------------------------------------------------
TBL45678901234567890 MLOG$_TBL456789012345678901
TBL45678901234567890123 MLOG$_TBL456789012345678902
TBL456789012345678901234567890 MLOG$_TBL45678901234567890

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://ncdkayak.blog.fc2.com/tb.php/24-be3f3bee
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。