Oracle 質問総合スレat DB
Oracle 質問総合スレ - 暇つぶし2ch237:NAME IS NULL
07/03/07 12:22:57 m/eIFB9Y
>>236
それ却下された。

238:NAME IS NULL
07/03/07 13:27:30
>>236-237
提案したのかよw


239:NAME IS NULL
07/03/07 23:11:44
まあ、よくあると言うかハードjは売りっぱなし会社で、その売りっぱなし会社が
低賃金で雇ったハケンのデタラメSE&PGに組ませたシステムによくある失敗例だよな。

ただ、普通はリプレースの際にマシンスペックの向上に助けられて
問題にならない場合もタマにあったりするが、229の場合は
今まで動いていたソフトウェアが相当にヘボかったんだろう。

いい機会だから金だしてマトモな会社に丸投げしとけ(w

240:NAME IS NULL
07/03/07 23:36:15
>>229
そのAPサーバーって言語は何で動いてんの?

ネットワークバッファとかプリフェッチサイズ大きくして改善されるかな。
ループのまわし方にもよるけど。

241:NAME IS NULL
07/03/08 01:39:56
>>229
「ネットワークを疑ってみる」がセオリーっぽいけどね。何処がネックか調べようよ
5倍も時間がかかるようになって、2ヶ月以上の放置が信じられん
っていうか、テスト期間中に問題にならないのも信じられ

242:NAME IS NULL
07/03/08 01:43:35
APサーバからselect * from~を多用していたりなw


243:229
07/03/08 09:06:32 46zKKXiM
月次処理で月1回しか流れない上、当該時間帯に競合するバッチもない。
監視はオペレータが常駐しているので長くかかってもシステムには影響がない
のと、他の開発案件との絡みもあるので、とりあえず業務Grpは対応する予定はなく、
インフラチーム預かりで調査中というステータスです。

244:NAME IS NULL
07/03/08 22:26:04
年明けにシステム変えて、3月でこのありさまとは、
ずいぶんと無能かつボンクラ揃いのインフラチームですな。

専任のオペレータが監視する様なシステムでお客から
そんなクレームきたら、それこそマッハで対応すべき状況だと
思うけど、そうならないのは天下りでパイプが結ばれている
関連子会社でとかなんだろうか?

245:NAME IS NULL
07/03/09 00:58:29
>>243

つ~かさ、ボトルネックが何処にあるか分からないんだから、とりあえず
DBのステータスだけでも見てみたらどうよ?
バッチ処理時にSTATSPACK流すなり、O/Sのステータス取るなり、やる
事はいくらでもあるだろう?
CPUバウンドなのか、I/Oバウンドなのかで、対応も当然変わる訳だしさ?
ネットワークトラフィックとかも見ているのかよ?
「AP鯖とDB鯖との間が100Base-Tかなんかでつながってました」なんて
オチだって考えられるぞ?


246:229
07/03/09 08:09:30 B5ov/MgP
客先とオペレータの作業場が離れている関係で、
ユーザには見えてません。
といいますか、ウチのPJはこれまで携わったところと毛色が違って、
情シスが絡まずにエンドユーザと直接やり取りしているので、
夜間バッチがどのくらいかかったかの報告もしてません。
システムに影響なければいくらでも隠蔽できます。
夜間バッチがエラーになっても、オペレータから連絡が来たら
その場で対処してユーザには特に報告しませんね。

247:NAME IS NULL
07/03/10 01:43:01
その月次バッチ「だけ」重くなったの?

248:NAME IS NULL
07/03/10 08:10:02
>>246
客先にバレてないんだったら、問題を隠蔽しまくって
5年か10年後にやってくるリプレースの時に対策汁

まあ、そんな不二家みたいな会社が漏れの周りに
いない事を祈るけどな。

249:NAME IS NULL
07/03/11 21:38:08 908nGcRk
Oracle9iを使ってまして、特定のプロシージャを動かすたびにデッドロックが発生して困っています。
同一のプロシージャを5つほどパラで流しているのですが、デッドロックが発生する理由がよく分かりません。

一つのテーブルにたいしての、updateとinsertを行うプロシージャなのですが、それぞれのセッションで
updateする行が異なっていることは確認してあります。(where句の指定が違う)

ただ、update/insert を行うテーブル自体に、プライマリーキーはおろか、ユニークなキーを張っていません。
そういうテーブルにupdateを行う際に、ロックが掛かる列というのは、updateのwhere句の条件にマッチする
行だけということで良いんでしょうか?? 一意なキーを使用していないため、updateを行うときにロックの
掛かる行が多すぎてデッドロックに成ってるんじゃないのかと素人判断をしてるのですが、どうでしょうか。

250:NAME IS NULL
07/03/11 21:50:55
行ロックがかかるのはupdateしてるところだけ。


251:NAME IS NULL
07/03/11 21:55:57
分離レベルにもよると思うが、where句にindexのないカラムを指定すると
テーブル全体でロックするんじゃねーの?
と思いつつユニークなKEYを持っていないのにどうやってUPDATEする
レコードを特定できるのか疑問なんだが。

そりゃ、何月何日のあるカラムをまとめて更新するってSQLなら解るけど
それだとロックが掛かるのは当たり前な気がするが・・・。

252:NAME IS NULL
07/03/11 21:59:24
別セッションがinsertした行にもupdateかけようとしてるとか??

253:NAME IS NULL
07/03/11 22:02:44
「ユニークなキー」っていうことばの意味があいまい。
でもUNIQUE INDEXの有無にかかわらず、updateの行ロックはその行だけ。


254:NAME IS NULL
07/03/11 22:06:12
foreign keyとか?

255:249
07/03/11 23:15:35 908nGcRk
249です。
ユニークなキー ⇒ ユニークインデックスでした。

やっぱり、行ロックかかるのはupdateかかってる場合のみっぽいですね。
KROWNによると、テーブルのロックの掛け合い以外でもデッドロック状態に
なるようなので、そちらの可能性のほうを検証してみます。

ども、ありがとうございます。

256:NAME IS NULL
07/03/11 23:23:40
漏れはあんましWHEREでUPDATEする時は主キーでやる派の人間だけど、
そこの9iがどんな分離レベルで動いているかしらんけど、分離レベルによっては
他のプロセスでINSERTしようとして、他のプロセスが後からUPDATEしようと
した時に先に走ったトランザクションが終了しない場合はUPDATEは待ち状態に
入り、先のINSERTするトランザクションでWHERE句にINDEX張ってないカラムを
指定してSELECTかましていた時に、後のトランザクションのUPDATEがロックかけてたら
デッドロックになると思うが。

あと、分離レベルによってwhere句にindex作成していない状態で
where hoge >= 0なんて選択カマしているとテーブル全体でロックがかかるとオモ。

257:NAME IS NULL
07/03/12 19:59:38
質問です!
Oracle10gのXEClientをインスコしてその中のODBCドライバを使わなきゃいけないんですが、
ODBCの設定のところでORACLEinXEClientを指定してもドライバのセトアッププログラムが読み込めない(システムエラーコード126)
が出て、追加できません。
そのあとにドライバのConfigDSN,ConfigDriver,またはConfigTrancelatorが失敗しました。
って出ます。
何が原因なのかわかりません。
ファイルはレジストリに記述されてる場所にあります。
MSDNに書いてあることは実行しました。それでも改善しません。
環境はXP SP2です。


258:NAME IS NULL
07/03/12 23:59:55
>>257

「mfc71.dll」「msvcrt.dll」「msvcr71.dll」の三つのdllをc:\windwows\system32にでもコピっておけば?

259:NAME IS NULL
07/03/13 00:02:22
XEって使ったこと無いんだけど、InstantClientじゃだめなのかな?


260:NAME IS NULL
07/03/13 00:14:11
>>249
参照制約付いてないですか?

261:NAME IS NULL
07/03/13 01:15:24
pl/sqlについて質問させて下さい。

変数の項目定義をDBの項目%type;で行っています。
その項目の項目長を取りたいのですがlengthだと
変数の中身のサイズを取ってしまって取れませんでした。
何か良い手段はないでしょうか。
よろしくお願いします。

262:NAME IS NULL
07/03/13 15:34:18 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) のため読み込めませんでした。

色々情報を探してみたのですが、見当たらずここに質問します。
お知恵をお貸しください。よろしくお願い致します。


263:NAME IS NULL
07/03/13 17:44:24
ちゃんとODBCドライバはインストールされた上でDSNの設定もした?
ドライバをインストールしただけではDSNの設定はされていないから、以下のようにDataSourceを指定する必要があるけど。
"Driver={Oracle in OraClient10g_home1}; Data Source=fuga; UID=hoge; PWD=hoge;"

DSNを設定した場合は、"dsn=hoge;uid=hoge;pwd=hoge"でいいけど。


264:NAME IS NULL
07/03/13 17:50:14
追加。
OracleのOLEDB Providerをインストールした場合は、
"Provider=OraOLEDB.Oracle; Data Source=fuga; CONNECTSTRING=; UID=hoge; PWD=hoge;"
として、Provider経由でも接続が出来る。
Oracleのは、ODBCよりProvider経由の方が推奨されているから、こっちを使うほうがいいかも。


265:262
07/03/13 18:45:43
>>263
ODBCドライバインストール&DNS設定もしました。
でもダメ。
OLEDB Providerをインストールして教えていただいたProvider経由の方法で接続したところOKでした。
ありがとうございました。助かりました。

266:NAME IS NULL
07/03/13 19:01:25 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
07/03/13 19:05:53
接続できて喜んでいたら今度は
ORA-12560: プロトコル・アダプタ・エラーが発生しました
とエラーが出るようになりました。
どう対処すれば・・?

