Oracle11gR2でLike検索でエラーになるケース

5,881 views
Skip to first unread message

awaawa

unread,
Oct 10, 2013, 7:30:13 AM10/10/13
to dbf...@googlegroups.com
jfluteさん 

awaawaです。 

Oracle11gR2でLike検索でエラーになるケースがあります。(Oracle11gR1だとエラーにならない。)

Oracle11gR2より前のバージョンでは、
全角のアンダースコア(_)およびパーセント(%)が
半角と同じようにパターン一致文字として認識されていましたが、
Oracle11gR2から、全角はパターン一致文字の対象外になったようです。

そのため、検索条件によって以下のエラーが出ることがあります。
以下、11gR2で確認したSQLになります。最後のSQLをエラーにならないようにしたいです。
※Object Browserで実行しています。(JDBCレベルかの切り分けのため。)
********************************************************************************
-- ヒットする
SELECT 1 FROM DUAL WHERE 'fooabar' LIKE 'foo%bar'
SELECT 1 FROM DUAL WHERE 'foo%bar' LIKE 'foo%bar'
SELECT 1 FROM DUAL WHERE 'foo%bar' LIKE 'foo%bar' escape '|'
SELECT 1 FROM DUAL WHERE 'foo%bar' LIKE 'foo|%bar' escape '|'
-- 半角%か_がある状態(エスケープなし)で全角%、_(エスケープなし)
SELECT 1 FROM DUAL WHERE 'foos%_bar' LIKE 'foo_%_bar'

-- ヒットしない
SELECT 1 FROM DUAL WHERE 'fooabar' LIKE 'foo%bar'
SELECT 1 FROM DUAL WHERE 'fooabar' LIKE 'foo%bar' escape '|'
SELECT 1 FROM DUAL WHERE 'fooabar' LIKE 'foo|%bar' escape '|'
-- 半角%か_がある状態(エスケープなし)で全角%、_(エスケープなし)
SELECT 1 FROM DUAL WHERE 'foos%_bar' LIKE 'foo_%_bar'
-- 半角%、_がある状態(エスケープあり)で全角%、_(エスケープあり)
SELECT 1 FROM DUAL WHERE 'foo%_bar' LIKE 'foo|_|%|_bar' escape '|'

-- エラーになる(ORA-01424)
-- パターン一致文字でないものをエスケープ
SELECT 1 FROM DUAL WHERE 'foo%_bar' LIKE 'foo|Abar' escape '|'
-- 半角%、_がある状態(エスケープなし)で全角%、_(エスケープあり)
SELECT 1 FROM DUAL WHERE 'foo%_bar' LIKE 'foo_|%|_bar' escape '|'
********************************************************************************

【Oracleのドキュメント】
↓URLの一部抜粋
> ORA-01424: エスケープ文字に続く文字がないか、または無効です。
> 原因: LIKEパターンにエスケープ文字に続く文字が指定されていないか、エスケープ文字「%」および「_」のいずれかではありません。
> 処置: エスケープ文字を削除するか、または正しく指定してください。

11gR2のドキュメント
↓URLの一部抜粋
> 注意:
> ASCII表記のアンダースコア(_)およびパーセント(%)文字のみが、パターン一致文字として認識されます。
> 東アジア・キャラクタ・セットおよびUnicodeで表示される全角文字は、通常の文字として扱われます。

11gR1のドキュメント
※11gR2の注意の記述がない。

【修正案】
1. 「org.seasar.dbflute.dbway.DBWay」の実装クラスをDBFluteConfig、またはdfpropで設定できるようにする。(静的。利用者が意識する必要あり)
 →littleAdjustmentMap.dfpropのextendedImplementedInvokerAssistantClassでいけますかね?
  (runtime.jarの一部でDBWayを直接newしている場所があるので確証を持てず。)
