Oracle 質問総合スレ2at DB
Oracle 質問総合スレ2 - 暇つぶし2ch211:NAME IS NULL
08/01/23 07:31:55
>>210

OPTIMIZER_INDEX_CACHING や OPTIMIZER_INDEX_COST_ADJの初期化パラメータを
変更するとINDEX SCANのコストを低くできるよ。
使い方については、マニュアルや検索サイトで調べてください。


212:NAME IS NULL
08/01/23 23:20:02
>>204
「Oracle Enterprise Manager Javaコンソール」も
無くなっているんだ?!

ガガーン!!重いけど、便利だったのに。。


213:NAME IS NULL
08/01/24 23:39:38
会員番号 枝番 所属
10000001 00 A001
10000001 01 ’’(1byteスペース)
10000001 02 A002
10000001 03 ’’(1byteスペース)

上のようなテーブルで枝番が00のレコードの所属が変わった時に
履歴データを登録するトリガーを作ろうとしています。
(履歴データのテーブルは上と同じです)

登録したい履歴は
①枝番00の履歴
②枝番00以外で所属がスペースのもの(上だと01と03)
(履歴の所属は枝番00の所属をセット)

IF :OLD.所属 <> :NEW.所属 THEN
① INSERT INTO RIREKI (:OLD.会員番号,:OLD.枝番,:OLD.所属);
② INSERT INTO RIREKI(
      SELECT 会員番号,枝番,:OLD.所属 FROM テーブル
      WHERE 会員番号 = :OLD.会員番号
AND 枝番号 <> 00
AND 所属 = ' '
);
END IF;

上のように作ったのですが②の履歴が登録されてくれません。
①は登録されます。
②の履歴登録をファンクションにして見ても同じです。
(ファンクションを単体で動かすと登録されます)

どこがおかしいのでしょうか?アドバイスをお願いします。


214:NAME IS NULL
08/01/25 03:32:01
>>211
ありがとうございました。おかげで急場がしのげました。

215:NAME IS NULL
08/01/25 23:35:08 FdYL0YIc
AテーブルとBテーブルとCテーブルを結合して10000人の個人情報(1人1レコード)を取得する。
AテーブルとDテーブルとEテーブルを結合して10000人の個人情報(1人1レコード)を取得する。
AテーブルとFテーブルとGテーブルを結合して10000人の個人情報(1人1レコード)を取得する。
・・・といった感じでAテーブルに対して複数のテーブルを当てて取得したいようなのが
20種類くらいあったとして、それぞれが同じ10000人の個人情報だとする。
その10000人は、Aテーブルに対して条件を指定する事で取得出来て、
対象者をキーとして簡単に結合出来る場合、

一発のSQLで取るほうがいいのか、複数回に分けた方がいいか
どっちがいいかなパフォーマンス的に。
大量データを扱う場合、複数回に分けた方がいい場合があると聞いたので

216:NAME IS NULL
08/01/26 00:04:20
>>215

何かよく知ってる仕事と関係がありそうな…
こういうところで新規性を失うと特許出せないですよ。特29条1項3条。

複数回に分けるということはトランザクションを考えないといけないので、
一般には1回で済ませるほうがいいですね。
パーティション表などの考え方とはちょっと概念が違いますよ。


217:NAME IS NULL
08/01/26 07:59:23 4u50YVa+
>>216
そんな大層なものじゃないですよ、すごく超初心者的な質問です。
--
SELECT A.個人を特定するID,
B.住所,
C.職業,
ア.住所マスタ,
イ.職業マスタ
FROM A,B,C,ア,イ(外部結合)
WHERE
A.個人を特定するIDの条件
--
実際はもっと複雑なSQLですけど、これがB,CだけでなくZまであったとして、
B~Z、ア~ンまでのデータを一つのSELECT文で取得する場合と
BとC、DとE・・・といった具合に複数回にSELECT文を分ける場合で、
後者の方がパフォーマンスに優れる場合もあると聞いたんですが、
理由聞いてもイマイチ分からなかったので質問しました
こんな事、特許出すほど新規性のあるものでは無いと思いますが・・・

218:NAME IS NULL
08/01/26 08:08:18
>>217
ちなみにどんな理由だったんだ?

219:NAME IS NULL
08/01/26 08:14:01
>>218
検索しに行くレコード数が半端ないからという理由です
自分としては、どっちにしても同じデータを取得するのだから
単純に一度に取れた方がいいじゃんって思うのですが・・・

220:NAME IS NULL
08/01/26 09:11:03
>>219
それ理由になってないな

10gで廃止されたが OPTIMIZER_MAX_PERMUTATIONSってパラメータがあるんだけど
テーブル6個だと結合順序は720通り,7個になると5040通りになる
9iのデフォルトの上限値はテーブル6個までの結合順序は完全に調査できるが7個は無理

大量のテーブルを結合するとCBOの実行計画で結合順序をミスったときのインパクトも急激にでかくなる
結合順序の選定は総当りではなく統計情報がサポートしてるけど完璧ではない

221:NAME IS NULL
08/01/26 09:25:45
>>220
よく分かりました
THX!

222:NAME IS NULL
08/01/27 08:55:53
>>215
俺だったら大量テーブルのJOIN結果のデータ取得は
マテリアライズドビュー使うがなぁ。


223:NAME IS NULL
08/01/30 17:29:57
Oracle9iですがTNSリスナーが勝手に停止することは
ありえますでしょうか?

224:NAME IS NULL
08/01/30 17:44:30
>>223
勝手に落ちてることはたまにある。
負荷掛かりすぎてたとかじゃないか?

225:NAME IS NULL
08/01/30 17:50:41
>>224
なるほど。負荷がかかりすぎると落ちるとは知りませんでした。


226:NAME IS NULL
08/01/31 00:51:56
>>225

listenerのログ見てみればいいじゃん?
誰かが間違って落としているかもよ?w
まあ、用意周到な奴はログも消しているかも知れないけどさw

227:NAME IS NULL
08/01/31 10:09:01
リスナーに負荷が掛かる状況ってどういう状況でしょうか?
リスナーは接続を待ち受けてるだけではなく他の仕事もしているのでしょうか?

228:NAME IS NULL
08/01/31 17:15:30
なかなか高負荷でリスナーが落ちるというソースがありません。
インスタンスが落ちるというのはあるみたいですが。
どこかにソースは無いでしょうか?

229:仕様書無しさん
08/01/31 23:16:30
>>228
そんなソースがあってたまるかw


230:NAME IS NULL
08/02/01 09:06:23
>>230

リスナーに負荷がかかる状況としては、RACなんかでロードバランスされていた
セッションが、インスタンス障害やノード障害などで落ちてしまった場合なんかが
該当するだろうな。
設定にもよるけど、こういった場合には生き残っているノードに、一気に新たな
セッションを確立しようとするから、一時的にリスナーに負荷がかかる事が
考えられる。

231:NAME IS NULL
08/02/01 09:27:34
リスナーがのように軽い処理がウェイトじゃなく高負荷状態だったら
DBサーバーはきっと火を吹いてる

232:NAME IS NULL
08/02/01 13:01:20
すまんちん。
おいらUDB2しか触ったことないのにDBなら一緒でしょ、とか
訳のわからん理由でoracleの案件に突っ込まれて涙目で勉強してるんだが、
兄貴諸氏お薦めの本や、サイトってないでしょか・・。
手探りだと時間かかってしまって・・。

できれば、トリガーとPL/SQLについて詳しく説明してあるものがいいです。


233:NAME IS NULL
08/02/01 15:00:14
>>232
PL/SQL 入門 トリガー で検索しる

234:232
08/02/01 17:39:41
ざっくりしててわからんかったですよ。すまんです。
検索してみて、「やさしいOracle PL/SQL入門」ってのがよさげだったので
これにしてみました。
涙目にならず、がんばります。

235:NAME IS NULL
08/02/01 17:48:18
>>232
Oracle Technology Network (OTN) Japan
URLリンク(otn.oracle.co.jp)

ここにユーザ登録しておけばある程度は何とかなる。
マニュアルもあれば、サンプルもあるし。

236:NAME IS NULL
08/02/01 20:10:27
すみません、ちょっと教えてください。

アメリカ人のプログラマーの友人と会話の中で
「Oracle Master」という言葉を出しても相手は「?」という感じだったのですが
USでは別の言い方をされてるのでしょうか?

Google英語版で調べてみてもそれっぽいのが出てこないのですが・・・

237:NAME IS NULL
08/02/01 20:23:24
>>236
URLリンク(education.oracle.com)

238:NAME IS NULL
08/02/01 20:25:27
silver=OCA
gold=OCP
platinum=OCM

239:NAME IS NULL
08/02/01 20:26:37
>>236

OCM/OCP/OCA だな。


240:NAME IS NULL
08/02/02 07:01:21
>>236

アメリカ在住だが、こっちではOracle CertifiedとかOracle Certified DBAとかって言う。
まあ、たまに面接とかするんだけど、レジュメの一番先に「Oracle Certified DBA」とかって
書いている奴に限って、実務は全然駄目だったりする。
特にインド人な。