268:262
07/03/13 19:16:16
事故レス
ODBCを再設定したところ今度はProvider経由でORA-12560エラーが出て、
ODBC経由だとOKになりました。
うーむ、よくわからない。。。

269:NAME IS NULL
07/03/13 19:24:34
こんな時間に会社から2chにカキコとか考えるとアレなんだが、
素直にOracleのサポートに電話した方が解決早いだろ。

270:NAME IS NULL
07/03/13 19:33:03
このスレの存在意義が (ry

271:NAME IS NULL
07/03/13 21:27:48
ORA-12154 は Host String: hoge に対応する接続記述子が見つかんないってこと。
tnsnames.ora 周りがあやしいかな。


272:NAME IS NULL
07/03/13 21:30:08
>>266

tnsnames.oraとsqlnet.oraをさらせ。

273:NAME IS NULL
07/03/13 23:34:10
oracleに関わらずの話かもしれないんですが、
いわゆる2フェーズコミットっていう、
よく情報処理試験にでてくるんですけど、
あれの、コミット可能かどうかを確認する1フェーズ目って
具体的には何をすることをいうんでしょうか?

274:NAME IS NULL
07/03/14 02:56:45
>>273

[準備フェーズ]

準備するように指示されると、開始側データベース(コミットが実行されたデータベース)は
分散トランザクションに関与する他の各データベースに、この後の指示に従って、コミット
またはロールバックする様に支持します。開始側データベースは以下の作業を行います。

・Redoログ・バッファとSCN(System Change Number)をフラッシュします。
・グローバルなSCNを他のDBに渡します。(SCN回復する時に必要な情報)
・表をロックして、コミット・フェーズが完了するまで表の読み書き操作を禁止します。

275:266
07/03/14 09:08:19
>>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)

このようになっています。
よろしくお願いします。

276:NAME IS NULL
07/03/14 09:41:52
>>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)


277:NAME IS NULL
07/03/14 09:42:11
>>275
ORACLE_HOMEが2つあるっていうオチだったりして。

278:275
07/03/14 09:50:10
>>276
!!!!!!
いけました!!ありがとうございます!!

でもなぜだろう?
NetManagerなどではカバーできない環境なのか…。
調査してみます。

279:NAME IS NULL
07/03/14 09:56:27
>>278

これで繋がったという事はどっちかというとlistener.ora側の設定を疑うべきだな。


280:NAME IS NULL
07/03/14 09:59:34
SID=hoge の指定は昔のやりかた。
まず SERVICE_NAME=hoge のままで、NAMES.DIRECTORY_PATH= (NTS) でやってみて。

NAMES.DIRECTORY_PATH は、接続記述子をどこから探すかの指定。
これがEZCONNECTなら、その方法でしていしなくちゃならない。
NTSならtnsnames.oraから探す。


281:NAME IS NULL
07/03/14 10:03:23
>>278

names.directory_pathをtnsnamesにしてみろ。

names.directory_path = (TNSNAMES)

282:280
07/03/14 10:14:57
NTSは認証のほうだった。
>>281 が正しい。

