質問テンプレっぽいもの
■どの様な問題が起きて、どんな結果を得たいのか?
■フロントエンド、バックエンドどちらの問題か?
■フロントエンドのプラットフォームは何か?
■バックエンドのプラットフォームは何か?
■フロントエンドはどの様なドライバ/ソフトウェアを使用してアクセスしているか?
■Oracleのバージョンは?(バージョンと一言で言っても、フロントエンドなのかバックエンドなのか色々ある)
スレ番号が…
5 :
NAME IS NULL:05/03/19 12:09:56 ID:LLPZ50M8
>>1に前スレURLない上にキチガイ文章入ってるし、
Session3で立て直しても文句言われないと思うが
6 :
NAME IS NULL:05/03/19 15:57:38 ID:c/c0RD8l
質問させてください。
DBのインストール中に「OCRの初期化に失敗しました」とメッセージが出ました。
そのせいかOracleCSServiceが開始中のまま開始してくれません。
HP掲示板で検索してみたのですが、同じ話題はあるものの解決策がありませんでしたので
ここで質問させていただきます。
RAC環境では使えないとかどうのこうのという話もあるようですが、実際どうなのでしょうか。
問題なくインストールできる方法があれば教えてください。
機種 NEC Lavie
OS WinXP Pro
Oracle10g
7 :
NAME IS NULL:05/03/20 16:18:58 ID:Ack6dFl6
教えてください。
Oracle 8.1.7→9.2.0.4でインポートエラーが出ます。
「要求されたキャラクタ・セットの変換(830から832)はサポートされていません。」
というものですが、原因がわかりません。
v$nls_parameters,sys.props$の内容はどちらも同じであることは確認済みです。
他にどのような可能性があるでしょうか?
>>7 exp/imp時のNLS_LANGの値を同じにしてやり直してください。
一時表に対してmerge文使えますか?
10 :
NAME IS NULL:2005/03/21(月) 19:53:09 ID:4ffqKeKS
>>6 DB作る前にO/Sのグループとして「ORA_DBA」を作って、そこにインストール
ユーザーを加えておけ。
>>9 何で「一時表だとマージできないかも」と思ったか知らんが
そりゃ出来ますともさ。
>>11 Oracle 9i って知ってる?
14 :
10:2005/03/25(金) 18:39:22 ID:???
はずかすぃ。
appendヒントつけてました。
>12
ありがと
15 :
NAME IS NULL:2005/03/25(金) 23:57:11 ID:XYLAxrVG
ORA-04031について質問させてください。
マシンの物理メモリのサイズによって、SGAのメモリアロケートなどは変化するのでしょうか?
[現象]
2つのDBサーバ(どちらもOS:Solaris8、DB:9.2.0.1)で物理メモリのみ異なる環境(1GB、4GB)
があり、開発用(1GB)と試験用(4GB)で分けています。
WEBアプリからマテリアライズドビューのリフレッシュ処理を実行しているのですが、
メモリが4GBの環境だけ、ORA-04031が発生してしまいます。
[実行コマンド]
dbms_snapshot.refresh('T_TABLE','f'); //高速(差分)リフレッシュ
[initパラメータ]
java_pool_size= 134217728
large_pool_size=67108864
shared_pool_size=134217728
他はほとんどデフォルト値
[サーバ構成]
共有サーバ構成
[調査]
V$SGASTATをモニタすると、ORA-04031が発生する4GBのlarge poolの空き容量は
実行前:67100045 実行後:329752
となっており、エラーの発生しない1GBでは
実行前:66964336 実行後:22589752
となっていました。
これは、登録件数(1,5,100,8000件での差分リフレッシュを実行)で、ほぼ同じ空き容量でした。
また、リフレッシュ処理を完全リフレッシュ(dbms_snapshot.refresh('T_TABLE','c'))
にすると、4Gの環境でもエラーは発生せず、large poolの空き容量も変化がありませんでした。
このような現象について、
どなたかご存じの方がいらっしゃったら、是非ご回答をお願いします。
宜しくお願いします!<(_ _)>
>>15 LARGE_POOL_MIN_ALLOCの値はどげんなっとると?
>>15 SHARED_POOL_RESERVED_MIN_ALLOCの値も教えてけろ?
18 :
15:2005/03/26(土) 08:55:10 ID:TIyQX7Ji
>>16-17 うっ、二つとも知らない値です。
これらの値はどこで見ることが出来ますか?
20 :
15:2005/03/26(土) 10:02:45 ID:???
>>19 うう、原因がわからないと変更できないんですよぅ。。
21 :
NAME IS NULL:2005/03/26(土) 10:45:27 ID:4xoY5sZt
専用サーバモードで動いているか、共有サーバモードで動いているか、は
どうやって見分けるのですか?
また、どうやって切り替えるのですか?
>>21 v$sessionのSERVER列で確認できます。
設定は、
(1)tnsnames.oraに
(SERVER = DEDICATED) を設定すると専用サーバモード
(SERVER = SHARED) を設定すると共有サーバモード
デフォルトは共有サーバモード(SID等が設定されている場合)
(2)tnsでの接続全てを専用サーバモードにしたい場合は、
sqlnet.oraに
use_dedicated_server=ON
を追加する。((1)の設定より優先される)
>>22 早速の回答ありがとうございます。
(2)はクライアント側の設定ですよね。サーバ側で指定する方法はないでしょうか?
9.0.1です。
>>23 共有サーバモードに設定する場合、サーバ側では、初期化パラメータに設定が必要です。
【dispatchersの設定】
dispatchers="(PROTOCOL=TCP)"
他にも
max_dispatchers
shared_servers
max_shared_servers
circuits
shared_server_sessions
などがあります。
また、DISPATCHERSを使用するとデフォルトリスナーの登録は上書きされてしまうので、デフォルトリスナーにも動的サービス登録を行う場合は、デフォルトリスナーも設定します。
【local_listenerの設定】
local_listener="(ADDRESS=(PROTOCOL=TCP)(HOST=x.x.x.x.)(PORT=1521))"
25 :
21:2005/03/26(土) 23:44:21 ID:???
>>24 丁寧にありがとうございます。
逆に、専用サーバモードにするにはどうしたら良いのでしょうか?
>>25 >>21を良く読め。
それとサーバー側はデフォルトが専用鯖モードだ。
>>18 はわわ、良く見たら二つとも隠しパラメーターだったあーるよ。
いじくっていないんだったらデフォルトだね。
>>26 21は二つともクライアント側の設定ですよね。
サーバ側で共有サーバモードを専用サーバモードにする方法を知りたいです。
29 :
15:2005/03/27(日) 13:34:38 ID:???
>>27 か、隠しパラメータ!
今回とは関係ない気もしますが、
是非、値を見る方法を教えてください!!!お願いします!
オラクル初心者です。
お手数ですがどなたか教えてください。
下記のSQLがうまくいきません。
UPDATE ORDER_TBL SET SETTLE_DATE = DATE ('2005-03-31 16:33:37','YYYY-MM-DD HH24:MI:SS') WHERE ORDER_NO = 59;
ORA-00936: missing expression
※SETTLE_DATEはDATE型です。
どうすればいいでしょうか?
TO_DATE('2005-
Pro*Cの質問ってここでよいでしょうか?
コネクションを2つ作るサンプルソースってないでしょうか?
>>36 君はあれか、PDFが嫌いだから Oracle のマニュアルも
読まないとかそういうあれか?
「Pro*C/C++ プリコンパイラ・プログラマーズ・ガイド」で
「複数の明示的接続」を検索汁。
>>37 すみません。手元にマニュアルがありません。
どこかでダウンロードできますか?
つ[OTN]
40 :
NAME IS NULL:2005/04/06(水) 02:04:56 ID:Zs66GZt5
Oracle10gなんですが、Solarisに入れようと思ったら、
デフォルトだとルートディレクトリに/u01と/u02を作って入ります。
な〜んか気もち悪いんで
/opt/oracle/に実行ファイル、
/var/oracle/にデータベースファイル
を入れて運用しようと思ったら、「なんでデフォルトに入れないんだ!!」って言われました。
みなさんも、Unix系のOSに入れるときはルートの直下にオラクル用のディレクトリ作ってるんでしょうか?
>>40 入れてねぇっす。
/u01とか/u02とかってボラクルのトレーニングとかで使われているけど、
勝手にそこにDB作られると気持ち悪いっす。
42 :
NAME IS NULL:2005/04/08(金) 16:12:19 ID:3Tyj3NWl
Oracle初心者です。
OSはWindows2000 Server Familyです。
Oracle8.1.6から8.1.7にバージョンアップしたのですが、
エクスポート時に次のようなエラーが出てきます。
<前省略>
. スナップショット・ログをエクスポート中
. ジョブ・キューをエクスポートしています。
EXP-00008: Oracleエラー 904が発生しました。
ORA-00904: 列名が無効です。
EXP-00000: エラーが発生したためエクスポートを終了します。
その後にネットで調べてみた所、catalog.sqlファイルを実行すればいいと
書かれていたのでcatalog.sqlを実行しましたが、
その後systemユーザでログインしますと
「テーブルが存在しません.
ORA-00942: 表またはビューが存在しません。
エリアス: DB1.」
とエラーが出てしまい、sysユーザ以外でのデータベース接続が出来なくなりました。
catproc.sqlやcatrep.sqlなど実行してみましたが直りません。
どなたかわかる方がいらっしゃいましたらよろしくお願いします。
43 :
NAME IS NULL:2005/04/08(金) 21:37:35 ID:bFpLmTVC
会社から業務命令としてオラクルシルバーの取得を義務付けられました。
私は文系卒の新入社員で、一切何も経験のない全くの素人なんですが、
期限は6月末でシルバー取れるもんですか?
ちなみに、大半は自習だそうです。オラクルのソフト自体やサーバはいじれる環境にあります。
死に物狂いですかね?
44 :
43:2005/04/08(金) 21:39:04 ID:bFpLmTVC
>>42 expに関しては$ORACLE_HOME/rdbms/admin/catexp.sqlをsysユーザーで流せ。
でもって、catporc.sqlとcatalog.sqlをもう一度流しなおしてみろ。
47 :
NAME IS NULL:2005/04/09(土) 15:08:37 ID:cNvZSWa2
オラクルで5NamedUserライセンスを購入して、
Webサーバ経由で使用した場合、
6人目の人が接続しにくるとサーバは結果を
はき出さないでエラーになるのん?
>>47 システム上の制限はかかってないが、ライセンスは必要。
>>47 ガイシュツだがボラクルのライセンスは基本的に紳士協定だよ。
>>49 ボラクルは中国ではどうやってるんだろ・・・。
CPU単位のみでの価格帯にしないとやってけないと思うのだが・・・。
キスからはじまるオラクルだってあるよねー
Pro*CってTAFに対応してますか?
>>53 フェイルオーバーイベントとかとれますか?
v$instance とかを取れば。
52ではないのだが、
正直TAFについてメリットをあまり感じられない。
実際そんなに必要な場面があるか?
顧客前でのデモの時はいいけどな。
誰かこれぞというメリットを教えてくれ。
>>56 selectに10時間かかるバッチ処理があったとしよう。
7時間終わった時点でインスタンスが死んだ時に、TAFでそのまま
カーソルを引き継いでselect処理を続けられる。
もしTAFを設定していなかったら、また最初からやり直し。
>>57 TAFだと処理中のSQLの処理も引き継いでくれるのか。
セッションの引継ぎと未コミットの命令の再発行くらいかと思っていた。
>>58 selectに関してはカーソルを引き継いでくれる。
未コミットのDML文に関しては、残念ながら再発行はしてくれない。
単にセッションの引継ぎだけだから、アプリ側で明示的に処理の再投入を
ハンドルしてやらないとならない。
60 :
NAME IS NULL:2005/04/13(水) 10:41:17 ID:CHmUkOen
はじめまして。
解らないことがありまして、質問させていただきます。
よろしくお願い致します。
DB - OS:MiracleLinux Std v2.1 + oracle8.1.7
Web - OS:Redhat7.3J + OracleApplication Server9i
という構成でWebサーバのApacheからDBのoracleパッケージを読み込み
表示させています。
ですが、Webに表示させると日本語が"?????"と文字化けしてしまい
うまくいきません。
oracleのNLS_LANGはSJIS、WebのNLS_LANGはEUCとなっています。
いろいろと文字コードの組み合わせを試してみたのですが、
どうしても日本語が表示されないのです。
解決策をご存じの方、どうぞよろしくお願い致します。m()m
>>57 サンクス
そういうのが必要な要件は今までになかったし思いもしなかったよ。
なるほどね。
オレの携わるシステムは毎度設計のときにすったもんだがあって
結局はVIPによる解決になるんだな。
62 :
NAME IS NULL:2005/04/14(木) 08:10:11 ID:+dl6VGM6
そんなバッチを作る方がうんこちゃん
プロシージャ名を動的に取得して実行することは可能ですか?
例えば
declare
abc varchar2(40);
begin
sp2.sp1(abc);
end;
/
だと上手くいくのですが
declare
p_name varchar2(40);
abc varchar2(40);
begin
p_name := 'sp2.sp1(abc)';
execute immediate p_name;
end;
/
だと
ORA-00900: SQL文が無効です。
のエラーとなってしまいます。
>>63 p_name := 'begin sp2.sp1(abc); end;';
マニュアルくらい読んだら?
>>64 出来ました!
マジ感謝!ありがとうございます。
200万レコードのLOGテーブル(NO INDEX)があるのだが
エンドユーザーではなくユーザー(管理者)がたまにオンライン業務で
参照します。その再にかなり時間がかかる(5分位)
漏れ的にはLOGテーブルにINDEXを1カラムだけ付けたい。
USR-_IDに付けるので、ほぼほぼユニークみたいな感じ(USR_IDだけで30件位までしぼれる)
LOGテーブル事態はユーザーがSELECT(管理者)とエンドユーザーがINSERTするのみ。
張ったINDEXカラムに対してまとめてupdateする事もないんだ。
INDEXカラムをまとめて更新とかすればINDEX再構築で
書き子が遅くなると思うけど、ただただINSERTするだけなら
INSERT処理にそんなに時間がかからないと思ってる。
ただ現場の椰子は件数が多いいINDEX張ってるテーブルにINSERTするだけて
処理時間がかなり変わると思ってINDEXを張ろうとしないんだ。
よってユーザー(管理者)が参照する再は泣き寝入り状態です。
INDEXを張ったテーブルにINSERT処理をするとそこまで変わるのでしょうか?
本来なら同じテーブルを別テーブルで作って確認するのが良いと思うのだが
空きスペース的にそれは無理。
ある程度の下調べが無いとディスク容量を増やして貰えないので。。。
どうなんでしょう?
そんなにINSERTって時間かかりますか?
>>66 テスト環境作って試せば良いだろ。
似たようなことがある度、ここで誰かに試させるのか?
ここで仮に時間はかからない。という回答があったら、
そのまま検証もせずに適用するのだろうか。
適用したその環境で遅いというクレームが来たら、
どういう理由をつけるのだろう。
○ちゃんで聞いたからという理由なら何もいうことない。
>>66 かわらんはず
200万行くらいでがたがた言わず、さっさとCREATE INDEXしる!
70 :
NAME IS NULL:2005/04/22(金) 01:57:44 ID:wnNnVqqM
>>66 >本来なら同じテーブルを別テーブルで作って確認するのが良いと思うのだが
>空きスペース的にそれは無理。
そんなギリギリな空きしかないDBを使ってるのか? ( ゚Д゚)ポカーン
物理設計をやり直せ。
というか、別テーブルでなくても、既存のテーブルで十分試せるだろ?。
>INDEXを張ったテーブルにINSERT処理をするとそこまで変わるのでしょうか?
数少ない追加なら、気にするほどの時間は掛からない。
>>66 リーフ分割やITLの競合とかがガシガシとおきない限りInsert処理で
Indexがあってもそんなに変わるもんじゃないよ。
>>69が言っているように、早くIndexを作成すべきだね。
>>66 index作る領域はちゃんと確保してあるんだろうな。そっちのほうが心配だぞ。
>>66 それを説得するのがオマエの仕事だろ
(ところでアンタDBA?)
テーブルよりインデックスが複数張ってあってサイズがデカイ場合は
遅くなる。
きちんと設計しているDBの場合、1カラムだけのインデックスを1つぐ
らい追加しただけではでは問題にならんと「思う」
74 :
NAME IS NULL:2005/04/24(日) 13:50:08 ID:RamdldR4
初心者です。オラクル9iについて質問です。
WINDOWS2003serverにオラクル9i(WINDOWS2003server用)を
インストールし、クライアントのXPにもオラクル9i(クライアント用)を
インストールしました。クライアントからserverのオラクルに接続しserver
の方にSQLスクリプトで、あるテーブルを作成しました。そしてEXCELで作られた
テーブルデータ(クライアントにある)をインポート(serverのオラクルテーブルに)
したいのですが、どのようにすれば良いのでしょうか?もちろんオラクルの方のテーブルと
EXCELの方のテーブルデータの順番等は一致しています。詳しい方
よろしくお願いします。
>>74 訊き方も初心者?4行目辺りで読む気失せそうになった。
(2バイト英字の所為もあるが)
取り敢えず Excel から CSV 吐かせて SQL*Loader。
76 :
NAME IS NULL:2005/04/24(日) 14:34:55 ID:RamdldR4
ありがとうございました。
訊き方は以降気をつけます。
77 :
NAME IS NULL:2005/04/25(月) 10:15:12 ID:P5ZlQ0im
おはようございます。
Oracle9のDBをVB6を使って事務処理系ソフトを作っているものです。
最近になってOracleに接続すると[ora-12571:パケット書き込み機能に障害
が発生しました]のエラーが出て、作業が全くできない状態です。始めは自分
のPCがOracleの8が入っていたので、サーバー側と合わせないとまずいと思い
、9を入れなおしました。その直後の1度目は接続に成功したのですが、今日に
なって再びエラーが発生しています。
いくつかのサイトを[ora-12571]で検索してみたのですが、原因・解決策が
みつかりませんでした。もしご存知の方がいましたらよろしくお願いします。
セキュリティソフトの関係もあるのでしょうか?今現在は「ウィルスセキュリ
ティ」が入っています。以前はノートンだったのですが、同様のエラーが出ま
した
79 :
NAME IS NULL:2005/04/25(月) 11:33:04 ID:P5ZlQ0im
>>78 レスありがとうございます。
SQL*Plusも同様にエラーがでました。ためしに「ウィルスセキュリティ」を削除して
みたところ、接続に成功しました。セキュリティソフトが原因だとは思うのですが、
同僚も同じ環境なのにエラーが出ていません。
>>79 じゃぁ、セキュリティーソフトが問題だべさ。
サーバまでのpingも通らないんだろ?
セキュリティーソフトを同僚のと同じ設定になってるか確認してみれば?
つ ーか「ウィルスセキュリティ」って何?
82 :
NAME IS NULL:2005/04/25(月) 12:56:37 ID:P5ZlQ0im
>>80 その同僚がインストール作業をしてくれました。
設定は特にせず初期設定のままです。
>>81 ソースネクストから出ているソフトです。ノートンだと動作がかなり遅く
なるので、最近入れ替えました。
>>「ウィルスセキュリティ」を削除して
>>みたところ、接続に成功しました。
+
>>・・・ ソフトです。・・・最近入れ替えました。
↓
ドー考えてもそいつが原因だろ (´ー`)y─┛~~
>> その同僚がインストール作業をしてくれました。
なんちて人任せにしておいてからに
>>設定は特にせず初期設定のままです。
同僚の設定を真似れば巧くいくだしょ。
いちいち2ちゃんで聞かないの (゚д゚) メッ
84 :
NAME IS NULL:2005/04/25(月) 14:59:58 ID:P5ZlQ0im
>>83 設定はその同僚も初期設定のままだそうです。一応設定の確認をしたん
ですが、自分がみたところはどれも同じでした。
同じセキュリティソフトが入っているのにエラーが出ない場合があるの
が謎です。念のため、同僚だけではなく上司にも見てもらったんですが
原因が不明で、とりあえずセキュリティをアンインストールして作業す
るようにとの指示を貰いました。
>>84 McAfee VirusScan Professional 7.03が入っていると、勝手にインターネット
コネクションをブロックされるらしいな。
対策はウィルスソフトではなく、Oracleクライアント自身の再インストールだ
そうだ。
という訳で、もう一回クライアントをサイインスコしてみろ。
>>85 再インストールしても、またブロックされるんじゃないの?
>>86 良くは分からんのだが9iクライアントからは対策がされているらしい。
89 :
NAME IS NULL:2005/04/26(火) 09:20:46 ID:qXbtpqfC
>>85 Oracleの再インストールはしてみたのですが、残念ながらだめでした。
このままセキュリティソフトを入れないままで作業していていいもの
か。
>>89 E.わけねーだろ Σ(´Д` ズガーン
ステキなおちがついたので 糸冬 了 。
>>89 お金が無いのなら、AVG か AVAST を入れろ。
92 :
NAME IS NULL:2005/04/26(火) 15:55:07 ID:APaHcUAf
サーバ:WinNT4.0 オラクル8.0.5
クライアント:RedHat7.3 java jdbc
の環境で
クライアントにてjdbc経由でオラクルのデータを検索し、
検索結果をテキストファイルに出力するプログラムがあります
そのプログラムで全角ハイフンが?に化けました。
OracleのCode → java Unicode で化けているのか
java Unicode → EUC-JP で化けているのか
どちらでしょうか?
>>92 これはかなり有名な仕様。
Oracleの持つUnicode変換テーブルとWindowsの持つUnicode変換テーブルで
ハイフンの扱いが異なるために発生します。
Oracleデータベース内で使用する文字コードをSJIS(或いは逆にUnicode)にする
(つまりOracle内部で変換が発生しないようにする)と解決するはず。
94 :
NAME IS NULL:2005/04/26(火) 16:08:56 ID:APaHcUAf
>>93 どちらでもなく
別の問題ということでFA?
>>94 Oracle側のコードをSJISに代えて試してみれば?
96 :
92:2005/04/26(火) 18:12:39 ID:APaHcUAf
理解してきますた
OracleのCode全角ハイフンとUnicodeのマッピング
EUC-JPの全角ハイフンとUnicodeのマッピングが
ずれているから起きている問題なんですね
で、あってます?
>>96 ぶっちゃけた話、Java使った場合、プログラムのソースも
HTML出力もデータベースもUnicodeにしない限り、どこかで文字化けの問題が出るぞ。
最近のOracleだとJA16SJISTILDE、JA16EUCTILDEっていう
コードがあるみたい。
8.0.5じゃつかえんけど。
99 :
NAME IS NULL:2005/04/28(木) 02:56:17 ID:7B2a0dMG
Oracle 9i Clientに最新のODBCドライバを入れようとしたら、
OUIのバージョンが古くてインストールできませんといわれた。
9i用の製品を9iに入れられないってどういうことだよ…。
OUIみつからんし。
>>99 9.2.0.6とかのもの入れようとしたんだろ?
U.S. OTNからダウソしてくれば?
>>100 OUIはU.S. OTNにもないみたいなんだが。
探し方が悪いのか?
>>101 DBのCD Imageをダウソ汁!
そこにOUIが入っている。
>>102 自分ではそうした。
でも人にそうしろとは言えない。
言ったけど(爆)
最新か知らないがOUI単体あったぞ
2003Server関係のページだったかな?
去年の8月頃にはあった
PSRにあるOUIを入れるっていう選択肢はないの?
>>105 というか、そうしなければならないのでは。
>>105 現在のバージョンでシステムの検証が終わっていて、仮運用中に問題が
発見され、その対応でODBCだけ上げるという流れなので、PSRを上げて
今までの検証をもう一度という工数はない。_| ̄|○
OracleがPSRごと上げろと言ってきたら別だが言ってきてないし。
>>107 PSRをあげるというか、PSRに含まれているOUIをあげる。
今、参考書についていた、9iの30日トライアル版を使用しているのですが、
これは30日過ぎるとどうなるのでしょうか?
まったく使えなくなるのでしょうか?
それとも機能制限がでてきたりするのですか?
>>109 別にどうにもならない。
紳士協定みたいなもの。
>>109 >>110の言うとおり。
期日が過ぎても制限事項もなく、通常通りに使用できる。
「もう使わないでアンインストールしてね♥」
てな感じ。
112 :
NAME IS NULL:2005/05/03(火) 17:24:12 ID:pGFeL5xu
性能 DB2 > ORA
費用 DB2 > ORA
知名度 DB2 < ORA
開発者数 DB2 < ORA
>>112 > 性能 DB2 > ORA
異議あり
DB2って全然売れてないんでしょ?
IBMはInformixを買収したけどInformixを使っていたユーザにDB2への乗り換えを提案しようにも
みんなOracleに乗り替えたがるもんだから、慌ててInformixの次期バージョンをリリースすることにしたらしい。
スレ違いスマソ
>>112 >性能 DB2 > ORA
(゚Д゚)ハァ?
116 :
NAME IS NULL:2005/05/04(水) 10:43:51 ID:WN3q55GR
Oracle9i使ってます。
Timestamp(6)というフィールドに
どうやっても入力されないんですが知ってる方いましたら
お願いします。
>>112 > 費用 DB2 > ORA
(゚Д゚)ゴゥ?
>>116 一体どういった値を入力しようとしているかぐらい書けや。
>>114 それが最近はコンペで負ける事が結構あるのよw
なんといってもI社は保守費用とひよっ子のSEとの格安セットで
提案してくるんだわ。
まあ、お客からしたらいつもSEが常駐しているのは心強いとかで
そのままうやむやのままに購入というパターンが良くあるらしい。
あと一つ加えるとしたら「マニュアル ORA>DB2」ね。
大体「View」を「視点」とかって言う「DB2」は如何なものかと(プゲラ
>>119 >大体「View」を「視点」とかって言う「DB2」
ワラタ
機械翻訳したんじゃないかなw
今のVerは解らんが、DB2のエラーメッセージの内容が解りにくくて開発する時に苦労した。
Oracle9iのバックアップ方法に関して質問です
現在稼働中のOracle9iの環境をそのまま別な環境に移したいのですが、
コールドバックアップ(Oracleを停止させて、バックアップ対象のファイルをWindowsコピー)にて、
移してみたところ正常に動作しませんでした。
Enterprise Managerなるツールを使用してバックアップをとる方法があるみたいなのですが、
使い方がわからないです。
宜しければ御指南下さい。
122 :
NAME IS NULL:2005/05/05(木) 12:32:48 ID:0ykLssaN
1. ALTER DATABASE BACKUP CONTROLFILE TO TRACE
2. コールドバックアップ(ocopy)
3. 別の環境にリストア後、初期化パラメータ調整、パスワードファイル作成
4. nomoutで上げて、作成した制御ファイル再作成スクリプトを若干修正して実行
5. open
「正常に動作しない」だけでは状況がわからないから、エラーを書いた方が良いよ。
間違っているかもしれないので、どなたかフォローよろ。
レプリカしちゃえば?
>>122さん
Enterprise Managerを色々調べてみたのですが、
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
を実行できそうな場所はありませんでした。
SQL+に打ち込んでみましたが、CONTROLFILEでエラーが出てしまってます。
Windowsコピーに関してのエラー内容としては、
SQLでシステム権限でログインしようとしますと、
ORA-01033: ORACLE initialization or shutdown in progress
と出てしまってました。
色々と調べてみましたが、解決できませんでした。
>>123 レプリカとはどのようなものでしょうか、Oracleの用語集を見てみましたが見つかりませんでした。
>>123さん
さんが抜けてました、失礼しました。
UNIX版ならありえる話だな。<レプリカ
インストールディレクトリもDBもすべてSANディスクにしてしまえば、可能だし。
Windows版は知らん。
レプリカってレプリケーションの事だろ?
UNIXとかWindowsとか関係あるのか?
Oracleというか殆どの商用DBには付いてる機能だろ。
128 :
NAME IS NULL:2005/05/05(木) 13:52:24 ID:dmQimnB5
129 :
NAME IS NULL:2005/05/05(木) 15:04:40 ID:zxspLPYf
>>124 移行先の環境ではDBのサービスを作成してないんだろ?
とりあえず、非常にシンプルな手順を下記に示してみた。
@移行先にて、ダミーのデータベースを作成(ファイル配置や、データベース名は移行前と同じ)
A作成したダミーデータベースをシャットダウン
Bコールドバックアップしたデータファイルや制御ファイルや初期化ファイルなど
もろもろ全てをダミーデータベースの環境に上書き
Cデータベースをオープン
D移行出来て幸せ
130 :
121:2005/05/05(木) 15:25:02 ID:???
>>129さん
@のダミーのデータベースは作成していませんが、
移行先にも元々データベース環境はありました。
A〜Cに関しては実際に行いました結果が124です。
今も色々なサイトを巡っているのですが、Enterprise Managerにおいてのバックアップ方法を未だ理解できません。
ちなみに行った手順は以下の通りです。
移行先環境Oracleデータベース停止
@.OracleORA92TNSListerのサービスを停止
A.OracleServiceGRのサービスを停止
移行元環境Oracleデータベース停止
@.OracleORA92TNSListerのサービスを停止
A.OracleServiceGRのサービスを停止
移行元環境のファイルを開発環境へコピー
移行元サーバー\\D:\ORA92\ORADATA\移行フォルダ
↓
移行先サーバー\\D:\ORA92\ORADATA\移行フォルダ
移行先環境の再起動(サービスの開始)
132 :
NAME IS NULL:2005/05/05(木) 20:09:01 ID:S9wJQiUL
どんなエラーがでてうまくいかなかったの?
>>131 RMAN Duplication使えば?
これだったらDB止めなくても出来るよ。
134 :
NAME IS NULL:2005/05/06(金) 18:53:44 ID:F7p3BlwR
Win2000ServerでOracle8iのDBを使用しています。
テーブルの構造を別のSIDにコピーしたいのですが、可能でしょうか?
>>134 rows=no で、exp/imp か、
メディアバックアップをそのままリストアして、
コントロールファイルだけ作り直し。
Oracle10gってログインに時間がやたら掛かるんですけど
速くする方法はありませんか?
137 :
136:2005/05/09(月) 16:59:24 ID:???
過去にPro*CでCGIを作成したのですがOracleを10gにあげることになり
CGIなのでコネクションプーリングができず、コネクションが遅いと
CGIも激遅になってしまいます。
CGIでコネクションプーリングする方法でもあればよいのですが・・・
よい解決方法があればご教授ください。よろしくお願いします。
もしその環境がWindowsで以前のバージョンでは妥当な速さで
ログオンできていたのならsqlnet.oraの
SQLNET.AUTHENTICATION_SERVICES=(NTS)
を下のように書き換えればもとの速度でログオンできる。
SQLNET.AUTHENTICATION_SERVICES=(NONE)
139 :
136:2005/05/09(月) 17:57:36 ID:???
>>138 (TдT) アリガトウ
ログイン爆速になりました。
久しぶりに本物の神に遭遇した気持ちです。感謝age
140 :
NAME IS NULL:2005/05/09(月) 21:33:37 ID:Daffy6EZ
AUTHENTICATION_SERVICESのことって意外に知らない人多いよね。FAQ?
141 :
はるか:2005/05/09(月) 22:08:51 ID:HjfK1arS
oracleにSQLを投げたところ
「ORA-03113: 通信チャネルでファイルの終わりが検出されました。」
のエラーが出てしまいました。
他のデータベース(oracle)ではエラーになりませんでした。
私なりに色々調べましたが原因が全く判りません。
何かお判りになる方いらっしゃたらお教えください。
よろしくお願いいたします。
>>140 OTNでもしょっちゅう立ってる。
Win鯖は他OSに比べて敷居が低いから、よく分からずDBAやってるヤシが多いんだろう。
>>141 アラートログに他のエラー出てない?
PL/SQLでループをC言語みたいにcontinueする方法を教えてください。
>>141 セッションが生きている状態でTCP通信が途切れるとORA-03113
>>141 DBシャットダウソ中に接続しようととしているとか、もしくはバグにヒットとしていると出るな。
146 :
136:2005/05/10(火) 08:56:04 ID:???
>>138 その後、再起動したらOracleがずっと起動処理中のままになって
しまいました。
sqlnet.oraを元に戻して再起動したらOracleが起動されたのですが
どうしたらよいでしょう(´Д⊂グスン
147 :
はるか:2005/05/10(火) 09:58:24 ID:32FXdx93
>>144 >>145の方、ご意見有難うございました。
特定のDB、SQLだけなので
>>145さんが言われた様にoracle(特定バージョン)の
バグなのでしょうか。
>DBシャットダウソ中に接続しようととしているとか
起動時にリカバリが発生してるときにも起きることがあります。
つながらないので途中でリブートかけると、再びリカバリが走るので
いつまでたっても治らないので、ほっとくしかない。
俺の貧弱な開発マシンでこの状態になると30分くらいかかる。
150 :
136:2005/05/10(火) 22:42:07 ID:???
>>149 普通にスタートボタンから再起動を選らんで再起動しました。
151 :
136:2005/05/10(火) 22:43:50 ID:???
ついでに起動処理中になってしまっても
サービスを一旦停止して開始したら起動されました。
でも自動起動したいです(´Д⊂グスン
>>150 OS再起動する前にインスタンスは停止させておけ。
レジストリにサービス停止時の停止方法みたいなエントリがあるけど、あてにならない。
多分インスタンスが強制終了されて、再起動時にインスタンスリカバリをしてるはず。
アラートログにcrash recovery...って出力される。
SQLNET.AUTHENTICATION_SERVICES=(NONE)で自動起動
ってできんの?今手元にないから試せない。
SQLNET.AUTHENTICATION_SERVICES=(NTS)
のままで、
TCP/IP設定のNetBIOS over TCP/IPを無効にするか、
Windowsドメインに入ってドメインユーザーにしてみれ。
NTSで認証に時間がかかるのはKerberosのタイムアウト待ちがくさい。
Kerberosて頭が3つある冥府の犬のこと?
>>154 そう、Windowsの認証につかわれてる
156 :
136:2005/05/11(水) 10:37:43 ID:???
そもそもデータベースサーバーとWEBサーバーが
一緒のPCというのが(・A ・) イクナイ!ですね
(・A・)イクナイ!!
まー客先でDMZにDB鯖とWeb鯖を置いていたのを見た事はあるが・・・
>>164 地獄の番犬も地に落ちたもんだな・・・。
まあ、何処もリストラの嵐だから仕方ないのかな・・・。
LOOPして複数テーブルの特定レコードだけ削除するストアドで作ったんだけど
これCtrl+CでもセッションKILLしてもトマラナス。
どうすればいいんだー。
DBクローズしたら?
>>163 時間掛かってるのか、クローズできない。
abortでしか落とすしかないのかな。
SVRMGR> shutdown abort
SVRMGR> startup
SVRMGR> shutdown
SVRMGR> startup
これでとりあえずやりたいことはできた。
いいのか?orz
ステータステーブルみたいなの作って
LOOP中にチェックするようにした。これでいいのか。。
人稲なんだね。この板。
いるんだけど、開発系の人が少ないんだよ(´Д⊂
かくいう漏れもDBA系なもんで・・・。
168 :
NAME IS NULL:2005/05/14(土) 04:43:27 ID:hkpA4MK5
Solaris7にoracle8.0.6です。
oracleを入れておいたディスクがぶっ飛び、別のドライブに入っていた
データファイルだけが生き残りました。
ディスクを交換し、oracleのインストールをしました。前任者が残して
いったインストール時の資料だけが頼りで、なんとかそれらしくインストー
ル出来たのですが、肝心のデータファイルをマウントすることが出来ません。
インストール後、DBファイル上書きなども行ってみましたが、sqlplusで
user_tablesを確認しようにもORA-00600: internal error code, arguments:
となってしまいます。
このような場合、どのようにすればマウント出来るようになるのでしょうか?
>>168 データファイルだけが残ったということだな?
だとしたら以下の方法を取って復旧しないと駄目だ。
0. Oracleのアプリケーション部分の再インストール(済み)
1. OracleのControl Fileの再作成
2. DBをOpen resetlogsでOpen
ちなみに聞くだけ聞くけど、バックアップは取っていなかったのかい?
170 :
168:2005/05/14(土) 05:58:55 ID:hkpA4MK5
>169
こんな時間にありがとうございます。
>ちなみに聞くだけ聞くけど、バックアップは取っていなかったのかい?
データファイルしかバックアップとってなかったようです。
Control Fileの再作成とOpen resetlogsをキーワードに、ぐぐってみます。
>>170 日本じゃないからw
確認したいんだけど、データファイルというのは、純粋にOracleのデータファイル
のみということ?
大別してオラクルのファイルは「control file」「online redolog file」「data file」の
三つに分けれるんだけど、バックアップはその全部を取っていたということ?
それともOnline Backupしかとってなくて、それでdata fileしか残っていないと
言っている?
この当たりをまず切り分けてから、169を実行する必要があるので、結構重要。
取り合えず可能性を考えてみたぞ。
a. 純粋にOracleのデータファイルしか残っていない場合。
=> 169を実行
b. Controlfile, Redoog File, Datafileが全て残っている場合。
=> OracleのApplication部分にパッチが当たっていない可能性を疑う。
パッチレベルはちゃんとクラッシュ前と同じか?
「8.0.6.X」のこの「X」の部分は同じか確認したか?
そうでなければ、まずパッチを充て、その後に普通に起動してみる。
173 :
168:2005/05/14(土) 06:28:47 ID:hkpA4MK5
>171
control01,02,03 rbs01 redo01,02,03 system01 temp01,02 tools01
users01,02
以上のファイルがあります。
おそらくコードバックアップではないと思われます。
>>173 おおっ、全部残っているじゃん。良かったねぇ。
という訳で172の可能性bを疑ってください。
175 :
168:2005/05/14(土) 06:39:12 ID:hkpA4MK5
>172,174
なるほど、パッチですね。了解しました!
しかし、クラッシュ前のリビジョンがいくつだったか...
オラクルを始めてインストールして、9時間目。分からないことばかりです。
>>175 調べてみたが、Solaris SPARC 32-bit版は8.0.6.3がターミナルリリースの様だ。
取り合えずこいつまで上げて、起動してみては?
リビジョンが違っていても、ターミナルリリースだから上がるはず。
その後、catlog.sqlとcatproc.sql流せばいいだけだし?
177 :
168:2005/05/14(土) 07:10:54 ID:hkpA4MK5
>176
oracleをcreatedbでインストール。その後、データファイルを差し替え。
dbora startすると、プロセスが消し飛びます。
SVRMGRにも、マウントできないと怒られます。
>8.0.6.3がターミナルリリースの様だ
これって、登録とかしてないとダウンできないのではないでしょうか?
>>177 そりゃあ、ふっ飛ぶって。
というよりも何でcreate dbなんてしてるん?
バックアップから「control file」「online redolog」「datafile」を
全部戻して、でもって「svrmgrl」を起動して「startup db」って
やったらどうなる?
>>178 「startup db」なんてコマンドないや。
「startup」の間違いね。
180 :
168:2005/05/14(土) 09:13:26 ID:hkpA4MK5
>179
神! 私にとっての神!
リカバリー系の情報を追っていくと「startup」って出てこないんですよ
ありがとうございます。
さっくり動きました。
>>180 おめ〜ヽ( ´ー`)ノ
つ〜か、DB起動にdboraなんて懐かしすぎるツール使っている人久しぶりに見たよ。
というのは、普通は7ぐらいから「svrmgrl」でDB起動するからさ。
9iになるともう「svrmgrl」さえなくなってしまって、全部「sqlplus」から起動だよ。
時代は変わるもんだ。
182 :
168:2005/05/14(土) 09:40:01 ID:hkpA4MK5
結構周りにもありませんか?
古くから動いてて、結構重要なくせに、誰も面倒見てないようなサーバー。
それが突然壊れて、かり出されたって感じです。
ありがとうございました。
本当に助かりました。
183 :
NAME IS NULL:2005/05/14(土) 11:04:52 ID:PuSZQHpA
これからオラクルマスター目指すんだけど
やっぱり新しい10gとるほうがいいんですか?
業務で使ってるバージョンが良いけど、特に無かったら10gで良いと思うよ。
昨晩のようなやりとりを読むとなんかジーンとくる。
しかし壊れたDBを真夜中に復旧か・・・すげー親近感だよ168さん。
oracle GOldを取得後に、データベースの請負で独立をしたいのですが、
僕のように一人でデータベースを請け負う方はいらっしゃるのでしょうか?
>>186 Gold程度、普通の会社にも数名は居る。
この資格だけで独立して仕事は来る事は無い。
データベースだけ請け負ってもらっても何のメリットも無い。
DBAだけ請け負うのは依頼する側にとって大きなメリットがない。
業務フローを含めたコンサル的な仕事なら個人でも請け負えると思うが、
Oracle Goldの資格だけじゃ足りないな。
189 :
NAME IS NULL:2005/05/15(日) 22:36:36 ID:+wdAlGm3
請負はよっぽどのことがない限り、出す方も受ける方も相当覚悟がいる。
責任がほぼ無限だからな。
派遣と大差なくなるが、委任契約の方がいい。
かれこれ7年以上ボラクル触っているけど、ボラクルマスターは銀さえ持って
いないやw
今はLunixで10g RAC+Dataguard(PhysicalとLogical)組んで遊んでいたり
するけど、そんなに資格の必要性を感じないな。
軍隊で言うと叩き上げの軍曹止まりという感じなんだろうなw
>>190 そりゃ、遊んでいる人にはいらんだろうよ。
たいていの人は会社がお金(試験費用+α)を出してくれたり
出世の条件になんらかの資格取得(講習費用は会社持ち)が課せられている
から資格をとるんだよ。
会社にそういう制度がないという時点で
>>190 は軍隊というよりは傭兵っぽいカモね〜
>>190 ORACLEの実務経験が無い奴が、資格を持った方が説得力はある。
194 :
190:2005/05/16(月) 08:39:26 ID:???
7年前、ボルクルのボの字も知らなかった漏れは、部署のマネージャーから
ボラクルのSQL入門、DBA管理Iのコースを受けに逝けと言われた。
コースを受け終わって戻って来たら、アメリカ本国でシンメトリックレプリケーションを
やっているマスターDBのデータを、シンガポールを始め、各国にスナップショットで
データレプリケートやっているというとんでもない代物の、その日本のDBAの仕事
だったw
信じられるか?
DBA管理Iしか受けていないのに、担当がいきなりスナップショットがどうのとか、
レプリケーションがどうのとかっていう代物なんだぜ?
地獄を見たよ、ほんとw
>>194 普通。どこでもそんなもんだよ。
それでできないやつは何をやらせてもダメ。
それと講習受けさせてくれるだけまし。
198 :
190:2005/05/17(火) 00:22:41 ID:???
>>197 まあ、結局2年の歳月をかけて(部署の教育予算の都合上)レプリケーションの
コースまで受けさせて貰ったけどな。
でもって、その会社は3年で辞めて、その後ボラクルに転職したw
「どこでも」は言いすぎだろー
>>190さんの自己顕示欲旺盛さには頭がさがっちゃいます。
敬意を表して「るにくす」ちゃんと呼んであげよう
201 :
NAME IS NULL:2005/05/20(金) 16:15:40 ID:TvuwvY2x
すみません、dmpのインポートについて教えてください。
Oracle10g からエクスポートしたdmpを、下位のバージョンの Oracle8.1.7 にインポート
しようとしたら「ヘッダーが認識できません」と言われてしまいました。
因みにオプションは全てデフォルトで指定しました。
このようなインポートは可能なのでしょうか?
また、可能なら適切な方法を教えてください。
>>201 不可能。
やりたかったらOracle 8.1.7のexpを使って10g DBからExport、
でもって8.1.7にImportだろうな。
203 :
NAME IS NULL:2005/05/22(日) 17:17:20 ID:RWKQivPE
現在9iの正規版を使用しています。
今回10gに移行しようと思い、ひとまず評価版の導入を検討しているのですが、
評価版には同時セッション数などの上限はあるのでしょうか?
予定では、10人ほどが同時に繋ぐ事になると思います。
>>203 OTNにあるものの中身は製品版と同じだYo
使用日数制限も紳士協定だ
205 :
201:2005/05/23(月) 11:27:07 ID:M0MPUZ46
>>202 ありがとうございます。やり方によっては可能と言うことでしょうか?
現在、Oracle10g は Oracle 8.1.6(すみません、8.1.7ではありませんでした)
とは離れた場所にあるのですが、
これは 10g マシンに 8.1.6版の exp を入れて使用すると言うことですか?(可能?)
それとも Oracle10g のイントラに 8.1.6 が入ったマシンを接続して Export すると
いうことですか?
>>205 Support Matrixを見てみたが、まずはTarget DBを8iのターミナルリリースの
8.1.7に上げないと駄目だな。
でもって、8iのExport Utilityを10g DBの入っているマシーンにインストールして、
でもってこいつでExportする。
後は、そのDMPをメディアなり、N/W経由で8iの入っているマシンに持って来て、
ImportすればOk。
簡単に言うと・・・
1) 8.1.6にパッチあてて8.1.7にする
2) 10gの入ってする鯖に8.1.7のバイナリをインスコ
3) インスコした8.1.7のexpを使って、10g DBからexport
4) 何らかの方法でexpしたdmpを8iの入っている鯖から見える様にする
5) 8iのimpを使って、import
207 :
205:2005/05/23(月) 18:36:03 ID:M0MPUZ46
>>206 ありがとうございます。
手順はよくわかりました。と同時に自分の環境ではその方法は難しい
ということもわかりました。泣。
CSVファイルに落とす方法で検討してみます。
勉強になりました。
>>207 まあ、環境によっては仕方ないわな。
基本的にExpとImpには以下の法則が成り立つ。
Export元のDBのVerが下位だった場合=>Import先の上位VerのImportを使う
(例: Export元が8iで、ImportしたいDBが9iだった場合には、9iのImportを使用)
Export元のDBのVer.が上位だつた場合=>Import先の下位のVerのExport/Importを使う
(例: 今回の様にExport元が10gで、Import先が8iの場合には、Exp/Impの両方に
おいて8iを使う)
Support Matrixみてないが、8iと10gで会話できるなら、
expのためにサーバーに8iを入れなくても、別のPCに入れた
8i Clientから、ネットワーク越しのexpで引っこ抜ける。
Note PCでも使えばよい。
過去バージョンのCD-ROMも、最悪、別途注文できたと思う。
210 :
207:2005/05/24(火) 16:30:05 ID:Cqi0T8Kx
出来ましたー!できましたー!デキマシター!
無事にExportできましたー
ノートPCにOracle8.1.6を入れて10gのイントラに混ぜてもらい、
10gClientのtnsnames.oraをぺたり。
これで会話が出来るようになったのでExp/Impを実行しました。
impの際、
IMP-00003: Oracleエラー 439が発生しました。
ORA-00439: 機能は使用できません: Materialized view rewrite
と警告が出ましたが、これは indexes=y にしていたからかなあと思いました。
ひとまず正常に動いているようです。これで様子をみてみます。
もっと精進します。本当にありがとうございました!
>>210 純粋にMaterialized view の機能がインストールされていないか、もしくは
セットされていなかっただけでは?
8iではMaterialized viewの機能はEEでしかサポートされていないし、EEでも
以下の初期化パラメーターもinit.oraの中で指定しなければ有効にならないよ?
QUERY_REWRITE_ENABLED = TRUE (デフォルトはFALSE)
QUERY_REWRITE_INTEGRITY = ENFORCED, STALE_TOLERATED, TRUSTED
>>211 事例検索、ご苦労。
EE機能の奴は、MVIEW じゃなくて、MVIEW rewrite ね。
>>212ツッコミご苦労。
MVIEW rewrite じゃなくて QUERY rewrite ね。
214 :
NAME IS NULL:2005/05/27(金) 14:05:03 ID:SVEAfcHY
Import ユーティリティが必ず下記の場所で沈黙します。
Disk I/O も殆ど無く、CPU も殆ど使っていません (どちらも限りなく 0%)。
オプションは ignore=y destory=y full=y を指定しています。
せめて何か文句を垂れてくれれば対処のしようもあるのですが、
沈黙されているので原因が判らず数日、悩みの種となっています。
何か考えられる要因はありますでしょうか。
Import: Release 8.1.7.4.0 - Production on Fri May 27 13:54:35 2005
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to: Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production
Export file created by EXPORT:V08.01.07 via conventional path
import done in US7ASCII character set and US7ASCII NCHAR character set
215 :
214:2005/05/27(金) 14:06:02 ID:???
×:destory=y
○:destroy=y
Windows2000で
RAWデバイス使ってないんだけどさ、
オンラインバックアップするとき
ocopy使わないといけないのか?
217 :
216:2005/05/27(金) 19:43:28 ID:Ftx4Ka8u
すいません、あげます
218 :
NAME IS NULL:2005/05/27(金) 21:05:12 ID:qtLKBW4n
いえ、いりません
219 :
NAME IS NULL:2005/05/27(金) 21:36:03 ID:+uA2ik5O
オラクル初心者だからかちょっと気になることがあります。
Oracle9i Solaris版を使っているのですが、
ふと listener.log のサイズを見ると何百メガにもなっています。
これってある程度サイズが大きくなると、別ファイルにリネーム
されて新規にログファイルが作成される&古いファイルから削除
というような処理が走るのでしょうか。
このままだとファイルシステムフルになってしまいそうで怖いです。
ログファイルを削除するなど、何か手を加えなきゃだめなのでしょうか?
220 :
NAME IS NULL:2005/05/27(金) 22:00:03 ID:eZr5RIQk
>>219 走らない。各々でログを移行させる。
lsnrctl stop
mv listener.log listener.log.old # -> 必要に応じてバックアップ?
touch listener.log
lsnrctl start
221 :
NAME IS NULL:2005/05/27(金) 22:14:29 ID:+uA2ik5O
>>220 ありがとうございます。
cronに組み込んで定期的にログを整理します。
>>214 とりあえずこれまで問題はなかったのに
この数日だめなのか、とか特定のテーブルだけダメなのか、
など問題の絞り込みを行ってみては。
また、importしたいdmpファイルに問題があるかもしれません。
exportし直して再試行できるなら確認してみてください。
>>216 窓でオンラインバックアップ取る時にはocopyしかサポートされていない。
勿論物理的にNTバックアップ等で取れない事はないけど、それでリカバリに
失敗して動かなくなっても、サポート外ということになるだけ。
ntbackupってオープンされてるファイルをバックアップできなくない?
SQL*PLUSでPL/SQLを使用し
ファイルの入出力をしようとした所、
invalid_path例外エラーが出ました。
色々調べて見たのですが、
init.oraのutl_file_dir=で指定されているディレクトリのみ
使用可能みたいでした。
しかし、SQL*PLUSを実行しているサーバはAPサーバでinit.oraがありません。
APサーバでのファイル入出力は無理なのでしょうか?
クライアント→APサーバ→DBサーバ
(win2000) (Solaris) (Oracle9i/Solaris)
APサーバにinit.oraがあるかは関係ない。
utl_file_dirはDBサーバ内のディレクトリを指すパラメータ。
リモートからのsqlldrってできたっけ?できるんだったら
ファイルからの「入力」はこれでいいかも。
227 :
225:2005/05/28(土) 11:31:26 ID:???
>>226 エラーの原因は別にあるってことですか・・・
ありがとう考えてみます。。
> 227
UTL_FILEパッケージのINVALID_PATH例外は
「パスの指定間違い」なので、
パス指定の引数内容をよく確認して。
よくあるのがディレクトリの掘り忘れと、
WindowsとUnixの違いを忘れてパス名の
大文字小文字の区別し忘れかな。
>>225 DBサーバ以外のディレクトリからファイルを読み込みたい場合はサーバ名もパスに入れる
WINだったら\\サーバ名 とか\\IPアドレス\C:\tmp とか
> 229
今回はサーバがSolarisだから、UNCのようなネットワークパス指定は
できないね。事前にNFSでもsmbfsででも、mountしておかなければ
ならないでしょう。
つかUTL_FILEをそのように使いたくなること自体設計が間違ってねーか
つかUTL_FILEってあまり使うべきもんじゃないと思う
>>231 10g以降からUTL_FILEはなくして行こうという動きがあるしね。
233 :
225:2005/05/30(月) 17:19:41 ID:???
UTL_FILE パッケージを利用してのファイル操作は、好ましくないのですね。
前任者が残したシェルを利用しようとしてました。
DBサーバの設定ファイルをいじるような権限なんて当然ない3次下請けの派遣要員です。
SQL*PLUSのみで何とか同じ機能にできそうです。
234 :
NAME IS NULL:2005/05/31(火) 14:11:36 ID:6mt1ZZyJ
ちょっと教えてください。
コミットしてるのに、REDOログファイルの
更新日時が変わらないのは何で?
変わらないものなんですか?
235 :
234:2005/05/31(火) 16:09:18 ID:???
オンライン中はOracleが掴んじゃってるから、
書き込まれてても
ログスイッチするまで更新日時変わらないんだってさ。
>>231-232 俺も結構使ってるんですけど,テキストをDBに読み込む場合,
どうするのが良いのですか?
Loaderでワークに読んでからマスタ更新とかすると効率悪くない?
関係ないけど今日ApplictionsDayの基調講演だけでも登録しませんか?
て電話かかってきた。集まり悪いのかな?
>>236 使いどころをわきまえて使う分にはいいんじゃないの?
俺は嫌いだけど。
PL/SQLはDB内で実行されるんだから、DB内に閉じてて欲しい。
俺なら
> Loaderでワークに読んでからマスタ更新
この「効率の悪い」やり方を選ぶな。
238 :
NAME IS NULL:2005/05/31(火) 21:40:20 ID:FDMIbZ4f
すいません。質問させてください。
oracleの一時表領域は、一体どのように扱うのが、
よりスマートなやり方なのでしょうか?
社内(中小企業のシステム課)の先輩は、
自動拡張(AUTOEXTEND)をonにしておき、定期的にoracleを
再起動して領域を開放する。
または、自動拡張をオフにしておき、使用率が100%に近づいたら、
ALTER TABLESPACEで、新たにデータファイルの追加を行う
等の方法を行っているのですが、社内にoracleについての知識のある人間が
少ないため、oracleに詳しい諸兄がどのように一時表領域をあつかっているのか
教えていただければ幸いです。
>>236 もう一つの方法は外部表だな。
もっとも、これもSQL*Loaderのドライバを使ってのアクセスなので、効率の
悪さという意味では同じかも知れん。
10gからならData Pumpのドライバも使えるので、相当早くなっているらしいが。
>>238 AUTOEXTENDをOnにしておくと、誰かが腐ったSQL投げて膨大なSortが
行われてディスク領域を食いつぶすなんて事があるから、あんまりお勧めは
出来ない。
9i以降であれば、pga_aggregate_targetが正しく設定されていて、なおかつ
SQLそのものがきっちりとチューニングされてさえいれば、そんなに問題に
なる事は少ないと思うんだけどね。
241 :
NAME IS NULL:2005/06/01(水) 21:05:13 ID:tKaTPZQ+
oracle9iASで悩んでいるoracle初心者です。
ご教授ください、、、
環境はwin2000svr+Apache+oracle9iASです(だと思います)
netstatでサーバの使用ポート状況をみると3001番ポート(tcp)のセッションが
数十個残っています、、、
3001番ポートを調べたところredwood-brokerという
聞いたことのない物でした、、、
これしかoracleを使用した環境がないため
良いのか悪いのかがわかりません、、、
セッションはESTABLISHEDです
正常なのでしょうか?
(そんな訳無いと思うのですが、、、)
242 :
NAME IS NULL:2005/06/01(水) 21:54:14 ID:w4wl/7rs
Back Doorちゃうか?
>>241 9iASは良く分からないのだが、AJPのデフォルトポートが
そこあたりの番号使ってるっぽい?
詳しくは「$ORACLE_HOME/opmn/conf/opmn.xml」の中を
見てみる!
<oc4j maxRetry="3" instanceName="home" numProcs="1&
quot;>
<config-file path="ORACLE_HOME/j2ee/home/config/server.xml"/>
...
<port ajp="3000-3100" jms="3201-3300" rmi="3101-3200"/>
...
</oc4j
>>241 そのESTABLISHEDなコネクションはどことつながってんのさ。
相手がそのシステム内なら、接続相手のマシンも調べたらいいさ。
245 :
NAME IS NULL:2005/06/02(木) 07:24:06 ID:vLLv95Q9
レスありがとうございます。
>>244さん
すいません、、、
コネクション先は自マシンです。
ですので、元も先も同一マシンです。
>>242さん
serverprotectでは引っかかっておりません、、、
>>243さん
その通りでした、、、
<port ajp="3001-3100" rmi="3101-3200" jms="3201-3300"/>
と記述されておりました。
となると、なぜセッションが切れずにポートが開きっぱなし
になるのでしょうか?
使用しているプログラムのバグの可能性があるのでしょうか?
(jspで開発したwebアプリが動いています)
>>237,239
ありがとうございます。
なるほど,移植性とかを考えるとDBで閉じているほうがいいですね。
外部表。。。これは9iからの機能かな?なんか便利そう。
だけど,うちはやっとOracle7からOracle8iに移行しようというところ
なのでまだまだ関係ないかな。
>>245 httpdとjavaの間でコネクションプールしてるんじゃない?
DBA Studioの表エディタから項目にNULLを指定するにはどのように操作したらよいのでしょうか?
「SQL表示」にして見ていると、項目をクリック・Back spaceで消しただけでは
set 項目名 = ''
となっていて、これではNULLにならないと思います。
Oracleでは長さゼロの文字列はNULLと同じ意味。
いい加減修正して欲しい仕様だけどね。
Oracle7.xの頃は空文字列とNULLは別だったような。
なんかそれで苦労した記憶があるんですけど
もう忘れちゃったよ・・・。
251 :
248:2005/06/02(木) 16:39:03 ID:???
>>249 VARCHAR2 型のとき、
項目 = '' は IS NULLでヒットする
ということですね。ありがとう御座います。
NUMBER型でも確かめてみたところ、同様にヒットするようです。
勉強になりました。
NVL関数があるじゃん
>>250 7.xや8.0.xでは values (xxx, NULL) とか set aaa = NULL が使えなくて
必ず values (xxx, '') とか set aaa = '' と書く必要があったと記憶している。
>>252 検索対象のフィールドなら関数を使うより IS NULL の方がいいと思う。
NULLと空文字列を同一視してるのって標準からすれば外れてるんだろうけど
俺はこっちのが便利だな。
NOT NULL制約かけたいような場合って、大体は空文字列も拒否したいはず。
なんだけど、NULLと空文字列が同一でない場合、空文字列は通っちゃうよね。
こうなると、空文字列を拒否するにはCHECK制約とか使うしかなくなる。
それってなんか不便。
あと、ここ変えちゃうとかなり互換性に問題が出てきちゃうんで、Oracleは
変えられないんじゃないかな。
A列B列でPKにしたいけど、B列が’’の可能性がある場合。
UPDATE では、'' と NULL を同一視するくせに、
WHERE で = '' って書けないのがむかつく。
UPDATE 表 set カラム = ''
⇒ NULL がセットされる。
SELECT * FROM 表 WHERE カラム = ''
⇒ NULL となっている行をSELECTできない。
ヌルヌルドロドロした事情がありそうな仕様だな
>>256 ''がつねにNULLと解釈されると考えれば、そうなるのは自然じゃないの。
SELECT * FROM 表 WHERE カラム = NULL
では検索できないからね。
IS NULLつかわないと。
SELECT * FROM 表 WHERE カラム IS ''
が使えたら自然かもね。使いたくはないけど(笑)
演算子の動作が、NULLのレコードを処理しないように定義されている
と考えることもできるね
261 :
256:2005/06/03(金) 14:59:21 ID:???
>257
Prepared Statement を使っていると空文字列かどうかで処理を分けないといけない。
UPDATE 表 set カラム = ?
SELECT * FROM 表 WHERE カラム = ?
プレースホールダに空文字列をバインドすると (´・ω・`)ショボーン
すいません。
文字化けについて質問です。
いろいろ調べて、全角「−」の文字化けについては対応できたんですが、
「、薮、ア」等の漢字が、DBインサート時に文字化けします。
JSP(Windows-31J)→サーブレット(Unicode)→DB(EUC-JP)
なので、文字化けしないかな?と思っていたのですが、
もしかしてJDBCドライバが勝手に、SJIS変換とかしてるんでしょうか?
>>263 文字化け関連の記事を読めば分かるけど、
Javaである限り一旦はUnicodeになる訳だ。
そこで、ソースがWindows-31JとかSJISで一旦Unicodeに変換された後、
さらにEUC-JPとかに変換されると、文字コードの対応が完全じゃないので化ける。(というより別文字として認識する)
ぶっちゃけ、解決策は、独自に不具合の出る文字の対応表などを作って対応させるか、
ソースコードもDBもUnicodeにしてしまう。(ソースコードとDBを同じにするだけでいいかも)
なんだそりゃ?
その辺の89〜92区あたりってCP932特有の機種依存文字だろ。
DBがEUC-JPなら化けるわな。
・JSP/ServletではちゃんとMS932コンバータを使う
・DBはSJISまたはUTF-8にする(UTF-8の場合は面倒が多いので覚悟が必要)
・OracleのNLSのコンバータはMS932とはマッピングが違うからその辺も気をつけろ
ってぐらいやらないと、CP932の文字全てには対応できんぞ
267 :
263:2005/06/06(月) 15:06:11 ID:???
>>264-266 回答どうもです。
すでに稼動しているシステムなんで、DBの変更とかは効かないんですわ
MS932コンバータはかましてあるので、
一応、Eclipsのデバッグモードで、サーブレットまでは文字化けしてないのを
確認しております。
インサート時に化けているのでなぜかなと。
DBがEUC-JPだから化けちゃうよ、というのであれば、
そのまま上に報告してこの件は終了となります。
化けない策があるのなら、それを講じないといけないので(工数にもよりますが)、
調査しておりました。
>>266 DBをUTF-8にすると、OracleのNLSとMS932のマッピングの違いが問題になって、
何もしないと〜が化ける(異なるUnicodeポイントにマップされてるため)
SJISでいいんならそのほうが楽だぜ。で、type4ドライバじゃなくてtype2
ドライバを使う。これで、Unicode<=>MS932変換がJava内に閉じるので、
文字化け問題は基本的になくなるはず。
>>268 全てをUTF-8で統一したら、マッピングの違いとか無いんじゃないの?
だからこそ”統一”というような・・・
>>269 「全てを」ってのは、「クライアントも」ってことか。
俺はWindows環境のOracle clientからアクセスするケースも想定していた。
その場合はOracle NLSのマッピングに従って変換されるから、問題が
おきる。
現実問題として、クライアントの実行環境も全てUTF-8に強制するのは
不可能ではなかろうか。少なくともWindowsでは無理だし。
JA16EUCTILDE はこの場合は役に立たない?
>>268 >DBをUTF-8にすると、OracleのNLSとMS932のマッピングの違いが問題になって、
>何もしないと〜が化ける(異なるUnicodeポイントにマップされてるため)
化けねーよ。
>>273 Oracleのバージョンによるのかな。
俺が試したのは8.1.7の頃なんだけど、〜のに割り当てられる
コードポイントは、OracleとMS932とは違ってたよ。だから
当然化けるよね。
JA16EUCTILDEだのJA16SJISTILDEだの使ったことないので
使用感教えてほすい。
これだと、Javaのtype4ドライバで〜が化けなさそう、ってのは
想像がつくけれど
それぐらいかしら。
276 :
NAME IS NULL:2005/06/11(土) 19:24:42 ID:/LXb0PBN
Oracle10g(10.1)ってMacOSX(Server版じゃないの)で動きますか?
動作環境のとこ見ると、Server版だけしか書いていなくて・・・
(実機があれば試してみるんですが、現在手元に無いもので)
用途は自宅学習用なので、動けばいいですw
277 :
NAME IS NULL:2005/06/12(日) 00:58:08 ID:Nw+d8++k
Oracle9i です。
XML形式のデータをロードしたいのですが、何か良いユーティリティは無いでしょうか?
SQL*LOADER を調べたのですが、XML形式には対応していないようです。
>>276 とりあえず入れてみたら?
窓もDBは制式にサポートしているのは鯖版だけど、でも普通のWorkstationでも
サクッと動いたりするし?
インストーラーが文字化けするのですが
対処方法はありますか?
281 :
277:2005/06/12(日) 06:54:45 ID:???
>>278 おおおお、ありがとう!!
神
使えそうですね。
早速試してみます!!
>>280 せめてどのプラットフォームにどのVer.を入れようとしているかぐらいは
書くあーるよ。
文字化けしてるのなら、文字コードを英語にするなりにしてみるあーるよ。
CentOS 4に10gです。
スマセン。
米国在住で Oracle Database 10g Personal Edition の購入を考えています。
米国で販売しているものと日本で販売しているものには
どのような違いがあるのでしょうか?
メニュー等が英語か日本語かの違い程度で
取り扱うことができるデータは変わらない
という理解で正しいでしょうか?
ご存知の方がいらっしゃいましたらご教示ください。
ORACLEへ問い合わせれば済むことだと思います。
また出た。
アックス....Bomber....自爆!
>>284 違いは無い。
メニューもインストール時にデフォルト言語を日本語にして、かつO/Sが
日本語に対応していれば日本語に出来る。
288 :
284:2005/06/13(月) 22:55:35 ID:???
>>287 情報ありがとうございます。非常に助かりました。
289 :
NAME IS NULL:2005/06/14(火) 19:11:12 ID:lFQCDrfF
>>241です、、、
教えてください。
9iASのEnterprise Managerで表示されている
JDBC使用の「オープンJDBC接続」の数値というのは
延べ(?)の数値なのでしょうか?
更新したタイミングの瞬間の接続数なのでしょうか?
ずっと数値が増えっぱなしなので気になりました、、、
マニュアルを読んでも???です。
ご教授お願いします。
>>247さん
お礼が遅くなってすいません。ありがとうございました。
おっしゃる通りでした、、、
290 :
NAME IS NULL:2005/06/19(日) 15:41:17 ID:n9q/trAx
MySQLだと、あるテーブルが次のような構造になっていて
COL1:PK
COL2:PK
COL3
COL4
…
WHERE句の条件指定で、COL2 = ?
とした場合、インデックスは全く使われないのですが(COL1とCOL2を連結したインデックスとなっているから)
Oracleで同様の条件指定で検索するとインデックスが使われるようです。
なぜですか?
>>290 なぜって、そういう仕組みが実装されているからよ。
9.0.1か9.2あたりで実装されたような気がする。
Oracleって凄いだろ!
ヽ(´ー`)ノ
オラ狂う
PL/SQLについての質問なのですが、よろしいでしょうか?
-------------------------------------
OPEN CURSOR xxx_cur
LOOP
FETCH xxx_cur INTO xxx_rec
EXIT WHEN xxx_cur%NOTFOUND
≪データ加工&ワークテーブルにINSERT≫
END LOOP
CLOSE CURSOR xxx_cur
-------------------------------------
上記のようにCURSORループを行っているのですが、
実際にSQLをSELECT文として発行したときに比べて、
時間が非常にかかってしまっております。
SELECT文での実行時間は40秒弱だったのが
CURSORループの場合は12分以上となっています。
ログを取ってみたところ、最終行のフェッチまでは
SELECT文での実行と変わらないのですが、
CLOSE CURSORに10分以上かかっていました。
今までこのようなことはなかったため、
どうしたらよいかわからず困っています。
何かいい改善策はありませんでしょうか?
INSERT INTO SELECT FROM が40秒で、
CURSORループにすると12分ってこと?
それとも、SELECTだけでINSERTしないなら40秒っていってる?
改善案としては、バルクFETCHとかバルクINSERTを調べてみたら?
>>295 OracleのVer,いくつよ?
8.1.X移行なら
>>296が言っている様に複数行のFetchの場合には
「bulk collect into」を使う!
>296
回答ありがとうございます。
END LOOPまでは40秒で終わっているのですが、
なぜかCLOSE CURSORにめちゃくちゃ
時間がかかっているのです。
今はテスト環境がありませんので、
INSERT INTO SELECT FROMにしてどうなるかについても
明日試してみます。
また、バルクFETCH、バルクINSERTについて調べてみます。
ありがとうございました。
>297
回答ありがとうございます。
OracleのVersionは9.2.0ですが、
参照元のテーブルは8.1.6のDBにあります。
最終的に抽出される件数は100件そこそこなので、
BULK COLLECTで一括取得するがよさそうですね。
ありがとうございました。
Oracle10gをインストしたのですが
shutdown normalがすごく時間かかってしまう(abortならすぐ落とせる)ので
サービスのOracleDBconsoleを起動しないようにしたら
上記のような問題が起こらなくなりました。
OracleDBconsoleってどのようなサービスなのでしょうか?
またみなさんの環境でも同じような現象おこってますか?
もしよかったら教えてください。
301 :
NAME IS NULL:2005/06/20(月) 21:48:36 ID:8U3l7tKS
>>300 EnterpriseManagerのWeb版。10gからの新機能
起動してればJava経由でDBにセッション貼っているから(←知ったかかも)
いつまで経過しても落ちません。immediateならどうだろ?
同じことを自分も悩んでた。 orz
>>299 良かったらBULK COLLECTに変えた後の結果も教えてね。
303 :
299:2005/06/21(火) 08:18:03 ID:???
>302
SELECT 〜 INTO BULK COLLECTにしたところ、
若干(数秒)速くはなったようですが、
あまり変わりませんでした・・・。
で、バインド変数で条件指定しているところを、
SQLで実行しているのと同じ固定値にしたら、
40秒で検索できました。
バインド変数を使っているから遅い、ってことのようです。
今日は動的カーソルを使って、全てリテラル文字列になるようにしてみるつもりですが、
こっちのほうが速いなんてありえるのかなぁ。
>>301 レスありがとうございます。
新しく追加されたブラウザでの管理機能でセッション貼っているから
SHUTDOWNできないって事みたいですね。
さっき確認したのですが
OracleDBconsole止めてからブラウザでの管理機能は使えなくなってました。
使ったことないから気づかなかった・・orz
>>303 Oracleのinitの「CURSOR_SHARING=SIMILAR」を設定してみるとか?
306 :
NAME IS NULL:2005/06/21(火) 23:58:44 ID:7ULfsXQN
どなたか教えてください。
DBのレコードを大量に削除した後、
DBとそのINDEXにAnalyzeを実行しましたが、
逆に検索時間が遅くなってしまいました。
検索時間を早くする対処方法を教えて下さい。
307 :
NAME IS NULL:2005/06/22(水) 01:18:19 ID:Xwpjr34c
無駄なBLOCKリードをしているのかもしれませんね。
DELETEではなく、Truncateしては駄目なのですか。
>>306 OracleのDeleteは、そのBlockに将来また同じ値が挿入される事を
考えて論理削除しか行っていないからね。
307が言っている様にtruncateか、もしくはいったんtableをcompress=y
付きでexpして、impするしかないんでない?
309 :
306:2005/06/22(水) 22:07:03 ID:???
>>307 >>308 truncateは運用の都合上できないので、
tableをcompress付きのexpして、
impする方法を考えてみます。
アドバイスありがとうございました。
>>309 もう居ないかもしれんが・・・・・
テーブルの縮小(SHRINK)を使ってみては?
311 :
NAME IS NULL:2005/06/23(木) 15:04:45 ID:GRcP4ShR
oracle10g を使ってるんだが、Web版のOEMが重すぎ。
Web版だからどの端末でも管理出来ると謳ってるが、セキュリティが甘くなるだけなんだよ。
OracleDBConsoleサービスはかなりメモリを取るし、CPU使用率も増えてやがる。
お願いだから、Oracleは余計な事をするな。
PL/SQLでUTL_FILEパッケージを使ってファイル出力をする場合
改行コードをLFで出力するかCRLFで出力するか指定することは
可能でしょうか?
314 :
NAME IS NULL:2005/06/24(金) 01:52:32 ID:5dUTvcr8
>>311 Grid Control鯖作ればいいじゃん?
これだったらエージェントのインストールだけですむし?
まあ、究極はOEMを使わないことだけどねw
315 :
312:2005/06/24(金) 07:17:59 ID:???
>>313 ありがとうございます。
できればWindowsとUNIXで同じソースなのに
出力はcrlfとしたいのですがこういう場合はどうすればよいでしょうか?
SQLローダーについて質問があります。
既存のテーブルにCSVファイルのデータを流し込みたいのですが、
条件によって処理を変えることはできますか?
既存テーブルにキーが同じデータが存在していなければ、そのままINSERT。
キーが同じデータが存在していれば、既存データのある項目とCSVの項目の合計値でUPDATEしたいのです。
>>316 Where条件は出来るには出来るは、そんな複雑な事は流石に無理ポ
一度Workテーブルに一括ロードしてから、本番テーブルにInsert・Updateの方が良いのでは?
やっぱり、SQLローダーでは無理でしたか。
今までは、PL/SQLで処理してましたが、毎日数万件から数百万件をバッチで処理してたので、
処理時間短縮になればと考えていました。
320 :
318:2005/06/24(金) 22:40:47 ID:???
>>319 SQL*Loader ⇒ Insert Select ⇒ Update Select
の3発で出来るのではないかな?
恐らくPL/SQLでシコシコやるよりは、ずっと早いと思う。
もちろんSQL*Loader はダイレクト処理、Insert / Update はパラレル処理を行う。
>>316 そのUPDATE+INSERTならMERGEにするのがいいかも。
>>321 MARGEいいかもしれないですね。
ということは、SQLローダーで作業テーブルか何かに全部登録してしまって、
その後、MARGE使って一気に追加・更新してしまえば良いって事ですね。
Pro*Cでやればいいよ
324 :
NAME IS NULL:2005/06/29(水) 10:09:09 ID:G3urb/tw
質問です。
DBサーバ
WindowsNT4.0 + Oracle8.0.5(コードはSJIS)
クライアント
Red Hat Linux7.3 + java +jdbc(コードはEUC)
上記の環境で、
オラクルのとあるフィールドに半角カナが入っています。
それをクライアントからjava+jdbcで取得し
Stringに格納してファイルに出力をすると
特に、なんの変換も行っていないのに全角カナに
なります。
なぜでしょうか?
>>324 自己解決しました。
GDの描画時点で変換されていました。
スレ汚しすんません。
326 :
NAME IS NULL:2005/06/30(木) 00:10:59 ID:SHyCaJnD
Age
327 :
NAME IS NULL:2005/07/02(土) 12:56:06 ID:5vQs+zhR
【OS】XP SP2
【DB】Oracle9.2.1
【事象】C#で、コネクトをオープン
【エラーメッセージ】System.Data.OracleClient requires Oracle client software version 8.1.7 or greater
【対策】
調べたところ、「\oracle\ora92」にアクセスできる権限を増やすようになっていましたので、
「asp」、「network service」「iUser_xxx」「AUTHENTICATION_USER」を追加
XPのSP1では、上記対処方法で問題なくコネクトオープンできましたが、SP2ではエラーのままです。
他に対処する方法はありませんでしょうか?
328 :
NAME IS NULL:2005/07/02(土) 13:58:11 ID:/sCLNsNm
FireWall関係じゃないの?あてずっぽうだけど。
>>327 Oracleのバージョンは、9.2.0.1じゃなくてか?
9.2.0.6にパッチを当ててみれば?
>>327 9.2.0.4+Patch 3095277を充てるか、もしくは一番手っ取り早い解決方法としては
9.2.0.5以上にしてしまえば解決する。
331 :
NAME IS NULL:2005/07/03(日) 07:57:37 ID:B8mhAZ4F
>327 です。
すいません。Oracleは9.2.0.1でした。
客指定なんで、Oracleのバージョンをあげることはできないんです。
友人から、Oracleのポートを8080で指定してみれば?と言われたので、今日やってみます。
多分友人の言いたいことは、>328さんのおっしゃるFireWall関係の話だと思います。
9.2.0.5だったら、SP2問題は発生しないんですね。
また、報告します。みなさんありがとうございます。
>>331 そのErrorはFirewallというよりも、ファイルのパーミッションに起因して
るんだわ。
もしパッチを充てられないのなら「\oracle\ora92」以下のファイルの共有
アクセスの設定で、一度許可のチェックボックスを外して、でもって再度
チェックを入れてみてくれ。
これで大抵の場合は解決するはず。
333 :
NAME IS NULL:2005/07/03(日) 17:46:56 ID:NTB2FUF0
質問です。
SELECT - FOR UPDATE文ってどういう時に使うの?
そのトランザクション内でその値を使用している間は他から更新されないように、ってことかな?
#読み取り一貫性があるから他から参照するのは問題ないんだよね?
他に使うべきシチュエーションがあったら教えてください。
すいません、初心者で
トランザクション分離レベルとして repeatable read を保証する必要がある場合。
動作としては
>>333の理解で合っている。
335 :
333:2005/07/03(日) 20:51:47 ID:NTB2FUF0
> 334
ありがとうございます。
ORACLEでは、SERIALIZABLEとREAD COMMITEDしかサポートしないときいたのですが、
データベースで明示的にトランザクションレベルが指定できないだけで、
SELECT FOR UPDATEを使えば REPEATABLE READになるということでしょうか。
もしよければ教えてください。
他のトランザクションから更新されないならば、何度読んでも同じ値が返るのは当然
337 :
NAME IS NULL:2005/07/03(日) 23:51:14 ID:j51O+RbF
>>332 あーーー。もう一回ここを見ておけば良かったと後悔しています。
結局、クライアント側のバージョンを9.2.0.5にしました。
9.2.0.5にUPしてもアクセス許可がどうたらというエラーが出ましたので、アクセス許可を与えて事なきを得ました。
これからもこんなエラーで泣く事が多々あると思いますので、次は、>332さんの方法で頑張ってみます。
ありがとうございました。
338 :
NAME IS NULL:2005/07/05(火) 23:12:09 ID:uJo7tGIG
Pro*Cのトライアル版って入手できますか?
DBの試用版にはいってるだろ。だぶん。
Client CD
340 :
NAME IS NULL:2005/07/06(水) 05:15:54 ID:qLbhtRo3
>>333 SELECT ... FOR UPDATEは実際にUPDATEかます前にアプリ側で値のチェックをしたい時に使うんだと思うが。
>>334のいうようにREPEATABLE READの代わりに使用する、というのもあたってるけど、ちょい違う気が。
複数ユーザからの同時アクセス時に更新順位を保証するためには分離レベルだけで言うと
SERIALIZABLE以外には選択肢は無い。
しかしOracleのSERIALIZABLEは糞なんで、事実上、READ COMMITTEDしか使わない。
でもSELECT ... FOR UPDATEを使えばSERIALIZABLEを使わずとも更新順位の保証ができるので、
基本はREAD COMMITTEDで必要に応じてSELECTにFOR UPDATEを織り交ぜるんだと思う。
341 :
NAME IS NULL:2005/07/06(水) 17:27:27 ID:R+DqNlQG
338 です。
>>339 入っていました。ありがとうございます。
>>340 そもそもトランザクション分離レベルというのは更新の優先順位などとは全然
関係ないんだがな。トランザクション分離レベルが保証するのはあくまでも
複数のトランザクションが干渉しないという「トランザクション分離」について。
トランザクション間の更新順位などというものは複数のトランザクションの
依存関係の話だから真逆なわけ。
そのへん思い違いしているから「OracleのSERIALIZABLEは糞」なんて
誤解があるんだろう。
このスレの233からの流れが参考になるかも。
Oracle? DB2? Symfoware? HiRDB? SQL鯖?
http://pc8.2ch.net/test/read.cgi/db/1057059592/
343 :
333:2005/07/06(水) 22:49:29 ID:gs8k9I9L
340,342 ありがとう。参考になります。
344 :
NAME IS NULL:2005/07/06(水) 23:30:49 ID:WvE5DPIr
oracleでふりがなを50音順で並べたいのですが、
どうすれば一番早くできますか?
あ〜ん、A〜Zの順で出したいのです。
345 :
340:2005/07/07(木) 01:39:28 ID:yi7K5JGB
>>342 残念。SQL92をよく読んでみろ。SERIALIABLEの説明のところには「更新をシリアルに行う」と書いてある。
先行トランザクションが後発のトランザクションの影響でロールバックを強制される場合があるOracleの
SERIALIZABLE実装は、別に「違反している」わけでないが・・・
SERIALIZABLEをどういう風に実装しているか、というのはRDBMSによってそれぞれ。
どれとは言わんがもっとましな動きをするRDBMSが実際にある。
で、結論はOracleのREAD COMMITTED + 必要に応じてSELECT...FOR UPDATEのパターンのみしか考えられんてこと。
346 :
NAME IS NULL:2005/07/07(木) 02:24:56 ID:jdQVfjHg
>>344 alter session set nls_sort=japanese;とうまく組みあせろ。
Oracleはかなり昔はREAD COMMITEDしかなかった。
TPC-CをやるためにSERIALIZABLEが後で追加された。
だってrollbackセグメントの読み取り一貫性があったから、分離レベルを使い分けなくちゃならんようなことが実質的になかった。
348 :
340:2005/07/07(木) 07:33:17 ID:n7/aJRJ7
>>347 TPC-CをやるためにSERIALIZABLEが後で追加された。
そうなんですか。勉強になります。
「読み取り一貫性」は「マルチバージョニング」「MVCC」などの別の用語で
PostgreSQLやMySQL(InnoDB)にも実装されてます。
マルチバージョニングを使えるのを前提とすると、REPEATABLE READの存在価値というのが
わたしにゃどーしてもわからん。InnoDBが何でRRがデフォルトなのかいまだに謎。
Oracle開発者も「だっていらないでしょ」と思ってREPEATABLE READを実装していないんでしょうか。
349 :
340:2005/07/07(木) 07:37:12 ID:n7/aJRJ7
>>347>>348 ああ、でもOracleもversionいくつだか(5? 6? 7?)になってから読み取り一貫性
(SCNを使ったrollbackセグメント読み取り)が実装されたと聞いています。
それ以前はどういう状況だったんでしょうか。
>>345 serializableは、シリアルに実行した場合にとりうる結果以外の結果には
ならないことを保証するだけで、その順序を保証するわけじゃない。
やっぱりそのへんちゃんと理解してないんじゃないか?
規格で保証してないことを勝手に期待して「まし」だ「糞」だとか言ってもなぁ。
351 :
345:2005/07/08(金) 03:43:14 ID:56uVMvCR
352 :
NAME IS NULL:2005/07/08(金) 13:14:02 ID:RBhrvYTe
ディスクやテーブルスペースなどの容量の見積もりをすることになったのですが
1.参考にできるサイトや書籍があったら教えてください。
2.あとからディスクの追加やテーブルスペースの拡張をしなくていいように
見積もれといわれているのですが、テーブルや索引に変更がないものとして、
どの程度正確に見積もれるものか教えてください。
3.容量見積もりをサポートしてくれるツールがありましたら教えてください。
Oracleは9iの予定。当方はOracleのプログラム開発は経験ありなのですが、
運用系はあまり経験がないレベルの者です。
>>352 喪前の所はテストも何にも無しでいきなりエイヤッでDB作ってそのまま本番
運用に入るのか?すげぇな。
もし正確にDBのサイジングを実施したいのなら、まずはテストDB作って、
でもってそこに本番環境よりも少ないサンプルデータ流し込んで、その時の
サイズを参考にするのがベストだと思うが?
質問させて下さい。
文字列の % をLIKEで検索出来るでしょうか?
postgreSqlなら
SELECT * FROM TABLE WHERE TABLE LIKE '%\\%%'
で出来るんですけどOracle9iだとヒットしません。
よろしくお願いします。
355 :
オラオラ:2005/07/08(金) 15:29:19 ID:Ow+bqtop
Windows2003 server に 8.0.6を入れたんだけど、
data base assistantが起動しません。
インスタンスを作りたいんですけど、どうすればいいのでしょうか?
356 :
NAME IS NULL:2005/07/08(金) 22:36:39 ID:plz9Q6QG
>>354 SELECT * FROM TABLE WHERE COL1 LIKE '%1\%%' escape '\';
357 :
NAME IS NULL:2005/07/08(金) 22:43:27 ID:plz9Q6QG
>>355 dbcaなんて軟弱なものに頼るんじゃなくて、マニュアルで作れ。
窓だったらoradim使ってインスタンス作成、でもってそのあとは
sql*plusでcreate dbだっ!
>>355 その組み合わせがそもそもサポート外なきがする
>>309 遅レスだけど、8i以降ならexp/imp使わなくても表の移動で表の
再編が出来る。
ALTER TABLE 表名 MOVE TABLESPACE 表領域名;
361 :
NAME IS NULL:2005/07/10(日) 10:40:33 ID:aSsiSYyD
Oracle10gで、SQL文の長さって制限あるの?
開発言語にもよるのかな?
>>361 9iは64kだった。
10gも変わってないんでないの?
363 :
361:2005/07/10(日) 14:32:46 ID:aSsiSYyD
>362
サンクス
SQL文に改行入れた場合って、改行コード込みなんでしょうかね。
>>363 試したことはないけど、多分込みになる様な気がする。
365 :
NAME IS NULL:2005/07/11(月) 01:52:05 ID:9DSygcAc
質問っす。知ってたら教えて!!
Oracle10Gはコストベースがデフォでルールベースが廃止されて
いるのだとすると、テーブルに統計情報が無い場合って
ただ遅くなるだけ?もし統計情報が無いのにSQLが早い場合って
何が考えられるの?
デフォルトのコスト情報がつかわれたような...
そのプランが早いか遅いかは状況次第。
それか、統計がなかったら統計をダイナミックサンプリングするから、同じプランでも微妙に遅くなるかも。
>>361 開発言語に依存してどーすんだよ (((( ;゚Д゚)))ガクガクガクブルブル
ORACLE初心者ですが、下記のようなSQLは実現出来ないのでしょうか?
DELETE FROM TABLE1
FROM TABLE1
LEFT JOIN TABLE2
ON TABLE1.A=TABLE2.A
WHERE TABLE1.B=TABLE2.B
A、BはそれぞれTABLE1とTABLE2の要素です。
稚拙な質問で申し訳ありませんが、どなたかご教授ください。
369 :
368:2005/07/11(月) 18:17:08 ID:???
すいません。
自己解決しました。
お騒がせしました。
>>353 >>359 返事が遅くなってすいません。回答ありがとうございます。
じつはテストDBを使っての容量の推測は終わってるんですが、納品物でこういう
計算資料が欲しいといわれて見せられたのがOTNのまさにその資料でした。
データ件数は予想可能なのですが、項目や索引の追加はありそうですし、
無駄に大きくとったvarchar2の使用率などわからないので計算では出せなそうです。
そのことはお客さんにも話したのですが、開発標準にあるので必要、誰もあとから検証
しないから形だけでよいとのこと。う〜ん世の中こうやって回ってるんですね。
>>370 varchar2は無駄に大きくとってもそんなに要領を圧迫しないよ?
何のためのvarchar2よ?
>>371 仮にvarchar2(100)で定義されていた場合、各レコードそれぞれ何バイトの
データが入っているかがわからなくて、レコードの平均長が求められないのでは?
で
>>370の場合は適当に資料揃えればいいんだから、
テストDBにanalyzeかけてレコードの平均長を算出。
後はOTNの見積りにぶち込んで適当に体裁整えれば完成。
373 :
NAME IS NULL:2005/07/12(火) 00:54:51 ID:BXJ4PnWo
oracle8.0
drop table したテーブルを復旧する方法はありますか??
drop tableってデータファイルから完全に消えちゃうんで、
復旧不可能って聞いたことがあるんですが・・・。
>>373 喪前に根性と気合と、かつ運と環境があるのなら出来る。
運とは・・・
・DBがArchivelog modeで動いていること
・Drop tableする前のDBのFull backupがあること
・Drop tableする前までのArvhive log fileが全てあること
環境とは・・・
・Drop TableをしてしまったDBの複製を作れる環境
上記の二つが揃っていた場合、point-in-time recoveryを行って
drop table直前のDBを別の環境に再作成しろ。
でもって、その後はexp/impするなりすれば復旧できる。
375 :
NAME IS NULL:2005/07/12(火) 01:21:14 ID:BXJ4PnWo
>>374 運がなかったみたいです・・・。
本番DBのFULL BackUpではなく、
別環境に本番DBを毎日インポートしたインスタンスがあります。
本番はアーカイブログモードなんですが・・・。
これじゃあダメですよね?
374さんありがとうございました。
>>375 別環境にimpした中に、drop前のテーブルがあるだろ?
ある程度は救えるんでないの?
>>375 運が無かったか・・・。
それにしてもFull backup取ってないのに、archive logモードで
運用する意味って何なんだ・・・?
滅茶苦茶メリットが少なそうなのだが・・・。
378 :
NAME IS NULL:2005/07/12(火) 09:06:36 ID:6PWarFlF
Nested Loop と Hash Joinのコスト比較ができる方法はないですか。
Hash Joinのほうが効率がよくなるケースを具体的に出したいのです。
#テーブルの50%以上結合の場合、とか何件以上結合する場合、とか
知恵があったらお願いします。
379 :
NAME IS NULL:2005/07/12(火) 18:07:06 ID:+/u7RXhg
OracleにBログ、もしくはPログろ呼ばれるものってありますか?
381 :
NAME IS NULL:2005/07/12(火) 18:17:05 ID:+/u7RXhg
>>380 そうだ!そうです!!
先輩はきっとBLOBのデータを消せと言っていたのに、
私が勝手にBログと聞き違えたっぽいです・・・。
OracleにBログなんて呼ばれるものあったっけ!?
と思って聞いてみたのですが、BLOBです、きっと。
380さん、ありがとうございました。
382 :
NAME IS NULL:2005/07/12(火) 18:33:55 ID:IGlVpn3D
>>332 もう見てないかもしれないけれど。
おっしゃるとおりの方法で、エラー回避できました。
ありがとうございました。
383 :
NAME IS NULL:2005/07/12(火) 19:31:27 ID:duA3FLcb
>>381 いいから先輩にもう一度確認しろ。
「多分」でデータ消すのはアホ。
>>365 10gでは自動的に統計情報が収集されるそうな
(どういうタイミングかはわからんけど)
>>378 SQLトレースとると、オプティ麻衣座がみなすコストがわかる。
ってか、時間測ってくらべたら?
>>365 統計情報はSQLのコスト計算に使うだけなので、統計がある/ないだけではSQLが早いか遅いかの理由にはならん。
388 :
NAME IS NULL:2005/07/13(水) 06:42:39 ID:VWlRg0ra
>365
ありがとう
>387
10Gってコストベースだから、なければ遅くなるような気がしてます。
だから毎日アナライズするんでわ・・・
389 :
NAME IS NULL:2005/07/14(木) 00:11:49 ID:9pp8y8je
OracleOraHome92HTTPServer を開始できましぇん。。
開始したらすぐ勝手に停止します。
なぜでしょう。。
IISとか他のWebサーバがOSブート時に自動起動してポート80を占有していないか?
サービスをもう一度見直せ。
391 :
NAME IS NULL:2005/07/14(木) 00:25:06 ID:9pp8y8je
みあたりませんです。。
ちなみにApacheは開始できます。
netstatしても80はないんでつが。。
>>391 多分ドライブレターが間違って登録されている可能性が大だな。
1. cd \\oracle\ias\Apache\Apache
2. net stop OracleHTTPServer
3. apache -u -n OracleHTTPServer
4. 窓のサービスを開いて「OracleHTTPServer」が消えている事を確認 (時間がかかるかも?)
5. apache -i -n OracleHTTPServer -f "[正しいドライブレター]:\oracle\ias\Apache\Apache\conf\httpd.conf"
質問ですが!!
Triggerの中でMergeって使えますか???
>>393 コードはこんな感じです。
BEGIN
MERGE INTO I_仕入明細
USING A_仕入明細
ON (I_仕入明細.事業所CD = :OLD.事業所CD
AND I_仕入明細.KEY = :OLD.KEY
AND I_仕入明細.訂正区分 = :OLD.訂正区分)
WHEN MATCHED THEN
UPDATE
SET I_仕入明細.生販単価 = 99999
WHEN NOT MATCHED THEN
INSERT
VALUES( :OLD.事業所CD
,:OLD.KEY
,:OLD.訂正区分
,:NEW.生販金額
,:NEW.伝票生販金額
,:NEW.入力者CD);
END;
395 :
NAME IS NULL:2005/07/14(木) 20:26:48 ID:4gxhhHw/
よろしければお知恵を貸して下さい。
1つのストアドプログラムの中で
インスタンスAのテーブルからデータをセレクトして
インスタンスBのテーブルを更新したいのですが
(AとBは異なるSIDです)
可能でしょうか
DBリンクを使用すれば出来ますよん。
397 :
NAME IS NULL:2005/07/14(木) 21:20:35 ID:Nm91mRyP
Oracle 9iです。
以下のSQL文を実行するプロセスが複数個いるのですが、
これでデッドロックが発生するかどうかでもめています。
こんなのの競合でデッドロックするものでしょうか?
select * from X for update;
目的は表Xの全行に対してロックをかけるためなのですが、
そのことの是非はこの際、無視してください。
#デッドロックが起きたと言って来てるのですが、信じていいやら…
>>397 Dead lockが起きたというのなら、まずora-60が発生しているか確認する。
でもって、必ずtraceが吐かれるから、そいつを見ればどのStatementが
Dead lockの原因になったかが分かる。
起きる・起きないをここで議論するよりも、上記のログの確認が一番手っ取り
早いのでは?
>>398 Traceは見ました。
「select * from X for update;」で発生しているのも確認しました。
ただこのステートメント「だけ」で起きるものなのかどうかを
気にしています。#そう書けばよかったです。ごめんなさい。
表X上の行に対して事前にロックをかけているならば、ここでデッドロックが
おきるのは納得できるのですが、「そんなことはない 」と言い張っています。
こんなselect単体でデッドロックがおきるものなのでしょうか?
最終的にSolaris8 に Oracle8i(8.1.7.4) をのせたいのだが、
手元にあるのは8.1.7.0のCDのみ。
インストールした後、パッチをあてようとセキュリティアラートを見ると8.1.7.4のものばかり・・・。
8.1.7.0 から 8.1.7.4にするにはどうしたら良いの?
誰か教えて。。。
>>399 1つのトランザクションが1つのTableにLockを掛けただけでは
デットロックは発生しませんよ。
2つ以上のトランザクションがそれぞれ同じ2つ以上のTableをLockしようとした場合に
デットロックの可能性が有りますよん。
>>399 セルフデッドロックが起きているっていうのか?( ゚Д゚) ハァ?
トレースにはどのリソース、オブジェクト、トランザクション、ロックモードとか
出力されるはずだ。
とりあえず貼り付けてみろ。
>>400 1. ボラクルと保守契約を結んでCDを(σ´д`)σゲッツ(死語)
2. metalink.oracle.comから落とす(こいつも保守が必要?)
>>403 ありがとう。。。
8.1.7.0のCDだけでは無理って事だよね。
それがわかればOK。
とりあえず今日は帰れるよ。
今週末の連休はなくなりそうだけど・・・・。
>>404 モツカレー。
書き込み時間、カコイイッ!(´∀`)
帰りにパチンコ行くしかっ!
下のコードはは単体では動くのですが、プロシージャとかからだと
「ORA-04091: table A618.A_仕入明細 is mutating, trigger/function may not see it
ORA-06512: at "A618.TG_A_仕入明細2", line 2
ORA-04088: error during execution of trigger 'A618.TG_A_仕入明細2'」
というエラーがでます。どうしてでしょう??
*******************************
BEGIN
MERGE INTO I_仕入明細
USING A_仕入明細
ON (I_仕入明細.KEY = A_仕入明細.KEY)
WHEN MATCHED THEN
UPDATE
SET I_仕入明細.生販単価 = 999
WHEN NOT MATCHED THEN
INSERT ( 事業所CD
,KEY
,仕入NO
,訂正区分
,削除FLG
,行
,商品CD
,JANCD
,商品名
,カナ名
,入数
,ケース数
,バラ数
,総数)
VALUES( A_仕入明細.事業所CD
,A_仕入明細.KEY
,A_仕入明細.仕入NO
,A_仕入明細.訂正区分
,A_仕入明細.削除FLG
,A_仕入明細.行
,A_仕入明細.商品CD
,A_仕入明細.JANCD
,A_仕入明細.商品名
,A_仕入明細.カナ名
,A_仕入明細.入数
,A_仕入明細.ケース数
,A_仕入明細.バラ数
,A_仕入明細.総数);
END;
>>407 MERGE INSERT毎にCOMMITしたら、どうなる?
>>408 ,A_仕入明細.バラ数
,A_仕入明細.総数);
COMMIT;
END;
ってな感じで書いたけどエラーがでました_| ̄|○
書けない・・・?
>>409 MERGEはUPDATE文と異なって、同一行を何度も更新することができないはず。
なんで、COMMITすれば、チャラになるかなぁと思った。
う〜ん。
ループかなんかで複数のレコードをMERGE INTOしているんだろけど、
I_仕入明細の同一行に対しては、UPDATE、INSERTは1回だけにするように
改修できないか?無理なら、MERGEをやめるしかないと思うよん。
>>410 MERGEって、
MERGE INTO I_仕入明細 更新先 と
USING A_仕入明細 更新元? で
ON (I_仕入明細.KEY = A_仕入明細.KEY) 条件とあうものがあれば
WHEN MATCHED THEN で
あわなければ
WHEN NOT MATCHED THENを
A_仕入明細のデータの数だけ実行するという考え方でおKですか??
>> ループかなんかで複数のレコードをMERGE INTOしているんだろけど
これの意味がよくわからなかったっす(つД`)
ちなみにコードはトリガー内に記述してあります。。
>>411 なるほど、それはMERGE文の問題ではなくトリガー制限の問題ではないかい。
CREATE TRIGGERのON句で指定したTableは、A_仕入明細か?
それと、CREATE TRIGGERにFOR EACH ROW句を指定してないか?
だとすると、A_仕入明細はトリガー内では変更表の扱いになるので、
エラーを回避するには、FOR EACH ROW句をはずしてエラーにならないかどうかじゃな。
突然ですが、検索エンジンを自分で作りたいのですが
しっている人がいれば教えていただきたいのですが。
今現在C言語を学校で勉強しています。
最近ファイル処理を勉強しました。FILE *fout ; など
C言語で開発できるのでしょうか。
414 :
413:2005/07/15(金) 16:37:12 ID:???
検索エンジンについて勉強して
自分で開発したいんです。
そこで、皆さんのなかでしっている人が
いれば、勉強の仕方を教えていただければと
思っておりました。
>>414 バブルソートやハッシュ、B−Treeとかいったアルゴリズムは理解しとんの?
そもそも、スレ違いや。
416 :
413:2005/07/15(金) 18:13:24 ID:S3xcJdnv
>>415 恥ずかしながら
まだコンピューターを勉強し始めの
学生の身分です。
はじめに何をしたらいいのか、
参考書とか知っていたら教えてもらいたいのですが。
Oracle10g使っていての質問です。
はっきり言ってOracleの問題じゃないかも知れませんが、
実行のうちIOがほとんどを占めていて
非常にまずい状態です。
Window2003Standard+Oracle10gでIOを速くする方法、
もしくは、何か他の方法を教えてください。
ちなみにアナライズはやってます。
ディスクはRAID5でDBで150G前後使っています。
これを交換することは出来ません。
どうぞよろしくお願いします。
>> なるほど、それはMERGE文の問題ではなくトリガー制限の問題ではないかい。
俺もそうかもと思っています。
>> CREATE TRIGGERのON句で指定したTableは、A_仕入明細か?
A_仕入明細も指定しています。
>> それと、CREATE TRIGGERにFOR EACH ROW句を指定してないか?
>> だとすると、A_仕入明細はトリガー内では変更表の扱いになるので、
>>エラーを回避するには、FOR EACH ROW句をはずしてエラーにならないかどうかじゃな
実際のこーどには :OLD.行名 など使いたいのですが、
FOR EACH ROWをはずすと :OLD を使用しているのがエラーになってしますので・・・
やはり無理ですかね・・・。・゚・(ノД`)・゚・。
>>417 Raid 5で組んでいる時点で終わってるんだけどな。
まずI/Oっつっても、Readが多いのか、Writeが多いのか、どっちなんだ?
それによって対応方法も全く違ってくると思うぞ。
考えられる事は・・・
・Readが多い場合
1. db_buffer_cacheが適切に設定されているか確認
2. db_file_multiblock_read_countの設定 (RaidのStripeSizeも確認しろよ)
3. タコなSQLのチューニング (ちゃんとIndex使っているか?)
4. pga_aggregate_targetの適切な設定 (Sort処理が多い場合ね)
・Writeが多い場合
1. db_buffer_cacheが適切に設定されているか確認
2. db_writer_processesの数を増やす
3. fast_start_mttr_targetの設定値をビジネスのニーズに合わせて決める
こんなところか?
まだ出来そうな気がするが、まあ、後は他の誰かが突っ込んでくれるだろう。
>>416 俺なら、でかい本屋に行って自分にあった本を探すな。
最初はあまり難しそうな本を買わずに、はじめての・・・とか、初心者向けの本を買って、
記載されているコードを片っ端から入力してコンパイルして実際に実行してみる。
その次は、応用編と関数辞典の本を買ってきて、とりあえず理解できなくても最初から最後まで読破してみる。
そしてら、いろんな奴が書いたコードを眺めてみる。
なんでこんなことしてんだろ、そーいえば、あの本にこんなことが書いてあったな・・・となる。
まあ、こんな感じで、俺はやってきたぞ。
>>418 う〜ん。無理じゃなぁ。
俺なら、トリガーはやめて、トリガー起動のきっかけとなるDML操作をストアド化して、
そちらでMERAGE文なりを実行するな。その方が拡張性も保守性も高い。
>>419 後から考えたらpga_aggregate_targetはWriteの方だったよ・・・。
欝だ、氏のう・・・。
それとWriteにはlog_bufferのチューニングもあるな。
>>416 情報処理試験の勉強がいいと思う。
>>415さんが書いてるようなこともどんなものかくらいは分かるし,
プログラミングの知識も付くし,資格取れれば就活の役にも立つでしょ。
まだ若いんだし,いきなり目的に向かわず回り道するのがいいと思うよ。
と三十路になった俺が言ってみる。
424 :
NAME IS NULL:2005/07/17(日) 13:33:19 ID:Jh3gyMq0
Pro*Cからストアドファンクションを呼び出す場合の質問です。
ストアドファンクションにvarcharを渡して結果をセットしてもらって
返してもらうようなストアドファンクションがあるとします。
このストアドファンクションは場合によっては何もセットしないで返す
場合があるのですが、このときNULLが返ってきたといってエラーが発生します。
これは仕様なのでしょうか?
何かセットしておくとエラーは発生しません。
Pro*Cって使ったことないんだけど、NVLとか使わないとダメなんじゃね?
>>424 NULL判定にはインジケータを使うんじゃなかったっけ。
427 :
NAME IS NULL:2005/07/17(日) 15:04:56 ID:Jh3gyMq0
242です。
インジケータを使うことは知ってますが、今回質問したストアドファンクションをコール
したところではインジケータは指定してませんでした。他のSQL select 〜 into :buf:indicator
的な書き方をしたところもあります。そのようなところではエラーは出ません。
確かにおっしゃる通りインジケータを使用していればエラーが出ないのかもしれないです。うーむ。
428 :
NAME IS NULL:2005/07/17(日) 15:06:55 ID:Jh3gyMq0
247です。書きこみの
> 242です。
は 424です。失礼しました。
429 :
NAME IS NULL:2005/07/17(日) 15:11:58 ID:Jh3gyMq0
428です。またまた間違えました。
書きこみの
> 247です。 書きこみの
は 427の間違いです。失礼しました。
>> 427, 428, 429
うちら、そんなに細かい所気にしないから大丈夫だよ。
流れで大体分かるし?
通常のBツリーインデックスつくるとき、1インデックスあたりカラム数っていくつまでOKなの?
数多くとった場合に容量が大きくなる以外の問題ってありますか?
433 :
431:2005/07/18(月) 12:58:56 ID:???
>432
オプティマイザの動きが変わるということでしょうか?
統計情報が変わるから?インデックスのリーフが細かく分かれるから?
難しい。。。
434 :
NAME IS NULL:2005/07/18(月) 15:09:58 ID:1ucbz+oH
424, 427, 428, 429 です。
その後、買おうとか思っていた
OracleC/C++実践入門 Pro*C/C++とOCIによるDBプログラミング
DBMagazine SELECTION を買いました。
まだ確認していませんが、謎が解けそうです。
>>431 パフォーマンスさえ気にしなければ、結合キーのカラム数に制限はないと思う。
ただ、経験的に言わせてもらうと結合インデックスのカラム数の上限は、3か4つだな。
俺だったら、そーいったテーブルの主キーは、単なるシーケンスキーにしてしまって、
意味のないものにしてしまう。
何故と聞かれると、…経験的にだ。
まぁ、正規化論を持ち出せば、複数の結合キーで完全従属の関係が成立するのは困難だろーからだ。
436 :
NAME IS NULL:2005/07/18(月) 21:44:30 ID:c9Olrm+h
表結合時の負荷について質問です。
表結合するときは、副問い合わせで予めレコードを絞ってから
結合すると負荷が少ないと聞きました。
例えば、
-- 普通の結合
SELECT TBA.COLA, TBA.COLB
FROM TBA, TBB
WHERE TBA.COLA = TBB.COLA
AND TBB.COLC = 'ABC'
/
-- 負荷が少ない結合
SELECT TBA.COLA, TBA.COLB
FROM TBA,
(SELECT TBB.COLA
FROM TBB
WHERE TBB.COLC = 'ABC') TBB
WHERE TBA.COLA = TBB.COLA
/
こんな例が挙げられていたのですが、
Oracleが内部でやってる事って結局同じなんじゃないかと思うんです。
(レコードを絞ってから結合するって意味では)
後者のSQLの方が本当に負荷は少ないんでしょうか?
>>436 それだとたぶん同じ。プランをとってみれ。
- 絞ってからジョイン
- ジョインしてから絞る
では絞ってからジョインしたほうが早くなるが、それはオプティマイザの仕事。
だから、簡単なSQLなら結果は同じになる。
438 :
436:2005/07/18(月) 23:00:25 ID:???
>>437 ありがとうございました。スッキリしました。
439 :
417:2005/07/19(火) 10:02:15 ID:DguP5aqJ
>>419さん
返事が遅くなって申し訳ありません。OCN規制くらってました。
RAID5は致命的なんでしょうか?
RAID6も検討したんですが、お金が足りず、
RAID10との比較で候補が多いRAID5になったのです。
納期が延びそうなんで、教えていただいた事を
いろいろ試してみたいとおもいます。
ありがとうございました。
>397, >398です。自己(?)解決です。
Oracleからの問い合わせ結果が来ました。
#担当が問い合わせしていたようです。
select * from X for update;
update X set …
commit
を実行するプロセスが3個で発生するそうです。
Oracle Database アプリケーション開発者ガイド - 基礎編
10gリリース1(10.1) (B12494-01)
p5-17 行ロックの明示的な取得
読め、とのことでした。
#うちのOracleは10だったんだ…
こんなパターンがあるとは知りませんでした。少し恥ずかしい。
WindowsのOracle9iでWindowsのドメインを変更したら
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does no
が出たらしいのですが、なぜでしょうか?
再起動したら出なくなったらしいです。
>>439 Oracle DBでRaid 5はかなり致命的だね。
Raid Controlerがかなり優秀ならいいんだけど、間違いなくパフォーマンスは
Disk I/Oに引っ張られる。
ちなみにボラクルの推奨はS.A.M.Eと言って「Stripe And Mirror Everything」と
いうものだ。
確かにRAIDコントローラがへたれだと高I/Oはきついね。
RAID5でも普通の表領域とTEMPとUNDO(RBS)とREDOは別の障害グループできれば
別チャネルに配置してれば少しはましなんだけど、全部1つの論理ディスクに
詰め込んでると最悪。そのくせなぜかパーティションは細かく切ってあったり(笑)
444 :
417:2005/07/19(火) 13:58:33 ID:DguP5aqJ
>>442,443
そうなんですか・・・。RAID10だとDisk4台いるからなぁとか
安易に決めてしまってorz.
ちなみにRAIDコントローラはIBMServerRAID7tです。
これAdaptecのSerial ATA RAID 2410SA と同じものだとおもいます。
やっぱりだめだめですかね。
つーかSATAってなめてんのか状態ですかね。
だってお金ないんですもの。
利用系が決まってないのに、マインニングかなにかしりませんが、
とりあえずデータをDBにつっこめ指令でこんなことやってます。
5分ごとに13000点のシーケンサからの情報を
DBにつっこむ仕事なんですよ。
とりあえず2分で仕事は済んでるんですが、
デイリーバッチで削除でサーバが死にそうになってます。
追いついてるんでとりあえず大丈夫ですが、
これに利用系が始まったらガクブルです。
いろいろありがとうございました。
削除バッチ時に通常の運用を止められるなら、残すデータだけを引き抜いて、
テーブルをtruncate、dbloaderで再ロードというのも手なのかな。
止められない場合は広い範囲での広域削除より1件ずつの削除が早いことがあるから、
削除対象のキーを抜き出しそれを元に1件ずつ(または数件ずつ)delete/commitを
発行というのも試してみよう。
446 :
NAME IS NULL:2005/07/19(火) 15:31:26 ID:2igzNlS/
Oracle9.2
OSはWindows2000 Server です。
リフレッシュが終了した時点で、ストアドを実行させたいんですけど、
非同期な無限ループプログラムでも作って、
データディクショナリを監視してなきゃ無理ですか?
>>446 リフレッシュって、Materialized Viewのリフレッシュのこと?
448 :
NAME IS NULL:2005/07/19(火) 18:38:54 ID:2igzNlS/
>>447 そうです。MVのリフレッシュ時になります。
リフレッシュしてる間は、データディクショナリみれば分かるんですが、
リフレッシュ完了とともに、ストアドを呼んで、他のテーブルのデータを
更新したいんです。
>>448 なんでなんで?
BEGIN
--
DBMS_MVIEW.REFRESH('mview??',・・・);
--
UPDATE TanoTable SET ・・・;
または、
TanoTable.woKoshinsuruProce(・・・);
--
END;
じゃー、なんで駄目なの?
>>441 WindowsサービスとかでOracleをいじる場合、OS認証でOracleにアクセスする。
Oracleが動作するユーザーの情報が変わるようなことをすると、おかしなことになるかも。
451 :
NAME IS NULL:2005/07/19(火) 23:35:37 ID:6h7uGnsY
大型ストレージだと、パフォーマンスにおいてRAID5や6とRAID10との差は無いに等しいんだがな。
>>451 大型ストレージはGBクラスの馬鹿でかいCacheが乗っているからね。
でもここで言っているのは窓に引っ付けている様なものだからね('A`)
その性能は推して知るべしかと・・・。
453 :
NAME IS NULL:2005/07/20(水) 09:14:38 ID:mzF3WcDr
高い高いっていうけど
oracleって実際いくらぐらいするの?
どこで価格わかります?
500万くらい
455 :
NAME IS NULL:2005/07/20(水) 10:28:00 ID:mzF3WcDr
>>454 定価ですよね?
実勢売価ってわかります。
456 :
NAME IS NULL:2005/07/20(水) 10:50:39 ID:GjU77huE
代理店に電話するのがはやいぞ。近くのOracleの支店でもいいぞ。
この前10g Standard Edition One で10万ぐらいだったぞ。
大規模は知らん。
457 :
NAME IS NULL:2005/07/20(水) 11:07:21 ID:haeTqgav
>>449 >----------------------------------
>BEGIN
>--
>DBMS_MVIEW.REFRESH('mview??',・・・);
>--
>UPDATE TanoTable SET ・・・;
>または、
>TanoTable.woKoshinsuruProce(・・・);
>--
>END;
>----------------------------------
これってリフレッシュの完了を待ってから
UPDATEしてくれますか?
リフレッシュ2時間くらいかかります。
>>455 ライセンスによって、数十万から数千万/年まである。
どういう契約をしたいのだ?
oracle10g EE 1CPU 定価500万のやつの実勢売価が知りたいです。
代理店によってぜんぜん価格が違うんでしょうか?
Oracle10g Standard Edition Oneなら60万円ほどか。
>>422 へ?
pga_aggregate_targetはReadの方じゃないのか?
セッション毎のソート領域などを含めた最大サイズを指定するんだからさ。
>>460 pga_aggregate_targetによって、1-pass及びMulti-passが左右される。
結果的にTemp領域の書き込みのコントロールが行われる訳だから、
漏れ的にはWriteと判断した分よ。
462 :
417:2005/07/20(水) 17:04:03 ID:???
>>445さん
一件ずつの削除をすればという指摘で気づいたことがありまして、
削除って別に一日一回じゃなくてもいいよなと。
で変更を上司に相談したらあっさりOK.
処理を書き換えて明日適用してみます。
とりあえず正時ごとにデータ消すように変更してみました。
ありがとうございました。
Oracle9iで
SQLNET.AUTHENTICATION_SERVICES= (NTS)
をコメントアウトすると
sqlplusでconn /as sysdba;
とすると
ORA-01031: insufficient privileges
というエラーになってしまいます。
これを接続可能にはできないでしょうか?
>>464 無理だろうね。
一体なんのためにそんな事したいのかさっぱりわからないけど。
どうしてもやりたかったら、conn sys/(sysのパスワード) as sysdbaで
やるしかないんじゃない?
すみません質問です。
sqlldrでcsvファイルを読み込むctlファイルを作成しています。
csvファイルが「A,B,C,D,E」となっているのですが、
対象テーブルは「C,D」しか項目が無く、残りは不要なのです。
どのようにctlを記述すれば良いのでしょうか。
csvファイルを変更するというのは仕様的に無理のようです。
検索しても、sqlldrについては大抵基本形しか載ってないので
よくわかりませんでした。
ご教授御願いします。宜しく御願いします。
>>467 A FILLER,
B FILLER,
C 型,
D 型,
E FILLER
>468
スペサル(´▽`)dクス!!!
470 :
467:2005/07/21(木) 15:33:46 ID:???
>468
・・・と思ったのですが、
テーブルのフィールドがC,Dしか無いので
やっぱりよくわかりません。
csvファイルが「12,34,56,78,90」で、
下記のようなテーブルのCに「56」、Dに「78」を読ませたいのです。
CREATE TABLE HOGEHOGE
(
C VARCHAR2(2) NOT NULL,
D VARCHAR2(2) NOT NULL,
)
宜しく御願い致します。
>>470 A FILLER,
B FILLER,
C 型,
D 型,
E FILLER
>>470 >>468が言ったように
load data
infile 'hogehogenomoto.csv'
truncate
into table hogehoge
fields terminated by ','
(A FILLER, B FILLER, C VARCHAR2(2), D VARCHAR2(2), E FILLER)
で、ダメか?どんなエラーになる?
473 :
470:2005/07/22(金) 13:32:10 ID:???
ありがとうございます。
テーブルには、実際に「A」「B」「E」という項目は存在しないのです。
CREATE TABLE HOGEHOGE (C VARCHAR2(2) NOT NULL, D VARCHAR2(2) NOT NULL, )
なので、皆様が教えて下さった方法で記述する場合、
実際には「A」「B」「E」の部分には何を記述すれば良いのでしょうか?
CSVファイルは5項目あり、テーブルは2フィールドしか存在しないのです。
474 :
470:2005/07/22(金) 13:37:14 ID:???
もしかして、「なんでもいい」のでしょうか。
ちょっと試してみます。
475 :
470:2005/07/22(金) 14:27:06 ID:???
「何でも良い」で正解なのですね。
ご迷惑をお掛けいたしました。うまくいきました。
どうもありがとうございました。
逆に、CSVファイルが2項目、テーブルが5項目である場合に
CSVファイルの1項目を分割してテーブルに入れることは
できるのでしょうか?(これも調べたのですがわかりませんでした)
「A」に、CSVファイル項目1の1-2桁
「B」に、CSVファイル項目1の3-4桁
「C」に、CSVファイル項目1の5-6桁
「D」に、CSVファイル項目2の1-2桁
「E」に、CSVファイル項目2の3-4桁
ということは可能でしょうか?
「B」に、"B CHAR "SUBSTRB(:A, 3, 2)"とか記述してみたのですが
エラーが出てしまいました。
列の区切りをバイト数で指定できなかったっけ?
477 :
470:2005/07/22(金) 15:52:00 ID:???
>476
ありがとうございます。
「A」に、"A CHAR "SUBSTRB(:A, 3, 2)"とは記述できるのですが、
「B」に、"B CHAR "SUBSTRB(:A, 3, 2)"と記述するとエラーになってしまいます。
他に良い区切り方があるのでしょうか?
POSITION指定も、他項目の文字列長が固定でないので無理そうです。
Aに2ついれんだよ
479 :
470:2005/07/22(金) 19:06:05 ID:???
ありがとうございます。
Aにふたつ、とはどのような意味でしょうか?
馬鹿な質問ですが、申し訳御座いません。宜しく御願いします。
perlあたりで入力データを加工してやるほうが早い。
count(1)ってどういう意味?
count(*)と何が違うの?
482 :
NAME IS NULL:2005/07/23(土) 01:29:13 ID:THJgMsE5
483 :
NAME IS NULL:2005/07/23(土) 13:52:19 ID:dU+DCZA8
1CPU-2コアまでって書いてあるじゃん。
将来的に1CPU-4コア、1CPU-8コアでどうなるかは書いてないけど。
484 :
NAME IS NULL:2005/07/25(月) 16:16:19 ID:Tabw6zKt
>482
ハードスペックでCPU2個搭載可能なら、1個しか搭載していないサーバでも2CPU分(×2ね)購入が必要だったかと。
速度の話を一つ( ・ω・)∩です。
3000件(5フィールド)のデータがあるとして、
1.ストアド内でカーソルで回して使用
2.最初に配列に取り込みカウンタで回して使用
上の数字は、適当なものだけど、こゆ場合は、どっちが速いの?
カーソルって1レコード分のデータのみメモリにあるのかな?
DBアクセスしてるとしたら、2.のが速そうなんだけど。
だれか分かる人〜
>>485 スレ移すなら誘導しとけよ。マルチうぜ〜とかいわれるぞ
メモリに収まるなら全部、きついならカーソルだろう
>>485 >>487 に同意。
ただ、早ければよいと言うものでもないだろー。
あとあとのことを考え、保守性のよい 1.だな。
489 :
NAME IS NULL:2005/07/25(月) 21:32:44 ID:jETJkHyS
ドン臭いおまいらカモられてるしww
871 名前: NAME IS NULL Mail: sage 投稿日: 05/07/25(月) 20:56:49 ID: ???
4Dの楽しさってのは、
「ライトウェイトスポーツを駆ること」に似ている。
小排気量(シェアが小さい)で非力(なサポート)であっても、
軽量コンパクト(開発環境)・高回転型エンジン(?)を武器に、
限界までドライビングテクニック(4Dノウハウ)を駆使して、
大排気量車(オラクルetc.)をカモる楽しさがある。
4D is LWS(ライトウェイトスポーツ)DB.
http://pc8.2ch.net/test/read.cgi/db/1106663626/l50
490 :
485:2005/07/26(火) 08:59:01 ID:???
レスどうもです。
最初あっちのスレに書いたら、過疎ってたのでここへ・・・。
マルチっぽくなってしまってすいません。
上記の処理は、どちらもサーバー内での処理で一度に多数の接続を裁く必要があるませう。
それを考慮すると、メモリ使用を控えて、カーソルを使用がやはり無難ですかね?
カーソルにしても何度も同じフェッチ行を見に行くなら、
最初に1レコード分だけメモリに読み込んだ方が速いんですかね?
皆様のご意見、募集中!
エクスポートでSEQUENCEを指定してエクスポートしたいのですが
テーブルを指定してエクスポートはできるのですが
SEQUENCEはどのように指定すればよいでしょうか?
>>493 んっ? ようはSequenceだけをexpしたいということ?
それだったら結論から言うけど、「無理」だ。
Imp先でsequenceを再作成しろ。
構文が知りたかったらimpする時にshow=yをつけて確認すればいい。
むりぽか〜
本日ORACLE9.2をインストールしました。
途中にSYSパスワードとSYSTEMパスワードを設定しました。
SQLPLUSでログインするときに、SYSTEMではログインできるのに
SYSではログインできませんでした。
尚、パスワードはSYSはSYS、SYSTEMはSYSTEMとしました。
SYSではログインできない仕様なんでしょうか?
またSYSとSYSTEMの違いがわかりません。
497 :
NAME IS NULL:2005/07/28(木) 20:45:37 ID:dn+lWXQe
できない。
レファレンス嫁
>>496 sys権限を有したユーザーはDBの起動・停止をしたり、rman使ってバック
アップ取ったりとDBそのもののオペレーション時に使う。
言って見ればスーパーユーザーだな。
systemは、ユーザー作ったり、権限与えたりと通常のオペレーション時に
使うことが多いかな。
それともしリモートからsysユーザーでアクセスしたいのなら以下のステップを
踏む必要がある。
1. orapwd使ってパスワードファイルの作成
2. oracleのinitでremote_login_passwordfile=EXCLUSIVE
3. DBの再起動
conn sys/sys as sysdba;
じゃだめなの?
500 :
NAME IS NULL:2005/07/28(木) 23:37:01 ID:cp2I9xv+
Oracle8.0.4のシステムを10gにEXP/IMPで
バージョンアップしたいんですが
一度8.0.6にバージョンアップしろとマニュアルにあります。
8.0.6は何処で手に入れればいいんですか?
初心者の私に回答をお願いします。
SQLPLUSを使って、Aというテーブルを作成しました。
ID number型
value clob型
という構造です。
このID=1のvalueの値だけをxmlファイルとして出力したいのです。
ファイル出力にはspoolを使うと聞きました。
しかし、実行し、ファイルの出力はできるのですが、ファイルをダブルクリックで開くと
スタイルシートを使用したXML入力はできません。エラーを訂正してください。
「更新」ボタンをクリックするか、または後でやりなおしてください。
という画面になってしまいます。
メモ帳や秀丸で開くと、どうやら改行されているのです。
この改行をなくすとXMLとして開けると思うのですが、
どのようにしたら良いのかわかりません。
わかる方よろしくお願いします。
>>503 本当に改行をなくしたらXMLとして開けるのか?
秀丸で改行をなくしてやってみたか?
>>504 はい。
行数がかなりあるので、全部の改行をなくしたわけではく、
ある部分のタグで囲まれた箇所をを切り取って、
コピーし、そのファイルの改行をなくしたら
しっかりとXMLファイルとして認識されました。
506 :
NAME IS NULL:2005/07/31(日) 04:32:18 ID:X1+WE+XV
プログラマ募集中ー
有志によるMMO製作です。
24時間体制でガンガン開発するでぇーーー
CreateGame〜陸海空オンライン〜
プログラマ募集中!力ある奴だけこぃ!!
ついてこれる奴だけ。募集。
あと、歴史に名を残したいやつ
507 :
496:2005/08/01(月) 16:09:14 ID:???
>>505 どうやってSpoolしているのか書いてみたら?
そうしたら何らかの対応策が出てくるかも知れない。
509 :
NAME IS NULL:2005/08/02(火) 20:03:46 ID:xehHEe8c
510 :
NAME IS NULL:2005/08/02(火) 21:29:52 ID:d+Di/l0H
Pro*C/C++を使って作ったアプリをinittabから起動するには、環境変数などは
どこに定義する必要があるのでしょうか?
/etc/default/init ?
OS:Solaris 2.9
Oracle10i
511 :
NAME IS NULL:2005/08/02(火) 21:54:52 ID:OgTTNq8M
データベースアプリケーションをinittabから起動する???!!!
>>509 …なんだこりゃ。
下半期がっかりWeb大賞にノミネートしたい。
>>510 ここで訊くこっちゃないなあ。
>>511 当然、Oracle のプロセス起動を待つように出来てるんでしょう。
>>508 はい、それではもう少し詳しく書きます。
SQLPLUSを使って、Aというテーブルを作成しました。
ID number型
value clob型
という構造です。
このID=1のvalueの値だけをxmlファイルとして出力したいのです。
spool c:/testest/testes.xml
select value from A
where id = 1;
spool off
上記のようなSQL文を実行しました。
しかし、ファイルの出力はできるのですが、ファイルをダブルクリックで開くと
スタイルシートを使用したXML入力はできません。エラーを訂正してください。
「更新」ボタンをクリックするか、または後でやりなおしてください。
という画面になってしまいます。
メモ帳や秀丸で開くと、どうやら改行されているのです。
この改行をなくすとXMLとして開けると思うのですが、
どのようにしたら良いのかわかりません。
わかる方よろしくお願いします。
あんた、そのファイルの中身を見たんだろ?
そのファイルがXMLだと思う根拠を書け。
>>514 根本から間違っている気がするぞ、それ。
拡張子をxmlにしているだけじゃないかよ。
せめてこれぐらいやっていたかと思っていたぞ。
set pagesize 9999;
set linesize 100;
spool hogexml.out
select '<A>'||chr(10)||'<Value>'||value||'</Value>' ||'</A>'
from A
where id=1;
Oracleインスタンスは、1台のサーバ上にて複数動作できます。
とありますが、
インスタンスを複数起動するような事って意味があるんでしょうか?
どうしても、ここがイメージできません。
>>517 例えばプロダクション環境だと1つの鯖に1インスタンスというのが当たり
前かも知れないが、開発時にフェーズとかに合わせて複数のインス
タンスを1つの鯖上に構築したりするよ?
大型鯖使って開発とかしていると、1つの鯖上に3つとか下手したら4つ
ぐらい動いているなんて事もある。
開発環境ならありかも。
でも本番系でそれを前提にするのはトラブルの元。
漏れもメリットがわかんね。
>>519 DB側から見たら確かにメリットは無いかも知れないが、全体的に見れば
少ない台数の鯖で済む訳だから、鯖の導入費・管理費・維持費を軽減
出来るというメリットが考えられる。
>>520 前に2台鯖があってお互いがお互いのスタンバイというのを見たことがある
片方落ちるともう片方にフェイルオーバーする
まあ、これも
>>520の言うとおりコスト削減の一環だよね
なんでDBがわかれてんの?
1つのDBで別スキーマにすればいいやん。
SQL鯖とかDB2では複数DBを作るっていう発想をするかもしれんけど、
コスト削減がどーたらこーたら言うなら、1つのDBのほうがよくない?
>>522 運用にかかわって来るけど、ひとつのDBにしてしまうと、それはそれで
色々と問題が出てくる。
例えばバックアップの時間ひとつ取ってみても、片方がOLTP系で
片方が夜バッチがガンガンといった形態とかだったら、困るっしょ?
それとDBをアップグレードしなければならない様な自体が発生したら
どうなる?
下手したらライブラリやプログラムのバージョンとかが、片方サポート
されなくなったりする事態も発生するかも知れない。
昔ソラリス上に3つくらいインスタンス起動したら
セマフォの取り合いでこけました。
525 :
NAME IS NULL:2005/08/04(木) 13:32:44 ID:kbkePFlJ
SQLのFROM句に書けるような返値を持つファンクションを作成できますか。
例)
CREATE OR REPLACE FUNCTION F_AAA(P VARACHAR2) RETURN ????? IS
BEGIN
:
:
END;
/
SELECT A FROM F_AAA;
このようなことができる ファンクション F_AAA をつくりたい。F_AAA の返値型は何にしたらいい?
>525
なんとなくやりたいことがわかるような気がするが、たぶん無理。
私も過去に同じこと考えたけど、結局動的SQL使いました。
>>523 そこまでシビアな運用なら素直にサーバーを2台にしたほうがいい。
2インスタンスにしても片方で夜間バッチががんがん動いてたら
一方のパフォーマンスも相当落ちると思う。
1台で2インスタンスでもライセンスは2台分だよね?
Oracleのライセンスと比べればサーバーの費用なんて些細な出費。
>>527 プロセッサーライセンスって、インスタンス数に応じるんっだったけ?
どうもこの辺りの事って、昔から良く分からん・・・。
>>529 インスタンス数は関係無い。あくまで搭載しているCPU数。
デュアルコアの場合はコア数 × 0.75(小数点以下切り上げ)。
表を削除した場合に索引は削除されますよね。
順序も削除されるんでしょうか。またシノニム等、どうなるのでしょう。
環境があればすぐためせることだろ。
SEQUENCEはテーブルとの関連がないからテーブル消しても関係ない。
SYNONYMはINVALIDになるんかな?
ゲシュタルト崩壊Age
ビット演算できますか?
ビット演算は何のためにあるのですか?
540 :
NAME IS NULL:2005/08/11(木) 20:41:44 ID:x7/CNJk3
バカを選別するため
541 :
537:2005/08/12(金) 01:16:56 ID:???
>>538 ありがとうございます。
やっぱりストアドプロシジャしかないんですか。
なるほど、確かに選別されている。
544 :
537:2005/08/13(土) 01:57:51 ID:???
>>542 早とちりで申し訳ありません。
ありがとうございました。解決しました!
Oracle 10gトライアルを入れたんですが、
データベースコンフィグの段階で"operating system resource
quota exceeded"とエラーが出ます。
RAM 512 MBなのでメモリ不足ですか?
>>546 すいません、Windows XP Pro SP2です。
>>548 今日インストールし直したところ、リソース超過のエラーも出ず
データベース作成できました。
手順は変えていないのですが…
ありがとうございました。
データベースリンク先のオブジェクトを検索したとき、このオブジェクトのカラム情報は
1.データベースリンク先の共有プールに保持される
2.データベースリンク元の共有プールに保持される
3.どちらの共有プールにも保持されない
どれでしょうか?
552 :
NAME IS NULL:2005/08/20(土) 13:50:37 ID:bMW4C0ad
Oracle 9iで、以下のような表から、
dept| emp
--------------------
10 |'emp1'
10 |'emp2'
20 |'emp3'
30 |'emp4'
このような結果を取り出す方法はありますか?
10 emp1,emp2
20 emp3
30 emp4
文字列連結するようなSUMみたいなのがあれば良いかと
思ったのですが見つけられませんでした。
select dept, func(ename) from emp
group by dept
>>550 カラム情報の意味がわからんけど、SQLがキャッシュされるのは
デフォルトではリンク先でオプションか何かで元を使うようにできたんじゃなかったかな
554 :
NAME IS NULL:2005/08/20(土) 21:51:55 ID:NHeAsWxR
Oracle 10g のプラットフォーム
Windows Server 2003 と Linux のどちらが
おすすめですか?
Linux
Windows
Mac OS X
そりゃそうと、Windows 2003 でドメインコントローラにしてると
10g インストール失敗するのな。
>>554 Linux
p4 1.6GHz + Mem 768MB (以下略
の環境でCPU使用率が
Win2kPro
常時100%。Oracle以外で使い物にならなくなる
Linux (Miracle Linux バージョン忘れた)
3%〜10%(高負荷時)。他のこともできる
でした。
559 :
554:2005/08/21(日) 10:50:10 ID:v9pT6RNI
>>558 情報提供ありがと。CPU使用率、そんなに違うんだね・・・
やっぱり、OracleにはUNIX系ですかね。
エンタープライズなんとかのサービスを落とせば? <Win系
561 :
NAME IS NULL:2005/08/21(日) 18:24:46 ID:38Shf4++
oracleのバックアップってどういう方法が一般的何ですか?
ちなみにLINUXとオラクル10gを使用しています。
10gならRMANだろ。
>>559 CPUやメモリ使用率はOSによってサンプリングの方法が違うから単純に比較はできないが、
Windowsの方が余分にリソースを必要とする。
Windowsで10gを使うなら64bit Windowsが安定するまでまったほうがいいかもしれない。
どう見てもlinux/unixで作ってWindowsに移植してる感じだもんね。
>>561 RMAN+Tapeだな。
RMAN=>Disk=>Tapeというパスもあるだろうけど、RMANから直接Tape
というのも一般的だな。
10gR1まではSolaris
10gR2からはLinux
Windowsはやっぱし最後なんでねの?
>>564 >10g→Windowsネイティブ開発
エミュレータからコンバータに変えたって事だろうか・・
その記事のHTML DBというのが気になるが使ってみてどうなのでしょうか?
よさそうならダウンロードしてみようと思うけど、その昔OPOやKey SQLではずれ引いたから先に評判を知りたい。
>>567 お遊び程度にはいいかも試練が、実際にまだまだ使える代物ではないよ。
モルモットになりたいのならどうぞ。
HTML DBって何?
>>571 >>564のリンク先を読むべし
中小企業にもオラクルなんて言ってるのはマーケティングの連中だけだろう。
HTML DBはマーケティングの連中が開発に無断で出所の怪しい外注に作らせた感じがありあり。
あ?
中小企業もOracleいぱーい使ってまつが?
HTML DBはUS Oracle御謹製の品だけど?
574 :
NAME IS NULL:2005/08/23(火) 22:55:58 ID:R3f9gBbu
PL/SQLでの
Javaでいうところの\r(復帰)や\t(タブ)や\b(バックスペース)などの
文字列表現ってどうなるのでしょうか。
たくさんたくさん検索したんですが見つけられなかった・・・
CHR(13)
CHR(9)
CHR(8)
>>575 「アスキーコードが通るよ」ぐらい教えてあげるとさらにベター。
そして判明する驚愕の真実、574のDBはEBCDICだった。
579 :
NAME IS NULL:2005/08/24(水) 23:44:26 ID:ovSUaESc
Windowsファイバーはスレッドのもっと細かいやつよ。
それに使い道があるかどうかはまた別の話。
>>579 CPUの切り替えをアプリケーションからの命令でおこなう擬似スレッドをファイバーという。
ひとつのファイバーが実行権を譲る命令をコールするとはじめて別のファイバーが動き出す。
セマフォなどで実行状態にあるスレッドを1つに限定しているのに似ているが、はるかにシステムの負荷は小さい。
もともとはスレッドが実装されてなかった頃のUNIXの機能らしく、その機能を使ったアプリをNTに移植するために
作られたAPI。NTカーネルのみで9x系には実装されてない。
MSSQLにはファイバーを利用するかどうかのオプションがある。接続ユーザー数が多く、1接続あたりの
リクエストがまばらで処理時間が短い場合に有効とされている。
582 :
NAME IS NULL:2005/08/25(木) 09:06:48 ID:qfp9Yyuw
テーブル領域の自動拡張のタイミングは、95%越えたらとかではなく
updateやinsertを実行して、足りなかった時に拡張されるのでしょうか?
たぶんそう。
>>582 その2つに違いがあるのか?
おんなじことを言っているように思うが。
>>584 >その2つに違いがあるのか?
いや、普通に違うだろw
586 :
NAME IS NULL:2005/08/27(土) 01:10:49 ID:fvMU8Fhc
上のほうで同じエラーを出している人がいましたが、解決したのでしょうか?
私は以下の状態で悩んでいます。
■OS Windows XP SP2
■Oracle 9.2.1.0
■現象
休止後、再開させる時に、「復元情報が取得できませんでした」みたいなエラーが発生しました。
chkdsk終了後、Windowsは起動しましたが、Oracleに接続しようとすると
「ORA-01033: ORACLE initialization or shutdown in progress 」が発生します。
サービスは、データベース、リスナー共に「開始」されており、再起動させてみましたが、
結果は同じでした。
どうしたらいいものでしょうか?
教えてください。
587 :
NAME IS NULL:2005/08/27(土) 02:27:05 ID:fvMU8Fhc
>586です。
休止前に、OsqlEditでデータを更新していました。
Oracleのバージョンは、9.2.0.1です。
すみません。
>>587 DOS窓開いて、"sqlplus /as sysdba"で繋ぐ。
"shutdown abourt"で強制的にインスタンスを落として、でもって
その後"startup"でどうなるかやってみてくれ。
>>588 スペルミスっていた。
「shutdown abort」ね。
アラートログとトレースファイル見るべし。
591 :
NAME IS NULL:2005/08/27(土) 08:16:25 ID:jE3A7gEu
その現象、10gでも直ってないんだろうな。
oracleに拠れば、windowsのthreadの問題らしい。
その状態になると、shutdown abortも効かないことがあるので、
プロセスをkillするしかない。
killしたままだとだめなので、リカバリをする。
レジストリのAUTO_STARTをFALSEにして、
プロセス開始による自動statrupを一旦解除する。
startup restrict (これだとthreadを使わない)
shutdown normal
レジストリのAUTO_STARTをTRUEに戻す(頻発するようなら戻さず、手動startupにした方がいいかもしれない)。
>>585 insertもupdateもしないのに勝手に「95%超え」たりすることは
なんいんだから、同じだろ。
入れ物がいっぱいになったから入れ物を大きくするのと、
いっぱいになりそうなのを検知して入れ物を大きくするのは
違う動作だ
いっぱいになりそうなのを検知するってどういうことだ?
insert/updateが発生していないのにどう検知するというのか。
それに100%をいっぱいとみなすか95%をいっぱいとするかは
PCTFREEの設定しだいだし。
表領域の容量とブロックの空き率のPCTFREEは話は別。
監視ソフトとかで使用率を定期的にチェックしていれば
検知とか出来るだろ。自動拡張と手動拡張の違い。
間違っているかもチラ余白。
>>594 insert/updateで95%を超えても拡張せず、アイドル状態の時に空き状態を調べるプロセスが
95%を超えているのを発見して拡張する。ということではないかな。
こういう動作をするかどうかは知らないけどね。
smonってツンデレだよね。
>>591 どういう理由でWindows版はOracleの各プロセスの実装をスレッドにしたんでしょうね。
パフォーマンスなどスレッド化のメリットもわかるが、
Oracleが肥大化した現状だとアドレス空間の枯渇やスレッドがクラッシュした場合などの
安全性を考えるとデメリットしか見えてこない。
64bit化でアドレス空間の問題は解決するかもしれないけどね。
599 :
NAME IS NULL:2005/08/27(土) 22:43:39 ID:75ZqRiPp
>>586 です。
>588さん ありがとうございます。
やってみましたが、だめでした。
>590さん ありがとうございます。
何もか書かれていませんでした。
>591さん ありがとうございます。
startup restrict を使用すると、以下のようなエラーが返ってきました。
ORA-01041 内部エラーが発生しました。hostdef エクステンションが存在しません。
原因: HSTDEF にあるHSTDEF エクステンションへのポインタがNULL です。
処置: オラクル社カスタマ・サポート・センターに連絡してください。
sqlplus /nolog
で、sqlplus起動直後にやったのは間違いでしょうか?
よろしくお願いします。
>>599 問題を切り分けたい。
「startup restrict」ではなく「shutdown abort」してでもってその後に「startup mount」
でDBがあがるか試してみてくれ。
でもってもし「mount」までもっていけるのならば「recover database」でリカバリ
かけて、その後に「alter database open;」であげてみる。
「startup mount」すら通らないのならば、メモリかもしくはファイル自体がおかしく
なってしまってる事になるから、バックアップから戻すしかないだろうな。
それともしパスワードファイルを使用してるのならば、こいつも再作成してみてくれ。
窓だとパスワードファイルがぶっ壊れていて「ORA-0141」が発生する事があるらしい。
601 :
NAME IS NULL:2005/08/28(日) 01:39:50 ID:p7bETBOB
>600 さん
だめでした・・・。
もう、打つ手がないのかもしれません。
ありがとうございました。
与えられたキーワードが、何を意味しているのかいろいろとぐぐったりして楽しかったです。
>>601 startup mountした時にどんなエラーがalertに吐かれている?
603 :
590:2005/08/28(日) 08:33:43 ID:???
何も書かれていないってことはありえないと思うんだが・・・。
604 :
NAME IS NULL:2005/08/28(日) 11:04:04 ID:oU1bnhKQ
創価学会を批判するとこういう奴に絡まれるよ
札幌市中央区の日蓮正宗の寺院に三千回以上の嫌がらせ電話をかけたとして、偽計業務妨害の罪
に問われた鳥取県倉吉市、創価学会員でパチンコ景品交換所従業員谷口博司被告(53)の判決公判
が二十六日、札幌地裁であった。吉村正裁判官は谷口被告に懲役一年、電話機一台没収(求刑・懲役
一年六カ月、電話機一台没収)を言い渡した。
判決理由で吉村裁判官は「社会通念を逸脱した回数の嫌がらせ電話をかけ続けたのは明らかで、
執拗(しつよう)、陰湿であり、酌量の余地はない」と指摘。「創価学会の鳥取県の副支部長だった被告は、
一連の電話を日蓮正宗の誤った教義をただすためと正当化し、今後もこの寺に電話をかけると公言するな
ど、反省の情に乏しい」と述べた。
判決によると、谷口被告は昨年六−七月と同十二月−今年四月に三千七十五回、自宅から同寺院に
電話をかけ続けて宗教論争を持ちかけ、寺院の業務を妨害。創価学会広報室によると、谷口被告は
事件当時、鳥取県内の副支部長だった。
http://www.hokkaido-np.co.jp/Php/kiji.php3?&d=20050826&j=0022&k=200508262453
クライアントPCからOracleサーバ接続し、データを取得(Select)
しているのですが、この接続経路にダイアルアップルータがあります。
ルータは、通信があれば自動的に接続し、1分間無通信だと
自動的に回線を切るのですが、検索時間が長いSQLを発行すると、
1分以上、検索に時間がかかる為、回線が切れて
「ORA-03113: 通信チャネルでend-of-fileが検出されました」になっちゃいます。
手操作でPingでも発行し続ければ良いのですが、
VB+oo4oで自動実行している処理でして、SQL*Netの設定で
何とかならないか、教えて欲しく。
環境はW2KでOracleはV9.2.0.6.0です(サーバ、クライアント共通)。
通常は、そんなに時間かからないんですが、時々例外的に大きな
範囲でSelectする時がありまして。
606 :
NAME IS NULL:2005/08/30(火) 23:59:45 ID:ljyDea4D
>手操作でPingでも発行し続ければ良いのですが、
VBで非同期処理させれば?
Oracleサーバー側のtcp_keepalive_interval を1分未満にすれ。
TCP/IPのOSカーネルパラメータ。
パラメータの名前はOSによって違うから、しらべれ。
SQLNET.EXPIRE_TIMEは最短1分だから使えん。
>>606 それも考えたのですが、通常は一瞬で終わってしまうし、
色々難しそうでして・・・・・。(何ヶ月に1回、発生するかどうかだし)
>>607 糸口ありがとうございます!。調べてみます。
609 :
NAME IS NULL:2005/09/01(木) 20:21:17 ID:f5Id/osC
質問なのですが…
Windows2000にOracle8を入れて、
別なWindowsPCからSQL*Plusからログインしようと
してるのですが、うまくいきません。
ユーザー名、パスワードはいいとして、
ホスト文字列には何を入れるのでしょうか?
PC名、SIDなど試しましたが、ダメでした
(エラーORA-12154になってしまいます。)
ひょっとすると、Oracle側で何か設定が必要なのでしょうか?
(リモートロクイン権限?のような設定など)
よろしくお願いします。m(__)m
>>609 NET Configuration Assistantでサービス名を設定。
611 :
609:2005/09/02(金) 00:18:35 ID:LQtzF6hm
>>610 アドバイスありがとうございます。
おかげでログイン出来るようになりました。
ホントに感謝です。
Win2000にOracle8(R8.0.X)って、動作保証外だよ。
ま、つなっがってるならいいか。 ( ・ω・)
そうそう言い方ってある。どっかの某掲示板だと
徹底的に叩かれるし、人が集まる。しかもポ(ry
>>609,
>>610 昔はTNSNAMES.ORAの書き方に関するクラスとかあったんだけどな。
最近は皆GUIか。
>>614 SI Object Browserに飼いならされて標準のGUIツールさえ使えない技術者がいっぱいいるのが現状ですからのう。
ただスクリプト派のオレでもdbcaは使うことにしてますよ。
616 :
NAME IS NULL:2005/09/03(土) 19:25:11 ID:IzO8g/R+
dbcaに限らず、GUI設定ツールの利点は、文法ミスをすることが無くなることだな。
とはいえ、設定を見るときには直にファイルを見るほうが早いけどね。
実機やXサーバの入ってるマシンの前までいくのも面倒だし。
>>616 dbca使ってスクリプト作成させたら思い切り文法間違えたものが
吐き出されていたことがあっぞ?w
だから10gでも未だにcreate db文は自分で作成している。
618 :
NAME IS NULL:2005/09/05(月) 23:21:18 ID:bCceaznf
RedHatLinux9.0にOracle10gをInstallしたのですが、sqlplusでバックスペースを入力すると、^Hになってしまいます。 Ctrlキーと一緒に打てば効くのですが何か手はないのでしょうか?
>>618 Oracle 以前。
stty erase ^H
それはそうですがsqlplusのコマンドライン編集も何とかなんないかなあ。
621 :
NAME IS NULL:2005/09/06(火) 01:21:53 ID:FVdRs1lV
ASMで新規REDOログファイルをREDOログメンバに追加する際に
出るエラーに関して質問があります。
ASMでファイルを作成すると、
+<ディスクグループ名>/<DB名>/<ファイルタイプ>/<ファイル名>.<SEQ>.<添え字>
というフォーマットになると思うんですが、
REDOログファイルのメンバにこの形式で追加しようとすると、
OMFからエラーが表示されて作ることができません。(EMからでもSQLPlusからでも)
エラーは「ファイルにOMFのファイル名があります。」
という内容のものでした。
添え字を含まなければ作成できるようなのですが、
設定書を提出するので、できればこのフォーマットで作りたいと思っています。
どなたかエラーの回避方法をご存知の方いらっしゃいましたら、
是非お願いいたします。
バージョンは、10.0.2で、RAC環境(ノードは2台)です。
よろしくお願いします。
ファイル名はASMが決めちゃうんじゃなかったっけ?
それとかぶっちゃいやんなエラーじゃない?
623 :
NAME IS NULL:2005/09/06(火) 01:55:02 ID:FVdRs1lV
言葉が足りず、すみません。
+<ディスクグループ名>/<DB名>/<ファイルタイプ>/<ファイル名>.<SEQ>.<添え字>
の中で、ファイルタイプまでは同じで、
ファイル名、SEQ、添え字は全て異なるものを手書きで指定して作成しているのに、
エラーになるとです。
正直全くわかりません・・・T-T
624 :
NAME IS NULL:2005/09/06(火) 02:06:41 ID:FVdRs1lV
おそらく分かりづらかったと思います。すみません。
例を挙げると、
+DATA/ORCL/onlinelog/REDO_1.256.1
が元からあったロググループ1のログファイルとして、
そのグループ1に
+DATA/ORCL/onlinelog/NEWREDO_2.257.2
と手書きで追加しようとするとエラーになります・・。
>>624 O/Sは何?
V$ASM_DISKとv$asm_fileには何が出てくる?
それともし「ファイルにOMFのファイル名があります。」 と言われてるんなら
単純に「reuse」オプションして作成してみたら?
>>623 +DATA/ORCL/onlinelog/REDO_1.256.1がOMFが自動でつけた名前なら
追加する場合もOMFに自動でつけさせる必要がある。
初期化パラメータに次の設定があるならOMFを使ってるのはほぼ間違いない。
DB_CREATE_ONLINE_LOG_DEST_1 = '+DATA'
あとはコレだけでログファイルが追加される。
ALTER DATABASE ADD LOGFILE;
>>626 RAC組んでるんだからTHREADの指定も必要なのでは?
628 :
623:2005/09/06(火) 06:01:26 ID:MGWSZhnQ
>>622,624-626
レスありがとうございます。
>>625 v$asm**にはもちろん新規追加したいファイル名はありません。
reuseオプションですか・・・そんなオプションがあったとは。
当方夏からOracleを触り始めたため、素人同然なので調べて試してみます。
また、OSはWindowsServer2003 ST×2台です。
>>626 DB_CREATE_ONLINE_LOG_DEST_1に+DATAがあります。
REDOグループが4つ(RACなので1ノードに2グループずつ)あるのですが、
ALTER DATABASE ADD LOGFILE;
と打ったとき、どのグループに追加されるのでしょうか?
質問ばかりですみません・・・。
>>627 THREAD・・・初期パラでしょうか。
さきほど自宅に帰ってきてしまったので、それも調べてみます。
みなさまありがとうございます。
また自分でも調べてみます。
何か分かりましたらお答えいただけると幸いです。
>>628 RACの場合、どのTHREAD(インスタンス番号)のどのグループに
REDOを追加するかという指定が必要。
構文は・・・
alter database add logfile thread スレッド番号 group グループ番号
'ファイル名' size ファイルサイズ reuse;
だよ。
630 :
623:2005/09/06(火) 06:26:34 ID:MGWSZhnQ
>>629 うおっ、っぽいですね!早速出社して試してみます。
データベースファイルでもそのような構文で
表領域へのデータベースファイルの追加ができそうですね!
これでできたら本当に感謝です!
>>630 ASMの話とRACの話が混ざってるように思えるが、
+DATA/ORCL/onlinelog/REDO_1.256.1 はASMの完全修飾名だからASMが自動でつける名前。
>>622の指摘のとおり、完全修飾名を手動で付けようとしてるからエラーになってるとも思います。
RAC+ASMがどのくらい使われてるか知らないけど、Standard Editionの価格設定もあって広まってるのかな?
面白そうな話題なので解決したら教えてください。
テーブル制約を持つ親テーブルの名前を得るにはどうしたらいいですか?
633 :
NAME IS NULL:2005/09/06(火) 20:24:21 ID:FVdRs1lV
>>631 まさにその通りで、ASMで勝手に名前が付けられます。
表領域を作成するときなどは、ファイル名は勝手に<表領域名.SEQ.添え字>になります。
コマンドは create tabelspace <tablespace名> だけです。
表領域にファイルを追加するときや、REDOグループにファイルを追加するときなどに、
ファイル名を手書きせずに書く方法があればなぁ、と思っています。
>>629のコマンドも結局ファイル名書かなければいけないですし。
今日はDBを触れない日だったので、また色々試して報告します。
oracle9iで、SQLのログを見ることはできないのでしょうか。
tcp/ipをdumpして見ていますが、よくわからないです。
>>634 いきなり通信パケットのトレースを取るとは乱暴なやつ。そんなあなたに SQLTrace
636 :
623:2005/09/08(木) 02:06:18 ID:lKUSimgS
ASMのREDOグループ追加に関する報告および質問です。
さきほどテストしてみましたが、やはりダメでした。
alter database add logfile thread スレッド番号 group グループ番号
'ファイル名' size ファイルサイズ reuse;
→「すでにグループは存在しています。」のエラー。
グループを増やしたいんじゃないやい!
既存のグループにファイルを追加したいんじゃ!
アーカイブログみたいに、<ファイル名.%S.%T>とか直書きしてみたけどそれもダメ。
無効な文字列です。のエラー。
もうだめぽ・・・。
どなたか経験者おらんかな。
637 :
623:2005/09/08(木) 02:08:08 ID:lKUSimgS
訂正。
×ASMのREDOグループ追加に関する報告および質問です。
○ASMの既存REDOグループへの新規ファイル追加に関する報告および質問です。
今日はSev 1 TARを二つあげて仕事中('A`)メンドクセ
なんでこうもOracle Supportは対応が悪いのかね・・・。
JAVA + Oracle で質問です。
JAVAからストアドをコールしてOUTパラメータを取得したいのですが、
そのパラメータが配列の場合にどうすればいいのか分かりません…
どなたかお教え頂けないでしょうか。
-----------------------------------------
DB側の情報です。
TYPE t_string IS TABLE OF VARCHAR2(10)
INDEX BY BINARY_INTEGER;
PROCEDURE PLUS_INC(
i_num IN NUMBER,
o_num OUT NUMBER,
o_string OUT VARCHAR2,
o_stringArray OUT t_string
) IS
oracleで、(select シーケンス.NEXTVAL FROM DUAL)をサブクエリーとして実行すると失敗します。
これは無理なのでしょうか。
また、シーケンスはトランザクションの対象外と聞きました。
シーケンスにロックをかけることはできないのでしょうか。
>>639 どっちかというとOracleに対する質問というよりもJAVAに関する
質問の様な気が・・・。
ボラクルがシーベル買ったね。
ピープルソフトといい、どうなることやら。
10.1.0.4のPLSQLにパラメータで空白を渡したら
NULLになるって言われたんですが、そんなことありえないですよね?
おまけに10.1.0.3では大丈夫だとか言ってるし・・・
本当なら大騒ぎになっているハズ。
ちと、こことCOBOLのスレどっちで質問するかわからなかったんですが、
Pro*Cobolで、コンパイルするときの
procob.exe と procob18.exe の違いってどんな感じなんでしょうか?
Oracleのライセンスについてですが、クライアントからの接続の仕方は
関係ありませんよね?
CPUの数で決まると思ったので、ないと思っているのですが
JDBCドライバのOCIとTHINで、OCIの方はOracleクライアントが必要なので
その分だけ高いのかな・・と思いました。
ORACLEってメモリー何GBまで扱えるの?
MSSQLは実質上限無しだよね?
マシンに積める限り
>>651 CPUやOSの制限による。
IA32でWindowsの話に限定するなら、基本は2Gまで、
AWEというメモリの拡張機能をサポートしてるCPUとWindows Server Enterprise以上なら
2G越えのメモリを使うことができる。
Unix/Linuxの場合同じIA32のCPUでもOracleプロセスにスレッドを使っていないので、
CPUのアドレス空間による制限(2G〜4G)がボトルネックにはなりにくい。
MSSQLも基本は2Gまで、WindowsとMSSQLが両方ともEnterprise以上ならAWEで
2G越えのメモリを使うことができる。
solarisで共有メモリーセグメントの許容サイズが
4294967295バイトまでなのでSGAを4GB以上割り当てようとすると
怒られてしまうのですが。。。
>>654 もしかしてSGAサイズ=Oracleが使う全メモリサイズと思ってない?
各プロセスのコードやそれぞれのワークメモリは別だよ。
656 :
654:2005/09/17(土) 08:28:49 ID:???
SGAに6GB割り当てたいんだぁよ。
できねんだよ。たのむよ。
657 :
NAME IS NULL:2005/09/17(土) 08:47:57 ID:MhkFJJ0Y
SHMMAX
658 :
654:2005/09/17(土) 09:00:01 ID:???
SHMMAX って4294967295バイト以上割り当てられます?
659 :
NAME IS NULL:2005/09/17(土) 09:03:04 ID:MhkFJJ0Y
64bitシステムであれば。
660 :
654:2005/09/17(土) 10:37:44 ID:???
Σ( ̄ロ ̄lll) ガビーン 。64びって…。
問1. アドレスバスが32bitで、1バイト単位でアドレスが振られる場合の
総バイト数を求めよ。 (5点)
>>660 まさかとは思うが、32bitで2GB以上のSGAを割り当てたがっていたのか?
というよりも、セマフォ確認してみ?
SGAが二つに割れてね?
664 :
654:2005/09/19(月) 13:50:57 ID:???
?
666 :
ハーピィ:2005/09/19(月) 19:34:42 ID:???
E・∇・ヨノシ <666ゲット♪♪
質問です。
たしかオラクルで、スケジュールにしたがって、
ストアドやファンクションを定期的にしたがって
実行する機能があったと思うのですが、なんて
言う機能だったでしょうか?よかったら、ご教授
願います。
>>667 教授は留守だ。DBMS_JOBでも食ってろ。
>>668 助手殿ですか。
素早い解答ありがとうごいました。
670 :
NAME IS NULL:2005/09/27(火) 11:39:51 ID:k+RU5WNj
列のデフォルト値の設定は消せないんでしょうか
仕方ないんでnullに設定してるんですが
現在、Windows 2000 Server(SP2)上で、Oracle 9.0.1.1.1でDBが稼動しています。
システム更新のためにOracle9.2.0.6.0へのバージョンアップが必要となるのですが、
この場合はアップデート(パッチ)扱いになるのか、新規にインストールする必要があるのかをお教えください。
また、パッチ扱いになるとしたら、稼動中のインスタンスに影響は出るのでしょうか。
初歩的な質問で申し訳ありませんが、よろしくお願いいたします。
672 :
NAME IS NULL:2005/09/27(火) 18:32:59 ID:GrE2Del+
State = "Select * From 商品 "
Set sDS = gCn.DbCreateDynaset(State, ORADYN_NO_BLANKSTRIP)
sDS.AddNew
sDS.Fields("商品名").Value = Trim(y商品名.Text)
sDS.UpDate
sDS.Close
上記のやり方でVARCHAR2型の商品名に"A〜Z"を代入しても〜の部分が?に
自動変換されてしまいます。どうしても原因がわからず困っています。
フィールド型が間違っているのでしょうか?
>>671 1まず.9.2.0.6のバイナリをインスコする。
2.DBUA使って、DBのアップグレードを行う。
これが一般的なパスかな。
マニュアルでスクリプト流してアップグレードしてもいいけど、
勝手にやってくれるDBUAに任せるのが楽でいいんでないの?
ちゃんとアップグレードのテストはやっておくように。
>>670 デフォルト値をnullに設定した時点で解除と同じ意味になるのだが・・・。
>>672 文字コードじゃねぇの?
SQL*PLUSで見てみたらどうなっている?
>>672 ウェーブ・ダッシュ問題という事象で結構有名。
DBのキャラクタセットをJA16SJIS_TILDEで作り直すか、
クライアントのレジストリをJA16SJIS_TILDEにすれば取りあえず解決。
oo4oの場合ね。
>>672 unix なら「〜」は激しく化ける希ガス。
SQL*Plus とかで表示する分には見えたりするときもあるんだが、
(クラ側で変換してるだけだろうが)
ファイルに吐いたりするとヤバす。
それで、2バイトが、1バイトになってて、桁ずれ起こして・・・・・_| ̄|○
678 :
NAME IS NULL:2005/09/28(水) 11:24:55 ID:lbVCK6oc
>>675>>676>>677 レスありがとうございます。教えてもらった事を踏まえて、上司に相談したとこ
ろ「〜」を外字として使えば大丈夫だという結論に達しました。
679 :
NAME IS NULL:2005/09/28(水) 18:00:10 ID:haRbij2W
外部キーを参照している表が存在するDBにおいて
expとimpでバックアップリストアはかけれるでしょうか?
何を心配しているのかというと
impの途中で外部キー以外のデータをその列に登録するなとか言われませんか?
教えてください。よろしくお願いします。
>>679 言われるに決まってるだろ。
だから普通は外部キーをDisableにしてimpするよ。
>>671 ちと言葉が足りなかったかな。
アップグレードを行う場合、まず最初に9.2.0.6のオラクルのS/W(バイナリ)を
別ORACLE_HOMEにインストールする必要がある。
つまりこの時点で9.0.1.1.1と9.2.0.6の二つのORACLE_HOMEが同一マシン
上に存在している事になる。
簡単なアップグレードは先に述べた通り、9.2.0.6のDBUAを使って、GUIで
アップグレードを行う事だが、マニュアルでスクリプトを流してもいい。
くれぐれもアップグレード前に、バックアップとリストアのテストはやっておく
ように。
それとこんな事はないだろうが、間違ってもテスト無しで本番環境をアップ
グレードしようと思うなよ。
DBUAは結構状況によってはコケる事が多々あるからな。
682 :
NAME IS NULL:2005/09/29(木) 01:12:00 ID:9uthIP7L
DELLの安物IA32サーバにメモリ2GB積んで、
Windows Server 2003 Standard Edition乗っけて、
Oracleで100クライアントからのODBC接続が捌けるか捌けないか
なんて聞かれて、漏れは
「やりようによっては大丈夫」としか答えられなかったよ。
MTS構成にすりゃ、充分捌けるとは思ってるんだけど、
「ODBC接続」の中身が問題だよなぁ。
ACCESSのリンクテーブルとかだったらどうしよう。orz
685 :
NAME IS NULL:2005/10/02(日) 20:58:03 ID:YkBKqHxt
データベースをオープンしているのに、emで見ると立ち上がっていないって言われちゃうよ。
↓↓↓↓↓↓こんなエラーが表示されます。
現在、データベース・ステータスは使用不可です。
データベースがマウント状態または非マウント状態である可能性があります。
「起動」をクリックして現在のステータスを取得し、データベースをオープンしてください。
>>685 10g OEMで昔からあるバグだよ。
手っ取り早いのは10g OEM使ってインスタンスを再起動する事だけど、
確実なのは10g OEMのバージョンを10.0.1.4に上げること。
687 :
685:2005/10/02(日) 21:47:26 ID:YkBKqHxt
>>686 ありがとうございます。早速パッチ当てます。
それにしてもすごいバグですな。
>>687 10.0.1.3でも直っていない所が最強だろ?w
>>687 それとどちらかというとパッチを充てないとならないのは
Agentの方だね。
690 :
NAME IS NULL:2005/10/03(月) 10:34:38 ID:6HLtS+oH
教えてください。
OS:Windows XP
Oracle:Oracle 9.2.0.1
で、C#を動かそうとすると、「DLL(oci.dll)が読み込めません」というエラーが発生します。
ぐぐってみると、Oracleのバージョン違いで同じようなことがあったらしく、
Oracleホームディレクトリのユーザーに「Authenticated Users」を追加すると解決するとあったので
やってみましたが、駄目でした。
助けてくださいませ。
691 :
NAME IS NULL:2005/10/03(月) 12:38:03 ID:tT+OaRbN
1.プログラムはORACLEとの接続に何をミドルウェアとして選択して作ったのか?
2.問題のPCに問題のDLLは何個存在(0?)するか、そもそものORACLEのNETの設定はOKで繋がっているのか?
693 :
NAME IS NULL:2005/10/04(火) 03:23:39 ID:xjze4YbB
>690 です。
>691さんへ
1.プログラムは、Oracleとの接続には、普通に
using System.Data.OracleClient;
// 接続文字列の編集
string sCon = "";
sCon += "User Id=" + DBProperty.DB_USER + ";";
sCon += "Password=" + DBProperty.DB_PASS + ";";
sCon += "Data Source=" + DBProperty.DB_NAME + ";";
sCon += "Max Pool Size=" + DBProperty.MAX_POOL_SIZE + ";";
sCon += "Min Pool Size=" + DBProperty.MIN_POOL_SIZE;
OracleConnection con = new OracleConnection(sCon);
// コネクション確立
con.Open();
// 接続できているか?
if ( !con.State.Equals(ConnectionState.Open) ) ←ここで落ちる
{
error処理
}
状態です。
上手く説明できないのでソース貼りました。すみません。
2.については、すみません。勉強不足で聞かれている意味がよくわかりませんでした。
>690さんへ
ありがとうございます。
やってみましたが、エラー回避できませんでした。
回避できないがゆえに、いろんなところに権限付与したら「システムエラー」というのが出てしまい、
手に負えなくなったので、もう一度Oracleを入れなおしてみました。
そこで、>327さんの現象だったら、>332さんの方法で回避できると思って、SP1からSP2にあげて、>332さんの方法を試すと、上手く動くようになりました。
お騒がせしました。
ありがとうございました。
694 :
NAME IS NULL:2005/10/04(火) 11:07:28 ID:KgVvynBI
どらぐらいの、コネクション(プロセス)が張られているのかしりたいのですが
良いSQL文教えてくれませんか?
バージョンは8です。
簡単な質問かもしれませんがお願いします。
>>694 この手の話はリファレンスマニュアルをDLしてみたほうがいいよ。
V$Session辺りだけど、欲しい情報が
>>694の文面だけじゃなんともいえないし。
696 :
sage:2005/10/04(火) 13:06:55 ID:A1TfhcO/
以下のような抽出結果を出すSQLはどう書けばよいでしょうか?
CD VAL SUM
10001 2 2
10002 1 3
10003 3 6
10004 -2 4
10005 5 9
10006 1 10
10007 1 11
10008 -6 5
10009 1 6
SUMは前までの行のVALの合計です。
697 :
696:2005/10/04(火) 13:37:07 ID:???
オラクルシステムで伝票1枚印刷するのに10分も待たなきゃいけないんだが、
これは単純にプログラマがヘタレなんかね?
色々と要素はあると思うけどね。
プログラムの場合もあるし、鯖が死にそうなぐらい老体なのかも知れないし、
ネットワークが駄目駄目なのかも知れない。
まあ、でもプログラムが一番疑わしいのが確かかな。
一体何使ってDBに繋げているのよ?
MS-ACCESSとかじゃないの?
702 :
698:2005/10/06(木) 20:00:22 ID:???
システム屋じゃないから詳細不明だけどJAVAっぽい。
このウインドウを閉じるなっていうやつがブラウザに常駐してる
オラクル直結のクリスタルレポートとかあるのかな
>>702 そのプログラムって、ボラクルのEBSなのか?
それともオリジナルでJAVA AppletからJDBC Thinででも繋げているのか?
そういえばEBS導入で訴えられたSIがいたっけ?
sysauxって何って呼んでいる?
シスオークス
708 :
NAME IS NULL:2005/10/09(日) 13:51:43 ID:kn/DBQLw
この掲示板のほうが適しているとの助言を頂いて、
こちらに再度書かせてもらいます。
非常にこまっているので質問させてください。
system表領域のデータファイルは損によりDBが起動できなくなりました。
対応を調べてnomount状態で起動し、リカバリをすればいけそうだとあたりはついたのですが、
そのnomount状態にできない状況です。
set ORACLE_SID=test
sqlplus /nolog
conn / as sysdba
ここでTNSのプロトコルエラーが発生します。
TNS-12560、TNS-00530
環境はwin2k advでクラスタ環境で使っています。
oracleは9iです。
OSのログインユーザはORA_DBAに属していて、sqlnet.oraにもNTSと設定しています。
休日で担当者も捕まらず困っています。
よろしくお願いします。
>>708 Oracle自体が壊れているよ。
再インストールしかないね。
そのOSゆーざーがORA_DBAグループに入っているか確認すれ。
>>708 sysのパスワードが分かれば、
手っ取り早いんだがな。(w
OS認証じゃなくて、パスワード認証で入れ。
>>708 O/Sが窓なんだから、sql*plusで繋げる前にまずサービスでリスナー上げれ。
話はそれからだ。
$sqlと$sqlareaの違いを教えてください。
リスナーが起動しているかどうかを
プログラム中でチェックさせるにはどうしたらいいんでしょう?
lsnrctl statusを実行させるしかないんでしょうか?
716 :
NAME IS NULL:2005/10/10(月) 14:50:54 ID:j0AM9GWe
死活程度なら、psでもいいが。
>>715 いつも言っているがボラクルが乗っているO/Sぐらい書くあるよ。
$system_parameterと$parameterと$spparameterの違いを教えてください。
$parameterはinitファイル、$spparameterはspfileというところまではわかるんですが、spfile使用時は$system_parameterはどうなるの?
>>718 spfileがある場合には、全てにおいてそっの方が優先されるから、
spfileだろうな。
何処に向かってるんだか・・・。
★【経済】OracleがMySQLに採用されているInnoDBの開発元を買収-米国
米Oracleは7日(現地時間)、Innobaseの買収を発表した。Innobaseは、InnoDBの開発元
として知られるフィンランドの企業。InnoDBは、オープンソースのデータベース技術で、
MySQLにも採用されている。買収の条件などは明らかにされていない。
InnoDBは、それ単体でデータベース製品として存在するものではなく、たとえばMySQL
の一部として提供されているデータベース技術。InnobaseとMySQLは現在契約を結んで
いるが、来年にはその更新が控えている。OracleではInnobaseが、MySQLと契約を更新
することを望む、と表明している。
MySQLは、MyISAM/InnoDB/NDB Clusterといった複数のデータベースエンジンに対応
し、必要に応じて使い分けることができる特徴をもつRDBMS。MySQL ABが開発を行い、
GPLのもと配布されるオープンソースソフトウェア(※)だ。同じくオープンソースのRDBMS
であるPostgreSQLと比較すると早くからWindowsでの運用を正式にサポート、高速な処理
能力やDBへの接続コストの低さなどで人気を呼んでいる。大規模環境での運用事例も
多く、国内では楽天での事例が有名だ。
ttp://pcweb.mycom.co.jp/news/2005/10/08/001.html
本当のローエンド or ちょっとした開発環境:MySQL
部門DB以上:おら
にして、OracleでもInnoDBつかえるようになりましたよー、だらかOracleかってねーとか?
LOB列(BLOB,CLOB)を含む表を別の表名にコピー(移動はダメ)したいのですが、
INSERT TABLE xx AS はLOBの制限でできないようです。
CURSORでまわして1行づつコピーするしかないのでしょうか。
もっと簡単な方法をご存知の方、教えてください。
>>722 exp→表のリネーム→imp
じゃダメなのか?
オラクルは、開発しやすいのだが、
オブジェクト間の依存性が強すぎる。
テーブルのカラムを追加しただけで、
対象テーブルを使用する既存のストアドに関しても
INVALIDとなり、リコンパイルを強いられる。
この辺りはAS/400のRPGみたいだ。
726 :
722:2005/10/13(木) 00:12:20 ID:???
> 723, 725
サンクス
exp → 表のリネーム → imp
は遅いので。。。特にimpが。。。
SQL COPYは試してみます。
CREATE TABLE AS SELECTと同じことになりそうな。。。
727 :
しげ:2005/10/13(木) 09:11:26 ID:yIvrpdUh
ひとつ質問させてください。
サーバ:UNIX
クライアント:WINDOWS 2000
DB:ORACLE8
というシステム構成で、『CSVデータをORACLEにロード
したい』のですが、システムの仕様上場合によってはCSVデータが0件
(0バイト)の可能性があるのです。
その場合でも、エラー終了することなく処理を継続させたい。
つまり、ログでいうと「0件ロードされました」のような状態に
したいのですが、何かいい方法はありませんでしょうか。
何もしないと、
「SQL*Loader-00501: ファイル(string)を読み込めません」
というエラーが出てしまいます。
LOADERを動かすシェル側で、エラーのハンドリングをする
しか方法はないのでしょうか。
どうぞ、よきアドバイスを!!
よろしくお願い致します。
>>727 SQL*Loader側で処理せんでも、
ソースのCSVファイルが0バイトなら
Load処理しないようなシェルスクリプトにしたらいい。
で、ログに0件処理しました、と吐けばいい。
・・・で、もしかして、Windows側からのLoad?
だとしてもWSHで処理すれば出来るよな?
729 :
しげ:2005/10/13(木) 10:38:47 ID:yIvrpdUh
ありがとうございます。
ロード処理は、UNIXサーバ上で走行させます。
ついでに質問ですが、その場合のシェルスクリプトは
どのような感じになるのでしょうか。
だいたいで結構です。
ご教示お願い致します。
>>729 bashでいいかい? 判定はサイズを調べて0ならば処理をスキップでいいのかな。
あとム板にマルチしてるがこっちに誘導しとけよ。
731 :
しげ:2005/10/13(木) 11:18:56 ID:yIvrpdUh
す、すんません・・・。
いろいろとご迷惑おかけしますです。
そんな感じで結構です。
シェルにすると、どんなコードになるのでしょうか?
>>731 if [ -s input_filename ]
then
sqlloader options....
fi
-s で1バイト以上のサイズのファイルがあれば条件が成り立つからそれでsqlloader を実行。
733 :
しげ:2005/10/13(木) 12:01:18 ID:yIvrpdUh
おおお!
ありがとうございます!!
助かりました。
>>727 ちなみにこれはOracle8.1.7で修正されている。
DBを8.1.7にあげるか、もしくはWorkaroundとしてダイレクトパスを
使ってアップロードすればエラーは回避出来たりする。
まあ、shでチェックしてもいいけどね。
735 :
しげ:2005/10/14(金) 13:10:48 ID:jtcNsQDV
そうだったんですか!
うちのシステムのバージョンは、確か8.0.5だったような気が・・・。
shでチェックすることにします。
ありがとうございました。
736 :
NAME IS NULL:2005/10/15(土) 01:46:23 ID:a0nAzn2r
例えば100件の情報がDBに存在して一覧に表示できる件数は20件です。
SQL文で21件目〜40件目を取得するような関数ってありますか?
Oracleではできるって聞いたんですけど。
スレ違いだったらスイマセン。
row_number() とか。
>>736 Ver.が書いていないんで・・・。
select * from emp where rownum <= 40
minus
select *l from emp where rownum < 20;
row_number()が使えるのは8iからだな。
739 :
NAME IS NULL:2005/10/15(土) 13:09:37 ID:a0nAzn2r
>>738 すいません。9iです。
>>737さんが言ってるrow_number()はどう使えばいいんですか?
>>738さんのSQL文はwhere句のサブクエリとかじゃなくて、
1個のSQL文でよろしいのでしょうか?
740 :
NAME IS NULL:2005/10/15(土) 13:28:26 ID:bnb8MZCS
Oracle9iってUniversalInstallerじゃなくて
CUIからのサイレントインストールってできる?
X入れてないLinuxに入れたいんだが・・。
>743
Oracleのネットに転がってるマニュアルにやり方のってる?
あるなら探そうかな。
>>742 別マシンのXServerに画面出力を飛ばすとかで良いから
とにかくX Windowを用意しないと無理。
747 :
NAME IS NULL:2005/10/16(日) 09:58:20 ID:GV1bn3RI
>>742 LinuxにWindowsからCygwinのX経由でログインしてそこからインストールしたことがある。
749 :
NAME IS NULL:2005/10/16(日) 15:46:53 ID:gVrBhiQM
>>741 ありがとうございます。
参考になりました。
750 :
NAME IS NULL:2005/10/16(日) 18:10:48 ID:EKJoMukt
tebleのサイズをはかりたいんですが、どうやってやればいいのでしょうか?
>>750 いろんな要素が含まれてると思う
ブロックサイズとか、インデックスとか...テーブルのサイズって事は関係ないのか?
OTNの「領域サイズ見積り」を使用したら
簡単になら、適当な係数をかけるのが宜しいかと思うのだが
たとえばだが
1レコードのサイズ*レコード数*1.2
IDとパスワードに scott/tiger が使われる由来を知りたいのですが、
どなたかご存知ないでしょうか?
開発者scottさんが飼ってた猫の名前がtiger
おー、そんな由来があったとは。
開発者の名前ってことは知ってたけどtigerが猫の名前だったとは
>>726 何のフィードバックも無い所を見るとうまくいったのか?
ProC絡みの質問。
処理概要
テーブルAとテーブルBの一致する複数ユーザーIDをキーに
テーブルAの項目XをテーブルBの項目Yで更新する。
EXEC SQL BEGIN DECLARE SECTION;
char user_id[100];
EXEC SQL END DECLARE SECTION;
strcpy(user_id, "'12345','67890'");
EXEC SQL WHENEVER SQLERROR GOTO sql_error;
EXEC SQL UPDATE TABLE_A A SET( A.X ) = (
SELECT B.Y FROM TABLE_B B WHERE B.USERID = A.USERID )
WHERE A.USERID IN( :user_id );
strcpyでuser_idに値を渡しているのに、SQLを発行すると「値なし」で返ってきてしまいます。
IN(:user_id)をIN('12345','67890')と直書きすると普通にアップデートできます。
何かしら制約があるのでしょうか?
>37
は関係ないかな・・・
>>757 IN句に複数の条件を設定したいなら、
(:user_id1, :userid2)
と記述する必要があったはず。
759 :
757:2005/10/20(木) 23:55:51 ID:???
お〜、どうもです。明日職場で試してみます。
文字列で一気に認識させるということが出来ないわけですな。
ProCに関しては、プリコンパイルされたソースを見て推察する能力も必要に・・・。
SQLがどのように展開されているか見れば、自分の記述の何が悪いか判る・・・ようになってしまった。w
761 :
NAME IS NULL:2005/10/21(金) 11:36:27 ID:Ljc6rll4
>>757 つーかupdate文一回でいいのでは?
763 :
NAME IS NULL:2005/10/21(金) 12:59:44 ID:vsbYkolF
横レスだけど、サブクエリーでINで表現しないでってことじゃないの?
もっと単純なSQLでUPDATEが記述できるってこと。
なんつうか、INをとかサブクエリーを覚えるとそれに頼って性能劣化を招く時期って誰にでもあると思う。
青春の甘酸っぱい思い出のような。
>>763 >もっと単純なSQLで
ほー。じゃ書いてみ。
765 :
NAME IS NULL:2005/10/21(金) 14:25:47 ID:79/HdNoK
Oracle10g Personalをインストールしたんですが、「Enterprise Manager Console」が
オラクルホームに見つかりません。
何処にあるのか教えてください。
767 :
765:2005/10/21(金) 16:41:00 ID:79/HdNoK
>>766 回答ありがとう御座います。
ブラウザ版の「Enterprise Manager Console」はコンソールサービスの起動による
CPU負荷が大きすぎるので。
オラクルクライアントをインストールすると、9iのようにブラウザベースではない
「Enterprise Manager Console」が存在します。
10gになってから廃止されたのでしょうか?
769 :
NAME IS NULL:2005/10/21(金) 21:45:27 ID:79/HdNoK
ある処理の間のUNDO使用量をリアルタイムで監視したいのですが、
どうすればその処理(セッション)だけが使用しているUNDO使用量を
見ることができるでしょうか。
なお、自動UNDOを使用しています。
>>770 SELECT s.username, t.used_ublk FROM
V$SESSION s, V$TRANSACTION t
WHERE s.saddr = t.ses_addr;
772 :
770:2005/10/22(土) 21:08:44 ID:???
> 771
ありがとう
てっきりv$rollstatのwriteとかextentとか見るものだと思ってました。
>>767 >10gになってから廃止されたのでしょうか?
ブラウザではなくてJAVAのGUIのEMならまだあるよ。
でも、使える機能に限りがあるけどね。
ねぇ、正体不明のdmpがあってさ、中身がなんだか分かんないわけよ。
そいつを、インポートしないで中身だけ確認したりってできないかな?
817が吐いたってのは確実なんだが。
>>774 んなもん素直に「imp SHOW=y」で見ればいいじゃん?
>>774 バイナリエディタで開いてみるとよろし。テキスト部分が確認できる。
メモ帳で開いてもある程度は確認できるんじゃないか?
777 :
774:2005/10/24(月) 04:49:31 ID:???
ありがd。
午後出社したら確認してみます。
778 :
NAME IS NULL:2005/10/27(木) 22:59:13 ID:QbY01kAh
varchar2(7)の変数に'9999999'の項目を
Insertしようとしたら、応答がかえってこなくなりました。
ALL9って代入できないのでしょうか?
>>778 普通にできるんじゃね?
取りあえずSQL*Plusで試してみれば。
to_date('2005/10/10' ,YYYY/MM/DD'')でデータを登録すると、
実行した時間に関係なく、なぜか時刻が12:10:00になってしまいます。
自分では、00:00:00か現在時刻が入るかと思っていたのですが。
時刻指定を省略した場合、現在時刻をいれる方法はあるでしょうか。
>>778 >ALL9って代入できないのでしょうか?
んな阿呆な事考えてないで、誰が表をロックしてるか確認した方がいい。
782 :
NAME IS NULL:2005/10/28(金) 21:17:59 ID:BOc9ZANg
Linux版DB10g(10.1.0.2)をインストール済みのマシンにPatchSet(10.1.0.3)を
当てようとしても、「適用する必要のあるパッチがありません」ってメッセージが
でて適用できないのですが、特に問題なし?
>>782 問題あるに決まってるだろ。
OUIから正しいproducts.xmlをちゃんと選んでいるのか?
>>780 Defaultは7の時代から00:00:00だが?
SQL> create table hoge(waros date);
SQL> insert into hoge values (to_date('2005/10/10','YYYY/MM/DD'));
SQL> select to_char(waros,'YYYY/MM/DD HH24:MI:SS') from hoge;
TO_CHAR(WAROS,'YYYY
-------------------
2005/10/10 00:00:00
>>780 結論から言うと「無い」だな。
Triggerとか組み合わせて作ってみたけど、全然スマートじゃないから、
プログラム側で処理した方が遥かに良さそうだ。
786 :
780:2005/10/29(土) 08:14:26 ID:???
すみません、自己解決しました
787 :
NAME IS NULL:2005/10/29(土) 14:48:40 ID:je/cz1AM
SQLローダーなのですがここでもよいでしょうか?
はまってます。よかったらご教示ください。
次のようなタブ区切りのデータファイルがあったとして
aaa bbb 20051026 161136 15 a0
ccc ddd 20051026 161136 15 a0
eee fff 20051027 091222 31 b1
3, 4列目の日付と時刻をまとめてDATE型として(いまはTimeStamp型というのか?)
ロードしたく、下のようなコントロールファイルを書いてやってみたのですが
COL1 CHAR,
COL2 CHAR,
DATE$ CHAR "YYYYMMDD",
TIME$ CHAR,
DATETIME DATE "YYYYMMDDHH24MISS" ":DATE$ || :TIME$",
COL3 DECIMAL EXTERNAL,
COL4 CHAR
LOADED CONSTANT '20051027'
レコード:1は拒否されました。- 表:DATE_TABLE,列:COL3でエラーが発生しました。
ORA-01722: 数値が無効です。
...
というエラーが続き、ロードできません。
(ですが、COL3, COL4をコメントアウトするとロード可能です)
日付と時刻を表す二つのフィールドを一つのDATE型カラムに投入したいのですが
どうすれば可能なのでしょうか?すみません、お願いします。
788 :
787:2005/10/29(土) 14:50:07 ID:je/cz1AM
書き忘れました。環境は Oracle 8.1.5 (Solaris)と 8.1.6 (Linux)です。
789 :
787:2005/10/29(土) 15:24:04 ID:???
失礼。自己解決しました。
コントロールファイルでDATETIMEと定義している列を一番下にもってくると
大丈夫なようでした。データファイルに存在しない列を生成する場合は
順序的に最後に持ってこないと駄目なんでしょうかね?
790 :
782:2005/10/29(土) 17:19:49 ID:???
>>783 正しい products.xml ってパッチセットを解凍してできた
/Disk1/stage/products.xml ですよね?
でしたらちゃんと選んでいます。
他に何らかの原因があるのでしょうか?
一意性制約のチェックはコミット時に行われるんでしょうか??
たとえばABCって3つのカラムがあって
A B C
- ------
あ 1 A
い 2 B
う 3 C
のようなテーブルでカラムAがPKのとき、
「あ」を「い」に更新して
「い」を「あ」に更新するという処理を
1回のトランザクションで行いたいのですが・・
>>790 $ORACLE_HOMEとかは正しくセットされているんだよな?
それと本当に正しいO/SとバージョンのPSRをダウソしたんだよな?
対象プラットフォームとCPUは正しいんだよな?
Linuxにもx86以外にIntel 64-bitとかAMD 64-bitとかあるが・・?
793 :
790:2005/10/30(日) 06:08:08 ID:???
>>792 できました!くだらないミスでした。お騒がせしました。
>>791 更新時
つうか、一意制約があるテーブルでその手の処理ってなんか違和感が。
そもそもの設計が間違っているのでは無いかと。
つうか逆に一意制約以外の部分を入れ替えるのが正しいような。
795 :
791:2005/10/30(日) 10:15:31 ID:???
PKじゃなくてUKでした。
UKでも一緒でしょうか?
796 :
NAME IS NULL:2005/10/30(日) 11:59:56 ID:kR+bM8HN
>>791 initially deferred を使え。
alter table 「テーブル名」 add constraint 「制約名」 unique (A) initially deferred;
sysoperっていらなくない?
sysdba使えばいいじゃん
>>797 >>795の訂正を読め。
更新したいのは、主キーじゃなくユニークキー。
A以外の項目をすべて交換するとなると、
その中に主キーも含まれる。
と言うことは、その主キーでも同じ問題が起こるでしょ。
>>798 OracleのO/Sユーザーのパスワードを教えたくない時とか
あったりすると、あると便利かもな。
>>799 なんつうか、それってユニークキーじゃないものをユニークに定義してるんじゃないのかなぁ・・・。
まあ、一手じゃできないから、普通にどちらかをダミーNoに一次退避して入れ替えじゃないの。
>>799 つ〜か、何故、そういう事しなくちゃならないかの
前提が分からんので、
>>794のいう
> そもそもの設計が間違っているのでは無いかと。
というのもあながち間違いではないかも知れん。(w
漏れは実装が一番楽なのが、
>>801の方法じゃないかと思う。
手順も多くなるし、後で訳が分からなくなる恐れがあるが、
・UNIQUE KEY無し・列定義同じのWORK表に該当レコードを書き出す。
・WORK表上で更新。
・元表に戻す。(順次UPDATEなりDELETE後INSERTなりMERGEなり)
ってのもありか?
質問です。
Oracle8.0.5
Delphi
を使用して開発を行っているのですが、
ある時Delphiで作成したアプリケーションがやたら重いというので
そのマシンのタスクマネージャーを確認すると、Oracleが300M近く
メモリを使用していたため、スワップが起こってしまい、アプリケーション
がやたら重くなるという現象に陥っていました。
色々調べて同じ現象に悩む方のレスを↓に見つけたのですが
ttp://www20.big.or.jp/~o-shin/bbs/bender/dbms/pslg1455.html ここでは、Oracleの使用できるメモリの上限値の設定をどこで行えば
いいかまでは記述されていませんでした。
Oracleの使用できるメモリの上限値の設定はどこでどのように行えばよいのでしょうか?
宜しくお願いします。
804 :
NAME IS NULL:2005/10/31(月) 12:16:00 ID:0rAYG+1B
805 :
NAME IS NULL:2005/10/31(月) 19:31:59 ID:YK0ZyAfd
システム権限・オブジェクト権限の一覧が表示できるディクショナリが
あったら教えてください。
自分が付与されている権限しか見れないディクショナリならあったのですが・・・
807 :
803:2005/10/31(月) 22:48:55 ID:???
すみません、自己解決しました
808 :
NAME IS NULL:2005/11/01(火) 00:14:52 ID:re7sQyfX
無料版キター!
ついに勝負に打って出たのか?
>>809 少ないリソースで快適に動いてくれるのならいいけど、有償版と同じ重さだったらPersonal Oracleの二の舞のような。
開発用以外の用途を思い浮かべられない。
812 :
NAME IS NULL:2005/11/01(火) 09:33:27 ID:06SSmJjf
>>811 全くその通りだな。
同じくらいリソース喰うんであれば、試用版(開発版)でいいな。
813 :
NAME IS NULL:2005/11/01(火) 16:38:45 ID:23UMp9w9
MSDEの対抗でしょ。
ディスク4G、メモリー1Gの制限らしい。
その他ツールが付属するのはMSDEより良いかも。
なので、ようはORACLEそのものです。
だから、サポートが薄くてもつかえる程度のシステムか、開発用でしょ。
MDBを複数ユーザー共有で使うぐらいならっていう程度として。
>>813 >その他ツールが付属するのはMSDEより良いかも。
付属するHTML DBというのが激しく不安なのです。
>>814 マルチバイトを使わなきゃ、
今のところ快適に使えてるけどね。<XE
マルチバイトはデータでも、
オブジェクト名でもNG。
DBLINKも使えてるし、
マテリアライズド・ビューも使える。
>>814 調べてみて補足。
インストールしてみれば分かるが、
・SQL*PLUSはある。
・Oracle Net経由で接続可能。
だから、大抵の事は従来通りの方法で可能。
817 :
NAME IS NULL:2005/11/01(火) 21:13:28 ID:OrbKvBAf
小規模案件で使っちゃうかも>XE
1拠点10〜30ぐらいのクライアント。
データ件数100万程度ならいけそうだね。
あと、開発する自社でORAのサポートもってて質問可能であること。
ついでに自社のORA経験が十分なら、下手なポスぐれとか舞SQLよりマシ。
819 :
NAME IS NULL:2005/11/01(火) 23:58:14 ID:NzGc6dHf
>>815 マルチバイトがダメってどういうところ?
>>819 現状、SQLにマルチバイトがあると
なぜかエラーになるのよ。
これはHTML DBだけじゃなく、
NLSパラメタをちゃんと設定している
クライアントからでも同様。
日本語がちゃんと通るようになるまでは、
遊びには使えても、実務にゃ向かないんで無いかな。
821 :
819:2005/11/02(水) 00:32:32 ID:???
うーん。それじゃ使えないなぁ。まだ beta だから、そのうち直るのかな。
実は現地法人の要(ry
823 :
NAME IS NULL:2005/11/02(水) 01:55:16 ID:Z9VThreE
日本だけ蚊帳の外かよ!
NT4.0のOracle8データベースインスタンスがあって、
それの複製をLinuxマシンに作成したいのですが
どういった案があるか悩んでいます。
1:同名のデータベースインスタンスを作成後、dmpファイルをインポートしてやる
2:同名のデータベースインスタンスを作成後、コントロールファイル、REDOログ、データファイルをもってくる
2が一番楽そうだけどNTとLinuxではファイルシステムが違うからできない?
>>824 一体何を根拠に違うプラットフォームのDBが、ファイルコピーだけで
動くと思ったのか問いたい、問い詰めたい(ryo
826 :
824:2005/11/02(水) 02:46:35 ID:???
すみません、自己解決しました
>>827 異種プラットフォーム間におけるDBのコピーにおける可能性は2つ。
Exp/Impか、もしくはDB Linkだけだと思うけどな。
OracleXEベータをインストールしてみました。
StandardEditionに慣れてるとかなり面食らうね。
>>815の言うとおり、Shift-JISのマルチバイトは全て化け化けでした。
DataSheetにはメジャー10言語対応ってあるけど、日本語入ってんのかなぁ?
? English (single byte character set) and International (Unicode) versions available with support for 10 major languages
>>825 ORAじゃないけど、それで運用できるDB触ったことあるで
>>825 ボラクルでは出来ないと覚えておくといいよ。
RMAN Duplicationでさえ、同一プラットフォームという制限があるぐらいだから。
832 :
NAME IS NULL:2005/11/03(木) 01:19:38 ID:F9nA4gCp
データベースのキャラクタセット、
β版は英語だけ
正式版でAL32UTF8が使えるらしいよ>XE
10gなら同一エンディアンの異種トランスポータブル表領域が使えるっぽいけどな。
>>833 10gなら表領域単位でやるよりかは、DataPump使った方が手間が
かからなくて良さ気だけどな。
データベースにサービスを追加したいんですが、NetConfigure等のツールからではなく、
SQLPlusからDDL文で追加する方法はないんでしょうか?
ゆうこりんの立ち位置がちがうぅ。
838 :
NAME IS NULL:2005/11/04(金) 19:28:01 ID:3ZRuvL5U
ORACLEに接続できなくなりました。
listener.logを見ると、下記のようなメッセージが...
04-11月-2005 19:08:47 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=svname)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.77)(PORT=4932)) * establish * orcl * 12514
TNS-12514: TNS:listener does not currently know of service requested in connect descriptor
tnsnames.oraが悪いと思い弄って見たが、全然ダメポ。
<-----ここから(tnsnames.ora)
orcl =
(DESCRIPTION =(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = cws0204)(PORT = 1521))
)
(CONNECT_DATA =(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
----->ここまで(tnsnames.ora)
あと疑うはlistener.oraと思ったが、それもだめ。
<-----ここから(listener.ora)
LISTENER =
(DESCRIPTION_LIST = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = cws0204)(PORT = 1521))
)
(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
SID_LIST_LISTENER =
(SID_LIST =(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = F:\oracle\product\10.1.0\Db_1)
(PROGRAM = PLSextproc)
)
(SID_DESC = (GLOBAL_DBNAME = orcl)
(ORACLE_HOME = F:\oracle\product\10.1.0\Db_1)
(SID_NAME = orcl)
)
)
----->ここまで(listener.ora)
だれか同じような経験をして打開された方、いらっしゃいましたら助言をお願いします。
環境はwin2k svrでoracleは10gです。
よろしくお願いします。
>>838 tnsnames.oraの記述を下記の様に変更。
----------------------------------------------------------
ORCL = (DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=cws0204)(PORT=1521))
(CONNECT_DATA=(SID=orcl)))
----------------------------------------------------------
DOS窓開いて「tnsping orcl」の結果を教えれ。
840 :
835:2005/11/05(土) 07:15:06 ID:???
> 837
10.1です。
>>840 10gという事は喪前の言っているサービスというはのワークロード管理サービスという
理解でいいのか?
842 :
840:2005/11/05(土) 09:29:23 ID:???
> 841
そのとおりです。説明不足ですいません。
srvctl add service -d <db_unique_name> -s <service_name> -r <instance_list>
で登録して、
srvctl start service -d <db_unique_name> -s <service_name>
でスタート
マニュアル見ずに書いてるからまちがってるかも。
RAC管理者ガイド(?)の後ろのほうにsrvctlの説明があった希ガス。
10gR2ならEnterprise ManagerからGUIでもできるぞ。
一時表ってトランザクション中とかセッション中だけ有効な
テーブルかと思ってたんだけど消えるのはデータだけで
テーブル自体は永続的なのね…。使いづらいなぁ(・ω・`)
>>844 なんで?
消えたなくたっていいじゃん。
どういうシチュエーションでつかってんの?
846 :
844 :2005/11/05(土) 12:34:32 ID:???
>>845 プロシジャ中でまったく構造の違う結果を返す動的SQLを生成実行してるんです。
トランザクション中でそのデータを何度も使う上、毎回も実行するには重い処理の
ため一度ワークテーブルに格納して処理したい、というのが始まりなんですけど…。
んで対応として一時表を使うことを考えたんですが、テーブル構造が毎回不定で
同じプロシジャが平行実行される可能性が有る、つまり他のセッションで作った
テーブルと被る可能性が有り、しかも構造が違う(可能性が高い)ので格納できない。
…使いづらいなぁと。というか一時表の存在意義が漏れには良く分かりません。
しかもプロシジャ中、自前でdrop tableしようとしたらエラーではじかれますた('A`)
結局仕方ないので名称にセッション番号を付与した通常表を動的に生成して処理後に
drop tableってな事であきらめますた。ローテクですがな(´・ω・`)
847 :
NAME IS NULL:2005/11/05(土) 12:44:25 ID:1zHXLAYH
10gのEnterpriceManagerで表示される情報をSQLで取得したいのですが、
どこかにまとめたページとかって無いでしょうか?
今一番知りたいのはセッションを取得するSQLなのですが、他にも
いろいろ教えて頂けると助かります。
849 :
844 :2005/11/05(土) 17:04:26 ID:???
>>848 既存システムのOra9.2->8iのダウングレード移植DEATH
新規設計する暇もなく、やっつけだし良いんです('A`)ノシ
ん?9.2と8.1で一時表の動作が違うってこと?
SQLで複数行コメント書く方法ないでしょうか。
CやJAVAの/* */みたいな。
多くの行に「--」付けるのは手間です。今はエディタの矩形選択使ってますけど、素直に複数行書けたらなあ。
当方Oracle9.2です。
852 :
NAME IS NULL:2005/11/05(土) 23:27:30 ID:wt3HseBL
vi系のエディタならラクチン。
秀丸は知らん。
騙されたと思って/* */でコメント書いてみるとか。
XEインスコしてみたんですがデフォルトのユーザ名・パスワードって
なんですか?
>>855 SYSTEMユーザーのパスワードは
インストールの際に入れたよな?
SYSTEMでログインして、
ユーザー作れば万事解決。(w
>>856 大文字で「SYSTEM」がユーザ名って事ですよね?
何度やってもSQL*PLUSで接続できません。。。。
>>857 ユーザー名は大文字小文字の区別をしない。
パスワードが間違ってるとかな。
OS認証が可能になっているなら、
sqlplus /nolog
conn / as sysdba
alter user system identified by ****;
でsystemユーザーのパスワード変更をお勧めする。
CentOS4.2にXEインスコしようと思ったんだが
インストールして起動する時にずっと起動中
状態になっちまう。
要するに、sqlplusでログインしようとすると
initializationなんちゃとかってエラーになる。
また、プロセス、listenポート確認してもhtmldb
が起動しとらん。(つまりそこまで行ってない)
rpmインストール時に変なエラー出たけど、
そのまま行けたからシカトしたんだが・・。
centos使ってるやつでインスコできた人挙手
>initializationなんちゃとかってエラーになる。
>initializationなんちゃとかってエラーになる。
>initializationなんちゃとかってエラーになる。
>rpmインストール時に変なエラー出たけど、
>rpmインストール時に変なエラー出たけど、
>rpmインストール時に変なエラー出たけど、
全く… どうしようもないな。
861 :
859:2005/11/07(月) 00:28:26 ID:???
なんちゃとかってエラーと
変なエラーが出て困っている僕ちゃんですが
皆様、シカトですか?
スキーマAAAに、
CREATE VIEW VVV AS SELECT * FROM AAA.TABLE1
ってVIEWがあるとします。
スキーマAAAだけをEXPします。
エクスポートファイルを同じDB内のスキーマBBBにIMPします。
(AAAのコピーを作るイメージ)
BBBに出来たVVVをみると、AAAのTABLE1を見ています。
BBBのTABLE1を見てほしいのですが、どうすればいいですか?
IMPかEXPのオプションに無い気がします。
つまり
「同一スキーマの場合、スキーマ名を指定しないでエクスポートする」
という機能が欲しいのです。
おれOracleユーザじゃないんだけどさぁー
それは、View作るときにスキーマの指定をやめればいいんじゃないの?Oracleはスキーマ指定必須?
864 :
NAME IS NULL:2005/11/07(月) 08:56:06 ID:L0caSh7L
>>839 tnsnames.oraの記述を行ってからの、「tnsping orcl」の結果です。
<-----ここから
E:\Documents and Settings\cws0204>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 07-11月-2005 08:45:10
Copyright (c) 1997, 2003, Oracle. All rights reserved.
パラメータ・ファイルを使用しました:
g:\oracle\product\10.1.0\Client_1\network\admin\sqlnet.ora
TNS-03505: 名前の決定に失敗しました。
----->ここまで
見当違いかもしれませんが、気になるのが弄ったtnsnames.ora(F:\)とは別のパスのsqlnet.ora(G:\)を参照しているみたいです。
環境としては、Oracle10gServerとODPが入っているPCで、
10gは
F:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN
ODPは
G:\oracle\product\10.1.0\Client_1\network\ADMIN
に入ってます。
関係ないかもしれませんが、「lsnrctl services」の結果もつけておきます
<-----ここから
LSNRCTL> services
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cws0204)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
The command completed successfully
----->ここまで
865 :
NAME IS NULL:2005/11/07(月) 09:13:40 ID:L0caSh7L
>>839 >>864の追記です。
864の手順は、F:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\tnsnames.ora
に行っていました。
g:\oracle\product\10.1.0\Client_1\network\admin\tnsnames.ora
に対して行った後、「tnsping orcl」をした結果、状況が変わりましたので報告いたします。
<-----ここから
E:\Documents and Settings\cws0204>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 07-11月-2005 09:09:39
Copyright (c) 1997, 2003, Oracle. All rights reserved.
パラメータ・ファイルを使用しました:
g:\oracle\product\10.1.0\Client_1\network\admin\sqlnet.ora
エイリアスを解決するためにTNSNAMESアダプタを使用しました。
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = cws0204)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
OK (10ミリ秒)
----->ここまで
>>864 あぁ、それこの間漏れもはまった。(w
・client
・10gdb
・ohs
の順でインストールしたからね。
# 最初はclientだけで、外部にデモで持ち出す必要がでたので
# 単体実行環境を整えた。
結論から言うと、存在している全てのtnsnames.oraに
ネットサービス名を設定すれば問題ない。(w
867 :
NAME IS NULL:2005/11/07(月) 10:55:34 ID:L0caSh7L
>>866 tnsnames.oraを下記のように変更。
<-----
orcl =
(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp) (HOST = cws0204)(PORT = 1521))
)
(CONNECT_DATA=
(SID = orcl)
(SERVICE_NAME = orcl)
)
)
----->
「tnsping orcl」の結果はエラーが出ないものの、「lsnrctl services」ではエラーが出てしまいます。
<-----
LSNRCTL> services
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cws0204)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:306 refused:0
LOCAL SERVER
The command completed successfully
----->
listener.logのエラーは消えましたが、sqlnet.logのエラーが...
<-----
Fatal NI connect error 12637, connecting to:
(LOCAL=NO)
VERSION INFORMATION:
TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 10.1.0.2.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 10.1.0.2.0 - Production
Time: 07-11月-2005 10:44:00
Tracing not turned on.
Tns error struct:
ns main err code: 12637
TNS-12637: Packet receive failed
ns secondary err code: 12547
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
----->
>>867 EXTPROCが悪さしているかもしれんからはずしたら?
listener.oraを以下のように変更しても繋がるはず。
----------------------------------------------------------------
LISTENER =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL= TCP)(Host= cws0204)(Port= 1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC = (GLOBAL_DBNAME = orcl)
(ORACLE_HOME= F:\oracle\product\10.1.0\Db_1)
(SID_NAME = orcl )
)
)
----------------------------------------------------------------
869 :
NAME IS NULL:2005/11/07(月) 16:51:01 ID:L0caSh7L
>839,866,868
色々とアドバイス有難うございました。
>868さんのアドバイスの通りlistener.oraを修正後、
ODP、10gDBのtnsnames.oraを見直して>839,866さんのアドバイスを色々と織り交ぜた結果
理由はわかりませんが、ちゃんと繋がりました。
どれが悪かったか試そうとは考えましたが、これでまた繋がらなくなる事を考えると...
また何かでお邪魔するかもしれませんがまたお願いします、本当に有難うございました。
いつの日かアドバイス側に立つ日が来るのを信じて...
870 :
NAME IS NULL:2005/11/07(月) 20:37:18 ID:dJezvkU3
Postgreしか触ったこと無い素人みたいな者なんですが
毎分300万トランザクションでほとんどinsertみたいな状況で安定して使えますか?
素人が300万txn/min ってなにすんの?
興味ある。
>>871 毎秒5万トランザクションて、安定の前にどのくらいのハードで実現できるか興味あるな。
>>870 まあ、今だったら10gR2で組んだ方が色々といいと思うけどね。
ちなみにブラットフォーム何よ?
クラスターウェアは何使う予定?
ストレージは?
最も多いと思われるトランザクションのタイプは?
875 :
871:2005/11/07(月) 23:36:26 ID:???
>>872-873 とあるリアルタイム系のデータを処理するシステムなんですが
実際に自分が携わってるわけじゃないんですよ(^ ^
現行のシステムでは保持期間が短いので単純にメモリ上にデータを保持してるだけで
手法としてDBってのはどうなのかと勘ぐってたぐらいのものです
DB的な?用途としては時系列でソートして取り出したいぐらいです
案件の規模と予算から言ってせいぜいミドルクラスのサーバが関の山といったところなので
微妙っぽいですかね
勘ですが
こないだOracleが買収したTimesTenがその用途に近いかも
マシンのメモリサイズが最大DBサイズと割り切って、メモリ上で
すべて済ますから激速といういさぎよい思想のDB
877 :
NAME IS NULL:2005/11/08(火) 19:16:22 ID:UetDK9je
>>874 ありがとう。
機器は下記を予定。
ブラットフォーム redhat linux 6.2
クラスターウェア HP Serviceguard
ストレージ msa1000クラス
トランザクション insert 300000件/日 update 100000件1日
878 :
NAME IS NULL:2005/11/08(火) 19:41:44 ID:v15ivBOc
RH6.2とは、えらく古いバージョンだな。
RH6.2には、8.0のOracleしか入らない悪寒。
880 :
879:2005/11/08(火) 23:34:11 ID:???
間違えた。RH6.2でも8.1.7まではインストールできるね。
>>877 O/Sのバージョン間違えてないか?
RHでRAC組むのなら、ES/ASの3.0とか4.0なのでは?
MC/Service Guradを利用してRACを構成する場合、クラスターウェアのハート
ビートLANと、RACのGCS/GESLAN(ようはインターコネクトLANね)を同一LANで
構成する様にね。
HP側の人間はハートビートLANは独立LANで構成する様にって言うと思うけど、
それだとインターコネクトLANに障害が発生したら、9iで17分、10gで5分以上
ハングしてしまうからね。
それとInsert/Update系が多そうだけど、最低でもGiga-bit Etherで構成するん
だよね?
UNIXでJA16EUCのDBに、UNICODEの?(チルダ)を入れると 0x8f 0xa2 0x67の3バイトになる。
0xa1 0xc1にできないのだろうか?
883 :
882:2005/11/09(水) 21:16:02 ID:???
あれ?チルダの前の部分は 数値コード65374 です。
>>862 ×CREATE VIEW VVV AS SELECT * FROM AAA.TABLE1
○CREATE VIEW VVV AS SELECT * FROM TABLE1
AAA. を指定する限り永久にBBBを見てくれることは無い。
AAA. の指定が無ければ自身のスキーマにあるTABLE1を見る。
>>863の言う通り。
>>882 Oracle 9i R9.0.1.4以降で実装された、
JA16EUCTILDEにしないとダメ。
886 :
882:2005/11/09(水) 22:02:35 ID:???
> 885
JA16EUCとJA16EUCTILDEはINSERTの時点では同じ動きをすると思ってるんですが。
UNICODE EUC
-------------------
FF5E -> A1C1
C301 -> A1C1
確かに65374はFF5Eだが、INSERT後のEUCコードはA1C1になるのでは?
来年、会社が合併することになり人事・給与システムを他社の分も追加することに
なりました。現在2000人ほどですが、合併後は5000人を超えてしまいます。
そこで質問なのですが、オラクルへの同時接続数はどの程度可能でしょうか。
確認すべきパラメータや設定など何かありましたら教えてください。
うる覚えですが、現在の環境は以下の通りです。
WEBサーバ Xeon1G メモリ 2G windows2000 IIS5.0 が3台
DBサーバ Xeon1G メモリ 2G windows2000 oracle9i relese2 が1台
ロードバランサ が1台
データファイルの使用率が現在10%ほどなので、データ量が単純に2倍になっても
大丈夫だとは思いますが、接続数が2倍になったとき、DBサーバが耐えられる
のか不安です。
>>887 確か同時接続数を制限する初期化パラメータがあったような・・・。
共有サーバでディスパッチャを設定しておけば大丈夫なような・・・。
俺はDBAじゃないから、あまり詳しくないのよ。適当なこと言ってすまん。
行数:1億
列数:100
ぐらいの巨大テーブルにアナライズをサンプル5%でかけたところ、30分たっても終わらず中断しました。
あまりに時間かかるので、サンプル1%にしようと思っています。
1%でも信用できる統計って取れるものでしょうか。大体の目安は5%ぐらいと聞いて、今まで盲目的に5%を使っていたのですが。
>>887 メモリ2GBでWin2000SVなら、Oracleが使えるメモリは1GB位ってとこか。
同時接続数も単純に2.5倍になるとしたら厳しいかな。
今どれくらいメモリ使ってるかはわかってるの?
891 :
887:2005/11/10(木) 00:30:13 ID:???
>>888 いえいえ、参考にさせていただきます。ありがとうございます。
>>890 確か、SGA合計が1Gと聞いています。他のオラクルのプロセスを含めても
1Gでいいと思います。メモリがネックとなるようであれば、メモリを
増設してオラクルのメモリを増やそうと思います。
892 :
890:2005/11/10(木) 00:38:50 ID:???
>>891 専用サーバ接続なら、PGAで使用する分のメモリも忘れずに。
共有サーバ接続はややこしくて忘れた。
OTNの会議室にスレがあったと思うけど。
メモリ増やすのも手だとは思うけど、単なる2000SVなら2GBが天井だから気をつけて。
>>889 パーティション化しているならパーティションごとに、
それぞれ平行でさらにパラレルで。CPUの許す限り。
統計はデータの特性により1%でOKな場合もあれば駄目な場合もある。
>>887 >>891 アプリの特性にもよるけど、DBにほとんどアクセスがいかないんだったら
そのままでも耐えられるとは思うけど、トランザクションがガンガンに発生
するんだったらかなり厳しいだろうね。
そのユーザー数ならRACという選択肢もありかなと思う。
OCFSのベンチマーク取ってみたけど、きっちりチューニングして
さえいれば、オーバーヘッドはそれ程大きくないし、WindowsでRAW
パーティション使うよりもマネージビリティは遥かに上。
ちなみに同時接続数を制限するのはlicense_max_sessionsだね。
>>887 同時接続数がどのくらい必要かは、その会社にいるあなたが判断すること。
制限することは、license_max_sessionsでもsessionsでもprocessesでも可能だが、超えて
接続あると、アプリはエラーを受け取ることになると思うけどいいの?
接続数を制限するより、想定される最大接続時に問題にならないキャパシティプランを考
えるべきでは?
そのためには、現状のDBの状態把握が肝要かと。
それが面倒くさいなら、3GBメモリ積んでできる限りCPU増強すべし。
IAなら、そんなに高くないでそ。
>>859 前提条件満たしてからインスコしたんだよね?
必要なRPMとか、gccやgcc+のリンクきちんと変えたりとかしてさ?
>889
データのばらつき具合にもよるが、件数が多い場合は1%でも全然問題ないよ。
>>886 なりません。
U+FF5E は FULLWIDTH TILDE、
EUC の 0xA1C1 は WAVE DASH で、別の文字です。
それを何処かの間抜けな OS が混同している為に
態々 JA16EUCTILDE などという文字セットが追加されたんですから
素直にそっちにするか、CONVERT しましょう。
899 :
NAME IS NULL:2005/11/10(木) 14:14:06 ID:aVh1HaJY
すみません、OracleのREDOログファイルがスイッチしたタイミングを知りたいんですがどうしたらいいでしょうか?
要するにログ・スイッチがどのくらいの頻度で発生しているか調べたいのです。
宜しくお願いします!
901 :
NAME IS NULL:2005/11/10(木) 16:21:44 ID:fIKmniWk
すみません
オラクルのSQLを勉強していて質問なのです。
date型で収められている列を表示させる時、何日あるいは何時だけ
を取り出すことは可能でしょうか?その場合下記の書き方でOKでしょうか?
TO_CHAR(LOG_DATE, 'DD')
TO_CHAR(LOG_DATE, 'HH24')
よろしくお願いします。
データベースのなかの全テーブル名を取得するにはどうしたらいいですか?
904 :
NAME IS NULL:2005/11/10(木) 16:27:43 ID:fIKmniWk
>>903 こんなに早くレスありがとうございます。
試せる環境が無いので苦労しています。。
>>902 SELECT
TABLE_NAME
FROM
SYS.ALL_ALL_TABLES
>>905 これは質問のしかたが悪かったです。
それだと、system系のいらないのまで取得してしまうんです・・・。
こういうのは除きたい。
907 :
NAME IS NULL:2005/11/10(木) 16:50:50 ID:hptPhN9A
>>906 自分のスキーマだけでいいならTABというエリアスがある。
910 :
902:2005/11/10(木) 17:07:53 ID:???
>>909 お〜と思って、
select * from tab where tabtype='TABLE'
とやってみました。
でも、BIN$なんちゃらとか、いらないのがやっぱり、はいってました。
select * from sys.all_all_tables where owner='xxx'
ってやると、同じowner のテーブルなので、いけることはいけるようです。
でも今後、違うowner がテーブルつくるとだめなので・・・。
911 :
NAME IS NULL:2005/11/10(木) 17:10:01 ID:fIKmniWk
>>908 ありがとうございます。無料版があるとは知りませんでした。
912 :
902:2005/11/10(木) 17:39:30 ID:???
もしかして、TABS でOKかも??
>>909 TABはDBA権限があると全部出てしまうみたいね。
素朴な疑問なんですが、systemとsysって何でユーザ別々なんでしょう?
管理ユーザは一つにまとめればいいのに・・・とふと思いました。
915 :
887:2005/11/10(木) 23:27:00 ID:???
>>890 windows2000 serverのメモリ上限は2GBなんですか?
ベンダーの提出資料だと、最大12GBまで増設可能となってたので
余裕だと思ってたのですが。OSの上限ですか。それともオラクルの上限ですか。
>>894 一般社員は自分の給与・賞与くらいしか参照できません。
課長・部長だと部下の職歴や資格などが見れます。
そのため、5000人でもトランザクションはそれほど発生しないと思います。
916 :
887:2005/11/10(木) 23:29:45 ID:???
>>895 問題は現状の把握なのですが、データ容量は問題ないと思います。、
問題は接続数が増えた場合、どういった影響があり、それはどこで確認できるのか
ということで調査中です。単純にメモリを増設と言っても、社内稟議があるので
納得してもらえる数字が必要なのです。現在考えているのは、論理的に同時接続が5000人
ですが、現実的には3割程度で1500人程度が処理できればいいと考えてます。
1500人*2M(サーバプロセス:専用サーバ構成)=3GBだと単純すぎるでしょうか。
3台のWEBサーバである程度、コネクションをプーリングしてもっと同時接続数が
減ってくれればいいのですが、アプリケーションでどうやってるのかも調査中です。
>>910 ようは考え方だと思うけど?
select * from dba_tables where owner not in ('SYS','SYSTEM');
>>899 ( ・∀・)つ v$log_history
>>916 32-bit O/Sだとトータルで4GB制限があるから、大雑把に考えると
O/Sやその他アプリに1GB、SGAに2GB、PGA_AGGREGATE_TAGETが
1GBと言った感じか・・・。
ちなみにアプリって何で書かれているの?
>>859 仕方ねぇから取り合えずVMWareにCentOS4.2入れてボラクルXEの
環境を作ってみたぞ('A`)メンドクセ
長くなるから細かくしてウプするぞ。
1. 以下のrpmがあるか確認。無ければyumでも使って入れる。
binutils-2.15.92.0.2-15
compat-db-4.1.25-9
control-center-2.8.0-12.rhel4.2
libgcc-3.4.4-2
gcc-3.4.4-2
gcc-c++-3.4.4-2
glibc-2.3.4-2.13
glibc-common-2.3.4-2.13
glibc-headers-2.3.4-2.13
glibc-kernheaders-2.4-9.1.98.EL
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.4-2
libstdc++-devel-3.4.4-2
make-3.80-5
pdksh-5.2.14-30.3
xscreensaver-4.18-5.rhel4.9
ORBit-0.5.17-14
sysstat-5.0.5-1
compat-libstdc++-296-2.96-132.7.2
libaio-0.3.103-3
>>859 2. /etc/sysctl.confに以下を追加
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
3. /etc/security/limits.confに以下を追加
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
4. /etc/pam.d/loginに以下を追加
session required /lib/security/pam_limits.so
5.設定を反映させるために鯖をリブート
>>859 6. rpm -Uivh oracle-xe-10.2.0.1-0.1.i386.rpm
7. rootユーザーでそのまま「/etc/init.d/oracle-xe configure」で
DBを作成
8.デフォルトで「oraclexe」というユーザーが作成されDB作成まで
step7でやってくれる。後は以下の環境変数をoraclexeの「.profile」
にでも書いておけ。
export ORACLE_SID=XE
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$PATH
export ORACLE_OWNER=oraclexe
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export LD_ASSUME_KERNEL=2.4.1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jdbc/lib/classes111.zip:$CLASSPATH
umask 022
>>923 そういえばstep.6のrpmでインスコ中に、O/Sのチェック関連のエラーが出たけど、多分
「/etc/redhat-release」に「Red Hat Enterprise Linux AS release 4 (Taroon)"」
とか書いておけば、消えるんじゃないかと思う。
誰か試してみてくれ。
まあ、チェック関連のエラーなんで、無視しても問題なく動いているけどね('A`)
925 :
890:2005/11/11(金) 21:54:26 ID:???
>>915 Win2000Serverは何をどうしてもユーザプロセスは2GBしか使えない。
Win2000Advanced Server/Datacenter Serverであれば2GB以上使用可能。
3GBスイッチなら単純にユーザプロセスが3GB使用可能になって、
PAEスイッチを使用するとバッファキャッシュだけをユーザプロセス空間の外に追い出せる。
(OracleではVLMと呼んでる)
メモリの見積りについては何とも言えない。
PGAなんかは本番環境を調べればわかるんじゃない?
926 :
887:2005/11/11(金) 23:27:40 ID:???
>>915 64bit版は考えてなくて、メモリの拡張の方向で考えてます。
3GBスイッチはもう少し調べてみます。
>>920 言語はASPです。
PGA_AGGREGATE_TAGETとOEMで確認したところ、PGAは
300M程でした。単純に300M / 2M(一人分のユーザプロセス)で
同時接続150人なのでしょうか。Procesesは500なので同時接続495人
までエラーを吐かないと認識してますが、ユーザプロセスが全然
耐えられそうにないです。-5はバックグラウンドプロセス。
>>925 PGAは300Mほどでした。VLMは調べてみます。
どうもコネクション、セッション、プロセス、同時接続数が資料によって微妙に
意味合いが違うみたいで混乱してます。私はこれらは等しい数字になるものと
認識しています。
わからないのはコネクションプーリングでASPでもコネクションプーリングがあるし、
ロードバランサーでもコネクションをプーリングしているそうです。ORACLEは専用接続だから
1接続=1プロセスになるはずです。
クライアント10台(10コネクション)→ロードバランサ1台→Webサーバ3台→DBサーバ1台
このとき、DBサーバのユーザプロセスは10になるのか調査中です。
>>926 init.oraのPGA_AGGREGATE_TARGETが300MBということでいいのかな?
で、その時のPGAのHit率ってどうなっていた?
必要だったらSTATSPACK取って調べてみるしか。
漏れはASPは専門ではないが、ASP側からは常にDBに対してコネクション
プーリングしてセッション張っているという意味でしょう?
だったらDB側からみたら、アプリ起動時に設定しているコネクションプーリング数
のセッション数が張られている様に見えるはずだと思うけど?
928 :
887:2005/11/13(日) 00:42:43 ID:???
>>927 >>init.oraのPGA_AGGREGATE_TARGETが300MBということでいいのかな?
そういうことです。PGAのヒット率は分かりません。調べてみます。
STATSPACKも調べてみます。私はアプリケーションもDBも詳しくありませんが、
仕事なのでやるしかないです。
>>だったらDB側からみたら、アプリ起動時に設定しているコネクションプーリング数
>>のセッション数が張られている様に見えるはずだと思うけど?
これって、ASP側でプーリング数500と設定してたら、1人だろうが、100人だろうが
1000人だろうが、500になるんですかね?500超えたときだけ500
なんだろうか?正直言って、自分には荷が重いのですが仕事と割り切って頑張ります。
>>928 PGAのHit率はOLTP系なら出来れば90%台が望ましいけど、
アプリ側からタコなSQL投げられていたりとかあるからぇ。
その場合はSQLのチューニングが必要になるだろうね。
コノクションプーリングに関しては、設定によると思う。
漏れはアプリケーション鯖はWeblogicしかかじった事がないけど、
起動時にプーリング数を10と設定していたら、10セッション張られて
いた記憶があった。
10を超える分に関しては、設定次第で動的に増やせる様に
出来たり、増やせない様にも出来た様な・・・。
CSVファイルをoracleにロードするのに、
sql*loader を使おうと思ってます。
CSVファイルの中には、insertするものとupdateするものが混じってます。
主キーをもとにして行えばこのあたりは問題ないんですが。
問題は、CSVファイルが100個くらい、対応するテーブルも100個くらい!
これ全部に、controlファイルを書かなくてはいけないんでしょうか?
>>931 何から sql*loader をキックするのか判らないけど、俺は CTL ファイルを自動生成させてたよ。"append into" があるから毎回生成するんだけど、カラム名は
select column_name from user_tabl_columns where table_name = 'TABLE' order by column_id;
とか使って最初に取得してた。で、色々指定しないといけないカラムとかは「テーブル名+カラム名」を添え字にプログラム中に持ってた。
ちなみに俺は DB 触ってまだ半年。もっといい方法があるのかも。
>>933 >"append into" があるから
違った。infile があるからだ。
>>931 そんくらい有るなら簡単なツール作っても良いんじゃない?
って言うか、その辺にあるし
936 :
931:2005/11/13(日) 23:32:26 ID:???
最終的に100個のcontrolファイルを書いたりはしません。
自動生成させるか、functionを作ってしまうか、
他の言語からSQLを使って、などを選ぶと思います。
ですが、sql*loaderでもっと簡単にできる方法があれば、
そっちのほうがいいなと。
>>936 ( ・∀・)つ 外部表 + create table ... as select ...
938 :
NAME IS NULL:2005/11/14(月) 01:16:42 ID:UjrXfxVS
LOADに関しては、ORACLEは非常に使いにくいですね
DB2のLOADコマンドの方が非常に便利です。
なんでSQL*Loaderみたいな旧世代のやり方を変えないんですかね
まORACLEしか知らない人はこれが常識だから疑問にもならないんでしょうが・・・
I工作員おつかれさまです。
外部表ができたから、ローダーの重要性が低くなった。
DB2ださい。
940 :
T.O:2005/11/14(月) 11:39:45 ID:qJ4s9CJj
データベース内に表領域が3つあります。
TS_01〜03までをテーブル作成などのユーザー表領域に指定しています。
TS_TMPはテンポラリ表領域です。
TS_01
TS_02
TS_03
TS_TMP
A表は「TS_01」,B表は「TS_02」,C表は「TS_03」などのように
所属する領域が異なっています。
「TS_01〜03」まで分散する事はパフォーマンス面で
メリットのある事なのでしょうか?
ちなみにDBはOracle9.2を使用しています。
私はUSERS表領域に統一したいと思っています。
周りに聞ける人が居ないので、ぜひ皆さんの
経験則をお聞かせ下さい。大体の概要をお聞きできれば、自分で調べます。
P.S.
(もしかしたら、8iの頃の仕様などの問題を
引きずっているのではないかという偏見を私は持ってしまっています。
またアクセス数はシステム構築当初と比べて現状では減少しているはずなので、
特定の表に集中的にアクセスが来る事はないと推測されます。その場合でも
分散している状態の方が全体のパフォーマンスが良いのかと疑問です。)
>>940 最近のH/Wの進歩からすれば、表領域を細かく分ける事にパフォーマンス面での
メリットとといものは少ないかも知れない。
それでもディスクをストライピングしていなかったり、ディスクキャッシュがそんなに無い
H/Wを使用しているのならTS_01、TS_02、TS_03を異なるディスクやI/Oコントローラー
上に配置したりする事によって、それなりにメリットは受けられるだろうね。
後は表領域を分けるもう一つのメリットに関しては、Archivelogモードで動いて
いれば、運用中でも表領域単位でリカバリがかけられる事かな。
こっちの方がむしろ恩恵は大きいかも知れない。
942 :
T.O:2005/11/14(月) 13:50:49 ID:qJ4s9CJj
>>941 返信有難うございます。
おお!まさにお聞きしたかった事です。
なるほどディスクの問題として言える事だったのですね!
・・・他にArchivelogモードですか、少し調べてみます。
エクステントの管理をUNIFORM SIZE指定にした場合、
小規模:128KBの表領域
中規模:5MBの表領域
大規模:50MBの表領域
って感じで表の特性に合わせてそれぞれ表領域を作ったりしてる。
944 :
887:2005/11/14(月) 23:51:59 ID:???
>>929 どうやら、oracle object for OLEというのでコネクションをプーリング
してるとか何とか。まだまだ調査中です。手順書や設計書などたっぷり
1000ページ以上あるわりにベンダーさんの資料はよくわから〜ん。
>>944 Oracle Object for OLEはoo4oと略されることが多いね。
VB6以前のシステムでは良く使われてたミドルウェアだから事例には困らんと思う。
OTNいけばマニュアルもあるはず。
946 :
NAME IS NULL:2005/11/15(火) 01:03:35 ID:6mShFTFn
>>939 信者らしい回答ありがとうございます。
読み取り一貫性が長所らしいが、
システム的に一貫性がないのが皮肉ですね。
>>946 DB2のマニュアルで「View」を「視点」とかって訳しているのは
何とかならんのか?
漏れはIのセールストーク以外で DB2 > Oracle っていうエンジニアに
なかなか出会わんのだが、どのへんがいいのか教えてほしいな。
一貫性がある説明でな。
>>946 「葉ブロック」ってなに?
中途半端に訳すんじゃなくて、訳すなら「葉片」というぐらいガチに訳すとかさ?
動的リスナー構成になっているかを確認するにはどこを見ればよいのでしょうか?
LISTENER.ORAでSID_LISTにPLSExtProcだけしかなければ動的構成?
952 :
931:2005/11/15(火) 09:49:19 ID:???
外部表について、調べてみました。
sql*loaderより、少し便利かもしれないです。
でも設定ファイルはいっぱい書かないといけないっぽい。
update ももっと楽な方法はないものか・・・。
953 :
931:2005/11/15(火) 11:03:46 ID:???
>>937 ところで、外部表作成時に、create table ... as select ... ってどうやればいですか?
>>953 >>937は、外部表を一回作ってしまえば、あとはそこから
ceate table ... as select ...で正規の表を作るとか、insert
してしまえば良いのでは?という意味なんだけどね。
955 :
931:2005/11/15(火) 13:15:08 ID:???
>>954 おそらく、作った後のことだとは思っていたんですが、
私が調べたりないだけで、できるのかなと、ていうより、できるといいなですが。
既存のテーブルと同じ構成の外部表を作成するのに、
簡単な方法ってないですか?
やはり、ここはfunction なり外部プログラムなりで作成かな。
>>951 Oracleインスタンスの起動前後で、lsnrctl serviceの内容を比べてみれ。
動的登録に成功していたら、インスタンスが起動しているときにlsnrctl service
にあらわれる。
tnslsnrのポートをデフォルトの1521から変更していた場合、インスタンス
パラメータのLOCAL_LISTENERでリスナーの場所をインスタンスに教えて
やる必要がある。
☆ チン マチクタビレタ〜
マチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < DB2のいいとこまだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
>>957 頼むと漏れなくIのひよっこエンジニアがバンドルされてきますw
顧客からすると、タダで常駐してくれるからっていんうで買って
しまうパターンが多いですw
autonomicの実態は中の人だったのか w
先生!
漏れのDB2が全然オートノミックじゃないのは
中の人がバンドルされてなかったせいでしょうか (´・ω・`)
Oracle10gなのですが、
データベース・トリガー内の:NEWとか:OLDって修飾詞は、
後ろに必ず(.列名)をつけないと使えないんでしょうか?
1行分のデータをそのまま別のFUNCTIONに引数として
渡してあげたいんですが…。
例:関数名FUNCに:NEWを1列渡す。
FUNC(:NEW);
やっぱりレコード型の変数を用意して、
そこに1列1列、:NEWの中の列値をコピーして、
そのレコード型変数をFUNCTIONに渡すしかないんでしょうか…。
とても悲しす。
963 :
NAME IS NULL:2005/11/17(木) 20:26:04 ID:YoHI+d2J
諸兄らに質問。
Miracle Linux 2.1 Standard Edition をインスコした鯖にOracle 9.0.1.を入れて、
同じドメイン内の他の端末に Oracle Client をインスコしてみたんだが、
下記のようなことを言われて困ってる。。。
ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました。
OracleDBを入れた鯖側のリスナーは動いてるし、
クライアントのローカルネトサービスも設定した。
どうすればつなぐことができるか教えれ ヽ(´Д`;)ノ
>>963 とりあえず、
サーバのlistener.ora
クライアントのtnsnames.ora、sqlnet.ora
を晒せ。(w
>>963 とりあえずネットワークケーブルが繋がってるか確かめろ
>>963 子供の使いかお前は。
最低限、tnsping の結果くらい貼れよ。
>>963 漏れはLinux側のF/Wの設定を疑うね。
確かインストール時にデフォルトでオンになってるんじゃなかったけか。
>>955 普通だったらDBAは既存の表のcreate table文を何処かに残して
いると思うから、そいつから生成するのが一番早い気がするが?
もし残っていないんだっから、Functionなり外部プログラムなりで
生成するしかないだろうね。
ユーザーのdefaultのテーブルスペースを知りたいのだが、
どのディクショナリにかかれているか教えてもらえませんか?
970 :
NAME IS NULL:2005/11/18(金) 10:16:11 ID:5Uqbbgwx
XE、国内投入予定はないらしいな。
ふざけんじゃね〜よ。
>>969 SYS.USER_USERSのDEFAULT_TABLESPACE列
>>969 select username,default_tablespace from dba_users;