Oracle 質問総合スレ2at DB
Oracle 質問総合スレ2 - 暇つぶし2ch2:NAME IS NULL
07/11/11 10:48:20 nV8gYVk+
>>1


3:NAME IS NULL
07/11/11 10:50:51
んで・・ジュースは飲んだのか?w

4:NAME IS NULL
07/11/11 11:28:23
>>1

乙。

毎回の事だけど補足ね。

OTNからダウソ出来るソフトは、使用期限がついているものの、これは紳士協定に
なっていて、機能的に使えなくなるというものではない。

5:NAME IS NULL
07/11/13 01:49:50
普通にoracle.comからDownloadすればいいと思うよ。
今ならOracle 11gが手に入るわけだし。

6:NAME IS NULL
07/11/13 13:34:17
項目テーブル:項目コード(PK)、値

というテーブルがあり、項目の値を集計しないといけません。

例えば集計項目1番は
項目コード1の値 * 項目コード2の値 + 項目コード3の値
集計項目2番は
(項目コード2の値 + 項目コード3の値) / 項目コード1の値

というように求めます。
このような条件の時、DB内でうまく演算の順序を保持し、計算結果を
出せるような仕組みって可能でしょうか?

7:NAME IS NULL
07/11/13 13:35:55
>>6

( ^ω^)つ View

8:NAME IS NULL
07/11/13 13:40:44
>>7
ですよねーorz
+、-だけだったらできるんですけど…orz

9:NAME IS NULL
07/11/13 21:33:42 win9bqJG
dete型で年、月、日の値を持っておいて、
select * from テーブル名を実行した時に
デフォルトで月だけを表示するようにって出来きますか?

10:NAME IS NULL
07/11/13 23:33:05
>>9

SQL> alter session set nls_date_format ='MON';

Session altered.

SQL> select sysdate from dual;

SYS
---
NOV


11:NAME IS NULL
07/11/13 23:49:21
>>10
ありがとうございます。
それだと全てのテーブルに対して月だけを表示する形になるんですよね?
特定のテーブルの特定のカラムに対して限定すると言う
やり方はないのでしょうか?

12:NAME IS NULL
07/11/13 23:52:04
>>11

( ^ω^)つ View

13:NAME IS NULL
07/11/14 00:06:21
>>12
やっぱViewくらいしかないですよね・・・
ありがとうです><

14:NAME IS NULL
07/11/16 23:32:36 MwFc3JH0
shutdownの即時モードに時間がかかってるんだけど、
原因にはどういうものがありますか?

15:NAME IS NULL
07/11/17 00:31:29
DB_CACHE_SIZEが大きい場合は、
データベースバッファキャッシュ内の更新済みブロックを
データファイルに書き戻す処理に時間がかかる。

スケジュールで落とすなら、shutdown immediateする10分ぐらい前に
alter system checkpointを打つのが定番。

ただshutdown immediateが遅い/ハングする系の不具合がいくつかあるから
一度サポートに聞いてみたほうがいいかもね。

16:NAME IS NULL
07/11/17 01:58:10
>>14

9i以上ならFAST_START_MTTR_TARGETをきちんと指定して、checkpointを調整するようにしろ。
9i以上ならこまめにチェックポイント取っている方が早かったりする。
redologのタイミングでチェックポイント取るのは8iまでのテクニックだな。

17:NAME IS NULL
07/11/17 22:35:00
LIMITって無いの?

18:NAME IS NULL
07/11/18 00:22:09
>>17

何の?


19:NAME IS NULL
07/11/18 02:30:02
>>18
SELECTの結果をちょん切るやつ

20:NAME IS NULL
07/11/18 03:00:24
>>19

じゃあ ROWNUM で。
今度は質問はわかりやすく書いてね。


21:NAME IS NULL
07/11/18 11:50:41
LIMITはMySQL。TOPだとMS SQL Server。

22:NAME IS NULL
07/11/19 19:11:06
>>20
8i以降ならROW_NUMBERの方が自由度が高くないか?

23:NAME IS NULL
07/11/19 20:57:48
>>22

ROW_NUMBER() は遅くなることもあるからなぁ。


24:NAME IS NULL
07/11/19 23:26:26 e/HNJ/vE
Oracleのパッケージで、SYS_REFCURSORを複数のプロシージャで使いまわすってできますか?

create or replace package aaa is
procedure testA( cur1 out sys_refcursor, cur2 out sys_refcursor, cur3 out sys_refcursor);
procedure Test1( cur1 out sys_refcursor);
procedure Test2( cur2 out sys_refcursor);
procedure Test3( cur2 out sys_refcursor);
end;

こんな感じでパッケージがあって、testA がアプリ側からCallされます。
Test1~Test3はそれぞれ別のテーブルからデータを取得します。

まずtestA でTest1をCallし、その戻り値を判定し、以降の処理を行う。。。って感じなのですが、

create or replace package body aaa is

procedure testA( cur1 out sys_refcursor, cur2 out sys_refcursor, cur3 out sys_refcursor)
is
begin
Test1( cur1 out sys_refcursor) ;
end ;


ここで、cur1 の中身を見たいんです。
FETCHとかすればいいのかなと思っても、エラーになります。
なんかいい方法ありませんか?
なんでこんな作りなのかとか言われても答えられません。
そういうポリシーらしいです。



25:NAME IS NULL
07/11/19 23:49:49
>>24

面倒かもしれないが、一回取ってきた値をどっかの表に格納して、それを他から
参照するようにでもしたら?

26:NAME IS NULL
07/11/20 00:06:17 C4WLKplh
>>25
それのやり方がいまいちわからんのです。

cur_temp sys_refcur ;
って定義して、 cur_temp := cur1 ;
みたいにはやってみたんですが、
cur1の中身が消えちゃうんですよね。。。。

oracle難しい。。。。。

27:NAME IS NULL
07/11/20 03:26:13
>>26

cur_temp sys_refcur ; と前もって宣言しておいて、それからPL/SQLを実行してんだよね?

28:NAME IS NULL
07/11/20 17:35:53
utPLSQL って 2005年で更新止まってるけど、まだ使用できますか?


29:NAME IS NULL
07/11/20 20:29:38
SYSAUXが増えつづけて止まらないんだけどなんで?

30:NAME IS NULL
07/11/20 20:35:16 wWhiZNbu
パソコンショップならここ!!
URLリンク(want-pc.com)

31:NAME IS NULL
07/11/21 00:17:52
>>29

きちんとAWRのPurge Jobをスケジュールしているか?

32:NAME IS NULL
07/11/21 00:21:09
純粋なOracleの質問ではないかもしれませんが、
Oracleマスタープラチナまでいくには費用はどれくらいかかるものなのでしょうか?

ブロンズ・シルバー・ゴールド・プラチナと、段階ごとに教えてくだされば助かります。
宜しくお願いします。

33:NAME IS NULL
07/11/21 00:54:56
実行計画ってなに?

MySQLに例えておはなししてはくれまいか

34:NAME IS NULL
07/11/21 03:27:25
>>32

