Oracle 総合 Session2

このエントリーをはてなブックマークに追加
922NAME IS NULL:2005/11/11(金) 08:05:50 ID:???
>>859

2. /etc/sysctl.confに以下を追加

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

3. /etc/security/limits.confに以下を追加
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

4. /etc/pam.d/loginに以下を追加
session required /lib/security/pam_limits.so

5.設定を反映させるために鯖をリブート
923NAME IS NULL:2005/11/11(金) 08:10:23 ID:???
>>859

6. rpm -Uivh oracle-xe-10.2.0.1-0.1.i386.rpm

7. rootユーザーでそのまま「/etc/init.d/oracle-xe configure」で
  DBを作成

8.デフォルトで「oraclexe」というユーザーが作成されDB作成まで
 step7でやってくれる。後は以下の環境変数をoraclexeの「.profile」
 にでも書いておけ。

export ORACLE_SID=XE
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$PATH
export ORACLE_OWNER=oraclexe
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export LD_ASSUME_KERNEL=2.4.1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jdbc/lib/classes111.zip:$CLASSPATH
umask 022

924NAME IS NULL:2005/11/11(金) 11:42:53 ID:???
>>923

そういえばstep.6のrpmでインスコ中に、O/Sのチェック関連のエラーが出たけど、多分
「/etc/redhat-release」に「Red Hat Enterprise Linux AS release 4 (Taroon)"」
とか書いておけば、消えるんじゃないかと思う。
誰か試してみてくれ。
まあ、チェック関連のエラーなんで、無視しても問題なく動いているけどね('A`)
925890:2005/11/11(金) 21:54:26 ID:???
>>915
Win2000Serverは何をどうしてもユーザプロセスは2GBしか使えない。
Win2000Advanced Server/Datacenter Serverであれば2GB以上使用可能。
3GBスイッチなら単純にユーザプロセスが3GB使用可能になって、
PAEスイッチを使用するとバッファキャッシュだけをユーザプロセス空間の外に追い出せる。
(OracleではVLMと呼んでる)

メモリの見積りについては何とも言えない。
PGAなんかは本番環境を調べればわかるんじゃない?
926887:2005/11/11(金) 23:27:40 ID:???
>>915
64bit版は考えてなくて、メモリの拡張の方向で考えてます。
3GBスイッチはもう少し調べてみます。

>>920
言語はASPです。
PGA_AGGREGATE_TAGETとOEMで確認したところ、PGAは
300M程でした。単純に300M / 2M(一人分のユーザプロセス)で
同時接続150人なのでしょうか。Procesesは500なので同時接続495人
までエラーを吐かないと認識してますが、ユーザプロセスが全然
耐えられそうにないです。-5はバックグラウンドプロセス。

>>925
PGAは300Mほどでした。VLMは調べてみます。

どうもコネクション、セッション、プロセス、同時接続数が資料によって微妙に
意味合いが違うみたいで混乱してます。私はこれらは等しい数字になるものと
認識しています。
わからないのはコネクションプーリングでASPでもコネクションプーリングがあるし、
ロードバランサーでもコネクションをプーリングしているそうです。ORACLEは専用接続だから
1接続=1プロセスになるはずです。

クライアント10台(10コネクション)→ロードバランサ1台→Webサーバ3台→DBサーバ1台
このとき、DBサーバのユーザプロセスは10になるのか調査中です。


927NAME IS NULL:2005/11/11(金) 23:38:41 ID:???
>>926

init.oraのPGA_AGGREGATE_TARGETが300MBということでいいのかな?
で、その時のPGAのHit率ってどうなっていた?
必要だったらSTATSPACK取って調べてみるしか。

漏れはASPは専門ではないが、ASP側からは常にDBに対してコネクション
プーリングしてセッション張っているという意味でしょう?
だったらDB側からみたら、アプリ起動時に設定しているコネクションプーリング数
のセッション数が張られている様に見えるはずだと思うけど?
928887:2005/11/13(日) 00:42:43 ID:???
>>927
>>init.oraのPGA_AGGREGATE_TARGETが300MBということでいいのかな?
そういうことです。PGAのヒット率は分かりません。調べてみます。
STATSPACKも調べてみます。私はアプリケーションもDBも詳しくありませんが、
仕事なのでやるしかないです。

>>だったらDB側からみたら、アプリ起動時に設定しているコネクションプーリング数
>>のセッション数が張られている様に見えるはずだと思うけど?
これって、ASP側でプーリング数500と設定してたら、1人だろうが、100人だろうが
1000人だろうが、500になるんですかね?500超えたときだけ500
なんだろうか?正直言って、自分には荷が重いのですが仕事と割り切って頑張ります。
929NAME IS NULL:2005/11/13(日) 01:37:45 ID:???
>>928

PGAのHit率はOLTP系なら出来れば90%台が望ましいけど、
アプリ側からタコなSQL投げられていたりとかあるからぇ。
その場合はSQLのチューニングが必要になるだろうね。

コノクションプーリングに関しては、設定によると思う。
漏れはアプリケーション鯖はWeblogicしかかじった事がないけど、
起動時にプーリング数を10と設定していたら、10セッション張られて
いた記憶があった。
10を超える分に関しては、設定次第で動的に増やせる様に
出来たり、増やせない様にも出来た様な・・・。
930NAME IS NULL:2005/11/13(日) 17:13:23 ID:???
>>902
USER_TABLES
931NAME IS NULL:2005/11/13(日) 17:40:48 ID:???
CSVファイルをoracleにロードするのに、
sql*loader を使おうと思ってます。
CSVファイルの中には、insertするものとupdateするものが混じってます。
主キーをもとにして行えばこのあたりは問題ないんですが。

問題は、CSVファイルが100個くらい、対応するテーブルも100個くらい!
これ全部に、controlファイルを書かなくてはいけないんでしょうか?
932NAME IS NULL:2005/11/13(日) 19:01:27 ID:???
>>931
ああ、ガンバレよ。
933NAME IS NULL:2005/11/13(日) 22:11:21 ID:???
>>931
何から sql*loader をキックするのか判らないけど、俺は CTL ファイルを自動生成させてたよ。"append into" があるから毎回生成するんだけど、カラム名は

select column_name from user_tabl_columns where table_name = 'TABLE' order by column_id;

とか使って最初に取得してた。で、色々指定しないといけないカラムとかは「テーブル名+カラム名」を添え字にプログラム中に持ってた。

ちなみに俺は DB 触ってまだ半年。もっといい方法があるのかも。
934NAME IS NULL:2005/11/13(日) 22:12:27 ID:???
>>933
>"append into" があるから

違った。infile があるからだ。
935NAME IS NULL:2005/11/13(日) 22:33:07 ID:???
>>931
そんくらい有るなら簡単なツール作っても良いんじゃない?
って言うか、その辺にあるし
936931:2005/11/13(日) 23:32:26 ID:???
最終的に100個のcontrolファイルを書いたりはしません。

自動生成させるか、functionを作ってしまうか、
他の言語からSQLを使って、などを選ぶと思います。

ですが、sql*loaderでもっと簡単にできる方法があれば、
そっちのほうがいいなと。
937NAME IS NULL:2005/11/14(月) 00:36:25 ID:???
>>936

( ・∀・)つ 外部表 + create table ... as select ...
938NAME IS NULL:2005/11/14(月) 01:16:42 ID:UjrXfxVS
LOADに関しては、ORACLEは非常に使いにくいですね

DB2のLOADコマンドの方が非常に便利です。

なんでSQL*Loaderみたいな旧世代のやり方を変えないんですかね

まORACLEしか知らない人はこれが常識だから疑問にもならないんでしょうが・・・
939NAME IS NULL:2005/11/14(月) 01:28:01 ID:???
I工作員おつかれさまです。

外部表ができたから、ローダーの重要性が低くなった。
DB2ださい。
940T.O:2005/11/14(月) 11:39:45 ID:qJ4s9CJj

データベース内に表領域が3つあります。
TS_01〜03までをテーブル作成などのユーザー表領域に指定しています。
TS_TMPはテンポラリ表領域です。

TS_01
TS_02
TS_03
TS_TMP

A表は「TS_01」,B表は「TS_02」,C表は「TS_03」などのように
所属する領域が異なっています。
「TS_01〜03」まで分散する事はパフォーマンス面で
メリットのある事なのでしょうか?
ちなみにDBはOracle9.2を使用しています。

私はUSERS表領域に統一したいと思っています。
周りに聞ける人が居ないので、ぜひ皆さんの
経験則をお聞かせ下さい。大体の概要をお聞きできれば、自分で調べます。

P.S.
(もしかしたら、8iの頃の仕様などの問題を
引きずっているのではないかという偏見を私は持ってしまっています。
またアクセス数はシステム構築当初と比べて現状では減少しているはずなので、
特定の表に集中的にアクセスが来る事はないと推測されます。その場合でも
分散している状態の方が全体のパフォーマンスが良いのかと疑問です。)


941NAME IS NULL:2005/11/14(月) 12:23:58 ID:???
>>940

最近のH/Wの進歩からすれば、表領域を細かく分ける事にパフォーマンス面での
メリットとといものは少ないかも知れない。
それでもディスクをストライピングしていなかったり、ディスクキャッシュがそんなに無い
H/Wを使用しているのならTS_01、TS_02、TS_03を異なるディスクやI/Oコントローラー
上に配置したりする事によって、それなりにメリットは受けられるだろうね。

後は表領域を分けるもう一つのメリットに関しては、Archivelogモードで動いて
いれば、運用中でも表領域単位でリカバリがかけられる事かな。
こっちの方がむしろ恩恵は大きいかも知れない。
942T.O:2005/11/14(月) 13:50:49 ID:qJ4s9CJj
>>941
返信有難うございます。
おお!まさにお聞きしたかった事です。
なるほどディスクの問題として言える事だったのですね!
・・・他にArchivelogモードですか、少し調べてみます。
943NAME IS NULL:2005/11/14(月) 21:08:00 ID:???
エクステントの管理をUNIFORM SIZE指定にした場合、
小規模:128KBの表領域
中規模:5MBの表領域
大規模:50MBの表領域
って感じで表の特性に合わせてそれぞれ表領域を作ったりしてる。
944887:2005/11/14(月) 23:51:59 ID:???
>>929
どうやら、oracle object for OLEというのでコネクションをプーリング
してるとか何とか。まだまだ調査中です。手順書や設計書などたっぷり
1000ページ以上あるわりにベンダーさんの資料はよくわから〜ん。
945NAME IS NULL:2005/11/15(火) 00:48:02 ID:???
>>944
Oracle Object for OLEはoo4oと略されることが多いね。
VB6以前のシステムでは良く使われてたミドルウェアだから事例には困らんと思う。
OTNいけばマニュアルもあるはず。
946NAME IS NULL:2005/11/15(火) 01:03:35 ID:6mShFTFn
>>939

信者らしい回答ありがとうございます。

 読み取り一貫性が長所らしいが、
システム的に一貫性がないのが皮肉ですね。
947NAME IS NULL:2005/11/15(火) 01:30:22 ID:???
>>946

DB2のマニュアルで「View」を「視点」とかって訳しているのは
何とかならんのか?
948NAME IS NULL:2005/11/15(火) 01:41:58 ID:???
>>946
たとえばどのへんが?
949NAME IS NULL:2005/11/15(火) 02:06:37 ID:???
漏れはIのセールストーク以外で DB2 > Oracle っていうエンジニアに
なかなか出会わんのだが、どのへんがいいのか教えてほしいな。
一貫性がある説明でな。
950NAME IS NULL:2005/11/15(火) 02:33:52 ID:???
>>946

「葉ブロック」ってなに?
中途半端に訳すんじゃなくて、訳すなら「葉片」というぐらいガチに訳すとかさ?
951NAME IS NULL:2005/11/15(火) 08:23:43 ID:???
動的リスナー構成になっているかを確認するにはどこを見ればよいのでしょうか?
LISTENER.ORAでSID_LISTにPLSExtProcだけしかなければ動的構成?
952931:2005/11/15(火) 09:49:19 ID:???
外部表について、調べてみました。
sql*loaderより、少し便利かもしれないです。
でも設定ファイルはいっぱい書かないといけないっぽい。
update ももっと楽な方法はないものか・・・。
953931:2005/11/15(火) 11:03:46 ID:???
>>937
ところで、外部表作成時に、create table ... as select ... ってどうやればいですか?
954NAME IS NULL:2005/11/15(火) 12:22:29 ID:???
>>953

>>937は、外部表を一回作ってしまえば、あとはそこから
ceate table ... as select ...で正規の表を作るとか、insert
してしまえば良いのでは?という意味なんだけどね。
955931:2005/11/15(火) 13:15:08 ID:???
>>954
おそらく、作った後のことだとは思っていたんですが、
私が調べたりないだけで、できるのかなと、ていうより、できるといいなですが。

既存のテーブルと同じ構成の外部表を作成するのに、
簡単な方法ってないですか?
やはり、ここはfunction なり外部プログラムなりで作成かな。

956NAME IS NULL:2005/11/16(水) 00:23:23 ID:???
>>951
Oracleインスタンスの起動前後で、lsnrctl serviceの内容を比べてみれ。
動的登録に成功していたら、インスタンスが起動しているときにlsnrctl service
にあらわれる。
tnslsnrのポートをデフォルトの1521から変更していた場合、インスタンス
パラメータのLOCAL_LISTENERでリスナーの場所をインスタンスに教えて
やる必要がある。
957NAME IS NULL:2005/11/16(水) 00:33:33 ID:???
      ☆ チン     マチクタビレタ〜
                        マチクタビレタ〜
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < DB2のいいとこまだ〜?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん  |/
958NAME IS NULL:2005/11/16(水) 01:06:12 ID:???
>>957

頼むと漏れなくIのひよっこエンジニアがバンドルされてきますw
顧客からすると、タダで常駐してくれるからっていんうで買って
しまうパターンが多いですw
959NAME IS NULL:2005/11/16(水) 01:12:18 ID:???
autonomicの実態は中の人だったのか w


960NAME IS NULL:2005/11/16(水) 01:20:13 ID:???
>>959

ハゲワラw
961NAME IS NULL:2005/11/16(水) 23:14:23 ID:???
先生!
漏れのDB2が全然オートノミックじゃないのは
中の人がバンドルされてなかったせいでしょうか (´・ω・`)
962NAME IS NULL:2005/11/17(木) 10:41:49 ID:???
Oracle10gなのですが、
データベース・トリガー内の:NEWとか:OLDって修飾詞は、
後ろに必ず(.列名)をつけないと使えないんでしょうか?
1行分のデータをそのまま別のFUNCTIONに引数として
渡してあげたいんですが…。
例:関数名FUNCに:NEWを1列渡す。
FUNC(:NEW);
やっぱりレコード型の変数を用意して、
そこに1列1列、:NEWの中の列値をコピーして、
そのレコード型変数をFUNCTIONに渡すしかないんでしょうか…。
とても悲しす。
963NAME IS NULL:2005/11/17(木) 20:26:04 ID:YoHI+d2J
諸兄らに質問。
Miracle Linux 2.1 Standard Edition をインスコした鯖にOracle 9.0.1.を入れて、
同じドメイン内の他の端末に Oracle Client をインスコしてみたんだが、
下記のようなことを言われて困ってる。。。

ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました。

OracleDBを入れた鯖側のリスナーは動いてるし、
クライアントのローカルネトサービスも設定した。

どうすればつなぐことができるか教えれ ヽ(´Д`;)ノ
964NAME IS NULL:2005/11/17(木) 21:22:51 ID:???
>>963
とりあえず、
サーバのlistener.ora
クライアントのtnsnames.ora、sqlnet.ora
を晒せ。(w
965NAME IS NULL:2005/11/18(金) 00:06:33 ID:???
>>963
とりあえずネットワークケーブルが繋がってるか確かめろ
966NAME IS NULL:2005/11/18(金) 00:25:55 ID:???
>>963
子供の使いかお前は。
最低限、tnsping の結果くらい貼れよ。
967NAME IS NULL:2005/11/18(金) 00:28:22 ID:???
>>963

漏れはLinux側のF/Wの設定を疑うね。
確かインストール時にデフォルトでオンになってるんじゃなかったけか。
968NAME IS NULL:2005/11/18(金) 08:06:29 ID:???
>>955

普通だったらDBAは既存の表のcreate table文を何処かに残して
いると思うから、そいつから生成するのが一番早い気がするが?
もし残っていないんだっから、Functionなり外部プログラムなりで
生成するしかないだろうね。
969NAME IS NULL:2005/11/18(金) 09:54:08 ID:???
ユーザーのdefaultのテーブルスペースを知りたいのだが、
どのディクショナリにかかれているか教えてもらえませんか?
970NAME IS NULL:2005/11/18(金) 10:16:11 ID:5Uqbbgwx
XE、国内投入予定はないらしいな。
ふざけんじゃね〜よ。

>>969
SYS.USER_USERSのDEFAULT_TABLESPACE列

971NAME IS NULL
>>969

select username,default_tablespace from dba_users;