>>941 パースや実行計画のコストが無視できないような短時間で終了するクエリでならば明らかだが、
複雑で時間のかかるクエリではそうとも限らん。特にデータに偏りがある場合などは。
動的SQLとか使うのは頭が悪い奴
頭が良い奴は両方の得失を理解して使い分けができる
得失がわかってない奴が偉そうにいったところでねぇ
分かっている方説明ヨロ
俺は分からん・・・
単純な話、条件によって最適なアクセスプランが異なるようなケースでは
その都度実行計画を作る方がトータルのコストが低い場合がある。
オプティマイズをミスった場合のペナルティは場合によっては非常に
大きいから、あたりまえといえばあたりまえ。
10gR2でも/*+ RULE */ヒント文は有効なので、
動的SQLに埋め込んでルールベースで動かす、
というのも、オプティマイズをミスった場合のペナルティから
回避する方法の一つ。
俺の経験では、コストベースオプティマイザに任せた結果、
大規模な表同士のジョインでハッシュジョインが
選択された時に一時表領域を食い尽くして、
尋常じゃないレベルまで性能低下するケースがあった。
ちなみに/*+ RULE */ヒント文を埋め込むと、
ソートマージジョインか、ネステッドループジョインの
どちらかになります。
>>944 「俺が設計したファッキンテーブルじゃねえよ糞ったれ」
という事もあるかも知れん。
>>946 部屋にエアコンなくてイラついてんのか?
得失が分かってない奴キタコレ↑
すみません質問です。
今、Microsoft Office InfoPath 2007を使っているのですが、
Oracleに接続してDBの値を使えるらしいのです。
(DBから取得した値をテキストフォームに挿入ということがやりたいです。)
ですが、肝心のOracleへの接続方法が分かりません。
スレ違いかもしれませんが知っている方がいらっしゃいましたら
教えて頂けないでしょうか。
>>963 ありがとうございます。
以前にVBAでのORACLEの接続経験はあるのですが、
InfoPath2007はVSTAを使ってC#orVB(今回はC#を使おうと思ってます)
で記述する感じでした。
試しにC#でそれらしい記述を書いてみたのですが、usingでOracle接続に必要な
クラスをインポートした所、エラーになり、どんな設定をすれば使えるように「なるのか
が分からないというのが今の状態です。
プログラムを書かないで接続する方法があればそちらで接続したいのです(SQL Server
とかはInfoPathの設定で接続できるみたいです)。
ですがOracleは今の所の調べではそういう設定は無さそうでした...
956 :
952:2009/07/31(金) 21:12:33 ID:???
InfoPath2007とOracle接続の件ですが今日解決することができました。
必要なライブラリ(?)を"参照の追加"で追加しないとOracele接続クラスの
メソッドが使えなかったみたいです。
Officeはそこまで使わないので設定の流れが分からなくて...面目ないです。
しかしC#はライブラリが充実していて結構使い易いですね〜
以上お騒がせ致しました。
ORACLEってダウンロードできますか?
できますん
959 :
NAME IS NULL:2009/08/01(土) 04:10:55 ID:4qRkq2W/
質問です。
Oracle 9iとPro cobolを使っています。
条件にマッチする行が15件有る場合、
以下のようなプログラムを実行すると、
EXEC SQL
BEGIN DECLARE SECTION
END-EXEC
01 Touroku-REC-TABLES
05 ht-id PIC X(12) OCCURS 25.
05 ht-name PIC X(40) OCCURS 25.
EXEC SQL
END DECLARE SECTION
END-EXEC.
.
.
.
EXEC SQL
SELECT id, name
INTO :ht-id, :Ht-name FROM touroku
END-EXEC
一度に15件取得して、配列に代入する事になるんですか?
それとも、一件のみの取得ですか?
いままでは、複数件取得したい場合
カーソルを作ってNOTFOUNDが出るまで、
一件取得->配列に代入のループを行っていたので
今日初めてこのプログラムを見て、
一件取得なのか、全部取得なのかどっちか疑問に思っています
俺は、Pro*COBOLを使った事無いけど、PL/SQLでは、
ttp://www.shift-the-oracle.com/plsql/select.html に書かれているような、実行時のエラーを経験している。
-------------------------------------------------
ORA-01422: 完全フェッチがリクエストよりも多くの行を戻しました
-------------------------------------------------
多分、同じ事になるんではないか。
ここでいいのか分からないけど質問です。
Oracle10gとWindowsCE5.0って直接SQLのやり取りって出来ない?
どうも、WindowsCE5.0用のオラクルクライアントが無いようなのですが。
直接SQLでやり取り出来る方法があれば教えてください。
環境
・PDA(WindowsCE5.0)
・.NetCompactFramework2.0
・VB.net(VS2005)
データベース未経験でわからないので根本的なことですが教えてください。
oracleってどういった業務に使われてるんですか?
963 :
NAME IS NULL:2009/08/04(火) 16:52:24 ID:n7ZF7BFv
自分が所有しているCDをアーチストごとに分類したりするのに良く使われるな
964 :
NAME IS NULL:2009/08/04(火) 17:21:36 ID:WF6K2+ix
Oracle10g R1 は
Mac OS X Tiger(PPC)で動くらしいのですが
LeopardはPPCとIntelの両方で動くのでしょうか
R2はIntel Mac版があるようなのですが・・・
>>961 CE用のクライアントは聞いたことないね。
ミドルウェアを買う必要あるんじゃないかな。
>>962 CRM(カスタマーリレーションシップマネジメント)
SCM(サプライチェーンマネジメント)
SFA(セールスフォースオートメーション)
ERP(エンタープライズリソースプランニング)
KM(ナレッジマネジメント)
などです。
よく分からないがOracleLiteClientってOracleLiteServer専用とかじゃない?
Javaが使えるなら確かJDBCのThinドライバでクライアントの
インストールなしにサーバに接続できた気がする。
Windows Mobileは、1週間に1回ぐらいフリーズして、ため息。
3ヶ月に1回ぐらい、知らぬうちに工場出荷状態に戻ってて、激怒。
調子が悪くて自分でハードリセットする羽目になって、涙目。
Windows Mobileという製品を十分評価してからの方がいいよ。
969 :
NAME IS NULL:2009/08/05(水) 11:49:38 ID:lbXkSQVv
ODBC接続のとき、Oracleのドライバーを使用すると
ユーザー名が全角10文字より長い場合エラーになるのですが
仕様ですか?
ユーザー名が全角文字って初めて聞きました。
このスレ住民には、そのような使い方してる人は、
いないと思います。
普通は半角英数字とアンダースコア(A-Z、0-9、_)
だけ使って、先頭はアルファベットで、
30バイト以内でユーザー名を設定しますよ。
TARO_YAMADA
GREATSYSTEM360
のような感じですね。
ちなみに、全角10文字より長いとエラーが発生する
というのは、UTF-8では日本語は3バイトなので
30バイト制限に引っかかっているのかもしれません。
長文失礼します。
10gR2のキャラクタセットがJA16SJISTILDEの現行インスタンスを
10gR2のキャラクタセットがAL32UTF8の新インスタンスとして再構成したいです。
なお、現行のクライアントアプリは、入力バイト数の制限チェックを
SJIS想定で判定しております。
今、自分で考えている方針としては、以下の1〜5です。
とりあえず自分なりに1回経験を積むつもりですが、
経験談、指摘事項があればアドバイスをいただきたいです。
当初はORACLE社推奨どおりCSSCANからCSALTERを使う事も
考えましたが、いまひとつ信頼しきれないと感じています。
よろしくお願いいたします。
1)
現行インスタンスで、全スキーマの全テーブルのデータ件数、
テーブル中の各カラムの格納バイト数を調査する。
CSSCANにより問題箇所の事前情報も得ておく。
2)
1で、全テーブルの全カラムの格納バイト数が
VARCHAR2(1333)以内に収まる、CHAR(666)以内に収まる
データであると判明したら、3以降に進む。
収まらないようなら、データ内容について
AL32UTF8にて4000バイトに収まりそうか十分に検討、
データを削るなどの作業をして、1に戻る。
3)
JA16SJISTILDEのインスタンスをエクスポート。
AL32UTF8のインスタンスにROWS=Nでインポート。
1〜2の情報を元に、
ALTER TABLE xxxx MODIFY (yyyy VARCHAR2(4000));
のようにテーブルの定義を変更する。
4)
AL32UTF8のインスタンスにIGNORE=Yオプションで
データをインポート
インポート後、1のデータ件数と比較し、レコードの
欠落が無いことを確認する。欠落があった場合、
TRUNCATE TABLE xxxx
ALTER TABLE xxxx MODIFYして、インポートしなおす。
5)
現行のクライアントアプリは、当面そのままとし、環境変数
NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
のままで利用する。
キャラクタセットの変換はOracle Netに任せる。
性能低下が懸念されるため、性能低下度合いを確認する。
将来的には、環境変数
NLS_LANG=JAPANESE_JAPAN.UTF8
で動作するよう、
具体的にはハングルと日本語を同時に利用可能なように
クライアントアプリを修正する。
>具体的にはハングルと日本語を同時に利用可能なように
民主党か?
売国奴は日本から出て行け。
うちはマルチバイト系の文字を使うカラムは全部NCHAR系に変えて行ったな。
バイトで処理してるアプリの対応は必要だったが最終的にはすっきりした。
データベース移行なんてしなくてもCHAR、VARCHAR2を
NCHAR、NVARCHAR2に定義変更すればいいんじゃない?
多分文字コードはUTF16で定義されてるだろうから、
クライアントの長さチェックの修正も必要ない。
>>971 記憶でレスするので間違えてたらスマソ。
(3) の Import で SJIS→UTF8の変換が必要と判断され、
Import 時の CREATE TABLE でカラムサイズ1.5倍が動い
た気がする。なのでDDLを作り直したほうが良いかもしれない。
あと CSALTER でも SJIS→UTF8はスーパーセットじゃない
のでNGのはず。
ナショナル・キャラクタセットへの変換は、アプリによってはフェッ
チ時のAPI変えたりとか面倒なケースがあったような。
>>972 私も同じ考えでしたから、偉そうに言えませんが
日本の企業が韓国、中国に進出するために
必要なんだそうです、上司いわく。
>>973-975 参考になりました。ありがとうございます。
さて、土日に自宅で頑張ってみます。
やべえ。スレッドストッパーだ、オレ。
11gのテーブルのダンプを9iにインポートすると、ORA-0096エラーがでます。
エクスポートは9iが稼働してるサーバから、
exp hoge/hage@11gSVR file=t.dmp
みたいな感じでエクスポートしました。
それを
9iが稼働してるサーバで
imp hoge/hage file=t.dmp full=y
みたいな感じでインポートすると
「ORA-00096: 無効な値がパラメータplsql_compiler_flagsに指定されて
います。値はNON_DEBUG, DEBUG, INTERPRETED, NATIVEの中から設定する
必要があります」
のエラーが出てしまいます。
この下向きのインポートは10gを経由しないとダメなんでしょうか。
11g R1⇒9i R1はそもそもできないそうです
>>978 書き込みを読んで、なにも調べずに想像だけど。
plsql〜のエラーってことはさ、PLSQLのコンパイルに失敗しているってことでしょ。
exp/impってさ、テーブルやらインデックスやらビューやら権限やらPLSQLやら
ありとあらゆるオブジェクトが対象になっているのね。fullでやると。
んで、今回の11gから9iがテーブルのデータだけで良いってんなら。
fullやめて、tablesパラメータでテーブル全部指定してテーブルだけ
インデックスもほしいならindexes=yで、データだけ入れれば?
んで、さらに、途中でエラーが発生してもエラー停止しないって引数
が(名前忘れた)あるからそれもyでつける。
これでデータだけならできんじゃね?
>>979 >>980 お返事ありがとうございます。
imp hoge/hage file=t.dmp tables=table1 ignore=y
でやってみましたが現象変わらずでした。
10g R2(?)以降はimp/expコマンドは正式サポートされていないようですし、
この関係で11g->9iのデータ移行は簡単にいかないのでしょうかね。
データだけで良いので、CSV経由ででも試してみます。
>>981 CSV経由するくらいなら、DATABASE Link接続でInsert Selectは?
LOBでトラブる
>>982 DATABSASE Linkは使ったこと無かったのですが、後学のために試して
みたいと思います。ありがとうございました。
おいらにとっちゃデジタルの方がどうにでもできる
Oracleの9iで巨大なテーブルデータをロード、アンロードしたいんだけど、
一般的にどんな方法とるの
987 :
986:2009/08/21(金) 22:46:52 ID:???
ごめんなさい、途中でエンター押してしまった。
Oracleの9iで巨大なテーブルデータをロード、アンロードしたいんだけど、
一般的にどんな方法とるの?
今は、普通にPro*CからSELECT * FROM・・ってしてデータ取得して
全件とってきてるんだけど、一時表領域がパンクしてエラーになってる。
巨大テーブルの全件アンロードとロードって結構やりそうだと思うんだけど
これだっていう一般的な方法がぐぐっても見つからんかった。
9iまでならimp/exp (以降ならimpdp/expdp)
ロード時、アーカイブログはオフる
>>988 サンクス、確かにそれが普通っぽい気がする。
逆になんでそんな実装をしているんだとおもいます?
やっぱり、やっぱりロード時にオフる必要があるからでしょうか?
普通にテーブルの全データ取ってきてるだけなのに。
実装が不自然すぎて逆に意図があるんじゃないかと思ってしまう。
質問ばっかりウザい
一つ答えてもらったんだから自分でなんとかしろよ
別に質問してるわけじゃないし。
それに質問だとしても質問スレなんだから何か問題あるでしょうか?
>>989 変な実装だと思った時は、素直にそう思った方がよい
(実際、無知から来る妙な実装を結構見てるから)