いくつかのDBのコネクションを強制的にぶち切る実験をしてみた
タイトルの通り。
最初はポスグレで始めたのだが、そういやこれ他のDBだとどうなるのかなと思って実験してみた。
タイトルの通り。
最初はポスグレで始めたのだが、そういやこれ他のDBだとどうなるのかなと思って実験してみた。
create pluggable database文のメモ
バルクの練習したついでに、ふと思い立って実験してみたくなったのでその実験結果を載せる。
内容は「バルクインサートを使うとどれくらい早くなる?」の簡単な実証実験である。
特定のテーブルAからデータをexpdpして、別スキーマにある同名テーブルAに、default付きの項目をaddしたA'をつくり、A→A'にimpdpすると、「ORA-38500: Unsupported operation: Oracle XML DB not present」というOracleエラーが発生する。
これが意味不明。
…っていう愚痴の記事。
どうも「dmpファイル側には存在しない項目をdefault付きでaddしたテーブルにはimpdpができない」ということでエラーになってるっぽいのだが、このエラーメッセージからは全くそれが連想できない。
「impdp ORA-38500」とかでググってもそれっぽい記事も出てこないので最初全くわからなかった。
なんとなく項目の違いがあるせいかもってのは疑いのネタにできたが、それにしたってこのエラーメッセージはわかりづらすぎる。
Oracle側の内部事情がいろいろあるんだろうが、もう少しわかりやすいメッセージにできなかったもんかね。
(まあOracleのエラーがわかりづらいのは今に始まったわけじゃないのでこれもその仲間というだけの話なのだけど)
OracleのWITH句の使い方
Oracleシーケンスの現在値を一気に何番もカウントアップする方法のメモ
個人的に、基本INCREMENT BYが「1」の(=1ずつ採番していく)シーケンスをよく使うのでたまにこういうのが必要になるのである。
「SELECT TEST_SEQ.NEXTVAL FROM DUAL」を呼び出すたびにシーケンス値が1ずつカウントアップされていくため、
「10まで進めたい」と思ったらsqlplusとかでDBに接続した後「SELECT TEST_SEQ.NEXTVAL FROM DUAL」を10回投げればいいだけである。
ただこれが「100,000(10万)まで進めたい」だとそうはいかない。
そんなときに「一気に10万まで数字を進める」やり方である。
OracleのTRANSLATE関数についてメモ
SQL Loaderでdirect=trueをオプション指定すると、KEY重複してるデータが登録できてしまう。
PRIMARY KEY INDEXを張ってる場合、この結果、そのPK INDEXが破損するので、
そのPK INDEXを明示的に指定しているhint文があると、SQLエラーになる。
ひどい話である。
SQL LoaderもPKもhint文も結局はOracleの技術なはずなのに、
同社内の技術同士で首を絞めあう矛盾を作り上げてしまっている。
なんでそんな作りにしたんだOracleは…理解できない。
………というのの愚痴とメモ。
異なるKEYのテーブル同士を結合しながら更新する場合のメモとか注意点
SELECTやUPDATEの一部に部分的に副問い合わせ(インラインビュー)を組み込む方法について。