DevOps Days

主にインフラの話がメインです

Oracle Database 10g R2 Patch Set Release 10.2.0.5 インストール

なんで今更10g?

基幹システムの方は11gに最近更新したものの、データウェアハウスの方は予算も無いし10gで運用していたのだけど、ある日突然特定のSQLで突然落ちやがるのでサポートに問い合わせてダンプ送り付けたら、以下に該当するかもしれないとのこと。

  • Bug 4655998 - OERI / dump from SQL involving SORT operations [ID 4655998.8]

10gR2から導入されたSORT処理に起因した内部処理で問題が発生し、ORA-600[rworupo.2]等のエラーが発生する事象らしい。

ということでPSR 10.2.0.5を取得し、インストールすることに

アップデート手順

詳しくはこのサイトの通り。

ありがてぇありがてぇとお祈りしながらインストール、ほぼトラブルもなく完了。あとは経過観察

データウェアハウスもPentahoに乗り換えたいなぁ

iDM フェデレーション

昔書いたメモが出てきた

iDM フェデレーション

IdM(Identity Management)におけるフェデレーションの基礎

まずはこのテキスト、とても分かり易い。 フェデレーションとはアイデンティティの連携であり信頼関係の連鎖

ざっくりいうと信頼関係にあるAとBのサービスにおけるユーザー1の認証は A or B が済ませてるならどっちでもやる必要ないよねってこと さらにBを信頼してるCというサービスもAがOKって言ってるんだからもういいだろ言わせんな恥ずかしい、となる

システム管理者のためのフェデレーション講座 http://www.microsoft.com/japan/powerpro/TF/column/nf_01_1.mspx

で、次 知りたかったAD FS 2.0の展望について、これでAD FSの資料が読める予備知識がそろったと思う エバンジェリスト本人すら公式で「なにこれ?」感に言及するという戦慄のマイナーっぷり でもどう考えても大事だろ。。。

AD FS 2.0 でアプリケーションの世界が変わる http://www.microsoft.com/japan/powerpro/TF/interview/42_1.mspx

予備知識もついたことだし、やっと技術資料に着手 読める、読めるわー

Active Directory フェデレーション サービスの概要 http://technet.microsoft.com/ja-jp/library/cc772593(WS.10).aspx

フェデレーションが解ったところでOpenIDとOAuthについての理解も深めてみる

OpenID や OAuth の役割と、既存のシングル・サインオンとの違い http://www.goodpic.com/mt/archives2/2008/01/openid_oauth.html

実践系ネタ Windows AzureとAD FS 2.0との連携(2) http://www.atmarkit.co.jp/fwin2k/operation/adfs2sso04/adfs2sso04_02.html

AD FS 2.0 のアーキテクチャWindows Azure 連携の実装 ~ AD FS 2.0 によるシングル サインオンの実現 2 ~ http://msdn.microsoft.com/ja-jp/events/Video/ff979302

ADFS2.0 & WIF on AzureでオンプレミスとクラウドのSSO その1 http://idmlab.eidentity.jp/2010/01/adfs20-wif-on-azuresso-1.html

参考 分かり易い資料の筆者 富士榮 尚寛 氏のブログ http://idmlab.eidentity.jp/

AD FS 2.0 を利用したGoogle Appsシングルサインオン http://www.tensi.info/home/kensyo-infra/adfs20-gapps

OpenID Japanの仕様翻訳 http://openid-foundation-japan.github.com/

WindowsAzure 日本リージョン発表

最近仕事で普通にWindowsAzureを利用しはじめているが、この数ヶ月の進化が目覚ましい。

年初にはAzureWebsiteの独自ドメイン(ネイキッドドメイン含む)対応が完了し、 最近ではSNIベースのSSL証明書インストールとインスタンスのオートスケールにも対応と、どんどん利用可能な範囲が広がってきた。

現在の利用状況はWebSite一つとコンピューティング(XS)を一つ利用中 今後の予定としては、Azure側のActiveDirectoryをオンプレミス側と同期してOffice365とのフェデレーションを実現する予定。 なんかDNSもホストできるらしいし、それも利用してみようかな