241:NAME IS NULL
08/02/02 07:28:53
>>240
日本でも同じだよ(w コレも全世界共通なのかな
資格なんてって思うけど...
実務でバリバリ出来る人は簡単にOCP(Gold)くらいは取れちゃうからね

242:NAME IS NULL
08/02/02 13:21:36
windows vistaにOracle9iをインストールすることは可能ですか?
インストールの一番最後で、
「jrewを起動できませんでした」のエラーが出てしまいます。

243:NAME IS NULL
08/02/02 15:59:50
記述がまったく間違ってないUPDATE文で
接続等もちゃんとしてあって、TBLがちゃんとあって
TBLの容量不足以外で
UPDATE文だけ失敗させる方法ってありますかね?

244:NAME IS NULL
08/02/02 16:15:02
デッドロック


245:NAME IS NULL
08/02/02 17:11:07
>>244
どうもありがとうです。それしかなさそうですね。

246:NAME IS NULL
08/02/03 05:00:43
>>243

triggerで弾けば?

247:NAME IS NULL
08/02/03 09:55:24
>>243
いちばん簡単なのはプライマリキー重複エラーじゃないか?

248:NAME IS NULL
08/02/03 15:02:43 Do4vvoU0
oracle10gPlatinumをとりたいと思ってるのですが、
試験情報とかって知ってますか?
試験のイメージがわかないんですが、
具体的な試験の内容とか知っている人いれば教えてくれませんか?


249:NAME IS NULL
08/02/03 17:51:18
www.oracle.comにアクセスできません
落ちてるんでしょうか

250:NAME IS NULL
08/02/03 18:28:04
>>248
Platinum9iを保有しています
残念ながら具体的な内容は教えられないことになっています
「特訓コース」の研修にでも参加してみたら

>>249
繋がりますよ

251:NAME IS NULL
08/02/03 18:33:26
>>250
FireFoxじゃなくてIEでアクセスしたら繋がりました。失礼しました。

252:NAME IS NULL
08/02/03 19:02:42
>>248

去年の3月に受けたときはこんな感じ。

シナリオ0 45分 セットアップ
シナリオ1 120分 データベースとネットワーク構成
シナリオ2 120分 Enterprise Manager Grid Control
シナリオ3 60分 データベースの可用性を向上させる構成
シナリオ4 90分 データウェアハウス向け機能の構成
シナリオ5 120分 データの管理
シナリオ6 120分 パフォーマンスの管理
シナリオ7 105分 Real Application Clusters
シナリオ8 75分 Data Guard

あとは google 先生に聞いてみたらいいよ。


253:NAME IS NULL
08/02/04 02:01:24 p8Avi1wM
特訓コースの内容をしっかり復習すれば
いけそうなのですかね?
特訓コース外の中身がでることってあるのでしょうか?

254:NAME IS NULL
08/02/04 07:09:56
>>253
特訓コースを受講した
全員が合格しているわけではないと思うぞ
っとだけ言っておこう

255:NAME IS NULL
08/02/04 08:27:30
>>253

ぜんぜん足りない。そんなに Platinum は甘くないよ。


256:NAME IS NULL
08/02/06 01:06:09
Oracleであ興味があるのがifsというきのう なのですがあれは動きますか?


257:NAME IS NULL
08/02/06 04:47:57
>>256
Internet File Systemのことか?

258:NAME IS NULL
08/02/06 14:41:40 wj1xNTA5
>>256
動くよ

259:256
08/02/06 21:27:21
はい、自分でDBの勉強を使用つぃているのですが、いろいろ調べると、9iでは大々的に宣伝されているのに10gではマニュアルなどでは見つけられないんです。
 9iでコケた技術なのかな、って気になったわけです。

もしくはここで聞く話じゃないのを承知で聞きますが、mysql やposgreに同じ機能の物ありますか?

オフラインでレスしているので返信が遅れて申し訳ありません。

260:仕様書無しさん
08/02/06 22:28:39
>>259
いまもう11gが出てるんだが。。。
9iを大々的に宣伝って、何を見てるんだ?

とりあえず、10gのマニュアル。
URLリンク(otn.oracle.co.jp)


261:NAME IS NULL
08/02/07 00:03:07
>>260

流れを読めよ。この人は ifs について聞いてるんだろうが。


262:NAME IS NULL
08/02/07 03:06:42
実行計画ってどうやってみるの?
出力結果見ても見方が判らないから意味がわからない

263:NAME IS NULL
08/02/07 20:49:36
>>259
つか、ifsは10gでcontent Management SDKに名前変わったよ。

>>262
Object Browserで参照すれば分かり易くしてくれる。

264:NAME IS NULL
08/02/08 16:14:06
バッチジョブの用語の意味は何でしょうか。
調べたのですが、この用語の具体的な意味を解説しているサイトは見つかりませんでした。

265:NAME IS NULL
08/02/08 16:19:30
そのまんま batch な job

266:NAME IS NULL
08/02/08 22:46:04 z4LAWO81
★質問(既出だったらごめんなさい)

ある列に、半角文字が含まれているレコードを探し当てたいのですが、以下のSQLだと「バ」とか「ガ」など濁音とかだと見逃してしまう
なんか良い方法ないでしょうか?


------------------------------------------
--前提条件:文字コードは「JA16SJIS」

SELECT *
FROM TBL
WHERE LENGTH(COL) <> LENGTHB(COL)/2
;
------------------------------------------

267:NAME IS NULL
08/02/09 11:47:07
半角カタカナはせいぜい60文字ぐらいだろうし、濁音とかだけが問題なら
OR INSTR('濁点')みたいな感じで、それらを別に検索すればよいのでは?

268:256
08/02/09 14:51:26
すいません。
返信が遅れました256です。
9iではあれだけ宣伝しているのに、10gのマニュアルにIFSの記載がまったくないので古いバージョンを導入しかないのかと
悩んでいたんです。 (9iで思いっきり失敗した事例で10gからなかったことにしたのかなぁ、なんて勝手に考えていました。)
あと実際の環境でWin2000の低スペックPCで運用したくできるだけ古いバージョンをインストールしようと考えていました。
11gってまだ手を出すレベルではないような気しますし。
社内でファイルサーバの整理にInternetFileSystemが有効かなぁ、なんて考えていたんです。
名称が変わっただけみたいですね。 >>263

皆様ありがとうございました。10g修行して戻ってまいります。

/チラシの裏
CLIEにnnsiだとどうしてもレスポンスが遅くなってしまいますです。
ソフトウェア技術者試験をDBがまったく歯が立たなくて落ちたので
もっと気合入れて勉強します。

以上チラシの裏/


269:NAME IS NULL
08/02/09 23:33:10
>>264
ていうかバッチジョブって別にオラクル用語じゃないけどね
URLリンク(ja.wikipedia.org)

270:NAME IS NULL
08/02/10 00:27:09 C0/lH/mG

------------------------------------------
--前提条件:文字コードは「JA16SJIS」

SELECT *
FROM TBL
WHERE LENGTH(COL) <> LENGTHB(COL)/2
OR INSTR('゙')
OR INSTR('゚')
;
------------------------------------------

でOK?


271:NAME IS NULL
08/02/10 00:55:00
いや、それじゃ構文エラーだろう
そもそもINSTRって文字位置を返す関数でしょう

WHERE
LENGTH(COL) <> LENGTHB(COL)/2
OR COL NOT LIKE '%゙%'
OR COL NOT LIKE '%゚%'

とやりたいんじゃないの?

それか文字コードがSJISで固定なら文字コードで範囲を絞るとか

272:266
08/02/10 01:09:34
>271
頭いいっすね。勉強になります。
文字コードで範囲を絞るというと文字コードを返す関数があるのですか?


273:NAME IS NULL
08/02/10 01:25:06
>>271
いやそれだと濁点・半濁点が含まれていないレコードが抽出されるぞ

と自己レス

LIKE演算子の前のNOTは不要でした

>>272
ごめん、あんまり詳しく考えずに書いたけどたぶんあるでしょう>文字コード関数
大体どんな言語にもあるし ASC()とか

274:NAME IS NULL
08/02/10 01:26:03
スレちがい

275:NAME IS NULL
08/02/10 02:13:25
>274
違ってないでしょ
もし違っているなら誘導たのむ

276:NAME IS NULL
08/02/10 04:30:29
こっちだろ
オラクルだけの話題とはいい難い

SQL質疑応答スレ
スレリンク(db板)


277:NAME IS NULL
08/02/10 13:55:25
>276
ありがとちゃーん

278:NAME IS NULL
08/02/10 14:02:43
dump関数使えないかな?


279:NAME IS NULL
08/02/10 21:12:18
ダパンプ関数?

280:NAME IS NULL
08/02/11 02:41:56
俺がレスするといつもこうだ

281:NAME IS NULL
08/02/13 11:44:50
今手元にOracle9iがあるんですが、エディションがわかりません。
何か確認する方法ってありますか?

282:NAME IS NULL
08/02/13 13:18:15
インストーラー起動すればすぐわかると思う

283:NAME IS NULL
08/02/13 14:02:15
階層問い合わせを高速化するのに何かいい方法はないでしょうか?

284:NAME IS NULL
08/02/13 17:14:30
>>281
インストールメディアにはEnterpriseもStandardも入ってるからライセンス証書確認汁。


>>282
それじゃ分からんと思うよwww


>>283
実行計画とにらめっこ汁

285:NAME IS NULL
08/02/13 22:21:44
9iってインストールするときにedition選ぶんじゃなかったっけ?
たしかインストールしたeditionがrepositoryに表示されてたと思ったが。

#ライセンス証書確認しても何が入っているかの確認にはならんかと思う。

286:NAME IS NULL
08/02/13 22:25:07
インストーラー起動っていうのはCDとかのインストーラーじゃなくて
既にインストール済みのインストーラーのことで、それを起動したら
インストール済みのプログラムの細かいバージョンまで表示される。
今、手元に9iのサーバがないからenterpriseかどうかまで表示されるかはわからないけど。

287:NAME IS NULL
08/02/13 22:32:05
>>285
「手元に有る」という表現では、インストール済みの実機とは限らん罠。

>>286
インストール済みの実機有るならsql*plusでconnectすればすぐ分かるだろ。


288:正義の味方
08/02/13 23:20:29 UkjpCQOT
地球を救う正義の味方、今こそ参上!!
URLリンク(seiginomikata.xxxxxxxx.jp)

289:281
08/02/14 17:59:24
無事解決しました。
接続の際にプロンプトにOracle9iとしか表示されないのでSEのようです。
また、インストーラ起動でパッチの確認も出来ました。
ありがとうございました。

290:NAME IS NULL
08/02/18 05:28:37
oracle 10.0.1 + VB.NET2003 ストアドプロシージャの実行について質問です。

以下の内容でVBからプロシージャを実行しようとすると、
Parameter 'out_1':No size set for variable length data:String
というエラーになってしまいます。
SQL*Plusからプロシージャを実行すると正常に動作します。
原因がわからないのですが、わかる方いらっしゃったらご教示お願いいたします。


■以下、PL/SQLプロシージャ定義

CREATE OR REPLACE PROCEDURE HANTEI(
IN_1 IN CHAR,
IN_2 IN CHAR,
IN_3 IN DATE,
OUT_1 OUT CHAR,
OUT_2 OUT CHAR)
IS
BEGIN
 処理内容;     
END;
/


■以下、VB.NET側

Dim OraCmd As New OracleCommand
OraCmd.Connection = Me.Conn

OraCmd.CommandText = "HANTEI"
OraCmd.CommandType = CommandType.StoredProcedure

'--引数(IN属性)
OraCmd.Parameters.Add(New OracleParameter("in_1", 'A')).Direction = ParameterDirection.Input
OraCmd.Parameters.Add(New OracleParameter("in_2", 'A')).Direction = ParameterDirection.Input
OraCmd.Parameters.Add(New OracleParameter("in_3", 'A')).Direction = ParameterDirection.Input
'--引数(OUT属性)
OraCmd.Parameters.Add(New OracleParameter("out_1", OracleType.Char)).Direction = ParameterDirection.Output
OraCmd.Parameters.Add(New OracleParameter("out_2", OracleType.Char)).Direction = ParameterDirection.Output


Try

'ストアドプロシージャ実行
OraCmd.ExecuteNonQuery()

291:NAME IS NULL
08/02/18 05:49:38
と思ったら事故解決しました。
ありがとうございました。寝よう・・・・

292:NAME IS NULL
08/02/18 22:37:09 IYQvJAZb
Oracle9i上で、ViewがViewを5段階くらい呼んでできてるViewがあるのですが、
開くのに一日かかるため、実行速度の改善をしたいと思っています。
実行計画を見るとFULLアクセスしているテーブルが多いのですが、
Viewの先のViewの先のViewの先にようやくテーブルがあり、ヒントの
当て方がいまいち・・・。
そこで、ためしにOracle10gに乗せて、EMのSQLチューニングを実行したところ、
SQLプロファイルが適用されて、10分程度で開くようになりました。
このSQLプロファイルと同等のものをOracle9iに展開したいのですが、
どうにもやり方がわかりません。なにか方法あるでしょうか?

293:NAME IS NULL
08/02/19 00:06:12 U5+TvUAj
シノニムでOK.
あるいはえんたープライズマネージャでいけるよ。がんがれ。

294:292
08/02/19 21:47:25
>>293
レスありがとうございます。
でも、ダメでした。
もう逃げます。

295:NAME IS NULL
08/02/19 23:23:04 moGfOmeq
質問です。ざっくり概要を言います。
シーケンスを使っているテーブルA、そのカラムA
テーブルBのカラムBにはカラムAの値を入れる(FK制約はない)
新規データ登録処理で以下のような処理を読み込みデータ分ループしてます

for(---------){
INSERT INTO テーブルA(カラムA)VALUES(xxx.NEXTVAL)
SELECT xxx.CURRVAL FROM DUAL
INSERT INTO テーブルB(カラムB)VALUES(上のSELECTで取得した値)
}
という感じ
キーとなる項目以外省略しました。xxxはシーケンス。
これを同時に複数起動したらカラムAとカラムBの値がずれると言われました。
複数起動を考慮した場合どのようにするのが一般的ですか?
先にNEXTVALをSELECTしておくとかでしょうか・・・

296:NAME IS NULL
08/02/19 23:50:41
ずれなかったような気もするけど自信ない。
でもそういう時はずれても良いようにすればよい。
for(---------){
SELECT xxx.NEXTVAL FROM DUAL
INSERT INTO テーブルA(カラムA)VALUES(上のSELECTで取得した値)
INSERT INTO テーブルB(カラムB)VALUES(上のSELECTで取得した値)
}
簡単でしょ。

297:NAME IS NULL
08/02/20 00:00:40
Sequenceは一意性のために使うべきであって、連番を保障するものではないのに。
そもそもRollbackしたり、インスタンスクラッシュしたりすればあっと言う間に連番で
なくなるのに、なんでそんなにこだわるの?


298:NAME IS NULL
08/02/20 11:46:08
>>295
insert ~ returningが使えるならselectは入らない

299:NAME IS NULL
08/02/21 10:26:36
ショボイ質問ですみません。
sqlldrは制御ファイル無しで実行する事は可能でしょうか?
ORACLE8です。

300:NAME IS NULL
08/02/21 11:46:01
無理だったと思う。
というか、入力のどの部分をどの列に入れるといった指定がないと使う意味がないと思う。

301:NAME IS NULL
08/02/21 11:58:36
>>300
ですよね・・。
ありがとうございます。
制御ファイル書いてきます!

302:NAME IS NULL
08/02/21 13:49:57
rawデバイスを増やしたんで、Oracleに使ってもらえるように
設定したいんだけど、どこをいじればいいんだっけ?

303:NAME IS NULL
08/02/21 23:56:31
>>304

それだけの情報で理解しろというのが無理だろ。
そもそもO/Sはなんなんだ?
Oracleは直にRaw Deviceに書き込んでいるのか?
それともASM経由で書いているのか?

304:304
08/02/22 08:34:42
>>303

304だが。誰に言ってるんだ。



305:304
08/02/22 10:04:25
>>303
>Oracleは直にRaw Deviceに書き込んでいるのか?
>それともASM経由で書いているのか?
これってどこ見ればわかるんだっけ?

306:NAME IS NULL
08/02/22 11:09:57
sqlldrで使う制御ファイルを始めて書くのですが
記述はこれであってますかね・・。
理由があって聞く人も居ないのですが、カラム一個だけのデータを
ローダ使って読み込めという指示でして・・。
ORACLE8iです。

OPTINS
(DIRECT = TRUE)
LOAD DATA
(
INFILE AAA.dat'
BADFILE 'AAA.bad'
DISCARDFILE 'AAA.dis'
INSERT INTO TABLE 'EMP'
FIELDS TERMINATED BY ","(CLUM_A)
)

307:NAME IS NULL
08/02/22 11:32:06
>>306

それは試してないけど、マニュアルを読めばわかるんじゃないの?


308:NAME IS NULL
08/02/22 11:34:52
>>307
そうですね・・。
ありがとうございます。

309:NAME IS NULL
08/02/22 23:56:45
>>305

v$datafile見れば分かるだろ?
ファイル名が+から始まっていれば、ASM経由で書いていることになるし、
そうでないのならRAW Deviceで書いてるんだろ。
それにASM経由で書いているのならプロセスで+ASMというのが沢山
あるんだから一発だろうが。

310:NAME IS NULL
08/02/24 04:18:38 iudEaq2G
ストアドファンクションやらパッケージのサブプログラムが参照している
テーブルを列レベルまで調査するにはどの方法が良いでしょうか?

基本は①USER_DEPENDENCIESでテーブルレベルの目星を付けて
②USER_SOUCEで該当のソースコードを目で確認 するしかないでしょうか。
シノニムやビューを挟んで間接依存していたり、リモート参照していたりする子も多いので、
DEPTREE、IDEPTREEでは役に立たない場合もあります。

このような調査を行ったことがある方、ご存知の方、見当がつく方、宜しくお願いします!
環境はUNIXのOracle9iです。


311:NAME IS NULL
08/02/24 23:37:44
sp_dependsとかなかったっけ?

ところで自分も質問があります。
Pro*Cで書かれたDB操作共通関数(ConnectやFetchなど)を利用している
Cのモジュールがあるとして、
その処理をCsh+SQL*Plusで代替することは可能なのでしょうか?
Pro*Cの関数部分だけをCsh+SQL*Plusにしても
トランザクションが継承出来そうにないので無理だと思うのですが…。

312:NAME IS NULL
08/02/27 00:30:31
質問があります。
いまさらですがOAS4.0.8を乗せ換えようとしてます。
新しい環境だとカートリッジに登録したJSERVLETアプリケーションが
起動しません。何か特別な設定があるのでしょうか?
手順書のPDF通りにしているのですが・・・。

WWWリスナー経由でほかのPCからだとJAVAアプリが実行できるのが
そのPCだと起動しないのが原因なんでしょうか?


313:NAME IS NULL
08/02/27 09:44:08
select * from a, b, c, d
where a.code = b.code
and b.code = c.code
and c.code = d.code

をinner joinを使って書きたいのですが

select * from a
inner join b on a.code = b.code
inner join c on b.code = c.code
inner join d on c.code = d.code

としてみたのですが取得する行が
inner joinの方が多いのです。
上のSQLと同じ結果を返すにはどうすればよいでしょうか?

314:NAME IS NULL
08/02/27 11:25:22
select * from a
inner join a on a.code = b.code
inner join a on b.code = c.code
inner join a on c.code = d.code

じゃだめだっけ?

315:NAME IS NULL
08/02/27 11:26:02
select * from a
inner join a on a.code = b.code
inner join a on a.code = c.code
inner join a on a.code = d.code
こうか・・

316:NAME IS NULL
08/02/27 23:19:04 qnNBcgIv
問い合わせ結果をSPOOLでCSV出力するコードなんですが
下記clum_aの重複行を表示しないようにしつつ、全ての列を表示したいのです。
簡単に言えば特定列でのDISTINCTなんですが、調べてもDISTINCTで一つのカラムのみ、
またはGROUP BYを使っての集計しか出てきません
サーバの都合でUTL_FILEが使えない(サーバ設定には変更を加えられない)ため
PL/SQLでCURSORを使う方法は無理かと思われます
長くなりましたがお願いします

--テーブル table_name
clum_a culum_b
_________
target 1
target 2
target 3
not_target 1
not_target 2
aiueo 1


SQL*PLUS
___________
SPOOL OUTPUT.csv
SELECT * FROM table_name
WHERE colum_a = 'target';
SPOOL off

317:316
08/02/27 23:24:23 qnNBcgIv
すみません 半角スペースは詰められるんですね

書き忘れです
・clum_aはVARCHAR2 culum_bはNUMBER
・追加条件;重複行がある時はclum_bの最大値の行を選択する

318:NAME IS NULL
08/02/28 02:01:29
GREATESTで出来そうな気もするけど
手っ取り早いのはサブクエリでcolumn_a='taget'のMAXcolumn_b)を
とってくれば…