根性と気合さえあれば、ゴールドまでは実機がなくても卓上の勉強だけで
取ろうと思えば取れる。
ただゴールドを取るために、最低でも試験を5つぐらい受けなくてはならなくて、
各試験毎に受験料が1万5千円ずつぐらいかかったと思った。

まあ、詳しくは以下で。
URLリンク(www.oracle.com)

35:NAME IS NULL
07/11/21 03:30:42
>>33

簡単に言うとSQLがどういった順序で実行されているかということ。
最初に索引のスキャンがあって、次に目的のデータブロックが読み込まれて
いるといった様な事が、この実行計画を見れば分かる訳。
表や索引の分析が行われていないために、全表走査が走っているなんて
ことも分かる。



36:NAME IS NULL
07/11/21 04:10:25 msoO2PlP
ユーザー単位でデータベースを削除したいんですかどうすればいいんですか?
コマンドプロンプトから行える方法を探しています

ユーザー単位でインポートしたdmpファイルをいれたいんで
一度削除したかったのですが

37:NAME IS NULL
07/11/21 04:59:17
>>35
explainみたいなもの?

38:NAME IS NULL
07/11/21 06:33:21 TLAHprir
>>32


試験費用については>>34の言っているとおりだが、ゴールドについては
研修で要履修コースを受ける必要があるので、その費用として
更に最低でも20万円ぐらい必要。

プラチナについてはゴールドを取得している状態からだと、要履修コースを
2つ受けて、さらに試験費用が20万円ぐらいなので、最低でもだいたい60万円ぐらい必要。

なにも持っていない状態からプラチナまで取ろうとすると試験を全部一発で合格しても
100万円近くかかるということになる。


39:NAME IS NULL
07/11/21 08:56:40
>>36

お前はデータベースという単語の使い方を間違っている。
ユーザーをスキーマごと消去していいなら以下のコマンド。

drop user ユーザー名 cascade;

40:NAME IS NULL
07/11/21 13:25:59
ありがとうございました

41:NAME IS NULL
07/11/21 22:11:40
1 DBLINKしてあるSQL抽出結果を参照専用のマテビューにしています。
2 マテビューは強制リフレッシュを定期的に行っています。

この状況下でマテビューリフレッシュ時に該当マテビューを検索対象にしたSELECT-SQLが
マテビューリフレッシュ終了まで固まってしまいます。

当然と言えば当然なのですが、SELECT系のSQLが固まらない良い手は無いですか?

42:NAME IS NULL
07/11/21 22:24:17
>>34
11gのEnterprise Editionダウンロードできるから、
実機使うが吉。ただし重いので、Oracle用のマシンが用意できるとGood。

43:NAME IS NULL
07/11/21 23:31:40
>>38
ありがとうございました。
少なくとも、ゴールドまでは30万くらい プラチナまでは 90万ちょいかかるということですね。
個人では無理ですなぁ・・・

44:NAME IS NULL
07/11/22 00:37:51
>>41

読み取り専用のマテビューにすればselectは出来るよ。
それ以外は排他ロック取るから無理。

45:NAME IS NULL
07/11/22 03:23:46
>>43

一人前のDBA育てるのにトレーニング受けさせたら、100万はくだらないからなぁ。
まあ、Oracleに就職したら社内で受けさせてくれるけどさ。

46:NAME IS NULL
07/11/22 10:54:34
実行計画ってやらないといけないの?
DB設計時にあらかじめわかって設計するものではないの?

47:NAME IS NULL
07/11/22 11:37:06
>>46
机上論と実装は異なるから。

48:NAME IS NULL
07/11/22 11:52:09
表領域にあるテーブル一気に削除したいんだけどそういうコマンドはないのですか?
いちいちテーブル名指定してdropして…とやらないとダメなんですか?

49:NAME IS NULL
07/11/22 12:49:08
>>48

drop tablespace 表領域名 including contents;

50:NAME IS NULL
07/11/22 15:21:00
>>49
ぐぐっても検索の仕方が悪いのかなかなか調べられず困ってたので助かりました
トンクスです!

51:NAME IS NULL
07/11/22 17:12:35
CREATE TABLE時に[hoge_id]を5桁ぞろえの数値デフォルトにしたいのですがどんな方法になるでしょうか?
例えば
INSERT でinsert into hoge (hoge_id) VALUES(1);
とした場合、自動的にhoge_id の値を00001として保持して欲しいのです。

52:NAME IS NULL
07/11/22 17:25:16
>>51
トリガーかな。


53:NAME IS NULL
07/11/22 17:52:54
>>51
おまえはそもそも数値という物がどういう物なのかを理解していない。

54:NAME IS NULL
07/11/22 18:02:59
select MAX(xxx) from xxx;でxxxに値が入っていない場合NULLを返すんですが0を返して欲しいです。
方法若しくは関数教えてください。。。

55:NAME IS NULL
07/11/22 18:10:28
>>53
黙れ

56:NAME IS NULL
07/11/22 18:54:25
>>55
情けない。

