2.13.9 Oracle Database Enterprise Editionに関する既知の不具合

次に、Oracle Database 12cリリース2 (12.2)でのOracle Database Enterprise Editionの既知の不具合を示します。

2.13.9.1 Oracle Bug#25376799

データベースをリリース12.2にアップグレードし、元のリリースにダウングレードする場合、Oracle XML DB (XDB)コンポーネントが無効なオブジェクトを含んで無効になることがあります。次に例を示します。

OBJECT_NAME OWNER
DBMS_SODA_ADMIN XDB
DBMS_SODA_ADMIN XDB
DBMS_SODA_ADMIN PUBLIC
DBMS_SODA_DML XDB
DBMS_SODA_DML XDB
DBMS_SODA_UTIL SYS
DBMS_SODA_UTIL SYS

回避策:

SYSとして次の文を発行して、無効なオブジェクトを削除します。

drop public synonym DBMS_SODA_ADMIN;
drop package XDB.DBMS_SODA_ADMIN;
drop package SYS.DBMS_SODA_UTIL;
drop package XDB.DBMS_SODA_DML;

無効なSODAオブジェクトを削除した後、@utlrpを実行してXDBを再検証します。

2.13.9.2 Oracle Bug#24647145

Oracle Database 12cリリース2 (12.2)以降、コンテキスト索引によって前のリリースには存在しなかった索引を作成できるようになります。リリース12.2より前に作成されたコンテキスト索引をリリース12.2以上にインポートするためにデータ・ポンプを使用すると、新しいコンテキスト索引表がシステム表領域に作成されます。後でコンテキスト索引を移動するためにトランスポータブル表領域を使用すると、次のエラーが発生します。

ORA-39932: Extensible Index <index name> not fully contained in the transportable set

回避策:

トランスポータブル表領域を動作させるには、SYSTEM表領域にある表を他の索引表が置かれている場所に移動する必要があります。次に、内部表の索引を再作成する必要があります。SYSTEM表領域にあるためにトランスポータブル表領域操作を妨害するコンテキスト索引によって作成された表を見つけるには、次の問合せを実行します。

SELECT t1.table_name, t2.index_name FROM user_tables t1, user_indexes t2 WHERE t1.table_name = t2.table_name AND t1.table_name LIKE 'DR$index_name%$U' AND t1.tablespace_name='SYSTEM';

次に、この問合せによって返されるすべての表に対して次を実行します(パーティション化された索引には、複数の表がある可能性があります)。

ALTER TABLE table_name MOVE TABLESPACE tablespace_name

tablespace_nameは、表の新しい表領域の名前です。この問合せによって返されるすべての索引に対して次を実行します。

ALTER INDEX index_name REBUILD;

2.13.9.3 Oracle Bug#24484204

バインド変数を使用する分析ビューの問合せや非対称の述部を持つ問合せは時間がかかります。後者の典型的な例は、複数のディメンションにまたがる述部を持つ問合せです。たとえば、(年, 地域)です(('1998','EAST')または('1999', 'WEST')など)。

回避策:

この問題の回避策は、ALTER SESSION SET _hcs_no_av_jback_opt = TRUEを指定して、後戻り結合の最適化を無効にします。

2.13.9.4 Oracle Bug#24477640

CASE文の入った分析ビュー(AV)によって計算されたメジャーが含まれたAV問合せを実行すると、ORA-00600エラーが発生します。

回避策:

ALTER SESSION SET _hcs_no_sp_jback_opt = TRUE文を指定します。または、計算定義で他の構成を使用します。

2.13.9.5 Oracle Bug#24459231

高速ホーム・プロビジョニング制御(RHPCTL)ユーティリティ・コマンドは、高速ホーム・プロビジョニング・サーバー(RHPS)が構成後に初めて起動されたときは動作しません。

回避策:

コマンドsrvctl stop rhpserver、次にsrvctl start rhpserverを発行してRHPSを再起動します。

2.13.9.6 Oracle Bug#24322363

ソフトウェアのみのイメージが、Rapid Home Provisioning (RHP)を使用してプロビジョニングされた永続的なホーム・パスでサポートされる唯一のイメージ・タイプです。既存の作業コピーまたはホームから作成されたイメージは、永続的なホーム・パスでのホームのプロビジョニングではサポートされません。

回避策:

ソフトウェアのみのインストールから作成されたイメージを使用してください。

2.13.9.7 Oracle Bug#24291322

BFILEを開く際に、ディレクトリ・オブジェクト・パスまたはファイル名ではシンボリック・リンクは使用できません。ディレクトリ・パス全体および ファイル名がチェックされ、シンボリック・リンクが見つかると、次のエラーが返されます。

ORA-22288: file or LOB operation FILEOPEN failed soft link in path

回避策:

開こうとしているデータベース・ディレクトリ・オブジェクトまたはファイル名にシンボリック・リンクが含まれている場合、実際のパスおよびファイル名を指定するように変更します。

2.13.9.8 Oracle Bug#23713504

サービス指向のバッファ・キャッシュ・アクセス最適化機能では、ディスクからのデータ・ブロックの読取りまたはノード間ブロック転送を継続的に監視し、この情報を利用してデータ依存のキャッシングを実行します。データ依存のキャッシングは、直前にデータ・ブロックの読取りや転送がない場合、サービス再配置のケースでは動作しません。これは、問い合せられたすべてのブロックがすでにバッファ・キャッシュ内にあり、そのため、新しいブロックが読み取られることも転送されることもない場合に発生する可能性があります。