そして現在の悩みと言えば、レイテンシの問題 Azure側のサーバを利用していると、どうしてもレイテンシが高い まぁリージョンが東アジアだもんね、仕方ないよね とは言いつつ小さくない懸案に成長しそうな予感もあったりして どうしようかなーとか考えてたら、とても嬉しいニュースを発見

「Microsoft Windows Azure」の国内ビジネス強化に向けて 日本リージョンの開設計画を公開

日本リージョンキター!

しかも関東と関西で地域レプリケーション可能! 通信速度の改善に大きく寄与しそうな日本リージョン構築の発表ですよ こういう足回りの部分から改善が期待できるアップデートは非常に嬉しい、超期待

i386フォルダの統合インストール

  • SP2は当てたけれど…

せっかくSP2をインストールしたにも関わらず、ローカルのi386フォルダはインストール当時のままではIIS等の再インストール等に何かと不便な為、インストールイメージにもパッチを適応する。
フォルダが「C:\i386」にある場合(メーカーPCの場合は「C:\windows\i386」)
「C:\sp2\i386」のようにファイルが展開されても良いように移動し、以下の様に実行する。

Server2003の場合
>WindowsServer2003-KB889101-SP1-x86-JPN.exe /integrate:C:\sp2
WindowsXPの場合
>WindowsXP-KB835935-SP2-JPN.exe /integrate:c:\sp2

  • 参考

http://support.microsoft.com/kb/884746/ja

IISがインストールできない

  • トラブルです

i386のファイルを指定すると「staxmem_dll をコピーできません」と言われる。
根性なしめ、そのへん何とかコピーしろよと思わなくも無いが、そうも言ってられないので調査開始

で、紆余曲折を経て、なんとか対応するナレッジを発見


文書番号:894351「Windows XP Professional SP2 を実行しているコンピュータに IIS をインストールするときにエラー メッセージ "staxmem.dll をコピーできません" が表示されることがある 」
http://support.microsoft.com/kb/894351/ja

タイトル長っ、まぁいいか


要するに「Secedit.sdb」と言うデータベース ファイルが破損しているかもしれないので
チェックとリカバリと場合によっては修復か再生成の必要がると、こういうこと

早速実行してみる

  • チェックの実行

C:\>esentutl /g C:\Windows\security\database\secedit.sdb

Microsoft(R) Windows(TM) Database Utilities
Version 5.1
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating INTEGRITY mode...
Database: C:\Windows\security\database\secedit.sdb
Temp. Database: TEMPINTEG3764.EDB

Checking database integrity.

The database is not up-to-date.
This operation may find that this database is corrupt because data from the log files has yet to be placed in the database.

To ensure the database is up-to-date please use the 'Recovery' operation.


Scanning Status (% complete)

0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................


Integrity check successful.

Operation completed successfully in 1.0 seconds.

どうもよろしくないらしい

  • sdbの修復

「This operation may find that this database is corrupt」と表示されたので修復か再生成を行う、先ずは修復

esentutl /p C:\Windows\security\database\secedit.sdb

C:\Documents and Settings\Administrator>esentutl /p C:\Windows\security\database
\secedit.sdb

Microsoft(R) Windows(TM) Database Utilities
Version 5.1
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating REPAIR mode...
Database: C:\Windows\security\database\secedit.sdb
Temp. Database: TEMPREPAIR1252.EDB

Checking database integrity.

The database is not up-to-date. This operation may find that
this database is corrupt because data from the log files has
yet to be placed in the database.

To ensure the database is up-to-date please use the 'Recovery' operation.


Scanning Status (% complete)

0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................


Integrity check successful.

Note:
It is recommended that you immediately perform a full backup
of this database. If you restore a backup made before the
repair, the database will be rolled back to the state
it was in at the time of that backup.

Operation completed successfully in 8.641 seconds.

ここでIISのインストールを施行、動かなきゃ再生成になるらしい

