Oracle 質問総合スレ
..
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へコピペするとプロシージャ作成できてしまいます。
何故エラーが出るのか解りません。
558:557
07/05/29 20:28:49
>>557
文章が途中になってしまいました。
get PREV_DAY.sql
/
と書いたファイル createProc.sqlを使って
sqlplus scott/tiger @createProc.sql
とやるのが理想なんですができないでしょうか。
まずは何故エラーなのかを知りたいのですが解りますでしょうか。
559:NAME IS NULL
07/05/29 23:24:22
>>557
バージョンぐらい書け。
9i R1だったらバグにヒットしている可能性が大。
560:557
07/05/30 16:25:45
>>559
すみません。10gのXEです。
561:NAME IS NULL
07/06/01 01:58:41
うちの10gXE win32 じゃ、問題なく実行できるぞ。
562:NAME IS NULL
07/06/05 07:14:04 S2M66NQt
Oracle8iのデッドロックについて教えて下さい。
(1)複数レコードのテーブルAを、複数並列するdelete テーブルA;した場合、デッドロックが発生する可能性はあるのでしょうか?
(2)同じくテーブルAにdelete テーブルA;と、並列して、例えばdelete テーブルA where rownum = 3;->rownum = 1->rownum = 2の計 3 SQLを順番に実行するトランザクションがあった場合、デッドロックが発生する可能性はあるのでしょうか?
よろくしお願い致します。
563:NAME IS NULL
07/06/05 07:23:53
>>562
デッドロックは一車線通行の出会い頭で絶対にバックしない後続車が
双方にきているような状況で譲り合いができないときに発生する。
つまり、その例では発生しない。
564:NAME IS NULL
07/06/05 07:48:39 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は気にしないで良かったのですね。
ほっとしました。ありがとうございます。
565:NAME IS NULL
07/06/05 12:17:17
create user test
identified by test
default tablespace user_data
temporary tablespace temporary_data
quota unlimited on user_data;
表領域user_dataは存在しません
ってどういうこと?
566:NAME IS NULL
07/06/05 16:25:29
>>565
そのままだと思うが?
user_dataって票領域、作成したか?
567:NAME IS NULL
07/06/05 17:44:28
デフォルトで存在しているものと思ってましたが
568:NAME IS NULL
07/06/05 17:58:07
>>567
デフォルトで存在するのはUSER表領域だろ。
569:NAME IS NULL
07/06/05 17:58:40
>>567
ちがった。
USERS表領域だ。
570:NAME IS NULL
07/06/05 22:09:17
USERS 表領域はデフォルトでも存在しないが。
CREATE DATABASE 文を見直してみよう。
571:NAME IS NULL
07/06/06 19:38:02 OUHu+6Q0
COL_A,COL_B,COL_Cの列がある表のCOL_Aにインデックスが貼ってあって、select文のwhere句でCOL_A='hoge' AND COL_B='foo'と記述した場合に、インデックスは効きますか?型はあっている前提です。
572:NAME IS NULL
07/06/06 19:53:06
>>571
RBO? CBO?
いずれにせよ、実行計画とって
確認してみた方が早いよ。
573:NAME IS NULL
07/06/06 20:31:36
>>571
基本的に言ってCOL_AのIndexのRange Scanで絞られるはず。
まあ、>>572が言っているみたいに実効計画取ったら一発だけどね。
574:571
07/06/06 20:46:52 hrrOQWwo
>>572,573
レスありがとうございます。
10gなんで、CBOだと思うのですが…。
実際やってみないと判らない…ということですね。
最大○億件と見積もられているテーブルに対して、
検索画面をつくれ…つう、要件で、けんさく条件が多いんです。
そこで、必須条件を設けて、ソコにINDEX貼ってほかの任意条件は
どうするよ?ということで、、。
必須項目のカラムにだけはればINDEX効くだろう派と、いや、効かねぇんじゃない
派で意見がまとまらず…。
効く確証はないっつうことですね。
ん〜〜困った。
575:NAME IS NULL
07/06/07 00:37:41
>>574
何億件というからには当然パーティショニングしているんだよな?
576:NAME IS NULL
07/06/07 02:39:57
>>574
必須条件を1つ入れても
5つに分類しかされていないとか
偏りが大きいとかだとすげー意味ない
577:NAME IS NULL
07/06/07 05:21:22
>>574
CBOならコストに依存して、
INDEXの利用に関しては固定的ではないから、
オプティマイザの判断次第。
・・・にしたって、>>576の言うようにINDEX項目にするデータ自体に
カーディナリティが低いなどの問題が有れば、意味無いし。
578:571
07/06/07 08:46:04 FbZnvSWG
当初、この表に対して検索するという要件はなかったので、費用面からパーティショニングオプションをつけてなかったんです。
どうしても、オプション無しではダメそうであれば、オプション導入も考慮するって方向で、まず、色々調査してます。
索引貼る対象の必須項目はバラツキが大きく、かなり絞られるかと思います。
579:NAME IS NULL
07/06/07 09:13:19
>>578
> 索引貼る対象の必須項目はバラツキが大きく、かなり絞られるかと思います。
だったらINDEX作るだけでいけるように思うがな。
10gなら定期的に統計情報とるようになってるはずだし。
580:NAME IS NULL
07/06/07 11:04:19
億もある表に対する検索は正直言ってパーティション無しでは辛いと思うぞ。
場合によってはIOT表の導入とかも考えておいたほうがいいだろうな。
581:NAME IS NULL
07/06/07 11:23:53
>>580
そうかね?
意外と何十億件くらいなら捌けるもんだが。
582:NAME IS NULL
07/06/07 12:16:35
>>581 同じ土俵にいて良いものと悪いものがあるぞw
参照しない約束、約束〜って、レコード数だけでなくカラム数もレコード長も遠慮なしに
情報てんこもりで非正規化状態の過去ログテーブルかなんかだろな。
…どう見てもヒアリング不足です。本当にありがとうございました。
583:NAME IS NULL
07/06/07 12:23:51
>>582
> 情報てんこもりで非正規化状態の過去ログテーブル
俺が扱ってるのは似たようなもんだがwww
3局からの計測データを数秒周期で取り込んで、
かたや2台の表示用PC上で
10秒周期で最新データの表示してるだけだがな。
584:NAME IS NULL
07/06/07 12:30:11
>>583
そんな数値データだらけのテーブルならオンメモリでもいけそうだ
585:NAME IS NULL
07/06/07 18:26:12
社内の顧客管理用のマシンが最近以上に重いのだけど、Oracleのせいなのか
どうか切り分けたいんだけど、言いベンチマークソフトってないっすかね?
586:NAME IS NULL
07/06/07 18:45:18
>>585
GASAIREでモニタリングしてみることをお勧めする。
587:571
07/06/07 20:03:48 eZC/8BeQ
諸氏
レスありがとうございました。
とりあえず、
一番入力されるであろう項目にインデックスを張る。
SQL記述に関する規約を作成し、ベンダーに渡す。
開発環境構築名目でサーバを用意し、サンプルデータで実行計画をとる。
チューニングしつつ、画面設計し、顧客の説得をはかる。
で落ち着きそうです。
御世話になりました。
588:NAME IS NULL
07/06/07 20:27:58
>>585
マシンのタイプぐらい書いたらどうだ?
589:585
07/06/08 09:37:56
>585
失礼しました。
使用しているマシンは最近刷新しまして、DELL PowerEdge 2950で、OSはRH ES4で運用しています。
情報自体は2万件程度で、個人の情報としてはそれほど大きいモノではないはずなのですが、考えていたほど
レスポンスが上がってきません。
無論、ネットワーク関係も調べてみたのですが、問題はありませんでした。
まだ検証しないといけない部分は多いのですが、Oracle自体も疑っていこうとベンチマークソフトを探して
ました。
590:NAME IS NULL
07/06/08 10:20:45
>>589
マシン自体のスペックを測りたいのか?
それともDBベンチマーク取りたいのか?
DBベンチマークソフトならTPC-Cとかあるけどな。
CPUを計りたいのならSPECJBBなんかが使える。
レスポンスが悪いとかって言ってるけど、ディスクI/Oとか見てみたのか?
STATSPACKはどうだった?
タコなSQLが流れていて、全豹走査が置きまくりでレスポンス悪いなんて
こともあるぞ?
591:NAME IS NULL
07/06/08 10:39:35
ベンチマークってのは、障害原因を探るためのものじゃないし。
まずは、topとかsarとかパフォーマンスモニタでほんとにOracleのプロセスが原因かどうか見極める。
592:585
07/06/08 11:11:00
>590-591
確かにそうですね。(汗)
もうちょっと障害発生を切り分けてみようと思います。
ありがとうございました。
593:NAME IS NULL
07/06/09 04:31:22
Oracle DB 11g R1が6月11日にリリースされるそうな。
取りあえずRACでも組んで遊んでみっかな。
594:NAME IS NULL
07/06/10 22:21:48
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期といった出力)
調べても、例を使ったサイトとかが中々見つからず、困り果ててます。明日中に解かないといけないので、どうか助言をお願いします。
595:NAME IS NULL
07/06/10 22:53:17
作業 お見積り票
ニコニコ・インテグレーター
今回の作業の
> PG 1名: 8h 拘束
> \350 x 8h : \2,800
プロジェクトマネージメント料
> \70,000 : \70,000
特別 お値引き
> \2,800
税込み計: \73,500-
596:594
07/06/10 23:00:59
@とAは自己解決なんとかできました。
BとCが未だ謎ですので、アドバイス等ありましたらお願いします
m(_ _)m
597:594
07/06/10 23:02:49
書き忘れです。Bの「この結果」っていうのは、Aの出力結果のことです。
連続投稿失礼しました。
598:NAME IS NULL
07/06/10 23:14:53
>>597
ヒント
insert into c select a.col2, b.col2 from a,b where a.col1=b.col1 and .....;
まあ、ようはinsert into c [2で使ったSQL]でいける。
599:NAME IS NULL
07/06/11 22:44:26
現在、汎用系SE(?)PGやってます。(基本的にはコボラーです)
将来の不安解消のための手段のひとつとしてOracleの勉強をしようかと思っています。
そこで質問があるのですが、現在、システム導入に当たって使用されるOracle
って10gがほとんどでしょうか?
私が関わったことある平成15〜19年導入システム(汎用機→オープン系・1プロジェクトです。)
ではOracle8iが使われていました。
現在も8iや9iの需要はあるのでしょうか?保守はあると思うのですが…
新規導入は基本的に10gになるのでしょうか?
わかる方、申し訳ありませんが、教えて下さい。
よろしくお願いします。
600:NAME IS NULL
07/06/11 22:49:23
>>599
今なら新規導入は9iか10gになると思うよ。
そのうち11が出るから、9iも近々消えるだろうけどな。
601:NAME IS NULL
07/06/11 22:54:37
Windows版ならわざわざ9iにするメリットもないし。
Unix版でもやはり11が出ようかという時期に9iってのもなんだし。
602:NAME IS NULL
07/06/11 23:04:20
>>599
Oracle8iのサポート期間って終了しませんでしたっけ?
今からの新規案件は10gRelease2でしょうね、やっと安定した感があるので暫くは続くと思われです
(先のことなので予想半分ですが、11のRelease2が安定するまで)
603:599
07/06/11 23:57:22
>>600-602
アドバイスありがとうございます。
10gを勉強することにしました。
604:NAME IS NULL
07/06/12 11:26:49 oQuF+3Qh
保守なのでoracle8iを使ってます。
新しい登録するべきデータがテーブルの項目の桁数より大きくて困っています。
主キーに登録するデータではないのですが、
char型の項目の桁数を変更する方法はありますでしょうか?
方法がありましたら、検索のヒント又は関数名を教えてください。
605:NAME IS NULL
07/06/12 12:00:43 Y5HKReaS
くだらない質問なんですが
NVLって何かの略称ですか?
NVLだと言葉から意味がいまいちつかめなくてイメージがわかないんです
606:NAME IS NULL
07/06/12 12:58:59
>>605
Null VaLueの略だろ。
つまりNull値を指定した値で置き換えるという意味だ。
607:NAME IS NULL
07/06/12 13:07:40 Y5HKReaS
>>606
お陰で疑問が解けました
ありがとうございます
608:604
07/06/12 13:17:37
結局、別の項目を追加して放り込んでおくことにしました。
すみませんでした。
609:NAME IS NULL
07/06/12 14:01:43
>>605
Null-Value-Logic だよん
610:594
07/06/12 22:40:59
ヒント有難う御座いました。無事に解けました。
今現在は、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「URLリンク(homepage1.nifty.com)」ここの、MFCでSELECTのソースです。貼ったのは。)
使用ソフト(VisualStudio2005、Oracle10g(ver.10,1,0,2,0))
611:NAME IS NULL
07/06/13 03:00:54
>>610
つ〜かさ、ODBCでDB繋げにいくんだったらDSNの設定したのかい?
スタート→設定→管理ツール→データソース(ODBC)でまずは繋がる様にしないと
ならんだろ。
そのためにはtnsnames.oraの設定もしないとならないと思ったぞ。
そこで初めて設定してたDSN名をstrCON = "DSN=dsn;"の所で指定できる。
612:NAME IS NULL
07/06/20 22:58:28
オラクルマスターシルバーを取得したいと考えているのですが
特にお勧めの予備校?ってありますか?
埼玉浦和所沢 東京池袋新宿辺りでいいのがあったらいいなと思っています
どうかご教示くだsだい。お願いいたします。
613:NAME IS NULL
07/06/20 23:11:52
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
のように出力されるものだと思うのですが・・
614:NAME IS NULL
07/06/20 23:22:15
column format ID a5
615:NAME IS NULL
07/06/20 23:24:12
まちがえた
column ID format a5
だな。
616:NAME IS NULL
07/06/20 23:43:27
9iの頃は空白は出力されなかったのですが、
10gではcolumnコマンドを使って、カラム毎に設定が必要ということですか?
617:NAME IS NULL
07/06/20 23:45:24
>>616
UNICODE使ってないか?
618:NAME IS NULL
07/06/21 00:09:14
文字コードはOS、oracle共にEUCです。
619:NAME IS NULL
07/06/21 00:14:20
>>618
端末の文字コードじゃなくて、DBの方ね。
620:NAME IS NULL
07/06/21 00:22:35
EUCです。
621:NAME IS NULL
07/06/21 02:27:18
>>612
シルバーぐらいだったらオラクルマスターの参考書買って勉強した方がいい。
622:NAME IS NULL
07/06/21 02:42:24
>>613
俺の環境では9iも10gも同じように表示されたぞ?
ちなみにクライアントも10gだったけど。
623:NAME IS NULL
07/06/21 09:14:26
昨日から oracle.co.jp に繋がらないけどメンテ中?
624:NAME IS NULL
07/06/21 11:03:19
>>623
普通に繋がるけど?
625:NAME IS NULL
07/06/21 11:29:35
パブリックシノニムの一覧を表示する方法を教えてください
626:NAME IS NULL
07/06/21 13:34:23
>>624
こっちもルーティングが変わって繋がるようになった。
tracertを比較するとプロバイダの出口付近で詰まってたみたいでした。
627:NAME IS NULL
07/06/21 18:25:56 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
07/06/21 18:36:10 p/jATL4d
JapanのIDしか持ってない、とか。
ていうかUSの新規登録サイト、動かないっぽいんだけど。
629:NAME IS NULL
07/06/21 23:22:26
>>625
select * from dba_synonyms where owner='PUBLIC';
で、いいじゃね?
630:NAME IS NULL
07/06/23 01:20:19
かなり初歩的な質問と思うのですが、Oracleでエスケープすべき文字は「'」
(シングルクォート)だけでしょうか?
Oracleのバージョンは10.1.0.2です。
631:630
07/06/23 01:25:22
付け足します。
insertやupdateで文字列を追加、更新したりする時です。
632:デフォルトの名無しさん
07/06/24 23:57:45
>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
07/06/25 23:59:43
>>632
俺、VBから離れてもう7年以上経っちまってんだけど・・・?
とりあえずinsert、update、delete処理を打った時に、更新行が0という戻り値だったら
Counterを増やすという処理でいいんじゃないのか?
634:NAME IS NULL
07/06/28 11:15:49
VISTAからオラクルDBにODBC接続するとき、Microsoft ODBC for Oracle でないと
対応していないソフトがあって、XPの端末なら問題なく接続できるんだけれど
VISTAで同じ設定で接続するとエラーになって接続できないんだけれど
これは、ODBCドライバーのバージョンかなにかに問題があるのでしょうか?
接続先のOracleのバージョンは8,9の二つを試したけれど両方ともだめでした。
ちなみにOracle ODBC Driverなら接続できました。
635:NAME IS NULL
07/06/28 12:39:09
エラーの内容は?それを見ないと判断できんぞ。
636:NAME IS NULL
07/06/28 12:48:35
'Microsoft ODBC for Oracle' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
637:NAME IS NULL
07/06/28 13:17:13
エクセルからODBC接続しようとした場合、データソース名やユーザ名、パスワードを入力後
接続のテストボタンをクリックすると”プロバイダの初期化中にエラーが発生したため、
接続のテストに失敗しました。Oracleエラーが発生しましたが、エラーメッセージは
Oracleから取得できませんでした。”というメッセージが出ます。
まったく同じ条件でXPでやると問題なくいきます。
条件的に違うのは、ODBCドライバーのバージョンくらいです。
638:NAME IS NULL
07/06/28 14:16:45
ODBCといっても、ADO-ODBC経由もあるよね?
大して違わないかもしれないけど、やってみたら?
639:611
07/06/29 03:26:19
>>634
( ´ー`)つPatch 5337014: 10.2.0.3 PATCH SET FOR ORACLE DATABASE SERVER
640:NAME IS NULL
07/07/02 12:26:34 EJs3Qu6o
javaからoracle-xe 10iに接続しようとして
「ORA-12705: Cannot access NLS data files or invalid environment specified
」
というエラーメッセージがでます。
環境変数は確認して問題ないと思うんですが、
データベースのキャラクタセット、各国語キャラクタセットを確認すると
AL32UTF8、AL16UTF16と一致していませんでした。
これが原因なんでしょうか?
641:NAME IS NULL
07/07/03 05:25:55
>>640
鯖のタイプぐらい書け。
稀にだが、NLS関係の環境変数の設定で$ORACLE_HOMEとかが含まれていると
駄目だったりすることがある。
絶対パスで環境変数を指定すれば大丈夫だったりするが・・・。
642:NAME IS NULL
07/07/04 00:41:06
そのジャバで環境変数だけ出力するプログラム書いて実行した結果を貼れ。
643:NAME IS NULL
07/07/08 06:47:23 GkdOGLBy
質問です
DB:oracleXE 10g
使用ツール:common SQL Environment (ver.1.59)
上記の環境で、select lengthb('ああ') from dual
を実行すると、結果が4になると思いきや、6になります。
これは何が原因なのでしょうか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4331日前に更新/231 KB
担当:undef