回避策:

なし。

2.13.9.9 Oracle Bug#23569490

多数のコレクションがあり、12.2より前のクライアントで動作している場合、スナップショット・サイズが変わり、またコレクション・イメージ変換が必要なため、さらに大きいオブジェクト・キャッシュが必要です。

回避策:

オブジェクト・キャッシュ・サイズは、OBJECT_CACHE_OPTIMAL_SIZE初期化パラメータを使用して設定できます。これは、デフォルトでは低い値に設定されています。

アプリケーションで使用されるコレクションの数およびオブジェクト・タイプに基づき、必要なサイズは次の式を使用して算出できます。

max(20K * Number of Collection Types, 5K * Object type)

2.13.9.10 Oracle Bug#22022250

2番目の無効なタイプ・オブジェクトが現在前のエディションから継承されている場合に、現在無効な2番目のタイプ・オブジェクトに依存するエディション化タイプ・オブジェクトをコンパイルしようとすると、このアクションによって、2番目のタイプ・オブジェクトが前のエディションから不適切に継承され続けることがあります。無効なタイプ・オブジェクトを現在のエディションに実体化する必要があることをOracle Databaseで特定することに失敗します。

回避策1:

予防的に、タイプ・オブジェクトに対してDDLを試行する前に、ターゲット・オブジェクトが現在依存するすべてのタイプ・オブジェクトがすでに有効であるか、現在のエディションで実際に存在していることを確認する必要があります。

回避策2:

予防的な防止を行わない場合の唯一の回避策は、前のエディションから間違って継承されているオブジェクトを特定し、手動でそれらのオブジェクトを現在のエディションでコンパイルすることです。

2.13.9.11 Oracle Bug#21546668およびOracle Bug#24370018

Oracle E-Business Suite (Oracle EBS) 12.2をOracle Database 11gリリース2 (11.2.0.4)から12.2にアップグレードすると、アップグレード・ファイルに次のエラーが返されます。

Identifier CATALOG 15-08-03 04:29:22
SCRIPT    = [/ade/b/3767230542/oracle/rdbms/admin/sqlsessend.sql]
ERROR     = [ORA-22348: The object type DDL is not supported in Editioned schema]
STATEMENT = [alter type sql_plan_row_type modify attribute (
  object_owner  VARCHAR2(128),
  object_name   VARCHAR2(128),
  object_alias  VARCHAR2(261),
  qblock_name   VARCHAR2(128))
cascade]
---------------------------------------------------------------------------

---------------------------------------------------------------------------
Identifier CATPROC 15-08-03 04:33:04
SCRIPT    = [/ade/b/3767230542/oracle/rdbms/admin/sqlsessstart.sql]
ERROR     = [ORA-22348: The object type DDL is not supported in Editioned
schema]
STATEMENT = [alter type sql_plan_row_type modify attribute (
  object_owner  VARCHAR2(128),
  object_name   VARCHAR2(128),
  object_alias  VARCHAR2(261),
  qblock_name   VARCHAR2(128))


DIAGNOSTIC ANALYSIS:
---------------------------------------------------------------------------
from catupgrd840.log

04:29:22 SQL> alter type sql_plan_stat_row_type compile specification reuse settings;

Type altered.

Elapsed: 00:00:00.03
04:29:22 SQL>
04:29:22 SQL> alter type sql_plan_row_type modify attribute (
04:29:22   2    object_owner  VARCHAR2(128),
04:29:22   3    object_name   VARCHAR2(128),
04:29:22   4    object_alias  VARCHAR2(261),
04:29:22   5    qblock_name   VARCHAR2(128))
04:29:22   6  cascade;
alter type sql_plan_row_type modify attribute (
*
ERROR at line 1:
ORA-22348: The object type DDL is not supported in Editioned schema

........


Elapsed: 00:00:00.07
04:33:04 SQL>
04:33:04 SQL> Rem alter sql_plan_row_type for long identifiers
04:33:04 SQL> alter type sql_plan_row_type modify attribute (
04:33:04   2    object_owner  VARCHAR2(128),
04:33:04   3    object_name   VARCHAR2(128),
04:33:04   4    object_alias  VARCHAR2(261),
04:33:04   5    qblock_name   VARCHAR2(128))
04:33:04   6  cascade;
alter type sql_plan_row_type modify attribute (
*
ERROR at line 1:
ORA-22348: The object type DDL is not supported in Editioned schema

回避策:

データベースをアップグレードする前に、アップグレードしている環境でエラーを起こしているタイプを削除します。このタイプは後で自動生成されます。次のPL/SQLコマンドを実行します。

declare
  cursor c1 is
    select u.name, o.name
    from sys.type$ t, sys.obj$ o, sys.user$ u
    where o.type# = 13
          and bitand(t.properties, 8388608) = 8388608 --transient cursor types
          and o.oid$ = t.tvoid
          and o.spare3 = u.user#
          and bitand(u.spare1, 16) = 16;
  type_owner varchar2(128);
  type_name  varchar2(128);
begin
  -- Drop system generated editioned transient cursor types
  open c1;
  loop
    fetch c1 into type_owner, type_name;
    exit when c1%NOTFOUND;
    begin
      EXECUTE IMMEDIATE 'drop type "' || type_owner || '"."' ||
                        type_name || '" force';
    exception
      when others then
        null;
    end;
  end loop;
  close c1;
exception
  when others then
    null;
end;
/