サクラエディタとmsiパッケージ

サクラエディタをインストールしてある環境においては、msiパッケージの展開に失敗する。通常であれば、Windows Installerが起動するのだが、関連付けがおかしくなっているのかサクラエディタが起動して読み込もうとする。ただし、msiのマッピングは正常なように見える。
とりあえず右クリックをしてホップアップメニューを起動してからInstallを選べば回避できるようだが、原因及び対応策についてもう少し調べてみたい。

データセンターのあれこれ

前の会社でデータセンターの選定作業を行ってから早2年、いろんなデータセンターを見て回ったり、今の会社になってからは作業をしたりすることが多いが、実際にデータセンターを選ばなければならなくなったとしたら選ぶポイントはどこにあるのだろうか?
営業トークにごまかされると後々移転せざるを得ないケースもあるので、このドキュメントが何らか役に立てば嬉しい。
まず立地条件。通常はリモートメンテナンスで何とかなる訳なので、言ってしまえばデータセンターの位置はどこでもよいと言うことになる。ただし、致命的な問題が発生しないということはないので、必ず駆けつけできる範囲であることが最低条件。
次に、電源の問題。基本的にこの問題は当たり前だからこそ気づかない部分だ。1ラックあたり何Aまで追加できるのかをチェック。
そして、サポート内容のひとつであるリモートハンド作業。万一リセットを必要とすることがあれば、センターの人にやってもらうしかないが、そのセンターは担当が24時間いるかどうかを確認しておくべき。この部分をすりあわせなかったために痛い思いをしたことがある。ただ24時間常駐していても、対応には10分程度かかるため、ミッションクリティカルなマシンには必ずDRAC(Dell Remote Access Controller)のようなものを入れておくべきだ。
当たり前と思っていることが当たり前でないことはよくあることだ。
最後に空きスペースの問題。今後増設を検討している場合には思い切ってスペースを借りておいた方が無難。何らかによって急にサーバーを増設することになっても対応できないではすまされない。

Webサーバーの環境を破壊した?

友人のサーバーにPHPアプリケーションを組み込んでいたら恐ろしいことが起こった。
コンテンツ組み込みにあたりApacheの設定変更が必要になり、設定ファイルを変更して/etc/init.d/httpd configtest
を実行したらなんと大量にエラーが発生するじゃないですか。
そこでやめておけば良かったのにtry&errorで何とかできるレベルだと思ってエラー箇所をコメントアウトしてエラーが出なくなったことを確認して、強引に再起動したわけです。
もちろんPHPは動かず。たしかPHPは動作する環境だって聞いてたはずだし、どうやらPHPのマッピングがうまくいってないんだなと勝手に判断してガリガリ設定ファイルに書くもうまくいかず。
落ち着いて考えてみたらLoadModuleも入ってないんじゃねーのと気づくが、どうやらmoduleディレクトリにPHPのライブラリらしい物は見あたらず。。。
ただphp -vは通るわけで、変だなぁと思ってrpmの一覧を調べたらなんと入ってないわけです。えっ?ソースコンパイル?でもさっきの一覧にApacheはあったしなぁ・・・?
まさかと思ってPHPのライブラリをルートからfindしてみたら愕然としました。なんとApacheもソースコンパイルされてるし。
どうやら再起動コマンドに
/etc/init.d/httpd
ではなく /usr/local/apache2/bin/apachectl
を使わなきゃいけないってオチだったらしい。
念のため、
/sbin/chkconfig
してみたらやっぱりhttpdはrunlevel=4以外がすべてoffになってましたとさ。(えっ?でも4だけonなの?と突っ込みたくなりましたが)
もーまぎらわしいからrpmはアンインストールしといてよと言いたくなりました。

ORA-01033 ORACLE initialization or shutdown in progress

メモリ割り当てに失敗しているときに発生する。
一般的に、SGA(システムグローバル領域)とPGA(プログラムグローバル領域)が存在し、これらは自動的に割り当てが行われるものだが、手動で強制的に設定することもできる。
32ビットシステム機においては、SGAとPGAの合計値が2GBを超えるようなことは一般的にお勧めできない。

ORA-27101 Shared memory realm does not exist

