« Mac De APEX3.0 #4 | トップページ | OracleがSAPを告発! »

2007年3月23日 (金) / Author : Hiroshi Sekiguchi.

Mac De Apex3.0 #5

さて、以前にも少々触れたが、Apexのupgradeの失敗、又は、upgrade後に以前のリリースに戻す方法について、備忘録程度に記述しておく。

手順については、マニュアルにも記載されているが、imageファイルについては、移行前に別名で保存して必要があるのでお忘れなく。
http://download-west.oracle.com/docs/cd/B32472_01/doc/install.300/b32468/trouble.htm#BABDJIFE



HTMLDB1.5からはじまり、HTMLDB2.0、APEX2.2そして、APEX3.0へと移行したのだが、前リリースのimagesフォルダや、marvel.conf(利用しているHTTP Serverによっては、dads.confを使用している場合あり)は、それぞれ別名で退避、また移行後、旧リリースのスキーマを削除していないことを前提としている。

以下はApex3.0移行後にApex2.2へ戻す例である。尚、apexは停止しておくこと!。


  1. Apex3.0用imagesディレクトリを別名で退避(以下例では、images_30として改名)又は、削除する。

  2. 事前に退避しておいた、Apex2.2用imagesディレクトリ(以下の例では、images_22)をimagesディレクトリとして改名又はコピーする。

  3. Apex3.0用に書き換えたmarvel.confを別名で退避(以下例では、marvel.conf.30と改名)又は、削除する。

  4. 事前に退避しておいた、Apex2.2用marvel.confファイル(以下例では、marvel.conf.22)をmarvel.confに改名又はコピーする。

  5. SQL*Plusを起動し、SYSユーザ接続後、スキーマを FLOWS_020200(Apex2.2用スキーマ)に変更する。

  6. flows_020200.wwv_flow_upgrade.switch_schemas()プロシージャにて、APEXのスキーマをFLOWS_030000(Apex3.0用スキーマ)からFLOWS_020200(Apex2.2スキーマ)に切り替える。

  7. flows_030000スキーマを削除する。


以上のような手順でApex3.0からApex2.2に戻す事ができる。以下はApex3.0からApex2.2に戻した際のログである。
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ ll | grep images
drw-r----- 881 oracle oinstall 29954 Mar 18 17:21 images
drw-r----- 998 oracle oinstall 33932 Mar 18 14:33 images_20
drw-r----- 876 oracle oinstall 29784 Mar 18 13:00 images_22
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ mv images images_30
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ cp -rf images_22 images
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ cd ../apache/modplsql/conf
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/apache/modplsql/conf oracle$ ls marvel*
marvel.conf marvel.conf.20 marvel.conf.22
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/apache/modplsql/conf oracle$ mv marvel.conf marvel.conf.30
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/apache/modplsql/conf oracle$ mv marvel.conf.22 marvel.conf
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ sqlplus /nolog
> conn sys/xxxx@tiger as sysdba
SYS> l
1 select
2 username,
3 account_status
4 from
5 dba_users
6 where
7 username like '%¥_PUBLIC¥_%' escape '¥'
8 or username like 'FLOWS¥_%' escape '¥'
9 order by
10 account_status,
11* username
SYS> /

USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
FLOWS_020000 LOCKED
FLOWS_020200 LOCKED
FLOWS_030000 LOCKED
FLOWS_FILES LOCKED
APEX_PUBLIC_USER OPEN
HTMLDB_PUBLIC_USER OPEN

6行が選択されました。

SYS>
SYS> alter session set current_schema = FLOWS_020200;

セッションが変更されました。

SYS> exec flows_020200.wwv_flow_upgrade.switch_schemas('FLOWS_030000','FLOWS_020200');

PL/SQLプロシージャが正常に完了しました。

SYS> drop user flows_030000 cascade;

ユーザーが削除されました。

SYS>

これでApex2.2への戻しは終了である。

注意)HTMLDB_PUBLIC_USERというスキーマは、HTMLDB2.0までの接続スキーマである。HTMLDB2.0以前に戻す可能性がある場合にはこれも残しておく(lockしておいたほうがより安全だが)か、退避しておく必要がある。また、FLOWS_020000というスキーマはHTMLDB2.0のスキーマである。

| |

トラックバック


この記事へのトラックバック一覧です: Mac De Apex3.0 #5:

コメント

コメントを書く