319:NAME IS NULL
08/02/28 22:09:22
distinct と同時にROW_NUMBERを返して相関してやるんじゃダメなんけ?

320:NAME IS NULL
08/02/28 22:13:16
ROW_NUMBERじゃなくてROWIDか(^^;

321:NAME IS NULL
08/03/01 15:34:54 lw4GEawQ
DATE型の項目に
年月日時分秒で範囲指定をしたいのですが
どのように書けばいいのでしょうか
TMP > 'YYYY:MM:DD HH:MM:SS' 形式ではエラーがでてしまいます。

322:NAME IS NULL
08/03/01 16:55:55
>>321

バージョンとどのエラーが出るのかがわからないと答えようがないが、
TO_TIMESTAMP() ではどうだ。


323:NAME IS NULL
08/03/01 16:56:21
あ。DATE型なのか。TO_DATE() な。


324:NAME IS NULL
08/03/01 17:45:59
TMP > TO_DATE('YYYY/MM/DD HH:MI:SS', 'YYYY/MM/DD HH24:MI:SS')
でいけました。ありがとうございます。

325:NAME IS NULL
08/03/03 22:32:00 5tZy63eQ
項目A(3バイト)、項目B(6バイト)

(更新前)
AAA,BBBCCC
AAA,BBXCCC
AAA,BBPCCC

(更新後) ← このようにしたいです。
AAA,BBZCCC
AAA,BBZCCC
AAA,BBZCCC

目的は、項目Bの頭3バイトだけを”BB*”で条件に指定して、
項目Bの頭3バイトを全て”BBZ”に更新したい場合どうすればよいのでしょうか?
項目Bの後3バイトの”CCC”はそのまま残さなくてはいけないため、
どのようなSQL文にすれば良いのかわかりません。

どうしても後3バイトを生かしたままの更新なので。。。。困ってしまします。

お知恵をお貸しください。

326:NAME IS NULL
08/03/03 23:28:47
マルチには答えない。


327:NAME IS NULL
08/03/03 23:43:52
ヒントぐらい教えてやろう。

select substr(c2,1,2)||'Z'||substr(c2,4,6) from
hoge where substr(c2,1,3) like 'BB_';

後はPL/SQLなんかで回せば?

328:NAME IS NULL
08/03/03 23:58:48 5tZy63eQ
>>326 すみません。でも、明日までの納期でした・・・・
    他に詳しいスキルをもってる人間な皆無でした。。。

>>327 ありがとうございます。PL/SQLのスキルは解読できるくらいで、
    製造はできないレベルです・・・

329:NAME IS NULL
08/03/04 00:41:49
スキルのない人達だけでプロジェクトを進めたのが原因なら純粋にマネジメントの
問題だろ?
顧客には素直に謝るしかないじゃない?

330:NAME IS NULL
08/03/04 11:53:52
スキルも糞も、アップデート文1行で行けるかと

331:NAME IS NULL
08/03/04 12:19:54
もう間に合わないだろうし、飯暖める間に暇つぶしに書いたので
動くかどうかしらんが・・
これじゃダメかな?
え?動かない?知るか。
Update hoge t1
 set t1.column_b = (
  select substr(t2.column_b,3,1)||'*'||substr(t2.column_b,5,X)
   from hoge t2
   where t1.p_key = t2.p_key
           )
  where t1.column_b like 'BB%';

332:NAME IS NULL
08/03/04 12:30:18
substr(t2.column_b,3,1・・・
もダメだ・・他不満飲んでくる

333:NAME IS NULL
08/03/09 09:09:48 fDcaGtrr
Oracle Database 10g Express Edition(WindowsXP Pro)
でSQL*Plusに接続したいのですが、
例のログオン画面
・ユーザー名
・パスワード
・ホスト文字列
の入力画面が出てこないのですが、
どのようにすればSQL*Plusに接続できますでしょうか?



334:NAME IS NULL
08/03/09 10:45:22
サービス起動してないんだろ

335:333
08/03/09 13:51:19 fDcaGtrr
自己解決しました

336:NAME IS NULL
08/03/09 14:01:56
sqlplusでASMインスタンスにログインってどうやんの?

337:NAME IS NULL
08/03/09 16:50:33
>>336

ORACLE_SID


338:NAME IS NULL
08/03/10 22:32:51
PHP5でオラクル8のデータを取得すると全角文字が?になってしまいます。
困ってます。(´・ω・`)

339:NAME IS NULL
08/03/11 00:31:51
あっそ。

340:NAME IS NULL
08/03/11 09:30:55
>>338
困っていますで止められても(´・ω・`)
で、質問は?

341:NAME IS NULL
08/03/12 00:42:31
文字コードが違うだけってオチでしょ

342:NAME IS NULL
08/03/12 20:08:57
>>340
?になると見栄えが良くないので、空白等の別の文字に
置き換えたいのですが 可能でしょうか。

343:NAME IS NULL
08/03/12 21:48:09
?をブランクに変換するのは文字列を切り出して?と
一致したら?にすればいいだけだから簡単だろうけど・・・

でも、それでは本質的な解決にならないのでは?
DBとPHPがやりとりする文字コードが合ってないっていう>>341の意見を
聞いて文字コードを確かめたのかしら??php.iniでは何を設定していて、
Oracleには何を設定しているのかね??



344:NAME IS NULL
08/03/13 17:55:38
OracleのシャットダウンをVBScriptで行いたいのですが

以下のコマンドをVBScriptで実行するにはどうしたらよいでしょうか?

Sqlplus sys/password as sysdba
Shutdown immediate
Startup
Shutdown

以上ですがよろしくお願いいたします。

345:NAME IS NULL
08/03/15 16:27:17
>>344
つ「shell関数&バッチファイル&SQL*PLUS&コマンド定義ファイル」


346:NAME IS NULL
08/03/15 23:10:48 vdIcUnbN
GUROUP BY ROLLUP」とか「GROUP ID」「SETS」とかの小計行とか合計行の詳しく解りやすく解説してあるサイトを教えてください。
お願いします

347:NAME IS NULL
08/03/16 11:49:23 2bM+0JgV
家でオラクルの勉強をしようと思い、オラクルを自宅PCに入れたいのですが、
タダで手に入りますか?(勉強版みたいなものはありますか?)


348:NAME IS NULL
08/03/16 14:04:57
オラクルを買うとは豪勢な。時価総額何億ドルくらいかな。



349:NAME IS NULL
08/03/16 15:27:01
Oracle VM を使ってみようかと思うんだが、
Oracle Enterprise LinuxとOracle VMをダウンロード(保守なしなら無料) してインストール
Oracle VM上でゲストOSとしてWindowsサーバを複数セットアップ

上記のやり方でWindowsのOracleDBサーバをまとめられる?
やった人いますか?うまく動きますか?


350:NAME IS NULL
08/03/16 21:21:45
毒餃子でも売ってろよ

351:NAME IS NULL
08/03/16 22:07:38
PCにインストールしたOracleデータベースと別に用意したWebサーバ(Linux)
が通信するためには、LinuxにOracleクライアントがないと
駄目なんっすよね?

そもそも、Linux側で、コンパイルすっからLinux版のヘッダやLibが必要なんだよね、、、

352:NAME IS NULL
08/03/16 22:18:57
>>351

何が言いたいの?

エスパーしてみると Instant Client を使えばいいのでは。
Java なら JDBC ドライバがあればいいけどね。


353:351
08/03/16 22:31:06
説明が下手ですまんす。。。

C言語のAP(Linux)からDB(Linux)にアクセスするにはLinuxにOracleクライアント
が必要なのか聞きたかったとです。

Instant Clientは初めて聞いたので見てみましたが、当方Oracle8i、、、、
ざっとみ、Oracle8のInstant Clientはなかったので、Oracleクライアントを準備しないと
いけないんでしょうかね。



354:NAME IS NULL
08/03/16 23:16:42
Oracle8 と 8i で違うし細かいバージョンでも違うけれども、
URLリンク(www.oracle.co.jp)
を参考に。OCI というのが Instant Client が提供する C の API ね。

8i が 8.1.7.4 より前なら、そこまで更新してからのほうが不具合が少ないと思う。
後はサポートに聞いてねー


355:NAME IS NULL
08/03/18 00:37:22
>>349

DBサーバーをまとめるというのはどういう意味?
RACを構築可能かということ?
OracleのVMではないけど、VMWAREでならGuest O/SをCent O/S 5にして11g
RACを組んで確認した。

356:NAME IS NULL
08/03/18 02:53:03
>>353

9iだったら8iとの下位互換性が保障されているから、9iのインクラ入れれば?

357:NAME IS NULL
08/03/18 21:01:09
>>355
まとめるというのは、たとえば、Aサーバ(AシステムのDBサーバ)、Bサーバ、Cサーバの3台のDBサーバを1台のマシンX上で仮想的に構築することです。電気代、スペースの削減になる。同じ構成を複数構築すれば(X1、X2....)RACみたいなこともできるね。
ぶっちゃけ言いたいことは、VMWAREやXenやVirtialPCとどう違うのってことです。

358:NAME IS NULL
08/03/18 22:30:58
>>357

そういう意味なら可能。
アプリの特性にもよるけど、それなりにメモリー容量とCPUには配慮は必要だろうけど。

ちなみにOracleのVMはXenがベースだよ。

359:NAME IS NULL
08/03/19 00:43:48
オラクル10gについての質問です。

EM使っていろんな管理作業する際に、
OSユーザのパスワード入力が求められることが多々あるかと思いますが、
OSユーザにパスワードを設定していない場合、
パスワード未入力で進めようとすると
「パスワード入力は必須」の旨のエラーが出ます。

回避手段って何かありますか?

360:359
08/03/19 00:48:16
補足ですが、
「OSユーザにパスワードを設定する」以外の
回避策を望んでいます。
よろしくお願いいたします。

361:NAME IS NULL
08/03/19 01:52:12
DBを入れるようなサーバにOSのパスワードが設定されていない
ということ自体が間違い。

回避策としてはEM10gを自分で直すとか。


362:NAME IS NULL
08/03/20 16:53:02
Oracle8で運用されてるシステムってまだそんなあります??


363:NAME IS NULL
08/03/20 18:11:55 vlU0awbG
>>362

どうでもいいようなシステムやOracle8でも運用に耐えれるようなところでは
使っているところはある。
でもサポートは終了しているからそのうち無くなると思われる。


364:359
08/03/20 23:58:24
>>361
確かに普通に考えたらそうですね。

私用PCに学習用としてトライアル版を入れて動かしているので、
特にOSのパスワードを設定しておらず、何か回避策はないかな?
と思い質問してみました。

ちなみに余談ですが、以前以下のようにしてみたところ、
レジストリの不整合が原因か、マシンが立ち上がらなくなって
しまいました。

・OSパスワード入力が必須だと気づく
 ↓
・OSパスワードを設定
 ↓
・EMで優先接続情報(パスワード)の設定
 ↓
・OSパスワードを無効

(データベースの本質とは無縁のところの説明ですので、
読み飛ばしてもらっても結構です。)

365:NAME IS NULL
08/03/26 00:08:29
Oracle10gを新しくインスコし、一からDBを作成してみようかと思っています。

ツールなどを使わずにSQLのCreate DataBase文から作ってみようかと
思っているのですが、そのあたりについて詳しく書かれているサイトなどありますか?

366:NAME IS NULL
08/03/26 00:42:31
>>365

マニュアル「Oracle Database 管理者ガイド」。


367:NAME IS NULL
08/03/26 16:32:05 77YWGQXO
他人が書いたストアドプロシージャを見ながら勉強している初心者です。
DB環境はLinux+Oracle10gで、アプリケーションがRuby+sqlrelayです。

あるプロシージャを実行すると
person1,male,age1
person2,female,age2

みたいな結果を返したいとします。

で、もらったプロシージャでは、この結果をプロシージャの中でdbms_output.put_lineを使って一行ずつ出力し、
アプリケーションから新たにdbms_output.get_lineクエリを発行して結果を取得、
アプリケーションで結果行をパースしているのですが、
これって一般的なのですか?

ネットで調べると「dbms_outputパッケージはデバッグ目的で使います」みたいなことが書いてあるので、
通常の結果の受け渡しに使っていいのか疑問なのです。

# sqlrelayのfetch_rowみたいな関数も動かないし...

もっと調べると「そもそも結果を返すんだから、プロシージャじゃなくてファンクションなんじゃないか?」
とかも思うのですが…
どうなんでしょうか?

的外れなことを言っていたらすいません。
識者の皆さん、よろしくお願いします。


368:NAME IS NULL
08/03/26 17:31:49
試験番号1zo‐311j
oracle master silver
oracle application server10g
ってのを取れって言われちゃったんだけど、何がなんだかわからんw

これって黒本売ってないの?
まったくわかんない状況なんで些細なことでもいいのでわかる人情報ください。

泣きそうですw

369:NAME IS NULL
08/03/26 19:44:50
>>368

馬鹿には教えてやらない。勝手に泣け。

370:NAME IS NULL
08/03/27 00:37:36
>>367
表関数とかテーブルファンクションとかで調べてみたら。


371:NAME IS NULL
08/03/27 00:44:37
>>367

ちょっと google ってみたけど
URLリンク(homepage2.nifty.com)

こんな感じのことを標準出力に出せればいいということかなぁ。

どうもやりたいことがよくわかんない。


372:NAME IS NULL
08/03/27 02:37:32
>>365

取りあえずDBCA起動して、スクリプトだけでも吐き出して貰えばいいじゃん。
でもって、その中身を見て勉強すると。
最近のDBCAはそこそこ使える用になったよ。
一昔前まではバグだらけでイライラさせられていたけどな。

373:NAME IS NULL
08/03/27 03:35:08
>>372

でも結局管理者ガイドを読まないと意味不明だと思うよー


374:NAME IS NULL
08/03/27 09:56:21
Oracleのマイグレーションをやっている者です。
出先でも開発できるように、中古のノートPCに
coLinuxとOracle10gR2試用版を入れようと思ったのですが、
システム要求条件の高さに驚きました。

もっと小さな環境でも入れられる、古いOracleの試用版を
手に入れる方法はないものでしょうか?

375:367
08/03/27 13:45:33
>>370
表関数!そんなものもあるのですね。
ありがとうございます。

>>371
説明がうまくできなくてすいません(´д`;)

やりたいことは単純なことで、プロシージャでSELECTした結果(複数レコード)をrubyスクリプトに渡したいのです。

自分が気になっているところは、
「複数レコードの受け渡しは標準入出力経由でいいの?IN/OUTパラメータみたいに専用の仕組みがあるんじゃないの?」
ってところです。

oracle内のデータのやり取りでなくて、外部プログラムへのデータの渡し方なので、もしかしたらスレ違いの質問なのかもしれません。
プログラム板のデータベース関連で聞いたほうがいいのかな…


376:NAME IS NULL
08/03/27 17:32:57
oracleの試供版をダウンしようと思ったんですが、
オラクルのHPからいつまでたってもリンク先に飛びません
どういうことなんでしょう?

ちなみに他のHPは普通に見れます



377:NAME IS NULL
08/03/27 18:54:52
>>376

ダウンって SHUTDOWN ABORT のこと?
オラクルのHPというのはHPがアライアンスパートナーとして売っているOracleのこと?
でも試供版なんだよねぇ。。

リンク先に飛ぶというのはEMで操作してるのかな。
何を言ってるのかさっぱりわからん。


… 釣られてみたよ。


378:NAME IS NULL
08/03/27 21:42:04
え?普通にホームページからダウンしようとしたんじゃ?彼。
ダウンする時、ログインするためにウィンドウが別窓として出て
そのウィンドウに気づいてなく、一向にダウンロードが始まらないとか。


379:NAME IS NULL
08/03/28 02:22:47
>>374
Oracle10g Express Editionでも入れたら?
普通に10g入れるよりは若干軽いよ。
っていうか古いバージョンでもそれなりにメモリもCPUも食う。

380:NAME IS NULL
08/03/28 02:35:41
>>376

U.S. OTN、たまに腐っているよ。
諦めずに何度もトライ!

381:NAME IS NULL
08/03/28 12:34:38
>>377-378
説明不足すみません
URLリンク(www.oracle.com)
に飛んで右の方FEATURED DOWNLOADSの下で
11gクリックしてもダウンロードが始まりません
ファイアフォックス使ってまして、いつまで経っても
タブの部分に輪っかがグルグル回っていて、画面が変化しません

382:NAME IS NULL
08/03/28 13:06:07
>>381
ダウンロード可能なファイル名が書かれてある上にある
"ライセンス規約への同意"のラジオボタンをチェックし忘れている予感

383:NAME IS NULL
08/03/29 12:48:02
>>381

良く分からんから、取りあえずここからダウソしろよ。

URLリンク(www.oracle.com)

ちゃんと上のライセンス規約で「accept」を選んでからリンクをクリックしろよ。


384:NAME IS NULL
08/03/30 14:57:43
Oracleの人から検索対象が全体の5%以上ならFullScanの方が早いと
聞いたのですが本当ですか?
あとindex作っても使用してくれないのでヒントがかかせません
これ普通ですか

385:NAME IS NULL
08/03/30 18:25:01
>>384
パーセンテージは諸説あるが割合が一定以上ならそのとおり。
索引の使用についてはプランを調べてみる。ケースによる。

386:NAME IS NULL
08/03/31 06:42:50
>>384

ちゃんとAnalizeしていれば索引を使ってくれる方が多いと思うけど?

387:NAME IS NULL
08/03/31 23:31:14 G8a55WHb
Oracle XEで新規でデータベース作った後に
Webの管理画面がでなくなりました。
APEX入れ直さないとでないんでしょうか。

388:NAME IS NULL
08/04/01 02:16:55
>>387

emctl status dbconsoleを試してみてNot runningとか出ているのならemctl start dbcosoleで
起動させろ。

389:NAME IS NULL
08/04/01 14:05:40 NRBC4VGC
お世話になります
トリガよりストアドパッケージを呼び出し
その中であるテーブルのレコードを取得し別のテーブルに挿入しています
データ量が多いときと思われますが
ORA-01013: ユーザーによって現行の操作の取消しが要求されました。
のエラーが出ています
ODBCやADOでタイムアウトの調整等はよく聞くのですが
ストアドパッケージでこのエラーの対処法はありませんでしょうか?

OS:Windows2003Server
DB:Oralce9i

よろしくお願いいたします

390:NAME IS NULL
08/04/01 22:58:05
それタイムアウト?

391:NAME IS NULL
08/04/02 10:41:41
アラート見るとORA-600出てそうな希ガスwww

392:NAME IS NULL
08/04/02 11:35:29
ORA-600だったら死亡フラグw。

393:NAME IS NULL
08/04/02 23:56:35
まあ、待て。
ORA-7445かも知れないじゃまいか。

394:NAME IS NULL
08/04/03 11:30:43
>>393
何の気休めにもならないwww

395:NAME IS NULL
08/04/06 22:28:30 KZufWnQN
オラクルって無料版あるのですか?

396:NAME IS NULL
08/04/07 21:16:23
初心者です。
別のサービスからテーブルをインポートしたいのですが、
調べるとダンプファイル等と書いてありやり方がわかりません。

user/pass@serve1
のzzx1というテーブルを

user/pass@serve2
にインポートする方法を教えてください。

397:NAME IS NULL
08/04/07 22:21:46
@

398:NAME IS NULL
08/04/07 22:28:22
初心者ですと書けば何でも手取り足取り教えてもらえるかと思えば
大間違いだ。

exp と imp のマニュアルくらいちゃんと読め。


399:NAME IS NULL
08/04/07 22:58:25
>>396

Versionぐらい書け。
10g以降ならDatapumpという手もあるんだから。

400:NAME IS NULL
08/04/07 23:11:17
Version・・・
すみません今はわからないです
ダンプファイルってバックアップですよね?

バックアップってテーブルの名前を変更するだけじゃ不十分なのでしょうか?
明日中に終わらせないといけないのでマニュアル探す余裕がなかったので・・・
ごめんなさい。

もし違っていたらすみません。
expでダンプファイルをエクスポートして
それをimpでインポートすることでテーブルが作成されるんでしょうか?


401:NAME IS NULL
08/04/08 00:42:52
だーかーらー

明日中に終わらせないといけないんだったらここで聞くんじゃなくて
マニュアルを読め。それがどう考えても一番早い。

exp したダンプファイルを imp すれば確かにテーブルのデータの移動はできるけど、
お前には無理だろう。

お客さんには上司にお願いして謝ってもらえ。


402:NAME IS NULL
08/04/08 00:47:07
オマイがやりたいのは多分create table asだ
詳しくはググれ

403:402
08/04/08 00:49:18
ああ、スマン>>400しか読んでなかった。
imp/expであってる

404:NAME IS NULL
08/04/08 00:57:51
>>402

どうかな?
俺も最初はそう思ったけど、接続子がserve1からserve2に変わっているから
対象DBが違うと判断したぞ?

DB1(serve1)にて
exp user/pass tables=zzx1 rows=y file=hoge.dmp direct=y compess=y

DB2(serve2)にて
imp user/pass full=y rows=y ignore=y file=hoge.dmp

これでいいだろ。



405:NAME IS NULL
08/04/08 09:13:57
DBリンクで流し込めば?

406:NAME IS NULL
08/04/08 10:50:17
>>404

すぐ答えを教えちゃだめだよー
ちょっとオプションが間違ってるけど。(compess → compress)

ああいう奴はまたちょっと困ったら簡単なことでも聞くに決まってる。

仕事でやってるというのに、ダメなエンジニアもどきが氾濫すると
我々の仕事がますますなくなっちゃうじゃない。


407:NAME IS NULL
08/04/08 19:55:04
>>404
どうもありがとうございます。
助かります。

>>406
私は事務員ですから。
人手が足りなくて開発のお手伝いしてます。
ひどい言われよう・・・


明日会議に出してあさってリリースします。
ありがとうございました。

408:NAME IS NULL
08/04/08 21:56:12
事務員でも調べることは調べないとだめでしょ。
自分の仕事なんでしょ?

高い金だして Oracle を使うようなデータベースだったら、
その中身も重要なデータなんだろう。
ちゃんとわかっている技術者に扱わせたほうがいいんじゃないのかね。

そういうところから情報漏洩とか誤操作とかの被害とかが起こるんだよ。


409:NAME IS NULL
08/04/08 22:38:06
>>408
反論はありますが愚痴になるので控えます。
おっしゃる通りなのですが、上の方針ですので。
経験ないぶん時間はかかりますが
データの重要性等は理解しているつもりなので、
誤操作ないよう念には念をでバックアップや
チェックはしてもらおうと思います。

410:NAME IS NULL
08/04/08 22:44:06
まぁ、がんばれ。
無能な上司と一緒に土下座するのもいい経験だろう。

411:408
08/04/08 22:53:52
おっ。同意してくれる人がいた。

俺もただ罵倒したいだけじゃないよ。
魚の釣り方を教えてやりたいだけだ。


412:NAME IS NULL
08/04/08 23:01:13
なんというか、
こんなこというのはおかしいのかもしれませんが
「これは私のやるべき仕事ではない」
と思います。
次は絶対に引き受けないようにしようと思います。
いい経験になりました。

システムの製造は終わったので明日手順の確認をして
無事リリース完了させます^^


413:NAME IS NULL
08/04/08 23:04:13
あんたらエスパーすぐるww

414:NAME IS NULL
08/04/08 23:17:34
>>406

まあ、typoはご愛嬌ということでw

exp/imp如きは別に技術でもなんでもないから、教えたところで
何の支障もあるまいて。
ダメにエンジニアもどき如きが決して追いつくことが出来ない技術を
身に着けてナンボの世界っしょ。


415:NAME IS NULL
08/04/09 20:25:32 CidHgDxH
SQLの取得方法で質問です。

以下のデータが存在するとします。

ID | KINGAKU
-------------
0001 | 1000
0002 | 2000
0003 | -1000
0004 | 3000

このときIDの0001と0003で0(ゼロ)になるため抽出結果から省きたいのです。
0001と0003は打ち消しになるので抽出する必要はない、そういうことです。
要は一度その金額で購入したのですが、その後検査でNGになったので返却する
のでプラマイゼロになるので、その分の表示の必要はないとのことです。


SQLの抽出結果は

ID | KINGAKU
-------------
0002 | 2000
0004 | 3000

となるようにしたいのですが、何か良いSQL文を生成出来ないでしょうか?


416:NAME IS NULL
08/04/09 20:40:12
0005 | -1000
とか
0006 | 1000
てのもあったらどう打ち消すんだ?
それともKINGAKUはuniqueか?

417:NAME IS NULL
08/04/09 20:40:41
imp/expはむしろ指示した人間がスクリプト書いて
「これ流しといて」とかが正しいと思うけどな。
事務の人間に覚えさせる気があるなら別だけど。

>>415
テーブルの設計が間違ってて、相殺フラグを持たすべきだと思うけど。

ID | KINGAKU
-------------
0001 | 1000
0002 | 1000
0003 | -1000
0004 | 3000

とかだったら0001と0002のどっちを表示してどっちを消せばいいのかわからんし

418:417
08/04/09 20:44:40
ああ、かぶった。
仮に金額が一意であれば

SELECT * FROM TABLE A
WHERE A.KINGAKU > 0
AND NOT EXISTS
(
SELECT * FROM TABLE B
WHERE B.KINGAKU = (A.KINGAKU * -1)
AND B.KINGAKU < 0
)
とかかな。

419:NAME IS NULL
08/04/09 21:24:32
事務員だから、初心者だから優しく教えてよね

か・・・。

420:NAME IS NULL
08/04/09 21:38:13
>>417
こんだけの条件じゃ㍉

あと、マルチやめれ

421:NAME IS NULL
08/04/09 21:39:21
すまね
×>>417
>>415

422:NAME IS NULL
08/04/09 21:46:41
仕様正確に聞いてますか?
id 0004 kingaku -5000とかあった場合ってどういう表示が正解なんですか?
1401?

423:NAME IS NULL
08/04/09 21:48:47
連投スマソ
>>417
そこまでするならジョブでも組んで自動化してくださいw


424:NAME IS NULL
08/04/09 21:56:59
>>423
定期バックアップとか○○流した後バックアップとかなら自動化できるけど
「俺の気が向いたときにバックアップ」はどうしようもないからな

425:NAME IS NULL
08/04/10 22:04:59
SQLServerでいう
select * from table with (nolock)
と同じようにロック掛けないでselectするにはどうしたらいいですか

426:NAME IS NULL
08/04/10 22:31:30
>>425

意味が良く分からんが、SQL serverでnolockというのはどういう
状態なんだ?
ダーティリードさえも許してしまう様な状態なのか?

427:NAME IS NULL
08/04/10 22:38:05
>>426
そうです。許します。

428:NAME IS NULL
08/04/10 22:42:27
いやSQL SERVERでダーティーリードを許すのは
(READ UNCOMITTED)か何かだったと思うが。

429:NAME IS NULL
08/04/10 22:55:26
SQLServerのBooksOnlineによると「ロック ヒントは、セッションの現在のトランザクション分離レベルを無効にします。」とある

430:NAME IS NULL
08/04/10 23:04:27
SQLサーバーの場合はその両方の方法があるで正解。
Oracleの場合はマルチバージョニングが必ず働くから、
READ UNCOMMITTEDとREAD COMMITTEDの区別なく
ダーティーリードは発生しない。

431:NAME IS NULL
08/04/10 23:55:40
>>430
ありがとうございます

432:NAME IS NULL
08/04/12 19:59:11
Oracle9iのPL/SQLで
DELETE文の実際に削除された件数を取得する方法はないのでしょうか?
SQL*PlusでDELETE文を実行すると
『○行が削除されました。』
と表示されますが
削除前後にSELECTでCOUNTし比較ではなく
PL/SQL内からの実行だと何処かシステム変数などに入らないのでしょうか…
SQLCODEやSQLERRMには出てきませんでした。
よろしくお願いします。


433:NAME IS NULL
08/04/12 20:06:10
ROWCOUNT

434:NAME IS NULL
08/04/12 20:26:19
%ROWCOUNTはFETCHの取り出した件数ですよね?

どういう関係があるのかよくわかりません…。


435:NAME IS NULL
08/04/12 20:37:32

そもそも「oracle delete 件数 取得」あたりで検索した上で聞いてるんだろうね。
1件目でROWCOUNTを使った取得がヒットするけど。

436:NAME IS NULL
08/04/12 20:49:09
関係無いけど、「~無い」事を確かめるのはめんどうだね。
「出来る・有る」事ならgoogle先生が簡単に教えてくれるのに

437:NAME IS NULL
08/04/12 21:00:23
職場の端末が外部と接続出来なくて
携帯からなんです…。
PCサイトもメモリが足りなくて表示できませんが
キャッシュのページに少し見えるので試してみますね。

438:NAME IS NULL
08/04/12 21:12:20
>>436
マニュアルに書いてあることも多いけどね。
~は…でのみ使用できます、とか。

>>435
他のDBならともかく、Oracleに関する情報なら
Webにも沢山あるのに、ソレを調べもせず2chに頼るって時点で
視野と見識は推して知るってモンだ。
少なくとも試してみればいいのに。

439:NAME IS NULL
08/04/12 21:24:03
SQL%ROWCOUNTで取得出来ました!
ありがとうございます><

携帯がしょぼくてPCサイトの殆どがメモリオーバーで表示されないんです…。
あと本もSQLの本さかなくて^^;
でも何とか解決しましたありがとうございました!


440:NAME IS NULL
08/04/12 22:12:12
Oracle のマニュアルだけでも見えるところに置いてもらったら。
仕事にならないでしょ。

昔は買うと高かったけど、いまはOTNからダウンロードできるよ。


441:NAME IS NULL
08/04/13 20:30:43
SQL*PLUSで
@ファイル名
として実行するファイルの初期フォルダを設定するにはどうしたらいいですか?
@C:\Documents and Settings\xxxx\ファイル名
のパス部分を省略したいです。

442:NAME IS NULL
08/04/13 21:33:36
>>441

レジストリのSQLPATHをいじる。

URLリンク(otndnld.oracle.co.jp)

何でみんなマニュアル読まないのかなぁ。


443:NAME IS NULL
08/04/13 22:26:34
>>442
ありがとうございます。

444:NAME IS NULL
08/04/15 06:30:20
質問です。
Oracleの10gをPCサーバにインストールして、クライアントを別のPCに
インストールしています。
Pro*C/C++を使って、DBを操作したいのですが、
C/C++の開発環境がサポートしていないためか
うまくいきません。
開発環境は、Visual Studio C++ 2008
です。
2008は新しいので、無理なのでしょうか?
VC++2005や2003だとよろしいですか?
教えてください。

445:NAME IS NULL
08/04/15 07:53:27
>>444
マルチうざ。

446:NAME IS NULL
08/04/15 09:07:42
>>444

何がどううまくいかないのかさっぱり伝わらないではないか。
俺らに一から同じ環境を作って再現させろとでも言うのか。

やはり人間としての初心者だったようだな。
義務教育から出直してきたらいいよ。

半島へ帰れ。


447:NAME IS NULL
08/04/15 09:17:03
Win用のPPCてあんの?
そもそもなんでODBC使わないの?

448:NAME IS NULL
08/04/16 16:41:59
オラクルデータベース8i(8.1.6)にオラクルクライアント9i(9.2)から接続することは可能でしょうか?

449:NAME IS NULL
08/04/16 20:50:26
>>448

URLリンク(www.drk7.jp)


450:NAME IS NULL
08/04/17 03:20:04
Pro*Cに関して質問させてください。
Pro*Cで、引数で渡されたSQL文(カーソル)を実行し、
EXEC SQL DESCRIBE SELECT LISTでsqlda構造体にデータを入れてから
FやTなどの要素を参照して処理を行っているのですが、
この処理をベタなC言語+ODBCで代替することは可能なのでしょうか。

なんとなくSQLExecDirectを実行するまでは分かるのですが、
そこから自前でsqlda構造体にデータをセットする手段がわからないのです。
(特にデータ型を判別してT[]にセットすべき内容と方法)

Pro*Cで作ったライブラリとCとでsqlda構造体を介してのやり取りをするのは
やはり難しいのでしょうか?


451:NAME IS NULL
08/04/17 08:36:52
できちゃえば簡単なこと。
できなければ難しいこと。ただそれだけw

452:NAME IS NULL
08/04/17 17:54:15 Peraqhsc
SELECT A1
SUM('08-04-12' THEN 1 ELSE 0 END) "4月分",
(以下ry)

のときに日付指定じゃなくて月指定で出すにはどうしたらいい?
ちなみにDate型なんだが…

453:452
08/04/17 17:59:01 Peraqhsc
サーセン間違えたw
SELECT A1,
SUM( CASE WHEN SCORE_DATE = '08-04-12' THEN 1 ELSE 0 END) "4月分",

の間違い、ほんとすまん。

454:NAME IS NULL
08/04/17 22:30:46
>>453

SELECT A1,
SUM( CASE WHEN TO_CHAR(SCORE_DATE,'YY-MM') = '08-04' THEN 1 ELSE 0 END) "4月分",


455:452
08/04/18 09:12:48 eVdze1//
>>454
ありがとう、無事実行できた!

456:NAME IS NULL
08/04/19 07:03:59
誰か助けて!!

親テーブルがあって、それに子テーブルが7つくらいぶら下がってて、
子同士は紐付かないようなテーブルに対して、ユーザがwhere条件を自由に
書けるようなCSV出力画面を作っているのです。

それで、子のデータは親1件に対して複数件あるため、
子項目の場合はコロンで区切って、1行にするという仕様です。
(子が何件あろうが、親の件数=CSVの行数になる)

これを、1回で抽出してくるって無理ですよね・・・
子同士に関連が無いので、子の行数を次々乗じた件数が取得されちゃいますし。
AP側でテーブルを個別に抽出するにしても、whereを自由に書けるのが
癌で、この評価をAP側でやるのも、どうしようという状態で。。

例えば
where oya.pkey = ko1.pkey and oya.pkey = ko2.pkey and
((ko1.fld1 = 1 or ko2.fld1 = 2) and ko1.fld3 = 3)
とか、これを各テーブル個別に持ってきて、自力評価しか
ないんでしょうか・・・。

457:NAME IS NULL
08/04/19 11:31:23
結合キーを受け取り、コロン区切りの値を返す関数を作っておけば
SQL1回で取れる

458:NAME IS NULL
08/04/19 11:34:26
ああ、where句を自由に書けるなら
「where句を受け取ってコロン区切りの値を返す」関数か。

関数は、
受け取ったwhere句を元に動的sqlを組み立てて
それをカーソルでまわしてコロン区切りでくっつけていく感じで

459:NAME IS NULL
08/04/19 12:02:00
ご質問させてください。

パフォマーンスが良い、SQL分がわかりません。
リレーション?よくわかりません^^;

テーブルA.開始番号
テーブルA.終了番号
-----------------------
テーブルB.番号

(したい事)
テーブルB.番号がテーブルA.開始番号~テーブルA.終了番号
の間を検索しヒットさせます。

どのようなSQL文を作成すれば良いのでしょうか?
あまり、外部結合等の経験がないためわかりません。

460:NAME IS NULL
08/04/19 12:26:46
>>459です

テーブル.Aが 5件
テーブル.Bが10件

だったとすると、5x10=50件考えるので
動作が遅くなる?と言われました。

これを リレーション?アクセス使用した事ないので
よくわかりませんが、
外部結合のパフォーマンスが良いベストなSQLはなんでしょうか?(^_^;

461:456
08/04/19 14:08:05
>>458
ストアドファンクション内で動的sqlですか?
これはやったことがありませんが、『カーソルでまわして』ということは、
結局、子を個別に抽出するということですか?where句で
異なるテーブルが混在して書かれていた場合、テーブル間で
条件式を評価する必要があると思うんですが、思いつかない・・・。

>>459
テーブルAが、なんらかの管理マスタのようなもの?でしょうか?
テーブルBが、データテーブル?とするなら、

select テーブルB.* from テーブルB
where EXISTS(select テーブルA.開始番号 from テーブルA
where テーブルA.開始番号 <= テーブルB.番号
and テーブルA.終了番号 >= テーブルB.番号)

とかで、どうでしょう?

462:NAME IS NULL
08/04/19 20:01:31 A1znnPt0
>>461 回答ありがとうございます。
勉強させてもらいます。m(__ __)m
テーブルAはパラメータです。
テーブルBがデータテーブルです。

ちなみに、テーブルAはレコードは1件なのでしょうか?


463:NAME IS NULL
08/04/19 20:59:24
EXISTSは条件に合致するレコードが存在すれば、
真とするってだけなので、件数は何件でも良いと。

464:NAME IS NULL
08/04/19 22:40:57
>>461
select fnc1(where句1),fnc2(where句2),fnc3(where句3)…
from oya
(fnc1は子テーブル1から取得、fnc2は子テーブル2から取得…)
とかそんな感じで。



465:NAME IS NULL
08/04/20 01:11:02
それはちょっとマズくないか?
>>461のSQLが何から走ってるのかわからんし。

466:NAME IS NULL
08/04/24 21:34:13
day
----
1
2
3
...
31

上記のような問い合わせをSQLから取得したいのですが、簡単な方法って無いでしょうか?
自分だと

SELECT 1 FROM DUAL
UNION
SELECT 2 FROM DUAL
UNION
SELECT 3 FROM DUAL

って感じになってしまいます(汗

やりたいことは日付毎に適当な列を結合した表を得たいのですが、
データが存在しない日も列の値がNULLの状態で取得したいんです。

day col1 col2 col3
--- --- --- ---
1 100 101 102
2 null null null
3 null 101 null
... ... ... ...
31 100 200 300

467:NAME IS NULL
08/04/24 22:49:48
>>466

('A`)つcase

468:NAME IS NULL
08/04/25 00:13:43
日付のテーブル作ったほうがはやそう

469:NAME IS NULL
08/04/25 01:59:58
|ー゚)つ PL/SQL

470:NAME IS NULL
08/04/28 20:34:11
全部の検索条件がLikeのあいまい検索で遅い場合、
バッファキャッシュに乗せて恩メモリで検索させる以外に高速化するにはどういう方法がありますか

471:NAME IS NULL
08/04/29 00:38:46
>>470
Oracle Text

472:NAME IS NULL
08/04/29 00:50:38
oracletextは区分条件の検索とかも可能ですか
分かりやすく解説のあるサイトとかないでしょうか

473:NAME IS NULL
08/04/29 01:09:14
区分条件の検索
というのはどういうものなのか説明してくりゃまいか。

474:NAME IS NULL
08/04/29 01:40:12
HOGE_KBN IN ('1','2','9')とか

475:NAME IS NULL
08/04/29 22:45:34
Oracle XE使ってます。

初期DBのXEを削除して、
文字コードをJA16SJISTILDEとしたXEを作成したのですが
Webの管理画面が見えなくなってしまいました。

同様の現象に陥っている人をチラホラ見かけますが
解決方法が掲載されているサイトは見たことがありません。
解決する方法はあるでしょうか?

476:NAME IS NULL
08/04/30 11:35:14
>>475
単純にOracle Application Expressパッケージが入っていないだけでは?

URLリンク(www.oracle.com)

477:NAME IS NULL
08/05/01 16:09:40
下記のURLの問題と同じものが発生して困っています。
URLリンク(otn.oracle.co.jp)

どなたか解決策をご存知ないでしょうか?
よろしくお願いいたします。


478:NAME IS NULL
08/05/02 03:52:50
>>477

まあ、バグにヒットしてるんでしょう。
TAR開くなりなんなりしないとダメっしょ。

479:NAME IS NULL
08/05/02 09:35:55
>>478
やはりそうですか・・・

とりあえずREGEXP_INSTRで逃げてみることにしました。

480:477
08/05/02 14:54:47
テーブルを作り直したらエラーが出なくなりました。

481:NAME IS NULL
08/05/02 15:16:03
REDOログファイルとアーカイブログファイルの違いがわからない・・・・
なぜわざわざ別の存在にしてるんだ

482:NAME IS NULL
08/05/02 15:35:50
SQLPLUSを起動して、あるSQL文を実行、SQLPLUSを終了
ってことをしたいのですが、どういった方法があるでしょうか?

483:NAME IS NULL
08/05/02 15:48:37
そのままやん?

手で実行orシェルスクリプト。

484:482
08/05/02 15:51:06
すみません、説明が足りませんでした
バッチファイル等による自動実行がしたいです
起動はATコマンドでやるとして、SQLPLUS起動後にどうやってSQL文を実行すればいいのか・・・・

485:NAME IS NULL
08/05/02 16:49:24
@SQLファイル名

486:NAME IS NULL
08/05/02 20:30:49
>>477
PSR含むバージョンとORA-600の引数までわからないと一緒の件とはわかんないでは。
まあそこわかってもTARでしょうけど。

487:NAME IS NULL
08/05/03 16:24:27
>>481
オンラインREDOをアーカイブしたのが
アーカイブログだよ。


488:NAME IS NULL
08/05/04 01:42:48 qNX5EArI
うちのプロジェクトで外結合の(+)演算子を使わない方向で標準規約をつくろう
としたら、一人だけ文句を言ってくるのがいた。
(+)を使わない理由として、Oracle以外に移植できない以外になにを言ったら
納得してもらえるだろうか?

489:NAME IS NULL
08/05/04 01:50:15
間違えやすい

490:NAME IS NULL
08/05/04 03:34:21
>>481

例えば日曜日にデータファイルのバックアップ取って、火曜日にDBがクラッシュして
リカバリが必要だとしよう。
完全リカバリするために必要になるのはどれだい?
火曜日までオンラインRedoだけでリカバリー可能だと思うかい?
普通は日曜日のバックアップを戻して、そこからアーカイブログ充ててDBを
ロール・フォワードして、そしてクラッシュ直前のオンライン・リドログ充てて、完全
回復するだろう?
これで分けている意味は分かったかい?


491:NAME IS NULL
08/05/04 04:01:59
>>488
規約を定める理由があるんだろうから、それを説明すればいいんじゃない?
移植性なら移植性で。
理由をきちんと説明できない規約を押し付けられんのは俺もやだ。
ここで聞いた後付けの理由を説明してもボロを出すだけだと思うがな。


492:488
08/05/04 10:19:35 qNX5EArI
なるほど。
まあ、もともと言い出したのは俺じゃなくて、移植性を考えたり、のちの
バージョンで(+)がサポートされなくなる可能性もあるからってことだった。
ただ(+)表記に慣れてるメンバーにも周知させるためにはもうちょっと説得力
が欲しかったわけです。

まあ(+)って、標準化されてないから、標準化されてるOUTER JOINを使うように
って色んな技術サイトにのってるしな。

493:NAME IS NULL
08/05/04 12:06:07
どうせOracleの方言が多少は残るんだろ?
だったら移植性に説得力がなくなる

OUTER JOINだと文字数が多く視認性が悪い
それに見た目的に直感的ではない

また、Oracleに限って言えば(+)のほうが先に実装されていることもあり
事実上の標準的な書き方だ

後のバージョンで(+)が無くなるなんてどう考えてもありえない
ISOで標準化されていない機能が後々消えるならOracleなんて使い物にならない

494:NAME IS NULL
08/05/04 12:33:16
標準化された書き方と方言の両方が書けるなら
標準化された書き方を優先させたほうがいいと思うけどね。
Oracleばかりやってる人はOracleこそ標準って思ってしまうから
困るよね。

495:NAME IS NULL
08/05/04 15:05:15
>>488
どんな職場でも、標準化に反対する人間は居るよ。
結論としては、そういう人間はプロジェクトからはずすしかないと思う。
オレが関係した職場では、結果としてそういう人間はみんな消えていった。
ちなみに、標準化が進めば進む程、そういう人間の能力のなさが露呈していってたよ。

496:NAME IS NULL
08/05/04 17:10:36
標準化しない事が標準な会社なので、自分が消えようと思います><

497:NAME IS NULL
08/05/04 20:38:30
その程度の方言なら変換カマせば済む。
後々のマイグレーションを想定してたら
Oracleの性能をフルには活かせない。
結局は割り切りだよ。

498:NAME IS NULL
08/05/04 20:54:37
標準化した場合としなかった場合のメリット・デメリットを説明できない奴は信用ならん
標準だからという理由しか持ってこない奴は100%勉強不足

499:側近中の側近 ◆0351148456
08/05/05 10:58:36 jnM8X+/O
>>488
(っ´▽`)っ
そうだなー。
ANSI標準の結合では、USING使えば項目名の羅列で済むし、
結合キーがわかりやすいってことだね。
(+)だと結合キーと抽出キーが同じWHERE句の中だし。
だから、結合キーが漏れてしまう可能性がある。

でも、Oracle9以前では、
(+)を使う理由としては、
ANSI標準の結合にバグが多く含まれるってことが挙げられる。
これさえ改善されればANSI標準の結合を使うんだけどなー。
信頼性が高く求められるシステムでは、
ORACLEでANSI標準の結合は怖くて使えない。

500:側近中の側近 ◆0351148456
08/05/05 10:59:29 jnM8X+/O
(っ`Д´)っ
Oracle自体怖くて使えないってのはナシな!

501:側近中の側近 ◆0351148456
08/05/05 11:01:54 jnM8X+/O
(っ´▽`)っ
致命的なのはFULL OUTER JOINだね。
ORACLEでこれをやろうとすると自殺行為。
今まで(っ´▽`)っはこれのバグを3回ほど発見した。
これほど信頼できない機能はない。

(っ´▽`)っ
でも、(+)だと完全外部結合ができないんだよねー。
いちいち左外部結合と右外部結合の和集合を使わなければならない。

502:側近中の側近 ◆0351148456
08/05/05 11:04:36 jnM8X+/O
(っ´▽`)っ 訂正!
>>501
>ORACLEでこれをやろうとすると自殺行為。

>ORACLE 9でこれをやろうとすると自殺行為。

(っ´▽`)っ
ORACLE 10ではまともになったぽい☆

503:NAME IS NULL
08/05/05 11:07:25
>>477もLEFT OUTER JOINを使っていますが
そのせいでしょうか?

504:側近中の側近 ◆0351148456
08/05/05 11:15:21 jnM8X+/O
>>488
(っ´▽`)っ
そうそう一つ気になった。
>(+)を使わない理由として、Oracle以外に移植できない以外になにを言ったら
>納得してもらえるだろうか?
将来Oracleに移植する可能性が高いの?そういう計画が今あるの?
そりゃ未来は誰もわからないから、可能性としては少しはあるだろうけど。
もしそういう計画なければ優先度は低いよね。
むしろ>>499で言ったようにバグや信頼性、保守性のほうが優先度が高いはず。

"JOIN"でソースを検索すれば全ての結合文を拾えるってのも
保守性が高くなって優先度が高い。
ORACLEの内部結合は(+)も出てこないから結合文だかどうかわからないのだ。

というわけで、考えましょう。

505:側近中の側近 ◆0351148456
08/05/05 11:16:45 jnM8X+/O
>>503
(っ´▽`)っ
LEFT OUTER JOINを使った文から
(+)を使った文に書き換えて実行してみれば?
もしエラーが出なかったらバグじゃないのかな?カナ?

506:NAME IS NULL
08/05/05 13:32:56
>>502
>ORACLE 10ではまともになったぽい☆

URLリンク(www.eygle.com)

507:488
08/05/05 13:35:28 JT7x0CLO
>>504
色々詳しく教えていただき、ありがとうです。

20人くらいのプロジェクトで上(リーダークラス)が決めたことなので、
一人があがいたところでどうにもならないんだけど、そいつにも気持ちよく
OUTER JOINを使ってもらいたかったんです。

複数のテーブルの結合を複雑な条件でするので、書き忘れ、可読性とかも考慮
すると俺はOUTER JOINの方が好きなんだけど、みなさんはどうなんでしょ?

508:側近中の側近 ◆0351148456
08/05/05 15:59:52 jnM8X+/O
>>506
(っ´▽`)っ
Oracleダメじゃん・・・
Oracle10でもANSI結合は使用不可か・・・。

>>507
(っ´▽`)っ
そのリーダークラスの人に
OracleのANSI結合でのバグの多さに対しては
どう対応するのか聞いてみて☆

509:NAME IS NULL
08/05/05 16:41:16
Oracleバグ多すぎ

510:側近中の側近 ◆0351148456
08/05/05 16:49:13 jnM8X+/O
(っ´▽`)っ
しかも、そのバグをOTNで公開してはいけないという
わけのわからんルールだ

511:NAME IS NULL
08/05/05 17:01:31
だからといってANSI結合を使わないっていうのは
日本人として許せないよなぁ

512:NAME IS NULL
08/05/05 20:26:06
JOIN使うのは可読性低いからウチでは禁止

513:NAME IS NULL
08/05/06 13:08:17
11gのトライアル版って30にちたっても使える。資格取得に使いたいのだが

514:NAME IS NULL
08/05/06 17:46:41
後のマイグレーション考慮するなら最初からOracle使わんよ

515:NAME IS NULL
08/05/06 23:38:00
>>513

全部とは言わんが、せめて>>4ぐらいまでは嫁。


516:NAME IS NULL
08/05/07 10:41:50 dyy0ePra
Oracle 9i(9.2) で、パーティションテーブル(約100パーティション、億件レベル)の ANALYZE を ESTIMATE STATISTICS 10 PERCENT で実施。
DBA_TAB_PERTITIONS の LAST_ANALYZED は、ちゃんと日付が更新されているのに、DBA_TABLES の日付が変わらないって、ありえますか?
ちなみに、10万件程度、6パーティションで同じことをやると、DBA_TAB_PARTITIONS、DBA_TABLES 両方の LAST_ANALYZED はちゃんと更新されていました。
どうも腑に落ちなくて…。

517:NAME IS NULL
08/05/07 14:13:26
すいません。質問です。
Oracle10gで「oracle\product\10.1.0\Db_1\server_dbname\sysman\recv\errors\」
に大量のエラーログファイルが出力され、ディスクを圧迫しています。
このエラーログを出力しないようにする。もしくは、
定期的に削除してくれるような設定はありませんでしょうか?
宜しくお願いします。


518:NAME IS NULL
08/05/07 16:05:58
>>517
バッチかWSHで定期的に削除すればいいじゃん。

519:517
08/05/07 17:06:39
>>518
Oracleで定期的に削除してくれる設定がないのかなと思ったのですが・・・

バッチかWSHで定期的に削除するようにしたいと思います。
ありがとうございました。

520:NAME IS NULL
08/05/07 22:11:40 8dIsB95K
>>516

9iからは統計情報収集は、analyze じゃなくて、dbms_stats を使うことを
推奨しているので、dbms_stats を試してみてください。


521:NAME IS NULL
08/05/08 23:16:33
oracleでSUMやMAXなどの集合関数って作れますか!?

ポスグレでは作れるみたいですが。

522:NAME IS NULL
08/05/09 01:17:29
もともとあるだろが

523:NAME IS NULL
08/05/09 01:50:28
Javaストアドで出来たような。使う気にはなれないけど。

524:NAME IS NULL
08/05/09 10:35:45
PL/SQLでVARCHAR2型フィールドの長さを取得する方法ありますかね?
要は任意の長さの文字列をフィールドに収まるよう切り落としてINSERTがしたいんですわ。Ora8i。

525:NAME IS NULL
08/05/09 10:51:32
>>524
SUBSTRB

526:525
08/05/09 10:54:39
取り消し
無い

527:525
08/05/09 10:59:45
誤解連投スマン、PL/SQLのVARCHAR2型の長さじゃなくて
DBの型って事だな…DBMS_SQLかUSER_TABLESディクショナリを見ればわかる

528:NAME IS NULL
08/05/09 23:09:21
>>521
できる。
oracle ユーザー定義集計関数
でググってみ。

>>524
USER_TAB_COLUMNS

529:NAME IS NULL
08/05/09 23:22:50
>>522 >>523 >>528
サンコス!
もう一度調べてみる

530:521
08/05/09 23:25:46
>>528
>oracle ユーザー定義集計関数
でググったら即ハツケソ

これまで探しても見つからなかったのは、ググりかたが悪かった

531:NAME IS NULL
08/05/09 23:28:55
PRO*COBOLでWITH句使ったらコンパイルエラーになった。
動的SQLにしたらコンパイル通った。
WITH句ってPRO*COBOLのプリコンパイラで対応されてないのかな?
ちなみに10g

532:NAME IS NULL
08/05/10 00:46:53
COBOLなんて遺失言語をそもそも知らん。

533:NAME IS NULL
08/05/10 07:11:43
>>531

Precompiler のVersionによっては、未対応のSQLの句が
存在するので、プリコンパイル時にエラーになってしまう。
11gでSQL99構文サポートをしたようなので、
WITH句も対応するようになったかもしれない。


534:NAME IS NULL
08/05/10 08:16:56
>>533
サンクスコ!
sql*plusで対応してるからって
PRO*COBOLでも対応してる訳じゃないんだね!
Oracle自体は8iからSQL92に対応した
って言ってるのにね!

535:NAME IS NULL
08/05/10 15:45:45
そりゃ結局プリコンパイラだからな

536:NAME IS NULL
08/05/11 09:05:35 k9SWGyHP
ロ,バ面の宮腰佳,奈さんお勤めご苦,労様ですwww?[w略]?[w略]
最近.休日は引篭,もってばかりらしい,けど一体何してはるんですかww
その偏屈な面でもマッサー.ジしてはるんですかwwご苦労なこってww.
化粧では顔面の輪郭は誤魔化せませんよww自己アピ.ールも程々にしてくださいねww

537:NAME IS NULL
08/05/18 11:11:09 yw8nn6Dg
.NETとPL/SQLのやりとりについての質問です。

PL/SQL内部で複数のSELECT文を流し、
その結果を配列にセットして、
その配列をOutputするプログラムを作っています。

本当はレコードに格納して返したかったのですが、
レコードは扱えないようなので配列にしました。

.NET側でOutputパラメータの設定をしていますが、
その際、ArrayBindSizeというプロパティを
設定しないといけないみたいなのです。
ところが、何件のデータがとれてくるのか分からないので、
sizeの設定をしようが無いのです。
ArrayBindSizeプロパティをどう設定すればいいのか
ご存知の方いらっしゃいましたら教えてください。
よろしくお願いいたします。

538:NAME IS NULL
08/05/18 11:19:57
>>537
ドライバの種類は?ODPとかMSのでも何種類かあるけど。

539:537
08/05/18 11:26:32 yw8nn6Dg
すみません。ODPです。

540:537
08/05/18 11:28:54 yw8nn6Dg
間違えた。
ODP.NETです。
すみません。初心者なもので。

541:NAME IS NULL
08/05/18 20:17:58
Oracleのパッチってユーザが当てなきゃいけないの
サーポート契約してるのにどうにかなりませんか?

542:NAME IS NULL
08/05/18 21:47:05
>>541

日本語で

543:NAME IS NULL
08/05/19 15:59:33
>>537
多めに見積もるしかない。


544:NAME IS NULL
08/05/19 22:49:53
>>541

ユーザーっつ~か、DBAが普通は充てるもんだけど?

545:NAME IS NULL
08/05/20 09:04:20
アプリケーションから投げられているSQLを収集する方法はありませんか?
Oracle10gです。

546:NAME IS NULL
08/05/20 12:57:55
ある。

547:NAME IS NULL
08/05/20 14:06:40
ありがとうございました

548:NAME IS NULL
08/05/20 23:10:16
>>545

EMやら、AWRやら、ファイングレイン監査やら、幾らでも方法はあるべ。

549:NAME IS NULL
08/05/21 20:42:38
アーカイブログモードで運用するOracle10gを、backupexec v9を使ってバックアップします。
v9にはバックアップ済みのアーカイブログの自動削除機能がないようなんですが、
バックアップ済みアーカイブログを削除するにはどういう手順が必要ですか?


550:NAME IS NULL
08/05/21 22:48:17
それようのジョブを作る、以上。

551:NAME IS NULL
08/05/21 23:22:44
バックアップ済みアーカイブログはどうやって判断しますか

552:NAME IS NULL
08/05/22 00:07:36
>>551

RMANやらせる。

553:552
08/05/22 00:08:14
>>551

RMANに、ね。
詳しくはRMANのマニュアルを参照。

554:NAME IS NULL
08/05/22 00:22:17
backupexec9はrman使わないとか見たんですけど
見間違いかな
明日もういちど見てみます

BE9とRMANで一連の作業はOKという認識でいいですか

555:NAME IS NULL
08/05/22 05:54:49
BEがどうだったか正確には知らんけど、Oracleオプションを買えば、RMAN(リカバリカタログ)連携ができるようになるんじゃね?
ただ、そんなものを使わなくても、rmanのコマンドを垂れ流すスクリプトを書けば大概のことは事足りる。

556:NAME IS NULL
08/05/22 08:37:26

URLリンク(mainichi.jp)
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日~09年4月30日までとなっている。



▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
URLリンク(www.click-sec.com)
URLリンク(www.yomiuri.co.jp)


▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

557:NAME IS NULL
08/05/22 18:02:55
sage

558:NAME IS NULL
08/05/23 02:49:44
>>554

もしbackupexec9がRMANと連携できるのなら、RMANでほとんどの処理が可能。
一度Backup済みのArchivelogを消したりとか、Backup時にArchivlogを消したりとか
幾らでもその辺りは応用が効く様になっている。

559:NAME IS NULL
08/05/23 11:19:18 rSZhI+Oj
tnsnames.oraを上書きしてDBの接続先を変更しようと思います。
DB接続中であってもtnsnames.oraの上書きは可能でしょうか?

【目的】
tnsnames.oraに接続先が2つ定義されており、
そのうち片方のHOST欄(IPアドレス)だけを変更したいと思っています。

【対応方法】
新しいtnsnames.oraを用意して、現行のtnsnames.oraを
上書きしようとしています。

【制約】
ただし、tnsnames.oraを上書きするときに、
アプリケーションが変更対象外の接続先のDB
(上書き前、上書き後、どちらも全く同一のIP)
を参照しています。

【疑問点】
この場合、DBの接続に影響はないのでしょうか。
「コネクトの際にtnsnames.oraの接続文字列を参照するのだから
 コネクトするタイミングさえはずせば特に問題ない」
と思うのですが、
「tnsnames.oraファイルを上書きする際に元ファイルが消えるから
 接続が切れてしまう?」
とも思うのですが…

560:NAME IS NULL
08/05/23 12:52:39
やってみりゃいいじゃん。

561:NAME IS NULL
08/05/23 14:33:34
>>560

それ言ったらこのスレで話されてるほとんどの話題全否定だろ。

562:NAME IS NULL
08/05/23 14:37:34
切れるわけないじゃん。やってみるまでもない。

563:NAME IS NULL
08/05/23 15:25:41
>>561
上書きするぐらい1秒でできそうな事は先にやってみればいいと思う。


564:NAME IS NULL
08/05/23 22:48:15
>>559

tnsnames.oraは接続時に必要なんだから、一度接続が確立されて
しまえば後は何の役にも立っていない。
だからO/Sによっては上書きも問題ない(窓だともしかして掴んで
いるかも?)し、現行の接続も影響を受けない。

565:NAME IS NULL
08/05/25 04:01:51
スレひととおり読んだが、恐ろしくレベルの低い開発者が
結構な数いるのだと知ってびびった。


566:NAME IS NULL
08/05/27 06:47:11
開発者のレベルなんてピンからキリまで。そんな事を知らない無知な奴の技術レベル
も底が見える。


567:NAME IS NULL
08/05/27 21:30:59
パラレルクエリーってパーティション表で無いと無意味ですか?

568:NAME IS NULL
08/05/27 22:03:24
パーティション表でなくてもできる。

569:NAME IS NULL
08/05/28 01:41:05
>>566

意味不明。

まあ、初心者スレってことなんでしょう。ここは。

570:NAME IS NULL
08/05/28 05:00:42 jSJWefUO
>>569
まともなレベルだったら、マニュアルとkrownでほとんど解決出来る。

書くのは初心者、ただし read onlyで他人の間違いを参考にするのはOKだと思う。

571:NAME IS NULL
08/05/31 19:59:29
>>568
いや 567は使って効果あるか聞いてるのでは?
パーティション表じゃないと使っても意味無いよね

572:NAME IS NULL
08/05/31 22:48:52
質問させてください。

oracle 10g のトライアル版をインストールしたら定期的にフロッピーディスクドライブ
にアクセスするようになりました。ぐぐってみたら↓同じ現象の方がおられるようですが、
明確な解決策はでていないようでした。
URLリンク(otn.oracle.co.jp)

この件に関して何か対処法をご存じの方はいますでしょうか?
宜しくお願いします。

573:NAME IS NULL
08/06/01 10:00:40
>>567

無意味でもなんでもない。
巨大な表の全件検索とかにも十分使える。
特に10g以降ではバインドピークによって、全件が選択される事が
良くあるから、そういった場合には有効だな。

574:NAME IS NULL
08/06/01 19:25:42
>>573
9の時はシーケンスに処理されると書いてあったど
10gで変ったのか。勉強たらんな俺

575:NAME IS NULL
08/06/02 00:44:23
もう十年前になるけど。
URLリンク(www.oracle.co.jp)

576:NAME IS NULL
08/06/02 07:53:07
>>575
何年前の資料だろうが、基本は同じだよ。

並列化の効果を最大限に発揮するには、次の特性をすべて兼ね備えたシステムが必要です。
・ SMP、クラスタ、超並列システムなどのマルチCPU
・ 高いI/O帯域幅(高速ディスク、多数のディスク)
・ 十分なCPU処理能力
・ ソートやハッシング、I/Oバッファなどに使用できる、十分な容量のメモリー

…当たり前の事だけど、意外と満足されない罠www

577:NAME IS NULL
08/06/02 11:09:27
>>575
すんげえ寂しいな、そのサイト。
Oracle-HPの方は結構充実しているのに。

578:NAME IS NULL
08/06/03 04:20:47
俺、かつてURLリンク(hp.oracle.co.jp)に所属していたよヾ(o゚ω゚o)ノ゙
結構ディープな検証ばかりしていたな~。
フィードバックセミナーで何人かに会った事があるかもね。


579:NAME IS NULL
08/06/03 05:02:54
好意的に解釈すれば、ファーストターゲットがSolarisだったころはあまり必要なかったということかな。

580:NAME IS NULL
08/06/03 22:14:21
ORACLEじゃないんですが……
HyperionについてORACLE大学での講習を受ける前に
事前に知識を付けておきたいのですけど
他にセミナーとか書籍とかないんですかね?
必死に調べたけど全く見つかりません;;

581:NAME IS NULL
08/06/03 22:24:58 1DFe2Xk7
バッチ処理でsqlplusの実行に失敗したときに異常終了をさせる方法

-Lオプションを使う。
sqlplus -L schema/password@sid @sqlスクリプト

sqlスクリプト内部に問題があった場合

wheneverを使う。

これらの場合はパスワードとスキーマ、接続文字列になんらかの問題があった場合やsqlスクリプト内の構文エラーのときは異常終了させエラー値を拾うことが可能なのですが、
SQLスクリプトファイルの設定や環境に問題があった場合(SQLスクリプトファイルが存在しない、ユーザに読込権限がない)、異常終了させることができません。
sql*plusの接続だけには成功するのでそのままバッチ処理が止まりっぱなしになるという事象が発生します。。

この場合に異常終了させ、エラー値を拾う方法を教えていただけないでしょうか?

582:NAME IS NULL
08/06/03 22:29:54
>>581

Unix系ならshスクリプト内でファイルの存在確認や読み込み権限確認とか
そんなのしておけばいいじゃん。
何でSQL*PLUS内で処理させようとすんのさ?

583:NAME IS NULL
08/06/04 07:43:59
>>581
漏れはヒアドキュメントで書いてたからSQLファイルそのものがなかった。

584:NAME IS NULL
08/06/04 20:32:41
2ヶ月以内にデータベースズブの素人5人を
指示を与えて開発に従事できる程度まで仕上げないと
もれなく自分が死ねる状況になりそうなんですが
どんな風に調教したらいいでしょう?

きっちりMASTERをシルバーくらいまで勉強させるのが良いのか
とりあえず最低限の概念だけ教えて、後は必要な知識やテクだけ詰め込んじまうのが良いものなのか
良い知恵お授けください……

585:NAME IS NULL
08/06/04 20:58:27
>>584
経営者を甘やかせるだけなので
一人で5人相手にするなら素直に死んでください

586:NAME IS NULL
08/06/04 21:55:17
>>584
今アサインされてるヤツラを解雇して、
使える奴を1人連れてくればいい。

587:NAME IS NULL
08/06/04 21:56:21
>>584
外に依頼すれば?
hhURLリンク(www.jsys.co.jp) とか。

588:NAME IS NULL
08/06/05 10:38:44
2ヶ月あるなら何とかなる


と感じてしまうのは漆黒企業に居るからか・・・。

589:NAME IS NULL
08/06/05 21:17:01 OKUDql6p
10gR2なんですが、
スタンバイデータベースを本番データベースにするには
どんな呪文が必要なのか教えてください。

SQL> startup nomount;
SQL> recover standby database;

した後で open (あるいはshutdown して startup) すると
どうも read onlyで立ちあがるようで、
先に進めなくなってしまいました。
8iぐらいの昔のバージョンだと
これで動いてた気がするんですが。

590:NAME IS NULL
08/06/05 22:39:32
SQL> recover managed standby database cancel;
SQL> alter database recover managed standby database finish;
SQL> alter database commit to switchover to primary;
SQL> shutdown immediate;
SQL> startup;


591:589
08/06/05 23:43:58
>>590 さま
助かりました、感謝です!

592:NAME IS NULL
08/06/06 01:11:18
誰も頼る人がいない現場に2ヶ月も放り込めば
必死に何とかしようとして2ヵ月後にはそれなりになってるさ。

とか考えてる経営者はゴロゴロいるな。

593:NAME IS NULL
08/06/06 06:30:58
まぁダメなら辞めるだろうし、代わりはいくらでも居ると思ってんだろうなw

594:NAME IS NULL
08/06/06 07:04:59
>>581

亀レスだが。
WindowsのバッチファイルでSQLPLUSを実行させてる?
だったら、

sqlplus -L schema/password@sid @sqlスクリプト < nul

とすると、あなたの言ってる問題が発生した場合でも終了してくれる。
バッチ処理が止まりっぱなし、って言ってるのは、要は待ち状態に
なっちゃってるってことなんでしょ?

また、SQLPLUSで失敗してるから、ERRORLEVELにもゼロ以外の
値がセットされてると思う。エラー値っていうのがバッチ処理のリターン
コードを指しているならERRORLEVEL拾えば問題ないはず。

595:NAME IS NULL
08/06/09 23:09:37
RED HAT で動かしている ORACLE のテーブルデータを見るフリーソフトを探しています。
OBJECT BROWSER のようなソフトを紹介してもらえないでしょうか。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch