タグ別アーカイブ: Oracle

[Oracle初心者運用メモ]全テーブルの件数を取得

OracleDB内の全テーブルの件数を取得するSQLを調べてみたところ
一番簡単なのは下記のSQLでした。

SELECT TABLE_NAME, NUM_ROWS FROM USER_TABLES;

但し、このSQLは、統計情報から件数を参照するので
統計情報直後でないと、正確な件数は求められません。

大体の件数が知りたいのであれば、このSQLでいけるけど。。
あまり使えないかな~。

次回は、最新の件数を取得する方法を調べてみたいと思います。

 

[Oracle初心者運用メモ]初めて見るエラー

先日、OracleDBへの接続で
下記のエラーメッセージが表示されました。

「ORA-12571: TNS:パケット・ライターに障害が発生しました」

初めて見るエラーだったので調べてみると
クライアントとサーバー・プロセス間の接続が切断された場合など
ネットワークが原因のようです。

再接続したところエラーは表示されず、正常に接続でき
それ以降は再現していません。

頻繁に発生するようだったら
何かしら回避策を調査しようと思います。

[Oracle初心者運用メモ]リスナーのHOST名変更

Oracle DBサーバとして使用しているPCをドメイン参加に変更したところ、
Oracle DBへ接続できなくなってしまいました。

よく考えたら、ドメイン参加にしたことで
コンピュータ名が下記のように変わったためでした。
「pcname.testdomain.local」

DBサーバのリスナー(listener.ora)で指定しているHOST名を変更し
接続できるようになりました。

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = pcname.testdomain.local)(PORT = 1521))
)
)

ちなみに、リスナーを変更した場合、リスナー再起動が必要です。

 

[Oracle初心者運用メモ]Oracle勉強会に参加しました

オラクル九州支社様でIT技術者向けのコミュニティを開設されていて
定期的に、オラクル製品に関する技術セミナーを無料で
開催されています。

パフォーマンスチューニングやトラブルシュートなど、
奥が深すぎて独学で理解するのは難しいので、
事例を元になどいろいろな技術の情報を直接聞けるので
とても勉強になります。

できれば、毎回(毎月1回)参加したいところですが
開催場所が少し遠方のため、年に1~2回程度しか参加できて
いません。。

先日は、テーマが「性能トラブル対策ガイド!
オプティマイザ/統計情報収集について」ということで
私にはレベルが高い内容でしたが受講してきました。

Oracle内部で、効率がよい実行計画をたてるために
自動的に統計情報が収集されているので
(ある程度、新しいバージョンのOracleでは)
特に気にする必要はないのですが

どのような情報を収集してどのように実行計画に
活用されているのかを理解することで
適切なタイミングで統計情報が収集されているかを考え、
システムによってはメンテナンスが必要な場合もあるようです。

例えば、11gR2ではデフォルトで、統計情報収集の時間帯が
月~金曜は22時~26時,土~日曜は6時~26時で
設定されていますが、
夜間バッチ処理などで26時以降にデータ量が変動する場合は
統計情報収集の時間帯を夜間バッチ処理以降に変更するなど
検討する必要があったり、
ワークテーブル的なテーブルは統計情報を取集しても意味がない
ということであれば、そのテーブルだけ統計情報収集をとめたりなど
検討する必要もあるようです。

統計情報収集もDBに負担をかけますので。

弊社の開発機用DBサーバも夜10時になると、応答が遅くなるな~
と思いつつ、原因を調査するまでに至ってなかったのですが
おそらく統計情報収集が原因なんだろうなというのが
わかってよかったです。

 

[Oracle初心者運用メモ]ADO.NETでOledb接続ができない

ASP.NET(VS2010)開発のWebシステムを構築している
客先の本番Webサーバにて、突然、下記のエラーが発生し、
Webシステムから別DBサーバのDB(Oracle11g)へ接続できなくなってしまいました。

——————————-
データベースからのデータ取得に失敗しました。
‘OraOLEDB.Oracle’ プロバイダーはローカルのコンピューターに登録されていません。
——————————-

WebシステムからはADO.NETのOledb接続でDBへ接続しています。

Webサーバの環境は以下の通り(Webサーバ管理は別会社)
OS:Windows Server 2008 R2
DB:Oracle11g クライアント32bit

実は、Webシステムを構築した当初は
DBはOracle11gサーバ64bitがインストールされており
その時点では正常に接続できていました。
その後、別会社で使用しているシステムが32bit版のOracleクライアントが
必要になり、 追加でOracle11g クライアント32bitをインストールされたようで
インストール後、エラーが発生するようになりました。

・Oracleホームディレクトリのユーザ権限を確認
(Everyone権限を設定したりなどいろいろ試す)
・Oracleホーム/binフォルダへのPath設定を確認
などいろいろ試してみましたが結果は変わらず。。

Webサーバを管理している会社に、Oracle11g クライアント32bitをアンインストールし
構築当初のOracle11gサーバ64bitに戻してもらいましたが、
それでも結果は変わらず。。

最終的にWebサーバをOSからインストールしなおしていただき
(DBはOracle11gサーバ64bit)
正常に接続できるようになりました。

今回の現象は、Oracleの再イントールが要因でしたが
そのことにより何故このような現象が発生したのか
OS再インストールではなく、何か解決方法はなかったのか
突き止めることができなかったことが残念です。