Oracle管理タイプに依存する表のアップグレード
Oracle Database 12cリリース2 (12.2)以上では、Oracle管理タイプに依存するユーザー表を手動でアップグレードする必要があります。
ノート:
AutoUpgradeユーティリティを使用してアップグレードした場合、AutoUpgradeがアップグレード中に自動的にこのタスクを処理します。このタスクを実行する必要はありません。
Oracle管理タイプに依存するユーザー表(AQ
キュー表など)がデータベースに含まれる場合、アップグレード後にutluptabdata.sql
コマンドを実行して、Oracle管理タイプの変更の影響を受けるすべてのユーザー表に対してALTER TABLE UPGRADE
を実行します。この動作変更によって、ユーザー表は、アップグレード中にREAD ONLY
状態のままになります。ユーザーはSYSDBA権限(AS SYSDBA
)を使用してアプリケーションにログインし、Oracle管理タイプに依存するアプリケーション表を変更できなくなります。
データベース・アップグレードの後にアップグレードする必要がある表を特定するには、SYSDBAとして
データベースに接続し、次の問合せを実行します。
COLUMN owner FORMAT A30
COLUMN table_name FORMAT A30
SELECT DISTINCT owner, table_name
FROM dba_tab_cols
WHERE data_upgraded = 'NO'
ORDER BY 1,2;
この問合せによって、UPGRADED
としてリストされないすべての表が示されます。ただし、utluptabdata.sql
スクリプトは、Oracle管理タイプに依存する表のみをアップグレードします。問合せによって表がリストされた場合、utluptabdata.sql
スクリプトを実行して依存ユーザー表にALTER TABLE UPGRADE
コマンドを実行し、これらのOracle管理タイプをそのタイプの最新バージョンにアップグレードします。
utluptabdata.sql
スクリプトは、Oracle管理タイプに依存するすべての表に対するALTER
権限を持つユーザー・アカウントか、またはSYSDBAとして
ログインしているSYSDBAシステム権限を付与されたユーザーを使用して実行する必要があります。
パラメータSERVEROUTPUTがON
に設定されている場合、utluptabdata.sql
スクリプトによって、アップグレードされたすべての表の名前が表示され、表のアップグレード中に発生したエラーがリストされます。サーバー出力をON
に設定するには、次のコマンドを実行します。
SET SERVEROUTPUT ON
@utluptabdata.sql