まぁ結果としては、インストール成功、じゃあとりあえずウチはOKだな

  • 忘れずにASP.NETもインストール

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -i
ASP.NET (2.0.50727) のインストールを開始します。
................................................................................
...
ASP.NET (2.0.50727) のインストールが完了しました。

完了

Windows板Oracle10gにPatchsetをインストールする

前提条件

  • SGAが400MB以上あること
  • 自動メモリ管理(ASM)はONで構わない
  • SHRED_POOL_SIZEが150MB以上あること
  • JAVA_POOL_SIZEが150MB以上あること

サービスを停止する

OracleDBConsole[インスタンス名]
OracleOraDb10g_home1iSQL*Plus
OracleOraDb10g_home1TNSListener
OracleService[インスタンス名]
※以下はその他のサービスによりDLLをロックされる場合に停止
Distributed Transaction Coordinator
Windows Firewall/Internet Connection Sharing (ICS)
Windows Management Instrumentation

Pachsetのインストール

  1. Patchset CD-ROMから対象のZIPファイルをコピー
  2. ZIPファイルを解凍
  3. setup.exeを実行しUniversalInstallerを実行
  4. インストール先の指定、すでにインストールされているorahomeを指定し、上書きする

サービスを起動

OracleDBConsole[インスタンス名]
OracleService[インスタンス名]
OracleOraDb10g_home1iSQL*Plus
OracleOraDb10g_home1TNSListener

DBの更新準備

Oracleにinternalで接続

>sqlplus /NOLOG
SQL>connect / as sysdba
SQL>startup nomount

初期化方法の確認
  • システム初期化パラメータファイル(initsid.ora)を使用しているのか、サーバ・パラメータ・ファイルspfile[dbname].oraを使用しているのかを確認

SQL> show parameter pfile

NAME TYPE VALUE
spfile string E:\ORACLE\PRODUCT\10.2.0\DB_1\DBS\SPFILE[インスタンス名].ORA
サーバパラメータの確認と修正
  • SGAターゲットのサイズを確認し350MB以下であれば修正

SQL> show parameter sga_target

NAME TYPE VALUE
sga_target big integer 280

SQL> ALTER SYSTEM SET SGA_TARGET='400M' SCOPE=spfile;

  • shared_pool_sizeのサイズを確認し150MB以下であれば修正

SQL> show parameter shared_pool_size

NAME TYPE VALUE
shared_pool_size big integer 0

SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;
システムが変更されました。

  • java_pool_sizeのサイズを確認し150MB以下であれば修正

SQL> show parameter java_pool_size

NAME TYPE VALUE
java_pool_size big integer 0

SQL> ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;
システムが変更されました。

  • DBを一旦終了

SQL> shutdown
ORA-01507: データベースがマウントされていません。
ORACLEインスタンスがシャットダウンされました。

DBの更新作業

DBをアップグレードモードで起動する

SQL> connect / as sysdba
アイドル・インスタンスに接続しました。
SQL> startup upgrade
ORACLEインスタンスが起動しました。

Total System Global Area 419430400 bytes
Fixed Size 1289832 bytes
Variable Size 322961816 bytes
Database Buffers 92274688 bytes
Redo Buffers 2904064 bytes

データベースがマウントされました。
データベースがオープンされました。

ログ取得の設定を行い、アップグレードスクリプトを実行する

SQL> spool patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off

アップグレードログを確認

sqlplusを起動したカレントディレクトリに保存されたpatch.logを確認し異常がないことを確認する

DBの再起動

SQL> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 419430400 bytes
Fixed Size 1289832 bytes
Variable Size 331350424 bytes
Database Buffers 83886080 bytes
Redo Buffers 2904064 bytes

データベースがマウントされました。
データベースがオープンされました。

utlrp.sqlスクリプトの実行
  • INVALIDステータスとなっているPL/SQLパッケージを再コンパイルします。この手順は必須ではありませんが、実行しておくことを推奨

SQL> @?/rdbms/admin/utlrp.sql