2. DBのバージョン(DatabaseMetaData#getDatabaseProductVersion、またはバージョン確認SQLを発行)で動作を変える。(動的)

【補足】
文字コードは以下の通りです。
SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER like '%CHARACTERSET'
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16

これ以外についても、前バージョンと環境設定差異を確認しましたが、今のところ差異はありません。
環境設定不備も捨て切れませんが、修正案を元にご検討いただけるとありがたいです。


# Twitterの件
# ・Oracleのメタデータ取得が遅い
#  →複数スレッドでメタデータを取得することで時間短縮するのはどうでしょうか。
#
# ・Axis2
#  →jax-wsはどうでしょうか。(jdk1.6から標準APIでいけます。これから使おうと思っていて検証中です。)
#

ご確認よろしくお願いします。

kubo

unread,
Oct 10, 2013, 8:04:00 AM10/10/13
to DBFluteユーザの集い
awaawaさん

jfluteです

> 半角と同じようにパターン一致文字として認識されていましたが、
> Oracle11gR2から、全角はパターン一致文字の対象外になったようです。
まーじーでー!?

(ちょっと脱力しています...)

修正案ありがとう。ちょっと考えます。
最低限、選べるようにしないだね。

これけっこう重大な問題だよねえ。
できれば動的に判断したいねぇ。

> # ・Oracleのメタデータ取得が遅い
> #  →複数スレッドでメタデータを取得することで時間短縮するのはどうでしょうか。

せっかくOracle触るから試してみようかな。

> # ・Axis2
> #  →jax-wsはどうでしょうか。(jdk1.6から標準APIでいけます。これから使おうと思っていて検証中です。)

ふむふむ、ちょと調べてみるね、ありがとう。


2013/10/10 awaawa <p1us3i...@gmail.com>:
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、dbflute+u...@googlegroups.com にメールを送信します。
> このグループに投稿するには、dbf...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/dbflute からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。

awaawa

unread,
Oct 10, 2013, 8:27:36 AM10/10/13
to dbf...@googlegroups.com
jfluteさん

まーじーでー!?
そうみたいです。
せめてエラーにならず、全角アンダースコア、パーセントはエスケープしてもしなくてもパターン一致文字にならないなら、まだいいんですが。

一応環境設定の可能性もあるかもしれないので、時間作って自分のローカルに11gR2のxe版をいれて確認してみようと思います。

> せっかくOracle触るから試してみようかな。
もし可能ならよろしくお願いします。(処理時間短くなるとすごく助かります!!)



2013年10月10日 21:04 kubo <dbf...@gmail.com>:

kubo

unread,
Oct 10, 2013, 9:04:35 AM10/10/13
to DBFluteユーザの集い
jfluteです

> せめてエラーにならず、全角アンダースコア、パーセントはエスケープしても
> しなくてもパターン一致文字にならないなら、まだいいんですが。
ほんとだよー

現在のDBFluteのバージョンでは、
CBに関してはInvokerAssistantの拡張で回避できそうだけど、
外だしSQLのLikeSearchに関しては回避できない。

ちょと色々落ち着いたら腰据えてゆっくり考えます。

> 時間作って自分のローカルに11gR2のxe版をいれて確認してみようと思います。

kubo

unread,
Oct 10, 2013, 11:12:18 AM10/10/13
to DBFluteユーザの集い
jfluteです

> 現在のDBFluteのバージョンでは、
> CBに関してはInvokerAssistantの拡張で回避できそうだけど、
> 外だしSQLのLikeSearchに関しては回避できない。

厳密には手間次第で回避できないわけじゃないってところですね。
リアルに遭遇する人もいるかもしれないので真剣に。

もし、Oracle11g R2 にアップグレードするという人がいたら...
結局は LikeSearchOption でエスケープ処理をしているので、
継承したMyLikeSearchOptionを独自に作って、
acceptOriginalWildCardList()をオーバーライドして空っぽにして、
アプリで new LikeSearchOption(); してるところをgrepして、
new MyLikeSearchOption(); に置換してやれば、
全角に対するエスケープはされなくなります。


実際に、DBFluteで対応する場合でも、
DBWay周りはリファクタリングはそれはそれでしたいけど、
LikeSearchOptionの処理を制御するような仕組みにしてしまえば、
回避ロジックを組み込みことはそんなに難しくないかな。

一番の課題は、動的に制御できるようにすることかな。
「Oracle12cから」とかだったらいいのに、
中途半端なバージョンなので自動判別ができたら一番いい。
(dfpropの固定指定も同時にできるようにして


※一番最初のDBアクセスでJDBCからバージョンもらうか!?
(Oracleだからなおさらちょーやりたくないんだけど...うーん)


2013/10/10 kubo <dbf...@gmail.com>:

awaawa

unread,
Oct 15, 2013, 11:39:36 AM10/15/13
to dbf...@googlegroups.com
jfluteさん

awaawaです。

返信遅れました。

週末検証してみたのですが、自分の環境だと、今回の事象が再現せず。。。
> Oracle11gR2から、全角はパターン一致文字の対象外になったようです。
> そのため、検索条件によって以下のエラーが出ることがあります。

・MacのVM上のCentOS6.4にOracle XEをいれて検証
Oracleの情報 「Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production」

・事象が起きてる環境(Linux系。ディストリビューションは確認忘れ)
Oracleの情報 「Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production」

2013年10月11日 0:12 kubo <dbf...@gmail.com>:

kubo

unread,
Oct 15, 2013, 11:55:56 AM10/15/13
to DBFluteユーザの集い
jfluteです

awaawaさん、ありがとう

> ・MacのVM上のCentOS6.4にOracle XEをいれて検証
> Oracleの情報 「Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production」
>
> ・事象が起きてる環境(Linux系。ディストリビューションは確認忘れ)
> Oracleの情報 「Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production」

ぬんじゃそりゃー


2013/10/16 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Oct 15, 2013, 10:30:47 PM10/15/13
to dbf...@googlegroups.com
awaawaです。

環境設定が原因かもしれません。
製品のグレードは違いますが、それが影響するとも考えづらいですし…
マイナーバージョンについても同じく。
もう少し調べます!

2013年10月16日水曜日 kubo dbf...@gmail.com:

kubo

unread,
Oct 22, 2013, 1:11:13 AM10/22/13
to DBFluteユーザの集い
jfluteです

> # ・Oracleのメタデータ取得が遅い
> #  →複数スレッドでメタデータを取得することで時間短縮するのはどうでしょうか。

パフォーマンスチューニングをしたパッチを公開しました。
mydbflute/dbflute-1.0.5A/lib配下のdbflute.jarを、
以下のリンクのものと取り替えると反映されます。

http://dbflute.seasar.org/download/patch/1.0.5A/dbflute.jar


o メタデータの取得を5スレッドで実行 ※これは念のためOracleのみ
o 大文字小文字の念のためメタデータ呼び出しを削除

※dbflute-oracle-exampleや他のExampleでメタデータ結果に相違なし

既にKanekoさんに試してもらって、
SchemaSyncCheckが120分かかっていたのが50分くらいになったようで。
(差分結果も問題なし)

もしよければ、awaawaくんも試してくれればと。


2013/10/16 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Oct 23, 2013, 8:40:42 PM10/23/13
to dbf...@googlegroups.com
awaawaです。

> パフォーマンスチューニングをしたパッチを公開しました。
試してみました!
130テーブルぐらいで、2分半から2分弱程度になりました。
(additionalSchema2つ。シノニムON。DBLinkあり。ストアド差分ON。)

↓気になったことです。(&お願いしたいことです。)
1. jarの入れ替えによって、project-schema-xxx.xmlのテーブルの出力順序が変わってました。
   出力順序以外の差分はなかったです。
   →スレッド対応により、実行毎に順序が分かるわけでなければ、今のままで問題ないと思います。
   (jar入れ替えた初回のみ差分が出るだけであれば。)

2. ログをみたところ、以下のSQLがスキーマ数*2回実行されているようにログ上見えました。(今回の修正絡みではない)
   スキーマ数*1回で大丈夫だと思うのですが、どうでしょうか。
   select * from USER_ARGUMENTS@XXX
   where ARGUMENT_NAME is not null
   order by PACKAGE_NAME, OBJECT_NAME, OVERLOAD, SEQUENCE

3. 対象のスキーマにDBリンクが5つ以上あると以下のSQLで5回目の発行以降でエラーが出てしまいます。(今回の修正絡みではない)
   select * from USER_SYNONYMS@XXX order by SYNONYM_NAME
   ORA-02020: 使用中のデータベース・リンクが多すぎます。

   下記、情報を見ると、初期値ではDBリンクは1接続につき、4つまでしか張れないようです。
   DBリンク越しにselectした場合は、commitもしくはrollbackする必要があるようです。
   対応していただけないでしょうか。
   ※実際業務でDBリンクが5以上あるわけではないのですが。(たまたま動作確認したところに残骸DBリンクがあり判明しました。)

Kanekoさん
先週会った時にお願いした、Like検索の確認の件、いかがでしょうか。
Kanekoさんの環境でも同事象が起こるのであれば、
環境設定の問題ではなく製品グレード+バージョンの問題の可能性が高くなるので。
すいませんが、ご確認よろしくお願いします。

2013年10月22日 14:11 kubo <dbf...@gmail.com>:

kubo

unread,
Oct 24, 2013, 2:31:25 PM10/24/13
to DBFluteユーザの集い
jfluteです

> 1. jarの入れ替えによって、project-schema-xxx.xmlのテーブルの出力順序が変わってました。
これは、どちらかというと新しいのを正にしたいと。(アルファベット順)
ただ、SchemaHTMLとかは順序は独自に並べているので変わりません。

> 2. ログをみたところ、以下のSQLがスキーマ数*2回実行されているようにログ上見えました。
これって、AdditionalSchemaのものだけじゃないかな?
ローカルで見てみるとそんな感じだけど...
まあ、ちょっと実装の都合上で出ちゃったのかもしれない。
メインスキーマだったら直したいけど、
AdditonalSchemaだけなら目をつぶろうかなと。
(直すコストとリスクが高そうなので)

> 3. 対象のスキーマにDBリンクが5つ以上あると以下のSQLで5回目の発行以降でエラーが出てしまいます。
ぐは...

DBリンクのselectしたらすぐにcommitしちゃえばいいのね?
ちょっとパッチ作ってみるのでお待ちを。



2013/10/24 awaawa <p1us3i...@gmail.com>:

kubo

unread,
Oct 25, 2013, 12:03:08 AM10/25/13
to DBFluteユーザの集い
jfluteです。

> > 3. 対象のスキーマにDBリンクが5つ以上あると以下のSQLで5回目の発行以降でエラーが出てしまいます。
> ぐは...
> DBリンクのselectしたらすぐにcommitしちゃえばいいのね?
> ちょっとパッチ作ってみるのでお待ちを。

これって、いま、AutoCommitモードだけど、
それでもcommitしないとなのかな...!?


2013/10/25 kubo <dbf...@gmail.com>:

awaawa

unread,
Oct 25, 2013, 1:24:34 AM10/25/13
to dbf...@googlegroups.com
awaawaです。

> 1. jarの入れ替えによって、project-schema-
xxx.xmlのテーブルの出力順序が変わってました。
了解です。

> 2. ログをみたところ、以下のSQLがスキーマ数*2回実行されているようにログ上見えました。
AdditionalSchemaだけじゃなかった気がしますが、確信が。
今日休みのため、週明けに確認します。

> 3. 対象のスキーマにDBリンクが5つ以上あると以下のSQLで5回目の発行以降でエラーが出てしまいます。
AutoCommitではダメでした。
念のため、commitよりrollbackのほうがいいかもしれません。


2013年10月25日 13:03 kubo <dbf...@gmail.com>:

Yuichi Kaneko

unread,
Oct 25, 2013, 2:32:22 AM10/25/13
to dbf...@googlegroups.com
Kanekoです。
LIKE検索を試しました。

試したSQLは、awaawaさんが最初に提示したSQLで試しました。

結果ですが、
ヒットするとしているSQLは、ヒットしますし、
ヒットしないとしているSQLは、ヒットしない。
エラーになるとしているSQLは、エラーになります。

要は、事象としては、発生しました。

OS:Windows2008
Oracleバージョン:11g Release 11.2.0.3.0 - 64 bit Edition

にて、試しました。
Editonは、StarndardEdition で構築しているとこのことでした。





2013年10月25日 14:24 awaawa <p1us3i...@gmail.com>:



--
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
金子 雄一  Yuichi Kaneko
E-mail : yuichi...@gmail.com
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

kubo

unread,
Oct 25, 2013, 10:40:41 AM10/25/13
to DBFluteユーザの集い
jfluteです

> > 3. 対象のスキーマにDBリンクが5つ以上あると以下のSQLで5回目の発行以降でエラーが出てしまいます。
> AutoCommitではダメでした。
> 念のため、commitよりrollbackのほうがいいかもしれません。

commitで作っちゃった...
とりあえずこれで試して欲しいです。
http://dbflute.seasar.org/download/patch/1.0.5A/dbflute.jar



2013/10/25 Yuichi Kaneko <yuichi...@gmail.com>:

awaawa

unread,
Oct 28, 2013, 10:06:50 AM10/28/13
to dbf...@googlegroups.com
> Kanekoさん
確認ありがとうございます!
11gR2だと発生するみたいですね。。。(XE版だと発生しないですが。)
自分の方がLinux系で、kanekoさんの方がWindowsなので、OSは関係なさそう。

> jfluteさん
ありがとうございました。
リンクので確認したのですが、うまくいかなかったです。

自分が修正して試したのは、
以下のクラスで、「conn.commint();」、「conn.rollback();」のどちらでもうまくいきました。
org.seasar.dbflute.helper.jdbc.facade.DfJdbcFacade#closeConnection
※これだと常に処理が走ってしまうので、微妙ですが。

すいませんがご確認をお願いします。

2013年10月25日 23:40 kubo <dbf...@gmail.com>:

kubo

unread,
Oct 28, 2013, 11:03:06 AM10/28/13
to DBFluteユーザの集い
jfluteです

> リンクので確認したのですが、うまくいかなかったです。
あれぇ、ちょっと反映がうまくいかなかったのか...
もう一度更新したのでちょっと確認してみてください。

で、それでもダメだったら、
ソースもプッシュしたので、それで試して欲しい。
DfJdbcFacadeでトランザクションをオプションで利用できるようにした。



2013/10/28 awaawa <p1us3i...@gmail.com>:

kubo

unread,
Oct 28, 2013, 11:05:01 AM10/28/13
to DBFluteユーザの集い
jfluteです

> 11gR2だと発生するみたいですね。。。(XE版だと発生しないですが。)

ぐぬぬぬぬ、
これ結構、まじめに取り組まないとダメですねぇ。
実行時にメタデータ取るのはかなり大変なので、
自動生成時に11gR2だったら、全角は除外するかなぁ...


2013/10/29 kubo <dbf...@gmail.com>:

awaawa

unread,
Oct 28, 2013, 12:59:29 PM10/28/13
to dbf...@googlegroups.com
awaawaです。

もう一度更新したのでちょっと確認してみてください。
了解しました!

> 自動生成時に11gR2だったら、全角は除外するかなぁ...
12cも確認したいのですが、時間が取れず。。。
(Amazon RDSで12cが使えると手軽に確認できるんですが、まだ対応してないので。)

2013年10月29日 0:05 kubo <dbf...@gmail.com>:

awaawa

unread,
Nov 1, 2013, 6:59:18 AM11/1/13
to dbf...@googlegroups.com
awaawaです。

もう一度更新したのでちょっと確認してみてください。
うまくいかない原因がわかりました。
今回修正いただいたのは、DfJdbcFacade#selectListですが、
DfSynonymNativeExtractorOracle内でコールしているのは、DfJdbcFacade#selectStringListのためです。
selectStringListにselectListと同じ修正をして動くこと、確認しました。
修正していただいていいでしょうか。
(なんとなくですが、メソッド統合出来そうな気がします。)

> 自動生成時に11gR2だったら、全角は除外するかなぁ...
他の現場の人が確認してくれました!
Oracleのバグのようです。(11.2.0.3.0のみ。11.2.0.4.0、12cでは直っているようです。)
のリンク[14157408」
※リンク先は、Oracleのサポート契約が必要。

なので、影響があるのは、11.2.0.3.0だけです。
そのため、DBFluteで動的チェックは不要かと。(あったほうが現象に嵌らなくてすみますが。)

パッチ当てればいいのですが、当てられない環境もあると思うので、
設定や1箇所の修正(Override)などで対応できるようにしていただけるとありがたいです。
(一番は、DBWayをdfpropかDBFluteConfigで一律置き換えられるように。)

ご検討お願いします。

2013年10月29日 1:59 awaawa <p1us3i...@gmail.com>:

kubo

unread,
Nov 1, 2013, 10:09:10 AM11/1/13
to DBFluteユーザの集い
jfluteです

なるほど、ありがとうーーーー。
というか、selectList()使ってないので消しちゃった。
patchのdbfute.jarを直してるので試してみてください。

> 影響があるのは、11.2.0.3.0だけです。
なるほど、ありがとう。これめちゃ貴重な情報だね。

ConditionBeanに関しては、SqlClauseの拡張でいけそう。
外だしSQLがテンプレート修正とかしないとだね。
まあ、LikeSearchOptionの拡張でもいいけど。

ひとまずは、それで回避という感じで、
いずれにせよ DBWay を差し替えられるような設定を
どこかに入れないと似たような問題が他にも出てくるかもだね。
次のバージョンくらいでDBFluteConfigあたりに入れようかなと。





2013/11/1 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Nov 4, 2013, 12:12:21 AM11/4/13
to dbf...@googlegroups.com
awaawaです。

週明けに確認します!

> 次のバージョンくらいでDBFluteConfigあたりに入れようかなと。
よろしくお願いします!!



2013年11月1日 23:09 kubo <dbf...@gmail.com>:

kubo

unread,
Nov 10, 2013, 10:15:32 AM11/10/13
to DBFluteユーザの集い
jfluteです

awaawaさん

> 週明けに確認します!
通常の動作的には問題ないのでとりあえず公開しちゃってます。
EMechaやDBFluteIntroで普通にダウンロードできる1.0.5Aに
反映されています。どこかで確認してくれるとうれしいです。



2013/11/4 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Nov 10, 2013, 11:12:27 PM11/10/13
to dbf...@googlegroups.com
awaawaです。

すいません。
確認しました。
問題ありませんでした!!

2013年11月11日 0:15 kubo <dbf...@gmail.com>:

kubo

unread,
Nov 11, 2013, 12:59:23 AM11/11/13
to DBFluteユーザの集い
jfluteです

> 問題ありませんでした!!
ありがとーーーぅ。よかった。

2013/11/11 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Nov 11, 2013, 11:04:25 AM11/11/13
to dbf...@googlegroups.com
awaawaです。

> > 2. ログをみたところ、以下のSQLがスキーマ数*2回実行されているようにログ上見えました。
> これって、AdditionalSchemaのものだけじゃないかな?
ローカルで見てみるとそんな感じだけど...
まあ、ちょっと実装の都合上で出ちゃったのかもしれない。
メインスキーマだったら直したいけど、
AdditonalSchemaだけなら目をつぶろうかなと。
(直すコストとリスクが高そうなので)

すいません。この件も調べるといって調べられていませんでした。。。
今日調べてみたら、USER_ARGUMENTS@XXXではなく、ALL_ARGUMENTSの間違えでした。

以下、ログの一部抜粋になります。
(DfSchemaXmlSerializer#processProcedure():861) - ...Extracting procedures
(DfProcedureParameterNativeExtractorOracle#log():185) - select * from ALL_ARGUMENTS where OWNER = 'XXX' and ARGUMENT_NAME is not null order by PACKAGE_NAME, OBJECT_NAME, OVERLOAD, SEQUENCE
(DfProcedureParameterNativeExtractorOracle#log():185) - select * from ALL_ARGUMENTS where OWNER = 'YYY' and ARGUMENT_NAME is not null order by PACKAGE_NAME, OBJECT_NAME, OVERLOAD, SEQUENCE
(DfProcedureParameterNativeExtractorOracle#log():185) - select * from ALL_ARGUMENTS where OWNER = 'ZZZ' and ARGUMENT_NAME is not null order by PACKAGE_NAME, OBJECT_NAME, OVERLOAD, SEQUENCE
(DfArrayExtractorOracle#log():275) - select * from ALL_COLL_TYPES where OWNER = 'XXX' order by TYPE_NAME
(DfProcedureParameterNativeExtractorOracle#log():185) - select * from ALL_ARGUMENTS where OWNER = 'XXX' and ARGUMENT_NAME is not null order by PACKAGE_NAME, OBJECT_NAME, OVERLOAD, SEQUENCE
(DfArrayExtractorOracle#log():275) - select * from ALL_TYPES where OWNER = 'XXX' and TYPECODE = 'COLLECTION' order by TYPE_NAME
(DfProcedureSupplementExtractorBase#log():122) - Array Parameter: {XXX as main}
(DfArrayExtractorOracle#log():275) - select * from ALL_COLL_TYPES where OWNER = 'YYY' order by TYPE_NAME
(DfProcedureParameterNativeExtractorOracle#log():185) - select * from ALL_ARGUMENTS where OWNER = 'YYY' and ARGUMENT_NAME is not null order by PACKAGE_NAME, OBJECT_NAME, OVERLOAD, SEQUENCE
(DfArrayExtractorOracle#log():275) - select * from ALL_TYPES where OWNER = 'YYY' and TYPECODE = 'COLLECTION' order by TYPE_NAME
(DfProcedureSupplementExtractorBase#log():122) - Array Parameter: {YYY as additional}
(DfArrayExtractorOracle#log():275) - select * from ALL_COLL_TYPES where OWNER = 'ZZZ' order by TYPE_NAME
(DfProcedureParameterNativeExtractorOracle#log():185) - select * from ALL_ARGUMENTS where OWNER = 'ZZZ' and ARGUMENT_NAME is not null order by PACKAGE_NAME, OBJECT_NAME, OVERLOAD, SEQUENCE
(DfArrayExtractorOracle#log():275) - select * from ALL_TYPES where OWNER = 'ZZZ' and TYPECODE = 'COLLECTION' order by TYPE_NAME
(DfProcedureSupplementExtractorBase#log():122) - Array Parameter: {ZZZ as additional}
(DfStructExtractorOracle#log():156) - select * from ALL_TYPE_ATTRS where OWNER = 'XXX' and TYPE_NAME in (select TYPE_NAME from ALL_TYPES where OWNER = 'XXX' and TYPECODE = 'OBJECT') order by TYPE_NAME, ATTR_NO
(DfProcedureSupplementExtractorBase#log():122) - Struct Info: {XXX as main}
(DfStructExtractorOracle#log():156) - select * from ALL_TYPE_ATTRS where OWNER = 'YYY' and TYPE_NAME in (select TYPE_NAME from ALL_TYPES where OWNER = 'YYY' and TYPECODE = 'OBJECT') order by TYPE_NAME, ATTR_NO
(DfProcedureSupplementExtractorBase#log():122) - Struct Info: {YYY as additional}
(DfStructExtractorOracle#log():156) - select * from ALL_TYPE_ATTRS where OWNER = 'ZZZ' and TYPE_NAME in (select TYPE_NAME from ALL_TYPES where OWNER = 'ZZZ' and TYPECODE = 'OBJECT') order by TYPE_NAME, ATTR_NO
(DfProcedureSupplementExtractorBase#log():122) - Struct Info: {ZZZ as additional}


2013年11月11日 14:59 kubo <dbf...@gmail.com>:

kubo

unread,
Nov 11, 2013, 9:52:41 PM11/11/13
to DBFluteユーザの集い
jfluteです

> 今日調べてみたら、USER_ARGUMENTS@XXXではなく、ALL_ARGUMENTSの間違えでした。
> 以下、ログの一部抜粋になります。

ありがとう。なんとなくわかりました。
ARRAY型の取得のときに、もう一度ALL_ARGUMENTSを検索しちゃってるみたい。
まあ、ループしているわけではなさそうなので(Sensitiveな部分なので)基本割り切りで、
次のバージョンでいじってるときにできそうであればアプローチしてみるって
感じでいきたいと。


2013/11/12 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Nov 11, 2013, 10:11:18 PM11/11/13
to dbf...@googlegroups.com
awaawaです。

了解しました。
修正による削減時間も(確認した環境で)5秒程度なのでー、優先度はそんなに高くないです。


2013年11月12日 11:52 kubo <dbf...@gmail.com>:

kubo

unread,
Jan 13, 2014, 11:20:20 PM1/13/14
to DBFluteユーザの集い
jfluteです

> > (Oracleの特定のバージョンにて)
> > 全角のアンダースコア(_)およびパーセント(%)が
> > 半角と同じようにパターン一致文字として認識されていましたが、
> ...
> ひとまずは、それで回避という感じで、
> いずれにせよ DBWay を差し替えられるような設定を
> どこかに入れないと似たような問題が他にも出てくるかもだね。

こちらの件、1.0.5Bにて、
DBWayを差し替えられるようにしました。
アプリ起動時にDBDef.switchDBWay()にてDBWayを差し替えることで、
DBFlute内の全ての処理でDBWayが変わります。




2013/11/12 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Jan 14, 2014, 7:17:13 AM1/14/14
to dbf...@googlegroups.com
awaawaです。

ありがとうございます!


2014年1月14日 13:20 kubo <dbf...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages