DBリンクの制限事項

Database管理者ガイドには、以下のようにデータベースリンクの制限事項が書かれているが、それ以外にいろいろ制限がある。 データベース・リンクの制限事項 ・データベース・リンクを使用して次の操作を実行することはできません。 ・リモート・オブジェクトへの権限の付与。 ・一部のリモート・オブジェクトに対するDESCRIBEの実行。ただし、次のリモート・オブジェクトはDESCRIBEをサポートしています。 ・表 ・ビュー ・プロシージャ ・ファンクション ・リモート・オブジェクトの分析。 ・参照整合性の定義または規定。 ・リモート・データベー…

続きを読む

原発に抗して「荒川 紘」(唯学書房)

反原発の人達の思考はどうなっているのか気になり読んでみた。 この人、静岡大学の教授だったんだね。経歴を見ると自分が学生の時にいたようだが、人文学部の人で理系の私は知らないな。 1,2年の時の教養の授業でも選択していないし(選択肢にあったかは記憶にない)。 悲しいかな、 灯台(御前崎灯台のことです。補記)の展望台からは相模湾と遠州灘が一望できた。相模湾のかなたには伊豆半島が横たわり、望遠鏡を使えば静岡大学の建物も見えたはずである。 なんて書いてある。静岡に住んでいたのにこんなこと書くんですね。 どんな望遠鏡を使っても御前崎から相模湾は見えないぞ。 東海地震で浜岡原発が危ないとか書いておいてこ…

続きを読む

マテビューを完全リフレッシュ時に DELETE ではなく TRUNCATE する

exec DBMS_MVIEW.REFRESH('MVIEW_NAME', 'C', atomic_refresh => FALSE); ってすれば、最初に DELETE ではなく TRUNCATE が走るので速くなる。 もちろん、TRUNCATE なので、リフレッシュに失敗したらデータは消えてしまうが。 他の人の書いたソースを見たら、リフレッシュ前にマテビューのテーブルに対して TRUNCATE をしていた。 知らないというのは恐ろしいことをするもんだなと思った。 そもそも、それがサポートされる行為なのか良くわからない。 今更ながら、マニュアル には次のように書かれていた。 この…

続きを読む

NULL可のカラムを使って結合する(SYS_OP_MAP_NONNULL)

NOT NULLのカラムだけではなく、NULL可のカラムも使って結合したい場合がある。 どんな場合かというと、監査・現新比較などの時にそれをしたくなる。 キーだけではなく属性まで含めて FULL OUTER JOIN して、右 OR 左しかデータがないものは不一致として検知する時に使う。 全て NOT NULL の場合は、以下で良い。 SELECT * FROM T1 FULL OUTER JOIN T2 ON T1.KEY1 = T2.KEY1 AND T1.ATTR1 = T2.ATTR1 WHERE T1.KEY1 IS NULL OR T2.KEY1 …

続きを読む