IT Soldier Sakuri !!

Oracle使い。いつのまにかIT戦士になってしまったさくりの可哀想な奮闘記。

Oracle11g バージョンアップ・パッチ適用 手順メモ①

今日は朝始発にて出社してOracleのバージョンアップに励んできた!

うちの会社はOracle11gを使ってるんだけど、
11.2.0.3のサポート(パッチ提供)期間が2015/08/27までだっていうから、
お盆休み中になんとかしろって話だったんだけど、
Oracleサーバ確認したら11.2.0.1なわけwww

え………(´゚д゚`)ポカーン

ってなりました。
とっくにサポート期間切れてますやん。。。

そんなわけで、3段階踏まなくちゃいけない。
①11.2.0.1   → 11.2.0.1.16 ※11.2.0.4に上げるための最低パッチ
②11.2.0.1.16 → 11.2.0.4
③11.2.0.4   → 11.2.0.4.16

ちなみに11.2.0.4.9~11.2.0.4.17まではDBLink系の爆弾を抱えているので、
関連するOracleサーバのバージョンを合わせなければエラーが出まくるので要注意w

うちの会社は11.2.0.4.13と11.2.0.4.16のサーバ間で
1日あたり1GBものログ(trcファイル)を吐きまくられて
恐怖に打ち震えました((((;´゚Д゚)))ガクガクブルブル

11.2.0.4.18でバグfixするとOracleサポートから連絡あったけど、
毎日ログファイル消す仕事つらぽよなので、11.2.0.4.16で全台合わせることに。



バージョンアップの手順 ※11.2.0.X→11.2.0.4

事前作業
Cドラ直下にtmpフォルダを作成し、その中にパッチを解凍しておく。
※7分割されてる圧縮ファイル

当日作業(60分弱)

1 INVALIDオブジェクト確認
C:\>sqlplus /nolog
SQL>spool c:\temp\upgrade_info1.txt
SQL>conn sys/[パスワード] as sysdba
SQL>SELECT distinct object_name FROM dba_invalid_objects;
2 バージョン確認
SQL>select * from v$version;
SQL>spool off
3 11.2.0.4インストール
C:\TEMP\database\setup.exeを管理者として実行
1. セキュリティアップデートの構成(ステップ1/11)
2. softwareUpdataのダウンロード(ステップ2/11)
3. インストールオプションの選択(ステップ3/11)
  データベースソフトウェアのみインストールするを指定
4. Gridインストールオプション(ステップ4/11)
 単一インスタンスデータベースのインストールを指定
5. 製品言語の選択(ステップ5/11)
6. データベースエディションの選択(ステップ6/11)
7. インストール場所の指定(ステップ7/11)
  オラクルベースが、C:\app\Administratorになっている事を確認。
  ソフトウェアの場所に、C:\app\Administrator\product\11.2.0\dbhome_2 を入力。
8. 前提条件チェックの実行(ステップ8/11)
9. サマリー(ステップ9/11)
10.製品のインストール(ステップ10/11)
11.完了(ステップ11/11)
4 アップグレード前情報ツール実行
C:\>SET ORACLE_HOME=D:\app\Administrator\product\11.2.0\dbhome_1
C:\>SET ORACLE_SID=[SID名を設定]
C:\>SET Path=C:\app\Administrator\product\11.2.0\dbhome_1\BIN;%PATH%
C:\>cd C:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN
C:\>sqlplus /nolog
SQL>spool c:\temp\upgrade_info2.txt
SQL>conn sys/[パスワード] as sysdba
SQL>@utlu112i.sql
SQL>spool off
5 データベースのアップグレード
C:\app\Administrator\product\11.2.0\dbhome_2\BIN\dbuaを実行する。
1.ようこその画面表示
2.データベースの選択
 [SIDを指定する]
 警告画面が表示されるので、はいを選択する。
3.アップグレードオプション(ステップ1/3)
 アップグレード終了時に無効なオブジェクトを再コンパイルを選択する。
4.リカバリー及び診断の場所(ステップ2/3)
5.サマリー(ステップ3/3)
6.完了
6 確認
C:\>SET ORACLE_HOME=C:\app\Administrator\product\11.2.0\dbhome_2
C:\>SET ORACLE_SID=[SID名設定]
C:\>SET Path=C:\app\Administrator\product\11.2.0\dbhome_2\BIN;%PATH%
C:\>cd C:\app\Administrator\product\11.2.0\dbhome_2\RDBMS\ADMIN
C:\>sqlplus /nolog
SQL>spool c:\temp\upgrade_info3.txt
SQL>conn sys/[パスワード] as sysdba
SQL>@utlu112s.sql
SQL>spool off
SQL>@catuppst.sql
SQL>@utlrp.sql
SQL>SELECT count(*) FROM dba_invalid_objects;
SQL>SELECT distinct object_name FROM dba_invalid_objects;
7 リスナー再構成
1.全てのプログラムからdbhome_1側のNetCAを立ち上げて、リスナーを削除する。
2.全てのプログラムからdbhome_2側のNetCAを立ち上げて、リスナーを追加する。
3.C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\Adminのtnsnames.oraを
 C:\app\Administrator\product\11.2.0\dbhome_2\NETWORK\Adminにコピペする。
8 接続確認
1.下記で接続できることを確認する。
 conn sys/[パスワード]@[SID名]
2.アラートログでおかしなエラーが出てないことを確認する。
3.リスナーログでおかしなエラーが出てないことを確認する。

7番目の手順のところだけど、リスナーはdbhome_1が上がっている状態。dbhome_2側でリスナーって出来もしてなかった。なんでだろう。

あと、こわいからdbhome_1側は削除しない感じでそのままいきます。
たぶん5GBくらいだし、そのままにしててもいっかなって。