1 :
NAME IS NULL :
2008/10/07(火) 21:58:03 ID:y+gMrh6e
>>1 乙であります。
取り合えず・・・。
1. 質問する時はDBのバージョンとプラットフォームぐらいは書きましょう。
2. OTNからダウソ出来るものは、30日過ぎても別に機能的に制限が
かかるという訳ではありません。あくまで紳士協定に基づいて、
削除してくださいという事です。
3 :
NAME IS NULL :2008/10/09(木) 02:27:10 ID:x7UcvDt0
Null age
null sage
5 :
NAME IS NULL :2008/10/10(金) 01:33:20 ID:WKuieuVm
Windows XP にて oracle 11g を使用しています ODP.NET にて、バルクバインドを使用してレコードのインサートを行っており インサート時にエラーになったレコードが存在しても エラーレコード以外を全てインサートするように組みました この時、例えば100レコードを配列バインドにしてインサートしたのですが 100レコードの中にエラーになったレコードが存在してもインサートを続行すると なぜか配列最後尾(この場合は100番目のレコード)が インサートエラーになっていないにも関わらずテーブルにインサートされません エラーが100件中の何件目であろうと、エラーレコードがあると配列最後尾レコードが入りません 100件全てが正常にインサートされた場合は最後尾もちゃんと入るのですが・・・ これってODP.NET の仕様なのかなと思ったのですが やっぱり自分のコードが怪しいですよね・・・
すいません、Windows 2003 にて oracle 10g を使用してるのですが sqlplusを2つ立ち上げて、片方にinsertしているのに 片方のselectで出てきません、これってバグですか?
>>6 それ、何て言うファントムリード?
RDBMSの意味、そしてトランザクションの隔離レベルを良く勉強してから
質問するといい。
9 :
NAME IS NULL :2008/10/11(土) 21:00:25 ID:k0WWMN/3
8に激しく同意〜
ひと桁台でこんな質問って こういうのでもいいのかと勘違いしてしまう
11 :
NAME IS NULL :2008/10/12(日) 03:21:01 ID:Rc/3eSvJ
インスタンスが起動していることを監視するには、smonだけ見てれば良いのでしょうか? 皆様はpmonとかバックグラウンドプロセス全部見てますか? sqlplusで接続確認するとかプロセスだけ見てもハングしている可能性あるよは無しで、単純にプロセスだけ見る場合です。
12 :
NAME IS NULL :2008/10/14(火) 00:08:12 ID:WVWwMetc
>>11 startup nomountで起動するプロセスにするとか。
smonのほかに、少なくともpmon dbw lgwr ckptが起動するはず。
>>5 あー、そんなようなバグの話聞いたことあるね
自分は出くわしたことないけど
15 :
わかってない :2008/10/18(土) 17:52:41 ID:???
マニュアルにあるdboraの見本でrshしているのはなぜですか? コメントアウトしちゃったけど後で影響でますか?
16 :
わかってない :2008/10/18(土) 21:39:36 ID:???
>>15 んー
su - oracle -c "$ORACLEO_HOME/bin/dbstart"
とかやりたくなるよな。
これができないプラットフォームがあるんじゃまいか?知らんけど。
17 :
NAME IS NULL :2008/10/21(火) 20:33:45 ID:sw348KkR
10gに詳しい人に質問です。 sysやsystemで、ユーザーにロールで権限を与えるときに不思議なこと がおきます。 RESOURCEロールに「CREATE TABLE」の記述がありますが、RESOURCEロール だけでは、SQLPLUSなどででユーザーがテーブルを作ろうとしても、エラー になります。 この点を調べても見ると、RESOURCEロールの「CREATE TABLE」には、 「表領域」の権限しかないからとの事でした(後述しますが、表領域しか ない時点で「TABLESPACE」の表記じゃないのがおかしく思えます)。 次に、RESOURCEロールをはずした状態で、「GRANT CREATE TABLE」で、 単独で権限を与えてから、ユーザーでテーブルをつくろうとすると、 またもやエラ−になりました。 この点も調べてみると、単独の「GRANT CREATE TABLE」には、「表作 成」の権限はあるが、「表領域」の権限がないからとの事でした。 つまり、 表領域 表作成 RESOURCEロールの中の「CREATE TABLE」 ○ × 単独の「CREATE TABLE」 × ○ ということになるようです。 そこで、RESOURCEロールを与えた後で,「CREATE TABLE」を与えてみると ユーザーでテーブルをつくることができました。 テーブル作成ができた事で結果オーライといきたいことですが、ユーザー 権限を付け加えるときに、Object Browserで権限の表示を観察してみたら とても不思議なことがおこったのです。 まず、最初にユーザーにRESOURCEロールを付与します。この時の権限の 一覧には「CREATE TABLE」の他に「TRIGGER」などいくつかの権限が表記され ていました。 次に、単独の「CREATE TABLE」の権限を与えてみてから、Object Browserで 権限の表示一覧を見ると 「CREATE TABLE」 「TABLESPACE」 の二つしか載っていないのです。 ここで頭が「???」となりました。 @RESOURCEロールの「CREATE TABLE」には表領域しかないのに 「TABLESPACE」と表記しないのか? ARESOURCEロールに単独の「CREATE TABLE」を新たに付与すると なぜ今まで出てこなかった「TABLESPACE」が出てくるのか? BRESOURCEロールについていた他の権限(TRIGGERなど)は、なんで 消えてしまうのか? この@ABについて、詳しい方、ご教授くださいませ。
ずれてました。訂正。 表領域 表作成 RESOURCEロールの中の「CREATE TABLE」 ○ × 単独の「CREATE TABLE」 × ○
またずれた。すいません・・・_| ̄|○
ひでええええええええHTMLDBで 更新したら全データぶっとんだあああああああああ ぎゃああああああああああああああああああ
>>17 RESOURCEロールにはUNLIMITED TABLESPACE権限が含まれてるからじゃね
含まれてるといっても、ロールに与えられてるんじゃなくて、自動付与だけど
しかも、これは10gよりずっと前からの仕様みたいなもんでしょ
session_rolesとかsession_privsで確認するのがよろしいかと
22 :
NAME IS NULL :2008/10/23(木) 00:10:32 ID:ZQGFGXgK
下記のSQL文がわかりません。 SQLの知識が少ないので、仕事で困っています。教えてください。 SELECT DISTINCT VALUE ( SUBSTR ( 項目A , 1, 3 ) , 'XXX' ) FROM テーブルA これは、テーブルAの項目Aの1桁目〜3桁を表示? この 'XXX' ← この文がわかりません。
DISTINCTは同じ内容の行を1行にまとめる為に使います。 もしその必要がないのであれば、単純に SELECT SUBSTR( 項目A , 1, 3 ) FROM テーブルA でよいのでは?
24 :
NAME IS NULL :2008/10/23(木) 00:42:31 ID:ZQGFGXgK
>>23 VALUE ( SUBSTR ( 項目A , 1, 3 ) , 'XXX' ) この 'XXX' これは何を意味するのでしょうか?
これの'XXX'がわかりません。
何とぞ、明日までの課題ですので、どなたか教えてください。
項目Aが取得できなかったら、'XXX'を代入するイメージなのでしょうか?(>_<)
VALUE関数は、全く違う用途で使用されるものなので 単に項目Aの1桁目〜3桁を表示するだけなら必要ないのでは?
archive log list で表示される、アーカイブ先についてですが、 log_archive_dest_1、log_archive_dest_2 にアーカイブ先を指定した場合、 どちらがアーカイブ先として認識されるんでしょうか。 現在、アーカイブ先が log_archive_dest_2 の値となっていて、 log_archive_dest_1 の値に変更したいと思っています。 何か良案ありませんでしょうか。
>>26 両方にlocationオプションで指定していれば、同じアーカイブログが
同時にそれぞれのディレクトリに吐かれる事になる。
ちなみに今の状態から判断すると、location句が指定されているのは
log_archive_dest_2だけの方になってるとかないか?
エスパーでないので良く分からんけどな。
>>24 実は問題が間違っていてVALUEではなくNVLだったとかじゃね?
>>27 log_archive_dest_1 と _2 の両方に location句が指定してあります。
log_archive_dest_2 のアーカイブログを誰かが途中まで削除してあり、
recover database をした際にエラーがでてしまいました。
archive log list で確認した際に アーカイブ先 が _2 の場所になっており、
_1 と _2 の両方にアーカイブを吐いているんだから、両方もしくは、
どっちか片方を見るように変更できないものかと思っています。
同じものを吐くんだから、あまり考慮されていなく、
log_archive_dest_n の、n の値が一番大きいものを参照する仕様なんでしょうか。
ちなみに Oracle 10.2 SE です。
>>29 log_archive_dest_state_1=enable
log_archive_dest_state_2=defer
でいいんじゃね?
いずれにせよリカバリを実行するのなら、log_archive_dest_2を
init.oraから一時的に消すか、もしくは全アーカイブログを
一箇所に集めておくとかすればいいじゃね?
もしくは手動で指定とかね。
>>30 なるほど、一時的に無効にしちゃうって事ですね。
それもありですね。
結局 log_archive_dest_2 の指定を削除して、取り合えずはリカバリできました。
ですが、どっちかを指定できるんじゃないかと思って聞いてみました。
できそうで、できないんで...
RMAN使ってリカバれば自動認識とかしそうだけどな。 RMANは使いかなせれば意外と便利。
>>32 RMANですか。使った事ないです...
使いこなせれば、いろいろ便利なのかもしれないですね。
34 :
NAME IS NULL :2008/10/29(水) 22:12:39 ID:VF6FeZGZ
すみません。教えてください。 パッケージを使わずにストアドプロシージャのみでの配列操作で レコードを更新することは可能でしょうか? 参考URLなどありましたら教えてください。お願いします。
35 :
NAME IS NULL :2008/10/30(木) 20:35:22 ID:k/PL7hUN
>34です。 助けてください。おながいします。
37 :
NAME IS NULL :2008/10/30(木) 22:04:05 ID:k/PL7hUN
これまで SQL Server を使っていた者です。 Oracleにおいては、テストや開発環境で安価もしくは無料で手に入るものは あるのでしょうか? 例えば、SQL Server では以下のようなものがあります。 ・最高の機能が開発限定として安価(1万未満)で販売されている。 ・最高の機能が日数制限付(180日程度)で無料でDLできる。 ・制限付で無料、C/Sシステム用として配布も可能がある。
ある。 体験版(中身は製品版と全く同じ。完全に開発目的なら、期限過ぎてもそのまま使用可能だったかな?)と 機能及びインストールベースが削られた、商用利用も可能なOracleXEという無料版
40 :
NAME IS NULL :2008/11/03(月) 15:35:43 ID:BN+eUsH7
Oracleのバージョンアップを検討していて、 8i⇒10gにします。 サポートできていないSQLがのっているサイト・掲示板などありますか?
OTNとかOiSCとか。
vistaに11gのトライアル版入れたけど、コピーやペーストができません。 どうすればいいでしょう?
できたよん
44 :
NAME IS NULL :2008/11/03(月) 20:37:04 ID:i9ran1sH
>>40 9iR1,R2 10gR1,R2の新機能、SQLリファレンスのマニュアルの
廃止になった機能を読む
>>42 ヒント:Office入れてる?IMEを標準にしてやって味噌。
助けてください・・・ 急にOracleを管理するよう言われてOracleXEで勉強中なのですが バックアップを取らないままCURRENTのREDOログをOSから削除してリカバリをしようとしています ロググループを削除しようとするとCURRENTなので不可 ログスイッチをしようとするとDBをオープンしろと言われてしまいどうにもできません マニュアルの不完全リカバリを読みながら recover database until cancel をして alter database open resetlogs を行うとSYSTEMデータファイルのリカバリが必要といわれ alter database open noresetlogs を行うとCURRENTのREDOがないと言われ どうすればいいのかわかりません CURRENTを他のグループに移してログ削除したグループをDropするとばかり思っていたので switchするのにまずOpenしなければならないがOpenできないという無限ループになっています どのような対処が適切なのかご教示いただけませんでしょうか
47 :
NAME IS NULL :2008/11/04(火) 14:57:35 ID:xSEhhdTy
TimesTenの話ってここで良いの? 従来のSQLクエリ文とは違うらしいけど どう違うのでしょうか?
>>46 現行ログが吹っ飛んだらDB止めたらいかんだろ・・・・。
mount状態で使えるかどうかは知らんが、現行ログが吹っ飛んだら
alter database clear unarchived logfile group <吹っ飛んだロググループ番号>;
で対応するもんだ。
49 :
NAME IS NULL :2008/11/06(木) 18:14:27 ID:6klp6LOT
どなたか教えてください。 OracleのデータブロックのI/Oサイズチューニングは、初期化パラメータDB_FILE_MULTIREAD_COUNTで行いますが、 Windows Server 2003での、I/Oサイズの変更は可能でしょうか? どなたか教えていただければ幸いです。
Windows板池
>>49 > DB_FILE_MULTIREAD_COUNT に一致する情報は見つかりませんでした。
>>49 Raid組んでいるのならRaidのストライプサイズでI/Oサイズを
変更出来る様になっていると思うけどね。
俺が昔ベンチマーク取った時には、窓のRaidはストライプ
サイズが大きい方がパフォーマンスが良かったな。
当時、CompaqのDL380の6ノードRACでの結果だけどな。
NTFSっていうかWindows側で調節できるんかな? UnixでもSolarisUFSはブロックサイズ8Kで64K I/Oでほぼ固定だったりするし。 VxFSは、その辺はかなり自由に設定できるけど。
本当にくだらない質問ですいません。 Win2000serverに10g release2をインストールしたいのですが、インストーラはOTNの何年何月版に有るのでしょうか? 簡単に分かるだろうと思ってファイルを漁ったのですが見つかりません…
ユーザーの権限について教えてください あるユーザーを、制限付きユーザーで作りたいのです その制限が、指定の表領域(もしくはテーブル群)のみ参照・更新できる、といった感じで 実際、通常ユーザーは基本領域のみ参照更新可能で、管理ユーザーは システム全域と、Create、Dropできるといった分け方されてるんですよね? そのへん、どやってるやるのでしょう?
>>55 指定のテーブル群だけを参照/更新させるというのは、オブジェクト権限で与える。
特定表領域の使用や容量を制限するのはQuotaで設定する。
>>49 Format時のAllocation Unit Sizeで変更出来るんじゃね?
>>56 Solarisx86/x64版はまだなんだなぁ・・・。
60 :
NAME IS NULL :2008/11/10(月) 20:12:40 ID:1PkOr8o/
これまでWindows版Oracleつかってきたんだけど ウチの使い方だと、どうも2,3週間で落ちる で、Linuxにしたらいんじゃね? ってことで試験運用することになったんだけど この際だからDBいれるところも検討しなおそうと言う話に で、Rawにしたほがいいのかな? そっともExt3ファイルでつくったほうがいいのかな? それぞれ何が違って、メリット・デメリットがなんなのかっていうのが、 公式なのではなくて、使用者側からの情報がさっぱちなくて おまえらはどうしてますか?
>>60 俺の私見だが、こんな感じかな。
[Raw Device]
O/Sのファイル・キャッシュをバイパス出来るので、DB_CACHE_SIZEの
チューニングでパフォーマンスの改善が望める場合がある。
O/SのファイルキャッシュからDB_CACEへのコピーという段階が発生
しないから、その分CPUのオーバーヘッドも下がる。
ただLinuxには持てるRaw Deviceの上限があったと思った(最大で255だっけか?)。
後は表領域を拡張したい時には、管理が凄く煩雑になる。
多分、新たにRaw Device作って、そいつをalter tablespace add datafileで
引っ付けていくという作業になると思う。
あとバックアップがO/Sのddコマンド使うか、RMANか、もしくはRaw Deviceを
直接読み込めるバックアップツールのみとなる。
[Ext3]
管理が楽。
ファイルシステムの拡張も比較的楽だから、表領域の拡張も楽に行える。
バックアップもその気になればO/Sのcpコマンドでだって出来る。
ただO/Sのファイルキャッシュが介在するので、パフォーマンスチューニングか
ちょっと複雑になる。
まあ、そんなに意識しても仕方ないかも知れないが・・・。
[ASM]
今だったらRaw使うぐらいならASMを使う。
ただディスクへのパスが複数ある場合、ASMだと認識出来ない。
その場合にははRaw Device作って、そいつをASMディスクとして認識させるという
作業が必要。
LinuxにはOracleから提供されるASMLibというライブラリがあり。
ホットブロックのリバランシング機能など、そこそこ使える。
バックアップに関しては、Raw Deviceと同じ制限がある。
>ディスクへのパスが複数ある場合、ASMだと認識出来ない。 致命的欠陥すぎるw
同一ディスクにパスが複数あっても、冗長化ドライバとか使わないとパス障害で切り替わらないから、実害はないんだけどな。 てか、ファイルシステム自体にパス冗長化機能を持ってるやつってあんの?
>>62 そんな致命的でも無いよ。
書いた様に、複数パスがある場合には、冗長化されたRaw Device
作ってしまえばいいだけ。
そいつをudevで起動時に認識させさえすれば、特に意識する必要は
無い。
65 :
NAME IS NULL :2008/11/12(水) 01:45:35 ID:ee+0Tgqq
ASMっていうの使うと、体感できるほどはやい? 10%とかそんなレベルなら、ファイルシステムの方がいいきがするなぁ
RAWには若干劣るが、ファイルシステムよりかは早いというのが実感かな。 O/Sにもよるが、ファイルシステムとRAW Deviceも最大で30%しか違わ なかったりとかするしね。 私見だが、ASMにするメリットはRAW Deviceを使うよりかは、管理が楽で そこそこパフォーマンス向上も望めるという点かな。
67 :
NAME IS NULL :2008/11/12(水) 07:23:51 ID:1ijqF5aF
SERACなら要ASM
LinuxだったらOCFSもあるから、別にASM必須って訳でもないかな。 今でこそ大分落ち着いたけど、最初の頃はバグだらけで結構 データ吹っ飛んだ例が後を絶たなかったし。 ようやっと実用に耐えられるレベルになってきたって感じじゃない? RACの場合はそれこそRaw Deviceの方が歴史が長いしね。
ASMって基本的にWindowsのためのものだな。 LVMやVxVM使ってるなら、わざわざそれらの管理外に別のボリュームマネージャを使いたいとは思わんし。
70 :
NAME IS NULL :2008/11/12(水) 19:22:34 ID:1ijqF5aF
いや、だから安価なSERACの場合はASMのみしかサポートされないんだって。 ocfsとかLinuxだから使わないとかいう選択肢はない。
>>69 まあ、一応自身の技術習得目的のためにHP-UXやLinux上でも
使っているけどな。
窓RACだったらASMよりかはOCFS使った方が何かと楽そうな気が
するよ。
>>72 信用売り残が積み上がっているからでしょ。
>>60 >>ウチの使い方だと、どうも2,3週間で落ちる
2-3wで落ちる使い方が気になります、詳しく
75 :
NAME IS NULL :2008/11/18(火) 23:38:08 ID:zZ+Wlhav
ちょいと質問させてくれ ODP.NET使って、エクスポートするプログラムをつくたのさ 最初ExexuteReader使ったら落ちまくる。 200万件走るなんて夢のまた夢。 40万件くらいでOutOfMemoryとか言って死んじまう。 仕方ないからDataAdapterつかってFILLしてみたら、当然一発で落ちる。 どうしたらいいんだ。
>>75 expdp を外部コマンドとして呼び出すとか。
77 :
NAME IS NULL :2008/11/19(水) 00:15:40 ID:jlroBEfm
>>76 アイディアありがとう!
でも、CSVで吐き出さないといけないんだ。
しかも、特定のカラムは置換してやったりしないといけない。
業務関係の変な処理が多かったからVB.NETで、と思ったのだ。
正直、手詰まりな中で来週本番稼動だぜ!
死ぬしかないか!
adrciのデフォルトエディタなんだけど、 Windows版11gでも問答無用でviってどういうことなの・・・
>>77 パッケージ作ってUTL_FILEで出力。
特定のカラムの置換処理はViewで対応する。
81 :
NAME IS NULL :2008/11/19(水) 06:54:13 ID:AvIXrbBK
バックアップ/リストア/リカバリを勉強しているんですが、 各コマンドを打つ時の状態が色々あって混乱しています。 DBの状態(MOUNT/OPEN)・データファイル状態(ONLINE・OFFLINE) をどのように使い分けるのかが良くわかりません。 何とか理解したいのですが…
>>81 大別するとこんな感じかな。
Open状態でリカバリを試みる状況
- データファイルの破損
- 表領域レベルでのリカバリの実施
- ブロックレベルでの破損 (RMANのMBR機能を使う)
Mount状態でリカバリを試みる状況
- DB全体のリカバリ (Point-in-timeリカバリを含む)
- Online Redoログが吹っ飛んだ場合
Nomount状態でリカバリを試みる状況
- コントロールファイルがふっ飛んで再作成しないとならない場合
83 :
NAME IS NULL :2008/11/19(水) 21:05:47 ID:q2BaRybn
>>81 バックアップリカバリを学ぶ前にオラクルの基本動作を学ぶべし。
そうすれば自ずと状態ごとにリカバリできるものの判断ができるようになる。
>>77 カラム置換が良く分からないけど。SQL*Plus で
set markup html on ←もしかしたら違うかも
set pagesize 0
set trims on
spool hoge.html
select ...
spool off
で、hoge.html を Excel で編集→CSV出力
なんてのはダメ?
一度画面出力される分だけ、レコード数的に時間は掛かりそうだけど。
(あっ、Excelって数万レコードしか使えないんだっけ…)
>>85 Excel2007 で改善されてるよ。
それでも100万行くらいだけど。
87 :
NAME IS NULL :2008/11/22(土) 15:22:30 ID:9xzmOyv+
RACを利用したいんだが、10gR2と11gのどちらが安定しているのか悩ましい。 10gR2ではバグに悩まされたので。
89 :
sage :2008/11/22(土) 17:16:50 ID:p5sHRkLn
87>> 10gはbugだらけだが、調査で既存bugをすべて潰せば安定するはず。11gは10gよりbug少ないかも知れんが、導入してるところが少なく、まだbugができっていない可能性がある。 88>> CROWNってw
>>87 使うプラットフォームによるかな。
Linuxなら、新しいOracleの方が、インストールの手間は少なくて済む。
>>87 あなたにノウハウがある分10gR2でいいんじゃないの?
プロジェクト終わるまでにサポート切れるかも知れないけど。
92 :
88 :2008/11/22(土) 21:02:25 ID:???
>>89 何だお前。
当たり前のことしか言えないくせに。何の情報もないぞ。
93 :
NAME IS NULL :2008/11/22(土) 21:19:37 ID:p5sHRkLn
>>92 当たり前のことをわかっていないSEの多いこの世の中。
当たり前のことをわかっていることも大事なことの一つ。
94 :
88 :2008/11/22(土) 22:17:21 ID:???
だからと言って俺をコケにする理由にはならないな。
そのレスが理由に今なった
ClusterwareってなんかASMみたくほんのちょっとでもメリットあるのか??
98 :
NAME IS NULL :2008/11/23(日) 00:46:50 ID:81DIcuAu
>>96 俺は10203で大障害になるケースも何件か見てるけどな。
逆に10201から上げたのが起因で障害が起きたこともあったし。
oprocdとか不振な動きをすることが多い気がする。
>>97 メリットもなにも、10g以降必須ですから。
100 :
NAME IS NULL :2008/11/23(日) 10:18:24 ID:ONIAIzDs
ポート番号が5500から1158に変更された理由を教えろ
>>87 CRSは11gの方が安定している。
というか、11gのCRSは実質的には10.2.0.4とほぼ同じ。
10.2.0.2は結構バグがあって、ノードが突然排除されたりする。
10g使うなら、CRSは10.2.0.4+バンドルパッチは必須だろうな。
もしくはベンダー側のクラスターウェアと同居させて、スプリット
ブレイン時のノード選定はそっちに任せるというのも手。
>>98 あれ?ClusterwareってRACと関係あるの?
>>96 無期限のサポートだと、
不具合が出ても直してもらえないんです!><
Personal Edition 5万ってマジですか? 一度買ってしまえば、永遠に家のPCで使いたい放題ってことですか?
XEよりもいいのかしらん
バックアップリカバリについてご質問です。 表領域およびデータファイル破損は完全リカバリで対応可能だが、 表領域の削除は、仮にデーターファイルがあっても不完全リカバリする必要がある、 で合ってますでしょうか?
108 :
NAME IS NULL :2008/11/23(日) 23:16:53 ID:81DIcuAu
>>103 9iRACまではベンダ製ClusterwareありきでRAC(OPS)は動作していたが、10g以降のRACを使用するにはOracle Clusterwareが必要。
>>107 日本語でOK
>>107 の書き換えです。
たとえば、EXAMPLE表領域にexample.dbfというデータファイルがあるとします。
drop tablespaceでEXAMPLE表領域を削除し、example.dbfを削除しなかった場合、
復旧するには不完全リカバリが必要ですか?
>>103 むしろ10g以降はベンダー製のクラスターウェアは必須では無くなった。
>>109 drop tablespaceした時点のファイルが残っていようが、コントロール
ファイルとのSCNの同期が必要だから、バックアップからのファイルの
リストア及び不完全回復が必要。
というよりも、drop tablespaceした時点でO/S上のdbfファイルは
全く意味の無いものとなる。
ちなみに表領域レベルでの不完全回復は不可能なので、DB全体
レベルでの不完全回復が必要となる。
>>109 もしくはO/S上のデータファイルを有効利用したい時には、
トランスポータブル表領域を使うだな。
>>111 ,112
ありがとうございます。
ユーザーを削除した場合はフラッシュバックデータベースでいいみたいですが、
これは制御ファイルがユーザー情報を持っていないからと考えていいのでしょうか?
>>114 普通に落とせるけど?
ちなみにブラウザーは火狐ね。
>>113 フラッシュバックデータベースは特殊なフラッシュバックログを
当てて過去の特定の時点まで戻す機能。
そして「表領域削除されている場合には使用出来ない」という
制限がある。
つまりDMLには対応していないって事だろ。
>>115 ありがとうございます
火狐入れて試したらダウンロードできました。
最近だと総データ量100GB以下のDBって小規模扱いなの?
120 :
NAME IS NULL :2008/11/28(金) 02:32:20 ID:t30Az4UP
すんごい基本的な質問 centOS 5.2にOracle11gいれて使ってて Core2QuadなCPUを、GUIなCPUモニタで4こそれぞれの占有率みてたところ クライアントPCから、ちょっと重たいSQL発行したら いっこのCPUだけ100%で、のこりの3こは1%未満な状態に Oracleのプロセスって、マルチスレッド?な形になってないのかな? いっこの接続で、いっこのプロセス? 4このCPUつかって、カカッと余力のある計算をして欲しいと思うんだけど それって、設定ミス? OSの問題?
>>120 CPUの使用・占有率はどちらかというとO/S側のスケジューリング方式に
依存する部分が多いと思う。
複数CPUの効果を実感したければ、全件検索とかでParallelヒント句つけて
試してみ?
>>119 小規模だな。
1TB超えないと大規模とかって言えないよ。
億単位のテーブルがごろごろしてそうだな…(´д`;)
124 :
ma :2008/11/29(土) 01:09:50 ID:erpkj/yK
auditのログを完全に出力しない方法ってありますか? 初期化パラでその辺の設定は無効にしてあるのですが、 インスタンス停止起動時などはどうしても出力されてしまいます。 バージョンは10gR2です。
SYSDBA権限での接続は必ず出力されるんじゃなかったっけ?
126 :
ma :2008/11/29(土) 02:22:20 ID:erpkj/yK
そうみたいですね、必須監査でsysdbaの接続、インスタンスの起動停止は 必ず出てしまうみたいなのですが、それを止める方法が知りたいのです。
U.S. Oracleの正式回答によると「Expected behavior.」 つまり「仕様」だそうだ。 諦めろ。
oracle 10gでLISTENERとLISTER0という2つのリスナーを起動しました。 ところが以下のコマンドを打つと、以下のようになります。 LSNRCTL> show current_listener 現行のリスナーはLISTENERです。 ちゃんとLISTENERもLISTENER0も起動しているのですが、何故でしょうか?
今どのリスナーを操作しようとしているかが出てるだけだろ
>>128 もしかしてやりたいのはこういう事か?
lsnrctl status LISTENER
lsnrctl status LISTENER0
>>129 ,130
statusコマンドで確認はしました。多分ですが、どちらも正常に表示されています。
それなのにshow current_listenerで片方のリスナーしか表示されなかったので
不思議でした。操作中のリスナーが表示されているってことなんですね。
ありがとうございます。
あと、ためしにDBサーバー上でoracle connection manager起動しようとしたんですが、
「cman.oraが見つからない…」というエラーが出ました。
ちゃんと、$ORACLE_HOME/network/admin配下に置いたのですが。
DBサーバーと同じサーバー上だから駄目ってことはないですよね?
132 :
NAME IS NULL :2008/12/08(月) 14:29:31 ID:+eRptruM
質問があります。 Oracle10gに限らないと思うのですが、SELECTの質問です。 select * from PIYOTBL; とすると列間にスペースが入ってカラムごとに整列されますが、整列しないようにできますか? 何をしたいかというと、 set colsep ',' spool piyotbl.csv select * from piyotbl; spool off などとして、Sql@PlusからSCVを生成したいのです。 そのとき列間に余計なスペースが入ってほしくありません。 よろしくお願いします。
Oracle10g(10.2.0.3)です。 外部ストレージに、/ORAとして、DB領域を取っています。 内部ストレージに、/home等の領域があります。 内部ストレージのイメージバックアップを、ライフボートで取りました。 その後、DBが稼動し、にドンドン、データが入っていきます。 ある日、内部ストレージが死んだため、HDDを交換して バックアップイメージからリストアしました。 しかしながら、sqlplusが、ORA-01033エラーを出し、起動しません。 分からないながらにも、調べた結果、 oracleのプログラムがインストールされた領域と、DB領域間で 整合性を取っているらしく、今回のケースでの、 内部ストレージのデータを、復旧させただけでは、 うまく動かないようです。 これ、何か一発でポンと直す方法ありませんか?
>>134 Oracleのバイナリーにパッチとか充てない限りは、普通はバイナリーとデータファイルとの
間に細かい整合性とかはないよ?
バイナリが突然見えなくなったみたいだから、細かいゾンビプロセスやらセマフォやら
$ORACLE_HOME/dbs/hc_<SID>.datとか残っちまってんじゃないの?
取り合えずゾンビプロセス全部killして、セマフォを綺麗にして、さらにDBをshutdown abort
してから起動してみたら?
例えインスタンスが起動していなくても、shutdown abortコマンド$ORACLE_HOME/dbs/hc_<SID>.datの
状態とか変わるし?
136 :
NAME IS NULL :2008/12/10(水) 23:00:07 ID:yOj3MU8T
CPU使用率がずっと100%なんですけど、 何が原因なんでしょうか 再起動直後は安定しますがすぐ100%になります。 よろしくおながいします
OSは何? どのプロセスが食ってるの? ずっとってどれくらい? 1日放っておいてもそうなの? アラートログに何も出てないの? 何も教えてくれないの? バカなの? 日本語書けないの?
138 :
NAME IS NULL :2008/12/10(水) 23:19:27 ID:yOj3MU8T
>>137 失礼しましたコアダンプはいてました。
OS:Linux(debian4.0)
プロセス:xe_d000_XE
バージョン:10.2 XE
アラートログ
Errors in file /usr/lib/oracle/xe/app/oracle/admin/XE/bdump/xe_s000_1003.trc:
ORA-07445: 例外が検出されました: コア・ダンプ [lsfcln2()+55] [SIGSEGV] [Address not mapped to object] [0x444E4154] [] []
です。
>>138 OEM関係じゃね?
OEM入っている?
割り込んですまんが、サポートに聞けば?
サポートされていないディストリで動かしてるんだから 自己解決するしかないよ。残念!
おかしいな、debファイルだったんだけど どうも。
取り合えず聞くだけ聞いて、そのままというのではなく、問題が直ったのなら、 何らかのフィードバック書いてくれよ。
>>143 要求されている Debian 3.1 と 4.0 では違うと思うが。
>>145 放置してたら、マシンが唸って
その後安定したので、解決法はひたすら待つことかもしれません。
レコード長500B、件数10万件のテーブル(500B*0.1M = 50MB) が最大の表 になるインスタンスの場合、TEMP表は 50MB ぐらいでいいんでしょうか。 一番大きいテーブルをソートするのに使う場合を想定ってことで。 でも、ソートするときOracleはデータ全部ソート対象にする?Raw IDのみの 並べ替えとかではないんでしょうか・・・
>>148 流れるSQLは全件検索ばかりなんですか?
普通はまず絞り込んでから、Sortしませんか?
それと流れるSQLは一個だけなんですか?
他にもSort処理は走らないんですか?
150 :
148 :2008/12/12(金) 04:04:53 ID:???
>>149 たしかに、同時に使われる可能性もありますね(;´Д`A
ただ、ソートが絞り込まれた後にかかるかはSQLが今の時点では
わからないため不明です。
RowIDのソートだけなら領域ほとんど使わないと期待してる
んですが、データごとソートしてるんですかね。
ソートもブロック単位関係するよな?
ROWIDのソート? 普通にインデックス作ればいいと思うのだが。
>>150 メモリ沢山積んで、pga_aggregate_targetを多めに取って、あとは
細かくチューニングしていけば?
どうしてOracleはLIMITを実装しないんだろうね 意地になってるのかな
155 :
NAME IS NULL :2008/12/14(日) 17:19:34 ID:hLN0PBn0
Windows Server 2003、Oracle10gですが、 表領域のサイズはどのように決定していますか? 見積もり方法などありましたら、教えてください。
Net Services 管理者ガイド 11g リリース1のPDF版っていつ出るの?
159 :
155 :2008/12/14(日) 21:39:48 ID:hLN0PBn0
>>156 ,157さん
ご返信ありがとうございます。
otnの見積もり、すごく参考になります。
oracle9以降を利用してLinuxクロス環境のクライアントを構築したいと考えています。 Instant Clientのソースコード一式はフリーで入手可能でしょうか?
ソースコードが要る理由は? ライブラリとヘッダファイルだけあれば十分じゃないの?
>>161 CPUがIntel x86系ではなく組込用ボードのCPUなので、ライブラリ等はすべて
クロスコンパイルしなければ使えません。
普通にDLしてRPMでインストール出来れば楽なんですが。
それでソースが必要なので。
163 :
NAME IS NULL :2008/12/15(月) 16:11:37 ID:Ls3H8s+e
番号 氏名 会社CD:入社日 0001 A太 001:2006/01/01 0001 A太 002:2007/01/01 0002 B子 002:2007/01/01 0002 B子 003:2007/07/01 0002 B子 001:2008/01/01 0003 C彦 002:2008/01/01 こんな感じに並んでいるデータを 番号 氏名 SEQ 会社CD:入社日 0001 A太 1 001:2006/01/01 0001 A太 2 002:2007/01/01 0002 B子 1 002:2007/01/01 0002 B子 2 003:2007/07/01 0002 B子 3 001:2008/01/01 0003 C彦 1 002:2008/01/01 って感じに1行追加してあとでクロス集計を掛ける際に使いたいんだが どうやったら出来るかな?
>>162 なるほど。でも一般には入手不能ですよ。
>>164 ググっていたらオープンソースのOracle互換 EnterpriseDBという製品を見つけました。
PostgreSQLベースですが、Oracleへのインターフェースを備えているようなので
これで試してみます。
ありがとう
>>163 どこにどんな 1 行を追加したいのかが分からないと話が始まらない
rank() で行けるのでは? あと、さりげなくもすごいデータ内容だと思いました
168 :
163 :2008/12/16(火) 09:00:16 ID:???
まあある意味業務で用いるものだからね
前任者が退職してクエリとか引き継がれずただ業務だけが押し付けられたもんでね
>>166 単純に数値型でいいんで履歴の若い順に1,2,3…って数字つけたいだけなんだ
場所は頭でもいいし最後でもいいんでとりあえずナンバリングするだけ
そうすればあとでクロス集計クエリ作るときにそいつを列にするだけでいいんで
…テーブルに出してからなんかしているんかなぁ
パーティションバイなんだぜ
>>168 行じゃなくて列な。
row_numberでググれ
なんだ、列なのか ならできるだろうに
SELECT C1,CASE C2 WHEN 1 THEN "AAA" WHEN 2 THEN "BBB" ELSE "CCC" END,SUM( C3 ) FROM T1 GROUP BY C1,CASE C2 WHEN 1 THEN "AAA" WHEN 2 THEN "BBB" ELSE "CCC" END これCASE文 2つ同じの書かないと駄目なんでしょうか?
副問合せを使わないのであればそうだろう
WebLogicとOC4Jって今度どういう関係になっていくんだろ? 今、OC4Jの乗っかってるOracleApplicationServer使ってるんだけど、 これはそのままOracle WebLogicServerに載せ替えられるんだよね? JavaEEみたいな環境依存バリバリのプラットフォームを移行するのも 甚だ怖くはあるけど。。。
携帯から失礼します。 TableAとTableBの情報を参照するビューを作ろうとしています。 PKはそれぞれTableA.col1とTableB.col1,col2になっていて、TableA.col1でTableB.col1に当てるとTableBからはn件取れる形になっています。 ビューの定義はTableA.col1と、TableA.col1でTableBに当てた結果が0件の場合に'0'を、n件の場合は件数を設定したいのですが、 decode文の中で「select count(*) from TableB where TableB.col1=TableA.col1」の件数を評価する方法は無いのでしょうか? なお、Oracle10gを使用しています。
未検証。 select col1, nvl(B.comp, 0) from TableA A left join ( select col1, count(*) as comp from TableB group by col1 -- comp: col1 毎の件数 ) B on (B.col1 = A.col1);
OracleMasterのBronzeとSilverとでは何が違うのでしょうか Silverの範囲にBronzeの範囲は含まれるのでしょうか お願いします
10gXEをwinServer2k3に入れたんですが、Solaris10用のクライアントって無い んでしょうか?winとlinuxだけ? web鯖とかSolarisで動いてるんで、なんとかSolarisから叩きたいんですが。
それって評価版ちゃうの?
184 :
NAME IS NULL :2008/12/22(月) 23:23:49 ID:p8qevsH7
Windows Server 2003、Oracle 10g EE です。 RMANで、バックアップファイル名を、FB_20081222.BKPなどのように したいのですが、 どのようなコマンドを打てばよいでしょうか? どなたかご教授いただければ幸いです。
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'FB_%Y%M%D.BKP'; とかかな。
186 :
NAME IS NULL :2008/12/23(火) 00:01:41 ID:BBlYK1lJ
>>185 ありがとうございます。
日付がファイル名に入りました。ほっとしました。
10.2.0.4をあるシステムで使っていて 要らないテーブルを削除する役割を承った ダメだ テーブル名にスペースがある時にドロップが出来ない やり方を知ってる人がいたら教えて欲しいです。 作成したのは先人す
EMから消すというのは。
ダブルクォーテーションで括ればどうよ というか実行環境書こうぜ?SQL*Plusでいいのか?
テーブル名にスペースって付けられるのか。 aaaって名前のテーブルと aaa bbbって名前のテーブルがあったとき select * from aaa bbbってやったらどうなるんだろう。
>>190 ダブルクォーテーションでくくれば、いけんじゃね?
テーブルaaa bbbをフィッチ
select * from "aaa bbb"
テーブルaaaとテーブルbbbをフィッチ
select * from aaa bbb
試してないから、嘘っぱちかもだけど...
XEで試したらそれで行けたよ この業界では基本テクだろうけどね 念のため言っておくと character sensitive だ
193 :
192 :2008/12/23(火) 15:24:14 ID:???
>"aaa bbb" 自分がやったのはこれだけね 他は知らん
194 :
192 :2008/12/23(火) 15:25:13 ID:???
自分が試したのは >"aaa bbb" これだけね 他は知らん
195 :
190 :2008/12/23(火) 15:30:53 ID:???
やー、サンクス。
ていうか別に
>>190 みたいな状況の解決方法を知りたかったわけじゃなくて…
まあいいか。
187で質問した者だが 数々の解答感謝 だが、ダブルクォートで囲むのはやった後だったんだ 作業してたのはLINUXのPLUなんだが いっこうにそんなテーブル無い、頭おかしいの?死ぬの?(脳内変換)というエラーに悩まされ 後輩君に頼んだら一発で消しやがった しかもCSEというツール使って 後輩ツエーと思ったが ツールを覗いておかげでわかったんだ テーブル名にスペースと制御文字が含まれているということを WindowsのCSEでは見えるんだが 直接、叩いてた俺には見えなかったというわけで スペースが入ってるだけと思わされたわけだ こんなテーブルどうやって作ったんだ先人は みんな、貴重な意見ありがとな この寒い中、暖房効き過ぎな部屋にいる俺の骨身に染みたわ
「ORA-01009 必須パラメータがありません」ってでます。 ぐぐったらまったく同じ状況の人の質問があったんで載せます。 この人はどう解決したのか不明です。 過去に同じエラー出たって人いませんか? ぜひ解決方法をお願いします。 ------------------------------------------------------------ 「j2sdk1.4.2.03+tomcat4.1.24+oracle9iの環境で構築しております。 JDBCでデータソースを使っています。 ORACLE SQLPlusで通るSQL文がjavaのプログラムを通して呼び出すと ORA-01009: 必須パラメータがありません。 というエラーがtomcatのlogに吐き出されます。 Statement stmt= conn.createStatement(); ResultSet rset = stmt.executeQuery(sql);←ここは通ります。 if(rset.next()) ←ここでデバッカーが止まる という状態になってしまいます。 またPreparedStatementでResultSetを取得しても 同じ状況になってしまいます。(この場合はtomcatのlogにnullとだけ吐き出される) また全部のSQLがおかしいわけではなく、 あるテーブルを使うとこのエラーが起きてしまいます。 原因がまったくわからず困っています。 どうかご教授お願いします。 」
198 :
NAME IS NULL :2008/12/25(木) 13:43:23 ID:a4IRyWzY
Windows Vista Enterprise 64bit sp1 に Oracle 10g Client x64 を インストールしたいのですが 開始してすぐに 内部エラーが発生しました。"不明" "不明" "不明" のように異常終了します。 どうしてでしょうか?
>>197 どんなSQLを発行しているかによる。
>>198 クライアントつってもイロイロあるわけで。
何を開始したのかも分らないわけで。
201 :
197 :2008/12/25(木) 23:47:37 ID:lOTqMAhd
>>199 全角スペースつかってないはず・・・
一応確認する
>>200 select文
select * from TABLENAME
where COLUMNNAME like 〜
あるテーブルまでくるとエラーが発生するんだよなぁ・・・
>>201 executeQuery に入れているSQL文を正確に出さないと意味無い。
JDBCの不具合の可能性もあるので thin なら OCI を試すとか、
結局はサポート情報で出せない情報かもしれない。
>あるテーブルまでくるとエラーが発生するんだよなぁ・・・
TABLENAME部を動的に作ってる?
単純なコードでも発生する問題?
まずは切り分け作業が重要なきがする。
203 :
197 :2008/12/26(金) 00:42:32 ID:???
>>202 レスありがとう。
TABLENAME部分を置換して
複数のテーブルに対して同じ内容の
SQLを発行している箇所です。
置換することなくテーブル名を埋めた状態で実行すると成功した・・・
うーん・・・
エラーになるテーブルの時のsql文の文字列はどうなってるの。 なんか空になってるとか
エラーになるテーブルが特定できているなら、 ひとまず、そのテーブルの場合だけ、置換処理を経由せずに ハードコーディングした処理にするのはどう? if (tbl =="HOGE") { ハードコーディングしたSQLを実行 } else { 従来の処理(置換処理あり) } これで通るなら、置換処理に何らかのミスがあるのでは。
206 :
NAME IS NULL :2008/12/30(火) 16:17:39 ID:OXA5FuFu
VMware ESXiで、RACを構成して動かしたってう強者いるかな?
それはただの変人のすること。 意味のないことをしないのが強者。
>>206 普通のVMWareだったらあるよ。
11g RAC組んで遊んだ。
今後はサーバの仮想化は当たり前になるはずだから
VMWareによるRAC構築も普通になると思われる。
実際OracleVMもRACサポートを売りにしてるわけだし。
>>208 そういえば、オラクルの「VMWareお手軽RAC構築」って
見たような気がする。興味あるけど難しそうだ。
VMWareとRAC両方の知識が要るからね。
デットロックに関して質問です。 UPDATE時にWHERE句を指定せずに複数件一括で更新した時に 別のトランザクションでWHERE句を指定して一件一件更新していった場合にデットロックが かかる可能性はありますか? 一括で更新した場合は更新対象のレコードは同時にロックを取得しているのでしょうか?
>デットロック >デットロック >デットロック >デットロック
>>210 それの何処がデットロックになってるんだよ?
デットロックというのは、お互いが相手のコミットが実行されなければ
それ以上先に進めない状態の事だぞ?
>>209 VMWareの知識は大していらないよ。
ちょっと知識がいるとしたら共有ディスクを作成する所ぐらい。
それもググレば直ぐに出てくるしね。
後は普通のO/Sインストール作業とそんなに変わらない。
>ちょっと知識がいるとしたら共有ディスクを作成する所ぐらい。 VMware ESXiでは、disk.locking = "false"が無視されてしまうから 同時に複数のノードを動かせないんだよね。 どうしたら解決できるか知ってる人いないかな? 検索しても見つけられなかった。
>>214 それだったら3台目のESXiを作って、そいつ上にiSCSIを構成すればいい。
つまり3台目は共有ディスク管理専門鯖という事ね。
読まずに適当なこというけど、iSCSIだとクラスタ対応FSがいるよね? その場合、iSCSI+CFSとNFSで比較するとどっちがいいんだろうね。
>>217 RACなんだから、別にCFSだけには限定されないぞ?
実際に
>>216 だって、iSCSI使って、ASMで構成している例だし?
勿論Linuxだったら、iSCSI+OCFSという選択肢もありだろう。
問題になっているのは、どうやって共有デバイスをRACをインストールする
ノードから見せるかだろ?
NFSは簡単だけど、キャッシュをオフにしないと駄目だから、遅くて使えないよ。 おすすめは、iSCSI+OCFS2またはiSCSI+ASMだね。
ああそうか、rawとかASMっていう手があったな。 普通なら扱いにくいrawも、iSCSIならtarget側でのバックアップが楽だからいいね。
221 :
NAME IS NULL :2009/01/03(土) 18:44:30 ID:Sh+0ao+6
エンタープライズでも RACの共有ディスクにiSCSIを使ってるとこある? おすすめのiSCSI製品あったら教えて
エンタープライズ系だと商用が普通だかららなぁ。 ウチも鯖はLinuxでもストレージはEMCだよ。
223 :
NAME IS NULL :2009/01/04(日) 18:00:45 ID:Ol//lS5T
>>210 デッドロックが発生する可能性はあります。
where句なしで複数件一括で更新した時の更新順序はテーブルのEXTENT ID,ROWIDの順
だったはず(記憶があいまい)なので、レコードロックもその順序で獲得しています。
よって、別のトランザクションで同時に複数行一括更新と異なる順番でレコードの更新を
行った場合には、デッドロックが発生する可能性があります。
例として、以下でセッション1を実行直後にセッション2を実行すると片方のセッションで
デッドロックが検出されます。
--準備
create table test_deadlock
(a number primary key, b char(100))
/
begin
for i in 1..10000 loop
insert into test_deadlock values(i,i);
end loop;
commit;
end;
/
--セッション1で以下を実行
begin
for c1 in
(select a,b from test_deadlock order by a desc)
loop
update test_deadlock set b = 'B' where a = c1.a;
end loop
commit;
end;
/
--セッション2で以下を実行
update test_deadlock set b = 'A';
↑最後のやつがどうしてもドクオにしか見えんw
これはデッドロックにはならずに、単にどっちかのトランザクションが failしておしまいじゃね?
'A'
228 :
210 :2009/01/05(月) 01:35:11 ID:???
>>223 ありがとうございます、
もうひとつ質問させてください。
この場合デットロックを回避する方法としては
セッション1とセッション2を両方とも一括更新にすれば回避できるのでしょうか?
それとも、更新順序のルールを決め1件1件更新していく方法しかないのでしょうか?
>>223 それ、本当にデッドロックか?
デットロックだと、ORA-00060が発生して、5分間は両方のトランザクションが止まるんだぞ?
そもそもデッドロックが「片方で」起きることはないよな。
oracleってデットロックを感知してエラーをすぐ返すんじゃなかったけ?
>>232 かかんねえよ
やってみたら一瞬で検知したぞ?
SEからEEへのデータの移行で質問があります。 移行元:OracleSE 10.2.0.3(ASM使用) インストール先:/opt SID:XXA port:20000 service_name:XXA disk group name:+XXAD 移行先:OracleEE 10.2.0.3(ASM使用) インストール先:/opt2 SID:XXB port:30000 service_name:XXB disk group name:+XXBD サーバはSolaris10-64bit。同じサーバでSE/EEを稼動させています。 EEで使うASMのinstanceはSEで使用しているASMにdisk group追加。 listener.oraはLISTENERしかないんでSEからコピペしてhostとportを変更。 とりあえずuser作成してテーブル作ってdropまで確認。 んで、これからが本題なんですが、SEからEEへデータベースの移行をしたいと思っています。 expdpをsystemで入ってFULL=Yで取って、impdpで戻すことで移行は可能でしょうか。 それともschemas指定で戻す、無理、もっと良い方法がある……等ありますでしょうか。
235 :
234 :2009/01/06(火) 17:56:50 ID:???
書き忘れ 【user:oracle】 で 【oracleSE】 【user:oracleEE】 で 【oracleEE】 をそれぞれインストールしています。
データパンプでも移行出来るだうろし、RMAN使えるのならRMAN Duplicationという手もある。 もしくはデータファイルをそのままコピって来てEE側でコントロールファイルの再作成という 方法もあるだろう。
237 :
223 :2009/01/07(水) 01:56:28 ID:FkfkhGDT
>>228 同一テーブルに一括更新を2つのセッションから同時に実行して、デッドロックが
発生したという話は聞いたことがないし、自分でテストをしても発生しなかったので
大丈夫だとは思いますが、100%の自信はありません。
238 :
234 :2009/01/07(水) 10:11:58 ID:???
>>236 ありがとうございます。
ただRMAN Duplicationは、
> 複製データベースは、ターゲット・データベースと同一にするか、またはターゲット・データベース内の表領域のサブセットのみで構成
とあるので無理かと思います。
別々のホストであれば同一にしたのですが。
あと情報小出しで申し訳ないです。
ASMに登録してるのは異なるサイズのRawDeviceでして残念ながらコピーは……ddで、ってことではないですよね。
FULL戻しした場合、どこかのテーブルにSE/EE区別やらSID等の情報を持ってたら面倒だなぁと思いまして悩んでいました。
>>238 RMAN Duplicationが使えないという意味が分からん。
ソースDBとターゲットDBが同一ホスト内に存在する場合でも使えるし、別々の
ホスト上にそれぞれが存在しても使える。
「複製データベースは、ターゲット・データベースと同一にするか、またはターゲット・
データベース内の表領域のサブセットのみで構成」という意味は、例えばソースDB上に
A、B、Cという表領域が存在する場合、ターゲットデータベース上にはA、B、Cと
コピーしても良いし、A、Cだけコピーしても良いという意味だぞ?
ASMの場合にはRMANが使えないとかなり不便だぞ。
それこそRMANさえあれば、ASM上のデータベースファイルをファイルシステム上に
変換かけたりとかもできるしな。
240 :
234 :2009/01/07(水) 14:44:37 ID:???
>>239 そうなんですか?
RMANはRecovery Managerなんだから移行に使えないと思うんですが……
>ソースDBとターゲットDBが同一ホスト内に存在する場合でも使えるし、別々のホスト上にそれぞれが存在しても使える。
これはDBIDが異なっても出来るんですか?
Duplicationの項をもう一度読み直してみますが、少なくともRMANで、
configure controlfile atobackup on;
backup database plus archivelog;
で作成したバックアップは異なるDBIDでは戻せません。
set dbid=
でDBIDを偽装してもrestoreは成功してもrecover時に失敗します。
【同一DBID】であれば出来ることは承知しています。
ただ今回は【異なるDBID】でRMANが使えるの?なんです。
再度マニュアルを確認します。
何度もすいません。
>>240 RMAN Duplicationは文字通りクローニングDBを作成するためのものだ。
ソースDBのバックアップをRMANで取得して、そのバックアップセットを
利用してターゲットDBを作成する。
作成時にはソースDBとnomount状態のターゲットDBに同時に接続して、
あとはRMANが指定した時間まで勝手にリカバリかけてくれる。
つまりソースDBをダウンさせる事なくクローニング環境を作成できる。
他にRMANを使うメリットはデータベースが配置されるデバイスに影響され
ない事。
RAW=>ファイルシステム、ASM=>ファイルシステム、ASM=>ASMにも
出来るし、RAC=>シングルインスタンスなんかへも自動で出来る。
>>242 ちなみに指定した時間までリカバリかける場合には、RMANで取得した
ソースDBのバックアップセットに、その指定時間以降までのアーカイブログが
含まれているいる必要があるからね。
つまり「set until time "to_date('Jan 06 2008 07:00:00','Mon DD YYYY HH24:MI:SS')";」
と指定した場合には、ソースで取ったバックアップセットにJan 06 2008 07:00:00以降
までのアーカブログが含まれている必要がある。
244 :
NAME IS NULL :2009/01/09(金) 20:59:42 ID:Q8QuRN46
oo4oって何と読むのでしょうか?
o∀o
略さず読んでる
o¥o
んー、2ちゃんねるって馬鹿にできないね。 有益な情報もたくさんある。
まあ犯罪がらみとかでしか報道されることは無いけどな
252 :
NAME IS NULL :2009/01/12(月) 12:42:09 ID:UYTJKBsr
SGA_TARGETとSGA_MAX_SIZEの違いってなんでしょうか?
>>252 オラクルは、そんなこと言ってたらキリないよ。
型の種類の RAW って何の略称でしょうか? LOBは Large OBject の略称であることは検索したら分かりましたが、 RAW については説明を見つけきれませんでした。 気になって、気になって……。
Record Access Write
>>256 RAWは略語ではなく、「生の」とか「未加工の」という意味の単語。
RAW型はバイナリデータをそのまま入れておくデータ型なので、そういう名称に
成っていると思われる。
258 :
256 :2009/01/12(月) 16:22:19 ID:???
>>257 レスありがとうございます。
RAW は Oracle 独自の型名ではなく、
デジカメで撮影した画像の未加工データの「RAWデータ」と
同じ意味合いなのですね。
すっきりしました。ありがとうございます。
ソースをくれとか言ってる割に、「と思われる」という回答は信用するのね。 確かにその回答は正しいんだけど、そういう姿勢では底が知れるな。
>>252 実用的な使い方かは別として。
SGA_MAX_SIZEを1GB、SGA_TARGETを512MBで運用開始。
適当に V$SGA_TARGET_ADVICE を見て、必要なら「動的に」
SGAを増やす。
という事が可能。
SGA_MAX_SIZE未設定(=SGA_TARGETと同値)だと、動的に
減らすことは可能でも増やすことができない。
>>260 補足するとしたら、SGA_MAX_SIZEを指定した場合、その値まで
メモリをリザーブしてしまう。
つまりO/S側から見たらSGA_MAX_SIZEで指定したメモリサイズ分
インスタンス起動時に取られているから、はっきり言って実用的
ではない。
>>261 特に異論はないんだけど、実際に動きを見ていると
IPCの確保は SGA_MAX_SIZE だけで、メモリの確保
は SGA_TARGET までに見えるんだよね。
OSの仕組みとか詳しくないんで、勝手な想像で、
予約だけして未確保の領域を作れると思ってる。
歴史を見るとわかり易い、SGA_MAX_SIZEはOracle9iで追加されたインスタンスの起動時に SGA内のデータベースバッファキャッシュなどの各コンポーネントをインスタンスを停止する事なく 変更するための動的SGAのために追加されたパラメータで、そのSGAの上限を指定。 動的SGAを更に進めて、SGA_TARGETはOracle10gで追加された、OracleがSGA内の各コンポーネントのサイズを自動でチューニング する自動SGAのために追加されたパラメータで、そのSGAの上限を指定。 まぁ、これらのパラメータ同士は関連があるんだが、自動SGAを使う(SGA_TARGETを使う)場合、自動で動的SGA使用 するので、SGA_TARGETをSGA_MAX_SIZEより大きい値に設定すると、それに応じて、SGA_TARGETが調整され増加されるので、 特に設定する必要はない。自動SGAを使わない(SGA_TARGETを0)が、9iで追加された動的SGAを使う場合は、 SGA_MAX_SIZEにその最大値を設定。更に、・・
1ヵ月分の差分バックアップからの戻しで死ねました.... 戻すのに5日かかったよ ママン
266 :
NAME IS NULL :2009/01/18(日) 17:20:13 ID:D5SMNAz7
現在Oracle9iでWebシステムをクライアントに提供しているんだけど、 レスポンスが遅い!とクレームが来ます。 SIerに問い合わせても10gにすれば解決する。と言うのですが、 Oracle9iを10gにバージョンアップするだけで、レスポンスは 向上するものなのでしょうか? どなたかご教授いただければ幸いです。
しない。 おそらく、そのWebシステムの作りが悪いから、DB変えようがNW変えようがHW変えようが大してパフォーマンスは変わらない。
どういう理屈でどの程度解決するのかSIに聞けよ そもそも何のレスポンスが悪いのか書いてない時点で答え貰う気がないように見える
269 :
NAME IS NULL :2009/01/18(日) 19:19:06 ID:D5SMNAz7
>>268 すみません。
Oracleを再起動すると、データ更新が数秒で行えますが、
数日たつと、データ更新に10分くらいかかります。
システムを開発したベンダーは、10gにすれば解決すると言うのです。
32bit Windows Server 2003で、SGAは2GBしか使用できません。
boot.iniファイルをいじくって、3GBまで増やすと効果ありますでしょうか?
commit してないトランザクションが残ってるとか?
>>269 とりあえずなんで解決すると言い切ってるのかベンダに聞いとけ。
メモリリークとかのbugなのかも知れんし。
根拠なかったらキレてやっていい。
272 :
sage :2009/01/18(日) 22:31:58 ID:s/0DH11a
根拠ないに一票。
コストベースやルールベースの話されちゃう気がするなぁ
もしくは
>>269 みたいな話がでてるってことはプロセスがメモリ使い切ったって説明でもされたのかもしれないが
それだったら10gで解決するっていう根拠が推測できない
しかも、メモリの使用状況を確認するのが先決だろう
SI側も「プロセス空間2G使い切りました。だから/3GBオプション使いましょう」
って回答出しても「3Gなら解決すんの?根拠は?」って返されるのがオチだから
うやむやにしてるんじゃないの
メモリの事なら事象が再現しないと本当の事はわからないだろうなぁ
っていうか再現しても運がよくないとわからんだろう
いいなぁ。そういうの。いいなぁ。SIer苛めるカッコウのネタじゃん。
オチとしては調査するのに必要な情報の取り方をまとめて事象再現待ちだろうな 3Gオプション入れるには根拠弱いだろ 3Gにした事で他アプリに影響でないか検証しなきゃならんし実質不可能
276 :
266,269 :2009/01/19(月) 20:45:52 ID:GgIO1862
9iを10gにすることのメリットってあるのでしょうか? 特にパフォーマンス面でありますでしょうか?
今ならせっかくだから11gに移行すれば良いのに。 RBO->CBOに変わってるし、色々便利なところも増えてるから、 特に理由がなければ移行した方が良いよ。
>>276 RAC関係の機能は強化されているが、OLTP系の個々のパフォーマンスに
関してはそんなに目を見張る強化とかは無いよ。
ただ10gも大分落ち着いてきているし、9iのライフサイクルを考えたら、今の
内に上げておくのもいいとは思う。
でもどうせなら
>>277 が言っている様に、今の内に11gに移行出来るのなら
そうしておいた方が良い。
12gからはRaw Deviceは非サポートだってよ。 OCRやVoting DiskもASM上かCFSに置く事になるみたい。
>>279 あれ?11gからOCRとか共有ファイルシステムにも作れるようになってなかったっけ?
281 :
280 :2009/01/23(金) 19:58:32 ID:???
>>279 ああ、すまん。ちゃんとCFSって書いてあった。
DDLトリガーでのDDL発行って出来ないのか こないだDDLトリガーでDBMS_SQLつかってCREATE TABLEしてみたけどエラー発生して出来なかったけど、、、 そもそもDDLトリガーってDDLのLoggingくらいにしか使わないもの?
なんかOTNに登録しようとしたら Email address contains invalid domain name. ってメッセージがどんなメールアドレスいれてもでるんだが・・・どういうことなの
tnsnames.oraに入っている「INST1_HTTP」ってなんですか?
>>282 ('A`)つ AUTONOMOUS_TRANSACTION
>>282 具体的にどういったトリガーを作成しようとしたんよ?
11g(SE/Win版)って何も考えずにそのままインストールすると 初期状態でどのくらいメモリ喰うの?
>>287 はじめから64bit版Windowsを考慮したほうがましなくらい
Windows版10gをWindows2003にデフォルトでインストールしました。 SQL*PLUSの実行結果として表示されたORAのエラーメッセージが文字化けします。 エラーメッセージを正しく表示させるにはどうすればよいでしょうか? また、Oracleに設定する文字コードは何を設定するのが正しいでしょうか?
set NLS_LANG=American_America.JA16SJISとか? 11gでは高速化したっつーけど、また重くなったよな。 速い!=軽い 重い<>遅い、では無いのか。
レスありがとうです
>>285 自立トランザクションで解決出来る問題でも無いような、、、、
まちがってたらごめん
>>286 具体的には開発段階なのでテーブル作成したら、作成したテーブルの履歴テーブルが出来て、さらに作成したテーブルへ変更履歴を書き出す処理をしたかったんだけども
つまりDDL実行時に
・履歴テーブルのCreate
・履歴テーブルへの書き込みトリガー作成
をしたかった
履歴テーブルのCreate時にはこのDDLトリガーは走ってほしくないのでテーブル名での非対象リストを作ってたんだけど
ちょっとDDLトリガーに夢をみてしまったので実際のところ
みんなDDLトリガーって何につかってるのかなと聞いてみたかったのです
>>290 そんなの当たり前。
Oracleが使えるリソースを目一杯使って高速化すれば、全体として重くなることもあるわな。
294 :
NAME IS NULL :2009/02/01(日) 09:01:34 ID:OWf5p2Ai
上司がノートPCに入っているOracle10gから 顧客用dmpファイルを、顧客のOracle9iにインポートしていました。 10gから9iへのデータ保障ってされてないですよね? みなさんなら、このようなことされますか?
それが危険な操作であったらOracleがエラーか警告を出すはずである。 その上司が警告を無視していない限り、何かあったら悪いのはOracle。 その程度に考えてないとこの業界やってられないぞっと。
>>290 重くなってても速くなっていれば、まだいい。
Vistaなんか・・・。
>>294 10gでExport
9iでImport
するにしてもOracleClientのVerが同じなら(EXP,IMPのVer)
特に問題なく業務で使ってた
データ保障はわからないですが
やっぱりASMを使ってるとこ多いのかな? 個人的には、OCFSが簡単で好きなんだけど。
9.2.0.6でエクスポートしたdmpを9.2.0.8にインポート しようとしたら出来なくて泣いた記憶ならある…
大事なデータを扱うときは最低限OiSCくらい見てからにしようぜ!
くだ質がないのでこちらで質問させて下さい。 クライアントについての質問です。 今まではローカルのWindowsマシンのOracle10gに対してcseで接続していました。 今度はリモートのSolaris上Oracle10gに接続することになりました。 Oracleはcseでリモートに繋ぐ設定がないので途方にくれています。 発行したSELECTの結果をグラフィカルに表示してくれる程度でいいのですが、 無料のクライアントはないでしょうか。
無料のは Oracle が配布している Instant Client があるよ。
>>301 ローカルにOracle入ってるなら tnsnames.oraで 接続情報書けば
CSEでも繋げるよ
ただ、CSEって8iくらいまでしか対応して無くて
集計関数使ったときにうまく動いてくれなかった覚えが、、、
Oracle謹製のSQL Developerはどうよ? ちょっと重いけど機能は折り紙付きですよ。 他にはJava製のAqua DataStudioとか?
>>303 標準偏差が駄目だった希ガス
あとはだいたい動く
PLSQL Developerが無いと何も出来ない、何もやる気がおきない体になった。
307 :
NAME IS NULL :2009/02/06(金) 04:03:43 ID:GlPU0aHo
OS: サーバがSoralis、接続するクライアントはWindows XP バージョン: Oracle 10g Oracle 10gでユーザが所有するテーブルの一覧を取得する場合、 どちらが望ましいのでしょうか? @ SELECT * FROM USER_TABLES; A SELECT * FROM TAB; Aのデメリットって ・ TABLEだけでなくSYNONYMもヒットする ・ 得られる情報が@より少ない が挙げられると思うので、ふだんは@を使ってるんですが、 もしかしてUSER_TABLESとTABって全然用途が別なのでしょうか?
308 :
301 :2009/02/07(土) 02:39:12 ID:???
SQL Developerがよかったので使っていくことにします。 アドバイスありがとうございました
>>307 TAB は古いバージョンとの互換性のために残されている。
今は USER_TABLES (シノニム:TABS) で OK。
Oracleって速いけどメンテナンスすごくしにくいな。 MySQLとはえらい違いだ
その分高価だからな
Oracleは専用のDBAがつくのが当然だからな PGや開発系SEが片手間にさわるMySQLとは プロジェクトの中の位置づけが違うぜ
313 :
NAME IS NULL :2009/02/08(日) 10:04:53 ID:6340660i
専属DBAが必要なんでコスト的に割が合わなくなって、最近はPostgreSQLやMySQLに シェアを食われている汎用機型巨大データベースのスレはここですか?
おっと、AC○Sの悪口はそこまでだ!!
>>310 面倒だというならわかるが、しにくいってのは?
無停止でメンテできる範囲はOracleが一番だと思うけど。
かなり初心者なんですが Oracle11gのDBに、クライアントからエクセルを使い ODBC経由で接続を考えています。 ただ、クライアント側のORACLEが9iとか古いverで ODBCドライバー自体のversionが古く、接続できるか確証がもてません。 サーバ側の11g環境はまだまだできそうになく、検証できない状態なんですが そもそもODBCドライバって無料? あとどのversionがどのDBと繋げられる対応表みたいなのありますかね? 検索しても全然でてこず。 ORACLEのHPのマニュアルは糞見たいに見づらく、 何考えてあのサイト作ってるのかわからん状態なので 誰かエロイ人教えてください
無料。 昔は、接続の対応表とか、OSバージョンの対応表とかがあったんだけど、 リニューアルされてから見づらくなったのは確かだねw あと、Oracleの場合は、基本的にODBCより、一緒にDLできるOLEDBかoo4oを使う方が何かと便利だよ。
oo4oとか今更ありえないですからっ!
>>315 メンテ中の計画停止すら許されないDBならOracleしか選択肢ないけどね。
ちょっとくらい止めてもいいDBだったらOracleは選びたくない
データ件数が億とかに届くシステムだとやっぱりオラクルだって先輩がゆってた!
321 :
NAME IS NULL :2009/02/08(日) 22:33:23 ID:PTYbMZIT
OracleはおろかDB初心者です。 今度、会社のシステム構築する中でDB部分をOracle 10gでRAC化する(外注)ことになりました。 ほとんど関わらないのですが最低限(投票ディスクやOCRの役割等)知っておきたので お勧めのHPや本あれば教えてください。 よろしくお願いします。
教えてくだされ。 11gの管理者リファレンスを見るとSolaris の場合 /etc/init.d/dboraからのりんくを # ln -s /etc/init.d/dbora /etc/rc0.d/K01dbora # ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora とする事になっていますがこれだと電源切断とマルチユーザーモード起動以外の時しかスクリプトは実行されないのでしょうか。 例えば #shutdown -y -i5 -g0 とした場合はどうなっちゃいますか?そのままブチ切れ? それともrunレベル0を通って5や6に至るという事でしょうか。 linuxも0,3,5しかリンクを張るようになっていないのでリブート時はぶちきれなんでしょうか。
hoge(a,b,c) というテーブルと piyo(id,d) というテーブルがあって hoge.b=piyo.id のときのpiyo.d と hoge.c=piyo.idのときのpiyo.d を同時に求めたい SELECT hoge.a, hoge.b, hoge.c, P.d as Pd, S.d as Sd FROM hoge LEFT JOIN piyo as P ON hoge.b = piyo.id LEFT JOIN piyo as S ON hoge.c = piyo.id ; MySQLではこんな感じで書いてたんだけど Oracleだとエイリアスが使えないのでこの書き方が出来ない こんなとき、Oracleだとどう書けばいいのだろう
325 :
324 :2009/02/09(月) 15:22:04 ID:???
自決しました
無茶しやがって
先生! ORACLE MASTER Silver Database 10gを持ってるんですが、 今度、仕事で9iを使うことになりそうです。 今って、実際には9iのほうが稼働してるんですか? それとも10g? 11gってことは無いですよね?
329 :
321 :2009/02/09(月) 22:16:25 ID:59eeKjde
>>323 ありがとうございます。
oracleマンニュアルってwebで公開してるんですね。
とりあえず一読してみます。
>>327 サポート期限の問題やらもあり、9iは大分減ってきた。
しばらく主流は10gだろうな。
が、これまたサポート期限の問題で、これからの新規構築は11gが増えるだろうな。
現に俺も11g新規構築案件に携わってるし。
>>330 サポートは延長できるんじゃなかったか?
少なくとも5年はサポートして貰わないと困るから 構築+運用で2015年まではサポートが必要
>>331 サポート期限切れから2年までなら料金割増で受けられる。
料金割増が微妙に引っ掛かる。。
DellとかHPのハードウェアの保守期限が5年くらいじゃなかったっけ? 結局5年サイクルで回していくのが一番効率良いのかもな。 って、毎回更新とか保守契約料とか考えるとDB・システム構築って金かかるよなー。
Windows2003ServerでORACLE10g使ってます。 パッチは当ててないのです(現状なかなか当てずらい状況で) で ORACLE.EXEが使用している仮想メモリアドレス空間(Virtual Bytes) が 2.97GB ほどに達し、DBのレスポンスが悪いと言うか応答がなくなってしまいます。 んで、調べてみると [原因] 通常の 32bit Windowsアプリケーションは、ユーザープロセスが使用できる 仮想メモリアドレス空間として 2GByte までしか使用することができません。 oracle.exe の使用している仮想メモリアドレス空間が 2G近くに達し (4GT の場合3G)、もはやサーバー・プロセス(スレッド)が起動できない状況 になっているときには、以下のような状況になります。 1. Listener自体は正常に稼動しているため、ListenerのLogには、以下のよう なErrorが記録されます。 ------------------- ★TNS-12518: TNS: リスナーはクライアント接続をハンドオフできません。 TNS-12560: TNS: プロトコル・アダプタ・エラー TNS-00530: プロトコル・アダプタ・エラーです。 32-bit Windows Error: 233: Unknown error ------------------- 2. Oracleには接続まで至っていないため、ALERT.LOGにはエラーは記録されて いない場合もありますが、次のようなエラーが発生していることもありま す。 ★ -ORA-4030 ★ -ORA-27302: 障害が発生しました。場所: skgpspawn また、接続済みのセッションにおいても、oracle.exe の使用している仮想 メモリアドレス空間が既に2G近くに達しており(4GTの場合3G)、それ以上仮想 メモリアドレス空間を確保ず処理が続行できない場合にはORA-4030 が発生 します。 何か良い対処法はないものでしょうか? 定期的リブートは簡便です><。
>>335 とりあえず思いつく所。
DB側:
SGA/PGA の見直し。
SGA_TARGETを使用しているなら V$SGA_TARGET_ADVICE 参照。
PGA_AGGREGATE_TARGET を(略) V$PGA_TARGET_ADVICE。
無駄に確保してればラッキー。減らせ。
クライアント側:
C/S なら共有サーバ接続への変更も考慮。
→Winは1専用サーバで約1MB消費。200接続で200MBって事。
select count(*) from v$session あたりで確認。
WebAP ならコネクションプール使ってるか等。
無駄にプールが多いならプール数を減らすとか。
要するに、メモリ限界なので、どこが減らせるか確認して、減らせるとこ
ろを減らすしかない。
一時テーブルを使いたいのですが CREATE GLOBAL TEMPORARY TABLE だと セッションが切れてもテーブルが残ってしまいます。 セッションが切れたらテーブルにも消えてほしいのですが どうしたらよいでしょうか。
>>335 さっさと64bitに移行すれば?
ハードウェアも安くなったのに、こねくり回す時間のほうが高くつく。
>>337 トリガーでは無理っぽいから、定期的にセッションが存在するかどうかを
モニタリングして、セッションが無くなったらdropするプロシージャでも
呼び出すとかじゃね?
インデックスのクラスタリングって微妙だ、、、どんな時につかうのだ レコード数が多い時か?
こんにちは。 APEX日本語版の最新版(3.1.2?)を試したいのですが、 Oracle11gの評価版にはAPEXの最新版が含まれておりますでしょうか? それとも3.1.1⇒3.1.2のアップグレードがひつようでしょうか? よろしくお願いいたします。
ORACLE 10gR2→ORACLE 11gへのデータ移行で、 expdp/impdpでの移行を実施中なのですが、 expdp時にNFSマウントしたディレクトリへダンプファイルを吐いておいて、 impdp時も同じディレクトリをマウントして読み取り、ということを考えていたら、 「ORA-27054: ファイルが作成される、または常に存在するNFSファイルシステムは、正しいオプションでマウントされません」 とのエラーが発生してしまいました。 NFSからダンプファイルを読み取ることはできないのでしょうか? できないのであれば移行先のローカルへファイルをコピーしてからインポートしようと思います。
PDOを使ってるんですが フェッチせずにカーソルだけ進めたいときは どうしたらいいんでしょうか
>>342 出来るよ。
ただし10g以降(厳密はもっと前らしいが)、OracleはNFS上にDB関連のファイルを
置く事に関して、かなりチェックを厳しくしている。
O/S書いていないからわからんけど、以下のオプションでNFSをマウントしないと
警告が出るようになる。
Soralis rw,bg,hard,nointr,rsize=32768, wsize=32768,proto=tcp,noac, forcedirectio, vers=3,suid
AIX cio,rw,bg,hard,nointr,rsize=32768, wsize=32768,proto=tcp,noac, vers=3,timeo=600
HP-UX rw,bg,vers=3,proto=tcp,noac, forcedirectio,hard,nointr,timeo=600, rsize=32768,wsize=32768,suid
Linux x86 rw,bg,hard,nointr,rsize=32768, wsize=32768,tcp,actimeo=0, vers=3,timeo=600
上記のオプションはRAC用だった。
シングルインスタンスは以下だ。
Soralis rw,bg,hard,nointr,rsize=32768, wsize=32768,proto=tcp,noac, forcedirectio, vers=3,suid
AIX cio,rw,bg,hard,nointr,rsize=32768, wsize=32768,proto=tcp,noac, vers=3,timeo=600
HP-UX rw,bg,vers=3,proto=tcp,noac, forcedirectio,hard,nointr,timeo=600, rsize=32768,wsize=32768,suid
Linux x86 rw,bg,hard,nointr,rsize=32768, wsize=32768,tcp,actimeo=0, vers=3,timeo=600
O/S書いてないから、幾つも書くのマンド゙クセ('A`)
>>2 ぐらい読んでから質問してくれ。
>>341 どうやら3.1.2はパッチセットみたいだから、充てないとならないんじゃね?
348 :
NAME IS NULL :2009/02/13(金) 00:26:08 ID:2HjPhOBi
COBOLでORACLEのDBに接続したいのですがExpressEditionにPro*COBOLは入っていますか?
>>345-346 出来ました。どうもありがとうございます。
普段気を付けてても、慌ててるとまともに質問できなくなるもので…反省します。
ちなみに移行先のOSはSolaris 10で、DBはOracle11gのRACでした。
ごめんなさい。くだらない質問ですが、聞かせて下さい。 新学期から学校の授業でOracleがあるので、下記の環境で予習をしておこうと思ったのですが、 1箇所 わからない所が出てきました。 [環境] DB Oracle 10g トライアル版 + HTML DB OS Windows XP Pro SP3 CPU Core2Duo 1.66GHz メモリ 2GB HTML DB をインストールした時に、OracleOraDb10g_homeASControl というサービスが登録されて Windowsの起動時に 自動的にサービスが開始するようになっています。 しかし、開始時にエラーが出ているみたいで起動しないのです。 コマンドプロンプトで強引にサービスを開始しようとしても下記のエラーが出てどうして良いかわかりません。 [エラー内容] サービス固有のエラーが発生しました: 2 NET HELPMSG 3547 と入力すると、より詳しい説明が得られます。 どうすれば、OracleOraDb10g_homeASControl を開始できるのでしょうか? HTML DB を使うには、OracleOraDb10g_homeASControl が絶対必要なのでしょうか?
HTML DBってAPEXの事だべ? APEXはiASが確かに動いていないとダメだけど、多分起動に失敗している サービスはiAS Consoleだけかも知れない。 この場合は、Sun JVMのバグにヒットした可能性があり。 その場合は以下の手順を踏む必要があるが・・・。 1) %ORACLE_HOME%\bin\emwd.plをエディタで開く 2) "-Xmx"という文字列をサーチする。おそらく二つ見つかるはず。 その"-Xmx"という文字列の直前に"-XX:+ForceTimeHighResolution"という文字列を付け足す 3) サービスを起動 まあ、iAS Consoleは起動していなくても、APEXは使えると思うけどね。
Oracle11g/LinuxでSQLローダのダイレクトパス使って9000万件のデータを入れました。 入れてからPKとインデックスをつけようとすると 「スナップショットが古すぎます」 (´・ω・`) データ量を減らして作業をしようと思ってSQLローダのTRUNCATEを使ってみる 「リソースビジー」 (´・ω・`) 仕方ないからDROP TABLEして再CREATEしよう 「リソースビジー」 (´・ω・`) 最後の手段全件DELETE 時間かかりすぎ(´・ω・`) レコード数を0にするにはどう対処すればよいのでしょうか? 対象テーブルは自分以外は使用していません。
355 :
352 :2009/02/17(火) 10:14:44 ID:???
会社から失礼します。
>>353 システム開発の試験環境なのであまり環境設定を変える訳にもいかず…申し訳ありません
>>354 ログインしてコミットしても何も起きず…
SQLローダのトランザクションをコミットしないといけないのでしょうか?
356 :
355 :2009/02/17(火) 12:22:27 ID:???
午前中に現状を調査してみました。 select countの結果は9000万件あるのでコミットは行われている パラメータビューは権限不足で見られず 別のトランザクションが残留している? こんな感じでした…
>>355 >SQLローダのトランザクションをコミットしないといけないのでしょうか?
意味わからんけど…
ダイレクトパスだとトランザクションの終了はされないからコミットしろ
>>355 >ログインしてコミットしても何も起きず…
まさか別セッションからcommitだけ叩いたとかw
359 :
357 :2009/02/19(木) 06:57:09 ID:???
>>358 それがわけわからんかったw
つーか、SQL*Loaderが終わってなかったんじゃーの?
どういう指定したかわからないけど、ロード後にインデックス作りにいくと思う。
で、表共有ロックされてるからTRUNCATEできず、インデックスは使用不可になっていたのでは?
と思うけど、情報が少なすぎてよくわからん。
360 :
NAME IS NULL :2009/02/21(土) 15:19:58 ID:Tn/yJXyX
今度、Oracle10を再インストールすることになったんですが 11にするかもしれないからとにかくデータだけバックアップしろと 言われました。 単純にデータだけバックアップしたいときはどうしたらいいんですかね。 インデックスやら計画とかはどうでもいいそうです。 前任者が生きていればいろいろ聞けたんですが この前夢枕に立った時に聞いとけば良かったな・・・
>>360 エクスポート・インポートの単語が出ない時点で
サポート呼ぶか外注にやってもらうのが吉かと。
>>360 前任者のところにいって訊いてくればいい。
SQLDeveloper使ってINSERT文形式でexportしておけば? 最悪、postgresとかmysqlに乗り換えることになっても何とかなりそうだし。 っていうか前任者何で亡くなったの?もしかして責任取らされて。。。
361だけど テーブル数とか,そのデータ量にもよるでしょ。 なんだこの素人質問。
↑ 素人はお前じゃボケ
いいや俺だね
>>360 ハードウェア障害が発生したとき等の為に日常業務として、
Oracleデータベースのバックアップは取得していると思いますが、
どういった方法で取得しているのでしょうか?
>>362 なかなか酷なことを言いますね。
行ったり来たり出来ると便利でいいですよね。
>>360 Windowsの前提で話すね。
EXP_FULL.BATというファイルをメモ帳で作る。中身は、こんな感じ。
SET ORACLE_SID=インスタンス名
SET NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
EXP 管理者ユーザ/パスワード FULL=Y FILE=EXP_FULL.DMP LOG=EXP_FULL.LOG STATISTICS=NONE
PAUSE
1行目のインスタンス名は、エクスプローラで
oracleデータベースのインストール先を観察すれば分かる。
XXXXの部分。他にTNSNAMES.oraの中身を見ても分かるけど。
D:\oracle\oradata\XXXX\admin
2行目は、多分大丈夫と思うからやってみてダメだったらまた質問して。
3行目の管理者ユーザ/パスワードは、SYSTEM/ORACLE、SYSTEM/MANAGER、
あたりをよく使うけどね。EXP SYSTEM/ORACLE FULL=Y つづくって感じで。
駄目だったら、サーバの中身をいろいろ探してみて、SYSTEMの上位であるSYSか、
それ以外の管理者のパスワードが見つかればラッキーかな。
管理者のパスワードが分からないと、途端に大変な(不可能かもしれない)作業になるんだよね。
作ったBATファイルを実行して、EXP_FULL.LOGの最後が、
エクスポートは警告なしで終了しました
だったら、オーケー。BATファイル、LOGファイル、DMPファイルを
一式で、欲しい人に渡せば、後は何とか(インポート)してくれるよ。
ゴメン。インスタンス名の調べ方、間違った。 D:\oracle\oradata\XXXX\bdump D:\oracle\oradata\XXXX\cdump D:\oracle\oradata\XXXX\create D:\oracle\oradata\XXXX\pfile D:\oracle\oradata\XXXX\udump こんな感じでした。 コントロールパネルの「サービス」を見て、 OracleServiceXXXX でも分かる。
親切
Windows版のRACって、例え買ってもOSからはOCFSを自由に読み書きできないのでしょうか? どんな感じか評価版みたいなのあるといいのですが、11gのトライアル版では駄目なようですし・・・
>>371 OSからOCFSは見えるので、普通にアクセスは可能。
でもDBに関係しないファイルの操作はサポートされない。
Windows版だとClusterwareに含まれてるはず。
クラスタ設定時にOCR、投票DiskをOCFSで設定すれ
ば自動的に構成されるはず。
# 11gのWinRACは未経験なので違うかも
質問させて頂きたく。 Aデータファイル:auto extend(on)自動拡張で拡張中 Bデータファイル:auto extend(off)作りたてで空きいっぱい A,Bが同じ表領域で新しいextendが作られる場合は どちらに作られるのでしょうか? 素人な質問で恐縮ですが、 何卒。。。
>>373 extendとextentを混同してるような・・・大丈夫?
extend→データファイルの拡張
extent→データファイル内の表や索引を構成するセグメントの拡張
答え:
extendが作られる場合
extend onであるAに作られる。
Bはextendしようがない。
extentが作られる場合
空きいっぱいであるBに作られる可能性が高い。
>>374 動詞と名詞を混同してるような・・・大丈夫?
言いたいことはわかるが、extendは作られるのではなく、起きる。
PGSQLしか触ったこと無いけど10gR2面倒見ろ言われてポカーンしてます。 構築・管理してた奴が突然辞めやがって・・・orz すみません、質問させてください。 ■質問1 undostatっていうのとdba_hist_undostatっていうのを見比べてると、 BEGINTIME/ENDTIMEがundostatは2009.02.23、dba_hist_undostatは2030.02.23と なってるんですが、これって何故ですか? サーバ(Linux)のdateとはundostatが一致しています。 ■質問2 ROLLSTAT見て表示されたHWMSIZEを合計すると約13.5GBになりますが、 undotbs.dbfの物理ファイルは約27GBになります。 undostatのexpiredblksの値*1ブロックのバイト数も約13.5GBです。 HWMSIZEと物理ファイルサイズって関連性はないんですか? ■質問3 undotbs.dbfって奴はほぼ毎日65MBほど肥えていますが、ブロック数を見ると 週に1回程度65MB相当分が増えてる程度です。 undotbs.dbfが肥え太る原因って、主にどういった場合なんでしょうか? ググりながら勉強してるんですが、どうにも参考資料が見つからず。 質問自体が意味不明でしたら、ツッコミいただけると幸いです。
俺が答えられるのは、質問3だけです。 undotbs.dbfが大きくなる原因・・・ UPDATE/INSERT/DELETE処理でしょうね。 例えば夜間に大きな更新処理をしていませんか? 工夫するとしたら・・・ ・DELETE文を使っている場合、 TRUNCATE TABLE文に置き換えられないか検討する。 ・適切な件数ごとに処理し、適宜commitする。 とりあえず、どの時間帯に、どういう処理が 実行されているかを、リストアップした方がいいと 思います。Linuxのcrontab?atコマンド?あたりで 定期的な処理が何か動いてませんか。
373で質問したものです。 374、375さん、レスありがとうございます。 正直、恥ずかしい限りです。動詞と名詞を混同してる件、、ごもっともです。 とりあえず、extentが作られる場合はAデータファイルでextendは起きず Bデータファイルに作られる可能性が高いと。。。 たしかに、上記現象が起きていまして安心しているのですが Aデータファイルでextendが発生し続けるとディスクFULLに 陥るため、少し心配しておりました。 運用しているOracleでauto extend(on)10GBまで拡張できるデータファイルが 5つあり、それぞれ2.5GBまで拡張しています。 その後、運用が変わりauto extend(off)のデータファイルを追加していますが auto extend(on)の5つのデータファイルはextendを止め? 追加したauto extend(off)のデータファイルにextentが作られているみたいです。 最初からドライブの空きを考慮してデータファイルの追加を行えば、、、 最後に再び、、374、375さん ありがとうございました☆
11gで4000byte以上の全文検索をしたいんですが、 lobは全文検索対象にできないの? 4000byte以上のテキストが入ってくる場合の 全文検索ってどうやってるの?>11g
382 :
376 :2009/02/26(木) 12:46:51 ID:???
>>377 ありがとうございます。
毎朝にupdateしてるものがありました。
この辺から疑ってみます。
>>378 ありがとうございます。
URLもありがとうございます。参考にします。
Q1.AccessでODBC接続、直接参照してます(不精ですみません)
Q2.やっぱりそうなんですよね。
Q3.トランザクションは377さんの件と合わせて確認してみます。
UNDO_RETENTIONは900ですが、TUNE_UNDORETENTIONに30000になるケースも。
まずは基礎を勉強して、ある程度理解してから調査します。
根本的な部分を誤認しているようにも思うので。
ありがとうございました。
9iでエクスポートしたDMPファイルを10gでインポートしようとしたら 「AQ$_JMS_USERPROPARRAY」 が無いって怒られたんだけどどうすればいいの? どっかに定義するSQLがあるんだろうと思ってgrepしてみたけど見当たらないよor2
385 :
381 :2009/02/27(金) 00:20:44 ID:???
>>384 Oracle Textです。
今、テーブル作ってやってみたらできました。
clobでできました!
ありがとうございます!
386 :
NAME IS NULL :2009/02/27(金) 00:39:09 ID:6rJ3Y1Cl
初歩的な質問でスマン SQL*LoaderのINFILEに指定するファイル名って ワイルドカードの*って使える?
387 :
NAME IS NULL :2009/02/27(金) 00:53:17 ID:5E5n6s7G
Exadataってどうなのよ?
ttp://otndnld.oracle.co.jp/document/products/cs10g/1012/doc_cd/content.1012/B25665-02/text.htm Oracle Textには、索引のメンテナンス用に2つのPL/SQLパッケージが用意されています。
通常のデータベース索引とは異なり、Oracle Text索引は、情報が挿入または
更新されるたびに動的に更新されません。
Oracle Textのストアド・プロシージャであるctx_ddl.sync_indexを使用して、
索引を定期的にリフレッシュ(同期化)する必要があります。
ctx_ddl.sync_indexプロシージャでは、索引全体が再構築されるのではなく、
最後の同期化以降に変更された記録の追加および削除が行われます。
変更は増分的であるため、このプロシージャを頻繁に実行するほど、高速化されます。
ただし、時間が経過すると索引が断片化される可能性があるため、
索引を最適化するためのプロシージャ(ctx_ddl.optimize_index)が用意されています。
Oracle Content Servicesの構成中、IFS_TEXT索引を同期化および
最適化するプロシージャは、Oracle DatabaseのDBMS_JOBSパッケージを
使用して、バックグラウンドで定期的に実行されるように自動的に設定されます。
DBMS_JOBSプロシージャは、UNIXシステムのcron jobsと同様のプロシージャで、
Oracle Databaseが実行されているすべてのプラットフォームに移植できます。
構成中にOracle Content Servicesスキーマが作成されると、同期化ジョブと
最適化ジョブの2つのDBMS_JOBSが設定されます。
通常、Oracle Content Servicesスキーマの名前はCONTENTです。
注意:
同期化ジョブと最適化ジョブは、新規スキーマの作成時にのみ
自動的に作成されます。既存のスキーマからアップグレードしている場合、
これらのジョブは自動的に作成されません。
>>387 システムの価格は65万ドル。
ソフトウェアのライセンス価格は168万ドル。
1ドル100円として6500万円、1億6800万円。
データ容量としては、12TB*n台。RAC前提。
経験を語る事が出来る奴がこのスレにいると思う?
俺は思わない。
>>386 1万行ずつ4個に分かれたファイルを全て指定する、
みたいな事は出来たと思うけど、*は使えなかったように思う。
制御ファイル内のINFILE指定以外にも
コマンドライン上のDATA指定の方法もあるはずだけど、
そっちはどうだったかな。
会社で暇が出来たら試せるかもしれない。期待せぬよう。
>>386 OS(シェル)に展開させれば済むのでは?
392 :
376 :2009/02/27(金) 10:36:19 ID:???
>>384 その後、SQLをチェックしてみるとアホな副問合せが見つかりました。
首吊って死ねってくらいのアホさ・・・
作った奴を吊るし上げて、明日(今日)までに直せ!と言ったら徹夜してます。
それ以外にも前任のアホ設計がボロボロと。
それに気付いて、バレる(障害になる)前に辞めたんじゃないかと疑ってます。
3月9日から処理ピークだぁ。
それまでに直せるかなぁorz
本当にありがとうございました。
>384 幸せになれた気がしたけどまだ早かったようだ "SYS"."AQ$_JMS_USERPROPARRAY"の実行権限を与えてインポートしても 「オブジェクト型"SYS"."AQ$_JMS_USERPROPARRAY"が存在しない、または識別子が違っています」 って言われてしまう。 (AQ_ADMINISTRATOR_ROLEを与えても同じ) オブジェクト自体は存在してて権限も与えてるのになぜ・・・○rz
394 :
386 :2009/02/27(金) 20:25:56 ID:???
>>390 ,391
ありがとー
シェルに搭載することにしました
>>389 日本だと Oracle Exadata Summit に参加した人か、中の人じゃ
ないと会話できないんじゃないかな。
経験者?国内で数人程度はいるのか?
>>393 幸せになれませんでしたか…。
Export/Import のコマンドライン詳細及び、エラー詳細は出せますか?
(エラーメッセージじゃなくエラーコードと前後関係も重要)
>>392 アフォは、アフォなりに
「誰も技術を教えてくれない。試行錯誤ばかりだ。」と思ってます。
可能であれば、責めるんじゃなくて、作業を分担してあげてください。
397 :
NAME IS NULL :2009/02/28(土) 03:20:45 ID:l8Y/h12f
3年生専門学校に在学中で、学校の指示でオラクルマスター11gのブロンズの資格を目指すように言われて調べてたんだけど、 受験するのに基礎TとDBAのそれぞれの試験ごとに受験料が15000円+消費税がかかる認識で合ってますか?
資格を確実に取るためには、
iStudyという学習ソフトが即効性あると思いますが、
これがまた、結構な値段します。
ttp://www.istudy.ne.jp/ iStudy for Oracle Master Bronze DBA 11g DL版
標準価格: \12,600
iStudy for Oracle Master Bronze 11g SQL基礎 I DL版
標準価格: \12,600
10gのBronze資格を去年取ったけど11gには無効なんだよなぁ。 バージョン単位での資格になってるから最新バージョンが出るとその度に同じBronzeでも取り直しは面倒すぎる。 せめてバカ高い受験料を少しでも安くしたり何か優遇してもらえれば有り難い所なんだけどなぁ。 特にplatinum所有者は受験料が10万以上するから負担が半端ないだろうから。 最近は重要視する会社も増えてるから受けさせられる事が多いが、 現場行くと資格あってもさほど役に立たないし単にオラクル社がバカ儲けするだけの資格にしか思えない。
>現場行くと資格あってもさほど役に立たないし単にオラクル社がバカ儲けするだけの資格にしか思えない。 何を今更
俺自身社内教育でsilverまで取らされたが確かに役に立たん 基本情報処理の国家認定の資格と同様に 業務上ではよく使用する簡単なクエリが出来て分からなくなったらリファレンス本見ながら対応すれば事が足りる 利用価値といえば客先業務で仕事貰う時の受け入れ面接時には多少アピール部分になるぐらい データベースに少し詳しい人なんだなと
資格そのものが役に立つか立たないかは状況によると思うが、
新SilverならDBA Iをとってるわけでしょ?あの内容をマスター
しているのであれば、チューニングや設計を行う素養はあると
みなせると思うけどなぁ。
単に「SQL書けます」って人とはそのへん違うと思うんだが。
>>402 が旧Silverだったらスマン。確かにあれは意味がない。
>>400 とりあえずSilverまで取って、バージョンアップしていけばいいんじゃないですか?
あなたが有能なら会社が研修受けさせてくれるかもしれないし…
まあ、Platinumは10万ではともて取れないですけどね。
Silverで必要最低レベルぐらいだと思うけど、Platinum持っている人は相当できる人だと思う。
Platinumは実力があって、DB構築から管理まで、あらゆる事象に対して、素早く必要なマニュアルから情報を参照し
正しく適用できる能力が必要だと思う。
405 :
NAME IS NULL :2009/03/01(日) 18:22:50 ID:TX+JAs9q
RMANの質問なのですが、 現在、10gをアーカイブログモードで運用しています。 RMANで、system表領域をバックアップしようとしたところ エラーになりました。 sysaux表領域や別の表領域はバックアップできるのです。 system表領域をRMANでフルバックアップは、できないのでしょうか? どなたかご教授いただければ幸いです。
406 :
NAME IS NULL :2009/03/02(月) 01:35:54 ID:eCie/yRb
失礼します。 顧客DBをWebアプリケーションで作成更新するようにしたいと思っています。 (企業名,代表社名,所在,電話,メール,受注日,契約商品,個数,残ポイント,発送日) × 1,000,000件 のイメージのDBを作成したいのですが、 この程度の規模のDBの場合、 SQLサーバー,Oracle,MySQL,その他でどの種類が比較的多く利用されているでしょうか。 1000店ほどの店舗が日中にアクセスする予定です。 よろしくお願いします。
MySQLかPostgres XEて用途限定なしだっけ?だったらXEでもいいかも。
100万件程度ならMySQLだろうね リレーショナル(笑) と言われることも多いけど 今の時代DBにリレーショナルさせない方が主流になりつつあるしね
>>406 質問したり相談する相手がこのスレだけならば
素直にOracle買ってサポート受けるのが吉かとアドバイス。
>>405 当然出来る。
というか出来ないとフルバックアップの意味がない。
バックアップ先は何よ?
ディスク、それともテープ?
後はO/Sは何?
>>2 ぐらい読んでから質問してくれ。
411 :
NAME IS NULL :2009/03/02(月) 19:49:17 ID:3VFbPniH
Application Server 10g(10.1.3)って Oracle Databaseのバージョンいくつに対応するんでしょうか?
412 :
NAME IS NULL :2009/03/03(火) 09:16:05 ID:9sMragPd
CRS環境のとき、ファイアウォールに穴あけなきゃいけないポートって どこかに一覧あったっけ?
413 :
NAME IS NULL :2009/03/03(火) 20:35:38 ID:o+hGzJeW
11gってもうx.6まで出てるのかw
416 :
412 :2009/03/04(水) 09:33:54 ID:???
>>414 マジかwww
適当だなぁ・・・あとから参照も出来ないってどういうことなんだろ。
417 :
NAME IS NULL :2009/03/04(水) 10:31:34 ID:6d/7Bbw/
CRSインストール後、仮想NICが出来ると聞いたんだけど ifconfig見ても無いっぽい。 これってDBもインストールしたあとじゃないと出てこないのかな
>>417 ちゃんとクラスタは構成されているのかな。
crs_stat -t とかで確認。
419 :
417 :2009/03/04(水) 13:21:00 ID:???
バージョンは10gR1です。 $ crs_stat -t CRS-0202: リソースが登録されていません。 テラインスコ失敗www olsnodes -n だとちゃんと見えるんだけどなぁ 調べてたらvipca実行しろとか出てきた。 いつ実行するんだこれ。
>>415 11gって、最初のリリースが11.1.0.6だよ。
今の最新は11.1.0.7で、2008年10月頃に公開。
11.1.0.7が最初に公開されたのは、
Linux x86で2008/10/10、UNIX系がそれに続き、
最後がWindowsだった。Win x64は11/27だよ。
Windowsは顧客数も多いしウザったいから、
他のOSで地雷が潰れるまで、
待っとけこの野郎、ってことなんだと解釈してる。
>>416 つか、インターコネクトにファイアウォール必要?
パブリックのクライアント-DBならCRSとか関係ないんだし。
>>419 せめてR2にしよう。
んで多分パブリック回線がプライベートIPウンヌン(非公開)
>>420 >他のOSで地雷が潰れるまで
PSRが同じで修正 Bug一覧が違うか?という点から何か
が見えてくるような来ないような。
422 :
NAME IS NULL :2009/03/05(木) 02:44:15 ID:8flqGIdl
PL/SQLを見よう見まねで使い始めたところです。 既に設計されたDBにはパッケージ本体が作られており、その中に6つのプロシージャと2つのファンクションがあります。 また、パッケージ本体とは別にパッケージがあり、その中に5つのプロシージャがあります。 そこで質問です。なお、DB設計には手を加えないものとします。 1) プロシージャは値を返さないと聞きましたが、OUTの引数はどういう使い方をするのでしょうか? OUTの引数は返り値だと思っていたのですが、どうも違うようです。 できれば、OUTの引数を取り出したいと思っています。 2) 5つのプロシージャは、パッケージ本体のプロシージャと同一名であり、 どうもこちらに渡して処理を行っているようです。 そこで、パッケージ本体にしかなさそうな1つのプロシージャと2つのファンクションは パッケージ本体内でしか使用できず、外部からは直接使用できないのでしょうか?
>>422 1) OUTの引数は、2種類以上の戻り値を返却するために使います。
HOGE_PKG.DELETE_PROC01(
PV_WHERE_IN,
PV_DELETED_ROW_CNT_OUT,
PV_NOT_DELETED_ROW_CNT_OUT
);
削除した件数と残った件数の両方を返却させたい、とかね。
現実はもっともっと複雑でしょう。
2)
通常、パッケージは仕様部と本体の2つの部分で構成されますが、
本体が不要な場合もあります。仕様部はパッケージへのインタフェースです。
ここでは、型、変数、定数、例外、カーソル、およびパッケージの外から
参照できるサブプログラムを宣言します。本体は、カーソルの問合せと
サブプログラムのコードを定義します。
仕様部はインタフェース、本体はブラック ・ボックスと考えることができます。
パッケージの仕様部を変更しなくても、本体をデバッグ、拡張または置換できます。
ttp://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19257-01/packages.html 一読してみてね。
アプリケーションの設計の容易さ=
開発チーム内で、仕様部はベテランが1人で頑張って作って、
PACKAGE BODYは、ベテラン、新人混合の3名で分担して作る、なんてことをします。
ベテランは最初だけ頑張るって事じゃなくて最初から最後まで頑張りますよ。
424 :
NAME IS NULL :2009/03/05(木) 09:34:12 ID:47/HAHeb
Oracleインストールの手順書なんかを読むと ulimitでプロセス数とファイルディスクリプタ数を変更しろとあるけど ほんとにプロセス1万個とかファイル6万個とか同時に開くの?
>>424 Linuxで、とか10gR2のインストール手順で、とか
簡単な情報でいいのだから、なるべく書いてください。
回答としては、そんなに開くとは思えません。
一方で、ulimitの記述を書かないと
サーバの規定値(「ulimit -a」で表示される値)が使用され、
unlimitedは取り得る最大の値を確保してしまうでしょうし、
少なすぎるとORACLEの動作に支障があるでしょう。
私はORACLE社の手順書どおりの値で気になりません。
なぜなら、あなたの考えと同様に、そんなに使うわけはない
と考えているからです。一方で、当該の設定値を
減らす事で、どんなメリットがあるのかを思いつかないので、
あえて変更する意味を見出せません。
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230911/ 【 ulimit 】 コマンドに割り当てる資源を制限する
ttp://www.oracle.co.jp/2shin/no109/o157feature2.html 以降では、デフォルトのシェルとしてBashが
利用されていることを前提とします。
次の行を/etc/profileファイルに追加します。
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Linuxで10gR1のインストールを練習中です。 どの手順書を読んでも Xを飛ばす設定を最初に行いますが これは必ず必要なものなのでしょうか。 各サーバのディスプレイに直接表示、では済まないのでしょうか
>>426 その場合、必要ではないです。
でも手順には書かれてあるべき内容です。
環境変数DISPLAYの使い方を知る
一般的なUNIX使いにとっては常識的な内容です。
今回はサーバ上のディスプレイにXを表示させているから
不要だな、とすぐ分かるからです。逆に記述が無いと混乱します。
Linuxのサーバが10台あると仮定します。
このとき私は、サーバ上のディスプレイを使ってインストールしたくありません。
私は、画面が広いX端末を1台用意して、
サーバの画面をXで飛ばさせて複数台を同時にインストールしたいです。
428 :
426 :2009/03/06(金) 09:54:17 ID:???
>>427 ありがとうございます。
マジで必要なのは rootに化けてGUI使うとき くらいですかね。
>>419 CRSインスコの最終段階でConfiguration Assitantの「Oracle Cluste Verification Utility」が
走って、大抵そこでfailedとなるはず。
この時に、Configuration AssitantのX-windowをそのままにしておいて、他のプロンプトから
vipcaのX-windowを開いてconfigする。
Config終了後、Oracle Cluste Verification Utilityを再実行すると通る様になる。
まあ、CRSインスコ後にvipca走られせてもいいんだけどね。
>>421 同意。
ボラクル及びCRSのインターコネクトはプイラベートネットワークが基本。
よってF/Wや、iptablesの使用は全く推奨されていない。
CRSのインスコ時にダイナミックに使用ポートを決めてくる事もあるため、
F/Wやiptablesが有効になっていると、インスコそのものが失敗する事も
ある。
なんか基本的なことを偉そうに語る奴らばかりでイライラするぜ。
「基本的なこと」を語ってるだけで「偉そうに」見えるのって 何コンプレックス?
ハイハイ、ワロスワロス
10gR1をRAC構成で使ってます。 Oracleの動作ログとか起動ログってどこにできるのでしょうか。 CRSの調子が悪くてログを見たいのですが find $ORACLE_BASE -name "*.log" -mtime 1 とかやってもいっこも出てきません。 Oracleってログはインストール時にしか吐かないとか?
435 :
NAME IS NULL :2009/03/10(火) 14:10:06 ID:bhlrenuU
ASMを実験中なんだが、データベースが ファイルじゃなくてASMで指定したロウデバイスに ちゃんと保存されてるかどうかを確認したいんだが なにをみたらいいのかね? とりあえずEMで表領域のある場所を確認したら +UNKO/test/datafile/ だったけど、これは実際にはどこを指してるのかわからん Oracleのバージョンは10.1.0です
> だったけど、これは実際にはどこを指してるのかわからん 何をどこまで知りたいのかね。 +UNKO/ は ASM のディスクグループを示すから、それでは不十分だということ? R2 だと asmcmd があるけどね。 R1 はこんな感じか。 SQL> SELECT concat('+'||gname, sys_connect_by_path(aname, '/')) filename FROM (SELECT g.name gname, a.parent_index pindex, a.name aname, a.reference_index rindex FROM v$asm_alias a, v$asm_diskgroup g WHERE a.group_number = g.group_number) START WITH (mod(pindex, power(2, 24))) = 0 CONNECT BY PRIOR rindex = pindex;
437 :
436 :2009/03/10(火) 14:53:35 ID:???
ありがとう。 ディスクグループの名前をうっかり普通のインスタンス名と 同じにしてしまったので、なにがなんだかわかんなくなってたっぽい。 >こんな感じか。 をこれから試してみる。問題ないことが確認できたらあとでチューしてあげる
>>434 実機が無いから記憶で答えると、alert.logかな。
起動した、とかシャットダウンした、とか
ORA-600のエラー出した、とか、そういうのが出る。
インスタンス単位で出る。
あと、どこのクライアントから接続してきた、とかは
listener.log。これはリスナー単位で出る。
>>434 show parameter bdumpでalert.logの吐き先を確認。
CRS関連のログは以下のディレクトリを探せ。
$ORA_CRS_HOME/crs/log
$ORA_CRS_HOME/css/log
$ORA_CRS_HOME/evm/log
$ORA_CRS_HOME/srvm/log
RMANとディスクのミラー分割組み合わせてバックアップ取っている人っている? EMCのBCVとRMAN組み合わせてみようと思ってるんだけど、使い勝手とか 戻しで注意する点とかもし知っていたら教えて欲しいんだけど?
>>440 教えてもらう態度じゃないな。墓穴掘って死ね。
442 :
NAME IS NULL :2009/03/12(木) 11:19:27 ID:DMHovpVA
$ORA_CRS_HOME/crs/init/UNKO01/ の下に3Gくらいの巨大なファイルがいっぱいあるんだけど core.1234 みたいな名前のはやっぱりただのcoreファイルかな。 こんなの消しちゃってもいいよね?
通常は消しても支障ないが、頻発するようなら取り合えずサポートに 提出する必要性を考えてスタックトレースだけ取って消去。
crs_stat -t で出力される名前が省略されずにフルで見れるを方法を教えてください。 あと、なんでいつもOracleはこんな適当な仕事をするのかも教えてください。
#!/usr/bin/ksh RSC_KEY=$1 QSTAT=-u AWK=/usr/xpg4/bin/awk $AWK \ 'BEGIN {printf "%-45s %-10s %-18s\n", "HA Resource", "Target", "State"; printf "%-45s %-10s %-18s\n", "-----------", "------", "-----";}' $ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \ 'BEGIN { FS="="; state = 0; } $1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1}; state == 0 {next;} $1~/TARGET/ && state == 1 {apptarget = $2; state=2;} $1~/STATE/ && state == 2 {appstate = $2; state=3;} state == 3 {printf "%-45s %-10s %-18s\n", appname, apptarget, appstate; state=0;}'
>>444 しっかり自分で調べてから物事はたずねてくれ。
オラクルがアバウトな感じなのはアメリカを象徴するような会社だからだ。
嫌なら使うな。
447 :
NAME IS NULL :2009/03/14(土) 05:55:46 ID:mzAyY/XE
oracle9iのクライアントからoracle11gのサーバーに接続できますか?
Oracleのサイトでは分からなかったのかい?
>>447-448 以前はあったがいまは公開されている情報がない。
KROWN にはあるから探してみな。
仕方ねぇから調べてやったぞ。 9iクライアントから11gに繋ぐ場合、クライアントのバージョンが9.2.0.4以降である必要がある。 9.2.0.3より下位バージョンは例え繋がったとしてもサポート外だそうだ。
なんだか他力本願なヤツが増えてるな。
他力本願の意味わかってるか。
>>452 努力しないで他人の力をあてにすること。
お前こそ日本語、わかってるか?
>>453 違うな。
俺は浄土真宗ではないけれども、それは本来の意味ではない。
バカは黙っとれ。
>>453 もしかしてお前在日か? 死んで詫びなさい。
本来の意味じゃないけど誤用でもない。さあ無教養はどっち
下手に宗教用語使うからじゃないの
もはや宗教由来の日常語に過ぎない。
一般的な使い方を否定してうだうだやってて面倒なヤツが多いな。
460 :
NAME IS NULL :2009/03/15(日) 23:47:42 ID:hRb5KBp6
「確信犯」て誰かが書いたら、同じ反応するんだろうね。
確信犯と役不足はいわゆる誤用を認めない立場も有効
「姑息」「潮時」「自己責任」「失笑」「煮詰まる」なんてのもあるな。
見事な仕事だと感心するがどこもおかしくはない
何の板かよくわからなくなってるが、しっかり調べた上でわからなかったら聞きましょう、ってことで。 これより質問板再開。
oracle dataguardについて質問させて頂きたくお願いします。 ver9.2.0.5です。 訳あって、standbyとして動いているサーバを 他の用途に使用したいと考えております。 その際、primary側で何か設定を行う必要はあるのでしょうか。 放置でも問題無いように思うのですが、、駄目でしょうか。 init.oraにあるdataguard用の設定をコメントアウトして 再起動した方が良いのでしょうか。 また、注意点、正式な手順があるなら ご教授頂きたく。。 よろしくお願いします。
1. 保護モードの変更 select protection_mode from v$database;で確認。 2. log_archive_dest_n の変更 スタンバイに転送するためにlog_archive_dest_n='service=xxxx' というような 設定があるから、そいつを削除。 3. Data Guard 関連のパラメータの削除 以下を削除 * fal_server, fal_client * standby_file_management * standby_archive_dest * log_archive_config * log_archive_local_first * remote_archive_enable * db_file_name_convert * log_file_name_convert 4. 必要ならアーカイブログモードからノンログアーカイブへ変更
466さん ご返信頂きありがとうございました。 1.のselect protection_mode from v$database;の 結果は「MAXIMUM PERFOMANCE」でした。 ※ロジカルスタンバイです。 1についてはそのままで 2.3についてはinit.oraの記述を修正しようと思います。 4.はそのままにしておきます。 また、ひとつ質問ですが、、、 Oracle Dataguardの構成で、もしprimaryがハード故障で システム(OS)が停止し起動できなくなった場合に standbyのDBをオープンすることは可能でしょうか? @alter database activate standby database; 私の持っている手順書にはstandbyで@を実行するとフェールオーバーする、 と書いてあるのですが@のSQL文が実行できません。 Aselect switchover_status from v$database; Aの結果が「NOT ALLOWED」となるのが原因と考えWebで下記SQL文を探しました。 Balter database commit to physical standby; Bを実行した結果Aの結果が「NOT ALLOWED」から「TO PRIMARY」に変わって @の実行に成功し一度、shutdownした後に init.oraを修正してstartupしたらDBをオープンすることができました。 上記の場合、primaryがハード故障でシステムにログインできない状況ですと フェールオーバーできない訳で・・・ 私の認識が間違えていることを祈りつつ、 ご存知の方がいらっしゃいましたら ご教授頂きたく。。。 primaryuが予期せぬ異常で起動できなくなった場合に standbyでDBをOPENする正しい?方法を ご教授願います。
complex_view_merging でKROWNを検索してみたところ、 オイラは今、ちょっくら青ざめている状況です。 長い間8.1.7利用してて、 2年前から10gR2利用のオイラですけど、 こうなったら、初期化パラメータで _complex_view_merging=false 設定で行こうかと思ってます。 経験談持ってる人は語っていただけませんか。
>>467 KROWNには、次のような記載がありました。
============================================================
※フェイルオーバーの詳細な手順はバージョンによって異なるため、
フェイルオーバー実行時には必ず使用バージョンのマニュアルを
参照してください。
============================================================
そのKROWNには、standbyが受信済みのREDOを適用する
FINISH文の紹介もありつつ、
primaryダウン時に緊急的な対処として行う
強制的なACTIVATEについても記述がありました。
<<フィジカル・スタンバイの場合>>
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
<<ロジカル・スタンバイの場合>>
SQL> ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE;
「@のSQL文が実行できません。」という記載の意味することが、
standbyに接続できないのか/実行したけど無応答なのか/エラーが発生したのか
良く分からないので、その状況について、詳細に語るべきだと思います。
>>469 そんなことここで言われてもな。
そんなに気になるなら、サポートに強く言って、修正してもらえ。
471 :
NAME IS NULL :2009/03/20(金) 10:02:49 ID:RBnEHUMv
>>468 自分の担当しているところではFALSEに設定している。
すでに複合ビューマージが使われている場合には
そのパラメータをFALSEに設定してしまうと
設定したことにより複合ビューマージが行われなく
なってしまうので、性能劣化が発生する可能性がある。
ただ、結果不正と性能劣化のどっちがましなのかと考えると
性能劣化なので、そこは我慢するしかないのかと思う。
467です。皆様、ご返事頂きありがとうございます。 469さん > 「@のSQL文が実行できません。」という記載の意味すること・・・ ALTER DATABASE ACTIVATE (PHYSICAL) STANDBY DATABASE; の結果はORA-01154です。 「database busy.open,close,mount,and dismount not allowed now」 primaryダウン時なので、primaryの存在は無く standbyで実行したSQL文でstandbyより発生したエラーです。 primaryダウン時は、mountで起動しているstandbyを shutdownしてinit.oraでoracle dataguardの設定を コメントアウトしてopenする方法なのでしょうか・・・ ちなみにバージョンは9.2.0.5です。 マニュアルが手元に無いので探して正式なフェールオーバーの 手順を探す予定ですが、primaryダウン時のフェールオーバーは 不可能だったりすると、、悲しいです...
>>472 まず、プライマリ側落ちててフェールオーバーできなかったらなんのためのデータガードだと・・。
それからマニュアルないとか言い訳にならない。
インターネットつながってる時点でマニュアル見られるんだから。
もっと色々自分で調べるクセをつけないと生き残れないぞ。
ORA-01154を調べた結果を、俺なりにまとめます。 オフィシャルに回答できるのは、ORACLE社だけだから、 サポート契約を検討してね。 [原因] プライマリ・データベースが最大保護モードだから。 [参考] モードには以下の3つがあります。 ・最大保護モード ・最大可用性モード ・最大パフォーマンスモード 確認方法は、select protection_mode from v$database;です。 467さんの希望は、最大可用性モードか、最大パフォーマンスモード なんだと思います。一度、モードを確認してください。
474さん ありがとうございます。 プライマリ・データベースのselect protection_mode from v$database;の 結果は「MAXIMUM PERFOMANCE」でした。 設計書にもモードは「最大パフォーマンスモード」と記述があり 上記は間違いないと思います。 私の希望は、、、「最大パフォーマンスモード」で プライマリが壊れた状況において、スタンバイ側で ALTER DATABASE ACTIVATE STANDBY DATABASE;の実行により ORA-01154などでエラーとならず、フェールオーバーさせることです。 また、サポート契約の件、検討します。 ありがとうございます。
('A`)つRECOVER MANAGED STANDBY DATABASE CANCEL;
478 :
NAME IS NULL :2009/03/23(月) 18:55:56 ID:nLPi1KZA
10gR1をRAC構成で作りましたが、sqlplusで普通に接続できるのに lsnrctl status がこんなエラーになります。 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))に接続中 TNS-12541: TNS: リスナーがありません。 TNS-12560: TNS: プロトコル・アダプタ・エラー TNS-00511: リスナーがありません。 Linux Error: 111: Connection refused netstatで見ると、tcp1521で確かに何かが待ち受けているので いわゆる標準のインスタンス名LISTENERでは無い名前で リスナーが動作しているのでしょうか? すみません、自己解決しました。 listener.oraを見たらなんか全然違う名前でした。
>>479 じゃあ書き込むなよ。
せっかくなので余談だが、RACだとデフォでlistener_SIDになる。
480 :
479 :2009/03/23(月) 19:17:33 ID:???
481 :
478 :2009/03/23(月) 19:38:58 ID:???
>>476 467です。できましたT_T
ありがとうございましたT_T
2台のWinServer2003R2にそれぞれXEのサーバ、クライアントを入れているんで すが、クライアントから接続出来ません。 LISTENERが起動している事は確認しました。また、以前XPにクライアントを入 れていた際は普通にサーバに繋がっていました。 サーバ機上ならSQLPLUSも問題なく動いています。tnsnames.oraの内容、各マシ ンのFW、ネットワーク、一通り確認したつもりです。 svr2k3→svr2k3の組み合わせだと別途注意すべき点があったりしますでしょう か?
>>483 どんなエラーがクライアント側に返ってきているんよ?
sqlnet.oraのNAMES.DIRECTORY_PATHにWorldとか指定されていて
「繋がらねぇ〜」とかってオチだったりしてな!?
2003で一番ありがちなのは、Windows FireWallサービス。 一旦、手動にして止めたつもりでも、 知らんうちに有効になったりして 「アレ?」とトラブルになる。 俺はORACLEをインストールしたサーバでは、 スッパリ諦めて無効にしているが、自己責任で。
>>471 >>468 です。経験談ありがとうございます。
オイラが信頼するオイラ以上の知識を有する知り合いにも
相談しました。ちなみに、
>>471 さんと同意見でした。
SELECT * FROM TAB; で出てくる CLUSTERID ってなに? ググってもこれの解説してるところがない。
488 :
NAME IS NULL :2009/03/27(金) 22:59:51 ID:LUFIdYWI
>>487 TAB自体が下位互換性のために未だに使用できる様になっているけど、
使用は推奨されていない。
>>489 ありがとう。これからはALL_TABLES使います。
491 :
NAME IS NULL :2009/03/29(日) 21:41:29 ID:tW/sgpmt
今度10Gで初めてASMでDBを作成してみようと思っているのですが、 大まかな作成の流れを教えて下さい。 DB作成未経験の初心者です、よろしくお願いします。
10G じゃなくて 10g な。 - DBCAを起動する - ASMの設定をする - DBを作成する こんだけ。簡単だよ。
493 :
NAME IS NULL :2009/03/29(日) 22:35:00 ID:tW/sgpmt
>>492 なるほど、それだけでいいんですね。ありがとうございます。
10.1と10.2で結構違って面白いよな
PL/SQLを使おうとしたのですが NUMBER型の引数の値を一度NUMBR型の変数に代入し RETURNにその変数を指定すると 使用不可コードのワーニングが出て困っています。 RETURNの型はNUMBER型です。 引数をそのままRETURNで返すとワーニングは出ません。 何が悪いのでしょうか… 2バイト文字がいけないのかと全て無くしても変わりませんでした。
日本語でおながいしまつ
>>495 本当にそのレベルの処理なら、ここで
PL/SQLのコードを晒しても問題ありません。
公開したくない情報を削って、
晒してください。
また、ORA-XXXXのエラー番号、
ORACLEのバージョン、オペレーションシステム
についても、情報が必要です。
このスレ住民は、なぜかとても親切なので、
再現性を確認してくれる可能性が高いです。
v$asm_disk の各項目の意味とかをまとめて解説してるページってある? HEADER_STATUSのとりうる値とか、解説がないから 見ても異常かどうか勘でしか判断できない v$asm_diskgroupなんかもよくわからんよね
502 :
499 :2009/04/03(金) 10:47:21 ID:???
503 :
NAME IS NULL :2009/04/03(金) 16:37:36 ID:q9U6bHad
RAC構成で、 ときどき ORA-01017が出ます。 ずっとパスワードエラーでログインできないなら まだわかるんだけど ときどき ってのが腑に落ちません。 これって、どっちかの系でユーザがいないってこと? そんなことってRAC構成でありうるんですか・・・?
>>503 エスパーじゃないから、プラットフォームも分からないし、DBのバージョンも知りません。
そんなので答えられると思うんですか?
>>504 ありがとうございます。 とりあえず よくあるトラブルではないことと、
OSやバージョンに依存する可能性の高い、そこそこ珍しい現象であること
がわかりました。
バージョンですが、10gの10.1.0.2です。OSはRHEL3です。
RAC構成でASMを使っています。
ORACLEの認証には大別して2つの概念、
OS認証と、ORACLEベースの認証があります。
ttp://www.microsoft.com/japan/sql/facts/compare/02.mspx #Oracle では、Oracle データベースに登録されたユーザー名、
#パスワードを使用した認証が基本であり、OS 認証は推奨されていません。
Microsoftの提灯記事だけど、適切な記述だと思います。
まあ、Oracle7から使っている自分にとっては当たり前なので
そんな些細な事でSQL*Serverを使おうとも思いませんが。
実際、10.1.0では次のような不具合が報告されています。
例:JDBC OCI Driver(Type 2)+OS認証で、ORA-01017発生→10.1.0.4で修正
RHEL3をお使いとの事ですが、OS認証を一度やめてみてはいかがですか?
誤:SQL*Server 正:SQL Server
OS認証が推奨されていてもORACLEベース認証の方がいいな
509 :
NAME IS NULL :2009/04/04(土) 10:30:08 ID:bkcQQ2Bx
CREATE TABLE Supplier ( SName CHAR(20), ItemName CHAR(20), Price INTEGER, PRIMARY KEY (SName, ItemName) ); CREATE TABLE Item ( ItemName CHAR(20), Description CHAR(50), PRIMARY KEY (ItemName), FOREIGN KEY(ItemName)REFERENCES Supplier(ItemName) ); CREATE TABLE Customer ( CName CHAR(20), Address CHAR(50), PRIMARY KEY(CName) ); CREATE TABLE Order ( CName CHAR(20), SName CHAR(20), ItemName CHAR(20), Qty CHAR(50), PRIMARY KEY (CName, SName, ItemName), FOREIGN KEY(CName)REFERENCES Customer(CName), FOREIGN KEY(SName)REFERENCES Supplier(SName), FOREIGN KEY(ItemName)REFERENCES Item(ItemName) ); 最後のテーブル名であるorderが使用できないのは分かってるいるのですが。 それ以外のエラーへの対応がわかりません。 分かる方アドバイスください。お願いします。
>>505 可能性としてはロードバランサーがトップにあって、片側のRACのパスワードファイルが
正しく設定されていないとかかな。
511 :
NAME IS NULL :2009/04/05(日) 15:21:30 ID:JiS+iut1
すみません、質問があります。 会社から発行されたチケットを使用してテストを受けようと思うのですが、 会社がチケット番号などから自分のテスト結果を参照することは 可能でしょうか?
可能
513 :
NAME IS NULL :2009/04/06(月) 00:56:49 ID:A28vG0H2
514 :
503 :2009/04/06(月) 03:00:44 ID:???
>>513 すみません。これは全然関係ないです。
>>510 すみません。ロードバランサーは使っていません。
ただ、RACが交互に系を切り替えてるような気はします。
そして片方が正しく設定されていないのだと思います。
>>506 OS認証は使っていないはずですが、前任者が環境構築するときに
片系はOS認証、もう片系はOracle認証なんてことをやっちゃってるかもしれません。
そんなことできるのか知りませんが。
>>514 >そして片方が正しく設定されていないのだと思います。
だったら、片側のインスタンスにだけ接続が行くように設定して試してみれば良いやん。
active_instance_count を設定すれば、どちらか片方のインスタンスのみに接続されるようになる。
>>514 ロードバランサーがなくてもリスナーサイドロードパランシングが使われてるんだろ。
いずれにせよ自分のPCにでも各インスタンスに対するTNSエントリを設定してsysで
繋げてみればいい。
それでどっちかでエラーになるのならパスワードファイルを再作成だな。
リスナーサイドロードバランシングw
うむ、投稿した後に間違いに気がついたぞ。 まあ、日本語50音直打ちだから許してくれ〜い。 欧州、そして今はアメリカでDBAとして働いているが、日本語キーボードはいつも俺と共にあるw 英語101キーボードの配列なんかで仕事が出来るかよ。
520 :
NAME IS NULL :2009/04/08(水) 17:25:28 ID:epT/t44l
アーカイブログのサイズを調べるSQL文って書けるのかな
書けますん
522 :
520 :2009/04/08(水) 18:02:13 ID:???
>>521 ありがとうございました。書くことが出来ました。
使うテーブル全部にアナライズかけたばかりなんだけど、 ルールベースが採用したインデックスが遅かったので、ヒント句で違うインデックス指定したら早くなったんだけど 俺、オラクルに勝ったと思っていい?
analyzeかけたのになんでRBO使ってんの?
あ、コストベースの間違いでした
もうひとつ質問なんですけど、 SQLサーバのテーブル(中身も)をオラクルに入れたいんだけど、 オラクル⇒オラクルだとIMP,EXPだと思うけど SQLサーバ⇒オラクルだとどういう方式があります?
>>527 格好良いことやりたのならGeneric Connectivity。
力技でやるのならcsvで吐き出したものをローダー使ってぶち込む。
529 :
NAME IS NULL :2009/04/10(金) 08:21:34 ID:wKOZtIHP
>>528 ぶち込むとか、カッコええ
男の仕事って感じ
固定長のテキストファイルを読んで オラクル10gのテーブルに格納したいのですが 一部の項目がCOBOLのパックになってます この項目をNUMBER型に格納するのに 一番スマートなやり方教えてください
SQL*Loaderの(packed) DECIMALかねぇ? コボラーじゃないから良くわらんが、分かる人がみれば以下の説明で分かるか? INTEGER - full-word binary integer (LONG INT in C) SMALLINT - half-word binary integer (SHORT INT in C) FLOAT - single-precision floating-point (FLOAT in C) DOUBLE - double-precision floating-point (DOUBLE in C) ZONED - a string of decimal digits, one per byte, with the sign included in the last byte. (packed) DECIMAL - packed decimal format: two digits per byte, except for the last byte, which contains a digit and sign. The equivalent in COBOL is respectively: INTEGER - S9(9) COMP stored in 4 bytes SMALLINT - S9(4) COMP 2 bytes FLOAT - COMP-1 4 bytes DOUBLE - COMP-2 *** it doesn't work *** 8 bytes ZONED - S9(x) DISPLAY x being a number DECIMAL - S9(11) COMP-3
532 :
NAME IS NULL :2009/04/12(日) 23:47:38 ID:XwgobUls
質問です。。。 今、oracle bronze10gをもっているのですが、 silver11gを取得するには、silverDBA11gを取得すれば いいのでしょうか? それとも、bronze10gなので、silverDBA10gしか受験で きないのでしょうか? ご教授よろしくお願いします。
Oracleのサイトに詳しく説明されているのに、なぜ読まないかな。 アホなのか?
534 :
NAME IS NULL :2009/04/13(月) 05:51:31 ID:QgB5aUsW
クエリの質問です。 ある結果から、頭一文字で集計することは出来ないのですか? select count(*),tag from hoge group by SUBSTR(aaa , 0 , 1) tag こんなイメージなのですが、 どのようにすればよいのでしょうか。
535 :
534 :2009/04/13(月) 16:25:47 ID:???
自己解決。 普通に出来ました。 select SUBSTR(aaa , 0 , 1) count(*) from hoge group by SUBSTR(aaa , 0 , 1)
536 :
NAME IS NULL :2009/04/13(月) 22:25:05 ID:919/buMn
アホで〜しゅ
カラムが200こくらいあってレコード数が50万くらいあるテーブルで ちょっとカラムの数を半分くらい減らそっかな と思って ALTER TABLE hoge DROP (unko101,unko102, ... ,unko200); というクエリーを実行したら、ものすごい時間がかかって全然おわらない んだけど、これをもっと高速にしたいときはどうしたらいいの? チェックポイントってのが問題なの? バックアップはとってあるので、チェックポイントとかどうでもいいんです。
>どうしたらいいの? そういう糞テーブル設計者を呪う。
539 :
NAME IS NULL :2009/04/14(火) 21:08:16 ID:BaBqmTPe
どうせコボラーが設計したテーブルなんだろ。 よくあるよ。
>537 遅いのはインデックスの列も削除してるとか、hogeを参照してるセッションがあるとかが原因かもね カスケードオプションとかの制約とかも中尉。 入れ物を新しく作って入れなおした方が速いかもしれぬ
541 :
NAME IS NULL :2009/04/14(火) 21:23:13 ID:BaBqmTPe
>>537 >DROP (unko101,unko102, ... ,unko200);
見た感じ、カラムを200から100に減らすのか?
それだったら、新規にテーブルを作って、INSERT INTO SELECT した方が早いんじゃないかなぁ。
さらに・・・、ディスクに余裕があるならば、旧テーブルと新テーブルで格納するディスクを分ける。
あと、ノーアーカイブログモードにする。
当然、INSET INTO SELECTする時は、パラレルとNOLLOGINGモードで実行な。
処理時間はレコード件数ではなく、テーブル容量に依存する。
上記対策を組み合わせれば、かなり早くなるとは思う。
50万件程度ならなんとでもできる と思ったらカラムが200もあんのか!そんなにあるとどのカラムが何に使ってるか把握できんだろ 列削除したら動かなくなるプログラムが出てくるんじゃないか?
ありがとうございます。
結局30分ほどほっといてジャンプ読んでたら終わってました。
>>538 すでに実施済みです。
>>539-542 実はこれはほんの序章にしか過ぎなくて、このあとに
1000カラムの100万件が待ち受けてるのでした。(800カラムくらい削る予定)
まさに1000万パワーズです。泣きそうです。
>>541 を参考にしてがんばります。
>1000カラム ( д)゚ ゚
>>543 設計者、汎用機上がりだろ?
カラムが1000とかって、RDBMSで絶対にありえない。
546 :
NAME IS NULL :2009/04/14(火) 22:57:47 ID:BaBqmTPe
>>543 > 1000カラムの100万件
ワロタww
まぁALTER TABLE DROPした方が楽と言えば楽だけど、その場合はテーブル容量が変わらないから注意してね。
実行後にshrinkしとかないと無駄な領域が増えるばかりでなく、フルスキャンした時にパフォーマンスが劣化するよ。
銀行系のDBだとそういう基地外カラムがあるとは聞くけど、たいしたもんだ
99%、コボラーの犯行だろ。 行連鎖・行移行しまくりなんだろうなぁ。 怖いなぁ。
>>527 Oracle Migration Workbench
550 :
NAME IS NULL :2009/04/16(木) 18:39:10 ID:bVm5EM13
CentOS4.5に、Oracle10gを入れようとして、 インストール時に、 Checking installer requirements... Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asiaunx-2 Passed All installer requirements met. というメッセージが出ています。 CentOSは、動作保証対象外のOSだとは思うのですが、インストールする方法はあるんでしょうか?
/etc/redhat-release
>>550 ./runInstaller -ignoreSysPrereqs
-ignoreSysPrereqだっけ
554 :
550 :2009/04/16(木) 19:21:54 ID:bVm5EM13
ありがごうございます。 ./runInstaller -ignoreSysPrereqs ./runInstaller -ignoreSysPrereq 試しましたが、結果は変わりませんでした・・
だから、/etc/redhat-releaseをRHEL4のものに書き換えればいい。
とりあえず、そこで詰まるヤツにCentOSにオラクル入れるの無理だろ。 おとなしくミラクルでも使っとけ。
557 :
550 :2009/04/16(木) 20:36:54 ID:bVm5EM13
お騒がせしてすみません。 結局、インストーラの、iniファイルに手を加えて、 そこのエラーは通しました。 まだ、インストール成功していないのですが・・・、 上からの指示でなければ、違うOSにするんですけど・・・
centOSかよ・・・・・ 同じ無料LinuxOSだったら、Oracle Enterprise Linux の方が相性が良いのに。
> Passed なんだ。エラーはそこじゃないな。
10g、11g RAC(ASM、OCFS2の両方)で動作確認した事あるよ。 気を付けるとしたら、ちゃんとパッケージが入っている事ぐらいだったか。 それもyum使えば入るしね。
>>561 いくらなんでもXでつまづく事はねぇんじゃね?
しかし何故その上司はCentOSにオラクルを入れよと命じたのか。 サポートされてないのに。 教育のため??
564 :
550 :2009/04/17(金) 19:29:28 ID:kWFhDTER
550です。お騒がせしてすみませんでした。 Linux系の環境をいじった経験がなく、非常に混乱していました。 GUIでインストーラを立ち上げて、インストールすることができました。 皆さん、ありがとうございました。 CentOSにOracleというのは、教育のためというわけではないのですが、 諸事情あって、そういうことになってしまいました(汗)
で、原因はなんだったんだ?もしかしてXだったかの・・・?
566 :
NAME IS NULL :2009/04/19(日) 11:04:10 ID:QT17jzFz
911 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 07:31:37 757 :名無しさん@お腹いっぱい。:2009/04/19(日) 07:22:25 あなたが馬鹿だから 912 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 10:48:51 911 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 07:31:37 757 :名無しさん@お腹いっぱい。:2009/04/19(日) 07:22:25 あなたが馬鹿だから 913 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 10:49:31 912 名無しさん@お腹いっぱい。 [sage] 2009/04/19(日) 10:48:51 911 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 07:31:37 757 :名無しさん@お腹いっぱい。:2009/04/19(日) 07:22:25 あなたが馬鹿だから 914 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 10:57:14 913 名前: 名無しさん@お腹いっぱい。 Mail: sage 投稿日: 2009/04/19(日) 10:49:31 912 名無しさん@お腹いっぱい。 [sage] 2009/04/19(日) 10:48:51 911 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 07:31:37 757 :名無しさん@お腹いっぱい。:2009/04/19(日) 07:22:25 あなたが馬鹿だから 915 :名無しさん@お腹いっぱい。 [] :2009/04/19(日) 11:01:50 914 :名無しさん@お腹いっぱい。:2009/04/19(日) 10:57:14 913 名前: 名無しさん@お腹いっぱい。 Mail: sage 投稿日: 2009/04/19(日) 10:49:31 912 名無しさん@お腹いっぱい。 [sage] 2009/04/19(日) 10:48:51 911 :名無しさん@お腹いっぱい。 [↓] :2009/04/19(日) 07:31:37 757 :名無しさん@お腹いっぱい。:2009/04/19(日) 07:22:25 あなたが馬鹿だから
今までSQL Serverしか経験がなく初めてオラクルのDBを使用します。 会社指示で勉強ついでにオラクルマスターの資格も取れればと思いWindows上で環境を作ろうとしています。 オラクルマスターの参考書にバージョン11gの30日分の体験版DVDが同梱されていたのでひとまずそれを使っていればいいかなと予定はしているのですが、 使用期限切れが心配なため、無償で期間制限ない体験版をさがしています。 バージョンは11もしくは10.2のどちらでもかまいませんので教えていただけませんか? 本来会社でライセンス買ってくれればいいんですが実務でなく勉強だけなら買えないといわれたのでこんな状況になってます。
つ[Oracle 10g Express Edition] (無償だが体験版に非ず)
体験版は体験版に非ず
570 :
567 :2009/04/20(月) 13:05:30 ID:???
返信ありがと。 とりあえずしばらく使えるものがあればいいのでExpress Editionでもいいかと思いました。 制限の具合はこれから確認してみます。
>>570 Oracleのサイトに行けば、機能制限が無いインストーラーをダウンできるよ。
572 :
NAME IS NULL :2009/04/20(月) 21:31:24 ID:E/kjbKAy
資格目的ではなく、Oracleの勉強をしようと思っています。 OracleDatabaseServerの導入・構築・保守(バックアップ・リカバリ)など一通りできるようになりたいのですが、 オススメの本とかありますか?
マニュアル。
マニュアルはどこでダウンロードできますか?
576 :
NAME IS NULL :2009/04/20(月) 23:31:10 ID:5HLI7OQp
どこでって・・・・・(汗)
>>577 30日以上使うつもりの奴に「30日経っても使えるよ」てのはつまり
「バックレてそのまま使えよ」と勧めてるわけ?
>>571 一応言っとくと、ライセンスなしで使い続けてると・・
580 :
550 :2009/04/21(火) 18:45:13 ID:9X+HJO0M
>>565 最終的には、
Xだったと言えば、Xだったのですが、
PCにハード面の問題があったようで、Xにしたときに画面が真っ暗になってしまい、
混乱してしまった感じです。
>>573 大手ベンダのSEをやっています。
ORACLEの導入、構築、保守、バックアップ、リカバリなどについて
後輩には、こんな感じで指導してます。長文すみません。
1)CPU 2GHz以上、メモリ2GB以上、HDD250GB以上のWindowsパソコンを1台用意する。
2)日本および米国のOTNにIDを取得し、複数バージョンのORACLEのインストーラを入手する。
3)VMWareでIDを取得し、VMWare Server Console 1.xを入手する。
4)Windows Server 2003 R2、Linux、Solaris x86等をVirtual Machine(VM)として構成する。
5)VMをコピーしてORACLEをインストール、インスタンス作成といった手順を、気の済むまで繰り返す。
6)入手しても問題なさそうなDMPファイル(デモデータとか)をインポートして動作を確認したり、壊したり、復元したりする。
7)分からない用語があれば、ググって調べる。ダメなら本屋で立ち読みする(巻末の索引を利用する)。
そのうち「この本は、どうしても欲しい」と思う書籍が出てくるはず。それは仕方ないので買う。
後輩に指導しているポイント:
「英語を無視するな」
「ORACLEのインストーラやパッチを、コレクションしろ」
「ORACLEの基礎的な勉強は家でしろ。待ち時間が多いから、同時にゲーム、音楽、読書、映画」
パッチは仕事で扱ってないと手に入らなくね?
>>582 どうしようもない馬鹿だな。釣りにしては下手だし。
>>582 オラクルやってく上で、英語は大事だが、その他2つは・・
コレクションとかもう意味不ww
タメになった
ダメになった
もうおしまいだ。
2番目の指導は問題だな
インストーラのコレクションはマジで大事だな。 二度と手に入らないバージョンとかあるし。
591 :
NAME IS NULL :2009/04/22(水) 21:09:58 ID:8oVKJNzM
初心者で質問です。 EMCAでDatabase Controlをセットアップしているのですが、 SYSのパスワードが分かりません Oracle11gのインストール時にデータベースは作成しませんでした。
>>591 データベースは作成しませんでした → SYSのパスワードが分かりません
594 :
NAME IS NULL :2009/04/22(水) 22:12:17 ID:8oVKJNzM
データベースを作成しないとSYSのパスワードは作成されないでしょうか? ソフトウェアのインストールのみ行ったのですが、そこが問題だったのでしょうか?
データベースをWebベースのGUIでコントロールするEMをコンフィグするのがemcaです。 データベースがないのにemcaを行う意味が分かりません。
Oracle 11g です。 RMANを使ってバックアップ→リストアを行おうとして失敗しました。 コントロールファイルはリストアでき、表領域はリストア出来ませんでした。 んで、制御ファイルを再構築しDBをオープンし復旧できたと思っておりました。 下手に壊してしまう前にエクスポートでデータを取っておこうと思い エクスポートを実行した所 「ORA-25153:一時表領域が空です。」と出ます。 復旧できてませんでした。 select * from v$TEMPFILE で確認したところ何も出てきません。 今まで一時表領域に割り当てられていたTEMP01.DBFは存在するのですが [すでに存在するTEMP01.DBFを一時表領域に割り当てる] ような事は出来ますでしょうか? ググると一時表領域の再作成や追加ばっかり出てきて、すでにあるファイルに割り当てる 様なのは見つけられませんでした。 こういう場合はTEMP01.DBFを削除して再作成すべきなのでしょうか? オラクルは何度も使ったことはあるのですが、構築や保守の作業は初めてで 四苦八苦しております・・・。 よろしくお願いします。
超新星現るw ゆとりの多い世の中やね。
598 :
597 :2009/04/22(水) 22:35:20 ID:???
超新星は
>>596 のことじゃないからな。
とりあえず一時表領域は再作成しとけ。
元の名前に戻したかったら、別名で作成→元のを削除→元の名前で作成→別名のを削除、でOK
一時表領域だったらデータも入ってないんだし、 create tablespace ... reuse でいいんじゃないのかなー
>>598 >>599 598さんのやり方で試してみます。
DBが起動してる状態でTEMP01.DBFが削除できれば
リネーム考えずに一発で作れそうかなぁとか考えておりますw
ありがとうございました!
601 :
582 :2009/04/23(木) 07:21:41 ID:???
仕事でむしゃくしゃしてやった。 酔っ払っていろいろ書いた。後悔はしていない。
反省はしとけ
604 :
NAME IS NULL :2009/04/23(木) 21:11:49 ID:6YaSPAG4
公園で裸になったりもするな
605 :
NAME IS NULL :2009/04/24(金) 18:49:27 ID:7Do46R/a
1つ質問させて下さい。 あるユーザがテーブルに更新を掛けていてそのテーブルを参照されたくない場合、 トランザクションが完了するまでselect文をロックするといった設定は可能なのでしょうか。 もし可能であればその設定の方法と解除の仕方を教えていただけませんでしょうか。
他マシンでのリカバリテストをしようと思うんですが Oracleのバージョン、ディレクトリ構造、SID等が全て一緒だけど OSが微妙に違う(Windows2003EE(MSCE)→2003SE)場合の リカバリ時、何か気をつけることがありますか? DBIDくらいかなと思っているのですが。 元DBのコールドバックアップをコピーしてきて 先DB上でのリカバリです。
DBIDなんて、同じマシンのときしか影響しないんじゃなかったかな。
>>605 2人目に見せたくないのは、
更新していないレコードを含む全レコードなの?
更新中のレコードだけなの?
後者なら、1人目も2人目も
SELECT ナントカ FOR UPDATE NOWAIT
で大丈夫だと思うんだけど。
あと、前者なら、1人目が
UPDATE テーブル名 SET キー=キー
を最初にかましておいてから、
SELECT ナントカ FOR UPDATE NOWAIT
で本筋の処理に入るのかな。
酔っ払っているし、
ORACLE起動したくねーから、よくわかんね。
>>606 窓だったら大丈夫じゃね?
注意する点としたら、oradim使ってインスタンス(サービス)作る所ぐらいか?
DBIDも同じで上がるよ。
>605
>>608 の言うことを試してみればいいよ。
ForUpdateならDML扱いだから、取得しようとする行が先客によってロックかけられていたら、
自分のSELECTは先客がロック解除するまで結果が返ってこない。
611 :
NAME IS NULL :2009/04/25(土) 00:07:40 ID:f+YC/agg
>>608 のとおりであれば
返ってこないというか即エラーだな
試せばすぐわかることだ。 エラーだったか、砂時計で待ちになったか忘れたけど、こんなことはマルチユーザのシステムでは考慮するのは常識だし うまくいってる既存のシステム真似ればよいだけの話。
>605 です 現状、単純な処理のクエリーが戻ってこないという事が頻繁に発生しておりまして SQLトレースからデットロックが発生しているUPDATE文までは発見できたのですが・・ クエリーが戻ってこない現象がselect文で発生しているため、ロックとクエリーが 戻ってこない現象は関連していないと考えていました。 完全に手詰まり状態でしたが、ご回答して頂いた皆様ありがとうございました。
>613 そりゃ、完全に設計ミスだよ。 自分が設計したのなら、大いに反省すべきだし、 他人が設計したのならそいつに責任全部押し付けてもOKなくらい基本的かつ重要な事。 普通の中規模以上のシステムの設計書ならロックについてなんらか書かれているはず。
615 :
NAME IS NULL :2009/04/25(土) 00:46:45 ID:f+YC/agg
つーかデッドロックじゃなくてただのロックだろ。 デッドロックならどっちかのトランザクションにエラーが返る。
616 :
NAME IS NULL :2009/04/25(土) 01:02:21 ID:uRjQFxsB
>>613 デッドロックとは何かを勉強してね。
>クエリーが戻ってこない現象がselect文で発生しているため
単に処理が重いんじゃないのか?
StatsPackとかSQL詳細レポートとか分析してみたか?
アラートログに同様のデットロックが複数回発生しておりました。 ORA-00060:Deadlock detected. すべてのデットロックは1つのUPDATE文が原因です。 ご指摘の通りまったくもって勉強不足でした。出直してきます。
618 :
NAME IS NULL :2009/04/25(土) 01:49:03 ID:v/emdwre
>>366 巨人の育成って坂本みたいな小物や数年でいなくなりそうな中継ぎのこと?
中日は川上岩瀬福留と超一流を育てた実績があるのよ。
残念だけど巨人にこいつら以上の選手を育てる可能性は皆無なのよ。
select for updateでnowaitつけずに悲観ロックで設計してんじゃね? ちなみに今某富士〇が設計しているアプリがあるんだが、そいつが 悲観ロック使っていやがる。 こんなんでパフォーマンス出せという方が無理だろ。
>619 それだけの文章からはパフォーマンスが出せない理由は読み取れないだろ ロックが致命的なボトルネックとなっているなら指摘して直させればいいし。 設計が絶対ならロック以外のところは可能な限りのパフォーマンスを出しているエビデンスを提出すればいい。
勿論こんなアホなロジックのアプリ作ってんじゃねぇって指摘してるぜ。 だが奴らは取りあえず納品さえすましちまえばいいってスタンスだから、 全く聞く耳もたねぇけどな。 とりあえず統合テストで問題点浮き彫りにして、直させるつもり。
>>605 >>613 >>617 アレ?質問の内容が変わったよね?
焦点がぼんやりしてるような気がする。
どれか1つについて優先して解決したい旨を示して、質問してね。
個人的には一歩一歩前進すべきだと思う。
いきなりdを質問されても、ズレた回答しちゃうからさ。
a:現在発生したデッドロックを解除したいが方法が分からないので知りたい
b:デッドロックを解除しても、SELECT文がまだ遅いので、SELECT文を見直したい
c:今回デッドロックが発生した原因を確定したい
d:将来的にデッドロックが発生しないように修正したい
aよりcが先だろ、と思うかもしれないけど、 ORA-00060が発生した日時には、 トレースファイルも出ているので、ちょっと目を通せば、 cの大体の目星についてピンと来る事が多いです。
>>609 試してきますた。
DBIDのセットが必要でした。後は想定通りの手順で
全く問題なかったお。
テーブルが分析済みかどうかって、何見ればわかるんだっけ? あと分析中ってselectとかinsertとかやっちゃっても大丈夫?
>>625 xxx_tablesのlast_anaryzedを確認
分析中のsql実行も問題ないけど大量insertしたりしたら
折角の分析結果が 以下略
627 :
625 :2009/04/26(日) 06:55:00 ID:???
>>626 ありがとう。
INSERTとかもちょっとだけしかしませんよ。ちょっとだけ。先っぽだけならセーフ。
629 :
NAME IS NULL :2009/04/27(月) 15:56:03 ID:PFrga0Rn
hoge,piyo,fuga はすべてNUMBERで、piyo,fuga がセットでプライマリキー このほかにカラムが100ぐらいありデータ数は30万ほど というテーブルunkoがあります。 このとき、次のクエリがだいたい10秒くらいかかります: SELECT MAX(hoge),COUNT(hoge), MAX(piyo),MIN(piyo) FROM unko; これを一瞬で終わらせたいんだけど、どういうチューニングをしたらいいの? 単純に、hoge と piyo それぞれにB-TREEインデックスをつけてみたけど 2割程度しか改善されなかった 表を分析させたらむしろ遅くなったという。
630 :
NAME IS NULL :2009/04/27(月) 23:56:11 ID:UtcGIzOX
>>629 count は単純にレコード件数を知りたいだけか?
であれば、count(*) の方が良い。
hoge に not null 制約を付けてないで、count(hoge) をやると、テーブルフルスキャンが発生する可能性大。
631 :
NAME IS NULL :2009/04/27(月) 23:57:36 ID:UtcGIzOX
それか、マテリアライズド・ビューを使えば瞬時に終わるけどな。
>>629 hogeとpiyoにb-treeをつけたのなら、個別にやったら速くなってない?
select max(hoge) from unko;
select count(hoge) from unko; -- これは遅いかも
select max(piyo) from unko;
select min(piyo) from unko;
634 :
NAME IS NULL :2009/04/28(火) 14:23:57 ID:VWUlZDrL
インデックスってみんなどんな名前にしてる?
635 :
629 :2009/04/28(火) 14:52:31 ID:???
>>633 SELECT MAX(hoge) FROM unko;
SELECT COUNT(*), MAX(piyo),MIN(piyo) FROM unko;
の2行に分けたら一瞬でおわるようになりました。
なんか、Oracleってあんまり賢くないんだね。これから気をつけます。
Oracleが賢いと言うつもりはないけど、 最初のクエリを一瞬で処理できる製品は見たことないです
>SELECT COUNT(*) こそっと書き換えてるじゃねぇかw これが原因だろw
638 :
629 :2009/04/28(火) 15:59:39 ID:???
>>637 いやまあそうなんだけどさ、いろいろ組み合わせててさ
【スロゥリィ】
SELECT MAX(hoge),COUNT(hoge) FROM unko;
SELECT MAX(hoge),COUNT(*) FROM unko;
SELECT COUNT(hoge),MAX(piyo),MIN(piyo) FROM unko;
【ラディカルグッドスピード】
SELECT MAX(hoge) FROM unko;
SELECT COUNT(*) FROM unko;
SELECT COUNT(piyo),MAX(piyo),MIN(piyo) FROM unko;
SELECT COUNT(*),MAX(piyo),MIN(piyo) FROM unko;
となったわけですよ。
MAX(hoge),COUNT(hoge) の組み合わせが遅いのは意外だった。
639 :
629 :2009/04/28(火) 16:02:08 ID:???
>>636 MySQLだと一瞬なのですわ。
まあ内部で常に個数、最大、最小、平均などを持ってるらしいから
こういうのには強いのかも
>>639 おぬし、あんまり賢くないな。
そこでマテビューですよ。
内部で勝手にそんなもん持ってたら 更新系のレスポンスが最悪なんじゃね? 無料のDBMSをまともに使う気がないから知らんが。
MySQLのMyISAMなら件数持ってるからCOUNT(*)は速いけど
COUNT(hoge)はhogeが主キーでない限りだめだった気がする。
MIN、MAXはほかの製品と同じ。
>>639 はたぶんクエリキャッシュにヒットしたんだと思うよ
二回目以降は一瞬。
俺流インデックスの命名法 プライマリキーインデックス:PK_テーブル名 その他のインデックス:IDX1_テーブル名、IDX2_テーブル名、IDX3_テーブル名 テーブル名はできるだけ20バイト以内にして末尾にTBLを付ける。 PRODUCTTBLとか、そんな感じ。 テーブル名を「T_ナントカ」、インデックスを「I_ナントカ」とする流儀もあるようだけど、 俺には馴染めなかった。
命名基準は客先によって歴史的な文化があるから 慣れるまで抵抗あるんだよな。 常に俺ならこうする・・みたいな葛藤と闘いつつも、 でも、知らぬ間に馴染んでいってる。 ところが汎用機の文化をそのまま取り入れたような標準化には いつまで経っても馴染めないね。。 8文字maxでイミフな記号、連番の羅列とか。。大企業ほど多い
デモとか研究とかじゃなく、 運用中の実データで扱ったテーブルの中で 過去最大のレコード数ってどれぐらい? 俺、370万行。
>その他のインデックス:IDX1_テーブル名、IDX2_テーブル名、IDX3_テーブル名 カラムインデックスなら、カラム名もつけるのか?
テーブル:T_ とらんざくしょん マスタ:M_ ますた ビュー:V_ びゅー ストアド:P_ PLSQL 主キー:PK_ ぷらいまりきー 索引:IX_ いんでっくす こんな感じのが大半だな。テーブル名が連番なのもあるが それはそれで慣れたら開発の入力がめちゃ速くてラクだ。 論外なのは日本語使ったテーブル名。効率悪いわ気持ち悪いわ・・・
>>646 20億件くらい。これくらいは普通だと思う。
>>647 >カラムインデックスなら、カラム名もつけるのか?
カラムインデックスのとき、カラム名は付けない。
検討したけど冗長と判断した。
テーブルの定義は別途EXCELで資料化してて、
そっちのほうに、インデックスのカラムを書いてる。
そのEXCELには
CREATE TABLE文とCREATE INDEX文を
自動生成させる機能がある。
まあ10年ぐらい前から良くある話。
>>649 えええ。普通じゃないでしょ。
1テーブルで20億行なんだよね?
履歴というコンセプトだと仮定しても
1日に10万行発生で2千日かかるよ。
リレーショナル的に、きちんとクエリに使うるの?
Oracleなら億は普通じゃね? 20億でも異常だとは思えない。
653 :
649 :2009/04/29(水) 01:44:09 ID:???
ちょっと金融系のシステムをやるとそれくらいにはすぐなっちゃうんだな。 パーティション表は必須になるし、統計情報とか実行計画とかにもうるさくなるよ。
654 :
NAME IS NULL :2009/04/29(水) 04:35:42 ID:faefKd13
お前等は素人かよ。 レコード長がどのくらいか解らない状態で、テーブルの件数うんぬんの話をするなっての。 Oracle屋だったら、テーブルサイズで物申せ。
655 :
NAME IS NULL :2009/04/29(水) 04:53:44 ID:faefKd13
巨大なテーブルに関して、統計情報は取らないな。 初期化パラメータなりを調整してインデックスを使用した場合のコストを低くしたり、 ヒント句をつけて実行計画をコントロールするようにしてる。
>>652 >>653 へええ。勉強になった。ありがとう。
>>654 テーブルサイズで議論すると
BLOB次第でどうとでもなってしまうと思った。
BLOBについては俺は、あまり興味が無い。
一応聞くけど、あなたの経験した最大の
テーブルサイズは幾らですか?
俺、1500MB。BLOB列なし。370万行。
657 :
649 :2009/04/29(水) 13:16:54 ID:???
素直にストレージの大きさはどれくらいだったかを聞けばいいのに・・・ 俺の関わったシステムは2TBくらいだったよ。36GBx80本。 レコード長としては大きくない。
思い出したくもないが、ストレージのサイズで言えば1本64GBで総計100TB越え、LOBなしで1テーブル30GBとか普通のDBやってたなあ・・
e-deliveryでzip落とせる? ずっとInternal Server Errorなんだけど。
e-deliveryで Oracle Database 10g Release 2 (10.2.0) JP Media Pack for Microsoft Windows x64 を5/2 21:00〜から落としてるけど、特に問題は無いです。 Internal Server Errorは発生してないです。
661 :
659 :2009/05/03(日) 00:02:42 ID:???
今試したら問題なく落とせた。 サンクス!
662 :
NAME IS NULL :2009/05/03(日) 10:43:01 ID:blqLN5nN
64ビットのLinuxに11gをインストールしました。その後sqlplusを起動しようとすると、 ORA-12162: TNS:net service name is incorrectly specified が出てログインできません。ユーザ名は11gをインストールする際にインストーラを起動した ときのユーザ名です。パスワードも同じ。 Net Configuration Assistantというのを使って設定をしないとだめなのでしょうか? どうかよろしくお願いします。
sqlplus "/ as sysdba" でローカル接続できない? これだとリスナ関係ない
04/29 に EBS の新リリースが出たから ( 12.1.1 ), こぞって落としに来てるんだと思う. 一通り落として 50GB 程度あるし. US 側の E-Delivery でしかまだ公開してなくて, 大体 US の昼前から夕方にかけて の時間帯 ( 東部か西部かとか面倒なこと聞くなよ w ) に激烈に重いのは多分これ. 日本時間の 04/30〜05/02 あたりまでは結構 500 出てた. 04/30 から映画観つつ落とし続けてるけどまだ揃わん ...
665 :
NAME IS NULL :2009/05/03(日) 11:07:32 ID:blqLN5nN
>>663 ありがとうございます。
それでやったのですが、同じようにORA-12162がでてログインできませんでした。
netcaで設定しようとしたのですが、その設定もインストール時に終わっていたようです。
一つ気になるのは、インストールを普段のユーザでやったことです。Oracleという名前の
ユーザも作成してないし。これが問題でしょうか?
ファイルアクセスは? umaskの設定してないとか? Oracleユーザの$HOMEにある.bash_profileに下記内容を追加 umask 022
なにもしてなきゃ、umaskは022だろ。 >ユーザも作成してないし ユーザ名は何でも良いけど、そのユーザに対して、 インストールグループ(ex.oinstall)をプライマリとして、 DBAグループ(ex.dba)をセカンダリとして、 属させないとダメだよ?
Oracle 11g Database インストール 1. ユーザ・グループの作成(例) Oracleインベントリ・グループの作成 # groupadd -g 200 oinstall OSDBAグループの作成 # groupadd -g 201 dba Oracleユーザの作成 # useradd -g oinstall -G dba -u 600 oracle 2. Kernelパラメータの設定下記内容を/etc/sysct.confに記載する。設定反映には再起動が必要。 kernel.sem = 250 32000 100 128 kernel.shmall = 2097152 kernel.shmmax = 1073741824 kernel.shmmni = 4096 fs.file-max = 102429 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144 3. limit.confファイルの修正 Oracleユーザに対してファイルディスクリプタとプロセス数の上限を緩和する。 /etc/security/limits.confに記載する。 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 4. プロファイルの設定 Oracleユーザがログインした場合にファイルディスクリプタとプロセスの上限を指定するよう変更を行う。(limit.confで指定した上限にする。) if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 5. インストールするディレクトリの作成マニュアルに記載してある同一のディレクトリにインストールするためディレクトリを作成する。 # mkdir -p /u01/app/oracle # chown -R oracle:oinstall /u01/app # chmod -R 775 /u01/app 6. umaskの設定 Oracleユーザの$HOMEにある.bash_profileに下記内容を追加 umask 022 7. Oracle Universal Installerを使用したインストール なお、ローカルのX画面上からインストールを前提としている。 1. Oracleユーザでログインし、下記環境変数を指定。 ORACLE_BASE=/u01/app/oracle export ORACLE_BASE
>>665 ORACLE_SID設定してないと出るエラーらしい
$ unset ORACLE_SID
$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.7.0 - Production on Sun May 3 20:42:46 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
670 :
NAME IS NULL :2009/05/03(日) 21:03:19 ID:blqLN5nN
665です。ありがとうございます。 色々いじってるうちになんだか怪しくなってきたので、OSのインストールから再度やり直してみます。 668と669に書いてもらったのは参考にさせてもらいます。ありがとうス。
OSからかよwwww
672 :
NAME IS NULL :2009/05/04(月) 17:49:28 ID:uyHZ9lk2
11gで、文字コードがAL32UTF8なDBにJDBCでアクセスした場合、 Java上の文字列のコードポイントがそのままDBに入る、 すなわちコードポイントの変換は一切行われず、よって文字化けもしないと 考えていいのでしょうか? また、OracleはNFD正規化文字に対応しているのでしょうか? よろしくお願いします。
>>672 unicodeとutf8の変換は発生するが基本的にAL32UTF8が推奨。
推奨って誰の?理由は?
DBのチューニング本っていうとこれだっていうのが あれば教えてください。
676 :
NAME IS NULL :2009/05/04(月) 23:09:26 ID:uyHZ9lk2
677 :
NAME IS NULL :2009/05/05(火) 23:58:26 ID:hdZ976TQ
665です。 OSのインストールからやり直しました。VmwareをインストールしてLinuxをインストールして、 Oracleをインストールしました。でもやっぱりORACLE_SIDが設定されてません。 これはどこで設定し、どういう値になるべきなのでしょうか? Oracleのインストールは668を参考にしてやりました。 よろしくお願いします。
>>677 ORACLE_SIDは普通に環境変数で設定します。
バイナリインストール時にデータベース作成を選んでいたのなら、
そこで指定した値を自分で環境変数に書き込みます。
679 :
NAME IS NULL :2009/05/06(水) 00:28:57 ID:/9mrt7ht
>>677 バイナリインストール時にデータベース作成をしてませんでした。
データベースを作成しなくてはだめですか?
長引きそう LinuxでOracleを動かすためには、 以下の環境変数を正しく設定する必要があります ORACLE_BASE ORACLE_HOME ORACLE_SID ORA_NLS10 NLS_LANG PATH LD_LIBRARY_PATH あなたが今から作りたいデータベースの名前を決めて それをORACLE_SIDに設定してください
>>677 そんなところで躓くようなら、OSのこととか、もっと基礎を勉強してからVMにオラクルとかをやるべき。
どうしてもオラクルに触りたいならまずWindowsからにするとか。
>>680 ORA_NLS10 と NLS_LANG は必須ではないな。
Oracle10G DBサーバーで、OSはUNIX(AIX)。 クライアントはWindowsXP DBサーバー上にある外部実行ファイルを、クライアント側から起動かけたいんですけど 「dbms_schedulerパッケージ」を使用すれば可能でしょうか?
rshとか。 さもなくば、RPCとか。 そういう話ではないん?
>>683 684も似たような方法を言ってるけど、telnetでもsshでも、お好きな方法でどうぞ。
的外れとか言うなら、前提条件をしっかり書くべし!
dbms_schedulerって基本使ったことないけど、そんなに便利なものなん?
>>686 の議論でも、「cronでやれや」って出てこないのが不思議w
他のサーバとの連携とか込み入ってくれば、JP1などを使ったりするだろうし。
>>671 経験無い?何度かあちこち弄ってて、
何がおかしいのかわからなくなってOSからやり直したことあるからな。。
最近はOSからやり直すことは無いが、スナップショットはちょくちょく使う。
仕事だと、環境設定からすべて記録するから、再インストールはありえない。 自宅だと、かまわないけど原因を究明するのがスキルアップにつながるからできるだけ回避。 EBSやらなにやら複合で入れている場合はパッチでバグになってループする可能性あるからなんともいえないが、 OracleDB単体なら再インストールするひつようはないと思う。
すごいね。いきなり Oracle スレ急上昇。 でも学習はいいだろうけど運用はかなり費用がかかるんでしょ? 最近、こういう費用も厳しいんですよね。 なにせ会社で Vista は一台もなしだし。アップするとイモずる式に M$ 関係にライセンス料更新とか発生してしまって。勘弁して欲しい。 なにせ未だ Access 2000 現役だからなぁ。
>>688 やる前にバックアップを採っておくのは当たり前だから、入れ直すとか全く考えない、ありえない。
特に大型機のUnixなんかだと、OSのインストール(HBAとかストレージなんかのミドルも含めて)は、別のSEがやることが多いし。
692 :
NAME IS NULL :2009/05/07(木) 19:41:05 ID:rgwTFvO+
Oracle初心者ですが、質問です。 OracleにはDB2のコントロールセンターのようなデータを手軽に挿入できるツールはあるのでしょうか? データの追加はSQL Plusで地道に挿入するしかないのでしょうか? 教えてください!
ある。
695 :
NAME IS NULL :2009/05/07(木) 21:29:20 ID:rgwTFvO+
SQL*Loader も覚えれば楽だよ。
698 :
NAME IS NULL :2009/05/09(土) 03:01:35 ID:JoxlLn6y
Linux版(64ビット)のオラクルをインストールしたのですが、sqlplusのコマンドを実行すると、 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist が出ます。 プロセスを見るとOracle関連のプロセスが起動してないのですが、Oracleを起動させるには なにかのコマンドが必要なのでしょうか?
SQL> startup
700 :
NAME IS NULL :2009/05/09(土) 09:40:51 ID:JoxlLn6y
dboraというスタートアップスクリプトを書かないと駄目なんでしょうか?
>>698 基礎知識を学んでから出なおしてきてください。
702 :
NAME IS NULL :2009/05/09(土) 15:33:21 ID:2Qq3YQMD
オラクルとSQLサーバーの決定的なちがいは何でしょうか
>>702 オラクルは犬で
マイクロソフトはイルカ
>>702 Windows以外のOSをサポートしているか否か
>>700 だめじゃないです。
OSの起動と同時にインスタンスやリスナーを起動したい。
OSの終了と同時にインスタンスを終了したい。
なら用意する必要があります。
実際のところOS自体を落すことってほとんどないでしょ。
>>706 お前今から放置されるぞ?大丈夫なのか?
矛盾の意味を知ってるかい?
そんな質問は辞書サイトで解決
つまり、ちょっと調べればわかることを聞くなってことだよな。
免許持ってないヤツから「試しに車に乗ってみたんですが」 とか質問されるF1ドライバーを見ている感じだな。
Oracleのトリガー内で、 利用アプリケーションにイベント通知は可能なのでしょうか? アプリケーション側でフラグに該当するテーブルを監視するというやり方でなく、 イベントを通知するというやり方がわかりません。
Advanced Queuing とかは?
Oracle 10gで質問です。 select * from table1 where field1='VALUE' とするとインデックスを参照しますが select * from table1 where field1=SYS_CONTEXT('NAMESPACE','PARAMTER') としたとき、FULLスキャンになります。 この条件をビューの定義に含めたいのですが、 うまくインデックスを使うように書くことはできませんか? よろしくお願いします。
>>715 カラムの中身とオプティマイザ次第だろ。
どうしても索引使いたければヒントで固定。
717 :
NAME IS NULL :2009/05/12(火) 22:22:08 ID:0DEmvHy+
SQLチューニング・アドバイザーの使用例をまとめた資料を作成しているのですが、質問です。 以下の2つのテーブルに対して、なるべく付加の高いSQL文を発行したいです。 どのようSQL文を発行したら良いでしょうか?どなたか教えてください 表A 列a、列b、列c(表Bのa列を参照)、列d B表 列a、列b
719 :
NAME IS NULL :2009/05/12(火) 22:55:31 ID:0DEmvHy+
なるべくデータを多く参照すればよいということですかね?
Oracle11gでエンタープライズマネージャーは入ってません。 Database Configration Managerからデータベース作成時に設定した 初期パラメータの メモリー・サイズ(SGAおよびPGA) の値を確認する方法はありますか? 宜しくお願いします。
>>720 お前みたいなヤツはアラート見ろ。
起動時のログに書いてあるから。
あとはちゃんと自分で調べてくれ。
教えて下さい。 Oracle10g使用 SELECT COUNT(*), (SELECT COUNT(*) FROM tbl_A), (SELECT COUNT(*) FROM tbl_B) FROM ( SELECT * FROM tbl_A UNION SELECT * FROM tbl_B ) TMP; これを実行すると、2行目の「(SELECT COUNT(*) FROM tbl_A),」の「count(*)」でORA-00937: not a single-group group functionが出ます。 SQL Serverだと問題なく通るSQLなのですが、なんでOracleは怒られるんですか?
集計関数の列で指定できる属性に制約あり 以上
725 :
723 :2009/05/14(木) 13:01:33 ID:???
>>724 回答ありがとうございます。
どこか参考になるURL有りませんか?
ぐぐっても見つけられなくて。。。
ついでにふと思った。 Oracleで、「なーんも考えずに、ぽちっと表を結合する」みたいなほうほうってある? 表A 表B abc 123 def 456 ghi 789 ほしい結果 表A+B abc123 def456 ghi789 ↑は30分ぐらい考えたけど、Oracleでやる方法が思いつかん。 表の構造変えていいならupdate tab_name set 番号振り用列 = rownumで番号振って rownumで結合して、select 文で表示させるぐらいしか思いつかん。
>>726 ||で結果を結合したり・・
てかもうこの、くだらない一問一答嫌なんだが。
みんなしっかりマニュアル&ネットやらでしっかり調べてから聞いてくれ。
729 :
723 :2009/05/15(金) 10:23:58 ID:???
>>728 じゃあ、ここの住人は、まともではないってことで
聞いてくる方にアホゥが多すぎるんだよ・・・
731 :
NAME IS NULL :2009/05/15(金) 20:56:17 ID:shRi2iqv
会社でT5120+Oracle11gでDBサーバがあるんだけど、自分が使っているデバッグ用PC(MG13D)に入れたよりOracle11gの環境よりおそいんだけどなんでだろう(^^;)
Instant Client のスレってありますか? 使い物になるのか知りたいので。
専用スレはないな。 べつに、ふつうに使えるぞ。
つーか、 rownumで結合なんて、データベースの設計として間違ってるべ? 違う? と言ってみるテスト
ところが素人さんに任せるととんでもないこと言い出すんだな。 入れた順に〜とか、キー値と大体合致してる〜とか。
736 :
NAME IS NULL :2009/05/16(土) 01:23:56 ID:U6sR389j
>>731 MG13Dを使用していて、且つT5120を使っているっていうことは
F社関係者?
T5120 はOracleRDBMSサーバ製品を稼動させるのには向いていない。
WebサーバやWebアプリケーションサーバの様に小さいスレッドが
多数動作する環境向きといわれている。
そんな、なんちゃって君にはRDBを扱う前に基本情報から勉強してこいと送り出してやりなさい。
738 :
NAME IS NULL :2009/05/16(土) 10:19:47 ID:55/kVsz3
>>736 普段はLenovo T60とサーバはML115を使ってますけどねw
デバッグはあり合わせのものなんで・・・。
UltraSPARCってDB向けだってインフラ部隊とかDB設計部隊聞いてるけど?
DBでそんなにでっかいスレッド動かないし、要求が多いから複数スレッド動くし・・・。
事実T5440(SEVPHSF1Z)だと爆速なんですけどね。
HP DL580 G5(487363-291)より早いですし・・・。
ってかDBだけど使用目的はWebアプリケーションサーバなんですけどね(^^;)
Solarisよくわからんから今回は自分でサーバみてないんだよね。
>>738 真性の馬鹿だな。
無能DB設計部隊共々勉強しなおしてこい。
Fの技術者は異様にレベル低いからな。しょうがない。 どうせ設定もわからず適当にインストールして遅いだの速いだの言ってるんだろう。
741 :
NAME IS NULL :2009/05/16(土) 12:05:12 ID:55/kVsz3
>>739 まぁクライアントやってるから俺はDB勉強しなくていいんだけどねw
もともと、組み込みのC技術者だしw
DB部隊は俺の5倍以上給料もらってるから勉強してもらいたいものだが・・・。
ってか、DBには問題ないとおもうけどね。
CPU使用率はみてるけどそんなにDBで処理くってるわけやないし。
ってかほとんどくってないw
>>740 うちのインフラ部隊はF社並に無能っぽいw
F社に関わりないからよくわからんけど・・・。
>>741 DB設計がちゃんとできてないとIOにばかりコストがかかって
CPUなんかろくろく使われないことを知ってるか?
愚痴こぼす前に、もっと勉強しろ
まあ、初代Niagaraは1コアの性能が低いからね(UltraSPARCIIレベルと言われてる)。 といっても、AP-DB間のコネクションを増やしてやる(当然、AP側でも考慮してやる必要があるが)とかすれば、トータルの性能を上げることは出来るだろう。
FMV-BIBLO MG13Dって、2003年発売のモバイルノート。 Pentium M 1.30GHz。メモリ最大1GB。 このスペックで、Oracle 11gをインストールして快適なわけが無い。 ・・・まあそれは重要じゃないから、いいや。 T5120が遅いのは・・・例えば2GB以上のファイルがあるからかも? ------------------------------------------------------------ Solaris 2.6 から -largefile option を使用することにより UFS, NFS, CacheFS 上で 2GB 以上の file を扱うことが可能です。 ------------------------------------------------------------ というような表記を見かけるが、 Solarisでは2GB未満と、2GB以上とで利用するライブラリが変わるようだ。 ぶっちゃけ2GBを超えた瞬間に、急激に性能が低下することがある。 (性能が低下するのは、RAIDコントローラのドライバのせいだったりする) 幾つかの容量のファイルを、FTPでやり取りして FILE I/Oの性能を比較してみては。
746 :
745 :2009/05/16(土) 15:32:11 ID:???
ごめん。FILE I/Oの性能は、cpで見るのが適切だ。
今回もプラチナクラブのDSI抽選漏れしちまったぜ。 あれ、当たった話聞いたことないが、当たったことある人いる?
IndexってViewにも付与できますか? お客さんとこの環境で今試せないので 分かる方教えて下さい。 Windows 2000 Server Oracle 8.1.7
ふつうのVIEWにはつけられない VIEWが参照しているTABLEにはつけられる MATERIALIZED VIEWならつけられる
750 :
NAME IS NULL :2009/05/25(月) 22:17:13 ID:guErIChI
Oracle10gで私の知識レベルを超えた事象が起こったので質問させていただきます。
テーブル中に、VARCHAR2(120)、VARCHAR2(180)のフィールドがそれぞれ存在する状態で(他にもあります)
SQLLDRを用いてCSVファイルを取り込ませています。
長さ120のフィールドには全角60文字のCSV値をセットし、
長さ180のフィールドには全角90文字のCSV値をSQLLDRでセットすると
180バイトのフィールドだけが、「フィールドの最大長を超えている」と言われてエラーになります。
これを「全角85文字」まで削ると、何故か正常終了できるようになります。
CSV文字列はどちらも「名前00112345{以後規定文字数まで 12345 を繰り返す}1234*」
としています。(120のフィールドには全角60文字分、180の方は全角90文字分)
また、ググっているうちに文字コードによって全角3バイトの場合があると知ったので、
(今まで全角は必ず2バイトで格納されると思い込んでいました)
http://www.shift-the-oracle.com/config/multibyte-characterset.html 調べてみると、
私の環境の文字コードは、DBキャラセットは JA16SJIS
各国語キャラセットは AL16UTF16
となっているようで、全角が3バイトになる理由も無いように思えます。
何故、180バイトのフィールドだけがエラーになるのかの理由と、
回避する方法がお分かりでしたら教えていただけますでしょうか。
本当に90文字なのかな 目に見えない文字が入ってたりして
ためしにカラムを大きめにして入ったデータ見てみたら
>>749 テーブルにつけてたら有効なんですね
サンクス
>>750 SQL*Loader-350エラーは必ずしもフィールド長に起因するものではない。
どちらかというとORA-600に近いものと理解した方がいい。
ロードするデータやコントロールファイルにエラーがあると、SQL*Loader-350
エラーとしてハンドリングされてしまう事がある。
よって、データ及びコントロールファイルをもう一度良くチェックすべし。
>>755 文字を削っていったら成功したっていう事象を無視した発言じゃね?
>>756 たとえばデータの最後にクオーテーションやダブルコーテンションがなければ
ならないのに、それが抜けていたらSQL*Loader-350が返ってきたりする。
文字列を削っていけば、その抜けていたデータがロードされなくて通ったりとかも
考えられるだろ?
758 :
750 :2009/05/26(火) 22:32:00 ID:???
>>751-757 の皆様
色々とご回答ありがとうございます。
私は別件が忙しくなって、本日は本件を全く見れていなかったのですが、
皆様のお話から判断すると、
・全角が3バイト以上となることは、今回のケースでは考えられない
・他の問題(
>>755 のデータおよびコントロールファイル)を疑うべし
ということのようですね。
最初はある特定のケースで文字のバイト数が増えるのか? と混乱していたのですが、
皆様の回答からそれは無い、ということが自信が持てたので、あとは違った角度から問題解決の糸口を探っていこうと思います。
どうもありがとうございました。
DBはoracle8iです SYSTEMスキーマにてスキーマAのテーブルBをマスタにしているスナップショットが調べたいのですが dba_registered_snapshotsのownerはスナップショットの持ち主を指すんでうまく検索できません・・・ ようはマスター側のテーブルのownerとtable_nameでレプリ先のスナップショットを検索できるSQLが書きたいです 教えてくれれば幸いです
760 :
NAME IS NULL :2009/05/28(木) 23:25:59 ID:5nEvd4/b
初心者で質問なのですが、 スーパー管理者、リポジトリ管理者というのは、具体的に何が出来るユーザー(管理者)なのでしょうか? どなたか教えてください?
Oracle8iでViewを作成する際、フィールドの型を変更することってできます? 元Table → View NUMBER(10,3) → VARCHAR(15) DATE → VARCHAR(10)
スーパーなことができる管理者 リポジトリなことができる管理者
>>760 エスパーではないが、多分OEM(10g Grid Control)の事言っているのかいな?
Super Administrator権限は文字通りOEMコンソール上において最上級の権限を持つ。
OEM用に他ユーザーを作ったり、新規のRuleを作成したり何でもできる。
Repository AdministratorはSYSMANの事を指すと思われ。
SYSMANもSuper Adminsitartor権限を持っているが、DB上においてリポジトリに関連する
DBオブジェクトは全てこのユーザーの配下に作成されている。
OEMに関連するパッチやアップグレードを行う場合、SYSMANのパスワード入力を求め
られるのはこのため。
シーケンスを使って1ずつ増えるプライマリキーを持つテーブルがあるのですが、 このテーブルからプライマリキーが最大の行を取得するにはどう書けばいいですか?(1文で)
currvalとかrownumとか副問い合わせとか
766 :
NAME IS NULL :2009/05/30(土) 03:14:54 ID:OxBqVtla
全てフリーでWindowsXPにOracle+ODBCをインストールしたいと思っています。 とりあえず「OracleXEUniv.exe」ってのを落としてきてインストールしました。 次にODBCですが、どうやらOracle Universal Installerなるものが必要なのですが、 これはフリーで手に入るのでしょうか?可能なら入手方法を教えてください。
ODBCドライバなら、はじめからWindowsに入ってるよ。 Oracle純正もあるけど。
768 :
NAME IS NULL :2009/05/31(日) 19:11:41 ID:6AEhynkf
create database 時に tempfile のデータファイルを複数指定するには どのように記述すればいいでしょうか? 1つの表領域に対して複数のデータファイルを指定したいのですが・・・ WindowsServer2003のOracle11gです。
作ってから追加すれば。
770 :
NAME IS NULL :2009/05/31(日) 23:09:16 ID:8PhEh/zy
SYS SYSMAN SYSTEM DBSNMP の各ユーザーの読み方って何て読むんですか? SYSは、シスユーザーとかですか?
>>770 自分考えろや。
ホント、大ゆとり時代だな。
772 :
NAME IS NULL :2009/06/01(月) 20:34:39 ID:tfA2VkzE
俺は、 SYS⇒シス、SYSMAN⇒シスマン、SYSTEM⇒システム、DBSNMP⇒ディービーエスエヌエムピー って読んでるが、他にも同じ人いる?
まぁ同じだな
SYSDBA シスデービーエー SYSOPER シスオパー Ping ピング GUEST グエスト nobody ノウボディ
ごめん、つっこませい Nobody は ボぢゃなくて ノォーブァディ ってマジは現金か
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
>>774 ( \ / _ノ | |
.\ “ /__| |
\ /___ /
ドラゴンケスト
>>767 教えてくださってありがとうございます。
やっと規制解除された。。
780 :
NAME IS NULL :2009/06/02(火) 22:04:34 ID:VnED08o2
学生で周りに聞ける方が居ないので教えて頂たいのですが、 Database Controlの「パフォーマンス」タブの「平均アクティブ・セッション」 における(時系列に表示されている)グラフが意図するものは何なのですか? セッションの内訳を表示しているというのは何となく分かるのですが。 縦軸の意味もよく分かりませ。(横軸は分かりますが...) 分かりにくい質問ですみません。 友達に色々質問されて、上手く説明できなく困ってます。
781 :
NAME IS NULL :2009/06/02(火) 23:18:38 ID:HF9ihThy
SQL*PLUSからは実行できるSQL文がJDBC経由で実行すると 内部エラーが発生します。 長いSQL文が原因かどうかわかりませんが SQL文を短くすると内部エラーがでません。 なにかアドバイスが頂きたいです。 ODBC経由では実行できてJDBC経由では実行できない 経験があるかたいらっしゃいましたら教えてください。 以上です。
>>780 マニュアル嫁
DatabaseControlならその場でHelpも開けるから、それ見ろ。
>>781 JDBCだと上手くいかないとか、ADO.NETだと上手くいかないとか、
そういうのは経験したことある。
バインド変数の暗黙変換周りとかがクサイ。
内部エラー、というだけで、結構ヘコむよな。 とりあえず、最新のパッチセットリリースを適用して再現するか確認。
Oracle Textに関して質問です。 TableA KEY NUMBER(10,0) PRIMARY KEY, DATA1 VARCHAR2(20), ... TableB KEY NUMBER(10,0) PRIMARY KEY, A_KEY NUMBER(10,0), TEXT VARCHAR2(2000) このようなテーブルがあり、TableBのTEXTに対して全文検索用のINDEXを作成しています。 create index idx on TableB(TEXT) indextype is ctxsys.context parameters('lexer JAPANESE_LEXER') そして以下のような文を実行した時で、'hoge'を含むレコードが100万件など多量にあった場合に、 応答まで数秒掛かってしまいます。 select TableA.* from TableA, TableB where TableA.KEY = TableB.A_KEY and contains(TableB.TEXT, 'hoge')>0 TableBのみで同様の全文検索を行った場合は即時応答があるため、 テーブル結合に時間が掛かっていると思うのですが、これを高速化する方法は無いでしょうか? TableAにダミーフィールドを作成してそこに全文検索用のINDEXを作成する方法や、 マテビューを使用するなどの、結合自体を行わない方法以外が望ましいです Oracle10gを使用しています。宜しくお願いします。
俺だったら第2案、第3案として次を試します。 Oracle7育ちなので実行計画を比較して選びます。 でも、10gだと結局全部が同じ実行計画になるかも。 2案: select * from TableA where KEY IN ( SELECT A_KEY FROM TableB where contains(TableB.TEXT, 'hoge')>0 ); 3案: select TableA.* from TableA, ( SELECT A_KEY FROM TableB where contains(TableB.TEXT, 'hoge')>0 ) TableB where TableA.KEY = TableB.A_KEY; あとは処理を2ステップにして、1ステップ目で5000件以上のときは ユーザに通知して2ステップ目(目的の処理)に進まないとか・・・
786 :
784 :2009/06/08(月) 12:05:16 ID:???
>>785 どちらも試してみましたが、やはり遅いままでした。
別の手法も視野にいれつつ再検討したいと思います。
ありがとうございました。
>>785 ナカーマ(゚∀゚)人(゚∀゚)
オイラもOracle 7育ちだよ。
とは言ってもデータベース管理T受けさせられただけで、スナップショット
使いまくりの分散DBが最初の担当だったけどさ・・・('A`)
叩き上げで、そのあと欧州に渡り、今はアメリカ東部戦線で戦っているw
ORACLE XEについて質問です。 WINDOWS&C言語&XE(&PRO*C)のフリーセットでアプリケーションを 作って勉強したいと思っています。CとXEはそれぞれ無事動作したの ですが、PRO*Cが見つからず連携できません。何か良い方法もしくは 参考になりそうなURLご存知の方はいらっしゃいますでしょうか? ググッてもみたのですが参考になる情報は見つけられませんでした。 どうぞ宜しくお願い致します。。。
Pro*Cは、既に廃れつつあるテクノロジだと思っていますけど、 スレ住民の見解は、どうなんですかね。 私自身は、ストアドプログラムを書くのに際し、 PL/SQLで機能不足を感じた事は無いです。
Pro*CもPL/SQLももう使わんな。
だが、まだ使われているんだよな。 頑なに、Solaris+Oracleを使い続けているような所は、特に。
>788
いやいや流石に Pro*C/C++ まではタダ配りしてないってw
>>789 C (C++ でなく) で開発するなら他に選択の余地もないでしょ。
C++ や C++/CLI ならまだしも。
>>791 頑なって、他に選択の余地もないでしょ。
Oracle XEにはPro*C入ってないよ これ豆知識
今から覚えるんなら素直にociにすれば? Pro*Cみたいなプリプロセッサはハマったときのデバッグが大変だし。
はげど。 あんなオナニー技術
皆様情報ありがとうございます。
PL/SQLなら色々サンプルもありそうですね。
できればPro*Cで作りたかったのですが、
>>794 さんのおっしゃるとおりでした。
確かにあまり選択の余地はなさそうです。
ociも調べてみました。これもオラクルなの
ですね。XE中にもDLLとかありましたので何
とかなりそう?ありがとうございます。
>>795 さん
PL/SQL、ociあたりから攻めてみます。
情報提供していただいた皆様本当にありがとう
ございます。
若干制約があるけど、ODBCの方が他のDBにも応用できるし、 VBやVBA、VBSなどでも同じ使い方が出来るし、最初にやるのはこっちの方がいいんじゃね?
じゃあ、JDBCやOLEもダメかw
Oracle 10gを利用したアプリケーションの分析をしています。 仕様書が無いため、非常にわかりにくいアプリケーションなのですが、 基本的にDBアクセスのアプリケーションです。 分析するためにアプリケーションが発行したSQLの履歴を確認したいのですが、 確認方法はあるのでしょうか? なにか、ヒントになるようなサイトや言葉があれば教えて頂きたいです。
audit を仕掛けるとか。
>>801 v$sqlとかv$sqlareaを定期的に採取したら?
EnterpriseManagerでも負荷の高いSQLは採取できたと思うけど。
>>803 この場合は負荷の高いものを知りたいのではないでしょ。
ファイングレイン監査(FGA監査)は、 Enterprise Editionだけの対応らしい。 11gのTotal Recallも、 Enterprise Editionだけの対応らしい。 面白くねえ。
807 :
NAME IS NULL :2009/06/19(金) 07:05:23 ID:2pJAXRqp
808 :
NAME IS NULL :2009/06/19(金) 10:22:05 ID:Rgb/cdY+
すいません。手も足も出ないので質問させてください。 Oracle8iでDBを別に建てようとしたところ ORA-01034: ORACLE not available のエラーでデータベースが作成できません。 状況は OS:windows2000server Oracleは、8.1.5 で Cドライブはシステムのみ。 DドライブにOracle本体。 Eドライブには、別システムのOracleDBが作成されています。 新たに、FドライブにDBを作成しようと「Databese Configuration Assistant」で 初期化ファイル、制御ファイル等作成時表示されるドライブを全てFドライブ指定に変えて 作成しようとしたところ ORA-01034: ORACLE not available がログに出力され、作成できません。 一からの作り直しをしたり、色々試したのですが、正直解りませんでした… Oracle本体からの再インストールをすれば良いのかもしれませんが 別システムが既に稼動している為、それもできません。 正直、この状況は初めてで、困り果てています。 なにか、ヒントでも良いのでアドバイスをください。よろしくお願いします。
ORACLE_SID じゃないのかな。
810 :
NAME IS NULL :2009/06/19(金) 13:21:01 ID:Rgb/cdY+
>>809 一応、DB名は6文字。SIDは4文字で作成しています。
listener.ora,tnsname.ora,sqlnet.oraはバックアップを取ってあり、
やり直す場合
・Database Configration Asistantでインスタンスを削除する。
・D,F各ドライブの\oracle\oradata\対象ディレクトリの削除する。
・D:\oracle\network\admin下のlistener.ora,tnsname.ora,sqlnet.oraをバックアップから復元する。
を行なっています。
後、Oracle8iのバージョンは8.1.7でした…
>>808 リモートデスクトップ接続で作業してる?
8.1.7は、リモートデスクトップ接続
(ターミナルサービスクライアント利用など)
では、CREATE DATABASEできないよ。
Database Configuration Assistantを使ってもダメ。
不具合だけど直さない、とかいう話だったかな。
サーバのある場所まで行って、
サーバに直接ログオン(ローカルログオン)して
作業すると大丈夫。
そこまで行けない場合、ウラワザとしては、
Database Configuration Assistantなどで
スクリプトを作っておき、そのスクリプトを、
ATコマンドで、Windowsからログオフしている時間帯に
呼び出すように仕込めば作れたような気がする。
RDTのコンソールセッションならいける。
813 :
808 :2009/06/20(土) 01:11:57 ID:???
色々アドバイスありがとうございました。 原因が判明しました… よりによって、使用する予定のポート番号が重複していたことが 原因でした… 1523ポート使用と言っていたのに、別システムが先に無断で使用していました。 未使用の1522ポート指定でうまく作成されました。 お騒がせして申し訳ありません。 …PGのポート指定直さなきゃ…orz
質問失礼します。 携帯で失礼。 環境 DBサーバ win2003R NAS win strage server2003 oracle10g DBサーバからdbConsoleでNASにダンプを落としたいのですが、 書き込み権限のエラーが出ます。 DBサーバからNASへのwin上でのファイル作成・書き込みは出来ています。 後、ORACLEのホスト権限(?)にはアドミンのIDとPWを設定し、 ディレクトリに落としたいNASのフォルダを設定しています。 他に必要な設定はなんでしょうか? ORACLEではなくwin側でしょうか? 足りない情報ございましたら逐一書き込みます。 よろしくお願いします。
ネットワークドライブをマウントすりゃいいんじゃね?
っていうか、Windows版Oracleの問題でもあるだろ、これ。 サービスをシステムアカウントで作ってしまうようになっているのが、おかしい。
俺が無知なんだろうけど、 dbConsoleでダンプを落とす、って何? ダンプと言うとexpか、expdpの事しか 思いつかないんだよね。 Enterprise Manager(EM)をよく知らないから 駄目なんだろうかね?
単純にOEM(DBconsole)を使ってDataPump使うってだけだと読み取った。 ASMとかリソースマネージャとか使うと、OEMがないと不便を感じる。
>>814 データパンプ用のディレクトリをDB上に作る時にUNCで指定していないからじゃね?
821 :
814 :2009/06/25(木) 15:09:47 ID:???
遅レス済みません。 ご解答頂いた皆様、有難うございます。 結果だけ言うと分かりませんでした・・ 私が派遣一辺倒で、プログラム一本環境無知なもので。。。 winのタスクでPLを起動し、ファイル転送のバッチを動かす事で解決致しました。
822 :
NAME IS NULL :2009/06/29(月) 15:10:44 ID:OhsehFKL
例えば、9→10g へバージョンアップ 移行のヒヤリングを教えて 何を聞けばいいのかすらわかんない
・O/S ・DBのバージョン ・テスト環境の構築 ・テスト環境におけるアプリケーションのテスト期間 ・アップグレードにおけるアプリケーションへの影響 ・アップグレードによるSQLのパフォーマンス問題の対応方法 ・バックアップ手順 ・移行に際して、DB止められる時間 ・移行手順の確認 (DBUA? マニュアルアップグレード?) ・移行失敗におけるリスク ・移行失敗時におけるバックアッププラン
教えてください。 OSもDBのバージョンも一緒のホストAからホストBにデータを移したいと考えています。 ホストAで exp system/password full=y でエクスポートしたデータをホストBに移す場合 ホストB側ではどんな器を作っておけばよいのでしょうか。 同名DBを作成する。 同じユーザーを作成する? ←このへん 表領域ファイルを作成する? ←このへん 〜をする? ←このへん で imp system/password full=y を実行する。
>>825 バージョンが同じ場合は、物理的に移行する(データファイルその他のコピー)方が簡単。
827 :
825 :2009/07/01(水) 07:44:55 ID:???
>>826 ありがとうございまず。
exp/inpでの移行方も会得しておきたいと思っていますのでexp/impでの方法をご教授頂けたらありがたいです。
よろしくお願いいたします。
>>828 マジで
>>827 が読めないつってんの?どう読んでも
「他の遣り方なんざ訊いてねえよ。」
の婉曲な表現だろうに。
>>825 やってみりゃすぐ解るレベルなのに…
impの時にfull=yなんて、俺はあまり使わないな。 1)DBを作成 2)表領域を作成 3)ユーザーを作成。権限を付与 4)imp system/password fromuser=hoge touser=hoge 5)3と4をユーザの数だけ繰り返す。やり直したいならdrop user hoge cascade 6)utlrp.sqlなどでinvalidなオブジェクトをコンパイルする 7)select owner, object_type, count(*) from dba_objects group by owner, object_typeなどでAとBを比較。 上記の手順をマスターしておくべき。 impでfull=yをどうしてもやりたいなら、 (個々のユーザーのパスワードが分からん、とか) タイミングとしては2の前か、3の前だな。 3の前だと、impでfull=yでは2の処理を含むから、 表領域の作成が重複してしまいエラーが出るけど、 それは想定の範囲ってやつで問題なし。
831 :
828 :2009/07/01(水) 22:13:16 ID:???
>>829 「移行方」って何?
お前の母国だろうと思われる韓国では通じるかもしれないが、ここは日本だからな。
ちなみに exp/imp はもう古い。expdp/impdp を使え。
832 :
825 :2009/07/02(木) 08:36:08 ID:???
>>830 ありがとうございました。
試してみます。
>>831 expdp/impdpのバグの多さ、ヒドくない?
シロートは、自ら進んで地雷踏め
っていうスパルタ教育主義?
>>834 普通に使っているけどね。
やっぱ早いし。
>>833 園児?
やはりあちらの国の言うことはさっぱりわからんな。
837 :
825 :2009/07/03(金) 09:02:49 ID:???
マニュアルを読めばわかるようなそんな基礎的なことも理解できないほうが哀れだが。
どっちもどっちだなw
そうね、Oracleなんて必要ない だってわたしたち、
おもちゃ屋なんだもん
>>842 おもちゃは結構アイテム数あるぞ いまいちだったな
> exp/inpでの移行方も会得 ぷっ(笑)
845 :
NAME IS NULL :2009/07/05(日) 00:16:13 ID:Ae/ZxFeb
困り果ててます。。。 現象:[Oracle Database 10g Express Edition]というツールで作成したテーブルをみれない(ORA-00942) 詳細: 上記フリーバージョンにはWebページから表を作ったりする機能があるのですが、 これで作成したテーブルをみることができません。 1.「conn testadmin/testadmin;」でtestadminユーザで接続 2.「select owner,table_name from all_tables where table_name='TblFoo';」でオーナーをみる OWNER │ TABLE_NAME ─────┼────── testadmin │ TblFoo 3.オーナーなのでselectしてみる。「select * from TblFoo;」 ORA-00942:表またはビューが存在しません。 ????????????? ? なぜでしょうか ? ????????????? すみませんが、どなたか、本当にすみませんが教えてください。。お願いします。。
>>845 select table_name from user_tables;
にTblFooはありますか?
select * from testadmin.TblFoo;
では結果が変わりますか?
>>845 ""をつけると大文字小文字が区別される。つけないと全部大文字とみなされる。
書いてあるSQL・結果がそのとおりなら
(多分、testadminはTESTADMINだと思うが)、
create table "TblFoo" ... として作っている。
その場合、select * from "TblFoo"; としないといけない。
>>846 さん
>>847 さん、ご回答ありがとうございます。
>>847 さんのおっしゃるとおりでした!
ダブルクォーテーションつけたら選択できました!
どうもありがとうございます。すごいです。本当に感動しました。
ダブルクォーテーションで大小文字の区別をするようになったには いつのバージョンからだったのでしょう。うむむ覚えていない。
>>850 少なくとも7のときには""で大文字小文字を区別していた。
あと、""でくくると使用できる記号が増え、
空白や+-/*()等も使用できるようになる。
詳しくは「SQL言語リファレンス」の
「スキーマ・オブジェクトのネーミング規則」を参照。
桐スレが炎上している件
ORACLEと桐が無関係な件
Oracle8.1.5がインストールしてあるマシンに別のマシンから接続するにはOracle Clientのいくつのバージョンを入れればいいのでしょうか? Instant Clientが対応していれば良いのですが、対応表では8.1.7としか書いていないため迷っています。
今時8iなんてサポート外なんだから、9i clientでもなんでも入れておけばいいんじゃない?
>>855 別のバージョンのClientでは動作するか心配だったのですが、動くのでしょうか?
また、公式サイトを見てみたのですがバージョンが10からしか置いてありませんでした。
>>856 そんなに心配なら8.1.5のクライアント入れれば?
大抵前後2世代分くらいなら接続出来るよ。
まぁいずれにしてもサポート対象外だから、
何か不具合あっても泣かないでね。
>>857 了解です。
8.1.5のインストールディスクを紛失してしまっている状態のため、公式からダウンロードができる10.1.0.4をインストールしてみます。
レスありがとうございました。
>>858 あとでもいいから 10g の開発ライセンス買うようにな。
>>858 ライセンスなしは茨の道だぜ。
あとクライアントの対照表がどっかにあったと思うがちゃんと調べて使ったほうが吉だぞ。
しかし8.1.5ってのは古いね。 8.1.5は回避不能な不具合多数のため、 8.1.6か8.1.7に更新しましょう、というか 8.1.7にしてください、ぜひおながいします。 というORACLE社のアナウンスがあった記憶がある。 7〜8年前(2001年〜2002年ぐらい)。
oracleがどれだけメモリ使っているか知る方法を教えてください。 特に高負荷でもないに、メモリがなくなります(memfreeがすくない)。 topでみてもorcale以外メモリを沢山使っているプロセスはないんですが。
何を言ってるのかよくわからんが もしLinuxならmemfreeが少ないのは普通。
vmstat のfreeです。 swapout(so)も発生してますので、間違いなくメモリ不足になっていると思います。
メモリ買え
freeだけじゃなくてcacheも見てるか。
cacheはほとんど変わってないど、そのかわりbuffは激減。
>>865 Linuxは、メモリに余裕がある場合でも、
使われていないページをswapに追い出して
キャッシュ用のスペースを作ろうとするので、
少量のsoは常に発生しうる。
つーかtop見たなら、RSSやったかRESやったか言うのが
使用メモリ量だから、それ見れ。
>>858 10gクライアントはデフォルトでは8iには繋がらないようになっていたはず。
パッチ充てればいいけど。
面倒だから9iクライアント入れておけ。
>>863 Oracleのバージョン何よ?
自動メモリ管理が使われているのなら、10g以降ならSGA_TARGETとPGA_AGGREGATION_TARGETを
足した値がMaxだろうし、11gならMEMORY_TARGETの値がそれになる。
いずれにせよO/Sによってメモリの管理は違う。
Linux、AIX => shared magicだからメモリが空いていたらファイルキャッシュとかにありったけ割り当てようとする。
HP-UX => Ondemand magicだから、プロセスが必要とした時にメモリを割り当てる。ただしO/Sコールによる。
Solarisはほとんど触ったことないが、確かOndemand magicだったけか?
873 :
872 :2009/07/08(水) 09:44:20 ID:???
最後の行は870さんがいうパッチとは、の間違いでした。 ごめんなさい。
>>872 あとでDB買うからとかじゃなくて、クライアントインストールした時点でそのライセンスは購入な。
>>854 =856=858=872
Server Version 8.1.5に対するClientは、8.1.7〜7.3.4
Server Version 8.1.7に対するClientは、10.2.0〜7.3.4
8.1.7は、さすが優秀ですね。
もうサポートされないから全部過去形ですけど。
実は8.1.5 Clientの代替としては、8.0.6あたりが
悪くないのでは。持っていれば、ですが。
あと8.1.5→8.1.7はパッチじゃなくて、10.1.0と10.2.0の関係に近いです。
870が言っているのは、おそらく、あなたには無関係。
876 :
NAME IS NULL :2009/07/14(火) 06:06:45 ID:CXaxA+Js
細かい話ですが質問させてください。 旧サーバのOracle 9i から新サーバのOracle 10g にDBリンクを張って、 9i上のテーブル更新を10gに反映させようとしています。 マニュアルには「DBリンクを共有することによって、異なるセッション間でも セットワーク接続が共有される」とあるのですが、 共有されるネットワーク接続とは具体的に何を指しているのでしょうか? 共有リンクにするメリット・デメリットはそれ以外にもあるのでしょうか?
>>876 ttp://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19224-02/ds_concepts.htm 共有リンクは、通常のデータベース・リンクと次の点で異なります。
・データベース・リンクを介して同じスキーマ・オブジェクトにアクセスする
異なるユーザーの間で、ネットワーク接続を共有できます。
・ユーザーが特定のサーバー・プロセスからリモート・サーバーに接続を
確立するときに、そのプロセスからリモート・サーバーに対してすでに
確立されている接続を再利用できます。
接続を再利用するには、その接続が同じサーバー・プロセスから
同じデータベース・リンクを使用して確立されている必要があります。
セッションは異なっていてもかまいません。
非共有のデータベース・リンクでは、複数のセッション間で接続が
共有されることはありません。
・共有サーバー構成で共有データベース・リンクを使用すると、
ネットワーク接続はローカル・サーバーの共有サーバー・プロセスの
外部で直接に確立されます。ローカル共有サーバーでの非共有の
データベース・リンクでは、この接続はローカル・ディスパッチャを
介して確立されるため、ローカル・ディスパッチャのための
コンテキスト・スイッチングが発生し、データがディスパッチャを
経由することになります。
共有されるネットワーク接続 俺なりの見解ですが、データベースリンク作成時に利用した ID、パスワードを用いるCONNECTが共有されると理解してます。 多数の利用者(100人とか)がデータベースリンクを利用する場合、 非共有データベースリンクでは、 データベースリンク作成時に設定したID、パスワードを用いて、 SQLを実行する度にリモートデータベースにCONNECT していたので、メモリリソースの無駄遣い、CPU時間の無駄遣い と考えたのだろうと理解しています。
たいした顧客情報量でもないのにオラクル使ってる中小企業の社長さんは無知なの?
>>879 世の中は二者択一。自分で作るか作ってもらうか。
作れないなら高くても依頼するしかないだろう。
DBの種類もまかせるしか無いだろう。
>>879 逆に誰もが知ってる大企業の取締役が
Excelでヒイヒイ言いながら損益の資料を作ったりしています。
損益に数千万円の誤差が出た、なんて逸話があります。
その逸話の企業は、Excelで損益計算するのをやめたそうです。
>>879 みんなが知ってるN○○と無名の小企業
どっちにシステム作ってもらっても似たり寄ったりなのに
どちらが選ばれるかは自明だろ?
そういうことだよ
いくらエクセルでも誤差は無いでしょ。 誤入力ならともかく
二進化浮動小数点と十進化浮動小数点の違いという話じゃない?
わかります、ホスト言語で2進化浮動小数点型を使って台無しにするわけですね。
OracleをでっかいExcelだと思ってる中小企業の社長がいましたよ。 式はどこにいれるの?どうやったら印刷できるの? とリアルで聞かれたことがある。そなもん売りつけるなよ。
確かにExcelで顧客情報や会計を管理してる企業は多いな。 検索とかめんどくさそうだしLAN内のPC全部にExcel入れてExcelの共有ファイル開くとか効率悪そうな事してる。 仕事情報誌で「要エクセル」とか書いてある企業はたいていそんな企業。 データベース一式売り込む絶好のカモ。
>>879 どうせMySQLとか知らないだろうしOracleでいいんだよ
エクセルがDBより優れてる点は個々人で簡単確実にバックアップが取れる点。 素人がDB管理して、ある日DBが壊れました、バックアップがしっかり できてなくて復旧できませんでした、なんて言われたらたまらない。
SIer中小企業相手にがOracle売って儲けになるんかね。 MySQLとかPostgresで安価に構築し(てるように見せかけ)て、 システム構築してやったほうが営業上お得じゃね? Oracle 100万円 + システム開発費用 100万円=200万円の原価より、 MySQL 0円 + システム開発費用 100万円=100万円の原価で営業かけたほうが、 客目線では安いし、どうせ違いなんて中小規模じゃ大差ないんだし。
Oracleが使える人間は金出しゃ買ってこれるが、MySQLだとそういうわけには いかないからなぁ。「MySQL使える人」で募集かけてもロクなのいやしねぇ。
>>890 MS系はそこが強いよな
Oracleはバックアップの難易度がちょっと高い
>>891 Oracleなら安いパートナーが使えるんだよ
>>892 PostgreSQLも似たような状況?
日本でMySQLって安いベンチャーとか、WEBのおまけでシステム組んでるとこってイメージなんだが
Oracleの資格試験は高すぎませんか?
上位資格は高すぎるな あれ大手5社以外に取らせる気ないだろ
試験はともかく、講座がなw 初学者ならともかく、実務やってる人にとっては、講座のレベルは低いし。
顧客向けのサービスの種類をテーブルで管理しています。 単純に顧客が選択できるサービス毎に連番振って管理すればいいやとか思ってたら、 過去にあった特定のサービスが細分化して、あるサービスグループだけ切り取るのが大変になってしまいました。 そこでプライマリキーに連番を使用するのを止め、サービス名そのものをプライマリーキーにし、 GROUP1_SERVICE1 GROUP1_SERVICE2 GROUP2 のように管理した上で取り出す時はLIKEなどを使用しようと考えているのですが、 これで問題ないでしょうか? アドバイスいただければ幸いです。
主キーは一意性必須だよ。 検索キーに使いたいだけなら索引を張ればいい。 複数のカラムを纏めて1つの主キーや索引にすることができる。 名前というのは将来的に変更される可能性があるから主キー等はコードとして持つこと。 …と文の意味がよく分からないので適当に言ってみた。
>>898 ありがとうございます。複数のカラムを主キーにするということですね。
例えばOracleのデフォルトで用意されてるdept表とかはdeptnoが設定されていますが
dnameを主キーにした方が参照する際も可読性も増して便利なんじゃないかと思ったんです。
将来部門名が同じでも内容が異なる部門が発生する可能性とヒューマンエラー排除のどちらを優先すればいいのか。
CUSTOMER_IDというNUMBERの主キーがあるとします。 INSERTするときに主キーは自動でカウントアップしたいです。 SEQUENCEを使用しない場合、どんなやり方があるの? 非PL/SQLで。 INSERT INTO CUSTOMER (CUSTOMER_ID,CUSTOMER_NAME) VALUES(SELECT MAX(CUSTOMER_ID) + 1 FROM CUSTOMER, '顧客A') みたいにできるのかな? でもこの場合、1件も無かった場合は・・・
>>900 それでは二人がトランザクション切って同時にINSERTしたら番号がかぶってしまう
ふーん。 無理なんだ。
>>900 パフォーマンス無視していいのなら、采番表を作って、そいつを悲観ロックで取るという方法だろうな。
どうしてもそれでやりたいなら、失敗したらリトライするロジック組むしか ないだろうが、なんでsequenceを使いたくないのか、だな。
シーケンスだと飛び番なしの連番を生成できないという欠点がある。
それが使いたくない理由?主キーで飛び番不可の理由は?
>>906 いや、本人じゃないから知らないよ。
画面に表示するIDなら飛び番しないように
実装しろと言われてもおかしなことではない。
あるね〜、飛び番許さない案件。
使い方を限定すれば飛び番を防げると思うが たぶんそれは要件に反する
>>900 利用者がごくわずかで、同時のINSERTが考えにくいなら
ヤッツケ実装としてはアリ。開発初期のプロトタイプとか。
一意制約違反のエラーが稀に起きることもあると覚悟してね。
Try〜Catchして失敗したら元の画面に戻るなら、
運用に持っていっても、トラブルにはならないと個人的には思う。
定石は
>>901 のとおり。
INSERT INTO CUSTOMER (CUSTOMER_ID,CUSTOMER_NAME)
SELECT NVL(MAX(CUSTOMER_ID),0) + 1, '顧客A' FROM CUSTOMER;
なんて感じでNVLをかければ、最初の1件から可能。
>>897 >>899 目的が「特定のグループに属するサービスを一括指定する」ならば、
サービス表以外に、サービスグループ表、リンク表を実装するのが定石。
SERVICE (SERVICE_ID, SERVICE_NAME)
SERVICE_GROUP (GROUP_ID, GROUP_NAME)
SERVICE_GROUP_LINK (GROUP_ID SERVICE_ID)
実装例としては、
サービス選択画面にて「名前」で検索させたとき
サービス名での検索結果とサービスグループ名での検索結果
の両方を表示して、サービスグループが選択された場合は、
LINK表にあるサービスを全て選択したとして動作する、なんて感じ。
Oracle10g ご教授願います。 (1)テーブルのカラムをNUMBER型2桁から4桁に拡張するためにDROP TABLE⇒CREATE TABLEを実行。 (2)そのテーブルをDESCRIBEコマンドで4桁に変更されていることを確認。 (3)そのテーブルをSELECT文で参照しているだけのビューをDESCRIBEコマンドで確認したところ2桁のままとなっている (4)試しに4桁のデータをテーブルに入力したところ、ビューでもきちんと4桁で表示された テーブルの桁数も変更した場合、そのテーブルを使用しているビューもCREATE OR REPLACE VIEWしないと カラム情報(データディクショナリ)は更新されないのでしょうか? 動作上問題なさそうですが、気持ち悪いのでCREATE OR REPLACE VIEWしました。。。
OS:win 2008 DB:Oracle 10g R2 ほぼ同じ項目を持つテーブルA,Bがありまして SELECT CASE WHEN A.COL001 = B.COL001 THEN '1' ELSE '0' END AS COL001_FLAG : てな感じで、両テーブルの各項目を比較して結果を取得しようと思ってます。 各項目の比較は A.COL001 = B.COL001 でいけるかなと思ったのですが、COL001はNULLの可能性があるので COALESCE(A.COL001,'XXX') = COALESCE(B.COL001,'XXX') にしようかと思ってます。 これ以外にもっと良い方法って何かないですかね?
>>913 あとはIS NULL判定するとか・・・
CASE
WHEN A.COL001 IS NULL THEN '0'
WHEN B.COL001 IS NULL THEN '0'
WHEN A.COL001 = B.COL001 THEN '1'
ELSE '0'
END AS COL001_FLAG
915 :
NAME IS NULL :2009/07/22(水) 21:24:36 ID:PNVb1M3B
>>914 それだとA、B共にNULLの場合0になる
素直にnlv関数つかえよ…そのためにあるような関数だろ。
nvlだた。すまん。
相変わらず「ご教授」って間違う日といるんだね。
お前も「日と」ってなんだよ。
よろしくお願いします。 pl/sqlで select * from table1 where hogehoge union select * from table2 where hogehoge の結果を select * bulk collect into array from table みたいに配列に格納するには どのように書けばいいのでしょうか? 環境は oracle 10g, RedHatLinux です
>>920 まっ、手っ取り早いのが
select * bulk collect into arrary from
(
select * from table1 where hogehoge
union all
select * from table2 where hogehoge
)
すまんが、意味がない限り"union all"に差し替えさせてもらった
>>912 もう再現しにくいだろうけど、
ビューで使っているテーブルの定義が変更された場合、
ビューのステータスはINVALID状態になる。
SELECT STATUS FROM USER_VIEWS WHERE VIEW_NAME='xxx';
で見てみよう。
ALTER VIEW xxx COMPILEするか、
一度ビューをSELECTすると自動的にCOMPILEされる。
そうすると、DESCで見える構成が適切に更新される。
>>913 DECODE関数はどう?
SELECT DECODE(A.COL001,B.COL001,'1','0') AS COL001_FLAG
たぶん、NVLを追加せずともイケると思うんだけど。
924 :
920 :2009/07/22(水) 23:10:11 ID:???
>>921 ありがとうございます。
明日会社でやってみます。
ちなみに教えていただいたSQL文は
()の中だけのSQL文に比べて実行速度は
かなり落ちるでしょうか?それともほとんど変わりませんか?
元の質問に書けていなかったのですが、アプリで実装する前に
SQLの大体の実行速度を計りたいのです。
925 :
913 :2009/07/22(水) 23:58:00 ID:???
>>924 それは環境次第、データ量次第
一つ言えるのが、データ量によるけど"UNION"と"UNION ALL"とでは
劇的にパフォーマンスが変わるよ
928 :
913 :2009/07/23(木) 21:21:57 ID:???
結局、decode関数使うことにしました。 レスくらたみんあさんくす
REDOアーカイブを自動作成するようにしたら アーカイブ作成してる間SQLの応答が返ってこないんだけどなんで? REDOグループは5つあるし空き領域も十分だしCPU使用率も10%程度。
ふつうは返ってくるよ HDDが遅いんじゃないの
932 :
NAME IS NULL :2009/07/27(月) 08:26:18 ID:nmXGDGSs
10g使ってDB作る予定なんだけど ハードでストライピングとミラーリングしてるんだけどASM使うメリットってある? RAWデバイスで十分?
ファイルで十分。 つか、OSくらい書け。 RAC使うなら、ASMにしておいたほうがいいかもしれんが。
>>932 RAW使うぐらいならASMの方が領域管理が楽といえば楽かもな。
でも
>>933 が言っている様にRAWの性質はO/Sにかなり依存するからな。
>>932 あとOracle 12gではRAWは完全にサポートしなくなると米Oracleは発表した。
936 :
NAME IS NULL :2009/07/27(月) 13:29:28 ID:nmXGDGSs
OSはソラリス10でRAC使う予定!
Solaris10なら、x86かSPARCかを書こうよ。 実績持ってる人がいるかもしれないよ。 ま。 RACなら、ASMを利用するのが普通みたいだけどね。 ASMも内部的にはRaw Deviceを扱っているというし。
プロシジャ内でSELECT文を使うときの対象テーブル名を引数で動的に切り替えたいんだけど このときは動的SQL(execute immediate)を使えば良いのでしょうか? その場合、動的SQLを使用した場合の懸念点などあるでしょうか?(パフォーマンス面など)
>>938 SQLインジェクチオンに気をつけなッ!
>>938 俺は、明示カーソルでOPEN、FETCHをしておいて
CLOSEをよく忘れる。
動的SQLを利用した時、特に忘れやすい。
CLOSEせずに同じカーソル名で動的SQLをOPENしたり。
我ながら小学生レベルだと思う。カナシイ。
でもDBMS_SQLパッケージ使うよりは、断然パフォーマンスましになったんじゃね? 手続きも楽だし。
>>941 パースや実行計画のコストが無視できないような短時間で終了するクエリでならば明らかだが、
複雑で時間のかかるクエリではそうとも限らん。特にデータに偏りがある場合などは。
動的SQLとか使うのは頭が悪い奴
頭が良い奴は両方の得失を理解して使い分けができる
得失がわかってない奴が偉そうにいったところでねぇ
分かっている方説明ヨロ 俺は分からん・・・
単純な話、条件によって最適なアクセスプランが異なるようなケースでは その都度実行計画を作る方がトータルのコストが低い場合がある。 オプティマイズをミスった場合のペナルティは場合によっては非常に 大きいから、あたりまえといえばあたりまえ。
10gR2でも/*+ RULE */ヒント文は有効なので、 動的SQLに埋め込んでルールベースで動かす、 というのも、オプティマイズをミスった場合のペナルティから 回避する方法の一つ。 俺の経験では、コストベースオプティマイザに任せた結果、 大規模な表同士のジョインでハッシュジョインが 選択された時に一時表領域を食い尽くして、 尋常じゃないレベルまで性能低下するケースがあった。 ちなみに/*+ RULE */ヒント文を埋め込むと、 ソートマージジョインか、ネステッドループジョインの どちらかになります。
>>944 「俺が設計したファッキンテーブルじゃねえよ糞ったれ」
という事もあるかも知れん。
>>946 部屋にエアコンなくてイラついてんのか?
得失が分かってない奴キタコレ↑
すみません質問です。 今、Microsoft Office InfoPath 2007を使っているのですが、 Oracleに接続してDBの値を使えるらしいのです。 (DBから取得した値をテキストフォームに挿入ということがやりたいです。) ですが、肝心のOracleへの接続方法が分かりません。 スレ違いかもしれませんが知っている方がいらっしゃいましたら 教えて頂けないでしょうか。
>>963 ありがとうございます。
以前にVBAでのORACLEの接続経験はあるのですが、
InfoPath2007はVSTAを使ってC#orVB(今回はC#を使おうと思ってます)
で記述する感じでした。
試しにC#でそれらしい記述を書いてみたのですが、usingでOracle接続に必要な
クラスをインポートした所、エラーになり、どんな設定をすれば使えるように「なるのか
が分からないというのが今の状態です。
プログラムを書かないで接続する方法があればそちらで接続したいのです(SQL Server
とかはInfoPathの設定で接続できるみたいです)。
ですがOracleは今の所の調べではそういう設定は無さそうでした...
956 :
952 :2009/07/31(金) 21:12:33 ID:???
InfoPath2007とOracle接続の件ですが今日解決することができました。 必要なライブラリ(?)を"参照の追加"で追加しないとOracele接続クラスの メソッドが使えなかったみたいです。 Officeはそこまで使わないので設定の流れが分からなくて...面目ないです。 しかしC#はライブラリが充実していて結構使い易いですね〜 以上お騒がせ致しました。
ORACLEってダウンロードできますか?
できますん
959 :
NAME IS NULL :2009/08/01(土) 04:10:55 ID:4qRkq2W/
質問です。 Oracle 9iとPro cobolを使っています。 条件にマッチする行が15件有る場合、 以下のようなプログラムを実行すると、 EXEC SQL BEGIN DECLARE SECTION END-EXEC 01 Touroku-REC-TABLES 05 ht-id PIC X(12) OCCURS 25. 05 ht-name PIC X(40) OCCURS 25. EXEC SQL END DECLARE SECTION END-EXEC. . . . EXEC SQL SELECT id, name INTO :ht-id, :Ht-name FROM touroku END-EXEC 一度に15件取得して、配列に代入する事になるんですか? それとも、一件のみの取得ですか? いままでは、複数件取得したい場合 カーソルを作ってNOTFOUNDが出るまで、 一件取得->配列に代入のループを行っていたので 今日初めてこのプログラムを見て、 一件取得なのか、全部取得なのかどっちか疑問に思っています
俺は、Pro*COBOLを使った事無いけど、PL/SQLでは、
ttp://www.shift-the-oracle.com/plsql/select.html に書かれているような、実行時のエラーを経験している。
-------------------------------------------------
ORA-01422: 完全フェッチがリクエストよりも多くの行を戻しました
-------------------------------------------------
多分、同じ事になるんではないか。
ここでいいのか分からないけど質問です。 Oracle10gとWindowsCE5.0って直接SQLのやり取りって出来ない? どうも、WindowsCE5.0用のオラクルクライアントが無いようなのですが。 直接SQLでやり取り出来る方法があれば教えてください。 環境 ・PDA(WindowsCE5.0) ・.NetCompactFramework2.0 ・VB.net(VS2005)
データベース未経験でわからないので根本的なことですが教えてください。 oracleってどういった業務に使われてるんですか?
963 :
NAME IS NULL :2009/08/04(火) 16:52:24 ID:n7ZF7BFv
自分が所有しているCDをアーチストごとに分類したりするのに良く使われるな
964 :
NAME IS NULL :2009/08/04(火) 17:21:36 ID:WF6K2+ix
Oracle10g R1 は Mac OS X Tiger(PPC)で動くらしいのですが LeopardはPPCとIntelの両方で動くのでしょうか R2はIntel Mac版があるようなのですが・・・
>>961 CE用のクライアントは聞いたことないね。
ミドルウェアを買う必要あるんじゃないかな。
>>962 CRM(カスタマーリレーションシップマネジメント)
SCM(サプライチェーンマネジメント)
SFA(セールスフォースオートメーション)
ERP(エンタープライズリソースプランニング)
KM(ナレッジマネジメント)
などです。
よく分からないがOracleLiteClientってOracleLiteServer専用とかじゃない? Javaが使えるなら確かJDBCのThinドライバでクライアントの インストールなしにサーバに接続できた気がする。
Windows Mobileは、1週間に1回ぐらいフリーズして、ため息。 3ヶ月に1回ぐらい、知らぬうちに工場出荷状態に戻ってて、激怒。 調子が悪くて自分でハードリセットする羽目になって、涙目。 Windows Mobileという製品を十分評価してからの方がいいよ。
969 :
NAME IS NULL :2009/08/05(水) 11:49:38 ID:lbXkSQVv
ODBC接続のとき、Oracleのドライバーを使用すると ユーザー名が全角10文字より長い場合エラーになるのですが 仕様ですか?
ユーザー名が全角文字って初めて聞きました。 このスレ住民には、そのような使い方してる人は、 いないと思います。 普通は半角英数字とアンダースコア(A-Z、0-9、_) だけ使って、先頭はアルファベットで、 30バイト以内でユーザー名を設定しますよ。 TARO_YAMADA GREATSYSTEM360 のような感じですね。 ちなみに、全角10文字より長いとエラーが発生する というのは、UTF-8では日本語は3バイトなので 30バイト制限に引っかかっているのかもしれません。
長文失礼します。 10gR2のキャラクタセットがJA16SJISTILDEの現行インスタンスを 10gR2のキャラクタセットがAL32UTF8の新インスタンスとして再構成したいです。 なお、現行のクライアントアプリは、入力バイト数の制限チェックを SJIS想定で判定しております。 今、自分で考えている方針としては、以下の1〜5です。 とりあえず自分なりに1回経験を積むつもりですが、 経験談、指摘事項があればアドバイスをいただきたいです。 当初はORACLE社推奨どおりCSSCANからCSALTERを使う事も 考えましたが、いまひとつ信頼しきれないと感じています。 よろしくお願いいたします。 1) 現行インスタンスで、全スキーマの全テーブルのデータ件数、 テーブル中の各カラムの格納バイト数を調査する。 CSSCANにより問題箇所の事前情報も得ておく。 2) 1で、全テーブルの全カラムの格納バイト数が VARCHAR2(1333)以内に収まる、CHAR(666)以内に収まる データであると判明したら、3以降に進む。 収まらないようなら、データ内容について AL32UTF8にて4000バイトに収まりそうか十分に検討、 データを削るなどの作業をして、1に戻る。 3) JA16SJISTILDEのインスタンスをエクスポート。 AL32UTF8のインスタンスにROWS=Nでインポート。 1〜2の情報を元に、 ALTER TABLE xxxx MODIFY (yyyy VARCHAR2(4000)); のようにテーブルの定義を変更する。 4) AL32UTF8のインスタンスにIGNORE=Yオプションで データをインポート インポート後、1のデータ件数と比較し、レコードの 欠落が無いことを確認する。欠落があった場合、 TRUNCATE TABLE xxxx ALTER TABLE xxxx MODIFYして、インポートしなおす。 5) 現行のクライアントアプリは、当面そのままとし、環境変数 NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE のままで利用する。 キャラクタセットの変換はOracle Netに任せる。 性能低下が懸念されるため、性能低下度合いを確認する。 将来的には、環境変数 NLS_LANG=JAPANESE_JAPAN.UTF8 で動作するよう、 具体的にはハングルと日本語を同時に利用可能なように クライアントアプリを修正する。
>具体的にはハングルと日本語を同時に利用可能なように 民主党か? 売国奴は日本から出て行け。
うちはマルチバイト系の文字を使うカラムは全部NCHAR系に変えて行ったな。 バイトで処理してるアプリの対応は必要だったが最終的にはすっきりした。
データベース移行なんてしなくてもCHAR、VARCHAR2を NCHAR、NVARCHAR2に定義変更すればいいんじゃない? 多分文字コードはUTF16で定義されてるだろうから、 クライアントの長さチェックの修正も必要ない。
>>971 記憶でレスするので間違えてたらスマソ。
(3) の Import で SJIS→UTF8の変換が必要と判断され、
Import 時の CREATE TABLE でカラムサイズ1.5倍が動い
た気がする。なのでDDLを作り直したほうが良いかもしれない。
あと CSALTER でも SJIS→UTF8はスーパーセットじゃない
のでNGのはず。
ナショナル・キャラクタセットへの変換は、アプリによってはフェッ
チ時のAPI変えたりとか面倒なケースがあったような。
>>972 私も同じ考えでしたから、偉そうに言えませんが
日本の企業が韓国、中国に進出するために
必要なんだそうです、上司いわく。
>>973-975 参考になりました。ありがとうございます。
さて、土日に自宅で頑張ってみます。
やべえ。スレッドストッパーだ、オレ。
11gのテーブルのダンプを9iにインポートすると、ORA-0096エラーがでます。 エクスポートは9iが稼働してるサーバから、 exp hoge/hage@11gSVR file=t.dmp みたいな感じでエクスポートしました。 それを 9iが稼働してるサーバで imp hoge/hage file=t.dmp full=y みたいな感じでインポートすると 「ORA-00096: 無効な値がパラメータplsql_compiler_flagsに指定されて います。値はNON_DEBUG, DEBUG, INTERPRETED, NATIVEの中から設定する 必要があります」 のエラーが出てしまいます。 この下向きのインポートは10gを経由しないとダメなんでしょうか。
11g R1⇒9i R1はそもそもできないそうです
>>978 書き込みを読んで、なにも調べずに想像だけど。
plsql〜のエラーってことはさ、PLSQLのコンパイルに失敗しているってことでしょ。
exp/impってさ、テーブルやらインデックスやらビューやら権限やらPLSQLやら
ありとあらゆるオブジェクトが対象になっているのね。fullでやると。
んで、今回の11gから9iがテーブルのデータだけで良いってんなら。
fullやめて、tablesパラメータでテーブル全部指定してテーブルだけ
インデックスもほしいならindexes=yで、データだけ入れれば?
んで、さらに、途中でエラーが発生してもエラー停止しないって引数
が(名前忘れた)あるからそれもyでつける。
これでデータだけならできんじゃね?
>>979 >>980 お返事ありがとうございます。
imp hoge/hage file=t.dmp tables=table1 ignore=y
でやってみましたが現象変わらずでした。
10g R2(?)以降はimp/expコマンドは正式サポートされていないようですし、
この関係で11g->9iのデータ移行は簡単にいかないのでしょうかね。
データだけで良いので、CSV経由ででも試してみます。
>>981 CSV経由するくらいなら、DATABASE Link接続でInsert Selectは?
LOBでトラブる
>>982 DATABSASE Linkは使ったこと無かったのですが、後学のために試して
みたいと思います。ありがとうございました。
おいらにとっちゃデジタルの方がどうにでもできる
Oracleの9iで巨大なテーブルデータをロード、アンロードしたいんだけど、 一般的にどんな方法とるの
987 :
986 :2009/08/21(金) 22:46:52 ID:???
ごめんなさい、途中でエンター押してしまった。 Oracleの9iで巨大なテーブルデータをロード、アンロードしたいんだけど、 一般的にどんな方法とるの? 今は、普通にPro*CからSELECT * FROM・・ってしてデータ取得して 全件とってきてるんだけど、一時表領域がパンクしてエラーになってる。 巨大テーブルの全件アンロードとロードって結構やりそうだと思うんだけど これだっていう一般的な方法がぐぐっても見つからんかった。
9iまでならimp/exp (以降ならimpdp/expdp) ロード時、アーカイブログはオフる
>>988 サンクス、確かにそれが普通っぽい気がする。
逆になんでそんな実装をしているんだとおもいます?
やっぱり、やっぱりロード時にオフる必要があるからでしょうか?
普通にテーブルの全データ取ってきてるだけなのに。
実装が不自然すぎて逆に意図があるんじゃないかと思ってしまう。
質問ばっかりウザい 一つ答えてもらったんだから自分でなんとかしろよ
別に質問してるわけじゃないし。 それに質問だとしても質問スレなんだから何か問題あるでしょうか?
>>989 変な実装だと思った時は、素直にそう思った方がよい
(実際、無知から来る妙な実装を結構見てるから)