OracleDatabase

【Oracle】DEFAULT付の項目にimpdpするとORA-38500が発生することに対するちょっとした愚痴


特定のテーブル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】Oracleシーケンスの採番値を一気にカウントアップする方法


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】SQL Loaderのdirect=trueオプションでKEY重複データが取り込めることに対する愚痴


SQL Loaderでdirect=trueをオプション指定すると、KEY重複してるデータが登録できてしまう。
PRIMARY KEY INDEXを張ってる場合、この結果、そのPK INDEXが破損するので、
そのPK INDEXを明示的に指定しているhint文があると、SQLエラーになる。
ひどい話である。
SQL LoaderもPKもhint文も結局はOracleの技術なはずなのに、
同社内の技術同士で首を絞めあう矛盾を作り上げてしまっている。
なんでそんな作りにしたんだOracleは…理解できない。
………というのの愚痴とメモ。