1 :
NAME IS NULL :
2006/11/19(日) 12:37:35 ID:2/D9x78l
|┃三 `、 - 、_ _,. マ |┃三 `ヽ、~` - 、_ , -──、._,. - ' / |┃三 \ i' l´l l⌒l l`i / |┃三 \ |⊂⊃~⊂⊃|_ / いやだ |┃三 ⊂) ). ロ l⌒l ロ|)⊃ |┃三 ヽ.iコ `-´ ri/| |┃三 , '⌒ ヽ_,. -/ヽ._,.旦,_ン. .| , - 、 |┃三 ,. - '~`ヽ `ヽ、 :|, -~──'── 、_ |┃三 >-─-、 | , -─-、. `──── ` ヽ |┃三 , ' |::| | | | ,───、 / ̄ ̄ヽ i_.
来週、職場にSANが導入されるのですが、新米DBAの自分に扱えるのかどうか? そのSANってのは、8本HDDで構成されるRAIDなんだそうです。 それで、オラクルエキスパートの皆さんに質問したいのですけど ASMを使ってSANを扱う場合、ディスクグループは単純にデータ用と リカバリ用の二つにしちゃっていいでしょうか? テーブルスペースも、テーブルと索引で分けたりする必要ないような 気がしてます。
5 :
NAME IS NULL :2006/11/21(火) 13:23:28 ID:ZVoUNrAm
すいません。PL/SQL でカーソルを作って select させるときに 1レコードごとに %rowtype の変数に入れられますが、この時 カラムの名前が事前に分からない場合はどうしたらいいんで しょうか? DECLARE CURSOR c IS SELECT * FROM x; BEGIN FOR r IN c ここで r の内容を全部出したい。 END FOR; END; / 実際にやりたいのはCSV出力です。
あ、FOR の辺りちょっと間違えた。 すいません。FOR r IN c LOOP 〜 END LOOP; ですね。
>カラムの名前が事前に分からない場合 多分、無理なんじゃないかな。 EXCEL/VBAで、ADOとかoo4oを使えばできるけどね。 カラムを番号で取れるから。
>>5 そのケースで言う
x表の定義が確定してないってこと?
それとも表は決まってて、使う列が不明ってこと?
前者だったら結構苦しい方法を取ることになるのかのう
9 :
5 :2006/11/22(水) 21:38:29 ID:7Hi0ms3O
>>7 本とかも立ち読みして色々調べてみましたが、段々と無理っぽいことが分かってきました。
>>8 表の定義が変更された時に一々書き換えるのが面倒だなと思ったんです。
10 :
NAME IS NULL :2006/11/25(土) 20:39:16 ID:fB7Zbtis
すみません、お尋ねしたいことがありますが OracleのiSQL*Plusの起動はできたのですが、ログイン時のユーザ名はどこから参照すれば見つかりますか? パスワードはわかるのですが、ユーザ名が・・・ なので、アドバイスお願いします。
そのユーザーは自分で作ったの? デフォルトで作成されるユーザーならSYSかSYSTEMで試してみなさい (SYSDBA,SYSOPER接続で)。 デフォルト以外のユーザーならとりあえず、接続できないと、 参照できん。
12 :
NAME IS NULL :2006/11/27(月) 09:51:34 ID:3lLbgr1L
Oracle10gで データベースAをexpするとログは日本語ででてくるのですが データベースBをexpするとログは英語で吐き出されます コレを英語で統一したいのですがどのようにすればいいか教えていただけ無いでしょうか?
13 :
NAME IS NULL :2006/11/27(月) 11:44:47 ID:3lLbgr1L
まじであんなしょぼ更新2回かよ 11時と11時30
Linuxに入れたOracleをtarで固めて別のLinuxに移行する時って、 どのディレクトリとファイルを移動したらいいの? とりあえずoracleが入ってるディレクトリと、/etcだけ移動してみようかと思ってるんだけど
14の方は釣りですか?
動くことは動くだろ
どうだろ?
windowsで2ノードRACを組もうと思ったら、最安の構成はなんでしょうか? できるだけ今ある機器を生かしたいです。検証用なので可用性は二の次でいいです。 現在ある機器はWIN2Kサーバが入っているPC2台/NIC6枚/玄箱1個です。 2万以内なら機材購入可能です。 Linuxなら玄箱が使えるようなんですが。
なんの検証なのかわからないけど、組んで動かすだけならW2K Serverにメモリを 2G以上にして仮想PC突っ込めば1台で済むんじゃね?
21 :
NAME IS NULL :2006/12/02(土) 00:36:12 ID:URXeSl2Z
ここまで揃ってるのに、VMを薦めるのはどうかな。 SCSIカード2枚・・・・AHA-29160あたりで大丈夫@1,000〜2,000 外付HDD・・・・中身がIDEのじゃなくて純SCSIのもの。@5,000〜15,000 SCSIケーブル・・・・これが難しい。SUNやHPの中古が見つかればグー。新品は高い。 あとは、SCSIカード − HDD − SCSIカードをデイジーチェーンで。 これでちゃんとしたRACの出来上がり。サポートだって受けられる。ノードは増やせないけどね。 外付HDDはunipackやNTCあたりのが中古で安く買えるんでないかと。 急ぐならottoあたりで、ヤフオク覗けば安いのもある。ケーブルは粗悪品を掴まないよう注意。 以上、机上論でやった事ない(w 成功を祈る。
なんでVMを‥‥って、お前は最初に「2万以内なら機材購入可能」と 条件ついていたのが読めんかったのか?
検証用ならVMでいんじゃねぇ? もしくは、マニアックに実際にRAC組んで満足したいならそれでもいいが、 どうせすぐあきると思う。
VMWareをVMというのはやめないか。
>>22 21は楽勝で2万以内なんじゃね?unipackの中古なんて安いしいけると思う。
Unipack2個買ってASMで冗長化までいけるかも。
FC考えてたから敷居が高かったけど、SCSIなら安く組めるんだねぇ。
NIC余ってるからのチーミングでインターコネクトも冗長化できるかも。
俺もSCSI押したいね。ぜひ報告よろ
>>19
誰かVMwareのつもりで使っている人がいたのか? >24 以外の人で。
なるほど、SCSIでいけるんですね。 PCIが64bitじゃないですけど、大丈夫でしょうか。 まあ、やってみます。tarも使いたいですし、推奨構成なのは大きいです。 自分では考え付きませんでした。相談させていただいて良かったです。 本当にありがとうございました。 仮想PCを薦めてくれた方もありがとうございました。 結果は報告させていただきます。
28 :
NAME IS NULL :2006/12/06(水) 21:40:19 ID:n5iQdNX2
質問です。 PL/SQLで、CURSORのSELECT分に IN句をつかっているんですが そこの値に配列を渡して処理することは可能でしょうか?
初心者の質問、ごめんなさい。 プロシージャの中で関数を使いたいんですけど 「PLS-00201 関数名を宣言してください」って出ちゃいます。 どうしてでしょうか、、、 下がだいたいの私のコードです、、、 create or replace function func1 ( p_string in varchar2) return number as l_number number; begin ...... end; / CREATE OR REPLACE procedure proc1( in_num in number ) as anum number begin anum := func1('1'); end; / どなたかご存知の方がいたら よろしくお願いしますm(__)m
>>29 procedure の実行権限が付与されていない可能性があります。
31 :
27 :2006/12/10(日) 14:14:33 ID:Q2S38gbG
無事構築できました。 SCSIカード ASC-29160(中古) \2,000×2 外付HDD SUN Unipack(中古) \6,000 SCSIケーブル KB-WSAM1(新品) \4,000×2 合計 約\18,000 でRAC組めました。 アドバイスいただいたとおり、ケーブルが厳しかったです。 中古を探している余裕がなかったので、安い新品探して購入しました。 インストールも全く問題なく、無事に検証環境ができました。 アドバイス、本当にありがとうございました。
32 :
NAME IS NULL :2006/12/11(月) 10:23:20 ID:E6HiKDK4
>>31 あ、行けたんだ。おめでとう。
新品にしてはケーブル安いな〜。ottoの中古より安いよ。
VHDCIと68ピンか。ジャンクを探すのは確かにしんどい。
その値段なら買って正解だと思うよ。
2万で出来るのか〜。
33 :
NAME IS NULL :2006/12/11(月) 17:37:22 ID:Jr+OMzZp
Named User Plusライセンスについてなのですが 例えばwebアプリを通してDBにアクセスするシステムを、使う可能性がある人が50人居たとすれば 50人分のライセンスが必要なんでしょうか?それともwebサーバーを一人と見なしてライセンス1個でいいんでしょうか?
テーブルを作成する時、別テーブルと同じ索引名を指定してしまった のですが、この場合どうなるんでしょうか? 索引を再作成しないといけないのでしょうか?
36 :
29 :2006/12/11(月) 23:45:14 ID:???
>>30 できました!お返事遅くてごめんなさい。
どうもありがとうございます!!
SQL Serverを長く使っていたのですが、Oracleを利用する事になりました。 Create文を作る際、 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TABLENAME]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[TABLENAME]') GO と入れておくと、テーブルが既に作られていた場合はDROP TABLEを実行するのですが、 OracleでこのようなSQL文は書くことが出来るのでしょうか? PL/SQLでは BEGIN内で更新関係のSQL文はNGらしく悩んでます。
俺の知識が正しければ無理。 DROP TABLE 〜 / CREATE TABLE 〜 / の様にセットで書いたら? 存在しないテーブルに対してDROPするとエラーになるが、悪さはしないので無視すれば良い。 一番楽なのは Object Browser 等でテーブルの一覧を全選択して右クリックで削除を選択するとか。 但し、間違えた時のリスクを考えると、この方法はお勧め出来ない。 以下の方法とかもあるけど、そこまでしなくてもいいと思う。 DECLARE CURSOR CUR IS SELECT A.OWNER, A.TABLE_NAME FROM ALL_TABLES A WHERE A.OWNER = 'USR01' AND A.OBJECT_TYPE = 'TABLE'; BEGIN FOR CU_REC IN CUR LOOP BEGIN EXECUTE IMMEDIATE 'DROP TABLE ' || CU_REC.OWNER || '.' || CU_REC.TABLE_NAME; DBMS_OUTPUT.PUT_LINE('DROP成功 : ' || CU_REC.OWNER || '.' || CU_REC.TABLE_NAME); EXCEPTION DBMS_OUTPUT.PUT_LINE('DROP失敗 : ' || CU_REC.OWNER || '.' || CU_REC.TABLE_NAME); END; END LOOP; END; / ※自宅にORACLE環境が無いので動かしていないから、正常動作するかは分からないよ。多分大丈夫。
ちょこっと修正 DECLARE CURSOR CUR IS SELECT A.OWNER || '.' || A.TABLE_NAME AS TBL FROM SYS.ALL_TABLES A WHERE A.OWNER = 'USR01' AND A.OBJECT_TYPE = 'TABLE'; BEGIN FOR CUR_REC IN CUR LOOP BEGIN EXECUTE IMMEDIATE 'DROP TABLE ' || CUR_REC.TBL; DBMS_OUTPUT.PUT_LINE('DROP成功 : ' || CUR_REC.TBL); EXCEPTION DBMS_OUTPUT.PUT_LINE('DROP失敗 : ' || CUR_REC.TBL); END; END LOOP; END; /
40 :
NAME IS NULL :2006/12/15(金) 00:26:23 ID:AN/K2Elz
くだらない質問かもしれませんが、、、 UPDATE文でWHERE句で条件絞って、NULLで 更新をかける、sql文があります。 対象レコード数に大きな変動が無いにも関わらず sqlの処理時間にバラつきが・・・ テーブルはバッファキープ有効に設定しています。 原因を思い当たる方がいらっしゃいましたら ご指導くださいませ;
>>40 @個別に↓を流した後に update しても処理時間がばらつくか、試してみて。
alter system switch logfile;
alter system flush shared_pool;
alter system flush buffer_cache;
A統計情報や実行計画は取得してみた?
Bnullに更新する列の長さが、レコード毎に大きく異なることはないよね?
>>37 >PL/SQLでは BEGIN内で更新関係のSQL文はNGらしく悩んでます。
動的なら可能
インストール時に選択しなかったんだと思いますが、 exp/impのexeファイルがbin下にいない端末があります。 これはexp.exeとimp.exeだけを他端末からコピーしてくれば動きますか? それともoracleのインストールからやり直さないとダメですか?
44 :
NAME IS NULL :2006/12/16(土) 17:32:14 ID:4ZspRBrb
>>43 exp/impをインストール時に選択できないんじゃぁ・・・。
誰かがexeファイルを消してしまった可能性があるなら
単純にコピーでおk
RHEL ESver4上に、ORACLE10gR2をインストールしました。 その後、DBCAでデータベースを作成し、NETCAでリスナーを 作成しました。 データベースはstartできたのですが、リスナーが起動できません。 リスナーを起動すると以下のエラーが出力されます。 リスナーの設定はいろいろといじってみましたが、変わりません でした。9iで使用していた設定でもだめでした。 一応自分でも調べましたが、分かりませんでした。 もしかしたらOS側の設定かなという気もします。 原因わかりましたら教えてください。 エラー内容 TNS-12537:TNS:connection closed TNS-12560:TNS:protocol adapter error TNS-00507:Connection closed Linux Error:29:Illegal seek
46 :
NAME IS NULL :2006/12/21(木) 18:59:47 ID:R8+8OtYh
10gで文字化けを起こしてしまう一覧を紹介してくれているところはない でしょうか? 今までは化けてしまうものは外字登録でごまかしていたのですが、最近 は遠隔地のお客さんや数十台使用のおきゃくさんが増えてきたので、し っかりと対策を練りたいと考えています。
文字化けは10gだからとか関係ない。 データベース、アプリケーションサーバー、クライアントがどの文字コードを使うかによって 変わる。
48 :
NAME IS NULL :2006/12/23(土) 18:28:21 ID:7fqq+QaR
table T にa、b、cのカラムがあり且つa、b、cでPKの場合 where a=1、b=2とすると全件操作よりは効率いいもんなんでしょうか?
49 :
NAME IS NULL :2006/12/23(土) 18:50:57 ID:fExmKA+s
Java+Oracleのシステムでの話です。 データを絞り込んで取得する場合、SQLで複問い合わせを駆使して取得するのと、 Java側で全件取得後絞り込むのでは、ネットワーク転送負荷を考慮しない場合、やはりSQLでやらせたほうが高速なのでしょうか?
>>48 PKがa,b,cの複合インデックスになってるはずだから、
a,bなら前方一致でインデックスが効くはず。
>>49 プログラム側で全件取り込む発想をするやつは癌あつかいされるから気をつける!
>> 49 件数がおおいなら、Oracleで絞り込んだほうが速いと思うけど。
>>50 ありがとう。
PKの定義順で変わるということですか。
例えばb、c、aと定義すると
where b=1、c=2は前方一致というやつで全件検索しない
where c=1、a=2とすると全件検索。
正しい?
>
>>49 > プログラム側で全件取り込む発想をするやつは癌あつかいされるから気をつける!
そうだね。
Javaに展開されるコストをかんがえれば、全件取り込みのデメリットはわかるとは思うけど。
>>54 おま。OKってよりYESって言うべきだろ。そこ。
Oracleの一時テーブルって同じテーブルでもセッション毎に違うデータを持てるるんですよね? 今、Oracle10gとAccess2003でCS型のシステムを作ってるんですけど Access側からストアドを起動してOracleの一時テーブルにデータを書き込んで そのデータは取っておきたいからローカルテーブルにコピーしておこうと思ったら なんとセッションが違うのでリンクテーブルやパススルークエリではデータをもってこれませんでした。 なにかいい方法ありませんかね? 今は、レコードセットを取得してループさせて1レコードずつローカルテーブルにコピーしてるんですけど どうにも遅くて困ってます。
だから一時テーブルだと思うんだが。
60 :
NAME IS NULL :2006/12/27(水) 14:01:16 ID:ZriWyeGJ
RACについて教えてください。 RACは一つのサーバが故障しても他のサーバが稼動していれば大丈夫 ってことららしいんだけど、 共有ディスクの故障についてはどう対策しているんでしょう? 別にスタンバイDBでレプリカ作ったり データガードを導入しないといけないのかしら?
61 :
NAME IS NULL :2006/12/27(水) 17:59:37 ID:ZnqaKKoc
>>60 共有ディスクが故障したらオシマイ。
要件にもよるが・・・。
外部記憶媒体からのバックアップがNGなら
データガードを使うしかなかんべ。
62 :
60 :2006/12/27(水) 18:35:01 ID:???
やっぱRACだけじゃダメなのね。 ありがとう!
63 :
NAME IS NULL :2006/12/29(金) 09:46:59 ID:KzbHeGcY
9i以降ってローカル管理表領域を使うのが一般的だと 思うのですが、テーブルのエクステント数って気にするべきですか? オラクルが自動管理しているみたいなので不要?
64 :
NAME IS NULL :2007/01/05(金) 21:32:25 ID:kpayA3aZ
初歩的な質問で申し訳ありませんが… Oracle10gに対し、VB2005でODP.NETを利用して接続を試みてるのですが 接続がうまくいきません。 【VB2005 ソース】 ’一番先頭に宣言 Imports Oracle.DataAccess.Client Imports Oracle.DataAccess.Types ’SUB内 Dim con As New Oracle.DataAccess.Client.OracleConnection con = New Oracle.DataAccess.Client.OracleConnection() con.ConnectionString = "User Id=USR; Password=PASS; Data Source=ORCL" con.Open() ← ここでエラー「ORA-12154:TNS:指定された接続識別子を解決できませんでした。」 と、なってしまいます。 tnsnames.ora内では ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = HOST名)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) SQL*PLUS上では、「connect USR/PASS@ORCL」で接続可能です。 開発端末には、Oracle10g Cliantを管理者ベースで導入しました。 VS2005 Professionalはインストール後、「参照の追加」でOracle.Data.Access(10.2.0.100)は追加しました。 VS2005上のサーバークスプローラーからはデータの接続は可能です。 レジストリ上のORACLE_HOMEもきちんと設定されています。 正直、この後、何を調べれば良いのか想像もつきません… どなたか、ご教授いただけないでしょうか…
接続文字列の最後の要素の後にも;追加してらどうなる??つまり "ほにゃらら・・Password=PASS; Data Source=ORCL;" ORCLの後にも;ね。
66 :
NAME IS NULL :2007/01/06(土) 16:31:47 ID:hltvdUi7
>>65 ありがとうございます。
しかし、それも試しましたが、結果は同じでした…
なんか、基本的なトコを何か見逃してるのかも知れません…
>> con = New Oracle.DataAccess.Client.OracleConnection() これ必要か?
68 :
NAME IS NULL :2007/01/07(日) 18:07:23 ID:TuWvDd0G
>>67 無い場合もやって見ました。でも、結果は同じだったので残してあっただけです。
申し訳ありません。
>>64 (SERVER = DEDICATED)
Oracle初心者です。もしかするととんでもない質問かもしれませんが、ご教授ください。 expでエクスポートするとdmpファイルを作成できますが、 このdmpファイルのファイルサイズを見積もることは可能なのでしょうか?(レコード件数や表領域の大きさ等で) よろしくお願いします。
71 :
70 :2007/01/09(火) 08:20:14 ID:???
言葉不足でした。 目的は、dmpファイルを外部媒体にバックアップしたいのですが、 どれくらいの容量を想定すればいいのかが分かればと思います。
>>70 レコード件数に比例する。
表領域の大きさは関係しない。
中をのぞくと、create tableやinsert命令がなまに近い(そのままではないが)形で
書き出されているのがわかる。
73 :
NAME IS NULL :2007/01/09(火) 10:48:20 ID:NpJ7dbVJ
>>69 ありがとうございます。
tnsnames.oraを下記のように修正してやって見ました。
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
が、やはり駄目でした…orz
SERVICE_NAMEをSIDに直したり、HOSTをIPアドレスにしたりも
しましたが、「ORA-12154」のメッセージは変わりません…
ひょっとして、Oracle.Data.Access(10.2.0.100)はVS2005に
対応していないのでしょうか?
>>73 Oracle.Data.Access(10.2.0.100)+VS2005で試してみたがちゃんとつながる。
なんの問題もない。
FireWallとかの設定じゃないの?
75 :
NAME IS NULL :2007/01/10(水) 12:46:55 ID:7lHXEzdc
>>74 ありがとうございます。
FireWall完全に切って見ても駄目でした…
ひょっとしたら、サーバ側に何か製品が足りないのかも知れません。
それか、VS2005の環境か?
両方の製品から洗い直しして見ます。
76 :
NAME IS NULL :2007/01/11(木) 13:07:44 ID:FFqUR/Nn
DBLINKを使用したトリガーは作成可能でしょうか?
77 :
NAME IS NULL :2007/01/13(土) 01:09:01 ID:bK5WbtzQ
SQLで質問があります。 データ型Intervalを比較して出力するにはどのようなSQL文を書けば良いのでしょうか? 例えば、工事計画のテーブルで工事日数(Intervalで設定)が30日以上かかる物のみを出力する、といった感じです。 ググっても出てこないので困り果てています。
flashbackの動きについて教えてください。 下記手順で、IDの登録前にflashbackさせたいのですが、 「create restore point YYYYMMDD」の段階で 「権限が不足しています」とエラーが表示されます。 insertやdeleteもできる権限でsqlplusにログインしているので 権限不足というのは考えづらいのですが、 他に原因となりそうな点はないでしょうか? server$ sqlplus (ID/PW入力) SQL> create restore point YYYYMMDD; SQL> insert into user_id (id,pw) values('user0001','password'); SQL> insert into user_id (id,pw) values('user0002','password'); SQL> . SQL> . SQL> . SQL> insert into user_id (id,pw) values('user0009','password'); SQL> flashback table user_id to restore point YYYYMMDD;
>>78 SELECT ANY DISCTIONARY
FLASHBACK ANY TABLE
SELECT CATALOG ROLE
の権限はあるのかな? insert/delete ができるのとは違うよ。
80 :
NAME IS NULL :2007/01/14(日) 21:28:24 ID:+96OC+CX
画像などバイナリファイルを、 BLOB型で登録するのと、 データストレージなどに登録するの、 どちらが良いでしょうか? レスポンスよりも、 なるべくデータ容量が少なく済むほうがいいです。
81 :
NAME IS NULL :2007/01/14(日) 22:49:05 ID:rvkZDUbj
>>79 ちょっと確認しておきます
自分で立てたDBじゃないもので・・・
>> 80 管理とかバックアップとかが楽なほうが良ければBLOBという気がする。 実装が楽なのは、データストレージなんじゃないんかな。 ディスクはそれほど変わらないんじゃない?
Oracleにはテーブル定義をSQLスクリプトとして出力する機能は標準ではついていないのですか?
標準では無い希ガス。 まぁ、簡単なSQLで取れるから必要ないっちゃ無いけど。
あのゴミ屑みたいな エンタープライズマネージャーコンソール というjavaアプリはなんですか?
データベースリンクってどういうときに使うの?
87 :
NAME IS NULL :2007/01/21(日) 22:59:22 ID:GASWVjjK
すみません、オラクルへの接続で教えていただきたいのですが。 C#を使って、他の部屋にあるデータベース(Oracle9i)マシンにアクセスする仕組みを作ろうと思ってます。 設定画面で、OracleマシンのIPアドレス,SID,User ID,Passwordを入力してもらって、 その情報を使って接続したいのですが、 ODP.NETを使って接続するときに、対象のマシン名(IPアドレス)を指定したいときには どのように記述すればいいのでしょうか? ConnectionStringに書く「Data Source」でうまく指定できないものかと調べたんですが どうしても見つけられませんでした。。。
88 :
87 :2007/01/22(月) 01:28:58 ID:???
自己解決しました。もっといい方法がある気はするんですが、 Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl))) って、ゆーふーに、tnsnames.oraの中身をまるごと書いたらつながりました。なんか、無理やりな感じ。 あ、exp.exeも別マシンから動かしたいんだけど、もしかして exp.exe username/password@(DESCRIPTION=....略) って書いたらつながるのかな??
本末転倒なんだよ。 DataSource(Connection String)につらつらと書かないようにするために、 tnsnames.oraがあるといってもいい。
Oracleとしてはクライアントのスタックを複数バージョン準備したくないのはわかるけど JDBCのタイプ4ドライバでやっちゃってるからね。 クライアントのインストールや設定がめんどいというのはあちこちで噴出している。
すいません。どなたか教えてください。 SQL loaderで空ファイルをよみこんだときに、 エラーにならない指定の仕方がCTLファイルにあったりしますか? オラクルはバージョン9iです。よろしくお願いします。
92 :
NAME IS NULL :2007/01/24(水) 03:45:52 ID:GuuZrrLS
oracle 11からDB2 V9みたくXMLを使えるようにならないの? ハイブリットDBにならないかってことなんだけど、どうっすか?
Xqueryが使えるわけではないし。
「DB2 V9みたく」のみたくの部分を説明してないのが悪いな。 Oracleスレなんだから他のDBのことは知らない前提で質問しなきゃ。
Xqueryなら10gで使えるみたいだが。
>>95 すいません、DB2 V9からXQUERY使ってデータを抽出することが できるようになったけど、Oracle 10gじゃまだのような事を書いてあったので つい聞いてしまいました。
98 :
NAME IS NULL :2007/01/25(木) 22:12:59 ID:DBDmUo23
ひとつ教えて下さい。 なんでTABLEよりINDEXの方が EXTENTが発生しやすいんでしょうか? Oracleの構成か何かに関係するのでしょうか?
そのINDEXのextentが小さく設定されてんじゃないの?
RACについて教えてください。 障害が発生したときに引き継げるのは、参照系の処理だけですか? DML文はコミットされていないと、ロールバックしてしまうという認識でよろしいでしょうか?
102 :
NAME IS NULL :2007/01/25(木) 23:51:10 ID:ofnhzpct
今、alter index hogehoge rebuild中なのですが、3時間経っても終わりません。 ALRT.logを見るとREDOログのスイッチが頻繁みたいですが、今REDOログを追加しても大丈夫でしょうか? また、alter index をkillすることって、問題でますでしょうか?
103 :
NAME IS NULL :2007/01/26(金) 00:26:12 ID:kZYgLqFu
104 :
NAME IS NULL :2007/01/26(金) 00:44:45 ID:f66EjlV5
106 :
102 :2007/01/26(金) 02:15:54 ID:iorL0FSf
>>103 ありがとうございました。
alter indexをkillするにはどうしたらよいのでしょうか・・・
>>106 alter indexを実行しているSQL*PlusのPIDを指定してkillしたらいいんでは?
alter system kill session...
オブジェクトブラウザでセッションを右クリックして…
質問です。 登録してあるプロシージャやパッケージの一覧を取得したいのですが、 それを取得できるSQL文はありますでしょうか?
USER_PROCEDURESとか、そこら辺のテーブルをSELECTすれば一覧が取得できる
>111 ありがとうございます。 PROCEDURESの部分を変えれば、パッケージとかもできるんですね。
んなめんどくさいことを・・・ user_objectsからとれば一発だろうに。
114 :
NAME IS NULL :2007/01/28(日) 13:33:42 ID:G2ff/8aP
突然ですまんが知ってたら教えてほし オラクル7をアンインストしたいのだがいい方法はないかな? インストしたときのCDはない状態。ちなみにインストーラーでソフトを選んで削除ってやってもエラーではじかれるんだよ……… 古い時代の話しですまんがたのむ
エスパーさ〜〜〜ん出番ですよ〜〜〜
今日はもうMPを使い果たした
>>114 ORACLE_HOME配下やデータファイル等をごっそり
rm -rfしたらだめなの?
ものすごく基本的な質問なんですが、 like 'AAAA%'とlike 'AAAAAA%'で「AAAAAA01」を検索した場合、 どちらのほうが早く検索できるんでしょう?
>>118 どうだろ?
インデックスが張ってあって、AAAABB01みたいに
AAAAではじまるAAAAAA01以外のレコードがいっぱいあったら、
ike 'AAAAAA%'の方が早いのかな?
まあ、そうだろうな。
ちょっと質問です。 10gR2のData GuardでFSFO使用したときの切り替え時間ってどれくらいですか? 環境にもよるだろうけど、参考程度に教えてください。 OSは本当はWindowsがいいけど、なんでもいいです。
123 :
NAME IS NULL :2007/02/06(火) 23:50:05 ID:YVgAO3V9
すいません。お願いします。 Windows環境でインスタンス作成したときに データファイルとか制御ファイル、REDOとかの物理ファイル名が すべて大文字になってしまうんだけど これって仕様? 例)SYSTEM.DBF
なるね。 仕様じゃね?
125 :
123 :2007/02/07(水) 00:09:23 ID:6GMeNunB
>>124 サンクス
普段、UNIXでしかOracleいじってなくって
何故、大文字になるのかわかんなかったんですよ。。
仕様っぽいですよね。。
>>122 最新のログが当ってるんだったら、そんなに時間はかからなかったと思うぞ。
それこそ1分以内だろ。
>>114 1. Oracle関連サービス停止
2. Oracle関連のpath削除
プラットホームが
==================================================
3-1 unix系
3-1-1 Oracle関連のフォルダ、ファイル削除
3-1-2 Oracle起動ユーザ用設定ファイルの削除
--------------------------------------------------
3-2 windows系
3-2-1 Oracle関連のレジストリ全削除
3-2-2 Oracle関連のpath削除
3-2-3 再起動
3-2-4 Oracle関連のフォルダ、ファイル削除
==================================================
oracle 10g に SQL Server 2000等で言う DBCC shrinkdatabase の様な機能ってあります?
Reorgしてデータファイルのリサイズかねぇ?
130 :
NAME IS NULL :2007/02/08(木) 21:10:52 ID:6b7QxCkW
初歩的な質問ですいません。 Oracle9iにstandard edition one って適用されるか 分かる方いますか?
ない。
Internet経由でOracleを外部に公開しようと思ってますが接続できませんが 何か方法はありますでしょうか? やったこと。 ・ルータのポート変換を使ってWANポート(61521)からOracleサーバのポート1521へ変換 してルーティングを設定。 もしかしてPort1521だけではだめで他のポートも併用とかしてるのでしょうか? tnspingとかでやっても反応なし・・・・名前が解決できないといわれました・・・
>>132 tnsnames.oraの設定は問題ないんだよな?
LAN内部ではちゃんと問題なく繋がるんだよな?
それと外部からはちゃんとそのサーバーの名前も解決できるように
DNSとかに登録されてるんだよな?
例え登録されていないとしても、tnsnames.oraにはちゃんとWAN側の
IPが書かれているんだよな?
Oracleを外部に公開するんは止めて(><)
>>134 はい。別のプロトコルでは接続可能です。
Oracleを外部に公開するんは止めて(><)
>>136 というか、名前が解決されていないからtnsnames.oraの記述が
問題の様な気がするんだけど?
それとtelnetでport 61521を叩いたらちゃんとlistenerが応答
してくるんだよね?
139 :
NAME IS NULL :2007/02/14(水) 16:44:38 ID:zf43vtTF
助けてください。。。 環境 Windows2000 ServicePack4 Oracle 8.1.6 にて、間違って Oracle Database Configuration Assistant より データベースの作成をして、既存のデータベースをマウントしてしまったんです。 どうにか既存のデータベースを復旧する方法はないでしょうか? 新しく作ったデータベースはどうなっても構いません。。。
バックアップはないの?
141 :
139 :2007/02/14(水) 20:10:29 ID:???
バックアップ・・・ 取ってません(; ´д`) 既存のデータベースとは別個に新たにデータベースを作成できると思っていたので… やっぱり無理ですかね・・・ マスタのデータ内容・・・ 紙に落ちてるかなorz
新しく作ったのと既存のとでSIDが違えば大丈夫だろうけど、
>>139 には無理そうだね。
143 :
139 :2007/02/14(水) 22:22:37 ID:???
>>142 データベース作成→標準(推奨)→データベース・ファイルの新規作成→汎用→
同時接続ユーザー数 15→オプション 全て→
グローバル・データベース名・SID
ここで設定した内容のことですよね?
ここは既存と新規では変更しております。
ほぼオラクルの知識はないのですが、どうにかして復旧を行いたいです。
復旧の仕方を書いてあるサイトへの誘導、もしくは解説をお願いできませんでしょうか。
ちなみに、ODBAの方には既存のデータベース情報が残っているのですが、
接続しようとしますと、ORA12154:TNSエラーで怒られます。
144 :
NAME IS NULL :2007/02/14(水) 22:47:59 ID:LPNcYjWE
>>143 別のDBが作られてるだけじゃね?
元のDBはそのまま残っていると思うが?
DOS窓から
SET ORACLE_SID=<元のSID>
って環境変数を設定して、そのままSQL*Plusでつなげてみれば?
145 :
139 :2007/02/14(水) 22:55:01 ID:MdpzENka
>>144 ありがとうございます。
退社して終電の中なので、明日一番に試させていただきます。
>>143 DBのデータファイルの作成先も違うディレクトリ(もしくはディスク)上に
したんだよね?
既存のDBが動いているんだったらプロセスつかんでいるはずだから、
上書き出来ないとは思うんだけど、最悪の事態としては現行以外の
Redologが上書きされちまってるかもね。
でもその場合だったらRedo再作成すればいいし、まだ復旧の望みは
残されているな。
でも多分
>>144 が言っている様に別DBが作られていて、デフォルトで
繋げるSIDが新規DBの方になっているだけと思われ。
別々のサーバーにある2つのDBのテーブルを結合して結果を抽出、とかってできますか?
database link
150 :
NAME IS NULL :2007/02/15(木) 08:59:08 ID:jN/Y7HIu
oo4o経由でOracle10 XEに接続出来た人いるー? XEのインストーラーにはoo4oが入っていなかったから Oracleのサイトで10.2用のoo4oをダウンロードして組み込んでみたけど OpenDatabaseメソッドが失敗する データベース名「XE」ってのを認識出来てないみたい 10.2のoo4oはXEに使えないのかな?
原因はリスナー「XE」を登録してませんでした スレ汚し真に申し訳ない
152 :
NAME IS NULL :2007/02/15(木) 10:21:12 ID:Tcgt2fEB
153 :
NAME IS NULL :2007/02/15(木) 15:07:47 ID:8aFDwjm4
154 :
NAME IS NULL :2007/02/15(木) 15:09:05 ID:8aFDwjm4
コテタン処理スレッド
http://music7.2ch.net/test/read.cgi/nika/1171180941/128 (↓1024byteちょうど)
gwisbeugacug.Kc,.V.Tbedlbebeacabdlc,c,acisisbeab.S.Tdlbe.T.Yududabisudgwac.Kac.V.Tgwug.Vis.Sgwugabab
c,gw.Vac.Sc,acud.Suggwugdlugdlududdlac.V.Sugududbedlc,c,udc,beabab.Kisbeac.T.T.Vgw.Yudabis.Kisud.Vud
gw.Tabacug.Vac.Yud.T.Sdl.Vbe.S.Kc,.Tug.Yudud.S.S.Visabudgwdl.Sc,gw.Tudabdlbe.T.Y.Y.Vug.T.Tdl.Ygwc,is
gwud.Kudab.Kis.Kgw.Sgw.Yis.Kud.S.Vabugabbec,ugabuddl.Ybec,.Yabdlacacac.Sac.Ybebe.V.Yc,uduggwuddl.Ydl
abugacdlug.S.Sacudgwacugbeugugdlacbec,.Tug.Yugisc,ud.Tab.Vacug.K.Vugudug.Sab.Tc,abab.S.Sis.Vdldlbe.T
.Yudac.Vab.Tbe.Ydluggwdlc,abdludgw.Tbe.Sac.Sgwdl.K.Tgw.Vc,.Tdlc,is.Tgwud.Kdludbeabgw.Sabud.Tbeud.Yc,
isdl.T.Yis.Yacgwisabgwis.Kabdlac.Ygwacbegw.Sc,.T.S.Tdlgw.Vgw.Sacisabuddlgw.Tc,.Tisac.Yugis.Kacisis.S
ug.S.Kudabc,isudabc,beud.Tbe.Visug.Visud.T.Ygw.Sab.Kis.Tacis.Yc,isc,ududc,is.V.Tc,acgw.Yisuggwdl.S.T
ud.K.Sugc,isac.Tab.Tbec,.Tabc,.Vabacc,.Visbebeac.Vudbe.Yugdlc,beacab.K.Y.Vac.Sgwgw.Tisis.Y.Sdl.Tgw.Y
.Yugabud.Y.Vacabud.Y.K.Tis.Vis.Vabacdl.Sisac.S.Yc,.Yc,abbe.Tgwdlbeab.Tisisugc,beud.Vc,gw.Kc,ac.Kis.V
dludbec,dl.S.Vac.Tgwdlab
155 :
NAME IS NULL :2007/02/15(木) 15:10:00 ID:8aFDwjm4
コテタン処理スレッド
http://music7.2ch.net/test/read.cgi/nika/1171180941/5 (↓1024byteちょうど)
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンン
156 :
NAME IS NULL :2007/02/15(木) 15:12:05 ID:8aFDwjm4
コテタン処理スレッド
http://music7.2ch.net/test/read.cgi/nika/1171180941/129 (↓1024byteちょうど)
Acgwab.Visis.Kab.Y.K.Tdldl.Yab.V.Tdl.S.K.Kbeud.Kab.Tbec,.Tgwdlbeud.Kdlab.Sgw.Yud.Tgwacis.K.S.Tis.Sgw
ac.Vabis.Vud.K.Visdl.T.Kugbe.Vuddlgw.Tc,abudisbebeuddlbe.Kdlbe.T.Y.Vdl.Sis.S.Yisbe.Y.Sisisab.Sugabdl
dlis.V.T.Vab.S.S.V.Sc,c,.V.Vacbegwug.Tdlisc,.Vugab.Tab.T.K.Tacabgwabbeugab.Sac.Sud.Ygwudacgw.T.Vc,is
be.Tis.K.Vdlabgwabisuduggw.S.V.K.Kab.Y.V.Ygw.Yac.V.Kc,.Kc,isabac.Vbeisisuddl.Y.K.Sdl.Ygw.Yabbe.Vacud
.T.Sgwugbe.Vugbegwgw.Sudbe.Tc,.Yac.T.K.Kac.Y.Kbe.Y.Kab.Vabc,ug.Tbewdabacudbec,.Sbeisc,beugis.Tgwudgw
abacug.Kc,c,be.Vdl.Y.V.Y.Sis.Vc,gwbeabgw.S.Sc,.Tc,isdlc,acdlabc,abdlababudacgwdldl.Vud.K.V.Tbedlc,be
.Tbedl.Vc,gwc,.Vug.K.Sududududac.K.Tgw.V.V.Y.Vbedlisbeuggw.Y.Tac.Tab.Y.320140acbeugisac.Yc,ababuggw.
be.Kab.K.Sisac.Y.Kbe.Tudacacbeabdldl.K.S.Y.Kc,.Tabisud.K.Yis.Sisisc,ugud.Yug.Sud.K.K.Yac.Kc,.Sac.Sgw
.T.4766649345233739603236442026619963079677696366622519711776471909111769495819091158193539273873dlu
ac.Sgwabisbe.Kis.Y.Y.Kisdlc,dlis.Sisugbec,.Kabacdlisgwudis.Sgwisisdlc,ab.Ybeis.Y.Tisgwabdlc,.Y.Vc,.Y
.Sc,gwab.V.K.S.Yacugc,i.
157 :
NAME IS NULL :2007/02/15(木) 15:12:53 ID:8aFDwjm4
158 :
139 :2007/02/16(金) 11:28:41 ID:???
遅れましたが解決しました。 S-IDを繋いで、インスタンスをオープンしたら回復しました。 ありがとうございます。
159 :
NAME IS NULL :2007/02/16(金) 20:07:44 ID:3vwFxxfy
Oracle10gEEをWindowsServer2003にのせてます。 expdpコマンドでバックアップを取ろうとしてるんですけど expdp test/test DIRECTORY=DIR_BKUP DUMPFILE=test.dmp と実行すると ORA-31641: ダンプ・ファイル"C:\TMP\test.dmp"を作成できません ORA-27040: ファイルの作成エラー、ファイルを作成できません OSD-04002: ファイルをオープンできません O/S-Error: (OS 3) 指定されたパスが見つかりません。 と言われてしまいます。 おそらくOSレベルでファイルを作成する権限がないと思うのですが どのユーザーに与えればいいのでしょうか。 このマシンのユーザに対してはフルコントロールを与えています。
>>159 基本はDBを作ったユーザーだけど、それ以前にc:\TMPというディレクトリは
存在してんだよな?
一連の流れとしては以下のものになるが?
1. c:\backupでも何でもテキトーなディレクトリを作って、DBを作ったユーザーに書き
込み権限与えておく。
2. データパンプで使うディレクトリをDBに登録する。
SQLPLUS> create or replace directory BACKUP_DIR as 'C:\backup';
3. 実際に実行。
expdp system/hogehoge schemas=boge DIRECTORY=BACKUP_DIR dumpfile=hogeboge.dmp
161 :
NAME IS NULL :2007/02/18(日) 01:20:32 ID:mvn5tp9h
sysなどで接続してuser_tablesからSCOTTの所有テーブルの情報を見たいのですが user_tablesの中でo.owner# = userenv('SCHEMAID')と指定されているせいかみれません。 user_tablesに代わる表はありますか?
sysならdba_tablesとか
163 :
161 :2007/02/18(日) 01:54:07 ID:???
164 :
NAME IS NULL :2007/02/18(日) 05:13:45 ID:Ksjr1/gE
本当はだめなのでしょうが、オラクルマスターのオンラインバウチャーチケットを人にもらう場合、受験チケットNo.だけをメールで送ってもらえば十分なんですか?
165 :
NAME IS NULL :2007/02/18(日) 10:07:58 ID:VFI71C6w
166 :
NAME IS NULL :2007/02/18(日) 13:25:01 ID:P6/Bmpbd
solarisにoracle9iをインストールするのですが、 telnet(Windows)からリモートで行うことは可能ですか? 可能であれば、方法や参考になるサイト等を教えて頂けると助かります。
167 :
166 :2007/02/18(日) 13:26:50 ID:P6/Bmpbd
追加:oracle9iアプリサーバとDBの両方です。
cygwinでもいれて素直にXでつなぐ。
おまいら、イジワルだなw
171 :
NAME IS NULL :2007/02/18(日) 16:26:41 ID:VFI71C6w
>>166 ( ・∀・)つ[インストールガイド]
( ・∀・)つ[cygwin]
Xだけなら、cygwinよりXmingだな。 設定も簡単だし。
173 :
166 :2007/02/19(月) 01:00:45 ID:???
レスありがとう。 んーやっぱりXですか。 自分のマシンにX入れるか、空いてるSolaris探すか なんとかやりますわ。
>>173 VNC入れてSolaris側でX立ち上げて、窓側ではVNC Clientもしくは
ブラウザーでいいじゃん?
VNCとかあほなこという連中が多いなw consoleは占領するし、フレームバッファがいるし、何もいいことないだろ。
>>175 インストールだけに使えばいいんだし、今時の鯖でフレームバッファが
どうこうという方がアホなんじゃねぇの?w
それとも金がなくてショボい鯖しか使えないのなら仕方ないけどさ?www
15Kとかは普通にFB持てないけど。
インストールの話してんだから、もう少し行間読めよ?
結論はでてる。 Xでいいってこと。
なんだかんだ言って、ヒントを与えてるおまえらは優しい。
>>166 ( ・∀・)つサイレント・インストール
182 :
159 :2007/02/20(火) 18:37:49 ID:???
>>160 仕事が忙しくてようやく試せました。
どうもカタカナがだめだったようです。
・取りたい場所(カタカナあり)→だめ
・C直下の英字フォルダ→OK
・C直下のカタカナフォルダ→OK
・取りたい場所の一階層上(英字)→OK
・また取りたい場所(カタカナあり)→だめ
ありがとうございました。
183 :
159 :2007/02/20(火) 18:38:32 ID:???
間違えた。 ・C直下のカタカナフォルダ→だめ です。申し訳ない。
NVARCHARとNVARCHAR2の違いってなんでしょうか?
現在は違いはない。
違いがあったのはOracle6の時代だっけか、7では既に違いは無かったと思う。 あまり古い話で、信憑性はないが年寄りから聞いた話では2つぐらい説があったな。 1.varchar(10)とすると、固定10バイト+長さ管理用の領域が取られたという説。 2.varchar同士を比較するとき長いほうに併せて空白をパディングしてから比較していたという説。 真相は知らね。
VARCHARをANSI互換にして、空文字とNULLを区別するようにしてくれたらOracleを見直すのだが。
Oracle使いで、NULLを代入するときに""使うやつっているんかな?
189 :
NAME IS NULL :2007/02/21(水) 09:18:28 ID:3HpDMjNa
>>181 9iでサイレント・インストール使えたっけ?
しかも、サイレントでもXはいるしw
191 :
NAME IS NULL :2007/02/21(水) 11:42:25 ID:egn5/JuB
すいません!!学校の課題でデータベースのプリントを渡されててんやわんやになってるものです!! Dクエリで文字列の一部を指定しデータを抽出する「*」や「?」がそれに該当する。 ってなんのことをさしているんですか??さっぱりなんです…教えてくださいお願いします
192 :
NAME IS NULL :2007/02/21(水) 11:50:06 ID:egn5/JuB
で、パラメータクエリのことをさしてるのかぁと思ってるんですがいかかですか??
そして時は動き出す・・・。
ワイルドカードのことを言ってるんならoracle固有の話でもなければDB固有の話でもない
複数の選択肢で正しい答えを複数選べとかだったりして
Oracle10gを使用する事になりましたがGUIでトレースをリアルタイムに 出力するツールってあるのでしょうか?
>>197 何のトレースよ?
SQLのトレース? DBのプロセスのトレース?
200 :
NAME IS NULL :2007/02/23(金) 05:57:34 ID:rCpVmlBI
Q。質問です Oracle9iより「Real Application Clusters」機能が 実装されたそうですが、SQL Plus等を利用し 今あるDBのRACオプションの状態を 確認することは可能なのでしょうか? たとえば、V$SESSIONでセッションの状態を知るように、 RACの状態を取得したいのですが…
>>201 各インスタンスの稼動状態ならv$active_instanceで確認できっけど?
>>199 すみません・・SQLのトレースです
MSのSQLServerをずっと使い続けていたので、あちらのプロファイラに慣れきっていて
実行されているクエリーを見るのにTKPROF実行してファイルに出力して・・
というのが煩わしく感じてます
>>204 GUIにこだわるのならTOADとか3rd Party製のツールがっけど?
>>190 サイレントインストールでもXのライブラリが必要ってこと?
イエス。
Oracle10g+RHEL AS4 アラートログってリスナーログみたいに手動で出力先を切り替えたり できないのかな?それともいきなりファイル削除って新しいログファイル つくっても平気なもん?
削除-放置でOK
oracle 10g の正規表現って SQL*Plus 上と PL/SQL とで違いがあるのか? SQL*Plus でさんざん試した後に PL/SQL で実装すると NOTFOUND になっちまう。
スマソ 初歩的なミスをしていた。 速度を速くするために、 SELECT * FROM AAA WHERE SHOHIN Like '12345-67890%' -- ←もちろん変数にしてる AND REGEXP_LIKE(SHOHIN, '12345-67890(パターン)')) みたいな事をして、単純 Like の前方一致条件と絡めていたのだが、 Like に掛ける条件を val_str = '12345-67890%'; として WHERE SHOHIN Like val_str としていた為におかしくなっていた。 val_str = '12345-67890'; WHERE SHOHIN Like val_str || '%' して、上手くいった。
[サーバ] Win2000Server Pen4 3.2 メモリ1024M × 2 Oracle 10g [クライアント] WinXP Pen 3.2 メモリ 1024M Oracle 10g Client [ネットワーク] LAN 100M 中間一致検索について質問です。 対象のテーブルには100000件のレコードが入っています。 それを中間一致で検索すると、1件もヒットしないときだけ検索秒数が大幅に増加すると いう減少が発生しています。 1000件ヒット、1件ヒットでは0.1秒とかそんなところなんですが、0件のときだけ5秒近く かかってしまいます。 Oracle 10g Client 、9i Clientの両方を試しました。 色々と本を漁ってみましたが、答えは見つかりませんでした。 誰か教えてください・・・
213 :
NAME IS NULL :2007/02/27(火) 22:01:37 ID:vERdyJqF
Oracle 10gで間違えて作ったテーブルをdrop tableで削除して、 select * from tabでテーブルの一覧を見たら 英数字や=が無造作にならぶ変なテーブル名のテーブルが出てきました。 そのテーブル名をコピーして削除しようとしても削除できず困っています。 何かいい方法はないでしょうか。よろしくお願いします。
>>212 を見て、うちのデータベースでも試したが同じような現象が起こる。
今まで気づかなかったが、なんでだろ。
>>212 言われてみればそれって普通に発生しているような・・・
1件だと早いけど該当なしだと考えるよね?
まあ俺のいじっているメイン環境は8.0.5だけどw
多分ね、躊躇するんだよ、「0件なんて返したら怒られないかな〜」って。
無駄に増えてしまったデータファイルをRAWデバイス移行に伴いすっきりさせたいとおもいます。 /oradata/abcd01.dbf /oradata/abcd02.dbf /oradata/abcd03.dbf => /dev/abcd01 例えば abcd というテーブルスペースが3つのデータファイルで構成されています。 なのでいったんテーブルスペースを消して 再度RAWデバイスファイルで作り直そうと画策していいます。 消す前にexpして作り直した後にimpすればいいかなと軽く考えていますが うまくいくでしょうか? ちなみにオラクルアプリケーションのテーブルスペースたちです。 exp のパラメータはこんな調子で大丈夫でしょうか? COMPRESS=N CONSISTENT=Y TABLESPACES=(ABCD)
>>219 新規表領域を作成して、表はalter table moveで、索引はrebuildとかでいいかも?
Oracle AppsだったらOATMの導入もひとつの選択肢です。
Oracleから変換ツールが提供されています。
>>213 select table_name from tabs で見たらいいよ。
tab じゃなくて tabs ね。
222 :
213 :2007/03/01(木) 21:10:28 ID:???
223 :
NAME IS NULL :2007/03/01(木) 21:55:32 ID:vN9pA/9v
こちらのスレに誘導いただき、カキコさせていただきます。 今日初めてSQLでデータ抽出してみました。 DBはオラクルでSQLPlusWを使ったんですが、抽出したデータをCSVやエクセル アクセスなどで書き出すことってできるのでしょうか? どなたかよろしくお願いいたします。
>>223 藻前の端末PCにOracleのODBCドライバなんかをインスコしてもらえ。
そうすればAccessにOracleのテーブルをインポートとかリンクとか出来る。
それで不満が出たらSQLを覚えてそれで不満が出たら、
OracleのSQLをいじる事を考えれ。
つか、初心者とかを排斥するワケでもないが、ユーザーのフロントエンドツール
としてExcelとかAccessは優秀だから、まずそっちを先に使いこなせ。
ほとんどはソレで解決できる。
225 :
NAME IS NULL :2007/03/01(木) 22:14:44 ID:vN9pA/9v
>>224 アクセスでODBCを使い、DBのインポートやリンクテーブルは使っているんですが、
なにぶんデータが重いのと毎回リレーションくんでクエリを作成するのがめんどくさくなったのでDB直にSQLで抽出できないかと思い使ってみました。
>>225 ならInternetで検索してOracle用のCSV作成ツールやマクロを利用しろ。
正直、Oracleの純正ツールは初心者には向かん。他の商用DBに比べるとアレだと感じる。
まだ、VBAでADO経由でSQLコマンド投げるとか
Java+JDBCでやったほうがマシだと個人的に感じる。
227 :
NAME IS NULL :2007/03/01(木) 22:35:51 ID:vN9pA/9v
>>226 ありがとうございます。
なるほど、ADOプログラム用いてできましたね!!
って、ADO用いてオラクルにコネクションはる方法忘れちゃった・・・。復習しなおします・・・。
229 :
NAME IS NULL :2007/03/03(土) 16:11:54 ID:OlFrbYGL
正月明けから分散サーバにしてAPサーバとDBサーバに分割したんですが、 その途端に、これまで80分で終了していたバッチが5倍かかるようになりました。 APはまったく変えてないし、マシン性能は向上しているので、まったく原因が わかりません。 分散によってこのような事が発生する事例はありますでしょうか? 月1回の処理ですが、客先からもそろそろ厳しい目で見られそうです。
>>229 そのバッチというのはどこで動いているのよ?
DBサーバー、APサーバー、その他
>>229 DBサーバとAPサーバのトラフィック量をちゃんと計算してから
クライアントに提案したんだろうな?
>>229 そりゃAP鯖とDB鯖が分散するより直結してる方が早いにきまってる。
IBMのAS400(i5)なんかはそういう思想でAP鯖とDB鯖が合体している
と言うかOSにRDBが融合しているしな。
まあ、「まったく原因がわかりません」とか言う厨房は素直に
外部の会社に泣きついた方がいいぞ。
ネットワーク経由になるのに、まったくSQLやプログラムの変更をまったくしてないってこと? だとしたら、あまりにも素人過ぎるぞ。
>>229 分割しようと思った理由はなに?
CPUネックにでもなっていたの?
そうでないのなら、分割すればネットワークトラフィックが増大する分、
遅くなるのも予想できるだろうに?
特にバッチでデータを全てAP鯖側に転送して処理なんてしていた日には
目も当てられないと思うぞ?
サーバが分かれて性能劣化、ってことはSQLの発行の仕方とかが元々悪かったんだろうね。 ループの中でマスタ検索とか。 ネットワーク越しにSELECT投げるなら回数減らすためにジョインした方が良い。 もちろん実行計画採ってね。
229 バッチだけDBサーバ上で動かせwww
237 :
NAME IS NULL :2007/03/07(水) 12:22:57 ID:m/eIFB9Y
まあ、よくあると言うかハードjは売りっぱなし会社で、その売りっぱなし会社が 低賃金で雇ったハケンのデタラメSE&PGに組ませたシステムによくある失敗例だよな。 ただ、普通はリプレースの際にマシンスペックの向上に助けられて 問題にならない場合もタマにあったりするが、229の場合は 今まで動いていたソフトウェアが相当にヘボかったんだろう。 いい機会だから金だしてマトモな会社に丸投げしとけ(w
>>229 そのAPサーバーって言語は何で動いてんの?
ネットワークバッファとかプリフェッチサイズ大きくして改善されるかな。
ループのまわし方にもよるけど。
>>229 「ネットワークを疑ってみる」がセオリーっぽいけどね。何処がネックか調べようよ
5倍も時間がかかるようになって、2ヶ月以上の放置が信じられん
っていうか、テスト期間中に問題にならないのも信じられ
APサーバからselect * from〜を多用していたりなw
243 :
229 :2007/03/08(木) 09:06:32 ID:46zKKXiM
月次処理で月1回しか流れない上、当該時間帯に競合するバッチもない。 監視はオペレータが常駐しているので長くかかってもシステムには影響がない のと、他の開発案件との絡みもあるので、とりあえず業務Grpは対応する予定はなく、 インフラチーム預かりで調査中というステータスです。
年明けにシステム変えて、3月でこのありさまとは、 ずいぶんと無能かつボンクラ揃いのインフラチームですな。 専任のオペレータが監視する様なシステムでお客から そんなクレームきたら、それこそマッハで対応すべき状況だと 思うけど、そうならないのは天下りでパイプが結ばれている 関連子会社でとかなんだろうか?
>>243 つ〜かさ、ボトルネックが何処にあるか分からないんだから、とりあえず
DBのステータスだけでも見てみたらどうよ?
バッチ処理時にSTATSPACK流すなり、O/Sのステータス取るなり、やる
事はいくらでもあるだろう?
CPUバウンドなのか、I/Oバウンドなのかで、対応も当然変わる訳だしさ?
ネットワークトラフィックとかも見ているのかよ?
「AP鯖とDB鯖との間が100Base-Tかなんかでつながってました」なんて
オチだって考えられるぞ?
246 :
229 :2007/03/09(金) 08:09:30 ID:B5ov/MgP
客先とオペレータの作業場が離れている関係で、 ユーザには見えてません。 といいますか、ウチのPJはこれまで携わったところと毛色が違って、 情シスが絡まずにエンドユーザと直接やり取りしているので、 夜間バッチがどのくらいかかったかの報告もしてません。 システムに影響なければいくらでも隠蔽できます。 夜間バッチがエラーになっても、オペレータから連絡が来たら その場で対処してユーザには特に報告しませんね。
その月次バッチ「だけ」重くなったの?
>>246 客先にバレてないんだったら、問題を隠蔽しまくって
5年か10年後にやってくるリプレースの時に対策汁
まあ、そんな不二家みたいな会社が漏れの周りに
いない事を祈るけどな。
249 :
NAME IS NULL :2007/03/11(日) 21:38:08 ID:908nGcRk
Oracle9iを使ってまして、特定のプロシージャを動かすたびにデッドロックが発生して困っています。 同一のプロシージャを5つほどパラで流しているのですが、デッドロックが発生する理由がよく分かりません。 一つのテーブルにたいしての、updateとinsertを行うプロシージャなのですが、それぞれのセッションで updateする行が異なっていることは確認してあります。(where句の指定が違う) ただ、update/insert を行うテーブル自体に、プライマリーキーはおろか、ユニークなキーを張っていません。 そういうテーブルにupdateを行う際に、ロックが掛かる列というのは、updateのwhere句の条件にマッチする 行だけということで良いんでしょうか?? 一意なキーを使用していないため、updateを行うときにロックの 掛かる行が多すぎてデッドロックに成ってるんじゃないのかと素人判断をしてるのですが、どうでしょうか。
行ロックがかかるのはupdateしてるところだけ。
分離レベルにもよると思うが、where句にindexのないカラムを指定すると テーブル全体でロックするんじゃねーの? と思いつつユニークなKEYを持っていないのにどうやってUPDATEする レコードを特定できるのか疑問なんだが。 そりゃ、何月何日のあるカラムをまとめて更新するってSQLなら解るけど それだとロックが掛かるのは当たり前な気がするが・・・。
別セッションがinsertした行にもupdateかけようとしてるとか??
「ユニークなキー」っていうことばの意味があいまい。 でもUNIQUE INDEXの有無にかかわらず、updateの行ロックはその行だけ。
foreign keyとか?
255 :
249 :2007/03/11(日) 23:15:35 ID:908nGcRk
249です。 ユニークなキー ⇒ ユニークインデックスでした。 やっぱり、行ロックかかるのはupdateかかってる場合のみっぽいですね。 KROWNによると、テーブルのロックの掛け合い以外でもデッドロック状態に なるようなので、そちらの可能性のほうを検証してみます。 ども、ありがとうございます。
漏れはあんましWHEREでUPDATEする時は主キーでやる派の人間だけど、 そこの9iがどんな分離レベルで動いているかしらんけど、分離レベルによっては 他のプロセスでINSERTしようとして、他のプロセスが後からUPDATEしようと した時に先に走ったトランザクションが終了しない場合はUPDATEは待ち状態に 入り、先のINSERTするトランザクションでWHERE句にINDEX張ってないカラムを 指定してSELECTかましていた時に、後のトランザクションのUPDATEがロックかけてたら デッドロックになると思うが。 あと、分離レベルによってwhere句にindex作成していない状態で where hoge >= 0なんて選択カマしているとテーブル全体でロックがかかるとオモ。
質問です! Oracle10gのXEClientをインスコしてその中のODBCドライバを使わなきゃいけないんですが、 ODBCの設定のところでORACLEinXEClientを指定してもドライバのセトアッププログラムが読み込めない(システムエラーコード126) が出て、追加できません。 そのあとにドライバのConfigDSN,ConfigDriver,またはConfigTrancelatorが失敗しました。 って出ます。 何が原因なのかわかりません。 ファイルはレジストリに記述されてる場所にあります。 MSDNに書いてあることは実行しました。それでも改善しません。 環境はXP SP2です。
>>257 「mfc71.dll」「msvcrt.dll」「msvcr71.dll」の三つのdllをc:\windwows\system32にでもコピっておけば?
XEって使ったこと無いんだけど、InstantClientじゃだめなのかな?
pl/sqlについて質問させて下さい。 変数の項目定義をDBの項目%type;で行っています。 その項目の項目長を取りたいのですがlengthだと 変数の中身のサイズを取ってしまって取れませんでした。 何か良い手段はないでしょうか。 よろしくお願いします。
262 :
NAME IS NULL :2007/03/13(火) 15:34:18 ID:3um8qxfU
aspからの接続で質問です。 asp(非.net)からOracle10gに接続しようと試みているのだけど、 うまくいかない。 環境は DBサーバ Windows Server 2003 R2 Oracle10g WEBサーバ Windows XP Pro SP2 接続方法 set conn = Server.CreateObject("ADODB.Connection") conn.Open "dsn=hoge;uid=hoge;pwd=hoge" エラー Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 指定されたドライバはシステム エラー 5 (Oracle in OraClient10g_home1) のため読み込めませんでした。 色々情報を探してみたのですが、見当たらずここに質問します。 お知恵をお貸しください。よろしくお願い致します。
ちゃんとODBCドライバはインストールされた上でDSNの設定もした? ドライバをインストールしただけではDSNの設定はされていないから、以下のようにDataSourceを指定する必要があるけど。 "Driver={Oracle in OraClient10g_home1}; Data Source=fuga; UID=hoge; PWD=hoge;" DSNを設定した場合は、"dsn=hoge;uid=hoge;pwd=hoge"でいいけど。
追加。 OracleのOLEDB Providerをインストールした場合は、 "Provider=OraOLEDB.Oracle; Data Source=fuga; CONNECTSTRING=; UID=hoge; PWD=hoge;" として、Provider経由でも接続が出来る。 Oracleのは、ODBCよりProvider経由の方が推奨されているから、こっちを使うほうがいいかも。
265 :
262 :2007/03/13(火) 18:45:43 ID:???
>>263 ODBCドライバインストール&DNS設定もしました。
でもダメ。
OLEDB Providerをインストールして教えていただいたProvider経由の方法で接続したところOKでした。
ありがとうございました。助かりました。
266 :
NAME IS NULL :2007/03/13(火) 19:01:25 ID:LA5xZJ82
質問があります。 oracle10gを使っています。 あるサーバーにhogeというDBがあり、私のクライアント端末から接続しようとして いるのですが、うまく繋がりません。 Net Configuration Assistant で設定したときの 接続テストは成功します。 Net Manager での接続テストも成功しています。 しかし、SQL Plus のようなアプリケーションから接続しようとすると、 UserName: foo Password: bar Host String: hoge ERROR: ORA-12154: TNS:could not resolve the connect identifier specified というエラーが出て、接続することができません。 色々とググったりして調査しているのですが解決できていません。 どなたか、ご協力願えないでしょうか…。
267 :
262 :2007/03/13(火) 19:05:53 ID:???
接続できて喜んでいたら今度は ORA-12560: プロトコル・アダプタ・エラーが発生しました とエラーが出るようになりました。 どう対処すれば・・?
268 :
262 :2007/03/13(火) 19:16:16 ID:???
事故レス ODBCを再設定したところ今度はProvider経由でORA-12560エラーが出て、 ODBC経由だとOKになりました。 うーむ、よくわからない。。。
こんな時間に会社から2chにカキコとか考えるとアレなんだが、 素直にOracleのサポートに電話した方が解決早いだろ。
このスレの存在意義が (ry
ORA-12154 は Host String: hoge に対応する接続記述子が見つかんないってこと。 tnsnames.ora 周りがあやしいかな。
>>266 tnsnames.oraとsqlnet.oraをさらせ。
oracleに関わらずの話かもしれないんですが、 いわゆる2フェーズコミットっていう、 よく情報処理試験にでてくるんですけど、 あれの、コミット可能かどうかを確認する1フェーズ目って 具体的には何をすることをいうんでしょうか?
>>273 [準備フェーズ]
準備するように指示されると、開始側データベース(コミットが実行されたデータベース)は
分散トランザクションに関与する他の各データベースに、この後の指示に従って、コミット
またはロールバックする様に支持します。開始側データベースは以下の作業を行います。
・Redoログ・バッファとSCN(System Change Number)をフラッシュします。
・グローバルなSCNを他のDBに渡します。(SCN回復する時に必要な情報)
・表をロックして、コミット・フェーズが完了するまで表の読み書き操作を禁止します。
275 :
266 :2007/03/14(水) 09:08:19 ID:???
>>272 tnsnames.ora
HOGE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = hoge)
)
)
sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (EZCONNECT)
このようになっています。
よろしくお願いします。
>>275 これでどうなるかやってみろ。
TNSNAMES.ora
HOGE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SID = hoge)
)
)
SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES= (NTS)
>>275 ORACLE_HOMEが2つあるっていうオチだったりして。
278 :
275 :2007/03/14(水) 09:50:10 ID:???
>>276 !!!!!!
いけました!!ありがとうございます!!
でもなぜだろう?
NetManagerなどではカバーできない環境なのか…。
調査してみます。
>>278 これで繋がったという事はどっちかというとlistener.ora側の設定を疑うべきだな。
SID=hoge の指定は昔のやりかた。 まず SERVICE_NAME=hoge のままで、NAMES.DIRECTORY_PATH= (NTS) でやってみて。 NAMES.DIRECTORY_PATH は、接続記述子をどこから探すかの指定。 これがEZCONNECTなら、その方法でしていしなくちゃならない。 NTSならtnsnames.oraから探す。
>>278 names.directory_pathをtnsnamesにしてみろ。
names.directory_path = (TNSNAMES)
282 :
280 :2007/03/14(水) 10:14:57 ID:???
NTSは認証のほうだった。
>>281 が正しい。
283 :
275 :2007/03/14(水) 10:15:28 ID:???
>>287 の自分のレスに補足をします。
Net Manager でサービスネーネングを選択し、サービスの識別枠の中に
「Oracle8リリース8.0互換識別子を使用」
というチェックボックスがありますが、これにチェックを付け、サービス名に
入れていた名称をSIDに入れることで、正しく接続できるようになりました。
最初に提示しておくべきでしたが、環境を記載しておきます。
サーバー
Windows2003 Enterprise Edition
Pen4 3GHz メモリ3GB
Oracle Database 10g 10.1.0.2.0
クライアント
WindowsXP Professional Ver 2002 SP 2
Pen4 3GHz メモリ1GB
Oracle Database 10g 10.1.0.2.0
サーバーもクライアントもOracle10gなのに、Oracle8互換(?)で通信しなけれ
ばならなかったようです。サーバー・クライアント間が離れており、VPNを使用
しているから…などの理由が、おそらく存在するのだと思います。
ご協力ありがとうございます。
284 :
275 :2007/03/14(水) 10:23:05 ID:???
>>279-282 すいません、先走りました…(汗
(自分のレス書き込んでから
>>279-282 に気づきました)
「Oracle8リリース8.0互換識別子を使用」
にしたままでは原因解明や対処したことにはならず、追求して本来あるべき
設定にした方がよいのでしょうか?
さんざん悩まされた問題なので、もしも「Oracle8リリース8.0互換識別子を
使用」にチェックを付けて使うことに支障がなければこのままでもいいかな
ー…と思い始めていたりするのですが…。
285 :
275 :2007/03/14(水) 10:33:02 ID:???
以下の設定で、問題は発生しませんでした。 tnsnames.ora HOGE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = hoge) ) ) sqlnet.ora SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES) 今までをまとめると、変更点は以下の一点のみです。 『sqlnet.ora の NAMES.DIRECTORY_PATH= (EZCONNECT) を NAMES.DIRECTORY_PATH= (TNSNAMES) に変えた』
286 :
275 :2007/03/14(水) 10:44:44 ID:???
Net Manager を開くとツリーに「プロファイル」というのがあり、 ここの「選択メソッド」が、もともとは「EZCONNECT」だけになって いました。 tnsping hoge が ORA-12154 でエラーになっていたことから、私の環境では EZCONNECT だけでは、何かが引っかかって接続識別子を解決できなかったようです。 Net Manager → プロファイル → 「TNSNAMES」「EZCONNECT」両方選択 これで接続も tnsping も正しくできるようになりました。
287 :
257 :2007/03/14(水) 16:19:44 ID:???
>>258 ありがとうございます。MFCランタイム入れたらその問題は解決しました。
>>259 ORACLEのUNIVインストーラーを持ってないので無理でした。
288 :
NAME IS NULL :2007/03/16(金) 23:37:33 ID:O+49JDf9
oracle10g 32bit版をWindowsXP Pro(CoreDuo)にインストールしようとしましたが、 途中で 「ライブラリの読み込み中にエラーが発生しました generalQueries」 と表示されて、インストールができません。 (その後のすべてのインストールの中止orこのコンポーネントのインストールのみ中止 のどちらを選択しても終了しません。) Enterprise、Standard、Personalのどれを選択しても同じ現象がおきてしまいます。 どなたか同じ現象の方や解決方法をご存じの方いらっしゃいますでしょうか?
>>288 そのインストール用バイナリを保存しているディレクトリにマルチバイトの文字が
使われていたりしないか?
290 :
288 :2007/03/17(土) 10:56:14 ID:qcvECAwf
>289 アドバイスありがとうございます。 HDDにコピーしてからインストールをしたのですが、 なぜかgeneralQueriesというファイルが壊れていたみたいでした。 お手数をおかけしました。
291 :
NAME IS NULL :2007/03/17(土) 18:03:55 ID:rpX2rmR1
Oracle10gにおいてundo表領域systemu表領域を他ドライブに変更したいのですが @sqlplus "sys/psw@oracle as sysdba" ASHUTDOWN IMMEDIATE; BSTARTUP MOUNT; という順におこなった所、Bにてリスナーは接続記述子で要求されたサービスを現在認識していません と表示されてしまいます。 ご存知の方はよろしくお願いします。
リスナー経由で接続できるのはOPENしてから。 Oracleサーバーにsshなんかで入って、sqlplus / as sysdba とかで入る。
293 :
107 :2007/03/17(土) 23:22:57 ID:rpX2rmR1
>>292 申し訳ありません。
もう少し噛み砕いて説明していただけないでしょうか?
294 :
NAME IS NULL :2007/03/17(土) 23:27:05 ID:HgHJyZfK
質問なのですが、WindowsXPのHomeEditionにOracleのインストールは無理でしょうか?トライアル版をインストールしたのですが、なぜかどうやっても「リスナーがありません」となってしまいます。
ワロタ これ以上どうやって噛み砕けとw Oracle10gのサーバUnix系なら、 サーバにDBAユーザでログインしてから、 $ sqlplus /nolog SQL> conn / as sysdba SQL> startup mount で、データベースを起動する。
Windows のOracle 10gです。 テーブルにストアドプロシージャ名(またはストアドファンクション名)を入れておいて、 プロシージャ(またはファンクション)から、その値を取得してそのプロシージャを実行 したいのですが、できますか? SQL Serverの場合は @procedure_name にプロシージャ名が入っているとして、 EXEC @procedure_name @pram1 pram2 などとして実行できたのですが、Oracleではどうもうまくいきません。 変数の中に入っている名前のプロシージャを呼び出すことはできませんか?
297 :
291 :2007/03/18(日) 01:43:52 ID:t/a53Ch2
>>295 申し訳ない。
@コンピュータの管理にてOracleService<SID>を起動させる
Asplplus aaa/bbb@ccc
サービス名を指定しなければプロトコル・アダプトエラーが発生します
B$ sqlplus /nolog
Cconn / as sysdba
を行ったところBでORA-12560:TNS:プロトコルエラーが発生してしまいます
298 :
仕様書無しさん :2007/03/18(日) 11:15:28 ID:vUU4ZdYN
>>297 接続時に"@ccc"を使わない接続をしろってこと。
"@<接続子>"でリスナー経由の接続になるんだお。
コマンドプロンプトで
SET ORACLE_SID=ccc
ってやってから
B、Cを実行。
299 :
291 :2007/03/18(日) 12:03:09 ID:t/a53Ch2
>>298 ALTER DATABASE RENAME FILE
'C:\oracle\product\10.1.0\oradata\oracle\UNDOTBS01.DBF' TO
'D:\oracle\product\10.1.0\oradata\oracle\UNDOTBS01.DBF';
ORA-01113: file 2 needs media recovery
ORA-01110: data file 2: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\Oracle\UNDOTBS01.DBF'
UNDO表領域の場合はリカバリが必要なのでしょうか?
度々申し訳ありません。
300 :
仕様書無しさん :2007/03/18(日) 12:23:07 ID:vUU4ZdYN
>>299 手順を晒せよ。
Dドライブにデータファイルはうつしてるよな?
301 :
291 :2007/03/18(日) 12:40:30 ID:t/a53Ch2
>>300 OSコマンドで以下を行った後に
copy C:\oracle\product\10.1.0\oradata\Oracle\UNDOTBS01.DBF
D:\oracle\product\10.1.0\oradata\Oracle\UNDOTBS01.DBF
@set oracle_sid=oracle
Asqlplus aaa/bbb
B$ sqlplus /nolog
Cconn / as sysdba
DSHUTDOWN IMMEDIATE;
ESTARTUP MOUNT;
F ALTER DATABASE RENAME FILE
'C:\oracle\product\10.1.0\oradata\Oracle\UNDOTBS01.DBF' TO
'D:\oracle\product\10.1.0\oradata\Oracle\UNDOTBS01.DBF';
Galter database open;
Gを行った際にリカバリが必要と表示されます。
よろしくお願いします。
>>301 Windowsではどっちでもいいことなんだけど、Oracle使いとしてこの先生きのこりたいなら、
環境変数名はキチンと大文字/小文字を区別するようにしようね。
× oracle_sid
× Oracle_Sid
○ ORACLE_SID
>>301 先にOS上でファイルを移動したか?
つまり、その手順で言うと、5と6の間でOSコマンドにてファイルを移動する。
304 :
107 :2007/03/18(日) 14:46:14 ID:t/a53Ch2
>>302 ご指摘の点、しっかりと受け止めます
>>303 はい、先にOSコマンドでコピーをしました。
やり直してみます。
305 :
仕様書無しさん :2007/03/18(日) 15:07:47 ID:vUU4ZdYN
>>301 一回、元に戻してから。
D→E↓
ALTER DATABASE RENAME FILE
'D:\oracle\product\10.1.0\oradata\Oracle\UNDOTBS01.DBF' TO
'C:\oracle\product\10.1.0\oradata\Oracle\UNDOTBS01.DBF';
↓
G→D↓
データファイルUNDOTBS01.DBFをCからDへコピー
↓
E→F→G
>>305 Recoveryが必要だって言われてんだから、renameした後にrecover database文
打ってみたら?
普通は必要ないんだけどね。
307 :
301 :2007/03/18(日) 19:11:12 ID:???
>>305 >>306 どうもありがとうございました。
システムディスクの容量が少なかったので
助かりました。
308 :
NAME IS NULL :2007/03/21(水) 05:05:45 ID:Ct0Agd+G
下記@→A→Bの処理を繰り返し、一レコードずつ値を更新する処理を行っています (表「USER_MASTER」のPKは「USER_ID」)。 ところが同一レコードに対し2回同じ処理を繰り返すことがあり不思議に思っています。 「@→ファイルにUSER_IDをログ出力→A→ファイルにUSER_IDをログ出力→B」 としてみたのですが、COMMIT自体は失敗せず、ログを確認したところやはり2回同じ処理を繰り返すことがあるようです。 頻度としてはきわめて低いのですが。。。 @ SELECT USER_ID FROM USER_MASTER WHERE STATUS = '0'; A UPDATE USER_MASTER SET STATUS = '1' WHERE USER_ID = '@で取得したUSER_ID'; B COMMIT; COMMIT命令を発効してからDBのレコードに値が 反映されるまでタイムラグでもあるのでしょうか。。。? Oracle初心者なのでそんな事例今まで聞いたことがなかったのですが もし何かご存知の方いらっしゃればアドバイスいただければと思います。 使用しているマシンのOSはWindows 2003、Oracleのバージョンは9i、 使用している言語はC#(.NET Framework 1.1)でODP.NETを使用しています。
309 :
NAME IS NULL :2007/03/21(水) 09:19:35 ID:YYlj3kB8
SELECTでデータを1行だけ抜きたいんですが、そんなコマンドありますか? 教えて下さい
>>308 > COMMIT命令を発効してからDBのレコードに値が
> 反映されるまでタイムラグでもあるのでしょうか。。。?
同一セッション内ならあり得ない。
俺ならいちいち無駄なループ回さず、
UPDATE USER_MASTER SET STATUS='1'
WHERE USER_ID IN (
SELECT USER_ID FROM USER_MASTER WHERE STATUS = '0'
);
って書くがな。
>>309 select * from table where rownum = 1;
でとれると思うが。
>>308 select ... for update してね。
314 :
313 :2007/03/21(水) 15:17:49 ID:???
追加でスマン ORA-60 が出るかもしれないので、order by USER_ID も追加で。
以下のようなSQL呼んでるプログラムがあるんだが > SELECT ename FROM emp WHERE empno BETWEEN 1000 AND 2000; 「empno順にソートされてないから修正しろ」っていわれた そりゃそうだ、ORDER BYとか使ってないからな・・・と思って ローカル環境でテストしたんだがこっちだと昇順ソートされてる データのrowidを入れ替えたりもしたんだがやはり変わらずソートされてる 「ORDER BYをつけないとデータの順序は保障されない」というのは ソートされる/されないの保障がないという意味なのでしょうが ソートされないことを確認する、手っ取り早い方法はないでしょうか? (ヘンな質問ですが・・・)
>>315 何を確認したいのか分からない
素直におーだばいすれば?
明示的にした方が他の人にも分かり易いし
318 :
315 :2007/03/24(土) 22:05:56 ID:???
すいません、簡単に言い直します。 ORDER BYをつけてないが、自分の環境ではソートされてる。 じゃあソートされずにバラバラにデータを出力させるためには どうすればいいか。ただし、SQLはそのままで。 データを何らかの方法で並びかえればバラバラにでるのであれば その並び替える方法を教えてほしい。 本来の依頼の解決方法はORDER BYをつけること。それは間違いないです。 でもつけてないのにソートされてるのはなんでだろう?という疑問から この質問をしました。意図がわかりにくくてすいません。
たまたまソートされた順序で格納されてたからだろ。 テストデータをつくるとき、 FOR i in 1..100000 LOOP とかでデータを作ってINSERTすると格納データが昇順ではいってる。 SELECTは読んだ順に出力する。 ただし、それをあてにしてはいけないのでORDER BYが必要。
一見ばらばらに見せかけたいなら、ハッシュパーティション表に入れて、ORDER BYしないとそうなる。
>>315 9iまでだと索引スキャンで読み出された場合索引順にソートされて出力される。
10gは何故か索引スキャンによるソートがなくなってたのでorder byで明示的にソート必要。
内部がどう変わったかは知らん。
現象のみ確認した。
VB2005でASP.NET2.0のプログラムを書いています ODP.NETを使ってOracle10gにアクセスさせたいと思っています web.configのconnectionStringsにコネクションプーリングするための文字列を入れたところまではよかったのですが、 どうやってその設定で接続させるかがわかりません ConfigurationManager.ConnectionStringsのことを調べてみたのですが、ADO.NETでの接続になるみたいです どうやって接続させるのでしょうか?
>>318 行移行すれば順番がズレなかったっけ?
大きめのカラムを作ってUPDATEをしておけばいいんじゃねぇ?
そして実行計画取ればソートしているか否かわかるんじゃ
326 :
NAME IS NULL :2007/03/29(木) 13:05:31 ID:SkrWWvsv
いまどきオラクル8なのですが、left outer joinの代わりに何を使えばいいのでしょうか
>>326 どういったSQLを投げていて、どういった結果をとりたいのか
もっと具体的に質問したら?
329 :
NAME IS NULL :2007/03/29(木) 13:21:13 ID:SkrWWvsv
10gの場合で select 表1.商品名,表2.価格 from 表1 left outer join 表2 on 表1.番号 = 表2.番号; と書くところを、8iではどのように書くんですか
select 表1.商品名,表2.価格 from 表1,表2 where 表1.番号(+) = 表2.番号;
8iだとLEFT JOIN〜って書き方出来ないん?
出来ない。
333 :
NAME IS NULL :2007/03/29(木) 15:04:20 ID:SkrWWvsv
ありがとうございました!
10gの外部参照って(+)じゃダメなの?
ダメじゃないけど新規開発するなら OUTER JOIN 使うべき。 慣れればこっちのほうがわかりやすいよ。
(+)はOracleでしか使えないし、将来的には廃止される可能性もあるしね。
パフォーマンス的に問題になることが多いのが 外部結合を使用している場合が多いんだよなぁ
2台のサーバ(しかも8iと9i)にデータベースリンク張って外部結合させたviewを書いたことがあるよ 検索が遅すぎて使い物にならなかった もともと8iのみだったけど、容量が足りなくなったのでサーバ増設 しかも、まだ8iが手に入ったのに9iを導入なんて馬鹿なことやってた で、そのデータベースを使用したシステムが軒並みエラーを起こして始末書を何枚も書かされる羽目になったよ
>>338 自分で導入したんだったら始末書書くのも自業自得だろ.
ついでにその場合に遅くなる問題はデータベースリンクで連携してる部分だろ.
DBリンク使わずに外部結合してのパフォーマンス測定やった?
外部結合する時でも普通はきちんとキーやインデクス使えば十分実用レベルでしょ.
っていうか導入する前にViewとかなら性能試験やっとけよ.
DBの容量が足りなくなったんだったら,HDD増設して普通に表領域増やせよ.
なんか他にも突っ込み所あるような気がするけど後ヨロシコ
どうしてコストが高い方を選んで、わざわざ遅くするような選択するかな〜 もちろん維持コストも高くなっているんだよな・・・おまえクビw
341 :
338 :2007/03/30(金) 20:51:19 ID:???
俺が導入を決めたんじゃなくて、上が導入を決めたんだよ で、こっちには「新しくDBサーバ買うから」しか言わない しかも、置き換えるのではなく、よく使うデータを新しい方に移す方針たててた >っていうか導入する前にViewとかなら性能試験やっとけよ. 1週間前に言われて十分な検証をとれないままやらされたんだよ しかも、当時社内には9iなかったからデータベースリンクも8i同士でしかやってない そりゃ、トラブるわなってこと
営業が売りつける事しか頭になくて、かつ開発が発言力ない組織なんだろ。 その後ユルユルと9に移行したんだろうし。 たぶんw
343 :
NAME IS NULL :2007/03/31(土) 09:55:17 ID:1KZDmp2y
oracle 9i をwindows2000に再インストールして、パッチ9.2.0.4をあてました。 Database configrationからグローバルデータベース作成のための バッチファイルを作成しました。 そのバッチファイルを起動すると、エラーになってしまいます。 エラー内容は ・CREATE OR REPLACE ????????? ・データベースがオープンしていません。 などです。 オラクルのサービスが起ち上がってるのは確認したんですが、 それ以外で何を確認すればいいのかがわかりません。 オラクルを再インストールしても同じ現象になります。 どなたか教えてください。
>>343 PSR入手できる環境なら、
OiSCに訊くのが一番早い。
>>343 バッチを作らずに普通にDBCAからそのまま作成してみたら?
結構DBCAで作成されるバッチにはバグがあったりするよ。
>>344-345 ありがとうございます。
DBCAから作ってみて、だめだったら問い合わせてみます。
単純だけど、以前から疑問に思ってたので教えてください。 shellから発行したSQLを中断したいんだけど、killしたらロールバック されてしまうんだけど、その時間が勿体無いので、ロールバックせず に中断したいんだけど、無理?
電源落とせば?
>>347 smonをkillしたらabortと一緒の動きしたと思ったけど
>>347 またRDBMSの基本を無視するような動きだな。
レスどうもです。 確かにOracleの基本を無視してるんですが、 実運用では、単にワークを作る処理とか、そのSQLは 捨てても他のプロセスを生かしたいという状況があるもので・・
>>352 どっちにしろ再度実行する前に
「これまでの処理をロールバックする」とか
「実行前に初期化する」って処理が必要なんじゃね〜の?
だったらロールバックした方がいいだろ。
次に実行云々の前に、別のShell立ち上げて
接続すれば、既存トランザクションの影響は受けないしなwww
>>353 んだな。
どうせトランザクションの排他レベルはシリアライザブルなんだから、何で
Killった後にいちいち待っているのか分からんな。
あるマシン上のOracle10g上のDBを 別のマシンのOracle8iにエキスポート するには8iのクライアントで10gでつないで EXPしてからそのファイルを8iのクライアント でIMPすればいいようなのですが他にいい方法 はないでしょうか?
10g→8iなんてできるんか?
サポートマトリックスを確認したが、10g => 8iはサポート外だな。 DB Linkがサポートされているかどうか知らんが、そっちの方が まだ可能性がありそうだな。
>>357 サポートマトリックスってどれ?
自分の見る公式の奴にはEXP/IMPは書かれていない
マニュアルだと7.xでもインポートできるような書き方されてる
U.S. Metalink Note:132904.1 Compatibility Matrix for Export & Import Between Different Oracle Versions によると、10gからだと8.1.7のexp使ってexpしたファイルのimpはサポートされているな。 8.1.5や8.1.6だったら、まずは8.1.7.4のパッチをあてる必要があるな。
>>355 8.1.7のexpで取得したダンプなら
10gのimpでインポート可能。
Oracle10gをテスト用に自分のPCを入れています 他の人のPCにクライアントを入れて自分のPC内のDBに接続しようとしたらタイムアウトして接続できませんでした そのPCからサーバにある本番環境にはアクセスできました Net Configuration Managerを使用して設定しました 設定内容は確認しましたが、おかしいところはなかったです どうすれば接続できるようになりますか? OSはWindowsXP SP2です 自分のPC内のDBの設定、もしくは共有設定あたりがおかしいのかなと思うのですが・・・
エスパーさんお呼びですよー っていうのはおいといて、WindowsFirewallとかが弾いてるとかかな?
>>361 残念ながら8.1.7→10.xは
8.1.7のサポート終了時に
マトリックスから外されただけで、
正式サポートされていた
バージョンの組み合わせだよ。
365 :
362 :2007/04/05(木) 19:47:17 ID:???
>>363 そのまさかでした
あほらしい質問して申し訳ない
でも、WindowsファイアウォールにSQL Plusの追加をしても1521空けてもアクセスできませんでした
これ以上はスレ違いになりますか
>>364 疲れるな。。
8.1.7→10.x じゃなくて、
>>355 がやりたいと言ってるのは
10g→8i のことでしょ?
ちゃんと読めないの?
>>366 だから8iのexpツールでダンプとれば
8iにimpできるんだよ。
ちゃんと読めよwww
>>367 へぇ。じゃあ例えば新しいデータ型とかもちゃんと入るのかね。
もちろんやってみてから言ってるんだろうね?
>>367 ああなるほどね。やっと
>>367 の言ってることがわかったよ。
ちゃんと書かないお前が悪いな。
DB板ってなんでこんな人間しかいないんだ?w みんなコミュニケーション下手すぎwww
しかしあら不思議!SQLでしゃべるとみんな饒舌になるのでした
>>370 ここの人達、バッファが足りなくてちょっとディスクリード起こしてしまっているんです。
374 :
NAME IS NULL :2007/04/09(月) 21:20:27 ID:dgbyTs5E
windows版oracle10G パッチの適用方法を教えて頂けないでしょうか? readmeにはUNIX版しかないので困っております。どこかに説明してあるサイトやどなたか教えて頂けないでしょうか?
ouiを起動して、パッチのjarを指定するだけ。
376 :
NAME IS NULL :2007/04/09(月) 21:45:39 ID:dgbyTs5E
あったっけ? っていうか、やってみればいいじゃん。 パッチのリストが読み込まれればそれで成功でしょ。 甘利にも簡単なことなんで、いちいち細かいことを覚えてないって人が俺も含めてほとんどだと思うよ。
378 :
NAME IS NULL :2007/04/10(火) 21:56:22 ID:D+v1PS8Y
sqlplusでデータベースに接続出来ない。 ORA-12154: TNS: 指定された接続識別子を解決できませんでした ↑これ。 tnsnames.oraとか知らんから馬鹿でもわかるように解決する手順教えてくれ。
>>378 サポート契約しているベンダーへレッツゴー。
>>378 Oracle Netの勉強汁www
じゃなきゃサポート契約汁www
381 :
NAME IS NULL :2007/04/17(火) 02:33:01 ID:VDbMfobx
接続に関して躓いているので、アドバイスをください。 環境はlinux に10g を入れてサービスとして起動しようとしています。 一台のマシンにインストールしたオラクルに対して リスナーを設定し、複数のDB (=インスタンス)を作成したわけですが、 片方のDB に対してアクセスができませんでした。 tnsname の設定は問題ないと思っています。 listener の設定が不安です。 調べていると、listener のファイル内に作成した各DB のSIDを書くような記述が見受けられるのですが、 netca で行うリスナーの設定では、そのような入力は求められませんでした。 複数のDB へのアクセスを一つのリスナーで受けることは可能なのでしょうか? また、その場合のlistener.ora の記述方法はどういったものになるのでしょうか?
>>381 できる。
listener.oraの記述については、マニュアル
「Oracle Database Net Services リファレンス」の
「リスナー・パラメータ(listener.ora)」あたりを
参照してもらえば分かると思うけど、
SID_LIST_listener_name=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=global_database_name)
(SID_NAME=sid)
(ORACLE_HOME=oracle_home))
(SID_DESC=...))
のように書く。
要はSID_DESCのセクションを複数記述する。
383 :
381 :2007/04/17(火) 08:43:50 ID:VDbMfobx
>>382 ご回答ありがとうございます。やってみます。
ちなみに、リスナーを複数用意するのはどういった場合なのでしょうか?
一つでも使えるのに、複数作成することもあるのですか?
>>383 複数NICで負荷分散させたいときとかに、
複数リスナー立ち上げる。
>>384 複数NICの場合はにはO/S側でチーミングなりボンディングすればいいんでないの?
レイヤーが違うから、どっちがいいかは設計方針によるんじゃないの? listenerでやる方が高度なことができるけど、反面Oracleのバグや仕様に悩まされることもあるかもしれない。 とかね。
アプリケーションプログラムの接続のためにlistener.oraにSIDやGLOBAL_DBNAME を設定するのは邪道。これはOracle8のころのやりかた。 Oracleインスタンスの初期化パラメータLOCAL_LISTENERを設定し、Oracleインスタンス からOracleリスナーに自分を登録させるのが今の方法。
なるほど。
389 :
NAME IS NULL :2007/04/20(金) 16:49:47 ID:W5Lcj5GJ
オラクルとアクセスとSQLの違いを教えてください。 何を導入したらよいのか解らず困っています。 よろしく御願い致します。
違いが多くて同じ箇所をあげたほうが早い。全く別物だと思ってOracleの入門書からはじめよう。
391 :
NAME IS NULL :2007/04/20(金) 19:07:33 ID:v3OhOLUY
沖縄県の方へ(命に関わる注意事項です) 沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。 民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」で検索をお願いします。 この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから… ※一国二制度 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。) さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。 今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。 自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。 発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
>>389 そんなこと聞いてるようなレベルならアクセスにしとけ
つかSQLてMYSQLのことか?
393 :
NAME IS NULL :2007/04/21(土) 02:31:48 ID:Vxfi8HR4
ここで言っているインスタンスってDB のことでいいですか? DBCA とかで, DB 作成というのがありますが、それはインスタンスの作成である。と。
DBとインスタンスは1対1に対応するからね。 DBCAで作るのはDBだな。 インスタンスはSGAとプロセスの集合を指す。
>>394 必ずしも1対1とは限らない。
RACの様に複数インスタンス対1DBという対応だってありうる。
396 :
NAME IS NULL :2007/04/21(土) 17:47:21 ID:iUeSgJd/
低レベルな問い合わせですみません。 教えて下さい。 バージョンは9iです。 ・SQL1文で ・SELECTの結果を見て、動的にFROM句/where句を変えたい。 ・正確にはプロCOBOLん中で使います。 ・PL/SQLは使用できません。 ↓実イメージ SELECT 名簿.生徒名, 名簿.理系文系区分 理系費用.学費, 文系費用.学費 from 名簿, 理系学費, 文系学費 (このままだと、学費テーブルとのジョインが上手くいかないのはわかっています。) 名簿テーブルの理系文系区分が、理系だったら、理系費用テーブルをジョインしたい。 文系だったら、文系費用テーブルをジョインしたい、みたいな。。。 一応、解決策は一つ思い付いています。 理系と文系のそれぞれ費用テーブルにジョインした問い合わせを、 UNIONすればイイってな感じは思いついてます。 ただ、SQLん中でIF文とか書けるのかなぁ、というのがわからなくて。
>>396 IF文は要らない。
名簿テーブルの理系/文系の部分集合と結合できれば良い。
select a.生徒名,a.理系文系区分,b.学費
from 名簿 a,理系学費 b
where a.理系文系区分=理系
union
select a.生徒名,a.理系文系区分,b.学費
from 名簿 a,理系学費 b
where a.理系文系区分=理系
文系は廃止です!
やさしいな 漏れなら参考書で調べたのか?と聞いてやりたいが
400 :
396 :2007/04/21(土) 20:44:57 ID:iUeSgJd/
>>397 ありがとうございます。
しかし、私の書き方が悪かったようです。すみません。
397様の書いてくださった問い合わせ文はイメージできていたんです。
ただ、別の解決策がないのかを模索していました。
(PL/SQL以外で)SQL文の中にIF文が書けるのか、
動的に構文を書き換える事が出来るのかが知りたかったのです。
>>399 調べてみました。
IF文で逆引きを行うとCASE文しか見つけれませんでした。。。
>>396 個人的には学費テーブルを文系用、理系用に分割していることが
設計ミスのようにも感じますが、
>IF文で逆引きを行うとCASE文しか見つけれませんでした。。。
そのCASE文&スカラー副問合せを使用して、
SELECT 生徒名,理系文系区分
,CASE 理系文系区分
WHEN '文系' THEN (SELECT 学費 FROM 文系学費)
WHEN '理系' THEN (SELECT 学費 FROM 理系学費)
END 学費
FROM 名簿
402 :
396 :2007/04/22(日) 00:49:45 ID:4IKXQWUf
>>401 様
ありがとうございます。
月曜になれば、実際に端末叩いて確認できるのですが、
今現在、確認手段がないので、よろしければ、も一つご教授下さい。
下記のような問い合わせは成立するでしょうか?
SELECT a.生徒名, a.理系文系区分, a.授業科目コード
,CASE a.理系文系区分
WHEN '文系' THEN (SELECT b.学費 FROM 文系学費 b WHERE a.授業科目コード = b.授業科目コード)
WHEN '理系' THEN (SELECT c.学費 FROM 理系学費 c WHERE a.授業科目コード = c.授業科目コード)
END 学費
FROM 名簿 a
> 個人的には学費テーブルを文系用、理系用に分割していることが
> 設計ミスのようにも感じますが
本来的には2つの問い合わせを作成するハズで、
それが正統のハズが大人の事情で orz
>>396 >下記のような問い合わせは成立するでしょうか?
構文的、SQLなどから推測できるテーブル構成的には
問題ないかと思います。
404 :
396 :2007/04/22(日) 02:01:01 ID:???
>>403 様
ありがとうございました!
助かりました!
>>402 授業科目コードが文系学費テーブル|理系学費テーブルの一意キーであれば。
406 :
NAME IS NULL :2007/04/22(日) 14:42:56 ID:RabniuWG
テーブル作成シェルを流して、その後、 もう一度、テーブル作成シェルを実行すると、エラーとなりますよね? (drop tableで一旦、テーブル削除をしないと。) でも、1回目に流したテーブル作成シェルのテーブル名が大文字で、 2回目に流したテーブル作成シェルのテーブル名が小文字の場合って 正常にテーブルが作成されてしまいませんか?
>>406 Oracleの場合、オブジェクト名は大文字・小文字区別されないよ。
どうなるか分かるよな?
>>407 テーブル作成時にダブルクォーテーションで囲むと
明示的に大文字・小文字が区別されるよ!
そんなことするやつ少ないとおもうけど
>>406 大文字と小文字のテーブルができただけ
何が問題なんだ?
410 :
396 :2007/04/22(日) 20:13:05 ID:???
>>405 様
ありがとうございます。
認識いたしました。
411 :
NAME IS NULL :2007/04/24(火) 14:58:39 ID:Fp+zC6oF
あるテーブルの主キーでの削除に非常に時間が掛かるのですが、 どういったことが原因として考えられるでしょうか? 外部キーで沢山参照されているテーブルだったので、それらの cascade削除をしないようにしてみたのですが、処理時間に大きな 改善は見られませんでした。
>>411 トレース取ってみて、
SELECTでのレコード取得時と、
DELETE時のCOST比較してみたら?
>>411 検索性能重視のテーブルでインデックスいっぱいあったりする?
リリースノートによると、oo4o 9.2.4.4はWin2003に対応していないと なっていますが、問題なく動作しています。 オラクルがいう「システム要件」というのは、絶対なんでしょうか?
サポートの問題とかいろいろある。
>>415 日本オラクルが「問題有りませんよ」と
公式発表しているのがシステム要件だろ。
それ以外の組み合わせで何か起きてもサポート対象外だし、
何か起きるかどうかも日本オラクルでは把握すらしてないだろwww
>>415 動作保証されていない組み合わせだと
表面上うまく動いているように見えるかもしれないし、
間違った操作でもそのまま何も言わずに動いてくれるかもしれないし、
バックアップをリカバリしたときに元通りにならないかもしれないし、
って感じなのかもね。
419 :
NAME IS NULL :2007/04/25(水) 23:53:04 ID:idDHPFKk
オラクルサーバーの物理的な入れ替えというのを行うために 今あるデータベースを一時的に外部にまるまる保存したいんですが、 現実的な方法ってどういうものがありますか? データベースはテーブル数などは多いけど容量的には小さいものです。 ユーザー名なども保存して再び同じ設定で使いたいのですが、 なにぶんこういう経験がゼロなもので何から調べて良いのかもわかりません。 丸投げに近い形で済みませんが、どうか宜しくお願い致します。
inportとexport
>>420 ありがとうございます。
オラクルのメニューの中にあるエクスポートを実行しようとしたら
ユーザー名とパスワードが通りませんでしたが、
なんとか頑張ってみます。
>>422 新しいサーバに同じバージョンで移行するなら
コールドバックアップしてリカバリでも良いんだけどな。
まぁ、どっちも手間的にはたいして変わらんと思うけど。
>>423 コールドバックアップですか?
またググってみます。
どうもありがとうございます。
ストアドプロシージャに登録してバッチ処理を行うのですが 処理中の件数をリアルタイムに表示する方法はありますでしょうか? 通常はできなさそうなのですが何とか表示したいのです。。。
426 :
NAME IS NULL :2007/04/27(金) 01:06:45 ID:HdP4V3Wp
ソートを2重にしたいんだけどオラクルではどうすればいいのでしょうか? 例えば「値段」を降順に並べたあと、もし値段の値が一緒だった場合「商品名」が昇順に並ぶようにしたいのですが
>>426 order by 値段 desc, 商品名 asc
>>425 処理度合いテーブルを作って,自律型トランザクションで進行状況を出力する.
別アプリでそのテーブルを照会する.
>>426 Order by 値段,商品名
>>428 ふむ〜やっぱりそれしかないですかね〜
telnetから処理を行っているので実行したら処理終了まで
無通信の状態になってしまい切断されてしまうのです。
そもそもtelnetを使うのが間違いですかね・・・orz
>>429 ストアドでUTL_FILEつかってログ出力させ、それをtailするのが一番簡単だとはおもう。
どっちにしろ、何かしらバッチのログを採るのが普通でしょ?
>>419 鯖の種類何よ?
ちなみに移行元の鯖と移行先との鯖は同時に立ち上げ可能なのか?
それで大分手間も代わってくるけどな。
>>429 Telnet側でKeep Aliveパケット送ればいいじゃん?
ログは撮りますけどUTL_FILE使用しなければ処理終了後に一括出力ですよね・・・ telnet切断は無通信時間を延ばしてもらうことで対応することにしました^^;
telnetってフォアグランドで何か実行していても切れたっけ? って思ったけど、 OSが切断しなくても途中のNW機器が切ってしまうことがあるな。
質問です。 C言語でOracle10gを利用することになったのですが、 接続の方法にはPro*CとOCIの2つしかないのでしょうか? また、OCIの場合、connectやselect,insert等をC言語の関数化することは可能でしょうか?
>>436 どうとでも出来る。
まずはやってみろ。
438 :
308 :2007/04/29(日) 13:33:30 ID:???
>>310-314 ありがとうございます。
早速やってみたところ、極めて稀にはなったのですが、やはり発生します。
そもそも一セッションしかDBに接続していないのに、
なぜだろうと。。。勢い余ってOracleのサポートにTELしてしまったところ
@ SQL traceを取りたまえ。アプリ自体のバグかもしれないし、これで切り分けができるだろう。
A Oracleのバグとは思えない。もし、万が一、バグがあるとするなら、.NET Framework自体のバグかもね。
とのアドバイスをいただきました。
@は確かにそのとおりで納得しました。
が、Aの意見は…もし.NET自体のバグだとすると… (((( ;゚Д゚))))ガクガクブルブル!
.NET Framework本体より、ODP.NETの方が潜在的にバグが多そうだしなw
Oracleの資格取ったけど、会社ではDB2なんだよね。 家ではOracleDBを入れてみたいんだけど、もっとも安いOracle製品ってどれ? 値段も教えてほしい。
大型連休上げ
>>441 Express Editionがタダ。
一番安いのはPersonal Edition。
Enterprise Editionでしか使えない
いろんなオプションとかも
(ライセンス違反なしで)試したいなら
Personalを買うのが良い。
試すだけならEEもダウンロードできるだろ
>>443 ,
>>444 ありがとうございます
ぐぐったんですが、DL出来るURL教えてもらえますか?
ORACLEのサイト苦手orz
開発用だから無期限 日本サイトにある体験版も中身は全く一緒。 そもそもいまのOracleには日本語版というものがないしね。
>>449 ボラクルの体験版、もくしは開発者用ライセンスは紳士協定という
ことになっております。
まあ、端的に言うならテクニカルには無期限という事です。
>>450 ,
>>451 わかりました。ありがとうございます。
日本語版のをインスコしてみようと思います。
わかり易く説明してくださって本当にありがとうございました。
DB板は本当に紳士な方ばかりで癒されます。
行間? どの行とどの行? アホが沸いてくるのは春だからか。
>>431 レス遅くなってすみません。
元のサーバーの起動終了から次のサーバーの起動開始まで大体3日ぐらいあります。
サーバーはウインドウズサーバーかなんかです。
パソコン詳しくなくてすみません。
>>457 鯖がウィンドウズか・・・。
まあ、移行手順としてはこんな感じ?
1. DBをシャットダウンしてコントロールファイル、データファイル、リドログファイル、
init.ora、tnsnames.ora、listener.oraのバックアップをテープやネットワークバック
アップなどの外部メディアに保存
2. 新規鯖の準備が完了後、ボラクルのソフトウェアのインスコ
3. oradim使ってインスタンス(サービス)の作成
4. 外部メディアからバックアップを戻す
>>458 おしい。80点。PWD***.oraとか忘れてる。
その手順は、ファイルのパスとかが変わらなければという条件付きだな。
鯖そのもののウプグレードだし、窓鯖だし、そんなにファイルパスとか 変わらんでないの? まあ、例え変わったとしてもalter database rename file文打てばいい だけだし。
モノホンDB(HP-UXのOracle 10G オプションは謎)でexpしたdumpファイルを テスト用DB(WindowsNTのOracle 10G ただのXE)でimpしてます 大半のテーブルはなぜか問題なくimpできましたが 10G XEはパーティション表は対応してませんのでパーティション表だけはimpできません 仕方なくバイナリエディタでパーティション定義の部分を半角空白で潰してからimpしてますが もっとましなインポート方法はOracle 10Gとパーティション表のオプションを買う以外ないのでしょうか ちなみにエクスポート側は人様のブツなのでいぢれません
463 :
462 :2007/05/01(火) 14:49:52 ID:???
失礼 WindowsNT→WindowsXP
>>462 Personal Edition買え。
XEじゃオプション使えないけど、
PersonalならEnterprise Editionで使えるオプションは
スタンドアロンで使う分においては
ライセンス上すべて使うことが可能。
>>458-459 とりあえずテストはうまくいきました。
ありがとうございます。
あとは本番が来るのを待つのみです。
10gでデータベースのdropをするとselect * from tabをするとゴミみたいな物ができるのだが、どうやって消せばいいのでしょうか?
469 :
NAME IS NULL :2007/05/07(月) 07:05:40 ID:V4L2+2IZ
初期ぱらに 10.1 なら _recyclebin=FALSE 10.2 なら recyclebin=OFF
Pro*Cで質問です。 NUMBER(10)を受け取れるホスト変数は何型で定義すればよいでしょうか? intでは足りないようです。
>>470 int に (多分 long でも同じだろうが) 入りきれないような値はどう頑張っても無理。
数桁ずつ2つに分割して受け取るか、諦めて char [] で受け取るしかない。
>>470 プリコンパイルで エラーとか警告とかが出てるとか ?
473 :
428 :2007/05/11(金) 04:45:58 ID:EOvcBfqi
oracle10g でNVL関数で不具合らしきものは 聞いた事ありますか? sqlplusで aaa:number型 NVL(aaa,999) aaaがNULLの場合、""の場合、0の場合で 取得結果が一致してしまうことはありますか?
Oracleにおいては、空文字列はNULLとして保存される(文字型であっても!)。
>>473 Number型に""(空文字列)は入れられないだろwww
aaa=0とaaa=NULLの場合は
明らかにNVLの戻り値は異なると思うが。
>>475 入るよNULLとしてw
>空文字列はNULLとして保存される
練習目的で oracle database10g Express edition10.2.0.1.0 を fedora6にインストールしたのですが、 GNOME端末からsqlplusにログイン?(おかしな表現でしたらすいません) したところ、方向キーを押すと ^[[D ^[[A ^[[C ^[[B (←↑→↓) と入力されてしまいます。 検索エンジンで調べてみたのですが、^[[の文字を検索できなくて 解決出来ません。 知恵を貸していただけないでしょうか?
479 :
477です :2007/05/11(金) 22:53:17 ID:???
478さんありがとうございます! linux も oracle も初めてでうまく出来るか不安でしたが tar zxvf と make install だけで SQLPLUS上で方向キーが使えるようになりました。 どうもありがとうございます。
Pro*CでBLOB型のカラムのデータを更新するサンプルプログラムは ないでしょうか?
>>457 とは別人なんだけど、
>>458-461 参考にしてデータの移動をやってみたのだが今度はoracleの起動法がわかりません
やったのは
sysdbaでshutdown
バックアップしておいたファイルをコピー
Windowsの再起動
コピー元はEドライブで下が、コピー先はDドライブです
これから先がよくわかりません
サービスネームなしでsysdbaに入れるようなので入ってstartup;をやると
ORA-02778: Name given for the log directory is invalid
が帰ってきます
この先どうすればいいのでしょうか?
>>482 ドライブレターが変わった時点で
その方法ではリカバリできん。
MOUNTしてALTER SYSTEM文発行して、
制御ファイル上のREDOログファイルの場所と、
データベースファイルの場所を書き換えろ。
484 :
482 :2007/05/14(月) 15:00:44 ID:???
>>483 何をやっても起動できません
oracleを削除して再インストールした方が早いのでしょうか?
>>484 なにをやっても、って何やったんだよ。
とりあえずコマンドプロンプトで下記のコマンド打って
sqlplus /nolog
conn / as sysdba
startup nomount
alter database mount;
alter database open;
どこまでエラーが出ずに進捗したかまず教えろ。
必ず標準出力をコピペしろよ。
>>484 つーか、喪前、ドライブレターが変わったんだから、当然alert.logとかの
出力先の指定をinit.oraの中でもちゃんと変えたんだよな?
ORA-02778: Name given for the log directory is invalidって言われて
んだから、init.oraの中のbdump、cdump、udumpの出力先を良く見て
みろや。
487 :
482 :2007/05/15(火) 10:33:39 ID:???
>>485 以下、ログです
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\xxxxxxx>sqlplus /nolog
SQL*Plus: Release 10.1.0.2.0 - Production on 火 5月 15 10:21:01 2007
Copyright (c) 1982, 2004, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file 'D:\ORACLE\PRODUCT\10.1.0\DB_1\DATABASE
\INITORCL.ORA'
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01034: ORACLE not available
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01034: ORACLE not available
SQL>
上書きした*.oraの中身はすべてDドライブに書き換えました
INITORCL.ORAはありませんでした
バックアップをとったときもEドライブの*.oraはすべてバックアップをとりましたが、ありませんでした
init.oraとはinit.ora.4142007111722のことでしょうか?
そのデータならDドライブに書き換えました
>>487 init.oraってここではたぶんspfileを指してる。
で、Oracleが必要としてるspfileなりpfilなりを探して、
見つけられなかったもんだから怒られてる。
startup nomount pfile=init.ora.4142007111722
みたいにして指定するか、
レジストリのORA_<SID>_PFILE確認して
正しい場所に書き換えてからstartup nomountしてみろ。
489 :
482 :2007/05/15(火) 19:50:30 ID:???
>>488 レジストリの中にORA_<SID>_PFILEの項目を見つけることができなかったのでファイルを直接指定して実行しました
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\FSystem>sqlplus /nolog
SQL*Plus: Release 10.1.0.2.0 - Production on 火 5月 15 19:37:51 2007
Copyright (c) 1982, 2004, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup nomount pfile=D:\oracle\product\10.1.0\admin\orcl\pfile\init.ora.41
42007111722
ORACLE instance started.
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145488364 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
SQL> alter database mount;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: 'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF'
SQL>
ORA-1157の解説を読んで
alter system check datafiles;
を実行しましたが、
System altered.
と、でるだけでこの後alter database openを実行してもエラーが帰ってきました。
これはどこを変更するといいのでしょうか?
>>489 alter database rename file
'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF' TO
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF'
;
ってのを必要なファイル分、順次実行して、
すべてのデータベースファイルやREDOログファイルのエントリを書き換え汁。
491 :
482 :2007/05/16(水) 07:53:27 ID:???
>>490 ファイルの書き換えを行いました
次に以下のエラーが帰ってきました
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01172: recovery of thread 1 stuck at block 41 of file 2
ORA-01151: use media recovery to recover block, restore backup if needed
調べてみたところ、メディアリカバリが必要とのことだったのでリカバリコマンドを実行したところ、以下のメッセージが帰ってきました
SQL> startup open recover pfile=D:\oracle\product\10.1.0\admin\orcl\pfile\init.o
ra.4142007111722
ORACLE instance started.
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145488364 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
Database mounted.
ORA-01172: recovery of thread 1 stuck at block 41 of file 2
ORA-01151: use media recovery to recover block, restore backup if needed
リカバリコマンドを実行しても同じエラーが帰ってきます
申し訳ありません
これから先をご教示ください
また、startupでpfileを指定しないとstartupを実行できませんが、どのようにしてoracleにpfileの場所を登録するのでしょうか?
これも併せてご教示ください。
お願いします
>>491 それ、ファイル番号2番のファイルがブロック破損してる。
正常と思われるバックアップから上書きコピーして書き戻しても同様のエラーが発生するなら、
Oracleのサポートに連絡して、復旧手順アナウンスしてもらえ。
>>491 リカバリしてもダメ、ってのは、
RECOVER DATAFILEを実行したんだよな?
それで
>>492 試してダメならバックアップしたファイルが壊れてる。
>>491 EEでかつRMAN使ってバックアップとか取っていたらMBRという
きのうがるんだが、おそらくそんなことやっていないよな?
既出だが、ブロックが壊れているから、バックアップから戻すしかない。
ちなみにそのファイル2は何だった?
もしラッキーな事に、それがTempファイルだったらDropしても問題無いけどね。
もしくはデータ的にそんなに重要でないのなら、mount状態でデータファイルを
Dropして、無理やりDB上げることも不可能ではないが・・・。
それとspfileを使用してるみたいだから、取り合えず以下のコマンド使えば
いちいちpfileを指定しなくても起動できるようになるよ。
create spfile from pfile='D:\oracle\product\10.1.0\admin\orcl\pfile\init.ora.4142007111722';
495 :
482 :2007/05/16(水) 14:58:42 ID:???
>>493 recover datafileをoradataの中の*.DBFファイルに対して実行しました
その後、alter database openを実行すると、REDO0*.LOGがEドライブにないと警告されました
そこでalter database rename fileを実行後、alter database openを実行したところ、動作しました
データの中身も確認できるようになりました
>>494 create spfileを実行しました
皆様、ありがとうございました
496 :
482 :2007/05/16(水) 16:47:13 ID:???
482です。 データをみれるようになったのですが、データを直接さわろうとすると内部エラーが発生してデータの操作ができませんでした truncate tableやpurge recyclebinやdrop tableを実行すると ORA-00604: error occurred at recursive SQL level 1 ORA-00607: Internal error occurred while making a change to a data block ORA-00600: internal error code, arguments: [4193], [1899], [284], [], [], [], [], [] と、いったメッセージが出てきてtruncateができなかったり、purgeができなかったりします また、PCの起動時にサービスかドライバが起動できないというエラーメッセージが出てきます そこでイベントビューアをみてみるとOracle,orclに イベント ID (16) (ソース Oracle.orcl 内) に関する説明が見つかりませんでした。 リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。 この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。 詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です: orcl. と、いう内容の情報メッセージ、警告メッセージが記録されています。 これはoracleのデータのバックアップをとって再インストールした方がいいのでしょうか?
>>496 >>496 ブロックがいかれてしまってんだから、そうなっても仕方ないと思われ。
もし出きるのならRMAN使って、Verifyかけてみてみ?
1. RMANベリフィケーションのやり方
DOS> rman target / nocatalog
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;
RMAN> run {
allocate channel d1 type disk;
allocate channel d2 type disk;
backup check logical validate database;
release channel d1;
release channel d2;
}
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
2. 壊れたブロック情報を以下のSQLで検索
select * from v$database_block_corruption;
この頃ハマったこと。(これ、SQL文を作る上での常識なんだろうか?) select での検索で、条件が多くなればなるほど嘘のように遅くなることが分かった。 こんなやつ。 select * from hoge where fuga in (1, 2, 3, ...(100個ぐらい値が並ぶ)...); この in での項目が増えれば増えるほど遅くなる。ところがこの in で指定している 値を create temporary table tmp (no number(10) not null primary key); で 作った表に全部 insert してこうすると速かった。とても速かった。値が多いと 雲泥の差があった。 select * from hoge where fuga in (select no from tmp); DBサーバ内部での最適化の問題だとは思うが、あまりにも差がありすぎて びっくりした。(Oracle 9 だったからか?)
499 :
482 :2007/05/17(木) 18:45:15 ID:???
>>497 直らないみたいな感じです
以下、ログです
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\xxxxxxx>rman target / nocatalog
Recovery Manager: Release 10.1.0.2.0 - Production
Copyright (c) 1995, 2004, Oracle. All rights reserved.
connected to target database: ORCL (DBID=1140153217)
using target database controlfile instead of recovery catalog
RMAN> run {
2> allocate channel d1 type disk;
3> allocate channel d2 type disk;
4> backup check logical validate database;
5> release channel d1;
6> release channel d2;
7> }
allocated channel: d1
channel d1: sid=154 devtype=DISK
allocated channel: d2
channel d2: sid=143 devtype=DISK
Starting backup at 07-05-17
channel d1: starting full datafile backupset
channel d1: specifying datafile(s) in backupset
RMAN-03009: failure of backup command on d1 channel at 05/17/2007 11:58:07
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
continuing other job steps, job failed will not be re-run
channel d1: starting full datafile backupset
channel d1: specifying datafile(s) in backupset
including current controlfile in backupset
channel d2: starting full datafile backupset
channel d2: specifying datafile(s) in backupset
RMAN-03009: failure of backup command on d2 channel at 05/17/2007 11:58:08
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
continuing other job steps, job failed will not be re-run
channel d2: starting full datafile backupset
channel d2: specifying datafile(s) in backupset
including current SPFILE in backupset
channel d2: backup set complete, elapsed time: 00:00:02
channel d1: backup set complete, elapsed time: 00:00:03
released channel: d1
released channel: d2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on d2 channel at 05/17/2007 11:58:08
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
500 :
482 :2007/05/17(木) 18:49:56 ID:???
その2 RMAN> configure controlfile autobackup off; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP OFF; new RMAN configuration parameters are successfully stored RMAN> run { 2> allocate channel d1 type disk; 3> allocate channel d2 type disk; 4> backup check logical validate database; 5> release channel d1; 6> release channel d2; 7> } allocated channel: d1 channel d1: sid=154 devtype=DISK allocated channel: d2 channel d2: sid=143 devtype=DISK Starting backup at 07-05-17 channel d1: starting full datafile backupset channel d1: specifying datafile(s) in backupset RMAN-03009: failure of backup command on d1 channel at 05/17/2007 12:00:37 ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode continuing other job steps, job failed will not be re-run channel d1: starting full datafile backupset channel d1: specifying datafile(s) in backupset including current controlfile in backupset channel d2: starting full datafile backupset channel d2: specifying datafile(s) in backupset RMAN-03009: failure of backup command on d2 channel at 05/17/2007 12:00:37 ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode continuing other job steps, job failed will not be re-run channel d2: starting full datafile backupset channel d2: specifying datafile(s) in backupset channel d1: backup set complete, elapsed time: 00:00:00 including current SPFILE in backupset channel d2: backup set complete, elapsed time: 00:00:02 released channel: d1 released channel: d2 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: failure of backup command on d2 channel at 05/17/2007 12:00:37 ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode RMAN> configure controlfile autobackup on; old RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP OFF; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored RMAN>
> ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode 読める?
>>499 そこまでOracle対して素人だとは思わなかった。
noarchivelogモードで動いているのなら、mount modeで実行しろ。
SQLPLUS> shutdown immediate;
SQLPLUS> startup mount;
もしくはarchivelog modeにしてからでもいいぞ。
SQLPLUS> shutdown immediate;
SQLPLUS> startup mount;
SQLPLUS> alter database archivelog;
SQLPLUS> alter database open;
SQLPLUS> archive log list;
それとRMANベリフィケーションは直すためのものではなく、あくまでベリファイを かけるものだから。 ここから壊れたブロック先を特定して、そいつに「Unreadable」のマーカーをつける。 そうしたらそのブロックに入っているデータは読めないものの、無事な部分は 読める様になる。 そうなれば後はcreate table as selectなり、export/importなりで無事な部分だけを 救い出せばいい。 壊れたブロックに入っていたデータはバックアップが無い以上、復旧の手立ては無いよ。 これでバックアップの重要性を認識しろ。
504 :
NAME IS NULL :2007/05/18(金) 16:19:11 ID:BLRq5Xmu
初歩的な事なのですが質問させてください。 クライアント(私)は10gなのですがサーバー側は9iです exp user/pass@servername file=c:\test.dmp でエクスポートしようとしたのですが EXP-00056: Oracleエラー942が発生しました。 ORA-00942: 表またはビューが存在しません。 EXP-00000: エラーが発生したためエクスポートを終了します。 このようなエラーが出るのですがどなたかわかりますか? 自分なりに調べたのですがわからないままです^^; もちろんテーブルなどの中身はしっかりあります。 ちなみに10gのサーバーからのエクスポートは普通にこのコマンドで出来ました。 クライアントとサーバー側のバージョンが違うとエクスポートが出来ないという 事はありますか?初歩的な事ですいません。お願いします。
なにをエクスポートしたいのですか?
DB全体のです。
>クライアントとサーバー側のバージョンが違うとエクスポートが出来ないという事はありますか ある。
>>504 サーバにある9iのexpでダンプとれ。
>>504 基本的に異なるバージョン間でのexpは、低いバージョンのものを使って
行うことになっている。
つまりあなたの場合には9i側のexpを使わないとならない。
impは10g側のを使えばok。
いつの間にかクライアントPC自らが質問を書き込むことが出来るようになったとは驚き。
鯖側がSolaris/Linuxで、クライアントがウィンドウズって場合、sql発行するのもSQL*Plusのウィンドウズ版が必要?
>>511 Telnetで鯖にログインすればいいんでないの?
どうしてもクライアント側でSQL*PLUS立ち上げたかったら、確かにSQL*PLUSの窓版が
必要だけど、EEのCDとか買えば窓のクライアントとかは同梱されていたりするけどね。
インスタントクライアント(windows&linux)がある。 開発用途に限定するならば、モノホンもDLできるし。
514 :
482 :2007/05/21(月) 09:11:18 ID:???
>>502 shutdownができませんでした
データの復旧をあきらめましたので、現在、エラーがでたり、OSのスタート時にサービスの起動でエラーがでる状況をなおしたいのですが、何か方法はありませんか?
>>514 shutdown abort使え。
O/S関係のエラーだが、サービスはoradim使って作成したんだろうな?
516 :
482 :2007/05/22(火) 08:15:48 ID:???
>>515 shutdown normal/immediateからでしかarchivelogにできないのですが
サービスはインストールした状態のままです
>>523 だったらshutdown abortしてから、startupして、それからshutdown immediateすれば良かろう。
窓は専門じゃないで、なんとも言えんが必要だったらoradim使ってサービス再作成してみれ。
%ORACLE_HOME%\bin\oradim.exe -delete -sid <SID>
%ORACLE_HOME%\bin\oradim.exe -new -sid <SID> -startmode m
%ORACLE_HOME%\bin\oradim.exe -edit -sid <SID> -startmode a
518 :
482 :2007/05/22(火) 11:21:26 ID:???
>>517 そうやってもimmediateで処理がずっとストップするのですが
「ですが」ばっかりだけど少しは自分で考えたのか? 荒らしにしか見えんぞ。
>>518 修復するには今までの作業と同じ位の作業量は残っているな
今は序盤もいいとこだし、素直に再構築しろ
>>518 バックアップ無くてぶっ壊れてるんだから仕方ないだろうな。
まあ、出来るとしたらshutdown abortして、startup mount、recover database、shutdown、startup mount
だったらいくんじゃねぇか?
いずれにせよあなたの技術レベルではこの先のことも理解できるとはとても思えないが・・・。
522 :
NAME IS NULL :2007/05/22(火) 23:57:37 ID:fABphS2n
新社会人なのですが、来月から配属されるプロジェクトを選択しなければいけません。(初配属です) プロジェクトの一つにPL/SQLを使用したOracleのERPパッケージの開発プロジェクトがあるのですが 正直悩んでいます。 研修中にSQLをほんの少しと、Javaを習っていました。ちなみに中小独立ITです。 EBSが何か、どんなパッケージ開発なのかなどの知識は全くないのでとても幼稚な質問になってしまうのですが ・PL/SQL言語を学んで、この先役に立つのか(Oracleプロジェクトを抜けた後にも活かせるのか) ・PL/SQL言語の大変な所 ・ERPパッケージ開発のメリット・デメリットは などが気になる点です。非常に抽象的な質問で、一概には言えないことばかりだと思いますが 個人的な意見で良いので是非お願いします。 サイトや本などで調べてはみたのですが、現場の技術者からの意見が気になるので、ここで質問させて頂きました。
>>522 中間管理職辺りで誰が仕切っているかが重要
COBOLerの下に配属されなければどこでも同じ
ただ優秀なリーダーの下にしか、全ての意味で
おいしいプロジェクトは来ないから
バカマネ/リーダーにつくと、もれなく辞めたくなるだろう
他の案件に何があるか判らないから一概に比較は出来ないけど, PL/SQLの長所は互換性,Oracleが動く環境なら大概動く. P○PみたいにマイナーVerUpしただけで動かなくなるなんてことは無い. PL/SQL言語の大変なところは,互換性の裏返しで構文が古臭い. 業務ロジックを実装するには十分だと思うけど, それ以外のことをやろうと思うと途端に敷居が高くなる. ERPパッケージ開発は基本的に有り物ベースで作るだろうから, 仕事としては退屈.多分仕様通りにパッケージの部品をくっつけて終わり. >>ちなみに中小独立IT ここが一番不安なポインヨ. さっさと覚えること覚えて,ジョブチェンジ考えとけ.
>>523 うちの会社のリーダーはコボラーではなかったとおもいますが、
発注先の会社の管理職まではわかりません。
>>524 丁寧に答えて頂いてありがとうございます。
>仕事としては退屈.多分仕様通りにパッケージの部品をくっつけて終わり.
そうなんですか。ベースがあって、それを相手に合わせてカスタマイズっていうのがメインだというのは
知っていたのですが、やっぱり有り物をくっつけたりするだけなんですね。
面白そう!っていうイメージはあんまり沸かないですね・・・
中小独立ITなので、3〜5年後くらいで転職するとつもりでいるんですが、
その時に転職の武器になる言語なのかなーという不安があります。
>>524 >>ちなみに中小独立IT
> ここが一番不安なポインヨ.
大手ほどなんじゃこれ?っていう若手が多いし&辞めない
傘下のグループ企業の若手の方は優秀だけど良く転職してるな
大手は情報だけは集まるから全社レベルの知識データベースで
仕事できてるのを自分の能力と勘違いしてるんだよね
>>522 PL/SQLはOracle関連の製品ではそれなりに重宝されるが、それ以外では
全く潰しが効かないという諸刃の剣。
でもOracle EBSの案件って最近の日本だとそれなりにあるものなのか?
4年ぐらい前の情報だが、俺が知っている大手でOracle EBS使っていたのって
日本だとCanonとRICHOとかぐらいだった気がしたが・・・?
まあ、その反面、欧州および北米では値段の安さも手伝ってか、Oracle EBSが
結構使われていたりするよ。
俺は日本にいた時には純粋にOracle DBだけで生きていたんだが、海外に出て
否応無くEBSを覚えざるを得ない状況になった('A`)
最もOracle EBSは腐ったアプリという意見は今でも変わらないカーッ(゚Д゚)≡゚д゚)、ペッ
528 :
NAME IS NULL :2007/05/23(水) 13:33:10 ID:8Pm4t5N2
質問です。 ORA12154とかORA00065とか、 番号を入力するだけで検索できるサイトがあれば教えてください。
>>528 oerr コマンドも覚えておくといいかもね。
まぁ、マルチなんだどな。
532 :
NAME IS NULL :2007/05/24(木) 00:04:02 ID:sIsyqRlw
ありがとうございました。
ネタじゃなくてマジでわからんので教えてください。 STATSPACKってなんて読むの?すたっつぱっく?
しゅたっつぱっく
>>533 スタットスパック
スタットスパンキングするともいう
>>533 マジレスしてやるが、スタッツパックだ。
少なくとも日・欧・北米ではそう読んでいる。
537 :
533 :2007/05/25(金) 14:41:21 ID:???
ありがとうございます。すたっつぱっくでいいみたいですね。
OTNの有償プログラムって契約してる人居る? あの開発ライセンス使ってモノ作っても運用に回したかったら 開発した環境用の正規ライセンス購入しろ、みたいになってて 存在意義がわからなかったんだけど、何が目的で加入してるの?
メディアがもらえるってことじゃね? OTNを使わずに正規ライセンスを買ってもメディア代は別だし。
>>538 フリーランサーがサポート情報にアクセスできるからとかじゃないか?
仕事でやってるんなら、アカウント借りりゃ済むやん。
>>541 派遣ならいいだろうけど
客のすべてが保守契約してないわな
そもそも保守契約無しの客って地雷だと思うが。問題が起きたときノンサポートじゃん。 OTNの開発ライセンスで運用しちゃってる割れ廚?
>>543 よく考えろよ、縁故なら別枠だろうが
保守契約できる位に金がだせるところはフリーなどが入る余地はない
個人で受注請負で入り込めるところといえば
オラクルをビックカメラとかで買ってるようなところだろ
545 :
544 :2007/05/26(土) 15:45:58 ID:???
あ、ちなみにフリーでもないしOTNの開発者ライセンスも持ってないぞ 買うとしたら、「それくらいしか」使い道がないだろw
Oracleを一から勉強したいんですけど、 基礎的なことが載っているサイトを知りませんか? ググってもそれらしきサイトが見つからなくて困ってます。
オラクル廚がフリーになっても食えないってことだな。
>>548 オラクルだけじゃ食っていけないだろうな。
オラクルに入社すればいいじゃん
551 :
NAME IS NULL :2007/05/29(火) 14:26:22 ID:UJceAzrI
SELECT QQQ.CURRVAL FROM DUAL; ORA-08002: QQQ.CURRVALはこのセッションではまだ定義されていません なぜこんなエラーが出ますか
>>551 日本語でOK
つかQQQってどう定義されてるわけ?
>>551 QQQがSEQUENCEと仮定すると、
作ったばっかりの時には
NEXTVALしないとCURRVALは取れないよ。
つ〜か、まずググれよwww
select months_between(sysdate,'07-9-27') from dual; 指定した付きが向こうですとか出ましたけど、どういうことなんでしょうか。
>>555 TO_DATEで日付型にしてやれよwww
CREATE OR REPLACE FUNCTION PREV_DAY( P_DATE IN DATE, P_DAY IN CHAR ) RETURN DATE IS BEGIN RETURN NEXT_DAY(P_DATE - INTERVAL '7' DAY, P_DAY); END; というPREV_DAY.sqlをつくってsqlplusで get PREV_DAY.sql / とやると、 PLS-00103: 記号""が見つかりました。 次のうちの1つが入るとき: return とコンパイルエラーが出ます。 なのに、このsqlの平文をsqlplusへコピペするとプロシージャ作成できてしまいます。 何故エラーが出るのか解りません。
558 :
557 :2007/05/29(火) 20:28:49 ID:???
>>557 文章が途中になってしまいました。
get PREV_DAY.sql
/
と書いたファイル createProc.sqlを使って
sqlplus scott/tiger @createProc.sql
とやるのが理想なんですができないでしょうか。
まずは何故エラーなのかを知りたいのですが解りますでしょうか。
>>557 バージョンぐらい書け。
9i R1だったらバグにヒットしている可能性が大。
560 :
557 :2007/05/30(水) 16:25:45 ID:???
うちの10gXE win32 じゃ、問題なく実行できるぞ。
562 :
NAME IS NULL :2007/06/05(火) 07:14:04 ID:S2M66NQt
Oracle8iのデッドロックについて教えて下さい。 (1)複数レコードのテーブルAを、複数並列するdelete テーブルA;した場合、デッドロックが発生する可能性はあるのでしょうか? (2)同じくテーブルAにdelete テーブルA;と、並列して、例えばdelete テーブルA where rownum = 3;->rownum = 1->rownum = 2の計 3 SQLを順番に実行するトランザクションがあった場合、デッドロックが発生する可能性はあるのでしょうか? よろくしお願い致します。
>>562 デッドロックは一車線通行の出会い頭で絶対にバックしない後続車が
双方にきているような状況で譲り合いができないときに発生する。
つまり、その例では発生しない。
564 :
NAME IS NULL :2007/06/05(火) 07:48:39 ID:S2M66NQt
>>563 ありがとうございました。
どこまでがデッドロックするのか、非常に気になっていました。助かりました!
>>562 の(1)と(2)がデッドロックする可能性が無いのであれば、注意すべきは、順番を固定したSQLが2つ以上のトランザクションだけになるのですね。
(トランザクション例1)
select * from テーブルA where rowid = '1' for update;
select * from テーブルA where rowid = '2' for update;
(トランザクション例2)
select * from テーブルA where rowid = '2' for update;
select * from テーブルA where rowid = '1' for update;
(トランザクション例3)
select * from テーブルA for update;
これだと、例1と例2が並列する場合だけデッドロックの可能が有って、例3と例1、または例3と例2、ましてや例3と例3は気にしないで良かったのですね。
ほっとしました。ありがとうございます。
create user test identified by test default tablespace user_data temporary tablespace temporary_data quota unlimited on user_data; 表領域user_dataは存在しません ってどういうこと?
>>565 そのままだと思うが?
user_dataって票領域、作成したか?
デフォルトで存在しているものと思ってましたが
>>567 デフォルトで存在するのはUSER表領域だろ。
USERS 表領域はデフォルトでも存在しないが。 CREATE DATABASE 文を見直してみよう。
571 :
NAME IS NULL :2007/06/06(水) 19:38:02 ID:OUHu+6Q0
COL_A,COL_B,COL_Cの列がある表のCOL_Aにインデックスが貼ってあって、select文のwhere句でCOL_A='hoge' AND COL_B='foo'と記述した場合に、インデックスは効きますか?型はあっている前提です。
>>571 RBO? CBO?
いずれにせよ、実行計画とって
確認してみた方が早いよ。
>>571 基本的に言ってCOL_AのIndexのRange Scanで絞られるはず。
まあ、
>>572 が言っているみたいに実効計画取ったら一発だけどね。
574 :
571 :2007/06/06(水) 20:46:52 ID:hrrOQWwo
>>572 ,573
レスありがとうございます。
10gなんで、CBOだと思うのですが…。
実際やってみないと判らない…ということですね。
最大○億件と見積もられているテーブルに対して、
検索画面をつくれ…つう、要件で、けんさく条件が多いんです。
そこで、必須条件を設けて、ソコにINDEX貼ってほかの任意条件は
どうするよ?ということで、、。
必須項目のカラムにだけはればINDEX効くだろう派と、いや、効かねぇんじゃない
派で意見がまとまらず…。
効く確証はないっつうことですね。
ん〜〜困った。
>>574 何億件というからには当然パーティショニングしているんだよな?
>>574 必須条件を1つ入れても
5つに分類しかされていないとか
偏りが大きいとかだとすげー意味ない
>>574 CBOならコストに依存して、
INDEXの利用に関しては固定的ではないから、
オプティマイザの判断次第。
・・・にしたって、
>>576 の言うようにINDEX項目にするデータ自体に
カーディナリティが低いなどの問題が有れば、意味無いし。
578 :
571 :2007/06/07(木) 08:46:04 ID:FbZnvSWG
当初、この表に対して検索するという要件はなかったので、費用面からパーティショニングオプションをつけてなかったんです。 どうしても、オプション無しではダメそうであれば、オプション導入も考慮するって方向で、まず、色々調査してます。 索引貼る対象の必須項目はバラツキが大きく、かなり絞られるかと思います。
>>578 > 索引貼る対象の必須項目はバラツキが大きく、かなり絞られるかと思います。
だったらINDEX作るだけでいけるように思うがな。
10gなら定期的に統計情報とるようになってるはずだし。
億もある表に対する検索は正直言ってパーティション無しでは辛いと思うぞ。 場合によってはIOT表の導入とかも考えておいたほうがいいだろうな。
>>580 そうかね?
意外と何十億件くらいなら捌けるもんだが。
>>581 同じ土俵にいて良いものと悪いものがあるぞw
参照しない約束、約束〜って、レコード数だけでなくカラム数もレコード長も遠慮なしに
情報てんこもりで非正規化状態の過去ログテーブルかなんかだろな。
…どう見てもヒアリング不足です。本当にありがとうございました。
>>582 > 情報てんこもりで非正規化状態の過去ログテーブル
俺が扱ってるのは似たようなもんだがwww
3局からの計測データを数秒周期で取り込んで、
かたや2台の表示用PC上で
10秒周期で最新データの表示してるだけだがな。
>>583 そんな数値データだらけのテーブルならオンメモリでもいけそうだ
社内の顧客管理用のマシンが最近以上に重いのだけど、Oracleのせいなのか どうか切り分けたいんだけど、言いベンチマークソフトってないっすかね?
>>585 GASAIREでモニタリングしてみることをお勧めする。
587 :
571 :2007/06/07(木) 20:03:48 ID:eZC/8BeQ
諸氏 レスありがとうございました。 とりあえず、 一番入力されるであろう項目にインデックスを張る。 SQL記述に関する規約を作成し、ベンダーに渡す。 開発環境構築名目でサーバを用意し、サンプルデータで実行計画をとる。 チューニングしつつ、画面設計し、顧客の説得をはかる。 で落ち着きそうです。 御世話になりました。
589 :
585 :2007/06/08(金) 09:37:56 ID:???
>585 失礼しました。 使用しているマシンは最近刷新しまして、DELL PowerEdge 2950で、OSはRH ES4で運用しています。 情報自体は2万件程度で、個人の情報としてはそれほど大きいモノではないはずなのですが、考えていたほど レスポンスが上がってきません。 無論、ネットワーク関係も調べてみたのですが、問題はありませんでした。 まだ検証しないといけない部分は多いのですが、Oracle自体も疑っていこうとベンチマークソフトを探して ました。
>>589 マシン自体のスペックを測りたいのか?
それともDBベンチマーク取りたいのか?
DBベンチマークソフトならTPC-Cとかあるけどな。
CPUを計りたいのならSPECJBBなんかが使える。
レスポンスが悪いとかって言ってるけど、ディスクI/Oとか見てみたのか?
STATSPACKはどうだった?
タコなSQLが流れていて、全豹走査が置きまくりでレスポンス悪いなんて
こともあるぞ?
ベンチマークってのは、障害原因を探るためのものじゃないし。 まずは、topとかsarとかパフォーマンスモニタでほんとにOracleのプロセスが原因かどうか見極める。
592 :
585 :2007/06/08(金) 11:11:00 ID:???
>590-591 確かにそうですね。(汗) もうちょっと障害発生を切り分けてみようと思います。 ありがとうございました。
Oracle DB 11g R1が6月11日にリリースされるそうな。 取りあえずRACでも組んで遊んでみっかな。
SQL始めて2日か3日程の者です。分からないことがあったので、アドバイスを頂けないでしょうか? 使っているのはOracle10gにあるSQL*PLUSというものです。 表A;codeと会社名が書いてる表(001 A社 002 B社といった感じの表) 表B;codeと設立日が書いてる表(001 1950/6/4 といった感じの表) 表C;code(表AやBのcodeの数字の後ろに期数が書かれ、目標達成ならP,未達成ならMとその後ろに書かれた数字)のある表{00157P 00153P 00212M等の書かれた表) このデータがあるとき @現在月(今なら6月)が設立月になっている会社を出し、設立何年目かを出すSQL分(A社 57期といった出力) A各会社の期(設立から1年目で1期・・・と計算する)を算出(A社 57期といった出力) Bこの結果を、会社名と期を列に持つ表にINSERTする C表Cから、達成している会社名と期を出す(A社 57期 A社 53期といった出力) 調べても、例を使ったサイトとかが中々見つからず、困り果ててます。明日中に解かないといけないので、どうか助言をお願いします。
作業 お見積り票 ニコニコ・インテグレーター 今回の作業の > PG 1名: 8h 拘束 > \350 x 8h : \2,800 プロジェクトマネージメント料 > \70,000 : \70,000 特別 お値引き > \2,800 税込み計: \73,500-
596 :
594 :2007/06/10(日) 23:00:59 ID:???
@とAは自己解決なんとかできました。 BとCが未だ謎ですので、アドバイス等ありましたらお願いします m(_ _)m
597 :
594 :2007/06/10(日) 23:02:49 ID:???
書き忘れです。Bの「この結果」っていうのは、Aの出力結果のことです。 連続投稿失礼しました。
>>597 ヒント
insert into c select a.col2, b.col2 from a,b where a.col1=b.col1 and .....;
まあ、ようはinsert into c [2で使ったSQL]でいける。
現在、汎用系SE(?)PGやってます。(基本的にはコボラーです) 将来の不安解消のための手段のひとつとしてOracleの勉強をしようかと思っています。 そこで質問があるのですが、現在、システム導入に当たって使用されるOracle って10gがほとんどでしょうか? 私が関わったことある平成15〜19年導入システム(汎用機→オープン系・1プロジェクトです。) ではOracle8iが使われていました。 現在も8iや9iの需要はあるのでしょうか?保守はあると思うのですが… 新規導入は基本的に10gになるのでしょうか? わかる方、申し訳ありませんが、教えて下さい。 よろしくお願いします。
>>599 今なら新規導入は9iか10gになると思うよ。
そのうち11が出るから、9iも近々消えるだろうけどな。
Windows版ならわざわざ9iにするメリットもないし。 Unix版でもやはり11が出ようかという時期に9iってのもなんだし。
>>599 Oracle8iのサポート期間って終了しませんでしたっけ?
今からの新規案件は10gRelease2でしょうね、やっと安定した感があるので暫くは続くと思われです
(先のことなので予想半分ですが、11のRelease2が安定するまで)
603 :
599 :2007/06/11(月) 23:57:22 ID:???
604 :
NAME IS NULL :2007/06/12(火) 11:26:49 ID:oQuF+3Qh
保守なのでoracle8iを使ってます。 新しい登録するべきデータがテーブルの項目の桁数より大きくて困っています。 主キーに登録するデータではないのですが、 char型の項目の桁数を変更する方法はありますでしょうか? 方法がありましたら、検索のヒント又は関数名を教えてください。
605 :
NAME IS NULL :2007/06/12(火) 12:00:43 ID:Y5HKReaS
くだらない質問なんですが NVLって何かの略称ですか? NVLだと言葉から意味がいまいちつかめなくてイメージがわかないんです
>>605 Null VaLueの略だろ。
つまりNull値を指定した値で置き換えるという意味だ。
607 :
NAME IS NULL :2007/06/12(火) 13:07:40 ID:Y5HKReaS
>>606 お陰で疑問が解けました
ありがとうございます
608 :
604 :2007/06/12(火) 13:17:37 ID:???
結局、別の項目を追加して放り込んでおくことにしました。 すみませんでした。
>>605 Null-Value-Logic だよん
610 :
594 :2007/06/12(火) 22:40:59 ID:???
ヒント有難う御座いました。無事に解けました。
今現在は、VisualStudioで造ったプログラムにSQL文を書いて、Oracleに接続させてテーブルをselectしたりという、ODBC接続というものをやってます。
・VSでwin32コンソールアプリケーション(設定にMFC付与)でプロジェクトを作成
・最初から書かれてあるメインソースの「//アプリケーションの動作を記述するコードをここに挿入」の箇所から下に、ネットにあったサンプルを貼り付け
・Oracle接続するIDやPASSを書く箇所を、strCON = "DSN=dsn;UID=いつも使うID;PWD=いつも使うPASS"と書き換え
・strSql=""の箇所には、select * from 造ったテーブル、とSQL文を書いた。
以上の作業を行ったあとに、実行したのですが、実行する行「CRecordset rs (&db)〜」でデバッグエラーが出ました。
このエラーの原因が分からないので、何かアドバイス頂けたらと思います。よろしくお願いします。
(貼っていいか分かりませんが、サンプルソースのURL「
http://homepage1.nifty.com/kojama/works/rdbms/conn/vc.html 」ここの、MFCでSELECTのソースです。貼ったのは。)
使用ソフト(VisualStudio2005、Oracle10g(ver.10,1,0,2,0))
>>610 つ〜かさ、ODBCでDB繋げにいくんだったらDSNの設定したのかい?
スタート→設定→管理ツール→データソース(ODBC)でまずは繋がる様にしないと
ならんだろ。
そのためにはtnsnames.oraの設定もしないとならないと思ったぞ。
そこで初めて設定してたDSN名をstrCON = "DSN=dsn;"の所で指定できる。
オラクルマスターシルバーを取得したいと考えているのですが 特にお勧めの予備校?ってありますか? 埼玉浦和所沢 東京池袋新宿辺りでいいのがあったらいいなと思っています どうかご教示くだsだい。お願いいたします。
10gです。 sqlplusにて検索すると、データの後ろにやたらと空白が出力されます。 回避する方法はありますでしょうか? 例えば、 ID CHAR(5) NAME CHAR(10) のようなテーブルがあるとして、sqlplusでの出力結果が ID NAME --------------- ------------------------------ XXXXX NNNNNNNN ZZZZZ YYYYYYYYY YYYYY<- 空白 -> UUUUUUUU のようになります。本来であれば、 ID NAME ------ ---------- XXXXX NNNNNNNN ZZZZZ YYYYYYYYY YYYYY UUUUUUUU のように出力されるものだと思うのですが・・
column format ID a5
まちがえた column ID format a5 だな。
9iの頃は空白は出力されなかったのですが、 10gではcolumnコマンドを使って、カラム毎に設定が必要ということですか?
文字コードはOS、oracle共にEUCです。
>>618 端末の文字コードじゃなくて、DBの方ね。
EUCです。
>>612 シルバーぐらいだったらオラクルマスターの参考書買って勉強した方がいい。
>>613 俺の環境では9iも10gも同じように表示されたぞ?
ちなみにクライアントも10gだったけど。
昨日から oracle.co.jp に繋がらないけどメンテ中?
パブリックシノニムの一覧を表示する方法を教えてください
>>624 こっちもルーティングが変わって繋がるようになった。
tracertを比較するとプロバイダの出口付近で詰まってたみたいでした。
627 :
NAME IS NULL :2007/06/21(木) 18:25:56 ID:p/jATL4d
Oracle SQLDeveloperを落としてきて check for updateをかけると 途中でWeb Account user name and passwordを聞いて来るのですが 普段Oracleの掲示板などにログインしているusernameとpasswordを入れても 違うと怒られます。 これ以外にWeb Account user name and passwordなんてものがあるのでしょうか??
628 :
NAME IS NULL :2007/06/21(木) 18:36:10 ID:p/jATL4d
JapanのIDしか持ってない、とか。 ていうかUSの新規登録サイト、動かないっぽいんだけど。
>>625 select * from dba_synonyms where owner='PUBLIC';
で、いいじゃね?
かなり初歩的な質問と思うのですが、Oracleでエスケープすべき文字は「'」 (シングルクォート)だけでしょうか? Oracleのバージョンは10.1.0.2です。
631 :
630 :2007/06/23(土) 01:25:22 ID:???
付け足します。 insertやupdateで文字列を追加、更新したりする時です。
>611さん お礼遅れましたが、出来ました。アドバイス感謝です。 もう一つ分からない点が出てきてます。 存在しない行をDML文で操作した時に、エラーメッセージを出す方法が思いつきません。 例えば表を作って、列名「CODE」を作成してそこに「001,002,003」と3つ行をインサートし、 その後UPDATEやDELETE文で、「UPDATE 〜 CODE='005';」としたとき、SQLPLUSでは、「0行が更新されました」 と出て、正常に処理が終わっています。 私が造りたいのは、この時にプログラムで 「存在しない行をDML文で操作したらエラーメッセージをcoutする」という処理にしたいんです。 SELECT文で存在しないデータを取り出す時のエラーメッセージは造れましたが、 DML文は、0行更新や0行削除のときも、正常に1行更新や1行削除の時も、プログラム上の動きが全く一緒なので 場合分けができないなぁと思ったんですが。 (DML文発行の時のロジックは、以下を外部関数Transにして{変数strSQLにSQL文を格納させてます} { CDatabase db.BeginingTrans(); try{ db.ExecuteSQL((LPCTSTR)strSQL); } chatch (...){ &Database::RollBack; } db.CommitTrans(); } これを、UPDATEやDELETEしたい時に呼び出して使ってます。) 何かしらアドバイスありましたら、宜しくお願いします。
633 :
611 :2007/06/25(月) 23:59:43 ID:???
>>632 俺、VBから離れてもう7年以上経っちまってんだけど・・・?
とりあえずinsert、update、delete処理を打った時に、更新行が0という戻り値だったら
Counterを増やすという処理でいいんじゃないのか?
VISTAからオラクルDBにODBC接続するとき、Microsoft ODBC for Oracle でないと 対応していないソフトがあって、XPの端末なら問題なく接続できるんだけれど VISTAで同じ設定で接続するとエラーになって接続できないんだけれど これは、ODBCドライバーのバージョンかなにかに問題があるのでしょうか? 接続先のOracleのバージョンは8,9の二つを試したけれど両方ともだめでした。 ちなみにOracle ODBC Driverなら接続できました。
エラーの内容は?それを見ないと判断できんぞ。
'Microsoft ODBC for Oracle' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
エクセルからODBC接続しようとした場合、データソース名やユーザ名、パスワードを入力後 接続のテストボタンをクリックすると”プロバイダの初期化中にエラーが発生したため、 接続のテストに失敗しました。Oracleエラーが発生しましたが、エラーメッセージは Oracleから取得できませんでした。”というメッセージが出ます。 まったく同じ条件でXPでやると問題なくいきます。 条件的に違うのは、ODBCドライバーのバージョンくらいです。
ODBCといっても、ADO-ODBC経由もあるよね? 大して違わないかもしれないけど、やってみたら?
639 :
611 :2007/06/29(金) 03:26:19 ID:???
>>634 ( ´ー`)つPatch 5337014: 10.2.0.3 PATCH SET FOR ORACLE DATABASE SERVER
640 :
NAME IS NULL :2007/07/02(月) 12:26:34 ID:EJs3Qu6o
javaからoracle-xe 10iに接続しようとして 「ORA-12705: Cannot access NLS data files or invalid environment specified 」 というエラーメッセージがでます。 環境変数は確認して問題ないと思うんですが、 データベースのキャラクタセット、各国語キャラクタセットを確認すると AL32UTF8、AL16UTF16と一致していませんでした。 これが原因なんでしょうか?
>>640 鯖のタイプぐらい書け。
稀にだが、NLS関係の環境変数の設定で$ORACLE_HOMEとかが含まれていると
駄目だったりすることがある。
絶対パスで環境変数を指定すれば大丈夫だったりするが・・・。
そのジャバで環境変数だけ出力するプログラム書いて実行した結果を貼れ。
643 :
NAME IS NULL :2007/07/08(日) 06:47:23 ID:GkdOGLBy
質問です DB:oracleXE 10g 使用ツール:common SQL Environment (ver.1.59) 上記の環境で、select lengthb('ああ') from dual を実行すると、結果が4になると思いきや、6になります。 これは何が原因なのでしょうか?
>>643 文字コードがutf-8何じゃないの?
utf-8なら「あ」は3バイトだったはず。
645 :
643 :2007/07/08(日) 08:25:10 ID:???
>>644 レスありがとうございました。当方vista使用のため、デフォルトがutf-8なのかもしれません。
文字コードの変換についてもうちょい調べてみます。
646 :
643 :2007/07/08(日) 22:35:14 ID:???
OS:Windows Vista DB:oracleXE 10g 使用ツール:common SQL Environment (ver.1.59) 上記環境にて、 SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET' を実行したところ、AL32UTF8 の値を取得しました。 GRANT ALL PRIVILEGES TO USERNAMEで権限を与えた(つもり)の後、 UPDATE NLS_DATABASE_PARAMETERS SET VALUE = 'JA16SJISTILDE' WHERE PARAMETER='NLS_CHARACTERSET' を実行しようとしましたが、 ORA-01031: 権限が不足しています。 のメッセージが出力されました。 Internet ExplorerのエンコードがSJISだと文字化けが起こるので、oracleの文字コードのみ 変更したいのですが、この場合はどのようにしたらよいのでしょうか?
>>646 DBの文字コードは CREATE DATABASE 文でしか指定できなくて、
後からは変えられないんじゃないのかな。
>>646 DBのキャラクターセットを変更したい場合には、既存のキャラクターセットの
スーパーセットにしか変更する事ができない。
つまりUTF8はUS7ASCIIの完全なスーパーセットであるから変更は可能だが、
JA16SJISからJA16EUCはスーパーセットではないため変更は出来ない。
この場合にはDBのFull Exp/Impで対応する。
649 :
643 :2007/07/08(日) 23:30:54 ID:???
>>647 なるほど。それでは
select lengthb('ああ') from dual
などの場合はあきらめるしかなさそうですね。
oracle全体の文字コードを設定するファイルがあると思ってました。
>>648 ありがとうございました。
SQL☆PLUSでINSERT文を繰り返したいのですが なにかループさせる方法はないでしょうか?
>>650 PL/SQL使えばいいだろ?
こんな感じに?
begin
for i IN 1..5000 LOOP /* 5,000 rows insert */
insert into hoge values ('boge','boe');
commit;
end loop;
end;
/
教えてください。 SELECTの監査証跡を取る設定にしてるとき、 サブクエリを1つ使ったSELECT文を発行した場合、 監査レコードは2件作られるんでしょうか?
スレ違いでしたらすいません。 今、OCIを使ってOracle10gのテーブルにデータを挿入するプログラムを作っている のですが、OCIExecute()関数実行中にネットワークに障害がおきてしまうと、復旧 するまでずーっとその関数内でで止まったままになってしまうかと思います、 こういう場合、皆さんはどのようにしていますか?
>>654 N/W障害なら普通はTCP/IPのタイムアウトでORA-3113/3115が返されるだろ。
まあ、TCP/IPのタイムアウトは鯖や設定によっても違うけど、大抵は10分とか
そんなんだろ。
656 :
NAME IS NULL :2007/07/23(月) 19:28:04 ID:tP2GglY4
Oracle10gって DOS窓でoracle実行でアラートログにORA-600って吐かれない風に変わったの? 検証したいんだが。。
不吉な番号を書くな。出るだろ。季節だし。
言霊の信者か。
659 :
NAME IS NULL :2007/07/24(火) 17:45:58 ID:BbH3ih3M
Windows のバッチファイルから、PL/SQLをキックしたいのですが やり方がわかりません。 D:\oracle\product\10.2.0\client_1\BIN\sqlplus.exe XXX/XXX@ORA92 ここまではOKなんですが、パッケージがキックできません。
>>659 sqlplus.exe XXX/XXX@ORA92 @hoge.sql
SQLを書いたファイルが必要
hoge.sql
---
execute xxx;
exit
---
661 :
NAME IS NULL :2007/07/25(水) 09:55:36 ID:b2CcIo5r
ありがとうございます、packageの場合がわかりません。
execute パッケージ名.xxx ではだめ?
663 :
NAME IS NULL :2007/07/25(水) 16:32:53 ID:b2CcIo5r
BEGIN XX_XXXXXX; END; * 行1でエラーが発生しました。: ORA-06550: 行1、列7: PLS-00221: 'XX_XXXXXX'がプロシージャではないか、または未定義です。 ORA-06550: 行1、列7: PL/SQL: Statement ignored このエラーが出まして動きません。 パッケージ名の後ろは何を書けばよいのですか? 初心者ですみません。
664 :
NAME IS NULL :2007/07/25(水) 17:05:06 ID:vso8Zt4w
パッケージの実行は開始してると思うが パッケージそのもの記述がよろしくないのでは? 普通にSQL*Plusを開いてhoge.sqlをコピペして実行してみると 同じエラーが出ると思ふ。 つまりキックはできたがsqlの実行がNG。 エラーメッセージを頼りに他のパッケージとの依存関係はないか 文法的に間違いはないのかよく見てみー。
665 :
NAME IS NULL :2007/07/25(水) 20:44:17 ID:AW0ipeA1
初心者ですみません。 もらったパッケージなんでごめんなさい。 文法を確認してみます。
666 :
NAME IS NULL :2007/07/26(木) 10:01:11 ID:vEHhwLTe
>>664 execute xxx.xxx;
で動きました。素人でご迷惑をおかけしました。
667 :
NAME IS NULL :2007/07/30(月) 21:10:01 ID:2PDkD7wn
素人です。 windows vistaにオラクル10gのトライアル版(Release2)をインストールしようとすると、「OSに互換性がない」と怒られます。 システム要件を見るとvistaでも良いはずなのですが・・・ vistaにトライアル版入れる方法教えて下さい。
669 :
667 :2007/07/31(火) 19:33:52 ID:upH6NrcM
>>668 そうか、U.S.という手があったか!
dクス
670 :
NAME IS NULL :2007/08/01(水) 10:14:13 ID:+sJRPFfW
Oracle で ociを使ってプログラムを作るときに、 コネクションプーリングとか自前で実装するのが定石なんでしょうか。 それとも、そういった機能がすでにあるのでしょうか?
671 :
NAME IS NULL :2007/08/01(水) 16:14:15 ID:O24DaM8E
初歩的な質問ですけど、失礼します。 VisualStudioでOracleに接続しようとすると 「ora-12154 サービス名を解決できませんでした」 と出てしまい、接続できません。 SQL+などでは、問題なく接続できます。 VisualStdioのほうで何か設定などが必要なのでしょうか? 板違いだったらすいません。
最近、DBを勉強し始めたものです。 テーブルロックについてつまずいてます。 oracleにはテーブルロックのモードが5パターンあります。 ・行共有テーブルロック ・行排他テーブルロック ・共有テーブルロック ・共有行排他ロック ・排他ロック 共有という言葉が引っかかるのですが、ロックを共有して 行うことができるという意味合いなのでしょうか? だとすると、行排他テーブルロックと行排他テーブルロックは 同時に取得可能なので、上記のような意味合いとは違うのかなぁ と思ってます。 共有という言葉の意味合いについて教えてもらえないでしょうか?
676 :
674 :2007/08/03(金) 09:29:51 ID:???
>>676 自分も共有に違和感はあったが慣れるまでshare lockと読んでおけばいいじゃん
share:分けること。分配。分担。
独占使用していないロックってこと
Oracle のユーザ sysやsystemのパスワードが最後に変更された 日付を確認するにはどうすればいいのでしょうか? 内部統制でパスワード変更日を表示しろと言われて困っています。
DEFAULTプロファイルでPASSWORD_VERIFY_FUNCTION有効にして、 ファンクションの中身を適当にカスタマイズすればいいんじゃね?
>>677 違和感感じてるのは私だけかと思ってましたが、
いい意味で違ったみたいですね。
ありがとうございました。
>>678 after alterトリガー使えばいいべ。
1. sysスキーマに監査用の表を作成
create table audit_password_change
(
username varchar2(10),
changed_by varchar2(10),
timestamp date
);
2. after alterトリガーをsysスキーマ内に作成
CREATE or REPLACE TRIGGER captuer_alter_user AFTER ALTER on database
BEGIN
IF (ora_dict_obj_type='USER' and (ora_dict_obj_name='SYSTEM' or ora_dict_obj_name='SYS') and ora_des_encrypted_password is not null) THEN
insert into audit_password_change
values (ora_dict_obj_name,
ora_login_user,
sysdate);
END IF;
END;
/
3. 実際にsysのパスワードを変更してみる。
SQL> show user
USER is "SYS"
SQL> alter user system identified by hogeboge;
4. 監査表をセレクト
SQL> select username, changed_by, to_char(timestamp,'YY/MM/DD HH24:MI:SS') changed_date from audit_password_change;
USERNAME CHANGED_BY CHANGED_DATE
---------- ---------- -----------------
SYSTEM SYS 07/08/03 13:13:51
682 :
NAME IS NULL :2007/08/05(日) 15:32:53 ID:658vIUe0
OTNでOracle Database 10g Release 2(10.2.0)for Microsoft Windows 32bit のトライアル版をダウンロードしましたがsetup.exeを起動すると 「内部エラーが発生しました。」とでてしまいます。 OSはWindows vista home basic です。 vista では動かないんですかね?
>>682 全部とは言わないが、前後30ぐらいのスレぐらい嫁や。
Vistaで検索ぐらいしろや。
>>668 ぐらい見てみろや。
素朴な疑問ですが、oracleで数十テラバイトのデータを運用しても、 特別パフォーマンスが落ちるようなことはないですか? インデックス等のチューニングをしていれば、データサイズによるボトルネックは ある程度無視できるのかな。 oracleはデータサイズ無制限って聞いたことがあるので。
686 :
683 :2007/08/05(日) 20:56:48 ID:???
>>684 前後30ぐらいって、後30はどうやって見るの?
>oracleはデータサイズ無制限って聞いたことがあるので。 誰から聞いたんだ。 そんなデマ。
100TBのデータベースもある。
で、685はどうなの?
質問があいまい過ぎる。 基本的にはデータサイズというかレコード件数によってパフォーマンスが変わってくるのは当たり前。 あとはレコードサイズに対してブロックサイズが適切かどうか、など物理設計レベルでも影響受けるけど。
oracle 10gですが、どうしてこんなにメモリ食うんですか?
>>691 仕様。
つかOracle7のころのサクサク感をもう一度、
と思ってるのは、俺だけじゃないと思うんだが、
バージョンが上がるごとにどんどん重くなるよ。orz
693 :
678 :2007/08/06(月) 10:02:54 ID:???
>>679 ,681
ありがとうございます。やってみます。
yyyy m str --------- 2007 4 aaa 2007 5 bbb 2007 6 ccc こんなテーブルがあったとして、selectの結果を 1レコードに収めるいい方法ありますか? yyyy str4 str5 str6 ---------------- 2007 aaa bbb ccc こんなイメージです。月別で行になっているのを列で表示したいのです。 一応これで出来るみたいなんですが、もしや もっとスマートな書き方があるのかなと思いまして。 select str,(select str from tbl where yyyy=2007 and m=5), (select str from tbl where yyyy=2007 and m=6) from tbl where yyyy=2007 and m=4 宜しくお願いします。
>>694 コンカチネーションの||を使えば出来そうなきもするけどな。
Oracleデータベースサーバではなく、Oracle ClientのインストールでもOEMは使用出来ますか?
>>697 昔ながらのJavaベースのクライアント型OEMなら。
699 :
694 :2007/08/07(火) 10:25:47 ID:???
>695-696 回答ありがとうございます。 クロス集計を調べてみたら下記のやり方で 期待通りの出力になりました!感謝! select sum(decode(m,4,str,0)) "str4", sum(decode(m,5,str,0)) "str5", sum(decode(m,6,str,0)) "str6" from tbl group by yyyy;
初心者です。質問させてください。 時間を扱うのはどの型で決めればいいと思いますか? 時間といいますと、一時間や二時間の時間の単位で、日付などの時刻ではない場合です。 DateTimeやTime型が一般的なのでしょうか?
>>700 で、あなた自身はどう思うの?
まずどういった検索条件で使われるかが分かると、どのデータ型がいいかも
分かってくると思うけど?
>>700 SQLリファレンス「Oracle SQL の基本要素」の「データ型」参照。
時刻ではない、ってのは、リファレンスでいうところの「期間」?
であれば INTERVAL DAY TO SECOND か、または簡単に整数型。
>>700 時間計算(23:00+5時間=4:00みたいな)をするなら時間型で、
そうでないなら整数型でいいんちゃう?
704 :
NAME IS NULL :2007/08/09(木) 18:20:22 ID:mHbLHx11
ユーザAで作成したシーケンスをユーザBにコピーすることってできる?
>>704 以下のSQL使ってcreate文を作成して、それをユーザーBで流せ。。
select
'create sequence '||sequence_name||' start with '||to_char(last_number+1)||
' increment by '||increment_by||' maxvalue '||max_value||decode(nvl(cache_size,0),0,';',' cache '||cache_size||';') "Create Sequecne SQL"
from dba_sequences
where upper(sequence_owner) = upper('&Owner')
order by 1
706 :
NAME IS NULL :2007/08/11(土) 20:24:37 ID:MhUPY4BW
Oracle 8.1.6 とWindows2000Server SP4で サービスが起動中で起動されませんがSP4はだめなんでしょうか?
707 :
NAME IS NULL :2007/08/11(土) 22:46:05 ID:MhUPY4BW
706です。 SPなしリモート デスクトップ接続でインストールすると・・・途中で進まない。 SPなしCRTを接続してインストールすると・・・最後までいった。 ナンなんでしょう?
708 :
NAME IS NULL :2007/08/12(日) 03:23:34 ID:wbpD55zr
カラム定義の際に半角英数文字(日本語不可)のみに データ入力制限をかけたりすることって可能ですか? カラムの入力制限を取得して、 フロントエンドのカラムに対応するテキストボックスがアクティブになったときに IMEを半角英数字に自動的に設定とかして、 いちいちプログラムで指定しなくていいようになればいいのにと思っているのですが。 トリガーとかなしで何かいい方法があったら教えてくださいm(__)m
>>708 10gなら正規表現が使用できるので、それを CHECK に書く。
みなさん、BLOB型なんて使ってますでしょうか?使ってるとしたらどんなデータを入れてます?
711 :
NAME IS NULL :2007/08/12(日) 14:00:28 ID:I8cYToGJ
済みません。Linux環境でHTTP経由でのオラクルアクセスに付いて教えて下さい。 APACHE(RHEL) + Oracle10g で接続を試みていたのですが、perl 〜 では動作するのですが、 HTTP経由では以下のエラーが出て接続出来ませんでした。 install_driver(Oracle) failed: Can't load '/usr/local/lib/perl5/site_perl/5.8.6/x86_64-linux-thread-multi/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /usr/local/lib/perl5/5.8.6/x86_64-linux-thread-multi/DynaLoader.pm line 230. at (eval 300) line 3\nCompilation failed in require at (eval 300) line 3. Perhaps a required shared library or dll isn't installed where expected\n at /apache/cgi-bin/cron/db_test.cgi line 41 あるサイトで面倒なら chmod -R 755 oracle との記述を見て /usr/lib/oracel 配下を 755 で 設定した所、oracle の動作がおかしくなり、sqlplus の接続で [ORA-01031: insufficient privileges] とエラーが表示され接続すら出来なくなりました。 まずは環境の復旧が第一なのですが、途方に暮れて焦っている状況です。 どの様にすれば環境の復旧が出来るのでしょうか? 宜しくお願い致します。
712 :
NAME IS NULL :2007/08/12(日) 15:46:00 ID:I8cYToGJ
自己レスです。 oracle モジュールは "-rwsr-s--x" で動作するとの事で chmod ug+s oracle で、パーミッションを変更する事で無事起動出来ました。 取り合えず oracle モジュールだけの対応なのですが、他にも同様に動作に対して アクセス権を限定する様なモジュールはありますでしょうか? また、現状以下の設定になっているのですが、リスナーがありませんと怒られます。 何処が悪いのか教えて頂けますでしょうか。 宜しくお願い致します。 リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.3)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW)) lisner.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /usr/lib/oracle/xe/app/oracle/product/10.2.0/server) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521)) ) ) DBI connect('host=127.0.0.1;SERVICE_NAME=XE','testuser',...) failed: ORA-12541: TNS: リスナーがありません。 (DBD ERROR: OCIServerAttach) at (eval 8) line 14
新米DBAです CPUを適用したいのですが RACじゃない場合どちらをやればいいんですか? ポストインストールってのが関係あるのかないのか分からなくて Section 3.3.1, "Patch Installation Instructions for a Non-RAC Environment" Section 3.3.2, "Post Installation Instructions for a Non-RAC Environment" あとCPUは個別パッチではないのでOPatch は関係ありませんよね?
Post というのは〜の後という意味だよ。
質問が2個あったのか。 CPUでもOPatchは使うけど、関係ないというのは何を聞きたいの?
>>706 8.1.7に汁。
8.1.6は自動起動できないバグがある。
>Can't load '/usr/local/lib/perl5/site_perl/5.8.6/x86_64-linux-thread-multi/auto/DBD/Oracle/Oracle.so' >for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory エラーに出てる内容は調べたの? おまいさんのHTTP鯖にはORACLEはインストールされてるのかい? 「libclntsh.so.10.1がねーよ」って言ってるよ? インストールされてるなら、HTTPDを起動しているユーザーの環境変数とかdb_test.cgi に、 ORACLE_HOMEとか環境変数はちゃんと設定されているかい? パスが通ってなくて見つからないんじゃないの? アクセス権が気になるなら、上書きで再インストールすれば? (DB作ってあるなら、データファイルとか上書きしないように注意すればOK) リスナーが無い件は、アドレスとポート番号を見直せ。 DBIの接続文字列で指定したアドレスとポート番号で、リスナー設定していることを 確認してみよ
>>706-707 リモートデスクトップ接続だとORACLE_HOME環境変数(Winの場合はレジストリだっけ?)が正しく反映されないことがある.
以前にリモートデスクトップ接続で色々操作しようとして嵌った.
719 :
NAME IS NULL :2007/08/13(月) 10:42:40 ID:tIOKnV2+
今日から盆休み上げ。 頼むから休み中に更新バッチがこけるのだけはやめてー
俺,今日の更新バッチが正常に終わったら, 明日から一週間夏休みが取れるんだ. 実家の婆ちゃん,元気にしてるかな...? 高校の同級生のK子とも会う約束してるし楽しみだなぁ...
. ,' ..::| .::;',' :;:','フ'7フ''7/ ',.ト',_|, , ',.',
,' .::::::!'''l/!:;'/ /'゙ / '! ゙;:|:、.|、| 'l
. ,'. .:::::::{ l'.l/ 、_ _,. 'l/',|.';|
l :::::::::::';、ヾ  ̄ `‐-‐'/! ';. '
. ! :::::::::::/ `‐、 ゝ |'゙ |
| ::::::::/ \ 、_, _.,.,_ ノ::: !
|::::/. _rl`': 、_ ///;ト,゙;:::::./
>>720 の更新バッチが
.. `´ /\\ `i;┬:////゙l゙l ヾ/ アベンドしますように・・・
,.:く::::::::`:、\ 〉l゙:l / !.|
. /:.:.:.:\:.:.:.:.`:、ソ/:.:| | |
/.:.:.:.:.:.:.:.:.:\:.:.:.:У:.:;l /./
. /:.:.:.:.:.:.:.r'´`‐,`、:/.,.:‐{ | !`:、
,'.:.:.:.:.:.:.:.:.';_,゚.,ノ.:./,:':.:.:.:', | |`、:|
>>720 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::。::::::...... ... --─- :::::::::::::::::::: ..::::: . ..::::::::
:::::::::::::::::...... ....:::::::゜::::::::::.. (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..::::
:::: :::::::::.....:☆彡:::: //[|| 」 ||] ::::::::::゜:::::::::: ...:: :::::
:::::::::::::::::: . . . ..: :::: / ヘ | | ____,ヽ | | :::::::::::.... .... .. .::::::::::::::
::::::...゜ . .::::::::: /ヽ ノ ヽ__/ ....... . .::::::::::::........ ..::::
:.... .... .. . く / 三三三∠⌒>:.... .... .. .:.... .... ..
:.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ......
:.... . ∧∧ ∧∧ ∧∧ ∧∧ .... .... .. .:.... .... ..... .... .. .
... ..:( )ゝ ( )ゝ( )ゝ( )ゝ無茶しやがって… ..........
.... i⌒ / i⌒ / i⌒ / i⌒ / .. ..... ................... .. . ...
.. 三 | 三 | 三 | 三 | ... ............. ........... . .....
... ∪ ∪ ∪ ∪ ∪ ∪ ∪ ∪ ............. ............. .. ........ ...
三三 三三 三三 三三
三三 三三 三三 三三
724 :
NAME IS NULL :2007/08/14(火) 10:46:39 ID:9jW3G2t9
>>716 >>718 8.1.6はお客さんの環境なんで、これ以外使いたくないんですが・・・年前の開発を評価始めました。
リモートデスクトップですが、SPを当てないと状態だとうまく動いています。
(お客さんはSP4なんですが・・・SP2から最近上げた)
怖いんで当面これで行きます、ありがとうございます。
>>724 VNCかPC Anywhere入れておけ。
726 :
NAME IS NULL :2007/08/16(木) 09:55:47 ID:2Dc73I9n
>>725 Win2kServerのセットアップは、CRTをつなげてOracleのサービスまではOK。
リモートデスクトップで設定作業をやっていますので、SPさえ当てなければ
サービスも起動していますのでOKです。
SPを当ててみると振舞い(サービスが起動中になる)がわかるんですがやっていません。
727 :
NAME IS NULL :2007/08/16(木) 21:15:08 ID:qcjMdZxT
今概要設計をしていますが、 バックアップ等をメニューからうやりたいとの要望があります。 exportはバッチファイルをキックすれば簡単なんですが 戻すときは、どうしたら良いでしょう? テーブル、パッケージ等をドロップしてimportでしょうか?
DESTROYちゃうの?
729 :
NAME IS NULL :2007/08/17(金) 10:32:27 ID:RzF+IMsI
>>728 destroy=yですね、ありがとうございます。
いまやってみましたが、結構メッセージがでるんでビビッテいます。
あ aaa aaaaaaaa
Oracle 10g(30日トライアル版)をインストールしようとしているんですが、 外付けUSBハードディスクでは、問題あるでしょうか?
データファイルの置き場所としてなら全く問題ない。 ORACLE_HOMEとしては、なにか問題がでるかもしれない。
>>732 ORACLE_HOMEのインスト先では駄目っぽいですね・・・
素直に内蔵HD増設なりで対応してみます。どうもありがとうございます。
Unix系なら大丈夫だけど、 Windowsの場合は、どうせシステムドライブに何かしらインストールすることになるからね。
>>731 自宅勉強用とかなら全然問題無いと思う。
もちろん本番システムではお勧めしない。
外付けの eSATA の実績ありませんか?
>>736 本番環境でってことか?
どんなシステムか知らんが、本番環境だったらそれなりにHA考えるのが普通だと思うぞ。
>>737 主には開発環境。
結構安価なので本番環境でも使えるなら・・・ と思ったが
規格上無理そうですね。
まったく規格上の問題ではない。 そういうのはOSの仕事であり、OSできちんと認識されておれば、 Oracleに限らず、一般的なアプリケーションがディスクの物理的な接続方式を気にすることはない。
Oracle10gです。Windowsです。 データベースも文字セットをJA16SJISTILDEで作成し、 WebLogic10もWindowsで環境変数のNLS_LANGを JA16SJISTILDEと設定したのですが "〜"が?になってしまいます。なぜでしょうか?
>>739 ごめんなさい。
規格上無理と言ったのは、まぁ耐久性というか そういった事での発言でした。
>>740 WebLogicがあるサーバのコマンドプロンプトで
SQL PLUSから"〜"登録して正常に処理されるなら、
WebLogicあるいはアプリケーションの内部処理のせいだろ。
初歩的な質問で済みません。 オラクル(8i)で、表の create 文を得るにはどうすればいいですか? インターネットですぐに見つかるかと思ったんですが、どうにも・・。
>>743 Oracle SQL Developerでも使ってみれば?
>>743 一応、IMP SHOW=Y ROWS=Nで見るだけなら何とかなると思うがな。
それほど簡単じゃないんですね・・・ Oracle逆引き大全 550の極意 という本にやり方が書いてるようなので、 今度立ち読み(もしくは購入)します。
select dbms_metadata.get_ddl('TABLE',table_name,owner) from dba_tables where owner = 'SCOTT';
DBMS_METADATA.GET_DDLは9iからの新機能だったと思われ。
>>750 その通り! じゃ出来ないな(w
かなり昔はPL/SQLで作ったりしたですね
そしたらツールとか使用するしかないですな
Common SQL Environment とかも出せたと思う
Oracle10g Clientのインストールが完了しても スタートメニューの[Oracle - OraClient10g_home1]→ [アプリケーション開発]の中にSQL Plusのショートカットが ないんですが、何か設定があるのでしょうか? 環境は Windows XPと 2003 Serverでやってもありませんでした。
>>752 そもそもSQLPLUSW.EXEがインストールされるようにしたのか?
つかSQLPLUS.EXEのほうが使い勝手良いだろうにwww
DMPファイルのインポートについて質問させてください。 バージョンは8iです。 AというDBからエクスポートしたdmpファイルを BというDBへインポートしました。(AとBは同じOSで、oracleのバージョンも一緒) BのDBには、十分な表領域を確保しました。テーブルは未作成です。 実際にダンプをインポートしたところ、BのDBにテーブルが作成され 「正常にインポートが終了しました。」 とメッセージが出ました。 しかし、テーブルの中にデータが1レコードも入っていません。 何か原因がわかるかたは、いらっしゃいませんか?
早く!impコマンドを実行したときのオプションを晒すんだ! あとexpのときのオプションもあるとなお良い。
ROW=Nだったいうオチとかw
759 :
NAME IS NULL :2007/09/02(日) 10:53:33 ID:TlkCDSr+
a
760 :
NAME IS NULL :2007/09/02(日) 10:54:41 ID:TlkCDSr+
Oracle 9iで Oracle Inproc Server 3.0って 使える?
Oracle10.2.0で以下の様な全角括弧が入ったSQLを実行すると「無効な文字」が入っているため、エラーになります。 select name (名前) from master 全角括弧を含めるにはどうすれば良いでしょうか?
>>761 select name "(名前)" from master
PL/SQLでpkg内にストアドを書いているんですが、そのストアドの中で create temp tableを実行して一時テーブルを作成したあと、そのテーブルに insertを行おうとすると "表またはビューが存在しません" と怒られます。 DDL文 を execute immediate で実行してテーブルを作っているのでやむを得 ない?気もするのですが、ストアド内で一時テーブルを作っていろいろ処理 したい時は、全てのSQLを動的生成してexecute immediateするしかないんで しょうか?
>>765 別にそんな事しなくてもいいだろ。
ふつーにTYPE使えばいいのではないのか?
Oracle 10.2 をダウンロードして試用してるんですが、何かいちいちひっかかるような 挙動を示します。 SQL*Plus で接続した直後、select * from tab を実行しても select 結果が表示される まで数秒かかったりします。 これが毎回ではなくて、最初はほぼ確実に遅く、以後は軽快に表示されます。 と、思ったら数十秒後はまた遅くなったり・・・いったい何が問題なんでしょう? Windows 2000 server 、CPUはPen4、メモリは1GB積んでるマシンです。結構前の マシンなんでスペック的にはしょぼいですが、この程度のSQLで問題が出るとも思え ません。事実、Oracle 10.1 はサクサク動いてたんですが・・・謎です。 各種掲示板とかも見たんですが、似たような現象の報告がないんで、ウチだけの 問題なのかなぁ、とも思ってます。こんな現象に遭遇した方いらっしゃいますか?
>>767 NTS認証になってるからだろ。
sqlnet.oraが
SQLNET.AUTHENTICATION_SERVICES = (NTS)
になってるんじゃね?
SQLNET.AUTHENTICATION_SERVICES = (NONE)
にしてみろ。
769 :
NAME IS NULL :2007/09/13(木) 12:38:06 ID:qXsJMfc2
>>768 SQLNET.AUTHENTICATION_SERVICES は、別の人間が NONE ではなく
行そのものを注釈にしてた。
#SQLNET.AUTHENTICATION_SERVICES = (NTS)
こんな感じ。NONEとしないとダメなんでしょうか?
>>769 コメントアウトされてるなら問題ないはずだが。
明示的にNONE指定したときと変わるか確認汁。
771 :
767 :2007/09/13(木) 13:23:43 ID:???
>>770 わかりました。
とりあえず、今は再起動できない状況だから、人が減ってから再起動してみます。
でも解決しなさそうな悪寒・・・
>>771 再起動不要。
書き換えたらすぐ反映される。
773 :
NAME IS NULL :2007/09/13(木) 15:00:07 ID:jNCkxHwW
エクスポート⇒インポートした時に、row_idが変わると思うんですが、 row_idも全く同じにエクスポート⇒インポートってできますか?
>>773 できないので、コールドバックアップに汁。
775 :
NAME IS NULL :2007/09/13(木) 16:40:23 ID:jNCkxHwW
>>774 それってインポートみたいに本番環境からテスト環境には
移せないですかね?
困っているのは、本番環境だけ変な結果になって、同じストアドを使っている
テスト環境はうまくいくのです。
ソースにところどころに、row_number = 1とかいうコーディングしているので、
おそらく、row_idが絡んでいると思うのですが、
テスト環境で再現しないので、困っています。
>>775 というかコールドバックアップからならクローンDBを作成できる。
マニュアルのバックアップ&リカバリガイドでも見て、
コールドバックアップからのリカバリを実行すればいい。
777 :
NAME IS NULL :2007/09/13(木) 16:57:06 ID:jNCkxHwW
>>776 ありがとうございます。
やったことないですけど、調べてがんばってみます。
>>776 同じマシン上につくる場合には問題あるかもしれない。
779 :
NAME IS NULL :2007/09/13(木) 17:21:43 ID:jNCkxHwW
>>778 マシンは本番機とテスト機で物理的に違います。
本番機でおかしな結果になったので、本番機からエクスポートして
dmpファイルを作り、それをテスト機にインポートして、
プログラムを実行したのですが、再現しなかったということです。
>>772 >再起動不要。
>書き換えたらすぐ反映される。
・・・ってことはNTS認証は関係ないってことですか。
むぅ、いったい何なんだ・・・
>>780 リスナーのトレースを取ってみれば?
ログファイルを読めば、それなりに原因が分かるかも。
782 :
NAME IS NULL :2007/09/13(木) 21:07:07 ID:3dlTtWXp
ORACLEの掲示板で出すのは申し訳ありませんが、 ORACLE上のデータをODBC接続しACCESSで帳票を出すようなものを作った場合、 データ取得(サイズも含め)に制限はありますか? 実データはORACLE上にあるので、サイズというより、 ACCESSの取得可能件数かもしれませんが。
>>767 10g R2はメモリーを2GBぐらいは最低積まないと駄目かもね。
DB_CACHE_SIZEとかどれぐらい割り当てている?
>> 779 コールドバックアップのDBFファイルだけテスト環境にコピってコントロールファイル だけ再作成してopen resetlogsでDB上げれば早い。 コントーロールファイルは本番環境で「alter database backup control file trace;」 やればudumpにテキスト形式で出力されるから、必要な所いじくってDBをRename してあげればいい。 CREATE CONTROLFILE SET DATABASE "HOGEDB" RESETLOGS NOARCHIVELOG ... RMANが使いこなせるのなら、RMAN Duplicationと言って本番環境を止めずに クローニングを作成出来る方法もあるんだけどね。
785 :
767 :2007/09/14(金) 17:23:13 ID:???
>>781 リスナーのログに異変はありませんでした。
ただ、ログのファイルサイズが27MBもあったのが気になりますが。
>>783 DB_CACHE_SIZE はいじってません。っていうか、インストールしてからいじったのは
SGAサイズぐらいです。
案の定、SPFILEには DB_CACHE_SIZE の設定はありませんでした。
で、SGAサイズは450MB ほどなんですけど、これって少ないんでしょうか?
タスクマネージャーで見ると使用メモリが810MBぐらいまで行ってるんでこれ以上
Oracleに割り当てるのは怖いんですが。
メモリ1GのWin2000Server ではどれぐらい割り当てるのが妥当なんでしょう?
ちなみにメモリはこれ以上は積めません。機械の上限が最大1GBまでなので。
多いか少ないかはv$sgastatに訊け。
>>785 10g R2でSGA_TARGETが450MBは少ないな。
最低でも800MBぐらいは無いと。
788 :
NAME IS NULL :2007/09/15(土) 22:29:49 ID:nIelV1v9
.NETからoracleに接続をする、つまりDB接続文字列が分かりません。 String sConnectionString = "Provider=MSDAORA;User ID=sys;password=test_pass ; Data Source =ORCL10GR2;Persist Security Info=False"; 恐らく 1)Provide 2)Data Source の部分が怪しいと思うのですが、この部分はどうすれば適切なDB接続 文字列を見つける事が出来るでしょうか? 以上 どなたかoracleに詳しい方お教え願います。
789 :
788 :2007/09/16(日) 01:02:37 ID:nQn44/My
解決しました。
790 :
NAME IS NULL :2007/09/17(月) 02:42:51 ID:E4m9PXTR
Oracle10g Express Editionの制約について質問があります。 あるサイトに次の様な制約に関する記述があったのですが、 【4Gバイトのディスクメモリ】というのは、例えば1テーブルに 保存可能な最大容量が4Gバイトという事でしょうか? (1テーブルで4Gバイトを消費した場合には、他テーブルには 一切レコードが作成出来ないという意味合いでしょうか?) ******************************** 同製品は、1プロセッサ、4Gバイトのディスクメモリ、1Gバイト のメモリというスペックのサーバ上でしか稼働させられないのだ。 ********************************
792 :
ORACLE初心者 :2007/09/17(月) 03:48:42 ID:E4m9PXTR
>>791 今、10gで色々見ているのですが(試している)【USERS】の部分が実際に
作成したテーブルの容量になるのでしょうか?
例)TEST_USERスキーマにTEST_TABLEを作成したとして、このテーブルに
対してレコードを追加する度に、表領域の【USERS】の部分がカウント
されて(増えて)行くのでしょうか?
ORACLE Database Express Edition
ホーム>管理>記憶域>表領域
SYSAUX 434.19
SYSTEM 340.00
UNDO 11.19
USERS 2.38
レポートの合計 779.06
793 :
791 :2007/09/17(月) 12:47:13 ID:???
>>792 いちいち人に聞くな。
Silver 程度の勉強をしてから出直してこい。
794 :
わからねーくせに :2007/09/17(月) 18:14:14 ID:E4m9PXTR
>>793 Gold程度の勉強をしてから出直してこい。
795 :
791 :2007/09/17(月) 18:33:29 ID:???
>>794 俺は Platinum ホルダーなんだが。
表領域が増加するタイミングはレコードを追加したタイミングとは異なる。
DBA_TABLESPACES ビューを見て、エクステントがどれくらいの大きさで増えるのかを
把握すれば回答になるのかな。
逆ギレはみっともないのでやめようね。
バカなんだから身分をわきまえて発言しよう。
796 :
792 :2007/09/17(月) 18:43:42 ID:E4m9PXTR
>>795 むかつくけど教えてくれてありがとーなw
俺ももうちょっと勉強するわw
798 :
792 :2007/09/17(月) 18:50:14 ID:E4m9PXTR
因みにスレ違いかもしれないけど、ちょっと聞きたいんだけど
前の現場でOracleプラチナ持ってるフリーが日立情報経由で働いて
たんだけど(29歳)、そいつが報酬(売上)がリアルに月100万だった
らしーんだけど、
>>795 =797は月幾ら稼いでるの?
プラチナ持ってるとやっぱり稼げる?
(社員じゃなければ)
そんなの客の立ち居地次第じゃね? Platinumに人月50万位しか払わない客も普通に居る
ん〜
俺はフリーじゃないからなぁ。
>>797 でもない。
Oracle だけやってるわけでもないし、月給は80万くらいだよ。
お客さんからはその1.5倍くらいもらってるけど、まだまだ大したことはないな。
Platinum かどうかはあまり関係ないような。
資格だけで収入になるほど世の中甘くないよ。
801 :
792 :2007/09/17(月) 20:02:04 ID:???
>>799 そんな現場あるんだWWW
死んでもそんな現場で働かないけど。
>>800 社員で80万?手取りだと60万位かな?
って事はやっぱりフリーでプラチナ持ってると100万は十分に
ありうるわけだ。
某サイトによるとプラチナ持ってる派遣は1日で5万だってよ。
はぁー、月70万以上稼ぎてぇーなー。残業しないと70万は稼げない。
俺もPlatinumホルダーじゃが 一次請けなら結構つくけど末端になると...(w 単価なんて会社間のチカラ関係によるし 給与も上げてくれないし抜けさせてもくれない まぁ常に工数の付く作業ばかりじゃなく 検証作業なんかを入れて適度に遊ばせてくれるから それはそれで良いと思ってるのだけど稼ぎたいよな
803 :
NAME IS NULL :2007/09/18(火) 00:10:35 ID:y+xoOcy+
↑ 年いくつよ?
804 :
NAME IS NULL :2007/09/18(火) 01:44:15 ID:qDdBEHRb
つかプラチナつってけど9iまでの古い奴でしょ? って事は10gでいうところのゴールドレベルだよねw 受験料30万ってなんじゃそりゃ!!!
>>804 いまどきプラチナと言うと新しいほうに決まっている。
受験料は 231,000円 だ。大したことはない。
それとは別に糞高い講義を二つうける必要があるわけだが。
>>806 だからそれが何?
要らなかったら受けなければいいだけのことだろ?
俺は必要だと思ったから自費で取ったよ。
あっそう、それはよかったですねー。
もちろん新しい方に決まってるっす たとえ合格出来なかったとしても、Platinumに挑戦して良かったと思ってるよ 挑戦することによりレベルアップを実感できたしね
>>809 そうそう。そうなんだよね。
あんな楽しい試験は他には滅多にないと思う。
カーソルについての質問です。 CURSOR カーソル名(変数A VARCHAR2) IS SELECT ~ FROM ~ WHERE A = 変数A 変数名 カーソル名%ROWTYPE; ここでいう変数Aはどういった目的と役割があるんでしょうか? よろしくおねがいします。
812 :
たろー :2007/09/20(木) 00:41:23 ID:1TmqL/dE
現在、C#/VB.net開発をメインに行っているSE(PG)ですが 先日勉強用に、Oracle10g Express Edtionをインストールしてみました。 どうせ勉強するなら(金がかなり掛かりますが)プラチナまで頑張って 取得しようと思ったのですが、Oracle10g Express Editioと開発 現場で使用するネイティブOracle10gとには機能面で差異がある気がします。 やはりプラチナレベルまで極めようとした場合には、SE(PG) として勤務するようりデータベースエンジニアとして業務でも 働いた方が良いのでしょうか? (そうでもしないと10gプラチナ取得は難しいでしょうか?受験料その他 が異常に高いので1回で合格したいと思っています。) もしくはSE(PG)をしながら自宅でのOracle10 Express Editionの 擬似データベース環境でも勉強すればプラチナ取得は可能でしょうか?
1問目が手でCREATE DATABASE書かされるって時点で Express Editionじゃ勉強にならないと思うよ。 他にもRAC、Data Guardなど試験に出る機能が入ってないし。 OTNでEnterprise Editionの評価版拾ってきてください。 あと試験環境はLinuxなのでそれも用意してください。
814 :
812 :2007/09/21(金) 01:04:56 ID:jqOwCtjo
>>813 ゴールドまでなら10g Express Editionでも可能でしょうか?
いずれにしてもプラチナ取得となるとやはり厳しそうですね。
Soralisは触った事はありますがLinuxは触った事が無いので
Linuxも勉強しようと思います。
Goldまでは参考書だけで受かるよ。 実機いらない。
816 :
NAME IS NULL :2007/09/23(日) 01:02:39 ID:qOJIqEh+
817 :
NAME IS NULL :2007/09/23(日) 23:58:28 ID:uXCoci90
11gってフリーのexpressエディションとかって出されるかな?
Oracle 10g XEと ODP.NETを使用して、商用アプリケーションを作成し販売した場合 ODP.NETの商用ライセンスか何かを買わなければいけないのでしょうか?
>>818 Oracle Directか代理店に訊け。
>>819 Oracle Directの存在を思いつきませんでした
そもそも調べていくとライセンス関連の事を
聞くのはあまりよろしくないみたいですね
失礼しました
ORA-00001:一意制約について質問です インサート文を使い、主キーの重複は無しです。 PL/SQLで流そうとしたら上のエラーがでてしまします。 一意制約になる理由が全くわかりません よろしければ教えてください(´Д`)人
822 :
NAME IS NULL :2007/09/26(水) 20:15:31 ID:QI3QiCbV
ぐぐれ。木瓜。
>>821 主キー以外で一意制約つけてるカラムがあるなんてオチじゃないのか?
825 :
NAME IS NULL :2007/09/27(木) 02:28:58 ID:nUufIwgb
低レベルな釣り質問にいちいち答えるんじゃねーよw どーせ釣りだろw ましてや、 ORA-00001:一意制約について質問です なんて原因は一発で特定出来るだろ。
>>823 日本法人としての見解は間違いなく教えてくれる。
ライセンス必要ならちゃんと公式に回答してくれるさ。
お前、馬鹿だろwww
データベースを2個作成して、個々にリスナーを設定する方法がわからん。 特にlistener.oraの記述方法。
828 :
NAME IS NULL :2007/10/03(水) 00:05:48 ID:1h9wRUhb
↑ ググレカス
華麗に?亀レス
>>767 データファイルの配置先やオブジェクトの物理属性とかも10.1の時と同じ?
CPUは1つで他にプログラムいっぱい動いてたりしない?
>>775 その書き方だとrow_numberは分析関数のではなくて変数なのかな?
ソース中にROWIDがでてこなければ、row_id関係ないのでは?
結果が違うのは別の原因とかではない?
たまにあるoracleのバグで実行計画によって結果が不正になるとか
>>782 MS-ACCESSの制限事項:mdbファイルのサイズ上限が2GB
>>827 データベースは普通に2つ分のファイルを作って、create databaseすればok
(DB名とかデータファイルとか全部別々に)
listener.oraに2つ分書くだけ(ポート番号は重ならないように)
830 :
NAME IS NULL :2007/10/08(月) 19:40:14 ID:eMnCO+aD
運用中にinsert,delete,update系の処理が著しく遅くなったのだが、どこから疑えば良い? 遅くなる直前にレコード3,000件の一括削除をした。ちなみに、3,000件の削除は普通やらない。今回はマスターの入れ替えのための削除。
・とりあえずSTATSPACKとって平常時と比較 ・削除後に統計情報が更新されてるかどうか確認 あとバージョンによっては 自動セグメント領域管理の環境で大量削除後のINSERTが遅いっていうバグがある。 3,000件ぽっちででるとは思えないけど。
>>830 バックグラウンドで変な統計処理が動いてないかの確認かな。
設定してなくても勝手に動いたり、設定時間が勝手にアメリカ時間に
なったりするバグもあったような、、
あとはぐっと確率下がってディスクトラブル。
833 :
833 :2007/10/09(火) 01:29:52 ID:A3PMOQUR
現在ストアドファンクションを作成し.NET(C#)からストアドをキックする コードを試しているのですがうまく行きません。一体何処に問題があるの でしょうか? 【ストアドファンクションコード】 create or replace FUNCTION FunctionTest(param_number IN number) RETURN varchar IS n_total_count number := 0; BEGIN SELECT COUNT(*) INTO n_total_count FROM TEST_TBL; INSERT INTO TB_TRIGGERS_TEST(TOTAL_COUNT,UPDATE_DATE) VALUES(n_total_count,SYSDATE); COMMIT; return 'N'; END;
834 :
833 :2007/10/09(火) 01:31:22 ID:A3PMOQUR
【.NET(C#)側ソース】 //DB接続 OleDbConnection con_ora = new OleDbConnection(test_home_vs2005.Common.str_const_ora_db_connection); //ストアドファンクションの設定 OleDbCommand testCMD = new OleDbCommand("FunctionTest", con_ora); testCMD.CommandType = CommandType.StoredProcedure; con_ora.Open(); //OutPut DbParameter param2 = testCMD.CreateParameter(); param2.Direction = ParameterDirection.ReturnValue; param2.DbType = DbType.String; testCMD.Parameters.Add(param2); //Input DbParameter param1 = testCMD.CreateParameter(); param1.Direction = ParameterDirection.Input; param1.DbType = DbType.Int32; testCMD.Parameters.Add(param1); //ストアドファンクションの実行 testCMD.ExecuteNonQuery(); con_ora.Close(); return true; 【エラー内容】 InvalidOperationException was caught String[0]: the Size property has an invalid size of 0. 【環境】 Visual Studo2005
835 :
833 :2007/10/09(火) 01:35:43 ID:A3PMOQUR
次の様にコードを修正した上で実行してみたのですが結局同様の エラーが表示されてしまいます。 //Input DbParameter param1 = testCMD.CreateParameter(); param1.Direction = ParameterDirection.Input; param1.DbType = DbType.Int32; param1.Value = 2; //←値を設定する。 testCMD.Parameters.Add(param1);
>>834 //OutPut
param2.Size= 80
837 :
833 :2007/10/09(火) 02:16:52 ID:A3PMOQUR
>>836 さん
ありがとうございます。解決しました。
(良く分からないですが戻り値にサイズを指定する必要がある様ですね。)
838 :
NAME IS NULL :2007/10/12(金) 03:53:37 ID:AXC6pGeC
インストーラーが起動しないです。助けて下さい。 RedHat Linux ES 3.3 Oracle 10.1.0.2 $ /mnt/cdrom/db/runinstaller を実行すると、正常にコマンドが終了。 エラーは出力されず、インストーラは起動されません。 調べようがないです。 よろしくお願いいたします。
Unix系は一旦ディスクにコピーしてから、それを実行する。 なにしろOracleのインストーラがたこ過ぎるのでw
Xがちがうとこに飛んでるとか。
>>838 環境変数DISPLAYが正しく設定されているか?
xhostを実行したか?
つーか、何をやったのか書けハゲ
843 :
NAME IS NULL :2007/10/17(水) 21:50:27 ID:3bk/hGZ2
UNIXにてSQL Plusを使用し検索したところ 異なるOSユーザ、同一DBユーザで検索結果の表示が 変わってしまいました。 その2のユーザでログインした場合も、その1の表示結果を取得したいのですが どうすればよいでしょうか。 (HOGEID 、HOGEID2 はCHAR(13)です) ■ その1(桁数分のみ表示され、項目の区切りは半角スペース) HOGEID HOGEID2 ------------- ------------ 1111111111111 222222222222 3333333333333 444444444444 ■その2(桁数分「1111111111111」が表示されているが、末尾にTabが2つ入っている) HOGEID(tab)(tab) HOGEID2 -------------------------- ------------------------ 1111111111111(tab)(tab) 222222222222 3333333333333(tab)(tab) 444444444444 @ まず、SQL Plus上でshow all、colを確認すると、下記部分のみ違いがありました。 ■その1 lno 14 pno 0 sqlcode 0 ■その2 lno 3 pno 1 sqlcode 942 なお、その2のみlogin.sqlが存在しますが、その1には存在しません。 同一筐体なので、glogin.sqlはどちらも同じものを使用しています。
844 :
843 :2007/10/17(水) 22:03:25 ID:3bk/hGZ2
●追記 colsepはどちらも半角1文字「colsep " "」です。 「その2は」「13桁(tab)(tab)(半角空白)13桁」になってるみたいです。。。
$NLS_LANGが揃ってないんじゃない?
タギングを実装しようと考えているのですがDB構成がどうもしっくりきません。 皆さんならどんな風に実装しますか? 僕が考えたものだと汎用性が皆無です。。。 ■案1 CREATE TABLE t_bookmark ( seq NUMBER, name VARCHAR2(128), tag1 VARCHAR2(32), tag2 VARCHAR2(32), tag3 VARCHAR2(32) … ■案2 CREATE TABLE t_bookmark ( seq NUMBER, name VARCHAR2(128), … CREATE TABLE t_bookmark_tagging ( bookmark_seq NUMBER, -- t_bookmark.seq tag VARCHAR2(32) … 案1だと3つまでと最大数が決まっているが管理が簡単 案2だと汎用性は1以上だが膨大なデータ量になるかも できればタグ同士をフォルダーのように関連付けたりもしたいのですが皆さんならどんなテーブルにしますか?
おまえら、とりあえず、TIMESTAMP型の列使うなら、WITH TIMEZONE付けろボケ
型がNUMBER(5,2)の項目があるのですが、0が格納されている時は000.00の 文字列で取得したいのですがうまくいきません。 TO_CHAR(col,'999.99')、TO_CHAR(col,'999D99')だと「.00」が返ってきて TO_NUMBER()だと0が返ってくるのですが、この場合プログラム側で対応するしか ないのでしょうか?
>>848 to_char(col, '099.99')
850 :
848 :2007/10/19(金) 13:42:35 ID:???
>>849 ありがとうございます!足元見えてませんでした
Oracleがインストールされたディレクトリのパーミッションについて教えてください。 LinuxにOralce10gをインストールするときに、グループoinstall、dbaを作成し、 ユーザoracleを追加しました。 そのユーザでOracleをインストールすると、ディレクトリやファイルのオーナーは oracle.oinstallとなりますが、ディレクトリのパーミッションは750となります。 この場合、ユーザoracleはOracleのディレクトリ内には問題なくアクセスできますが、 他の一般ユーザはディレクトリのパーミッションにより、アクセスできません。 よって、Oracleのディレクトリ内にあるlibclntsh.soも、lib/へアクセスできないため、 読み込めません。 この状態で、一般ユーザが起動するアプリケーションで、libclntsh.soが必要な場合、 どういった対処をしたほうがよいのでしょうか。 その一般ユーザをoinstallグループに加える、Oracleのディレクトリのオーナーを oracleとその一般ユーザが所属するものに変更する、ディレクトリのパーミッションを 755に変更する、あたりを思いついてますが、どれもセキュリティ的にイマイチだと 思っているのですが…
10.2.0.1からそういうパーミッションに変更された。 10.2.0.2以降なら$ORACLE_HOME/install/changePerm.shで 10g以前のパーミッション構成に戻せるよ。
>>852 なるほど。そういえばメディアは10.2.0.1でした。
10.2.0.2のメディアかパッチセットか探してみることにします。
Oracleも変なことをするなぁ…
これは結構な落とし穴だなw
セキュリティーポリシーの変更ってことだから Oracle10gR2〜は、これがデフォルトなんですよね 番号は忘れてしまいましたがKROWNにも載ってます
856 :
843 :2007/10/22(月) 22:59:34 ID:???
>>845 さん、ありがとうございます。
慌ててAIXに接続して確認したところ、$NLS_LANGが。。。
その1の値に環境変数きりなおしたところ、うまくいきました。
ありがとうございます。
■その1
Japanese_Japan.JA16SJISTILDE
■その2
Japanese_Japan.JA16SJIS
857 :
NAME IS NULL :2007/10/24(水) 13:22:20 ID:v7F+u8Hj
WinNT4 + Oracle8i (8.1.6)のサーバに WinXP + PHP5.1.6 のPDOで接続しようと試みたのですが、 ORA-03134:このバージョンのサーバーへの接続は、サポートされていません になってしまいます。 これは、古いociモジュールを入れれば接続できるのでしょうか? もしご存知でしたら、ある場所を含めて教えていただきたいです。
Oracle Instant ClientでGo
>>857 8.1.7あたりのOracle Client入れれば解決。
860 :
NAME IS NULL :2007/10/24(水) 16:18:36 ID:v7F+u8Hj
>>858 >>859 レスありがとうございます。
クライアントは8iが入っていて、SQLPlusでは接続が出来ています。
接続時のメッセージは
==
SQL*Plus: Release 8.1.6.0.0 - Production on 水 Oct 24 16:14:15 2007
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Oracle8i Release 8.1.6.0.0 - Production
JServer Release 8.1.6.0.0 - Production
==
です。
PDOを使用した接続記述は
$db = new PDO('oci:host=localhost;dbname=test','user','passwd');
です。
同じバージョンのサーバとクライアントが入っておりますので、
PHPの持っているOCIモジュールの問題だと思ったのですが…。
8.1.7あたりのOracle Clientってどちらで手に入りますか?
oracleのサイトで手にはいる。
サポートの終わった817を手に入れるのは難しい。 Oracle Instant ClientのOCIはOracle7以降対応かつライセンス的に全く問題ないから、こっち使え。
863 :
857 :2007/10/24(水) 16:40:31 ID:v7F+u8Hj
すいません、書き方がまずかったですね。
PHPも
WinNT4 + Oracle8i (8.1.6)
のサーバで動いています。Apache2.0.59です。
このサーバ上のSQLPlusでは問題なく接続できるのですが、
>>860 のPHPでつなげようとすると、ApacheのエラーログにORA-03134が出ます。
SQLPlusとPHPでは、接続に使用するAPIが違うのでしょうか?
864 :
857 :2007/10/24(水) 19:19:29 ID:v7F+u8Hj
追記です。 Oracle Instant Client 10.2.0.3 をNT4に入れて パスを通して試しましたが、ORA-03134でダメでした…。 PHP5はOracle8.1.7以前に接続できないのでしょうか。
>>864 10gクライアントには8iDBには接続できないというバグがある。
カーソルの問い合わせ文にfor update句を書いたときなんですが、 「FOR recTest IN curTest LOOP」としたときは、カーソルオープンと同時に フェッチしてる感じなのでロックされてると思うんですが、 「OPEN curTest;」とした場合は、カーソルオープンしたときにロックされるのか それとも以降「FETCH curTest INTO recTest LOOP」としたタイミングでロックされるんでしょうか?
867 :
857 :2007/10/25(木) 13:01:34 ID:QEUuPiBb
>>865 ということは、Oracle Instant Client 10.2.0.3を抜いて
PHP5でアクセスしてダメって事は、PHP5の持ってるOCIが
10g相当のものだって事ですよね。
どこかにPHP用の古いOCIはないでしょうか?
>>867 PHP4.4.2で繋がるか試してみたら?
>>862 は?Instant ClientってOracle7は接続出来ないんでない?
9-10gは実際に接続テストで接続可能な事は確認したけど、Oracle7.3は接続
出来なかった(8iは試してない)
俺の設定がまずかっただけかな?
PHPのPDOかなんかに含まれているやつは、OCIライブラリをスタティックリンクしてるってことなのか?
872 :
869 :2007/10/27(土) 21:25:04 ID:???
>>871 設定がまずかった訳じゃなかったか
サンクス
Red Hat Enterprise LinuxVer4でOracle10gを使用しています。 rcスクリプトでサーバ停止時にsqlplusを実行したいのですが、 ORA-12157:TNS:internal network communication error が出力されsqlplusが失敗します。 リスナーかなんかが先に落ちてしまっているようなのですが どのようにしたら停止時にsqlplusを実行できますでしょうか。 よろしくお願いします。
リスナー経由じゃなくて、DBAユーザで直につなげばいい。 connect system/manager as sysdba shutdown immediate exit
oracle10とPHP5の接続に関する質問です。 192.168.0.2:1521宛てにdbserver/hogehogeで接続してみてといわれたのですが具体的にはどのような書き方になるでしょうか? 試した書き方は以下です。 $conn = oci_connect('dbserver', 'hogehoge' 'dbserver:192.168.0.2:1521/orcl'); そいつに聞けといわれそうですが、外部のもので受けた手前、分かりませんというような行為はできません。 お願い致します
わからないことをわからないと聞けないことのほうが恥ずかしいだろう。
PHPのことよくわからんけど、 >'dbserver:192.168.0.2:1521/orcl' 簡易接続じゃなくて、tnsnames.oraをキチンと書いて、 そのネットサービス名を指定してもだめなのか?
今度、システムの英語版を作ることになって、今まで T_USER.NAMEなどのフィールドを取ってきていたところを英語版ではすべて T_USER.NAME_Eのように英語名のカラムから取るように変更しなければなりません。 全てのSQLを2バージョンずつ作ってifで使い分けるというのはあまりに 泥臭い気がするのですが、こんなときに何かいい方法はないでしょうか?
>>878 つ「VIEW」
fromのテーブル名変えるだけならまだ楽だろ?
>>878 日英変更フラグみたいな情報を
適当なテーブルに値入れておいて、
データの格納されたテーブルと
JOINする+CASE式でも何とかなるような。
CASE式で日英変更フラグの条件が
英語の時にNAME_EをNAMEとして、
日本語の時にはNAMEをそのまま返せば、
充分対応可能じゃね?
>>880 それをやったら既存システムのテストもやり直さないといけないだろ
そんな事するならマルチリンガル対応で作り直したほうがいい
テーブル名だけなら別スキーマにしてシノニムでラップする
カラム名もE付になるならビュー
882 :
NAME IS NULL :2007/10/30(火) 22:48:03 ID:cmAjSoqS
Gold
>>878 単純な日本語化だけで済むならVIEWやシノニムもアリだけど、
多分それだけでなんとかしようと思うと破綻するよ。
あきらめて、泥臭くやれ。
でも、英語化ってそれだけで済まないかな。というか、本来はユーザーに見える部分だけ 英語化すればいいと思うが。
885 :
878 :2007/10/31(水) 09:08:29 ID:???
いろいろアドバイスありがとうございます。 VIEWも検討してみます。
>>884 まったくもってその通りだな。
今後中国語版などと増えていっても同じことをするのか、とか考えないのだろうか。
887 :
NAME IS NULL :2007/10/31(水) 12:00:15 ID:OhkaN8Cy
新しい鯖にDB移すことになったんですが 特定のviewをselectしようとするとora-00918列の定義が未確定ですというエラーになります 旧鯖やテスト用鯖でやってもエラーにならなくて新鯖だけなぜかどうやってもだめで 旧鯖をexpしてimpしてもエラーになりました なにかほかに設定とかあるんでしょうか バージョンは全部10gです
>>887 VIEWでテーブル結合とかインラインビュー使ってるなら
構文見直して別なスタイルで書き直してみろ。
>>887 ANSI JoinのBugにヒットしちまってる可能性があるかも?
Patch 5368296を充ててみたら?
>>888-889 確かにouter joinやcase等使っててごちゃごちゃしてるんでエラーにならないほうが不思議なくらいです
新鯖になってからの運用では使わないテーブルも絡めてるんで簡素なselect文にすればエラーにならないしとりあえずごまかせます
パッチのことも調べてみますありがとうございます
891 :
NAME IS NULL :2007/11/01(木) 16:37:59 ID:HLM3YmO/
RACについての質問ですが、RACで十分に更新でパフォーマンスを 出さなければならない場合、 アプリケーションで実際のデータが格納されている場所 を意識して実装しなければならないという恐ろしいことを 基盤にいわれているのですが、真実なのでしょうか? やらなくても、動くとはいわれているのですが、 遅くなるから考えろといわれて困ってます。 例: PKが偶数ならデータの実体はAサーバにあるので、 Aサーバに直接つないでいるコネクションを使う。 PKが奇数ならデータの実体はBサーバにあるので、 Bサーバに直接つないでいるコネクションを使う。
>>891 RACを分散DBと勘違いしてない?
RACはDISK SHARE型でどのサーバーからでも格納場所は等位置。
>>891 本当に最高のパフォーマンスを出したかったら、アプリケーション
パーティションニングする必要があるかも知れないけど、でも
10gになって大分キャッシュフュージョンのパフォーマンスは
改善されたよ。
894 :
NAME IS NULL :2007/11/01(木) 21:44:59 ID:HLM3YmO/
基盤は、実際にオラクルの設定、インストールを しているのでそんなことはないと思いたいのですが、、、、 一応、99.999%の稼動率の基盤を作るチームからの情報です。 とりあえず、情報のでもとが不確実なんで、 ちっと基盤捕まえて、聞いてみます。 ありがとうございました。
>>894 恐らくRAC+分散DBの構成なんだろね。
広い意味でのクラスタ(oracle的にはグリッドかな)構成をRACと呼んでしまってるんだろ。
例えばサーバーを合計8台、4台構成のRACを2セットで分散DBにするとかそんな感じだ。
>>891 その「パフォーマンス」とやらが何なのかによって対処方法が異なる。
実際のデータが格納されている場所というのは
表領域の使い方やその物理的な配置のことを言ってるんだろうと思うが、
ASM に任せるのが不安ならばストレージ層でもうまく分散する必要がある。
表領域の分散方法についてはパーティショニングのマニュアルを参照のこと。
それと、99.999%の稼働率ということとパフォーマンスはあまり関係がない。
年間6分ほどの停止時間ということだが、
RAC+DataGuardの構成を組んでちゃんと監視体制が取れていれば十分に可能だろう。
そういえば、RACの仮想IPってなんで各マシンにあるんだろうね? そのせいか、クライアント側できちんと設定しないと、負荷分散がちゃんとされてるかどうか心配になるな。 それとも、サーバ側(リスナ)できちんと設定されていれば、クライアント側はどうでもいいのかな?
すいません。みなさんのお知恵をお貸しください。 現在、下記の内容で本番サーバーを運用しております。 ■OS Windows 2003server ■Oracle version 9.2.0.5 EE ■領域サイズ 100G ■ダンプサイズ 20G ■更新テーブル数 150前後 ■日次データ増加量 200M程度 ■仕様ネットワーク速度 100G (ただし占有はできません) 上記について、遠隔地バックアップを考えております。 いろいろ調べたところ、 @Data Guard Aスタンバイ・データベース Bマテリアライズドビュー(スナップショット) という方法があると思っております。 そこで、教えていただきたいのですが、 @の場合ですが、EEの基本機能のため、設定さえすれば 問題なくプライマリ・セカンダリの切替がうまくいくように 思われます。 しかし、Aの場合は@と同じ方式ではあるけれども、 REDOログの更新等の設定を手動で行う必要があることが 大きな違いであるように思われます。 それ以外の違いとしましては、他に何かありますでしょうか? Aとして作成した場合、プライマリDBに何らかの障害がおきても、 セカンダリDBをプライマリDBとして立ち上げ直せば、 更新可能なDBとなるのでしょうか?読み取り専用のままでしょうか? ちなみに、推奨される方法どれになりますでしょうか? もし他にもあるようでしたらご教示ください。 (なお、RACやHaでの対応は、予算的な問題で無理です) 長々とかいてしまって申し訳ありません。
>>898 俺の勘違いでなけば、スタンバイデータベースは7までの名称で8iから
データガードに変更された名称だと思ったけど?
つまりスタンバイデータベース=データガードね。
で、このデータガードには二つの運用形態がある。
ひとつはロジカル・スタンバイと言って、RedologをいっかいLogMinorを
使ってSQLレベルに落として、それをスタンバイ側で適用していくという
方法。
これはスタンバイ側を読み込み専用データベースとしてオープンして
検索とかできる。
制限としてはいくつかのデータタイプに適応していないというものがある。
もう一つはフィジカル・スタンバイと言ってこれは全く7の時と同じで
Redologをそのまんまスタンバイ側で適用していくというもの。
これだとスタンバイ側では検索とか出来ないが、ロジカルスタンバイ程の
縛りはない。
いずれの場合にせよログの適用は自動で出来るし、プライマリが死んだ
場合にはスィッチも、また復活した時にスイッチオーバーも出来る。
>>897 それぞれに振ってあるIPアドレスが固定になっていると、
落ちたときに TCP timeout まで待たされることになる。
それよりは使えないノードからIPアドレスを移して RST を返すほうが
他のノードに再接続しに行けるので応答性は良い。
負荷分散がちゃんとされているかどうかはクライアント側の設定がもちろん必要。
きっちりやろうとすると FAN の理解も要るだろう。
RAC は構築するのは簡単だけど目的に合わせた仕様通りに運用するのは
なかなか難しい。
よっぽどクリティカルなシステムでなければフリーのPostgreで 十分と思うのは甘いかな? パーティショニングとかOracleじゃなきゃできない用途は除いて、 世の中の業務系システムの大部分はPostgreSQLでも 十分耐えれるんじゃないかと。 なんか、オーバースペックなシステムが多いような気がする。 政治的な話はおいといて、DBMSの性能という意味でね。
902 :
NAME IS NULL :2007/11/03(土) 00:25:25 ID:+Ss7dOWU
oracle Databse 10g をインストールしました。 SQLPLUS で起動させようとすると、 ユーザ名、パスワードがわかりません。 どこで設定したかわからないのですが、 どこでかくにんしたらよろしいですか?
>>901 じゃあそのオーバースペックだと思ったシステムでDBがボトルネックになったら,
誰が責任取ってくれるのかと.
特にクラスタ化して冗長構成取ってないと,オンラインのWebシステムなんかだと,
1時間停止したらxxx万円の損失だ,と営業とかから脅されてるし.
性能的な面で言えば禿同.
それよりもテーブル設計見直した方がPostgres/MySQL/Oracleのパフォーマンス比より,
費用対効果が高いと思う.
>>903 Oracle は責任取ってくれないよ。残念。
そういうところに価値があるわけじゃないでしょ。
金出して買えば何でも人のせいにできると勘違いしてる奴多いんだよね。
今じゃそれほど高価とも思えん1人月以下で買えるんじゃね? お偉いさんにMSOffice製品をOpenOfficeにするようなリスクと心の準備が必要だろうし 旗を振っても、心労のわりに見返りが少ないと思うよ
純粋なDBMSのスペックとしては ホスグレは既に十分にヘビーな商用ベースのサービスに使われてるでしょ。 ただオラクルのコミュニティ(US含め)は良くも悪くもキワモノが多いのが結構ポイントで 継続的して簡単にノウハウが収集できるかという点も重要 シェフとソムリエのお勧め(有料)を選ぶか、コースメニューを1から自分で決めるみたいなもんかね
907 :
906 :2007/11/03(土) 10:08:29 ID:???
ホスグレ→ポスグレ
DBMSの性能差よりも、テーブル設計やSQLの性能差が大きいには一票! DBがボトルネックになったとしても、結局はアプリで工数かけて 直そうとしているケースが多いと思う。 なかなか、Oracleに問題があるなんて指摘するのは難しい…(俺には) 信頼性については、Oracleと同じようなの冗長構成も Postgreでできるんじゃないの?
ほとんどの意見が出てる感があります ノウハウがあるとか資料が豊富とか... 大規模となると技術者を集められるとか やはり政治的な面かな
>>908 > DBMSの性能差よりも、テーブル設計やSQLの性能差が大きいには一票!
それは賛成。
> 信頼性については、Oracleと同じようなの冗長構成も
> Postgreでできるんじゃないの?
へぇ。DataGuard もどきができるくらいだと俺は認識しているが、
サービスによる動的な負荷分散とか、TAF とかもできるのかね。
flashback も使いたいときがあるよね。
911 :
NAME IS NULL :2007/11/03(土) 21:39:01 ID:v+Xs2MGY
オラクルに接続するときにきかれる ユーザ名ってどこで設定した値ですか? 分からなくて、困ってます。
system/managerでつないでみやがれ
913 :
NAME IS NULL :2007/11/03(土) 23:18:34 ID:v+Xs2MGY
ログです C:\Documents and Settings\User>sqlplus system/manager; SQL*Plus: Release 10.2.0.1.0 - Production on 土 11月 3 23:18:02 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. ERROR: ORA-01017: invalid username/password; logon denied
914 :
NAME IS NULL :2007/11/04(日) 00:32:36 ID:xDZ8dxIQ
FreeBSD4.9にInstantClientを入れました。Linux互換機能で問題なく起動します。 PHPでOCIを使いたいのですがconfigureで--with-oci8-instant-clientをつけてもsuport=noになってしまいます。 FreeBSDのPHPでInstantClientを利用するにはどうすればよいのでしょうか。
>>914 板違いだろw。
4.9なら即6系に上げるべし。で、ports使え。それで解決だ。
>>913 DBCAで作成したときに指定したんじゃねぇ?
sqlplus /nolog
conn / as sysdba
コマンドラインからサービスの開始/停止をしたいのですが NET STARTでiSQL*Plusのサービスが起動できないです 何か方法はないでしょうか? (失敗した実行結果) C:\>NET STOP "OracleOraDb10g_home1iSQL*Plus" OracleOraDb10g_home1iSQL*Plus サービスは開始されていません。 NET HELPMSG 3521 と入力すると、より詳しい説明が得られます。
オラクルにデータを入れたり参照したりするツールってなにが一番人気ありますか?
Excel
>>918 ・Object Browser
・MS Access
・Oracle Enterprise Manager
・CSE
とかでいいんじゃね?
>>917 isqlplusctl start/stop
OracleにテキストファイルにかかれたCREATE文を流し込みたいのですがどんな方法が出来ますでしょうか?
>>923 さん
レスありがとうございます。
SQL*PLUSで です(^^;
一応、 「Oracle SQL文 ファイル」
とかで検索したんですが意図した結果がでなくて…
ちなみにOracleは外部にあります。
(Oracle 192.168.0.1 アクセス元 192.168.0.4)
>>924 SQL*Plusのマニュアルは見たか?
SQL> @foo.sql
sqlplus scott/tiger @foobar.sql
下記のような構造のテーブルがあります。 項目コード(PK)、業種(PK) 、値 数値、 、数値 、数値 いわゆる縦長のDBというんでしょうか。 データ格納例は下記のようになります。 '売上'のID、'IT'のID、9,000 '費用'のID、'IT'のID、2,000 '人件費'のID、'IT'のID、5,000 . . . このDBから業種が「IT」の「売上」の値と「費用」を取得しようとした場合、 現状は2回SQLを投げないといけないんですけど、 もう少し頭の良いやりかたがあるような気がしてなりません。 ビューを噛ませる等、何かいい方法はありませんでしょうか。 (「業種」によって、「項目」の内訳が違うため、このような形のDBになっています。)
928 :
NAME IS NULL :2007/11/06(火) 17:07:57 ID:b7fqmEuG
テーブルにinsertされたデータを、条件によってすぐに削除する トリガーを作ったのですがうまくいきません。 CREATE OR REPLACE TRIGGER トリガー名 AFTER INSERT ON テーブル1 FOR EACH ROW BEGIN IF :NEW.項目A = 1 THEN NULL; ELSE DELETE FROM テーブル1 WHERE キー項目 = :NEW.キー項目; END IF; END; これを実行すると、 ora-04091:表[テーブル名]は変更中の為、 トリガー昨日はこの表を読み込み/修正することができません。 となります。 トリガーを使うのは無理でしょうか?
929 :
NAME IS NULL :2007/11/06(火) 17:09:40 ID:b7fqmEuG
ソース見づらいので再度貼ります。 CREATE OR REPLACE TRIGGER トリガー名 AFTER INSERT ON テーブル1 FOR EACH ROW BEGIN IF :NEW.項目A = 1 THEN NULL; ELSE DELETE FROM テーブル1 WHERE キー項目 = :NEW.キー項目; END IF; END;
>>927 ごめん、全然表の構造が見えてこない。
Descの結果貼って、ついでにどんなSQL投げているか見せてくれ。
>>927 select t1.業種, t1.値 "売上", t2.値 "費用"
from 縦長のテーブル t1, 縦長のテーブル t2
where t1.業種 = 'IT'のID
and t1.業種 = t2.業種
and t1.項目コード = '売上'のID
and t2.項目コード = '費用'のID
/
いい方法かどうかは知らんけど
Oracle 10g sqlplusで SELECT BITAND(15,4) FROM DUAL; とやってみたら「ORA-00932: データ型が一致しません。」と出てしまいました。 いろんなページを見るとこれでできると書いてあるのですが、 仕様が変わったのでしょうか?
>>933 10.2.0.3.0
SQL> SELECT BITAND(15,4) FROM DUAL;
BITAND(15,4)
------------
4
935 :
928 :2007/11/07(水) 16:50:54 ID:BpbzLw8P
>>930 うおっ、英語だー
でもありがとう。大変参考になりました。
文トリガーなら自テーブルの参照/更新ができるのを利用するんですね。
oracle学んで2週間のど素人です。 insertやupdate,deleteするとき、パフォーマンスを全く気にしなくてもよいのであれば その直前でかならず、 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE を毎回やっておけば何があってもでいいのでしょうか?
HDDに拳銃撃ちこまれるとダメかもしれんな
>>936 何故そこまでIsolation Levelにこだわってんだ?
以下のテーブルから例のように最大値を持つ会社と最小値を持つ会社を出したいんですが 上手い方法が思いつきません。どなたかご教授お願いします。 result name estimate ---------------- A社 100 B社 200 C社 300 D社 400 E社 500 例) A社 100 E社 500
>>939 MAX取り出すSQLと
MIN取り出すSQLをUNIONすればいいよ。
SELECT name,max(estimate) from result
union all
SELECT name,min(estimate) from result
;
トリガーを採用しては見たものの たかが伝票発行済みフラグを書き換えるだけでトリガっちゃうので遅い遅い。 思慮が足りんかった・・・
>>941 列の変更内容を確認して、処理をバイパスするようにすればよくね?
>>942 まだ試してはいないのですが、
普段から全列の比較を行なうと、必要なトリガ処理も遅くなりやしないかと・・・
>>940 ありがとうございます。UNIONは頭にありませんでした・・・
しかし実行すると not a single-group group functionが発生します。
group byでnameとestimateを指定しても同じでした。この場合どこをgroup指定すればよいのでしょうか?
連投すいません。自己解決いたしました。
946 :
NAME IS NULL :2007/11/08(木) 21:20:55 ID:E3dPED87
オラクル、PC初心者です。
oracle database 10gをインストールしました。
Enterprise Managerに繋ぎたいのですが
つながりません。
http://ホスト名:ポート番号/em/ なのは分かるのですが、
ポート番号はportlist.iniを参照すればわかります。
ホスト名を確認するにはどうすればいいのでしょうか?
948 :
NAME IS NULL :2007/11/08(木) 21:27:12 ID:E3dPED87
どうすればわかりますか? PCも初心者なので。。。
949 :
NAME IS NULL :2007/11/08(木) 21:29:37 ID:E3dPED87
951 :
NAME IS NULL :2007/11/08(木) 22:03:00 ID:E3dPED87
emctl status dbconsole で確認すれ
953 :
NAME IS NULL :2007/11/08(木) 22:23:25 ID:E3dPED87
>>952 C:\Documents and Settings\User>emctl status dbconsole
Environment variable ORACLE_SID not defined. Please define it.
このようなログです。
どうすればいいですか?
環境変数「ORACLE_SID」が定義されてないよ。ということ。 とりあえず、インストール時に設定したSID(orclとか)を環境変数にセットして再度emctl〜 set ORACLE_SID=orcl emctl 〜
955 :
NAME IS NULL :2007/11/08(木) 22:46:48 ID:E3dPED87
インストール時に設定したSIDはmydynabookにしました。
→
C:\Documents and Settings\User>set ORACLE_SID=mydynabook
C:\Documents and Settings\User>emctl status dbconsole
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://MYDYNABOOK:1158/em/console/aboutApplication Oracle Enterprise Manager 10g is not running.
となりました。
どうすればいいですか?
Oracle Enterprise Manager 10g is not running. ↓ サービスが起動していないようですので、 以下のコマンドでサービスを起動させてから、上のようにブラウザでアクセスしてみてください。 そのときに、アクセスすべきURL等も表示されたと思います。 emctl start dbconsole
957 :
NAME IS NULL :2007/11/08(木) 22:56:06 ID:E3dPED87
C:\Documents and Settings\User>emctl start dbconsole
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://MYDYNABOOK:1158/em/console/aboutApplication Starting Oracle Enterprise Manager 10g Database Control ...要求したサービスは既に開始されています。
NET HELPMSG 2182 と入力すると、より詳しい説明が得られます。
C:\Documents and Settings\User>NET HELPMSG 2182
要求したサービスは既に開始されています。
説明
既に動作中のサービスを開始しようとしました。
対処
動作中のサービスを一覧表示するには、次のように入力してください:
NET START
958 :
NAME IS NULL :2007/11/08(木) 22:56:39 ID:E3dPED87
この後に ブラウザにアクセスしましたがだめでした。。。
960 :
NAME IS NULL :2007/11/08(木) 23:37:58 ID:E3dPED87
パーソナルファイアーウォール
962 :
NAME IS NULL :2007/11/08(木) 23:58:31 ID:E3dPED87
え?
963 :
936 :2007/11/09(金) 00:05:54 ID:???
>>962 >>961 ではないけど、外部からのアクセスに対してポート1158が閉じているんじゃないか?ということ。
明日早くもう寝ますので最後になりますが、サービスの「OracleServicemydynabook」がある筈なので
それも起動されているか確認してください。
あと、OSの種類やブラウザでアクセスするととどの様になるか(Not Foundになるとか)を提示すれば、
他の方からもヒントを得られるかもしれません。また、ネットでも検索してみてはいかがでしょうか。
965 :
NAME IS NULL :2007/11/09(金) 00:22:54 ID:VyNt3dee
>>964 とりあえず報告まで。
OracleServicemydynabookがあり、状態は『起動』となっています。
ブラウザでアクセスしたときの状況ですが、
OSはWindowsXP
http://localhost:1158/em/でアクセスすると 、
------------------------------------
ページを表示できません。
検索中のページは現在、利用できません。Web サイトに技術的な問題が発生しているか、ブラウザの設定を調整する必要があります。
ネットワーク接続の問題の修正を試みるには、 [ツール]、[接続の問題の診断...]"をクリックしてください。
-------------------------
とこんな感じで表示されます。
遅くまで申し訳ないです。。。
967 :
NAME IS NULL :2007/11/09(金) 00:28:27 ID:VyNt3dee
iSQL*Plus HTTPポート番号 =5560 Enterprise ManagerコンソールのHTTPポート(mydynabook) = 1158 Enterprise Managerエージェントのポート(mydynabook) = 3938 この場合1158でいいんですよね? でもだめです。 なにがいけないのでしょうか?
>>963 普通はデフォルトのREAD COMMITTEDでそんなに不都合は発生しないと思うけど?
銀行系のトランザクションでガチになんかしないとならんのか?
>>967 まずはTelnet使うなり、なんなりしてPortに繋がるか試してみたら?
Loopbackアドレスは試してみたか?
http://127.0.0.1:1158/em とかみたいにさ?
あとはブラウザーで串通していたりとかしていないか?
ブラウザーのインターネットオプション関係でプロクシー関係の所全部
外してアクセスしてみろ。
Windows XPのSP2ならコンパネの下にWindows ファイアウォールがあるが、それが遮断している可能性は? とりあえず、このファイアウォールをオフしてから試してみるとか。
971 :
NAME IS NULL :2007/11/09(金) 12:00:31 ID:VyNt3dee
>>969 初心者なので解読が難しいです。ごめんなさい。
普通はそのへんの設定をしなくてもアクセスできるものなのですよね?
>>970 やってみましたが、無理でした。
そもそもお聞きしたいのですが、
今回Oracleの勉強をするために
Oracle Database 10g を
自宅PCに取り込んでとのことだったのですが、
インストールするのは
DVD内の『Database』フォルダ内のインストーラー
だけでいいんですよね?
『client』フォルダや他のフォルダ内ののインストーラーは
必要ないんですよね?
その辺があやふやなもので。
ご回答お願いします。
>>971 http://localhost:1158/ だけで、
Oracle Application Server Containers for J2EE 10g (9.0.4.1.0)
なタイトルの画面が表示されない?
もし駄目なら ブラウザを変えてアクセスしてみるとか
Firefox や Opera を一時的にインスコしてみて アクセスできないかためしてみたら?
そもそも SQL*PLUS で ORACLE に接続できますか? コマンドプロンプトから > sqlplus scott/tiger 接続されました SQL> まで行く?
974 :
NAME IS NULL :2007/11/09(金) 16:09:44 ID:v3ZhBncP
C:\Documents and Settings\User>sqlplus scott/tiger SQL*Plus: Release 10.2.0.1.0 - Production on 金 11月 9 16:09:29 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. ERROR: ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました ユーザー名を入力してください: ERROR: ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました
>>974 Oracleサーバを別のPCにインストールしてるなら、
> sqlplus scott/tiger@<接続文字列>
となる <接続文字列> は設定してますか?
すみません質問です。 PLSQLでパイプライン関数に配列(PLSQL表)を引数で渡したいのですが、コンパイルエラーになってしまいます。 ちなみに、開発者ガイドでは通常のファンクションで渡せるものは使えると記述されていました。 引数をVARCHAR2にするとコンパイルが通ることは確認しています。よろしくお願いします。
書き忘れました。 環境は10gリリース2です。
979 :
936 :2007/11/10(土) 01:10:08 ID:???
>>968 レスありがとうございます。
銀行系ではないです。
いや、なんか、石橋な安全策をとるのであれば、
ノンリピータブルリードとファントムインサートとか
も気にしたほうがいいのかと思ってしまいまして。
えーと、銀行系でもないのであれば、トランザクション
の設定を変更せずに他の処理で排他制御を行うということで
いいのでしょうか?
>>979 RDBMSでアプリ開発した事があるのなら、このあたりの処理とかも
分かってデザインとかしていると思うけどねぇ。
そこまでガチにファントムインサートやらノンリピータブルリードとかを
気にしないとならないアプリとかは、まだお目にかかった事ないな。
>>974 DBが起動すらしていない可能性が高いな。
それとリスナーも落ちてんじゃないのか?
いずれにせよ初心者がいきなりDB入れてどうこうできるものではないよ。
ちゃんと勉強してからインストールもした方がいい。
オブジェクトブラウザで更新するにはどこか設定が必要ですか?
>>982 接続スキーマの対象オブジェクトへの更新権限かな。
984 :
NAME IS NULL :2007/11/10(土) 08:59:24 ID:Hk8Ewm0v
974ですが、 色々ご意見ありがとうございます。 そもそも自分のPCのメモリは256MBでして これって少ないですか? 実質は240MBくらいです。 さくさく動かすにはどのくらいのメモリが 必要でしょうか? また一から出直して やってみたいと思います。 そのときはみなさま ご協力お願い致します。
986 :
oraora :2007/11/10(土) 14:14:14 ID:WHCji1vp
質問です、つい先日ORACLEを導入した超初心者です。 ORACLE 10Gを使用しています。 統計情報を取得するとパフォーマンスがUPする(何かのサイトでそんな事が書いてました。)との事で、 optimaizerはchooseで設定し、一部のテーブルのみ統計情報を取得しております。 皆さん統計情報の取得はどうされていますか? どのような条件のテーブルの場合統計情報を取得しているかお聞かせ下さい。 (例えばレコード数が多い又は全テーブルなど。。) すみません、統計情報がどのように役にたつか、いまいちその良さが 理解できていません。。
>>986 10gはデフォルトで定期的に統計情報取得するようになっているだろ?
988 :
oraora :2007/11/10(土) 20:58:28 ID:WHCji1vp
>987さん そうなのですが、自動取得する統計情報は一旦統計情報を手動で取得 してからではないと、自動取得する対象にならないみたいなのですが。。 optimizer_mode=chooseだからですかね
そんなはずはないぞー
>>986 統計情報は馬鹿なOracleのコストベースオプティマイザーが狂った
実行計画で全件検索かけたり、内部ビューを作ったりして検索の
パフォーマンスが極端に遅くなったりしない様に、データの分布や
索引の構成情報を最新のものに保つために取ります。
ただし、コストベースオプティマイザーが常に最速の実行計画で
検索してくれるとは限りません。
そんな時にはヒント文などを用いて、強制的に自分で実行計画を
良いものに変更する等の対応が求められます。
統計情報の取得のタイミングとしては、データ量や分布がそんなに
変化しない表なら頻度は高くなくていいだろうし、逆に挿入・削除などが
頻繁に行なわれるようなら、大規模挿入・削除が行なわれた直後には
必ず行なうなどの対応をする必要があるでしょう。