283:275
07/03/14 10:15:28
>>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
07/03/14 10:23:05
>>279-282
すいません、先走りました…(汗
(自分のレス書き込んでから>>279-282に気づきました)

「Oracle8リリース8.0互換識別子を使用」
にしたままでは原因解明や対処したことにはならず、追求して本来あるべき
設定にした方がよいのでしょうか?

さんざん悩まされた問題なので、もしも「Oracle8リリース8.0互換識別子を
使用」にチェックを付けて使うことに支障がなければこのままでもいいかな
ー…と思い始めていたりするのですが…。

285:275
07/03/14 10:33:02
以下の設定で、問題は発生しませんでした。

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
07/03/14 10:44:44
Net Manager を開くとツリーに「プロファイル」というのがあり、
ここの「選択メソッド」が、もともとは「EZCONNECT」だけになって
いました。

tnsping hoge
が ORA-12154 でエラーになっていたことから、私の環境では EZCONNECT
だけでは、何かが引っかかって接続識別子を解決できなかったようです。

Net Manager → プロファイル → 「TNSNAMES」「EZCONNECT」両方選択

これで接続も tnsping も正しくできるようになりました。

287:257
07/03/14 16:19:44
>>258
ありがとうございます。MFCランタイム入れたらその問題は解決しました。

>>259
ORACLEのUNIVインストーラーを持ってないので無理でした。

288:NAME IS NULL
07/03/16 23:37:33 O+49JDf9
oracle10g 32bit版をWindowsXP Pro(CoreDuo)にインストールしようとしましたが、
途中で
「ライブラリの読み込み中にエラーが発生しました
generalQueries」
と表示されて、インストールができません。
(その後のすべてのインストールの中止orこのコンポーネントのインストールのみ中止
 のどちらを選択しても終了しません。)
Enterprise、Standard、Personalのどれを選択しても同じ現象がおきてしまいます。

どなたか同じ現象の方や解決方法をご存じの方いらっしゃいますでしょうか?

289:NAME IS NULL
07/03/17 01:08:34
>>288

そのインストール用バイナリを保存しているディレクトリにマルチバイトの文字が
使われていたりしないか?

290:288
07/03/17 10:56:14 qcvECAwf
>289

アドバイスありがとうございます。
HDDにコピーしてからインストールをしたのですが、
なぜかgeneralQueriesというファイルが壊れていたみたいでした。

お手数をおかけしました。

291:NAME IS NULL
07/03/17 18:03:55 rpX2rmR1
Oracle10gにおいてundo表領域systemu表領域を他ドライブに変更したいのですが
①sqlplus "sys/psw@oracle as sysdba"
②SHUTDOWN IMMEDIATE;
③STARTUP MOUNT;
という順におこなった所、③にてリスナーは接続記述子で要求されたサービスを現在認識していません
と表示されてしまいます。
ご存知の方はよろしくお願いします。

292:NAME IS NULL
07/03/17 22:53:10
リスナー経由で接続できるのはOPENしてから。

Oracleサーバーにsshなんかで入って、sqlplus / as sysdba とかで入る。

293:107
07/03/17 23:22:57 rpX2rmR1
>>292
申し訳ありません。
もう少し噛み砕いて説明していただけないでしょうか?

294:NAME IS NULL
07/03/17 23:27:05 HgHJyZfK
質問なのですが、WindowsXPのHomeEditionにOracleのインストールは無理でしょうか?トライアル版をインストールしたのですが、なぜかどうやっても「リスナーがありません」となってしまいます。

295:NAME IS NULL
07/03/17 23:32:36
ワロタ
これ以上どうやって噛み砕けとw

Oracle10gのサーバUnix系なら、
サーバにDBAユーザでログインしてから、
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup mount
で、データベースを起動する。


296:NAME IS NULL
07/03/18 00:39:59
Windows のOracle 10gです。

テーブルにストアドプロシージャ名(またはストアドファンクション名)を入れておいて、
プロシージャ(またはファンクション)から、その値を取得してそのプロシージャを実行
したいのですが、できますか?

SQL Serverの場合は @procedure_name にプロシージャ名が入っているとして、

EXEC @procedure_name @pram1 pram2

などとして実行できたのですが、Oracleではどうもうまくいきません。
変数の中に入っている名前のプロシージャを呼び出すことはできませんか?

297:291
07/03/18 01:43:52 t/a53Ch2
>>295
申し訳ない。
①コンピュータの管理にてOracleService<SID>を起動させる
②splplus aaa/bbb@ccc
サービス名を指定しなければプロトコル・アダプトエラーが発生します
③$ sqlplus /nolog
④conn / as sysdba
を行ったところ③でORA-12560:TNS:プロトコルエラーが発生してしまいます

298:仕様書無しさん
07/03/18 11:15:28 vUU4ZdYN
>>297
接続時に"@ccc"を使わない接続をしろってこと。
"@<接続子>"でリスナー経由の接続になるんだお。

コマンドプロンプトで
SET ORACLE_SID=ccc
ってやってから
③、④を実行。


299:291
07/03/18 12:03:09 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:仕様書無しさん
07/03/18 12:23:07 vUU4ZdYN
>>299
手順を晒せよ。
Dドライブにデータファイルはうつしてるよな?

301:291
07/03/18 12:40:30 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
②sqlplus aaa/bbb
③$ sqlplus /nolog
④conn / as sysdba
⑤SHUTDOWN IMMEDIATE;
⑥STARTUP MOUNT;
⑦ 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';
⑧alter database open;
⑧を行った際にリカバリが必要と表示されます。
よろしくお願いします。

302:NAME IS NULL
07/03/18 13:10:18
>>301
Windowsではどっちでもいいことなんだけど、Oracle使いとしてこの先生きのこりたいなら、
環境変数名はキチンと大文字/小文字を区別するようにしようね。
 × oracle_sid
 × Oracle_Sid
 ○ ORACLE_SID


303:NAME IS NULL
07/03/18 13:18:34
>>301
先にOS上でファイルを移動したか?

つまり、その手順で言うと、5と6の間でOSコマンドにてファイルを移動する。


304:107
07/03/18 14:46:14 t/a53Ch2
>>302
ご指摘の点、しっかりと受け止めます
>>303
はい、先にOSコマンドでコピーをしました。
やり直してみます。

305:仕様書無しさん
07/03/18 15:07:47 vUU4ZdYN
>>301
一回、元に戻してから。

⑤→⑥↓
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';

⑧→⑤↓
データファイルUNDOTBS01.DBFをCからDへコピー

⑥→⑦→⑧


306:NAME IS NULL
07/03/18 18:13:36
>>305

Recoveryが必要だって言われてんだから、renameした後にrecover database文
打ってみたら?
普通は必要ないんだけどね。

307:301
07/03/18 19:11:12
>>305
>>306
どうもありがとうございました。
システムディスクの容量が少なかったので
助かりました。

308:NAME IS NULL
07/03/21 05:05:45 Ct0Agd+G
下記①→②→③の処理を繰り返し、一レコードずつ値を更新する処理を行っています
(表「USER_MASTER」のPKは「USER_ID」)。
ところが同一レコードに対し2回同じ処理を繰り返すことがあり不思議に思っています。
「①→ファイルにUSER_IDをログ出力→②→ファイルにUSER_IDをログ出力→③」
としてみたのですが、COMMIT自体は失敗せず、ログを確認したところやはり2回同じ処理を繰り返すことがあるようです。
頻度としてはきわめて低いのですが。。。

① SELECT USER_ID FROM USER_MASTER
    WHERE STATUS = '0';
② UPDATE USER_MASTER
    SET STATUS = '1' WHERE USER_ID = '①で取得したUSER_ID';
③ COMMIT;

COMMIT命令を発効してからDBのレコードに値が
反映されるまでタイムラグでもあるのでしょうか。。。?
Oracle初心者なのでそんな事例今まで聞いたことがなかったのですが
もし何かご存知の方いらっしゃればアドバイスいただければと思います。
使用しているマシンのOSはWindows 2003、Oracleのバージョンは9i、
使用している言語はC#(.NET Framework 1.1)でODP.NETを使用しています。


309:NAME IS NULL
07/03/21 09:19:35 YYlj3kB8
SELECTでデータを1行だけ抜きたいんですが、そんなコマンドありますか?
教えて下さい

310:NAME IS NULL
07/03/21 09:21:46
>>308
> COMMIT命令を発効してからDBのレコードに値が 
> 反映されるまでタイムラグでもあるのでしょうか。。。?

同一セッション内ならあり得ない。

俺ならいちいち無駄なループ回さず、
UPDATE USER_MASTER SET STATUS='1'
 WHERE USER_ID IN (
SELECT USER_ID FROM USER_MASTER WHERE STATUS = '0' 
);
って書くがな。


311:NAME IS NULL
07/03/21 09:22:45
>>309
select * from table where rownum = 1;
でとれると思うが。


312:NAME IS NULL
07/03/21 09:40:21
>>311
ありがとうございます

313:NAME IS NULL
07/03/21 15:15:24
>>308
select ... for update してね。

314:313
07/03/21 15:17:49
追加でスマン
ORA-60 が出るかもしれないので、order by USER_ID も追加で。

315:NAME IS NULL
07/03/24 19:21:33
以下のようなSQL呼んでるプログラムがあるんだが
> SELECT ename FROM emp WHERE empno BETWEEN 1000 AND 2000;
「empno順にソートされてないから修正しろ」っていわれた
そりゃそうだ、ORDER BYとか使ってないからな・・・と思って
ローカル環境でテストしたんだがこっちだと昇順ソートされてる
データのrowidを入れ替えたりもしたんだがやはり変わらずソートされてる
「ORDER BYをつけないとデータの順序は保障されない」というのは
ソートされる/されないの保障がないという意味なのでしょうが
ソートされないことを確認する、手っ取り早い方法はないでしょうか?
(ヘンな質問ですが・・・)

316:NAME IS NULL
07/03/24 19:36:07
>>315
実行計画でもとってみたら?

317:NAME IS NULL
07/03/24 21:10:03
>>315
何を確認したいのか分からない
素直におーだばいすれば?

明示的にした方が他の人にも分かり易いし

318:315
07/03/24 22:05:56
すいません、簡単に言い直します。

ORDER BYをつけてないが、自分の環境ではソートされてる。
じゃあソートされずにバラバラにデータを出力させるためには
どうすればいいか。ただし、SQLはそのままで。
データを何らかの方法で並びかえればバラバラにでるのであれば
その並び替える方法を教えてほしい。

本来の依頼の解決方法はORDER BYをつけること。それは間違いないです。
でもつけてないのにソートされてるのはなんでだろう?という疑問から
この質問をしました。意図がわかりにくくてすいません。

319:NAME IS NULL
07/03/24 22:31:15
たまたまソートされた順序で格納されてたからだろ。
テストデータをつくるとき、
FOR i in 1..100000 LOOP
とかでデータを作ってINSERTすると格納データが昇順ではいってる。
SELECTは読んだ順に出力する。

ただし、それをあてにしてはいけないのでORDER BYが必要。

320:NAME IS NULL
07/03/24 22:32:36
一見ばらばらに見せかけたいなら、ハッシュパーティション表に入れて、ORDER BYしないとそうなる。

321:NAME IS NULL
07/03/25 00:52:39
>>315

9iまでだと索引スキャンで読み出された場合索引順にソートされて出力される。
10gは何故か索引スキャンによるソートがなくなってたのでorder byで明示的にソート必要。
内部がどう変わったかは知らん。
現象のみ確認した。




322:NAME IS NULL
07/03/25 01:00:11
>>321
ソートしてるわけじゃない

323:NAME IS NULL
07/03/25 14:29:29
VB2005でASP.NET2.0のプログラムを書いています
ODP.NETを使ってOracle10gにアクセスさせたいと思っています

web.configのconnectionStringsにコネクションプーリングするための文字列を入れたところまではよかったのですが、
どうやってその設定で接続させるかがわかりません
ConfigurationManager.ConnectionStringsのことを調べてみたのですが、ADO.NETでの接続になるみたいです
どうやって接続させるのでしょうか?

324:NAME IS NULL
07/03/25 21:30:49
>>318
行移行すれば順番がズレなかったっけ?
大きめのカラムを作ってUPDATEをしておけばいいんじゃねぇ?
そして実行計画取ればソートしているか否かわかるんじゃ

325:NAME IS NULL
07/03/26 21:37:38
>>323

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

326:NAME IS NULL
07/03/29 13:05:31 SkrWWvsv
いまどきオラクル8なのですが、left outer joinの代わりに何を使えばいいのでしょうか

327:NAME IS NULL
07/03/29 13:11:16
>>326

どういったSQLを投げていて、どういった結果をとりたいのか
もっと具体的に質問したら?

328:NAME IS NULL
07/03/29 13:18:39
>>326
(+)


329:NAME IS NULL
07/03/29 13:21:13 SkrWWvsv
10gの場合で
select 表1.商品名,表2.価格 from 表1
left outer join 表2
on 表1.番号 = 表2.番号;
と書くところを、8iではどのように書くんですか

330:NAME IS NULL
07/03/29 14:28:19
select 表1.商品名,表2.価格 from 表1,表2
where 表1.番号(+) = 表2.番号;


331:NAME IS NULL
07/03/29 14:35:56
8iだとLEFT JOIN~って書き方出来ないん?

332:NAME IS NULL
07/03/29 14:40:11
出来ない。


333:NAME IS NULL
07/03/29 15:04:20 SkrWWvsv
ありがとうございました!

334:NAME IS NULL
07/03/30 00:15:54
10gの外部参照って(+)じゃダメなの?

335:NAME IS NULL
07/03/30 01:36:22
ダメじゃないけど新規開発するなら OUTER JOIN 使うべき。
慣れればこっちのほうがわかりやすいよ。

336:NAME IS NULL
07/03/30 02:36:48
(+)はOracleでしか使えないし、将来的には廃止される可能性もあるしね。


337:NAME IS NULL
07/03/30 07:16:46
パフォーマンス的に問題になることが多いのが
外部結合を使用している場合が多いんだよなぁ

338:NAME IS NULL
07/03/30 09:21:55
2台のサーバ(しかも8iと9i)にデータベースリンク張って外部結合させたviewを書いたことがあるよ
検索が遅すぎて使い物にならなかった

もともと8iのみだったけど、容量が足りなくなったのでサーバ増設
しかも、まだ8iが手に入ったのに9iを導入なんて馬鹿なことやってた

で、そのデータベースを使用したシステムが軒並みエラーを起こして始末書を何枚も書かされる羽目になったよ

339:NAME IS NULL
07/03/30 19:44:08
>>338
自分で導入したんだったら始末書書くのも自業自得だろ.
ついでにその場合に遅くなる問題はデータベースリンクで連携してる部分だろ.
DBリンク使わずに外部結合してのパフォーマンス測定やった?
外部結合する時でも普通はきちんとキーやインデクス使えば十分実用レベルでしょ.
っていうか導入する前にViewとかなら性能試験やっとけよ.
DBの容量が足りなくなったんだったら,HDD増設して普通に表領域増やせよ.

なんか他にも突っ込み所あるような気がするけど後ヨロシコ


340:NAME IS NULL
07/03/30 20:36:45
どうしてコストが高い方を選んで、わざわざ遅くするような選択するかな~
もちろん維持コストも高くなっているんだよな・・・おまえクビw

341:338
07/03/30 20:51:19
俺が導入を決めたんじゃなくて、上が導入を決めたんだよ
で、こっちには「新しくDBサーバ買うから」しか言わない
しかも、置き換えるのではなく、よく使うデータを新しい方に移す方針たててた

>っていうか導入する前にViewとかなら性能試験やっとけよ.
1週間前に言われて十分な検証をとれないままやらされたんだよ
しかも、当時社内には9iなかったからデータベースリンクも8i同士でしかやってない
そりゃ、トラブるわなってこと

342:NAME IS NULL
07/03/30 21:07:08
営業が売りつける事しか頭になくて、かつ開発が発言力ない組織なんだろ。

その後ユルユルと9に移行したんだろうし。
たぶんw

343:NAME IS NULL
07/03/31 09:55:17 1KZDmp2y
oracle 9i をwindows2000に再インストールして、パッチ9.2.0.4をあてました。
Database configrationからグローバルデータベース作成のための
バッチファイルを作成しました。

そのバッチファイルを起動すると、エラーになってしまいます。
エラー内容は
・CREATE OR REPLACE ?????????
・データベースがオープンしていません。
などです。

オラクルのサービスが起ち上がってるのは確認したんですが、
それ以外で何を確認すればいいのかがわかりません。

オラクルを再インストールしても同じ現象になります。

どなたか教えてください。

344:NAME IS NULL
07/03/31 18:22:12
>>343
PSR入手できる環境なら、
OiSCに訊くのが一番早い。


345:NAME IS NULL
07/03/31 23:06:24
>>343

バッチを作らずに普通にDBCAからそのまま作成してみたら?
結構DBCAで作成されるバッチにはバグがあったりするよ。

346:NAME IS NULL
07/04/01 09:56:46
>>344-345
ありがとうございます。
DBCAから作ってみて、だめだったら問い合わせてみます。

347:NAME IS NULL
07/04/02 17:32:09
単純だけど、以前から疑問に思ってたので教えてください。

shellから発行したSQLを中断したいんだけど、killしたらロールバック
されてしまうんだけど、その時間が勿体無いので、ロールバックせず
に中断したいんだけど、無理?

348:NAME IS NULL
07/04/02 20:28:17
電源落とせば?

349:NAME IS NULL
07/04/02 20:50:33
>>348
電源落とす方が時間かかるでしゅ

350:NAME IS NULL
07/04/02 21:08:40
>>347
smonをkillしたらabortと一緒の動きしたと思ったけど

351:NAME IS NULL
07/04/02 22:50:56
>>347

またRDBMSの基本を無視するような動きだな。

352:NAME IS NULL
07/04/03 10:45:27
レスどうもです。

確かにOracleの基本を無視してるんですが、
実運用では、単にワークを作る処理とか、そのSQLは
捨てても他のプロセスを生かしたいという状況があるもので・・

353:NAME IS NULL
07/04/03 11:06:24
>>352
どっちにしろ再度実行する前に
「これまでの処理をロールバックする」とか
「実行前に初期化する」って処理が必要なんじゃね~の?
だったらロールバックした方がいいだろ。

次に実行云々の前に、別のShell立ち上げて
接続すれば、既存トランザクションの影響は受けないしなwww

354:NAME IS NULL
07/04/03 12:16:51
>>353

んだな。
どうせトランザクションの排他レベルはシリアライザブルなんだから、何で
Killった後にいちいち待っているのか分からんな。

355:NAME IS NULL
07/04/04 21:39:04
あるマシン上のOracle10g上のDBを
別のマシンのOracle8iにエキスポート
するには8iのクライアントで10gでつないで
EXPしてからそのファイルを8iのクライアント
でIMPすればいいようなのですが他にいい方法
はないでしょうか?

356:NAME IS NULL
07/04/04 22:01:16
10g→8iなんてできるんか?


357:NAME IS NULL
07/04/04 22:56:06
サポートマトリックスを確認したが、10g => 8iはサポート外だな。

DB Linkがサポートされているかどうか知らんが、そっちの方が
まだ可能性がありそうだな。


358:NAME IS NULL
07/04/05 00:48:19
>>357
サポートマトリックスってどれ?
自分の見る公式の奴にはEXP/IMPは書かれていない
マニュアルだと7.xでもインポートできるような書き方されてる

359:NAME IS NULL
07/04/05 04:35:37
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のパッチをあてる必要があるな。


360:NAME IS NULL
07/04/05 07:52:44
>>355
8.1.7のexpで取得したダンプなら
10gのimpでインポート可能。



361:NAME IS NULL
07/04/05 08:23:20
>>359-360

>>356-357


362:NAME IS NULL
07/04/05 10:48:29
Oracle10gをテスト用に自分のPCを入れています
他の人のPCにクライアントを入れて自分のPC内のDBに接続しようとしたらタイムアウトして接続できませんでした
そのPCからサーバにある本番環境にはアクセスできました

Net Configuration Managerを使用して設定しました
設定内容は確認しましたが、おかしいところはなかったです

どうすれば接続できるようになりますか?
OSはWindowsXP SP2です

自分のPC内のDBの設定、もしくは共有設定あたりがおかしいのかなと思うのですが・・・

363:NAME IS NULL
07/04/05 11:10:16
エスパーさんお呼びですよー

っていうのはおいといて、WindowsFirewallとかが弾いてるとかかな?


364:NAME IS NULL
07/04/05 16:42:45
>>361
残念ながら8.1.7→10.xは
8.1.7のサポート終了時に
マトリックスから外されただけで、
正式サポートされていた
バージョンの組み合わせだよ。


365:362
07/04/05 19:47:17
>>363
そのまさかでした
あほらしい質問して申し訳ない

でも、WindowsファイアウォールにSQL Plusの追加をしても1521空けてもアクセスできませんでした
これ以上はスレ違いになりますか

366:NAME IS NULL
07/04/05 21:14:53
>>364

疲れるな。。

8.1.7→10.x じゃなくて、>>355 がやりたいと言ってるのは
10g→8i のことでしょ?

ちゃんと読めないの?



367:NAME IS NULL
07/04/06 07:37:10
>>366
だから8iのexpツールでダンプとれば
8iにimpできるんだよ。
ちゃんと読めよwww


368:NAME IS NULL
07/04/06 08:21:52
>>367

へぇ。じゃあ例えば新しいデータ型とかもちゃんと入るのかね。

もちろんやってみてから言ってるんだろうね?


369:NAME IS NULL
07/04/06 08:27:03
>>367

ああなるほどね。やっと >>367 の言ってることがわかったよ。
ちゃんと書かないお前が悪いな。


370:NAME IS NULL
07/04/06 22:21:59
DB板ってなんでこんな人間しかいないんだ?w
みんなコミュニケーション下手すぎwww

371:NAME IS NULL
07/04/07 21:04:10
しかしあら不思議!SQLでしゃべるとみんな饒舌になるのでした

372:NAME IS NULL
07/04/07 21:33:26
>>370

ここの人達、バッファが足りなくてちょっとディスクリード起こしてしまっているんです。

373:NAME IS NULL
07/04/08 13:47:14
>>355
sql*loader使わないと無理

374:NAME IS NULL
07/04/09 21:20:27 dgbyTs5E
windows版oracle10G パッチの適用方法を教えて頂けないでしょうか?
readmeにはUNIX版しかないので困っております。どこかに説明してあるサイトやどなたか教えて頂けないでしょうか?


375:NAME IS NULL
07/04/09 21:31:30
ouiを起動して、パッチのjarを指定するだけ。


376:NAME IS NULL
07/04/09 21:45:39 dgbyTs5E
>>375
CDから解凍する必要はないですか?

377:NAME IS NULL
07/04/09 22:16:59
あったっけ?
っていうか、やってみればいいじゃん。
パッチのリストが読み込まれればそれで成功でしょ。
甘利にも簡単なことなんで、いちいち細かいことを覚えてないって人が俺も含めてほとんどだと思うよ。


378:NAME IS NULL
07/04/10 21:56:22 D+v1PS8Y
sqlplusでデータベースに接続出来ない。
ORA-12154: TNS: 指定された接続識別子を解決できませんでした
↑これ。
tnsnames.oraとか知らんから馬鹿でもわかるように解決する手順教えてくれ。

379:NAME IS NULL
07/04/10 22:20:12
>>378
サポート契約しているベンダーへレッツゴー。

380:NAME IS NULL
07/04/11 07:51:05
>>378
Oracle Netの勉強汁www
じゃなきゃサポート契約汁www

381:NAME IS NULL
07/04/17 02:33:01 VDbMfobx
接続に関して躓いているので、アドバイスをください。

環境はlinux に10g を入れてサービスとして起動しようとしています。

一台のマシンにインストールしたオラクルに対して
リスナーを設定し、複数のDB (=インスタンス)を作成したわけですが、
片方のDB に対してアクセスができませんでした。

tnsname の設定は問題ないと思っています。
listener の設定が不安です。
調べていると、listener のファイル内に作成した各DB のSIDを書くような記述が見受けられるのですが、
netca で行うリスナーの設定では、そのような入力は求められませんでした。

複数のDB へのアクセスを一つのリスナーで受けることは可能なのでしょうか?
また、その場合のlistener.ora の記述方法はどういったものになるのでしょうか?

382:NAME IS NULL
07/04/17 07:36:18
>>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
07/04/17 08:43:50 VDbMfobx
>>382
ご回答ありがとうございます。やってみます。
ちなみに、リスナーを複数用意するのはどういった場合なのでしょうか?
一つでも使えるのに、複数作成することもあるのですか?

384:NAME IS NULL
07/04/17 09:01:39
>>383
複数NICで負荷分散させたいときとかに、
複数リスナー立ち上げる。

385:NAME IS NULL
07/04/18 02:10:18
>>384

複数NICの場合はにはO/S側でチーミングなりボンディングすればいいんでないの?

386:NAME IS NULL
07/04/18 02:24:47
レイヤーが違うから、どっちがいいかは設計方針によるんじゃないの?
listenerでやる方が高度なことができるけど、反面Oracleのバグや仕様に悩まされることもあるかもしれない。
とかね。


387:NAME IS NULL
07/04/18 09:47:54
アプリケーションプログラムの接続のためにlistener.oraにSIDやGLOBAL_DBNAME
を設定するのは邪道。これはOracle8のころのやりかた。

Oracleインスタンスの初期化パラメータLOCAL_LISTENERを設定し、Oracleインスタンス
からOracleリスナーに自分を登録させるのが今の方法。

388:NAME IS NULL
07/04/18 13:43:26
なるほど。


389:NAME IS NULL
07/04/20 16:49:47 W5Lcj5GJ
オラクルとアクセスとSQLの違いを教えてください。
何を導入したらよいのか解らず困っています。
よろしく御願い致します。

390:NAME IS NULL
07/04/20 17:23:40
違いが多くて同じ箇所をあげたほうが早い。全く別物だと思ってOracleの入門書からはじめよう。

391:NAME IS NULL
07/04/20 19:07:33 v3OhOLUY
沖縄県の方へ(命に関わる注意事項です)

沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…

※一国二制度
 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
 さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。

今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。

392:NAME IS NULL
07/04/20 21:17:46
>>389
そんなこと聞いてるようなレベルならアクセスにしとけ
つかSQLてMYSQLのことか?

393:NAME IS NULL
07/04/21 02:31:48 Vxfi8HR4
ここで言っているインスタンスってDB のことでいいですか?
DBCA とかで, DB 作成というのがありますが、それはインスタンスの作成である。と。

394:NAME IS NULL
07/04/21 09:50:03
DBとインスタンスは1対1に対応するからね。

DBCAで作るのはDBだな。
インスタンスはSGAとプロセスの集合を指す。


395:NAME IS NULL
07/04/21 11:46:51
>>394

必ずしも1対1とは限らない。
RACの様に複数インスタンス対1DBという対応だってありうる。


396:NAME IS NULL
07/04/21 17:47:21 iUeSgJd/
低レベルな問い合わせですみません。
教えて下さい。
バージョンは9iです。

・SQL1文で
・SELECTの結果を見て、動的にFROM句/where句を変えたい。
・正確にはプロCOBOLん中で使います。
・PL/SQLは使用できません。

↓実イメージ
SELECT
名簿.生徒名,
名簿.理系文系区分
理系費用.学費,
文系費用.学費
from
名簿, 理系学費, 文系学費

(このままだと、学費テーブルとのジョインが上手くいかないのはわかっています。)
名簿テーブルの理系文系区分が、理系だったら、理系費用テーブルをジョインしたい。
文系だったら、文系費用テーブルをジョインしたい、みたいな。。。

一応、解決策は一つ思い付いています。
理系と文系のそれぞれ費用テーブルにジョインした問い合わせを、
UNIONすればイイってな感じは思いついてます。
ただ、SQLん中でIF文とか書けるのかなぁ、というのがわからなくて。


397:NAME IS NULL
07/04/21 18:51:54
>>396
IF文は要らない。
名簿テーブルの理系/文系の部分集合と結合できれば良い。

select a.生徒名,a.理系文系区分,b.学費
from 名簿 a,理系学費 b
where a.理系文系区分=理系
union
select a.生徒名,a.理系文系区分,b.学費
from 名簿 a,理系学費 b
where a.理系文系区分=理系


398:NAME IS NULL
07/04/21 19:15:08
文系は廃止です!

399:NAME IS NULL
07/04/21 19:24:34
やさしいな
漏れなら参考書で調べたのか?と聞いてやりたいが

400:396
07/04/21 20:44:57 iUeSgJd/


>>397
ありがとうございます。
しかし、私の書き方が悪かったようです。すみません。
397様の書いてくださった問い合わせ文はイメージできていたんです。

ただ、別の解決策がないのかを模索していました。
(PL/SQL以外で)SQL文の中にIF文が書けるのか、
動的に構文を書き換える事が出来るのかが知りたかったのです。

>>399
調べてみました。
IF文で逆引きを行うとCASE文しか見つけれませんでした。。。


401:NAME IS NULL
07/04/22 00:11:59
>>396
個人的には学費テーブルを文系用、理系用に分割していることが
設計ミスのようにも感じますが、

>IF文で逆引きを行うとCASE文しか見つけれませんでした。。。
そのCASE文&スカラー副問合せを使用して、

SELECT 生徒名,理系文系区分
,CASE 理系文系区分
 WHEN '文系' THEN (SELECT 学費 FROM 文系学費)
 WHEN '理系' THEN (SELECT 学費 FROM 理系学費)
END 学費
FROM 名簿

402:396
07/04/22 00:49:45 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

403:NAME IS NULL
07/04/22 01:43:37
>>396
>下記のような問い合わせは成立するでしょうか?
構文的、SQLなどから推測できるテーブル構成的には
問題ないかと思います。

404:396
07/04/22 02:01:01
>>403
ありがとうございました!
助かりました!

405:NAME IS NULL
07/04/22 11:59:16
>>402
授業科目コードが文系学費テーブル|理系学費テーブルの一意キーであれば。



406:NAME IS NULL
07/04/22 14:42:56 RabniuWG
テーブル作成シェルを流して、その後、
もう一度、テーブル作成シェルを実行すると、エラーとなりますよね?
(drop tableで一旦、テーブル削除をしないと。)
でも、1回目に流したテーブル作成シェルのテーブル名が大文字で、
2回目に流したテーブル作成シェルのテーブル名が小文字の場合って
正常にテーブルが作成されてしまいませんか?

407:NAME IS NULL
07/04/22 14:50:33
>>406
Oracleの場合、オブジェクト名は大文字・小文字区別されないよ。
どうなるか分かるよな?

408:NAME IS NULL
07/04/22 15:43:14
>>407
テーブル作成時にダブルクォーテーションで囲むと
明示的に大文字・小文字が区別されるよ!

そんなことするやつ少ないとおもうけど

409:NAME IS NULL
07/04/22 15:53:16
>>406
大文字と小文字のテーブルができただけ
何が問題なんだ?

410:396
07/04/22 20:13:05
>>405
ありがとうございます。
認識いたしました。

411:NAME IS NULL
07/04/24 14:58:39 Fp+zC6oF
あるテーブルの主キーでの削除に非常に時間が掛かるのですが、
どういったことが原因として考えられるでしょうか?

外部キーで沢山参照されているテーブルだったので、それらの
cascade削除をしないようにしてみたのですが、処理時間に大きな
改善は見られませんでした。

412:NAME IS NULL
07/04/24 15:37:26
>>411
トレース取ってみて、
SELECTでのレコード取得時と、
DELETE時のCOST比較してみたら?

413:NAME IS NULL
07/04/24 16:07:30
>>411
何件中何件削除してる?

414:NAME IS NULL
07/04/24 23:01:59
>>411
検索性能重視のテーブルでインデックスいっぱいあったりする?

415:NAME IS NULL
07/04/25 01:03:22
リリースノートによると、oo4o 9.2.4.4はWin2003に対応していないと
なっていますが、問題なく動作しています。
オラクルがいう「システム要件」というのは、絶対なんでしょうか?


416:NAME IS NULL
07/04/25 01:10:56
サポートの問題とかいろいろある。


417:NAME IS NULL
07/04/25 09:40:07
>>415
日本オラクルが「問題有りませんよ」と
公式発表しているのがシステム要件だろ。

それ以外の組み合わせで何か起きてもサポート対象外だし、
何か起きるかどうかも日本オラクルでは把握すらしてないだろwww


418:NAME IS NULL
07/04/25 22:02:39
>>415
動作保証されていない組み合わせだと
表面上うまく動いているように見えるかもしれないし、
間違った操作でもそのまま何も言わずに動いてくれるかもしれないし、
バックアップをリカバリしたときに元通りにならないかもしれないし、
って感じなのかもね。

419:NAME IS NULL
07/04/25 23:53:04 idDHPFKk
オラクルサーバーの物理的な入れ替えというのを行うために
今あるデータベースを一時的に外部にまるまる保存したいんですが、
現実的な方法ってどういうものがありますか?

データベースはテーブル数などは多いけど容量的には小さいものです。
ユーザー名なども保存して再び同じ設定で使いたいのですが、
なにぶんこういう経験がゼロなもので何から調べて良いのかもわかりません。

丸投げに近い形で済みませんが、どうか宜しくお願い致します。

420:NAME IS NULL
07/04/26 00:41:34
inportとexport

421:NAME IS NULL
07/04/26 00:51:12
>>420
お前、微妙に意地悪だな。

422:NAME IS NULL
07/04/26 19:03:57
>>420
ありがとうございます。
オラクルのメニューの中にあるエクスポートを実行しようとしたら
ユーザー名とパスワードが通りませんでしたが、
なんとか頑張ってみます。

423:NAME IS NULL
07/04/26 20:17:29
>>422
新しいサーバに同じバージョンで移行するなら
コールドバックアップしてリカバリでも良いんだけどな。

まぁ、どっちも手間的にはたいして変わらんと思うけど。


424:NAME IS NULL
07/04/26 20:37:32
>>423
コールドバックアップですか?
またググってみます。

どうもありがとうございます。

425:NAME IS NULL
07/04/27 00:30:36
ストアドプロシージャに登録してバッチ処理を行うのですが
処理中の件数をリアルタイムに表示する方法はありますでしょうか?
通常はできなさそうなのですが何とか表示したいのです。。。

426:NAME IS NULL
07/04/27 01:06:45 HdP4V3Wp
ソートを2重にしたいんだけどオラクルではどうすればいいのでしょうか?
例えば「値段」を降順に並べたあと、もし値段の値が一緒だった場合「商品名」が昇順に並ぶようにしたいのですが

427:NAME IS NULL
07/04/27 01:10:05
>>426
order by 値段 desc, 商品名 asc

428:NAME IS NULL
07/04/27 01:10:52
>>425
処理度合いテーブルを作って,自律型トランザクションで進行状況を出力する.
別アプリでそのテーブルを照会する.

>>426
Order by 値段,商品名

429:NAME IS NULL
07/04/27 02:07:59
>>428
ふむ~やっぱりそれしかないですかね~
telnetから処理を行っているので実行したら処理終了まで
無通信の状態になってしまい切断されてしまうのです。
そもそもtelnetを使うのが間違いですかね・・・orz

430:NAME IS NULL
07/04/27 03:03:14
>>429
ストアドでUTL_FILEつかってログ出力させ、それをtailするのが一番簡単だとはおもう。
どっちにしろ、何かしらバッチのログを採るのが普通でしょ?


431:NAME IS NULL
07/04/27 05:36:02
>>419

鯖の種類何よ?
ちなみに移行元の鯖と移行先との鯖は同時に立ち上げ可能なのか?
それで大分手間も代わってくるけどな。

432:NAME IS NULL
07/04/27 05:38:13
>>429

Telnet側でKeep Aliveパケット送ればいいじゃん?

433:NAME IS NULL
07/04/28 01:28:32
ログは撮りますけどUTL_FILE使用しなければ処理終了後に一括出力ですよね・・・
telnet切断は無通信時間を延ばしてもらうことで対応することにしました^^;

434:NAME IS NULL
07/04/28 02:12:56
telnetってフォアグランドで何か実行していても切れたっけ?
って思ったけど、
OSが切断しなくても途中のNW機器が切ってしまうことがあるな。


435:NAME IS NULL
07/04/28 06:35:40
>>433

screenなりいれて、鯖側でやればいいじゃん?

URLリンク(q-eng.imat.eng.osaka-cu.ac.jp)

436:NAME IS NULL
07/04/28 23:23:42
質問です。
C言語でOracle10gを利用することになったのですが、
接続の方法にはPro*CとOCIの2つしかないのでしょうか?
また、OCIの場合、connectやselect,insert等をC言語の関数化することは可能でしょうか?

437:NAME IS NULL
07/04/28 23:33:25
>>436
どうとでも出来る。
まずはやってみろ。


438:308
07/04/29 13:33:30
>>310-314

ありがとうございます。
早速やってみたところ、極めて稀にはなったのですが、やはり発生します。
そもそも一セッションしかDBに接続していないのに、
なぜだろうと。。。勢い余ってOracleのサポートにTELしてしまったところ

① SQL traceを取りたまえ。アプリ自体のバグかもしれないし、これで切り分けができるだろう。
② Oracleのバグとは思えない。もし、万が一、バグがあるとするなら、.NET Framework自体のバグかもね。

とのアドバイスをいただきました。
①は確かにそのとおりで納得しました。
が、②の意見は…もし.NET自体のバグだとすると… (((( ;゚Д゚))))ガクガクブルブル!

439:NAME IS NULL
07/04/29 15:37:10
>>438
バグはどこにでもある。


440:NAME IS NULL
07/04/29 15:43:49
.NET Framework本体より、ODP.NETの方が潜在的にバグが多そうだしなw


441:NAME IS NULL
07/04/29 20:44:57
Oracleの資格取ったけど、会社ではDB2なんだよね。
家ではOracleDBを入れてみたいんだけど、もっとも安いOracle製品ってどれ?
値段も教えてほしい。

442:NAME IS NULL
07/04/29 20:50:14
大型連休上げ

443:NAME IS NULL
07/04/29 20:57:17
>>441
URLリンク(japan.cnet.com)

444:NAME IS NULL
07/04/29 21:31:04
>>441
Express Editionがタダ。
一番安いのはPersonal Edition。

Enterprise Editionでしか使えない
いろんなオプションとかも
(ライセンス違反なしで)試したいなら
Personalを買うのが良い。


445:NAME IS NULL
07/04/29 21:57:11
試すだけならEEもダウンロードできるだろ

446:NAME IS NULL
07/04/30 00:12:47
>>443,>>444
ありがとうございます
ぐぐったんですが、DL出来るURL教えてもらえますか?
ORACLEのサイト苦手orz

447:NAME IS NULL
07/04/30 01:05:10
>>446

( ´∀`)σ)∀`) URLリンク(www.oracle.com)

448:NAME IS NULL
07/04/30 01:13:00
日本のサイトならこれ
URLリンク(otn.oracle.co.jp)
プラットフォームはUSより少ないみたいだけど。


449:NAME IS NULL
07/04/30 02:13:10
>>447,>>448
度々すみません。助かりました。
まだDLしてませんが、>>447さんが教えてくださった方は期間は無期限なのでしょうか?



450:NAME IS NULL
07/04/30 06:11:50
開発用だから無期限
日本サイトにある体験版も中身は全く一緒。
そもそもいまのOracleには日本語版というものがないしね。


451:NAME IS NULL
07/04/30 08:25:43
>>449

ボラクルの体験版、もくしは開発者用ライセンスは紳士協定という
ことになっております。
まあ、端的に言うならテクニカルには無期限という事です。

452:NAME IS NULL
07/04/30 12:00:53
>>450,>>451
わかりました。ありがとうございます。
日本語版のをインスコしてみようと思います。
わかり易く説明してくださって本当にありがとうございました。

DB板は本当に紳士な方ばかりで癒されます。


453:NAME IS NULL
07/04/30 13:46:52
>>452

日本語版はないと >>450 で教えてもらったのに、その態度はなんだ。


454:NAME IS NULL
07/04/30 13:55:41
>>453
日本語サイトの・・・ね。行間察して♪

455:NAME IS NULL
07/04/30 17:55:20
行間? どの行とどの行?

アホが沸いてくるのは春だからか。


456:NAME IS NULL
07/04/30 20:35:34
ここからも製品何でも落とせるよ。
URLリンク(edelivery.oracle.com)


457:NAME IS NULL
07/04/30 23:16:41
>>431
レス遅くなってすみません。
元のサーバーの起動終了から次のサーバーの起動開始まで大体3日ぐらいあります。
サーバーはウインドウズサーバーかなんかです。

パソコン詳しくなくてすみません。

458:NAME IS NULL
07/05/01 00:06:50
>>457

鯖がウィンドウズか・・・。
まあ、移行手順としてはこんな感じ?

1. DBをシャットダウンしてコントロールファイル、データファイル、リドログファイル、
init.ora、tnsnames.ora、listener.oraのバックアップをテープやネットワークバック
アップなどの外部メディアに保存

2. 新規鯖の準備が完了後、ボラクルのソフトウェアのインスコ

3. oradim使ってインスタンス(サービス)の作成

4. 外部メディアからバックアップを戻す

459:NAME IS NULL
07/05/01 00:49:55
>>458
おしい。80点。PWD***.oraとか忘れてる。


460:NAME IS NULL
07/05/01 01:41:12
その手順は、ファイルのパスとかが変わらなければという条件付きだな。


461:NAME IS NULL
07/05/01 02:30:04
鯖そのもののウプグレードだし、窓鯖だし、そんなにファイルパスとか
変わらんでないの?
まあ、例え変わったとしてもalter database rename file文打てばいい
だけだし。

462:NAME IS NULL
07/05/01 14:29:27
モノホンDB(HP-UXのOracle 10G オプションは謎)でexpしたdumpファイルを
テスト用DB(WindowsNTのOracle 10G ただのXE)でimpしてます

大半のテーブルはなぜか問題なくimpできましたが
10G XEはパーティション表は対応してませんのでパーティション表だけはimpできません

仕方なくバイナリエディタでパーティション定義の部分を半角空白で潰してからimpしてますが
もっとましなインポート方法はOracle 10Gとパーティション表のオプションを買う以外ないのでしょうか

ちなみにエクスポート側は人様のブツなのでいぢれません


463:462
07/05/01 14:49:52
失礼
WindowsNT→WindowsXP


464:NAME IS NULL
07/05/01 14:53:09
>>462
Personal Edition買え。
XEじゃオプション使えないけど、
PersonalならEnterprise Editionで使えるオプションは
スタンドアロンで使う分においては
ライセンス上すべて使うことが可能。


465:NAME IS NULL
07/05/01 22:35:38
>>458-459
とりあえずテストはうまくいきました。
ありがとうございます。

あとは本番が来るのを待つのみです。


466:NAME IS NULL
07/05/04 21:42:41
10gでデータベースのdropをするとselect * from tabをするとゴミみたいな物ができるのだが、どうやって消せばいいのでしょうか?

467:NAME IS NULL
07/05/04 22:18:08
>>466

purge recyclebin;

468:NAME IS NULL
07/05/05 00:56:48
>>467
サンクス
試してみるよ

469:NAME IS NULL
07/05/07 07:05:40 V4L2+2IZ
初期ぱらに
10.1 なら _recyclebin=FALSE
10.2 なら recyclebin=OFF

470:NAME IS NULL
07/05/10 14:29:13
Pro*Cで質問です。
NUMBER(10)を受け取れるホスト変数は何型で定義すればよいでしょうか?
intでは足りないようです。

471:NAME IS NULL
07/05/10 16:29:03
>>470
int に (多分 long でも同じだろうが) 入りきれないような値はどう頑張っても無理。
数桁ずつ2つに分割して受け取るか、諦めて char [] で受け取るしかない。

472:NAME IS NULL
07/05/11 01:32:29
>>470
プリコンパイルで エラーとか警告とかが出てるとか ?

473:428
07/05/11 04:45:58 EOvcBfqi
oracle10g でNVL関数で不具合らしきものは
聞いた事ありますか?

sqlplusで
aaa:number型
NVL(aaa,999)
aaaがNULLの場合、""の場合、0の場合で
取得結果が一致してしまうことはありますか?


474:NAME IS NULL
07/05/11 06:28:25
Oracleにおいては、空文字列はNULLとして保存される(文字型であっても!)。


475:NAME IS NULL
07/05/11 07:12:48
>>473
Number型に""(空文字列)は入れられないだろwww

aaa=0とaaa=NULLの場合は
明らかにNVLの戻り値は異なると思うが。


476:NAME IS NULL
07/05/11 15:48:27
>>475
入るよNULLとしてw
>空文字列はNULLとして保存される


477:NAME IS NULL
07/05/11 22:14:56
練習目的で
oracle database10g Express edition10.2.0.1.0 を
fedora6にインストールしたのですが、
GNOME端末からsqlplusにログイン?(おかしな表現でしたらすいません)
したところ、方向キーを押すと ^[[D ^[[A ^[[C ^[[B (←↑→↓)
と入力されてしまいます。
検索エンジンで調べてみたのですが、^[[の文字を検索できなくて
解決出来ません。
知恵を貸していただけないでしょうか?

478:NAME IS NULL
07/05/11 22:25:29
こういうのはどうよ。
URLリンク(d.hatena.ne.jp)


479:477です
07/05/11 22:53:17
478さんありがとうございます!
linux も oracle も初めてでうまく出来るか不安でしたが
tar zxvf と make install だけで
SQLPLUS上で方向キーが使えるようになりました。

どうもありがとうございます。

480:NAME IS NULL
07/05/12 14:02:08
Pro*CでBLOB型のカラムのデータを更新するサンプルプログラムは
ないでしょうか?

481:NAME IS NULL
07/05/13 22:03:28
>>480

URLリンク(orafaq.com)
URLリンク(groups.google.com)

482:NAME IS NULL
07/05/14 13:01:34
>>457とは別人なんだけど、>>458-461参考にしてデータの移動をやってみたのだが今度はoracleの起動法がわかりません
やったのは
sysdbaでshutdown
バックアップしておいたファイルをコピー
Windowsの再起動

コピー元はEドライブで下が、コピー先はDドライブです

これから先がよくわかりません
サービスネームなしでsysdbaに入れるようなので入ってstartup;をやると
ORA-02778: Name given for the log directory is invalid
が帰ってきます

この先どうすればいいのでしょうか?

483:NAME IS NULL
07/05/14 13:35:36
>>482
ドライブレターが変わった時点で
その方法ではリカバリできん。

MOUNTしてALTER SYSTEM文発行して、
制御ファイル上のREDOログファイルの場所と、
データベースファイルの場所を書き換えろ。


484:482
07/05/14 15:00:44
>>483
何をやっても起動できません
oracleを削除して再インストールした方が早いのでしょうか?

485:NAME IS NULL
07/05/14 15:03:42
>>484
なにをやっても、って何やったんだよ。


とりあえずコマンドプロンプトで下記のコマンド打って

sqlplus /nolog
conn / as sysdba
startup nomount
alter database mount;
alter database open;

どこまでエラーが出ずに進捗したかまず教えろ。
必ず標準出力をコピペしろよ。

486:NAME IS NULL
07/05/14 22:57:06
>>484

つーか、喪前、ドライブレターが変わったんだから、当然alert.logとかの
出力先の指定をinit.oraの中でもちゃんと変えたんだよな?
ORA-02778: Name given for the log directory is invalidって言われて
んだから、init.oraの中のbdump、cdump、udumpの出力先を良く見て
みろや。


487:482
07/05/15 10:33:39
>>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ドライブに書き換えました

488:NAME IS NULL
07/05/15 10:56:42
>>487
init.oraってここではたぶんspfileを指してる。
で、Oracleが必要としてるspfileなりpfilなりを探して、
見つけられなかったもんだから怒られてる。

startup nomount pfile=init.ora.4142007111722
みたいにして指定するか、
レジストリのORA_<SID>_PFILE確認して
正しい場所に書き換えてからstartup nomountしてみろ。



489:482
07/05/15 19:50:30
>>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を実行してもエラーが帰ってきました。
これはどこを変更するといいのでしょうか?

490:NAME IS NULL
07/05/15 20:06:08
>>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
07/05/16 07:53:27
>>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の場所を登録するのでしょうか?
これも併せてご教示ください。

お願いします

492:NAME IS NULL
07/05/16 09:05:49
>>491
それ、ファイル番号2番のファイルがブロック破損してる。

正常と思われるバックアップから上書きコピーして書き戻しても同様のエラーが発生するなら、
Oracleのサポートに連絡して、復旧手順アナウンスしてもらえ。


493:NAME IS NULL
07/05/16 09:08:10
>>491
リカバリしてもダメ、ってのは、
RECOVER DATAFILEを実行したんだよな?
それで>>492試してダメならバックアップしたファイルが壊れてる。


494:NAME IS NULL
07/05/16 12:18:40
>>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
07/05/16 14:58:42
>>493
recover datafileをoradataの中の*.DBFファイルに対して実行しました
その後、alter database openを実行すると、REDO0*.LOGがEドライブにないと警告されました
そこでalter database rename fileを実行後、alter database openを実行したところ、動作しました
データの中身も確認できるようになりました

>>494
create spfileを実行しました

皆様、ありがとうございました

496:482
07/05/16 16:47:13
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のデータのバックアップをとって再インストールした方がいいのでしょうか?

497:NAME IS NULL
07/05/16 22:17:25
>>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;


498:NAME IS NULL
07/05/17 18:08:22
この頃ハマったこと。(これ、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
07/05/17 18:45:15
>>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
07/05/17 18:49:56
その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>

501:NAME IS NULL
07/05/17 19:46:23
> ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode

読める?


502:NAME IS NULL
07/05/17 22:23:20
>>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;


503:NAME IS NULL
07/05/17 23:40:04
それとRMANベリフィケーションは直すためのものではなく、あくまでベリファイを
かけるものだから。
ここから壊れたブロック先を特定して、そいつに「Unreadable」のマーカーをつける。
そうしたらそのブロックに入っているデータは読めないものの、無事な部分は
読める様になる。
そうなれば後はcreate table as selectなり、export/importなりで無事な部分だけを
救い出せばいい。
壊れたブロックに入っていたデータはバックアップが無い以上、復旧の手立ては無いよ。
これでバックアップの重要性を認識しろ。


504:NAME IS NULL
07/05/18 16:19:11 BLRq5Xmu
初歩的な事なのですが質問させてください。
クライアント(私)は10gなのですがサーバー側は9iです
exp user/pass@servername file=c:\test.dmp
でエクスポートしようとしたのですが

EXP-00056: Oracleエラー942が発生しました。
ORA-00942: 表またはビューが存在しません。
EXP-00000: エラーが発生したためエクスポートを終了します。

このようなエラーが出るのですがどなたかわかりますか?
自分なりに調べたのですがわからないままです^^;
もちろんテーブルなどの中身はしっかりあります。
ちなみに10gのサーバーからのエクスポートは普通にこのコマンドで出来ました。
クライアントとサーバー側のバージョンが違うとエクスポートが出来ないという
事はありますか?初歩的な事ですいません。お願いします。

505:NAME IS NULL
07/05/18 16:34:04
なにをエクスポートしたいのですか?

506:NAME IS NULL
07/05/18 16:35:05
DB全体のです。

507:NAME IS NULL
07/05/18 17:56:38
>クライアントとサーバー側のバージョンが違うとエクスポートが出来ないという事はありますか

ある。


508:NAME IS NULL
07/05/18 18:01:16
>>504
サーバにある9iのexpでダンプとれ。


509:NAME IS NULL
07/05/18 23:17:48
>>504

基本的に異なるバージョン間でのexpは、低いバージョンのものを使って
行うことになっている。
つまりあなたの場合には9i側のexpを使わないとならない。
impは10g側のを使えばok。


510:NAME IS NULL
07/05/19 09:13:12
いつの間にかクライアントPC自らが質問を書き込むことが出来るようになったとは驚き。

511:NAME IS NULL
07/05/20 01:05:37
鯖側がSolaris/Linuxで、クライアントがウィンドウズって場合、sql発行するのもSQL*Plusのウィンドウズ版が必要?

512:NAME IS NULL
07/05/20 01:27:54
>>511

Telnetで鯖にログインすればいいんでないの?
どうしてもクライアント側でSQL*PLUS立ち上げたかったら、確かにSQL*PLUSの窓版が
必要だけど、EEのCDとか買えば窓のクライアントとかは同梱されていたりするけどね。

513:NAME IS NULL
07/05/20 03:01:45
インスタントクライアント(windows&linux)がある。
開発用途に限定するならば、モノホンもDLできるし。


514:482
07/05/21 09:11:18
>>502
shutdownができませんでした

データの復旧をあきらめましたので、現在、エラーがでたり、OSのスタート時にサービスの起動でエラーがでる状況をなおしたいのですが、何か方法はありませんか?

515:NAME IS NULL
07/05/21 09:16:57
>>514

shutdown abort使え。
O/S関係のエラーだが、サービスはoradim使って作成したんだろうな?

516:482
07/05/22 08:15:48
>>515
shutdown normal/immediateからでしかarchivelogにできないのですが

サービスはインストールした状態のままです

517:NAME IS NULL
07/05/22 11:17:45
>>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
07/05/22 11:21:26
>>517
そうやってもimmediateで処理がずっとストップするのですが

519:NAME IS NULL
07/05/22 12:08:09
「ですが」ばっかりだけど少しは自分で考えたのか?

荒らしにしか見えんぞ。

520:NAME IS NULL
07/05/22 16:03:37
>>518
修復するには今までの作業と同じ位の作業量は残っているな
今は序盤もいいとこだし、素直に再構築しろ

521:NAME IS NULL
07/05/22 21:23:27
>>518

バックアップ無くてぶっ壊れてるんだから仕方ないだろうな。
まあ、出来るとしたらshutdown abortして、startup mount、recover database、shutdown、startup mount
だったらいくんじゃねぇか?

いずれにせよあなたの技術レベルではこの先のことも理解できるとはとても思えないが・・・。

522:NAME IS NULL
07/05/22 23:57:37 fABphS2n
新社会人なのですが、来月から配属されるプロジェクトを選択しなければいけません。(初配属です)
プロジェクトの一つにPL/SQLを使用したOracleのERPパッケージの開発プロジェクトがあるのですが
正直悩んでいます。
研修中にSQLをほんの少しと、Javaを習っていました。ちなみに中小独立ITです。

EBSが何か、どんなパッケージ開発なのかなどの知識は全くないのでとても幼稚な質問になってしまうのですが

・PL/SQL言語を学んで、この先役に立つのか(Oracleプロジェクトを抜けた後にも活かせるのか)
・PL/SQL言語の大変な所
・ERPパッケージ開発のメリット・デメリットは

などが気になる点です。非常に抽象的な質問で、一概には言えないことばかりだと思いますが
個人的な意見で良いので是非お願いします。
サイトや本などで調べてはみたのですが、現場の技術者からの意見が気になるので、ここで質問させて頂きました。

523:NAME IS NULL
07/05/23 00:31:43
>>522
中間管理職辺りで誰が仕切っているかが重要
COBOLerの下に配属されなければどこでも同じ

ただ優秀なリーダーの下にしか、全ての意味で
おいしいプロジェクトは来ないから
バカマネ/リーダーにつくと、もれなく辞めたくなるだろう

524:NAME IS NULL
07/05/23 00:34:32
他の案件に何があるか判らないから一概に比較は出来ないけど,
PL/SQLの長所は互換性,Oracleが動く環境なら大概動く.
P○PみたいにマイナーVerUpしただけで動かなくなるなんてことは無い.

PL/SQL言語の大変なところは,互換性の裏返しで構文が古臭い.
業務ロジックを実装するには十分だと思うけど,
それ以外のことをやろうと思うと途端に敷居が高くなる.

ERPパッケージ開発は基本的に有り物ベースで作るだろうから,
仕事としては退屈.多分仕様通りにパッケージの部品をくっつけて終わり.

>>ちなみに中小独立IT
 ここが一番不安なポインヨ.
 さっさと覚えること覚えて,ジョブチェンジ考えとけ.

525:NAME IS NULL
07/05/23 00:51:47
>>523
うちの会社のリーダーはコボラーではなかったとおもいますが、
発注先の会社の管理職まではわかりません。

>>524
丁寧に答えて頂いてありがとうございます。

>仕事としては退屈.多分仕様通りにパッケージの部品をくっつけて終わり.
そうなんですか。ベースがあって、それを相手に合わせてカスタマイズっていうのがメインだというのは
知っていたのですが、やっぱり有り物をくっつけたりするだけなんですね。
面白そう!っていうイメージはあんまり沸かないですね・・・

中小独立ITなので、3~5年後くらいで転職するとつもりでいるんですが、
その時に転職の武器になる言語なのかなーという不安があります。

526:NAME IS NULL
07/05/23 02:41:12
>>524
>>ちなみに中小独立IT
> ここが一番不安なポインヨ.

大手ほどなんじゃこれ?っていう若手が多いし&辞めない
傘下のグループ企業の若手の方は優秀だけど良く転職してるな
大手は情報だけは集まるから全社レベルの知識データベースで
仕事できてるのを自分の能力と勘違いしてるんだよね

527:NAME IS NULL
07/05/23 07:35:06
>>522

PL/SQLはOracle関連の製品ではそれなりに重宝されるが、それ以外では
全く潰しが効かないという諸刃の剣。

でもOracle EBSの案件って最近の日本だとそれなりにあるものなのか?
4年ぐらい前の情報だが、俺が知っている大手でOracle EBS使っていたのって
日本だとCanonとRICHOとかぐらいだった気がしたが・・・?

まあ、その反面、欧州および北米では値段の安さも手伝ってか、Oracle EBSが
結構使われていたりするよ。
俺は日本にいた時には純粋にOracle DBだけで生きていたんだが、海外に出て
否応無くEBSを覚えざるを得ない状況になった('A`)

最もOracle EBSは腐ったアプリという意見は今でも変わらないカーッ(゚Д゚)≡゚д゚)、ペッ

528:NAME IS NULL
07/05/23 13:33:10 8Pm4t5N2
質問です。
ORA12154とかORA00065とか、
番号を入力するだけで検索できるサイトがあれば教えてください。

529:NAME IS NULL
07/05/23 14:50:02
OTNくらい知っとけ。
  URLリンク(otn.oracle.co.jp)

尤も、エラーメッセージのPDF検索した方が早いかもな。

530:NAME IS NULL
07/05/23 21:07:32
>>528

oerr コマンドも覚えておくといいかもね。


531:NAME IS NULL
07/05/23 23:02:31
まぁ、マルチなんだどな。

532:NAME IS NULL
07/05/24 00:04:02 sIsyqRlw
ありがとうございました。

533:NAME IS NULL
07/05/24 18:25:12
ネタじゃなくてマジでわからんので教えてください。
STATSPACKってなんて読むの?すたっつぱっく?


534:NAME IS NULL
07/05/24 18:38:55
しゅたっつぱっく

535:NAME IS NULL
07/05/24 19:20:17
>>533
スタットスパック
スタットスパンキングするともいう

536:NAME IS NULL
07/05/24 22:20:03
>>533

マジレスしてやるが、スタッツパックだ。
少なくとも日・欧・北米ではそう読んでいる。

537:533
07/05/25 14:41:21
ありがとうございます。すたっつぱっくでいいみたいですね。

538:NAME IS NULL
07/05/26 01:33:30
OTNの有償プログラムって契約してる人居る?
あの開発ライセンス使ってモノ作っても運用に回したかったら
開発した環境用の正規ライセンス購入しろ、みたいになってて
存在意義がわからなかったんだけど、何が目的で加入してるの?

539:NAME IS NULL
07/05/26 01:39:51
メディアがもらえるってことじゃね?
OTNを使わずに正規ライセンスを買ってもメディア代は別だし。


540:NAME IS NULL
07/05/26 01:53:37
>>538
フリーランサーがサポート情報にアクセスできるからとかじゃないか?

541:NAME IS NULL
07/05/26 01:59:35
仕事でやってるんなら、アカウント借りりゃ済むやん。


542:NAME IS NULL
07/05/26 03:03:05
>>541
派遣ならいいだろうけど
客のすべてが保守契約してないわな

543:NAME IS NULL
07/05/26 04:44:55
そもそも保守契約無しの客って地雷だと思うが。問題が起きたときノンサポートじゃん。
OTNの開発ライセンスで運用しちゃってる割れ廚?

544:NAME IS NULL
07/05/26 15:31:32
>>543
よく考えろよ、縁故なら別枠だろうが
保守契約できる位に金がだせるところはフリーなどが入る余地はない
個人で受注請負で入り込めるところといえば
オラクルをビックカメラとかで買ってるようなところだろ

545:544
07/05/26 15:45:58
あ、ちなみにフリーでもないしOTNの開発者ライセンスも持ってないぞ
買うとしたら、「それくらいしか」使い道がないだろw

546:NAME IS NULL
07/05/26 19:32:21
Oracleを一から勉強したいんですけど、
基礎的なことが載っているサイトを知りませんか?
ググってもそれらしきサイトが見つからなくて困ってます。

547:NAME IS NULL
07/05/26 20:17:48
>>546

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


548:NAME IS NULL
07/05/27 16:26:41
オラクル廚がフリーになっても食えないってことだな。

549:NAME IS NULL
07/05/27 21:15:48
>>548
オラクルだけじゃ食っていけないだろうな。


550:NAME IS NULL
07/05/27 23:35:40
オラクルに入社すればいいじゃん

551:NAME IS NULL
07/05/29 14:26:22 UJceAzrI
SELECT QQQ.CURRVAL FROM DUAL;

ORA-08002: QQQ.CURRVALはこのセッションではまだ定義されていません

なぜこんなエラーが出ますか

552:NAME IS NULL
07/05/29 14:39:46
>>551
日本語でOK

つかQQQってどう定義されてるわけ?

553:NAME IS NULL
07/05/29 15:00:49
>>551
あなた、なぜ、ググル、しませんか?

554:NAME IS NULL
07/05/29 15:04:19
>>551
QQQがSEQUENCEと仮定すると、
作ったばっかりの時には
NEXTVALしないとCURRVALは取れないよ。
つ~か、まずググれよwww


555:NAME IS NULL
07/05/29 17:50:02
select months_between(sysdate,'07-9-27') from dual;

指定した付きが向こうですとか出ましたけど、どういうことなんでしょうか。

556:NAME IS NULL
07/05/29 18:50:07
>>555
TO_DATEで日付型にしてやれよwww


557:NAME IS NULL
07/05/29 20:25:40
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へコピペするとプロシージャ作成できてしまいます。
何故エラーが出るのか解りません。


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