このエラーが発生している場合には、oracle_sidがセットされていないために、データベースのマウントならびにオープンが失敗している。とりあえずの対応方法は以下のとおり。
MS-DOSプロンプトを開く
set oracle_sid=(SID名)
sqlplus /nolog
connect sys/(sysユーザーパスワード) as sysdba
startup
これをやると
データベースがマウントされました
データベースがオープンされました
と表示されるので、接続できるようになる。
Windows起動時に正常に起動できる場合とそうでない場合があるようなことがあれば、【トラブル】OS起動時にDBが起動しないを参考にsqlnet.oraにある
SQLNET.AUTHENTICATION_SERVICES=(NTS)

SQLNET.AUTHENTICATION_SERVICES=(NONE)
へ変更してあげると良い。

W-ZERO3[es]ではじめるユビキタス生活21日目~データ通信中に電話がかかってくる

データ通信中に電話をW-ZERO3にかけたらどうなるのだろうか?携帯電話だとデータ通信中ですとかオプション選択できたりするわけだが、W-ZERO3[es]の場合には長い呼び出し音の後にデータ通信が切断されて、着信する。
メールの場合も同じ。後者の場合はデータ通信を優先してくれても良いような気がするのだが。。。
設定変更で変えられないか調べてみたい。

ディスプレイ信号がWindows起動時に途絶える

Windowsが起動するときにはプログレスバー(進捗バー)がOSのバージョンとともに表示された後、設定されている解像度に切り替えて再表示しようとする。
その時にディスプレイ信号が途絶えてしまう不具合に遭遇したので、その解決方法をお知らせしておきます。
まずSafeモードで立ち上げて起動するかどうかを確認する。もし起動するようであれば、ディスプレイドライバを削除して再起動すると改善されます。
これはディスプレイを新しい物にしたり別の物に切り替えたときに発生することが多いようです。

pgFouine

PostgreSQLウォッチにpgFouineなる統計ソフトの紹介があった。
目の付け所はすごく良いんだけど、クエリパターンの分類が、SELECT, INSERT, UPDATE, DELETEのパターンと時間別だけってのは、はっきり言って使えない。これらの4種類が分類できたところでどの負荷分散ソフトを使えばいいかぐらいしか分からないからだ。
おそらく重要なことは、どういったパターンのSELECT文が発行されていて、どのテーブル(もっと言えば、どのカラム)へのfetchが多いのかを統計で出せるようにすればインデックスの張り方とか、チューニングポイントが分かるはずだからだ。
ANALYZEコマンドで統計情報は出せるけど、それはあるクエリパターンごとでしかない。もうすでに完成されているシステムがあって、だけど遅すぎるって時には、一つ一つ見ていくことになってしまうわけで、そういったときに統計ソフトがあるとどこから調べていけば良いかの道しるべになる。
なにか良いソフトがあるといいんだが。。。

“pgFouine” の続きを読む

プライベートIPアドレス

プライベートIPアドレスとリンクローカルアドレスについて。
RFC1918で規定されているプライベートIPアドレスは以下のとおり。
Class A 10.0.0.0~10.255.255.255
Class B 172.16.0.0~172.31.255.255
Class C 192.168.0.0~192.168.255.255
一方、RFC3330で規定されているリンクローカルアドレスは以下のとおり。
なお、APIPA(Automatic Private IP Addressing)機能により自動的に割り当てられる、
169.254.0.0~169.254.255.255
後者はDHCPで取得できなかったときにこの中からランダムで割り当てることで、DHCPがなくても複数のマシンで通信できるようにする仕組み。計算上では2台で通信する場合には、1/(2562-2)=65,534分の1の確率で重複してしまう。おそらく設定する際には、RARPでIPが存在しないことを確認してから設定するので、そんな心配はいらないわけだが。

IDENT authentication failed for user “****”

PostgreSQLでログインできない場合には、このエラーが出るわけだけど、多くのパターンでは、pg_hba.confの設定がログインできない設定になっているからだ。
昔はまったのは、違うpg_hba.confを編集していてログインできずに悩んだことはあったが、今回はそれとは違うことではまってしまった。
pg_hba.confはアクセス制御として上から順にマッチングするものをmethodを使って認証することになっている。だから、もしpg_hba.confに
local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 ident sameuser
# IPv6 local connections:
host all all ::1/128 ident sameuser
なんていうのがあったら、その後に何を書いたとしても、ローカル接続はPostgreSQL起動ユーザーでしかログインできないことになる。この場合には、この設定の前に書くというのが重要。
今日はこれに1時間ほど時間を費やしてしまいました。