[Oracle] DBCAでデータベースを作成しようとするとORA-00439が発生 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

Oracle 9i DatabaseのStandard Editionにおいて、Database Configuration Assistantを使って自動アーカイブを設定したデータベースを作成しようとすると

ORA-00439 feature not enabled:Managed Standby

が発生します。


これは、DBCAがEditionの区別をしていないことが原因。


自動アーカイブを指定するとDBCAはStandard Editionであろうが、Enterprise Editionであろうが、LOG_ARCHIVE_DEST_1という初期化パラメータを設定します。


しかし、このLOG_ARCHIVE_DEST_1はEnterprise Editionでしか使えないパラメータであるため、Standard Editionの場合はデータベース作成時にエラーになってしまうのです。


そのため、Standard Editionの場合は、[すべての初期化パラメータ]を表示して、LOG_ARCHIVE_DEST_1を空白にし、LOG_ARCHIVE_DESTにアーカイブ先をフルパスで記述しなければなりません。


ただ、この時、横着してLOG_ARCHIVE_DEST_1の記述内容をそのままLOG_ARCHIVE_DESTにコピーすると、

ORA-16032:parameter LOG_ARCHIVE_DEST destination string cannot be tranclated
ORA-09291:sksachk:invarid device specified for archive destination

という別のエラーが発生します。


これはLOG_ARCHIVE_DESTではLOG_ARCHIVE_DEST_1のような


'LOCATION={ORACLE_BASE}\oradata\{DB_NAME}\archive'

という形式の記述が許されないからです。


LOG_ARCHIVE_DESTの場合は、単純に

{ORACLE_BASE}\oradata\{DB_NAME}\archive

というふうにアーカイブ先をフルパスで記述しなければなりません。


なお、DBCAで自動アーカイブを設定すると後が楽ではあるのですが、データベースの作成が遅くなるというデメリットもあります。


そのため、データベースを速く作成したいのであれば、面倒ですが、一旦非アーカイブログモードでデータベースを作成し、データベース作成後に自動アーカイブに切り替えたほうがいいようです。