57:NAME IS NULL
07/11/22 18:56:51
>>54
NVL関数でどう?
SELECT NVL(MAX(XXX) FROM XXX

58:NAME IS NULL
07/11/23 00:09:26
数値型で0詰めはできない。
文字列型でPL/SQLストアドプロシージャを使え。

59:NAME IS NULL
07/11/23 02:01:54
すいません

OAS4.0.8.1をwindowsNT→windows server2000 へバージョンアップしたいのですが
対応してるんでしょうか?
古いので良くわからなくて・・・


60:NAME IS NULL
07/11/23 10:55:30
サポートが終わってるOS使っているようでは・・・
普通にOSとデータベース両方を最新へアップグレードした方が良いよ。
会社で承認してくれるなら、WindowsServer2008とOracle11g又はSQLServer2008
が出るからそれにすべて変えるのもあり。

61:NAME IS NULL
07/11/23 17:27:59
PLSQL使わなくとも型変換と0パディングぐらい出来る。
文字列変換後のパディングはLPAD。
Nullを置き換えるならNVL関数で十分。

62:NAME IS NULL
07/11/24 11:13:51
>>60
ありがとうございます。
そうするのが一番なのはわかっているんですが・・・




63:NAME IS NULL
07/11/26 13:29:19
他のユーザの作成したビュー、テーブルをsysからみることはできますでしょうか?
例えばユーザhogeで作成したtable(test_table)のカラム情報をsysから見るコマンドってありますか?


64:NAME IS NULL
07/11/26 13:32:03
>>63

権限があれば、スキーマ.テーブルで見れる。
SQLの本で書いてると思うけど。

65:NAME IS NULL
07/11/26 13:51:47
>>63
sysはsysdbaだからALL_TAB_COLUMNSから列情報も問題なく取れると思うが。

任意のスキーマのテーブルの参照なんか言うまでも無かろう。


66:NAME IS NULL
07/11/26 15:33:45
設定してあるストアドファンクションのコードを確認したいのですが、調べても見つかりませんでした。
無理なのでしょうか?
また、desc テーブル名でテーブル情報が見れますがINDEX等も併せて見たいです。
可能でしょうか?

67:NAME IS NULL
07/11/26 16:27:34 hr1x2rtf
CREATE OR REPLACE FUNCTION func_hoge(
f_id IN user.id%TYPE,
f_ip IN user.ip%TYPE,
f_name IN user.name%TYPE,
f_pass IN user.password%TYPE,
f_birth IN user.birth%TYPE
)
RETURN NUMBER IS
r_cnt NUMBER;
r_max NUMBER;
r_number user.number%TYPE;
BEGIN
SELECT COUNT(number) INTO r_cnt FROM user WHERE id = f_id;
IF r_cnt > 0 THEN
RETURN NULL;
END IF;
SELECT MAX(number) INTO r_max FROM user;
r_number := r_max + 1;
INSERT INTO user(number, id, ip, name, password, birth) VALUES(r_number, f_id, f_ip, f_name, f_pass, f_birth);
RETURN s_number;
EXCEPTION
WHEN OTHERS THEN RETURN NULL;
END func_hoge;

こんなストアドファンクション作ったのですが、
正しい値をいれてSELECTしてもNULLしか返ってきません。
色々調べた結果、INSERTの部分でエラーが起こっている(EXCEPTIONに移行している)ようでした。
ためしにINSERT文だけ外して定義してみたところ、きちんとr_numberの値が返ってきます。
ストアドファンクションでINSERTは使えないのでしょうか?


68:NAME IS NULL
07/11/26 21:13:36 AcLfRp+N
>>67

例外処理を外して、エラーメッセージを出力させて、原因を調査したらどうかね?


69:NAME IS NULL
07/11/26 23:05:10
mysqlみたくコマンドラインで操作する画面はありますか?

70:NAME IS NULL
07/11/26 23:15:32
>>66
> 設定してあるストアドファンクションのコードを確認したいのですが、調べても見つかりませんでした。
> 無理なのでしょうか?

USER_SOURCE

> また、desc テーブル名でテーブル情報が見れますがINDEX等も併せて見たいです。
> 可能でしょうか?

USER_INDEXES, USER_IND_COLUMNS。
desc で見るのは無理。

71:NAME IS NULL
07/11/26 23:21:08
>>69

Oracleでコマンドライン操作といったら、SQL*Plusでしょ。
sqlplus で起動できる。


72:NAME IS NULL
07/11/26 23:47:27
>>69

つ~か、GUIで操作するなんざ遅くてやってらんねぇよ。

73:NAME IS NULL
07/11/27 00:05:09
>>67
ストアドファンクションでINSERTが出来ないなんてことはない。
何処かに問題が有るだけ。

とはいってもそこから先はデバッグの世界だろ。
ExceptionでSQLCODEを拾ってSQLERRMでメッセージ拾うしかないだろな。
ここで相談しても仕方ないと思うが・・。

参考までに、INSERT時のエラーで多いのは型が間違ったり
Null禁止なのにNull転送したりが多い。
後は権限不足でInsert出来ない事もある。

とりあえずSQLエラーコード拾ってみないとなんともいえない。

74:NAME IS NULL
07/11/27 09:25:36
>>68 に一票 ノシ

75:67
07/11/27 12:24:05 UcyMPmDo
返信ありがとうございます。

>>68さん
EXCEPTION外せばエラーがそのまま表記されるんですね… 要素1個1々、RETURNで確認してたorz..
はずして実行してみたところ、
ORA-14551: 問合せの中でDML操作を実行することはできません。
ORA-06512:"HOGE.FUNC_HOGE", 行19
とでました。

このエラー番号を調べてみると以下のエラーが出ました。
ORA-14551:SELECTで呼んでいるファンクションではINSERTできない?
ORA-06512:権限が足りない?

この場合、どんな解決策があるでしょうか?

76:67
07/11/27 12:36:20 UcyMPmDo
>>73さん
詳しい説明ありがとうございます。
>後は権限不足でInsert出来ない事もある。
原因はこれっぽいのですが、どのような権限をつければいいでしょうか?
SELECT * FROM USER_TAB_PRIVS_RECDしてみたところレコードがないようです。
初歩的なことで申し訳ないのですが宜しくお願いしますm(_ _)m


77:73
07/11/28 00:54:27
>>76
SELECT-SQLの中で更新を伴うFunctionは実行出来ないよ。
これは権限云々ではなくトランザクションの問題。
更新系のSQLを扱う前にトランザクションについて勉強した方がいい。

とりあえず助言するとすれば・・・
更新(追加・削除も)を伴うストアドは、Call、Execute等で実行すべし。
コミット・ロールバック制御も忘れずに。





78:NAME IS NULL
07/11/28 19:17:17
select qid, quest from quest_tbl;
上のSQL文ですべての質問を取り出す際、ユーザがこの質問に答えているか、調べたいのですが下のSQL文を併せて調べるよう連結させるにはどうすればいいでしょうか?
select COUNT(user_tbl) FROM answer_tbl where qid=$qid and title IS NOT NULL;

79:NAME IS NULL
07/11/28 22:03:31
>>67
ファンクションを実行する部分もしっかり書かないと

80:NAME IS NULL
07/11/28 23:44:53
>>78

('A`)つunion

81:NAME IS NULL
07/11/28 23:46:47
>>78

('A`)つdecode関数

82:NAME IS NULL
07/11/29 00:26:22
>>78


select qid, quest from quest_tbl
natural left outer join (select qid, count(*) answered_count from answer_tbl group by qid )


83:78
07/11/29 13:12:16
皆さんありがとうございます。

>>82さん
それだとwhere qid=$qid and title IS NOT NULLが反映されてないと思うのですが、、
select qid, quest from quest_tbl a
natural left outer join (select qid, count(*) answered_count from answer_tbl where qid=a.qid and title IS NOT NULL )
これでためしてみましたが出来ていないようです。。

>>81さん
DECODEの解説を見てみたのですが、どうも今回やりたいこととは違う気がします、、
select qid, quest,decode((select title from answer_tbl where qid=a.qid ),NULL,0,1) from quest_tbl a
これだとエラーになりました。

>>79さん
unionだと出来そうな感じです。
ただ値を持ちまわす方法が分かりません。
SELECT qid, quest FROM quest_tbl a UNION SELECT COUNT(*) cnt FROM answer_tbl WHERE a.qid = qid and title IS NOT NULL;
これだとaなんて知らないというエラーがでます、、、

84:82
07/11/29 21:56:23
>>83
あーはいはい。>>82のcount(*)をcount(title)にすればいいよ。

85:NAME IS NULL
07/11/29 22:03:04
>>83
それと、NATURAL JOINってのをちゃんと調べろ。クエリ書くのめんどい時によく使う。
FROMの中で並べたテーブル同士で相関クエリはできない。あと質問分かりやすく書け。

86:NAME IS NULL
07/11/29 23:50:09 t7fkIFy6
exp tes/pass owner=tes file= …
のコマンドでバックアップにユーザー単位エクスポートしたファイルを
インポートするには
imp tes/pass owner=tes file= …じゃダメなの?
某サイトのリファレンス通りにしたんですが
ownerというコマンドは無いとエラーがでました
エクスポートしたファイルの設定そのままでインポートするには(初期化は行ってる)どうすればいい?

87:NAME IS NULL
07/11/30 00:09:14
imp help=y(だったかな?)でマニュアル見れ
fromuser touserの項目だ


88:NAME IS NULL
07/11/30 00:24:48
即レス感謝
fromuserでエクスポートしたユーザー、touserでインポートしたユーザーという認識で合ってるよね
後で確かめてみます

89:NAME IS NULL
07/11/30 01:02:49
>>86

スキーマ毎にExportしたのにをImportしたいだけだったら
いちいちユーザー名指定せんでも「imp \"/ as sysdba\" IGNORE=Y FULL=Y」で
いけるんじゃね?

90:NAME IS NULL
07/11/30 01:06:44
初期化の意味がわからんがインポートしたいのとエクスポートしたいユーザが一緒なら
いちいちfromuser touser使う意味あるのか?

91:NAME IS NULL
07/11/30 01:53:46
>某サイトのリファレンス

「オラクル リファレンス」でぐぐると一番上にあるサイトかwたしかに
リファレンスでownerを使ってインポしようとしてるなw

92:88
07/11/30 13:02:13 WhidIDin
fromuser touser使う場合スキーマ重複しても平気?
スキーマ自体はエクスポート後一度削除して同じ名前でスキーマ作ってます

>>90
わけわりで手間のかかる形とってます
そんな便利なのもあるのね㌧です

93:NAME IS NULL
07/11/30 19:03:43
業務でバリバリにJavaStoredProcedureを使ってる人っている?
基幹業務でJavaSPを使っても特に問題ないですかね?

周りで「使ってるよ」ていう話を殆ど聞かないので。まあ、ちょっとした
SPならPL/SQLで書いた方が早いんだけどさ。

94:NAME IS NULL
07/11/30 23:11:01
↓未だに使用例を見たことが無い機能

・オブジェクト指向機能 ・Dimension
・Nested Table ・MODEL句(まあ、普通はいらんよなあ)
・ネイティブコンパイルされたPL/SQL
・Partitioned Outer Join ・GROUP BYのCUBE、ROLLUP、GROUPING SETS
・pivot句(あたりまえか) ・MERGE文(俺の職場ヤバス) ・XML機能
・User-defined Operator

95:NAME IS NULL
07/11/30 23:29:28
merge句は一度使い出すと便利すぎてヤヴァイ
気が付くとメチャメチャmerge句を使ったspになってる事多しw

96:NAME IS NULL
07/12/01 00:16:21
Java使う場合はアプリケーションサーバに実装コードを書いてるから、
自然と使う機会がなくなる。
使う機械が多そうなのは、
多次元分析をストアドプロシージャで実装
XmlをSoap通信で流す(Webサービスとして実行)
実行してパフォーマンスが大幅に上がりそうなのはこれ位だと思う。

97:NAME IS NULL
07/12/01 00:25:04
スキーマやオブジェクトなどの概念を図解で説明してるわかりやすいサイトありませんか?

98:NAME IS NULL
07/12/01 00:26:34
・ネイティブコンパイルされたPL/SQL

これ使ったことある
DBMS_RANDOMが速くなってテストデータ作成時間が短くなった

99:NAME IS NULL
07/12/01 00:27:50
>>97
DBマガジンのバックナンバー買えば?
毎年周期的に初心者向け特集やってるから

100:NAME IS NULL
07/12/01 02:29:01
Javaストアドと言えば,10gならJPublisherで
Webサービス/SOAP呼出する部分は結構重宝してる.
たまにアクロバティックな経路で外部のSOAPサービス呼び出す処理が必要なんで.
パフォーマンスは結構良いように感じた.

101:NAME IS NULL
07/12/04 17:06:26
神様、教えて下さい。
ocfs2の導入で
Loading module "configfs": Unable to load module "configfs"
Failed
と表示され、ocfs2の起動が行えないでいます。

ocfs2-tools-1.0.2-1.i386.rpm
ocfs2console-1.0.2-1.i386.rpm
ocfs2-2.6.9-22.0.1.EL-1.0.8-1.i686.rpm
を導入して、cluster.confを作って/etc/init.d/o2cb configureだけでは
ocfs2は利用できないものなのでしょうか。


102:NAME IS NULL
07/12/04 20:37:03
> Loading module "configfs": Unable to load module "configfs"

自分で答え書いてるだろ。


103:NAME IS NULL
07/12/04 22:21:50
>>102
なぜモジュールがロードできないのに
ローディング中なのでしょうか?

104:NAME IS NULL
07/12/04 22:40:01
ocfs2のconfigfsを作るものなのか、自動的に作成されるものなのかが
わからないのですが・・・。

105:NAME IS NULL
07/12/04 23:08:45
ローディング処理中のロードできないってメッセージでしょうがあんた

106:NAME IS NULL
07/12/04 23:48:59
面倒くさいなぁ。

depmod -e とかしたか?


107:NAME IS NULL
07/12/05 01:16:07
>>101

cluster.confはクラスター内の全ノードで一緒の内容になっているんだよな?
というよらもO/Sのバージョンとcluter.confの内容ぐらいさらせ。

108:101
07/12/05 20:31:12
102-103,105-107さん
ありがとうございました。解決しました。
カーネルモジュールの選択ミスという凡ミスが原因でした。

configfs等は自動生成されるみたいです。
感謝です。

109:106
07/12/05 20:45:06
>>108

ちゃんとした人だったのね。きつい言い方してごめん。


110:NAME IS NULL
07/12/06 04:57:34 pfhV3Pvu
UNIXにOracleを導入したのですが、
UNIXへのログインIDによって、与える権限を帰ることってできますか?

たとえば、下のように、UNIXにログインするIDは異なるが、
Oracle DBに接続するユーザは同一だった場合、
①ではSELECT権限を与えるが、②ではSELECT権限を与えない(=全てのテーブルを見せたくない)、
といった制御をしたいと思っているのですが、どのようにすればよいでしょうか。

Oracle DBに接続するユーザ毎にGRANTするロールを変えればいいのでしょうが
同一ユーザでも与える権限を変えたいのですが……。



UNIX OSに ID 「userA」でログイン  UNIX OSに ID 「userB」でログイン
   ↓                   ↓
Oracle ID 「dbuserC」で接続    Oracle ID 「dbuserC」で接続
   ↓                   ↓
   ①                   ②

111:NAME IS NULL
07/12/06 05:09:54
>>110

あ゛っ?
何でDB側がO/SのログインIDで権限を変えないとならないんだよ?
大体クライアントが自PC使ってSQL*PLUSでアクセスして来たらどうすんだよ?
ちょっと考えたら如何に理不尽な要求か分かるだろうが?



112:NAME IS NULL
07/12/06 17:55:28
>>110
無理。

OSユーザ≒DBユーザなら、OS認証でなんとかなりそうだけども
OSユーザ≠DBユーザならどうにもならない。
他にそんな事ができるのってあったっけ?

113:NAME IS NULL
07/12/06 21:41:29
Oracleのインストール作業を人に頼んだら
いくらかかるの?

114:NAME IS NULL
07/12/06 21:43:31
>>112
sqliteみたいなのなら普通に出来るが
サーバ/クライアントになってるのだとまず無理だろう

115:NAME IS NULL
07/12/06 22:17:04
すみません。質問です。
このようなSQLがあったとして:

SELECT * FROM (SELECT * FROM HOGE ORDER BY FUGA) WHERE ROWNUM <= 100

一番外周のSELECTの結果はFUGAでソートされているとは限らないですよね?
面倒でも、

SELECT * FROM (SELECT * FROM HOGE ORDER BY FUGA) WHERE ROWNUM <= 100 ORDER BY FUGA

とすべきなのでしょうか。すみませんが、ご存知の方教えてください。

116:NAME IS NULL
07/12/06 23:23:10
>>115

実行計画取れ。

117:NAME IS NULL
07/12/06 23:52:04 5y+EMV/z
EXP→IMPやってDBをメンテしたあと、INDEXをリビルドしました。そしたらそれをやる前までI/Oの負荷はぜんぜんなかったのに急にI/Oディスクの負荷が100%いくように
なっちゃいました。もしみなさんがあたりをつけるとしたらどこらへんですか?
ちなみに自分のスキルはoracle暦6っ月のへたれです。

118:仕様書無しさん
07/12/07 00:24:55
>>113
一番安くて5万円~
20万とかよく聞く価格帯。

>>115
結果をソートさせた状態に"保障"させたいのなら
面倒でもorder byをつけるべき。
今のバージョンならつけてもつけなくても結果は同じだけど
次のバージョンとかになったらわかんないよ。

>>116
実行計画でわかるもの?

>>117
ディスクの問題?それとも特定の表領域を使用した場合に負荷が高くなるの?
全容量に対して使用量はどのくらい?


119:117
07/12/07 00:38:11 Sq6yutGL
れすありがとう
>>117
> ディスクの問題?それとも特定の表領域を使用した場合に負荷が高くなるの?
> 全容量に対して使用量はどのくらい?
使用量は78%です。ディスクはエラーがありませんでした。表領域の特定はちゃんとはしてませんが、
データ領域(レコード、INDEX)のところで負荷がたかくなっているようです。
なぜようですってかともうしますと、自分の職場ではなく、遠隔地にあるサーバで(リモートできない)話を
きいている状況です。
初期パラメータのメモリはいじってませんが、もしかしたらバッファがゼロになっていて検索にディスク
みているんじゃないかとも疑ってはいます。


120:NAME IS NULL
07/12/07 03:34:31
>>119

Reguildした時に表領域を指定せずにやっちゃって、表と索引とが
同じ表領域に作られちゃったってパターンを疑う。

121:119
07/12/07 09:02:13 VdnRSR1z
>>120
あっなるほど。考える材料増えました。ありがとう!

122:仕様書無しさん
07/12/07 21:15:24
>>117
全体的に遅くなるとかじゃなくてディスクI/Oが問題になってるんだよね?
I/O性能が劣化してそうな感じなら、データファイルの断片化くらいしか思いつかない。

Rebuildの時に十分な領域がない

小さいサイズでのファイル自動拡張

データファイル断片化
・・・とか。

でもこんなので、いきなり100%いくとは考えられないし・・・。

やっぱり、>120さんの理由でディスクI/O性能の限界を超えたとかかなあぁ。


123:NAME IS NULL
07/12/08 00:10:09 RdFFMJzL
oraclexeをamdマシンに入れる方法教えてください。
debian4.0です。

124:NAME IS NULL
07/12/08 02:54:41
>>123

CPUのタイプなんか気にしなくていいだろうが?
ただマニュアルによるとx86版はDebian 3.1にしか対応していないみたいだぞ?
まあ試すだけ試してみたら?

URLリンク(download.oracle.com)

125:NAME IS NULL
07/12/08 19:16:12 RdFFMJzL
>>124

dpkg: oracle-xe-universal_10.2.0.1-1.0_i386.deb の処理中にエラーが発生しました (--install):
パッケージアーキテクチャ (i386) がシステム (amd64) と一致しません
以下のパッケージの処理中にエラーが発生しました:
oracle-xe-universal_10.2.0.1-1.0_i386.deb


126:NAME IS NULL
07/12/09 02:52:00
>>125

お前、エラーメッセージを読めないのか?
お前のCPUはAMDの64-bit版だ。
xeは32-bit版しか出ていないんだから、入らないって文句言われてんだよ。




127:NAME IS NULL
07/12/09 04:00:11
CPUの違いは気にせんでもいいが
せめて32ビットと64ビットは気にしとけww

128:NAME IS NULL
07/12/10 01:55:00
>>125

Kernelが64-bit i686でコンパイルされてるから、32-bit版のXEが
入らないって文句言われてんだよ。
uname -aでkenelのバージョン確認してみ?

129:NAME IS NULL
07/12/12 14:09:25
ユーザが入力した文字をMERGEでUPDATE若しくはINSERTしたいのですが以下の分だとORA-00971エラーがでますどこがまずいのでしょうか?

MERGE INTO
 hoge a
USING
 (SELECT
  '1' seq, '1' id
 FROM
  DUAL
 ) b
ON
 (a.seq = b.seq AND a.id = b.id)
WHEN MATCHED THEN
 UPDATE
  hoge
 SET
  str_title = 'サンプル',
  str_url  = 'URLリンク(example.com)',
  str_comment= 'サンプルです'
WHEN NOT MATCHED THEN
 INSERT INTO
  hoge ( id, seq, str_title, str_url, str_comment )
 VALUES
  ( 1, 1, 'あ', 'URLリンク(example.com)', 'サンプルです');

130:NAME IS NULL
07/12/13 01:08:13
文法がまずい。
UPDATEのうしろとINSERTのうしろがおかしい。

131:NAME IS NULL
07/12/13 13:13:56
Oracle 10gを開発で使いたいのですが
この場合どのライセンスを購入すればよいでしょうか?
開発するアプリケーションの種類はWebアプリです。


132:NAME IS NULL
07/12/13 13:59:42
>>131
開発だけならPersonalでもいいし、OTN Software Kitでもいい。
まぁ、US-OTNに利用者登録してダウンロードすれば
開発ライセンスのメディア代もタダだけどな。

技術サポート受けたいなら、Personal買え。

133:NAME IS NULL
07/12/13 20:44:55
そうそう。日本ばっかり見てると損する。

134:NAME IS NULL
07/12/14 13:48:01
トリガー中において、自分は、どのクライアントプログラムによって起動されているのか?
を取得する方法はありますか?


135:NAME IS NULL
07/12/14 13:51:54
まったくの未経験がOracle silver followを取るとしたら
どのくらい勉強時間が必要よ?

136:NAME IS NULL
07/12/14 14:01:46
>>134

この辺のファンクション使えば取れそうじゃね?

ora_sysevent,
ora_login_user,
ora_instance_num,
ora_database_name,
ora_dict_obj_name,
ora_dict_obj_type,
ora_dict_obj_owner,

137:134
07/12/14 14:03:53
>>136
ありがと
調べてみます。

138:NAME IS NULL
07/12/14 15:53:31
以下のストアドファンクションを実行したいのですが、INSERTが入っているとエラーになります。
呼び方は下のサイトを参考にしたのですがコマンドラインだと実行も出来ないようです。
URLリンク(oracle.se-free.com)
>begin ? := hoge('test','test'); end;");


CREATE FUNCTION hoge(
id IN NUMBER,
pass IN NUMBER
)
RETURN NUMBER IS
s_number NUMBER;
BEGIN
SELECT COUNT(id) INTO s_number FROM t_hoge WHERE id = f_id;
IF s_number >0 THEN
RETURN 0;
END IF;
INSERT INTO t_hoge(id,pass) VALUES(f_id,f_pass);
return f_id;
END;
/

どこがいけないのでしょうか?

139:NAME IS NULL
07/12/14 17:38:04
f_idとf_passはどこで宣言されているの?

140:134
07/12/14 18:04:05
すみません。
以下のSQLで取得できました。

SELECT PROGRAM FROM V$SESSION VA
WHERE EXISTS (
SELECT VB.SID, VB.SERIAL# FROM V$SESSION VB
WHERE VA.SID = VB.SID
AND VA.SERIAL# = VB.SERIAL#
AND VB.AUDSID = SYS_CONTEXT('USERENV', 'SESSIONID')
);


141:NAME IS NULL
07/12/14 20:14:54
Oracleの勉強を始めたばかりです。
何とかDBを好きになりたくて、楽しみたいと思ってます。
自宅でDBを使って楽しむ方法ってどういうものが
あるのでしょうか?
自分では思いつけないので、教えてください。

142:NAME IS NULL
07/12/14 23:22:41
>>141

俺もOracleで9年以上飯食ってるけど、自宅でなんか使ったことないよ。
自分の勉強のためにLinuxにRAC入れたりして遊ぶぐらい。

143:NAME IS NULL
07/12/14 23:40:56
>>141
郵便局から郵便番号と住所のデータをダウンロードして遊ぶとか。

業務プログラマなら知識増えるだけで
周囲に自慢できるから、単に新しい機能覚えるだけでもモチベーションでるよ。
SQLに疎い業務プログラマまじで多い。

144:NAME IS NULL
07/12/15 00:01:26
>>141
業務SEなら これ読んで データベースに展開してみるのもいいんでない?
URLリンク(www.amazon.co.jp)

目的ないと きついよね

145:NAME IS NULL
07/12/15 00:22:57
俺もほぼ同じぐらいOracle扱っているが、入れているのはノートPCだけだなw
滅多に使わない

146:NAME IS NULL
07/12/15 00:27:08 RcQd2CIu
ADO.NET+Data Provider For Oracle でOracleへの接続ですが
Oracle10gR2とOracle11gには接続可能でしょうか?

当方、Oracle9iでは接続の実績があるのですが上記のバージョンに変更しようと思っています。

147:NAME IS NULL
07/12/15 00:42:23
URLリンク(www48.tok2.com)

148:NAME IS NULL
07/12/15 03:21:19
>>147

可愛いじゃねぇかよ(;´д`)ハァハァハァ

149:NAME IS NULL
07/12/15 16:58:56
>>142-145
参考になりました。ありがとうございます。
色々探してみようと思います。

150:NAME IS NULL
07/12/16 21:38:49 eMcHXlqr
来年度からDBを扱うシステムアプリの保守を頼まれたので、
特に障害とか保守作業とかが必要ないときであっても、
毎月簡単な報告書くらいまとめようかな、と思います。
(DB自体の保守や管理ってもっときちんとした報告書とか作成すべきでしょうが、
あくまで「DBを扱うアプリ」側の保守なので、簡易なものでいいと思ってます)

報告書の内容としてぱっと思いついたのは

・ レコード件数
・ 使用領域・未使用領域の状況
・ Oracleの表領域が格納されているディスク自体の容量の状況

…とかを考えてるんですが、そのほかに
「これは必須だろ常考」「DBAならこれを確認しとくのが当たり前」って項目があれば
ぜひご意見を伺いたいです。

151:NAME IS NULL
07/12/16 22:11:55
>>150
まず、OTNで聞いた方が良い。

152:NAME IS NULL
07/12/16 22:41:33
性能情報も欲しい
・CPU使用率の推移
・DiskI/O量の推移
・夜間バッチの処理時間推移
・平均レスポンス時間の推移


153:NAME IS NULL
07/12/17 00:35:46
そもそもその情報がどうして必要なのかをちゃんと纏めた方がいい

154:NAME IS NULL
07/12/17 16:10:34
----簡単な質問解答格納テーブル
--テーブル quest
hoge_id str_quest look_flg date
   1   名前は     1 07-12-17
--テーブル answer
user_id hoge_id str_answer look_flg date
  111    1    益男     1 07-12-17

このようなテーブルでhoge_idが一致するデータを連結して取得する際に、answer側が空(IDが存在しない)の場合はquestの値だけを返してくれるヴューを作っているのですがうまくいきません。(hoge_id の値を持ったquestがない場合はNULLでOK)
作ったヴューは以下です。

CREATE OR REPLACE VIEW get_quest AS SELECT
quest.str_quest,
answer.str_answer,
quest.date AS q_date,
answer.date AS a_date
answer.look_flg
FROM quest,answer
WHERE quest.look_flg = 1;

SELECT * get_quest WHERE hoge_id=1 and user_id=111;
これだと明らかに間違っているのは分かるのですがどうしても最適な文が思いつきません。
ご教示お願い致します。

155:NAME IS NULL
07/12/17 20:53:03 vNanl1pJ
>>150
アプリ側からみたDBの報告なら日別、時間別の
アクセス数集計とレスポンス計測・報告で十分。


156:NAME IS NULL
07/12/17 23:58:36
>>154
SQLの前に日本語を書けるように頑張ってください。
あなたの書いていることがよく分かりません。
実は自分が何をしたいのかもわかっていないのではないのでしょうか?
Viewはビューで結構です。
前半のSQL文はQUESTとANSWERの全組み合わせを取り出しているにすぎず、
後半のSQL文は文法間違いしています。

SELECT
hoge_id,
quest.str_quest,
answer.str_answer,
quest.date AS q_date,
answer.date AS a_date
answer.look_flg
FROM quest LEFT OUTER JOIN answer USING (hoge_id)

ただし、これだとquestにanswerが複数合った場合に複数questが出力される。

157:NAME IS NULL
07/12/18 02:36:57 q4P2kapu
Oracleのツールに関して質問があります。

今月のDBマガジンで「Oracle SQL Developer」の紹介がありました。

その記事のなかでクエリービルダーの話がでてきたんですが…
「SQL Developerは ~ SQL PLUSと比べるとはるかに見やすいだろう。
また、クエリービルダーを起動すれば…」

SQL Developerの中にクエリービルダーという項目はありませんでしたし、
ネットで調べても、oracleのクエリービルダーというツールも見当たりませんでした

ご存知の方いましたらぜひ教えてください。

158:NAME IS NULL
07/12/18 04:43:10
URLリンク(www.oracle.com)
あるみたいだが、実際に見たことはないなあ
明日会社で試してみる

159:158
07/12/18 12:30:28
あったよ。
SQLワークシートの何もない部分で右クリック→Query Builder。
初めて知った。Accessっぽいね。

160:154
07/12/18 14:08:39
>>156
どこが変な日本語なのでしょうか??
普通に理解できると思いますが、、、

>viewはビュー
ヴューでもビューでも大差ないと思います

ビューでquestとそれに紐づいたanswerを全部取り出せるようにしておいて
SELECTの際にuser_id(ユーザ番号)を指定して(ユーザごとの)解答+質問文を取り出したいのです。

やりたいことは分かっていただけましたでしょうか?

161:NAME IS NULL
07/12/18 19:50:55
SELECT 社員番号, 名字, 名前, 年齢, 性別 FROM 社員テーブル;
SELECT 社員番号, 資格名, 取得日 FROM 資格テーブル;
SELECT 社員番号, 部署名, 配属日 FROM 部署テーブル;

これらのSQL文を1文で取得したいのですが可能でしょうか?
社員テーブル1つに対して資格テーブル,部署テーブルは1行以上になる可能性があります。

■社員テーブル
 ■資格テーブル1
 ■資格テーブル2
 ■資格テーブル3

 ■部署テーブル1
 ■部署テーブル2

このように配列で返して欲しいのですがどんな方法があるでしょうか?
または皆さんならどうしますか?
やはり3文で応答するしかないのでしょうか?

宜しくお願い致します

162:NAME IS NULL
07/12/18 20:40:41
>>161
ストアドでOK

163:162
07/12/18 20:45:39
ストアドじゃ意味不明だ罠。
JavaストアドでOK。

PL/SQLでも問題なく出来るとは思うけど、
VARRAYとか考えずに配列データとして出力まとめるなら、
普通の記述言語の方が楽だろ。

164:NAME IS NULL
07/12/18 21:27:16
>>161
絶対にやってはいけない:
SELECT 社員番号, 資格ARRAY, 部署ARRAY
FROM 社員テーブル
INNER JOIN (SELECT 社員番号, SYS_CONNECT_BY_PATH(資格名 || '@' || 取得日, '/') 資格ARRAY, CONNECT_BY_ISLEAF 資格_IS_LEAF
FROM (SELECT ROWNUM RN, 社員番号, 資格名, 取得日 FROM 資格テーブル)
START WITH RN = 1 CONNECT BY PRIOR RN = RN + 1 AND PRIOR 社員番号 = 社員番号) USING (社員番号)
INNER JOIN (SELECT 社員番号, SYS_CONNECT_BY_PATH(部署名 || '@' || 配属日, '/') 部署ARRAY,
CONNECT_BY_ISLEAF 部署IS_LEAF
FROM (SELECT ROWNUM RN, 社員番号, 部署名 , 配属日 FROM 部署テーブル)
START WITH RN = 1 CONNECT BY PRIOR RN = RN + 1 AND PRIOR 社員番号 = 社員番号) USING (社員番号)
WHERE
1 = ALL(資格_IS_LEAF, 部署IS_LEAF)

165:164
07/12/18 21:36:13
>>164
あ、ROWNUMのところは適当に
ROW_NUMBER (PARTITION BY 社員番号 ORDER BY 社員番号)
ということにしておいてください。MySQLみたいな集約のCONCATが無いOracleでたまにやる。
(ソースコードには残らない仕事のときだけ)

166:NAME IS NULL
07/12/18 23:31:45
>>159
ありがとうございます!

167:NAME IS NULL
07/12/19 10:06:27
>>164

そのSQLは階層問い合わせ使ってるから、バージョンによっては使えない。
使えるバージョンを書いておかないと、勘違いする人いるから
書いた方が良いいと思う。

168:NAME IS NULL
07/12/19 19:29:44
階層的クエリは9i以降だよ。新規案件で8i使ってる人いるのかな?

169:NAME IS NULL
07/12/20 00:18:16
SQLのパフォーマンス面で質問があります。

Aテーブルに50万件のレコードが格納されており、whereで5000件程度に
絞れると仮定します。
1:select * from A inner join B on ( ) where ~
2:select * from (select * from A where ~) inner join B on ( )

この2つを比較するとどちらの方がパフォーマンスがよいのでしょうか?

170:NAME IS NULL
07/12/20 01:20:04
内部表が少ない方がパフォーマンスが良い。
最初に評価される表がINDEXを使えたり、行数が少ないなら早い。
1は結合してから検索かけてる
2はA表を最初に評価対象にしている。
結果は2だろうけど、RDBMSがどのような最適化してるから知らないからな。

171:NAME IS NULL
07/12/20 01:20:06
実行計画とってみればいいじゃない
たぶんOracleが強力に最適化してしまうので、どっちも同じ実行計画になるよ。

172:NAME IS NULL
07/12/20 23:30:04 5x3NWZXY
こんにちは、オラクルについて質問があります。

オラクルクライアントってサービスなの??

サービスであるならば、オラクルを使用しないシステムの開発中は、
サービスを停止したいのですが、、

173:NAME IS NULL
07/12/21 00:56:53
止めても構わないよ。
所詮、バックグラウンドでリスニングするための設定プロセスにすぎないから。

174:NAME IS NULL
07/12/22 17:43:56 qZUX37h2
>>173
こんにちは、172です。

オラクルクライアントのサービスはどうやってとめるのですか?

175:NAME IS NULL
07/12/22 20:32:56
>>174
Oracle Clientはサービスじゃない。


176:NAME IS NULL
07/12/22 21:08:24
オラクルクライアントってサービスなの??
サービスであるならば、サービスを停止したいのですが、、

止めても構わないよ。

オラクルクライアントのサービスはどうやってとめるのですか?

Oracle Clientはサービスじゃない。 ←今ここ


一人、バカが紛れ込んでいます。さて、誰でしょう?w

177:仕様書無しさん
07/12/22 21:20:54
え?一人なの?

178:NAME IS NULL
07/12/22 23:51:05
オラクルクライアントってサービスなの??
サービスであるならば、サービスを停止したいのですが、、

止めても構わないよ。

オラクルクライアントのサービスはどうやってとめるのですか?

Oracle Clientはサービスじゃない。

サービスでないなら止める必要無い。
終了。

179:NAME IS NULL
07/12/25 00:12:49
オラクルマスターって、ねずみ講?

180:NAME IS NULL
07/12/25 00:46:20
OracleClientはサービスじゃなくて、
設定ファイルを使ってオラクルと通信するクライアントツール

181:NAME IS NULL
07/12/25 01:13:44
つまり >173 が分かってなかった、ってことでFA?

182:NAME IS NULL
07/12/25 06:20:57
>>181
何をいまさらwww

183:NAME IS NULL
07/12/26 18:54:47 if5svl3h
amd64でもchrootでxe入れることが出来るとは。

184:NAME IS NULL
07/12/27 00:03:56
>>183

Kernelがi386だったというオチだったりしないか?

185:NAME IS NULL
07/12/27 11:27:38 YLT4m45U
linuxでoracleを動かしているんですが、インストールしただけで
プロセスが大量にできて、メモリも結構食っているので、一旦止めようと
思っています。でも、止め方がわかりません。
バージョンは11g-R1です。どうすればいいですか?
/etc/init.d/の下にもそれらしきものはないし。。。


186:NAME IS NULL
07/12/27 12:25:44
sqlplus "/ as sysdba"がなんのことか分からないなら

とりあえずこれを試してみよう。
/opt/oracle/product/11.1.0/db_1/bin/dbshut


187:NAME IS NULL
07/12/27 12:29:57 YM6G8kqZ
>>184
$uname -ar
Linux debian 2.6.18-5-amd64 #1 SMP Mon Dec 3 04:55:28 UTC 2007 x86_64 GNU/Linux

188:150
07/12/29 17:15:41 PG+gUzIR
>>151
みなさんアドバイスありがとうございます。

>>152>>155
ありがとうござます。
今まで出された項目を下に書いてみました。

・ レコード件数
・ 使用領域・未使用領域の状況
・ Oracleの表領域が格納されているディスク自体の容量の状況
・ CPU使用率の推移
・ DiskI/O量の推移
・ 夜間バッチの処理時間推移
・ レスポンス計測・平均レスポンス時間の推移
・ 日別、時間別のアクセス数

> アプリ側からみたDBの報告なら日別、時間別の
> アクセス数集計とレスポンス計測・報告で十分。

アプリ側かDB等の環境/基盤保守側かで報告する観点も変わってくるんですね。
夜間バッチの処理時間推移もどちらかというとバッチアプリに関連するから
念のためそれも調べておこうかと思います。

>>153

パフォーマンス的に問題が発生していないかを確認しておきたい、
というのが、今回の目的に該当するかと思います。

登録・更新するレコード件数が増加傾向にあるので、自分は当初
・ 使用領域・未使用領域を監視して必要に応じ再編成等対処
・ 自動拡張設定になっているので、表領域が格納されているディスク自体の容量を確認しておき
万が一自動拡張したときに容量不足になる危険性がないか調査
というのを考えてました。

それと、誤解を恐れずに書くと、ちょっと言葉は悪いですが

DBに関する報告書を作成するのは、「DB障害を未然に防ぐため」が
いちばん重要な目的だとは思うのですが、
アプリ側の報告書なので
「納品物作成しましたよ、ちゃんと毎月チェックしてますよ」という
「作業したというアリバイ作り」っていう面もあると思ってます。

(もちろん、これが第一目的ではないですが……
ただDB障害が発生していないからといって何にもチェックせずのほほんとしてるのは
よくないのでは、と思うので。)

そういう発想はよくないのかもしれませんが……。

189:NAME IS NULL
08/01/01 21:32:44 oiaQYP0E
>>186
こんなん出ましたけど、、、、

$ sudo /home/db/oracle/app/eiichi/product/11.1.0/db_1/bin/dbshut /home/db/oracle
Failed to auto-stop Oracle Net Listener using /home/db/oracle/bin/tnslsnr


190:NAME IS NULL
08/01/02 01:12:27
がんばれ、えいいち

191:NAME IS NULL
08/01/02 01:32:43 Dgv8lEDk
>>190

木手?

192:NAME IS NULL
08/01/02 01:33:09
>>190
教えてよ。

193:NAME IS NULL
08/01/02 02:27:49
えいいちです。
oracleを停止するのは諦めました。
とりあえず、oracle関係のプロセスを全killして、関係ありそうなファイルを削除
しました。リブートしてみて何か問題がなければいいかなと。


194:NAME IS NULL
08/01/02 03:24:34
>>193

えいいち、いきなり消すなんてどうかしてんぞ?
root.shで色々といじくられてるんだぞ?
気に入らなかったら、どうしてインストーラー使ってアンインストかけようとしない?

195:NAME IS NULL
08/01/02 22:13:11 IKgH7NoX
基本的な事ですが
別にオラは来ないんですが
なんでオラクルなんですか?

196:NAME IS NULL
08/01/02 22:18:47
>>195

どうしても知りたかったら、Matrixを見てみるといい。


197:NAME IS NULL
08/01/02 23:53:11
オラクル 神のお告げ

198:NAME IS NULL
08/01/03 00:29:55
オラクルっていうとブラックオニキスのファイヤークライスタル編しか思い浮かばん

199:NAME IS NULL
08/01/03 02:32:44
スターオーシャンのスキルのひとつ

200:NAME IS NULL
08/01/03 04:46:03
>>198

オサーン、ハケーン。
ムーンストーンの発売をずっと待っているのはお前だけではあるまい。

201:NAME IS NULL
08/01/14 11:30:37
iSQL*PLUSに対して、DBA権限でログインしたいと思っています。
マニュアルを読むと、JAZNとかいうシェルを起動するか
GUIでやるみたいなのですが、両方とも良くやりかたが
分からないです。
どなたか教えて頂けますか?

202:NAME IS NULL
08/01/14 18:48:37
>>201
使ってないからしらないけど
iSQL*PlusはWindowsMeと同じに状態になってる
調べておいても無駄になるよ

203:NAME IS NULL
08/01/14 19:20:33
>>202
そんな感じなんですか。
マニュアル見たら、「これからはisql*plusが基本ツールになる」
みたいに書かれていたので、isql*plusを使おうかと。
そうでないなら、sql*plusでいいかもしれませんね。

204:NAME IS NULL
08/01/14 21:07:01
>>203
URLリンク(otndnld.oracle.co.jp)

205:NAME IS NULL
08/01/18 15:19:35
高度な質問の中すみません。
ちょっとわけわからのです。
FileMakerPro9からODBCでOracle7(!)のテーブルを持ってきたいのですが・・・

SERECT * FROM ##### (####はテーブル名)

としても、
「ODBCエラー; [Microsoft][ODBC driver for Oracle][Oracle]ORA-00942;表またはビューが存在しません」
となります。
なんででしょう?

206:NAME IS NULL
08/01/19 09:42:01
>>205

どのユーザーでログインしてるんだ?
ちゃんとSchema指定してるか?

select * from boge.hoge_table; みたいにさ?

207:NAME IS NULL
08/01/21 09:17:05
>>206
ユーザーはsys(管理者権限)です。
Schema指定・・・したけどかわらん orz

208:NAME IS NULL
08/01/21 09:48:31 P/yV5kbJ
>SERECT * FROM ##### (####はテーブル名)
SELECT * FROM ##### (####はテーブル名)

selectのスペルミス?

209:NAME IS NULL
08/01/22 10:06:15
>>208
ぁぅ・・・
それは書き込み時のミスです。
ちゃんと「select * from ####」です。

もう、あれですかね。
Oracle7って時点でだめだめっすかね?

210:NAME IS NULL
08/01/23 03:45:20 s8cIM/FN
10gです。
なるべくヒントを書かずに最適な実行計画を立てさせるには、
統計情報をどのように取得したらよいでしょうか?
そんなに複雑ではないSQLなのですが、
件数が増えると早々にインデックスを捨ててフルスキャンしてしまい、
ヒントでインデックスを指定するのに比べ、実行時間が10倍以上になってしまいます。
今は DBMS_STATS を使用し、100%で取っています。


211: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みたいな関数も動かないし...

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

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



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