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 のようなソフトを紹介してもらえないでしょうか。
596:NAME IS NULL
08/06/09 23:17:56
>>595
全角はきもいな。
Oracle SQL Developer とか。
597:NAME IS NULL
08/06/10 04:59:32
>>595
ラプター。
598:NAME IS NULL
08/06/11 21:07:43
パラレルDML使えねぇ~
599:595
08/06/11 22:11:19
>>596さん >>597さん
595です。
遅くなりましたがありがとうございます。
Oracle SQL Developer とラプターを探してみます。
600:NAME IS NULL
08/06/12 09:48:07
shutdown immediateでインスタンスが停止しないことって
ありますか?
601:NAME IS NULL
08/06/12 11:24:54
あります.
602:NAME IS NULL
08/06/12 17:45:31
shutdown abortでもインスタンスが停止しないことがよくあるしなw
603:NAME IS NULL
08/06/13 00:35:45
>>600
UNIX 系ではない。
Windowsでは良くある。
大量のロールバックが走っていて、なかなか止まらないならある。
>>602
それは経験ないw
604:NAME IS NULL
08/06/13 02:27:32
Unixであろうとなかろうと、immediateは失敗するものと思っていい。
つまり、自動バックアップなんかでは、必ず例外処理を入れるようにすること。
abortもWindows版に限っては、ハングする可能性がある。
(KROWNには、すべてのWindowsで起こりうるみたいに書いてあるけど、おそらく2000までの現象だと思う)
605:NAME IS NULL
08/06/13 19:52:15
net stop oracleserviceXXX最強説唱える
606:NAME IS NULL
08/06/14 01:02:05
shutdown abort失敗すると、net stop も効かない。kill oracle.exeするしかない。
Unix版は、abortについては、そのまんまサーバプロセスにSIGKILL送っているだけだから、コケようがないけど。
607:NAME IS NULL
08/06/14 08:51:06
俺はサーバのシャットダウンが最強だと思うがなwww
608:NAME IS NULL
08/06/16 02:43:06
はじめまして。
oracle8の環境で、Accessのクエリを使いテーブルのインポートを試みましたら
失敗して、「最大エクステント121に達しました。」と
エラーが出ました。それで、ストレージマネージャの表領域のUSERで
エクステントの値を変えたり、スキーママネージャで
そのテーブルの値を121から無制限に変えてみたりしましたがダメでした。
他の解決策を教えて頂きたいです…。
609:NAME IS NULL
08/06/16 09:27:42
>>608
ORAエラーのコードが分かるともっと良い。
メッセージからするとロールバックセグメントが
インポート対象のデータと比べて、
やたら小さいだけなんじゃないかと思うが。
クエリで実行できる程度のデータの移行だけなら、
条件つけてデータを小分けにして
ADOとかで処理するのが良いかもしれんがな。
610:NAME IS NULL
08/06/16 14:33:43
>>609
ありがとうございます。
コードはORA-01631です。
611:NAME IS NULL
08/06/16 15:55:58
>>610
…で、エクステントが最大に達した表はどれだ?
エラーメッセージに出てただろ?
それも余さず書けよ。
そういうのが結構大事なんだから。
これ参考にしてエラーがどのオブジェクトに対して
発生しているのかを特定しろ。
URLリンク(homepage1.nifty.com)
612:NAME IS NULL
08/06/16 17:27:35
Oracle触るの初めてなのですが、セキュリティの対応で
リスナーにパスワードを設定することになりました。
lsnrctlからchange_passwordで設定するまではよかったのですが
そのあとにsave_configというコマンドが見つからなく(helpコマンドでも表示されない)
設定を保存することができません
オラクル9i以降じゃないとpassword保存できないのでしょうか?
オラクル7を使っているのですが、何かわかりましたら
アドバイスもらえないでしょうか
613:NAME IS NULL
08/06/16 18:27:45
>>612
change_password出来るのは
8.0.xからじゃね?
614:NAME IS NULL
08/06/16 20:56:06
>>611
どうもです。解決しました。
エクステント値を変更する表が同じ名前で2つありまして
その別のほうを変えてしまってました…
615:NAME IS NULL
08/06/18 20:43:05
ORACLEの試験の合格申請をしようと思っています。
ですが、2年以上前に受けたので受験日を忘れてしまいました。
(アールプロメトリックidは分かります)
これってORACLEに問い合わせたら受験日を探して教えてくれますか?
616:NAME IS NULL
08/06/18 20:44:08 hlqfkmnb
連投すみません。
あげます。
617:NAME IS NULL
08/06/18 20:55:02
>>615
Oracleに問い合わせるかどうかをここで聞くという神経が信じられない。
合格してるんだったら普通に聞けばいいだろうに。
618:NAME IS NULL
08/06/18 20:58:04 1zQxpBDX
>>615
ORACLEに問い合わせる。教えてくれるよ。
ただ合格したのが有効なのって3年だから、
早急に行動したほうが良い。
619:NAME IS NULL
08/06/18 20:58:31
>>617
今時間外で問い合わせできないからとりあえずここで聞きました。。
620:NAME IS NULL
08/06/18 21:00:05
>>618
レスありがとうございます。
受験日教えてくれるんですね!
よかったです。
教えてくださって本当にありがとうございました!
621:NAME IS NULL
08/06/18 23:23:33
>>619
ここで聞いた答えを正しいと思うのか…
622:NAME IS NULL
08/06/21 12:18:14
がーん、Windowsってdb_block_size 16kまでなのね
WindowsでOracle使っちゃいけないの?
623:NAME IS NULL
08/06/22 05:32:01
>>622
うん。
624:NAME IS NULL
08/06/22 11:23:00
「Instant Clientパッケージ - 基本」と「Instant Clientパッケージ - SQL*Plus」を
ダウンロード・解凍し同じフォルダに入れた上で
sqlplus.exeを実行したのですが、下記のエラーが発生しました。
何が足りないのでしょうか?
---------------------------
sqlplus.exe - コンポーネントが見つかりません
---------------------------
MSVCR71.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
---------------------------
OK
---------------------------
625:NAME IS NULL
08/06/22 12:59:26
>>622
Windowsっていうか、32bitはブロックサイズ16Kまでだったと思う。
626:NAME IS NULL
08/06/22 19:34:15
>>624
MSVCR71.dllでググって見つかったDLLをsystem32にコピー。
627:NAME IS NULL
08/06/22 23:16:00 DVCXVAyc
管理画面のポートを8080から80に変更する方法
ごぞんじないですか?
628:NAME IS NULL
08/06/23 08:32:04
>>627
なんの管理画面だよ。
629:NAME IS NULL
08/06/23 22:44:46
教えて下さい。
オラクルのトランザクション分離レベルがシリアライザブルのときの実装って、
ポスグレのように挿入や書き換えを許してしまう実装なのですか?
それともMySQLのようにロックが掛かり挿入、書き換えが出来ない実装なのですか?
630:NAME IS NULL
08/06/23 22:50:48
>>629
あくまでも読み込みにロックはかからないから前者。
後続のトランザクションの影響でトランザクションが失敗することがある。
楽観的排他と動作は似てる。
631:NAME IS NULL
08/06/23 23:04:20
>>630
ということは適当なロックを掛けなければファントムの挿入、アンリピータブルな
データの書き換えを許してしまうということですね!
ありがとうございました。
632:NAME IS NULL
08/06/23 23:11:53
>>631
どうすればそういう間違った理解ができるか不思議だ。
ファントムもアンリピータブルリードも起きないぞ。
633:NAME IS NULL
08/06/23 23:23:31
>>632
えっ、違うのですか?
ポスグレはファントムリードもアンリピータブルリードも発生しませんが、
ファントムの挿入、アンリピータブルな書き換えは許し、当該トランザクションからは
ただ見えなくしているだけの実装なので、前者というので同じものだと理解してしまいました。
634:NAME IS NULL
08/06/23 23:27:17
>当該トランザクションからは
>ただ見えなくしているだけの実装
それがわかってるならいいよ。
更新時の失敗の可能性は置いといて、当該トランザクションから見えなければ問題ないでしょ。
この状態をシリアライザブルな状態とみなしよいかいなかは宗教論争になりやすいからおいとくけどね。
635:NAME IS NULL
08/06/23 23:45:57
>>634
私の解釈は合っているってことでいいんですね?
あと、不思議なんですがトランザクションの分離レベルの実装がこんなにも違うのに
トランザクションの分離レベルを適当なものに設定すれば、あとはデータベースが
上手くやってくれるみたいにいう人や、そのように書書いてあるオラクル、ポスグレも
対象に入っているSQL本があるんでしょうか?
636:NAME IS NULL
08/06/23 23:48:16
共有ロック方式でもシリアライズトランザクションは結構失敗するんだけどね。
この場合の失敗はデットロックで現れる。
637:NAME IS NULL
08/06/23 23:50:56
>>635
シリアライズトランザクションはどの方式でも要注意。
Oracleではread commited + select for updateがデフォだなぁ。
638:NAME IS NULL
08/06/25 00:00:23
RACでのバックアップについて質問です。
①ノードAで「begin backup」
↓
②データファイルをコピー
↓
③ノードAで「end backup」
という流れでバックアップしようと考えています。
そこで、②の最中にノードAがダウンした場合、
別のノードで③を実行することは可能なのでしょうか?
シングル構成やHA構成だと、②でノードAがダウンした場合
MOUNTモードにして「end backup」してやらないといけなかったので
RACだとどうなるんでしょう?
639:NAME IS NULL
08/06/25 01:19:12
>>638
念のため、10gR2-EE という前提で。
ノードBで alter database end backup すれば大丈夫なはず。
SE-RAC だとサポート対象外操作になるはず。
640:NAME IS NULL
08/06/25 02:10:52
バックアップのパラレル化はしないの?
641:NAME IS NULL
08/06/25 04:37:31
>>638
可能。
でもRACならRMAN使った方が何かと楽だぞ。
642:NAME IS NULL
08/06/25 10:25:14
SQL ServerのTEXT型のような型はOracleにはありますでしょうか?
643:NAME IS NULL
08/06/25 10:39:53
>>642
あえて言うならLONGとかCLOBだが、
使い勝手はTEXT型よりかなり悪い罠。
644:NAME IS NULL
08/06/25 12:45:43
〉〉639,641
情報ありがとう。
今回は10gR2-EEなので、
MOUNTモードでのリカバリの心配はなさそうですね。
RMANに関しては
容量が大きいので見送りました。
ストレージ機能でコピーします。
645:NAME IS NULL
08/06/25 12:48:20
>>644
RMANはその気になればストレージ機能を利用した方法にも
対応させる事が可能。
ちょっと面倒だけどね。
646:NAME IS NULL
08/06/25 14:40:48
>>643
ありがとうございます。CLOB使ってみました。
なんか普通にinsertもselectもできるんですが
どのあたりが使い勝手が悪いのでしょうか?
647:NAME IS NULL
08/06/25 15:20:00
>>641
可能です。
以上。
↓次の方どうぞ
648:NAME IS NULL
08/06/26 00:27:37
>>638
何ゆえ、MOUNTモードにする必要が???
649:NAME IS NULL
08/06/26 02:52:52
>>648
シングルインスタンスで
alter database begin backup;
shutdown abort;
startup;
してみれば判る。
650:NAME IS NULL
08/06/26 21:03:33
ORACLE 10g Express Editionはメモリが少ないパソコンでも問題なく動作しますか?
メモリ256Mしかつんでないのですが。
651:NAME IS NULL
08/06/26 21:17:25
>>650
動かないことはないけど、
Uses up to 1GB RAM of available memory in any size server.
ってDataSheetには書いてある訳だが。
652:NAME IS NULL
08/06/26 21:48:04
「問題なく動作」するかと言われれば「何か問題はあるだろう」としか言えない。
653:NAME IS NULL
08/06/26 21:51:19
XEにOEMがあったかどうか知らんが、そういう類のものをすべて止めれば逝けるだろう。
654:NAME IS NULL
08/06/27 00:31:06
いきなりWindows落としたら、次の日からSQLPLUS使えなくなっちゃった・・・・
っていうかORACLE動いてる気配ないんですけど
655:NAME IS NULL
08/06/27 01:17:02
>>651
日本語か英語の勉強が足りない。
656:NAME IS NULL
08/06/27 04:54:53
>>650
無理じゃん。
スワップしまくってアボンだと思う。
657:NAME IS NULL
08/06/27 05:14:34
>>654
メモリ256でOracleを動かしているとPCをシャットダウンすると
Oracleの終了処理が済む前に電源が落ちてしまう。
そのせいで再起動のときOracleはリカバリ処理が始まる。
これに数十分かかるのだが、待ちきれずにPCをもう一回落としたり
いろいろはじめるとさらに傷口が広がり回復に数時間を要するようになる。
658:NAME IS NULL
08/06/27 05:37:00
>>654
クラッシュリカバリに時間掛かってるか、
何らかのエラーで起動が失敗していると思われ。
アラートログ確認汁。
659:NAME IS NULL
08/06/27 05:52:30
ブハハ、256でオラクルはホント地獄だぜ・・・ 某AA
660:NAME IS NULL
08/06/27 05:55:53
>>659
動かすだけなら良いが、
実用には向かん罠www
661:NAME IS NULL
08/06/27 08:56:52
512でもつらい。ってかちょっと複雑なSQLで内部エラー大量発生。
662:NAME IS NULL
08/06/27 09:47:35
質問です。
WinServer2003で9iを導入するのですが
Oracleが使用できる最大物理メモリはどのくらいですか?
要はOralceのためにServerに25Gの物理メモリを搭載しようと思うのですが
そこまで必要ないのかどうかが知りたいです。
663:NAME IS NULL
08/06/27 09:55:33
>>662
32bitOSと32bit Oracleの組み合わせなら2GB。設定弄って3GB。
当然、64bitなんだろ?
なら20GBくらい割り当てても問題ない。
664:NAME IS NULL
08/06/27 10:03:24
>>663
ありがとうございます。
割り当てるというのはSGAのことですか?
665:NAME IS NULL
08/06/27 10:57:12
>>664
SGA。
666:NAME IS NULL
08/06/27 12:45:12
>>665
ありがとうございます。とても参考になりました。
667:NAME IS NULL
08/06/27 14:10:07
つか、今からなら9iより10gR2のほうが良いように思うが。
668:NAME IS NULL
08/06/27 19:37:54
>>663
>32bitOSと32bit Oracleの組み合わせなら2GB。設定弄って3GB。
エッ! WindowsNTserver4.0にOracle7のサーバなんだけど、この間3GBに増設して動かしてる。
設定何も変えてないんだけど、何かしなきゃダメなんでしょうか?
669:NAME IS NULL
08/06/27 19:39:41
SGAだけじゃなくてPGAも考えないと。
SGA + 同時接続数 x PGA だろうな。
物理メモリに25GB(半端だね)も載せようというんだからDBもでかいんだろうし。
670:NAME IS NULL
08/06/27 19:40:35
>>668
どんな釣りだよ。
プロセスが使えるメモリの最大量って知ってるか。
671:NAME IS NULL
08/06/27 19:52:07
>>668
設定弄らずに32bit Windows上で
ユーザープロセスが使えるメモリの最大サイズは2GBまで。
覚えとけwww
672:NAME IS NULL
08/06/27 22:22:34
まてまて。
9iにx64版ってあったっけ?
っていうか、Oracleのシステム要件のページってどこいったんだ・・・。