A RDFセマンティク・グラフ・サポートの有効化、ダウングレードまたは削除

現在のOracle DatabaseリリースでRDFセマンティク・グラフ・サポートに関連する任意の型、シノニムまたはPL/SQLパッケージを使用できるようにするためにはいくつかステップを実行する必要があります。

1つ以上のスクリプトを実行し、Spatial and Graphがインストールされており、Partitioningオプションが使用可能であることを確認する必要があります。これらの要件は、「RDFセマンティク・グラフ・サポートの有効化」とそのサブトピックで説明されています。

この付録では、RDFセマンティク・グラフ・サポートを有効にした後、次のいずれかを実行する必要がある場合、そのステップについても説明します。

A.1 RDFセマンティク・グラフ・サポートの有効化

現在のOracle DatabaseリリースでRDFセマンティク・グラフ・サポートに関する任意の型、シノニムまたはPL/SQLパッケージを使用するには、この機能を新しいOracle Databaseインストールにインストールするか、またはこの機能を以前のリリースからアップグレードする必要があります。また、Spatial and Graphがインストールされていること、およびPartitioningオプションが使用可能であることも、確認する必要があります。

A.1.1 新規データベース・インストールでのRDFセマンティク・グラフ・サポートの有効化

RDFセマンティク・グラフは、Spatial and Graphのリリース12.2またはそれ以降のリリースがインストールされると自動的に有効化されます。

RDFセマンティク・グラフが正常に有効化されると、次の列値を持つ行がMDSYS.RDF_PARAMETER表に現れます。

  • NAMESPACE: MDSYS

  • ATTRIBUTE: SEM_VERSION

  • VALUE: (12.2で始まる文字列)

  • DESCRIPTION: VALID

A.1.2 リリース11.1、11.2または12.1からのRDFセマンティク・グラフ・サポートのアップグレード

セマンティク・テクノロジ・サポートが含まれるOracle Databaseリリース11.1または11.2からのアップグレードでは、データベースがアップグレードされると、セマンティク・テクノロジ・サポートがリリース12.1以上に自動的にアップグレードされます。

ただし、既存のリリース11.1または11.2のRDFネットワークにxsd:float、xsd:double、xsd:booleanまたはxsd:timeの型付きリテラル値を含むトリプルがある場合は、RDFデータの移行が必要な場合もあります。

RDFデータを移行する必要があるかどうかを調べるには、DBA権限を持つユーザーとしてデータベースに接続し、次のようにMDSYS.RDF_PARAMETER表を問い合せます。

SELECT namespace, attribute, value FROM mdsys.rdf_parameter
  WHERE namespace='MDSYS' 
  AND attribute IN ('FLOAT_DOUBLE_DECIMAL',
                    'XSD_TIME', 'XSD_BOOLEAN', 
                    'DATA_CONVERSION_CHECK');

FLOAT_DOUBLE_DECIMAL属性、XSD_TIME属性またはXSD_BOOLEAN属性に文字列値INVALIDがある場合、またはDATA_CONVERSION_CHECK属性に文字列値FAILED_UNABLE_TO_LOCK_APPLICATION_TABLESFAILED_INSUFFICIENT_WORKSPACE_PRIVILEGESまたはFAILED_OLS_POLICIES_ARE_ENABLEDがある場合は、RDFデータを移行する必要があります。

ただしFLOAT_DOUBLE_DECIMAL属性、XSD_TIME属性およびXSD_BOOLEAN属性が存在しないか、文字列値VALIDがなく、DATA_CONVERSION_CHECK属性が存在しない場合、RDFデータを移行する必要はありません。ただし、セマンティク・ネットワークに空のRDFリテラルがある場合は、「空のRDFリテラルの処理」を参照してください。既存の空リテラルを新しい形式に移行することを選択した場合は、この項のステップに従います。

RDFデータを移行するには、次のステップに従います。

  1. SYSDBA権限を持つSYSユーザーとしてデータベースに接続(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)し、SET CURRENT_SCHEMA=MDSYSを入力します。

  2. ユーザーMDSYSに次の権限があることを確認します。

    • セマンティク・ネットワークのすべてのアプリケーション表へのINSERT権限

    • ALTER ANY INDEX権限(オプション: ドキュメントのセマンティク索引付けが使用されている場合のみ必要)

    • バージョン対応アプリケーション表が変更されたワークスペースに対するACCESS権限(オプション: RDFデータにWorkspace Managerを使用する場合のみ必要)

  3. RDFデータに対するOLSポリシーを一時的に無効化します(オプション: RDFデータにOLSが使用されている場合のみ必要)。OLSポリシーは、convert_old_rdf_dataを実行した後に、再度有効にできます。

  4. SQL*Plusを起動します。すでに存在する空のリテラルを新しい形式に変換せずにRDFデータを移行する(「空のRDFリテラルの処理」を参照)には、次の文を入力します。

    EXECUTE sdo_rdf_internal.convert_old_rdf_data;
    

    RDFデータを移行し、既存の空のリテラルも新しい形式に変換する場合は、convert_old_rdf_dataflagsパラメータ('CONVERT_ORARDF_NULL'に設定)を付けてコールします。また、オプションでtablespace_nameパラメータを使用し、データ移行中に中間表を作成するときに使用する表領域を指定することができます。たとえば次の文は、古いセマンティク・データを移行し、既存の"orardf:null "値を""に変換して、中間表にMY_TBS表領域を使用します。

    EXECUTE sdo_rdf_internal.convert_old_rdf_data(
      flags=>'CONVERT_ORARDF_NULL', 
      tablespace_name=>'MY_TBS');
    

    セマンティク・ネットワークにxsd:float、xsd:double、xsd:timeまたはxsd:booleanの型付きリテラルを使用する(または使用の影響を受ける)多数のトリプルが含まれている場合、 sdo_rdf_internal.convert_old_rdf_dataプロシージャの実行に非常に時間がかかります。

  5. 次の文を入力します。

    • Linuxの場合: @$ORACLE_HOME/md/admin/semrelod.sql

    • Windowsの場合: @%ORACLE_HOME%\md\admin\semrelod.sql

ノート:

リリース12.1以上にアップグレードした後に、sdo_rdf_internal.convert_old_rdf_dataプロシージャとsemrelod.sqlスクリプトが実行されなかった場合、SEM_MATCH問合せの実行時にORA-00904 (無効識別子)エラーが発生することがあります。

A.1.2.1 アップグレード後に必要なデータ移行

データベースのアップグレード終了後、以前のリリースで使用したRDFデータがある場合、そのRDFデータの移行が必要です。データの移行を行わないと、SEM_MATCH問合せの実行時に次のエラーが発生します。

ORA-20000:  RDF_VALUE$ Table needs data migration with SEM_APIS.MIGRATE_DATA_TO_CURRENT

リリース12.2では、MDSYS.RDF_VALUE$表に列が追加されました (「強化されたRDF ORDER BY問合せ処理」を参照)。追加された列へのデータの格納は、既存のRDFネットワークをアップグレードした後で行う必要があります。特にMDSYS.RDF_PARAMETER表の次の項目で、データ移行が必要になることに注意します。

  • NAMESPACE: MDSYS

  • ATTRIBUTE: RDF_VALUE$

  • VALUE: INVALID_ORDER_COLUMNS

  • DESCRIPTION: RDF_VALUE$でSEM_APIS.MIGRATE_DATA_TO_CURRENTによるデータ移行が必要です。

移行が必要な場合、RDFセマンティク・グラフのインストールは当初INVALDとマークされます。これは、MDSYS.RDF_PARAMETERの次の行で示されます。

  • NAMESPACE: MDSYS

  • ATTRIBUTE: SEM_VERSION

  • VALUE: (12.2で始まる文字列)

  • DESCRIPTION: INVALID

新たなMDSYS.RDF_VALUE$列へデータを格納することによりデータ移行を行うには、次のステップに従います。

  1. SYSDBA権限を持つSYSユーザー(SYS AS SYSDBA)としてデータベースに接続し、プロンプトが表示されたらSYSアカウントのパスワードを入力します。

  2. 次の文を実行します。

    EXECUTE sem_apis.migrate_data_to_current;

データ移行が正常に行われると、MDSYS.RDF_PARAMETERからINVALID_ORDER_COLUMNS行が削除され、SEM_VERSION行の説明値にVALIDが割り当てられます。

さらに、xsd:float、xsd:double、xsd:booleanまたはxsd:timeの型付きリテラル値を含むトリプルを含んだ既存のリリース11.1または11.2のRDFネットワークをアップグレードする場合、追加のデータ移行が必要になることがあります。

追加のRDFデータ移行が必要かどうかを調べるには、DBA権限を持つユーザーとしてデータベースに接続し、MDSYS.RDF_PARAMETER表に対して次のような問合せを実行します。

SELECT namespace, attribute, value FROM mdsys.rdf_parameter
  WHERE namespace='MDSYS' 
  AND attribute IN ('FLOAT_DOUBLE_DECIMAL',
                    'XSD_TIME', 'XSD_BOOLEAN', 
                    'DATA_CONVERSION_CHECK');

FLOAT_DOUBLE_DECIMAL属性、XSD_TIME属性またはXSD_BOOLEAN属性に文字列値INVALIDがある場合、またはDATA_CONVERSION_CHECK属性に文字列値FAILED_UNABLE_TO_LOCK_APPLICATION_TABLESFAILED_INSUFFICIENT_WORKSPACE_PRIVILEGESまたはFAILED_OLS_POLICIES_ARE_ENABLEDがある場合は、RDFデータを移行する必要があります。

ただしFLOAT_DOUBLE_DECIMAL属性、XSD_TIME属性およびXSD_BOOLEAN属性が存在しないか、文字列値VALIDがなく、DATA_CONVERSION_CHECK属性が存在しない場合、RDFデータを移行する必要はありません。ただし、セマンティク・ネットワークに空のRDFリテラルがある場合は、「空のRDFリテラルの処理」を参照してください。既存の空リテラルを新しい形式に移行することを選択した場合は、この項のステップに従います。

RDFデータの移行は、次のステップに従います。

  1. SYSDBA権限を持つSYSユーザーとしてデータベースに接続(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)し、SET CURRENT_SCHEMA=MDSYSを入力します。

  2. ユーザーMDSYSに次の権限があることを確認します。

    • セマンティク・ネットワークのすべてのアプリケーション表へのINSERT権限

    • ALTER ANY INDEX権限(オプション: ドキュメントのセマンティク索引付けが使用されている場合のみ必要)

    • バージョン対応アプリケーション表が変更されたワークスペースに対するACCESS権限(オプション: RDFデータにWorkspace Managerを使用する場合のみ必要)

  3. RDFデータに対するOLSポリシーを一時的に無効化します(オプション: RDFデータにOLSが使用されている場合のみ必要)。OLSポリシーは、convert_old_rdf_dataを実行した後に、再度有効にできます。

  4. SQL*Plusを起動します。すでに存在する空のリテラルを新しい形式に変換せずにRDFデータを移行する(「空のRDFリテラルの処理」を参照)には、次の文を入力します。

    EXECUTE sdo_rdf_internal.convert_old_rdf_data;
    

    RDFデータを移行し、既存の空のリテラルも新しい形式に変換する場合は、convert_old_rdf_dataflagsパラメータ('CONVERT_ORARDF_NULL'に設定)を付けてコールします。また、オプションでtablespace_nameパラメータを使用し、データ移行中に中間表を作成するときに使用する表領域を指定することができます。たとえば次の文は、古いセマンティク・データを移行し、既存の"orardf:null "値を""に変換して、中間表にMY_TBS表領域を使用します。

    EXECUTE sdo_rdf_internal.convert_old_rdf_data(
      flags=>'CONVERT_ORARDF_NULL', 
      tablespace_name=>'MY_TBS');
    

    セマンティク・ネットワークにxsd:float、xsd:double、xsd:timeまたはxsd:booleanの型付きリテラルを使用する(または使用の影響を受ける)多数のトリプルが含まれている場合、 sdo_rdf_internal.convert_old_rdf_dataプロシージャの実行に非常に時間がかかります。

  5. 次の文を入力します。

    • Linuxの場合: @$ORACLE_HOME/md/admin/semrelod.sql

    • Windowsの場合: @%ORACLE_HOME%\md\admin\semrelod.sql

ノート:

リリース12.1以上にアップグレードした後に、sdo_rdf_internal.convert_old_rdf_dataプロシージャとsemrelod.sqlスクリプトが実行されなかった場合、SEM_MATCH問合せの実行時にORA-00904 (無効識別子)エラーが発生することがあります。

A.1.2.2 空のRDFリテラルの処理

リリース11.2では、値が空のRDFリテラルを処理する方法が変更されました。以前のリリースでは、値が空のリテラルは"orardf:null "に変換されていました。リリース11.2以上では、そのような値は変更されることなく(""のまま)格納されます。ただし既存の"orardf:null"値を""に移行するかどうかはオプションです。

"orardf:null "値がセマンティク・ネットワークに存在するかどうかを調べるには、DBA権限を持つユーザーとしてデータベースに接続し、次のようにMDSYS.RDF_PARAMETER表を問い合せます。

SELECT namespace, attribute, value FROM mdsys.rdf_parameter
  WHERE namespace='MDSYS' 
  AND attribute = 'NULL_LITERAL';

NULL_LITERAL属性に値EXISTSがある場合、セマンティク・ネットワークに"orardf:null "値が存在することになります。

A.1.3 ワークスペース・マネージャおよび仮想プライベート・データベースのサポート終了

Oracle Databaseリリース12.2から、次のサポートは行われなくなりました。

  • RDFデータに対するワークスペース・マネージャのサポート

  • RDFデータに対する仮想プライベート・データベース(VPD)のサポート

ワークスペース・マネージャ(WM)または仮想プライベート・データベース(VPD)のデータを含む既存のセマンティク・ネットワークをアップグレードした場合、RDFセマンティク・グラフのインストールはINVALIDとしてマークされます。さらに、MDSYS.RDF_PARAMETER表には、Feature not supported in current version' for the unsupported componentという説明が付けられた行が含まれるようになります。この状況を是正するには、既存のWMおよびVPDのデータをすべて破棄するとともに、WMおよびVPDのコンポーネントをアンインストールする必要があります。

RDFデータに対するワークスペース・マネージャのサポートをアンインストールするには:

  1. SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。

  2. SQL*Plusを起動し、次の文を入力します。

    • Linuxの場合: @$ORACLE_HOME/md/admin/sdordfwm_rm.sql

    • Windowsの場合: @%ORACLE_HOME%\md\admin\sdordfwm_rm.sql

    ノート:

    マルチテナント環境の場合は、catcon.plのスクリプトを実行します。『Oracle Database管理者ガイド』の、オラクル社提供SQLスクリプトのCDBにおける実行に関する項を参照してください。

RDFデータに対する仮想プライベート・データベースのサポートをアンインストールするには:

  1. SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。

  2. SQL*Plusを起動し、次の文を入力します。

    EXECUTE mdsys.sem_rdfsa_dr.uninstall_vpd;

必要なアンインストール作業の実行後、ネットワークの有効性を次のようにリセットします。

  1. SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。

  2. SQL*Plusを起動し、次の文を入力します。

    • Linuxの場合: @$ORACLE_HOME/md/admin/semvalidate.sql

    • Windowsの場合: @%ORACLE_HOME%\md\admin\semvalidate.sql

    ノート:

    マルチテナント環境の場合は、catcon.plのスクリプトを実行します。『Oracle Database管理者ガイド』の、オラクル社提供SQLスクリプトのCDBにおける実行に関する項を参照してください。

A.1.4 SpatialおよびPartitioningの要件

Oracle Spatial and Graphは、RDFおよびOWLの機能を使用する前にインストールする必要があります。Oracle Locatorだけでは十分でありません。Spatial and Graphとロケータの詳細は、ロケータに含まれる機能と含まれない機能の別も含めて、『Oracle Spatial and Graph開発者ガイド』を参照してください。

Partitioningオプションは、RDFおよびOWLの機能を使用する前に有効にする必要があります。Partitioningオプションに関するライセンス情報は、『Oracle Databaseライセンス情報』を参照してください。パーティショニングの使用に関する情報は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

A.2 以前のリリースへのRDFセマンティク・グラフ・サポートのダウングレード

Oracle Databaseのリリース12.1へのダウングレードとあわせて、RDFセマンティク・グラフ・サポートをダウングレードできます。

ただし、ダウングレードは、それが必要になるまれなケースを除いて、実行しないことを強くお薦めします。以前のリリースにダウングレードすると、その間のリリースで行われたバグ・フィックスや機能拡張のメリットが得られないことになります。

A.2.1 セマンティク・グラフ・サポートのリリース12.1へのダウングレード

Oracle Databaseリリース12.1にダウングレードする必要がある場合、データベースをダウングレードすると、RDFセマンティク・グラフ・サポート・コンポーネントは自動的にダウングレードされます。ただし、リリース12.2に固有のRDFデータまたはOWLデータ(すなわち、リリース12.2以降のRDF/OWLに固有で、以前のバージョンでサポートされない構造)は、リリース12.1との互換性のために、ダウングレードを実行するに削除する必要があります。

リリース12.2以上のRDFデータにリリース12.1との非互換性があるかどうかを確認するには、次のステップを実行します。

  1. SYSDBA権限を持つSYSユーザーとしてデータベース(リリース12.2以上)に接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。

  2. SQL*Plusを起動し、次の文を入力します。

    SET SERVEROUT ON
    EXECUTE SDO_SEM_DOWNGRADE.CHECK_121_COMPATIBLE;
    

リリース12.1と互換性がないRDFデータがある場合、プロシージャはエラーを生成し、非互換データのリストを表示します。この場合は、次のステップを実行する必要があります。

  1. この項の前半の説明にあるとおり、リリース12.2以上のリリース固有のRDFデータまたはOWLデータを削除します(まだ削除していない場合)。

  2. データベースのダウングレードを実行します。

  3. SYSDBA権限を持つSYSユーザーとしてリリース12.1のデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。

  4. SQL*Plusを起動し、次の文を入力します。

    • Linuxの場合: @$ORACLE_HOME/md/admin/catsem.sql

    • Windowsの場合: @%ORACLE_HOME%\md\admin\catsem.sql

      ノート:

      マルチテナント環境の場合は、catcon.plのスクリプトを実行します。『Oracle Database管理者ガイド』の、オラクル社提供SQLスクリプトのCDBにおける実行に関する項を参照してください。

    スクリプトが正常に実行された場合、次の列値を持つ行がMDSYS.RDF_PARAMETER表に挿入されます。

    • NAMESPACE: MDSYS

    • ATTRIBUTE: SEM_VERSION

    • VALUE: (12.1で始まる文字列)

    • DESCRIPTION: VALID

    catsem.sqlスクリプトが正常に完了すると、リリース11.2のOracleセマンティク・テクノロジ・サポートが有効化されて使用可能になり、すべてのリリース12.1互換データが保持されます。

A.3 RDFセマンティク・グラフ・サポートの削除

データベースからRDFセマンティク・グラフ・サポートを削除できます。

ただし、明確な理由がないかぎり、このサポートは削除しないことを強くお薦めします。このサポートを削除すると、アプリケーションまたはデータベース・ユーザーはRDFセマンティク・グラフ・サポートに関連する型、シノニムまたはPL/SQLパッケージを使用できなくなります。

データベースからRDFセマンティク・グラフ・サポートを削除するには、次のステップを実行します。

  1. SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。

  2. SQL*Plusを起動し、次の文を入力します。

    • Linuxの場合: @$ORACLE_HOME/md/admin/semremov.sql

    • Windowsの場合: @%ORACLE_HOME%\md\admin\semremov.sql

    ノート:

    マルチテナント環境の場合は、catcon.plのスクリプトを実行します。『Oracle Database管理者ガイド』の、オラクル社提供SQLスクリプトのCDBにおける実行に関する項を参照してください。

semremov.sqlスクリプトにより、セマンティク・ネットワークが削除され、RDFセマンティク・グラフの型、表およびPL/SQLパッケージも削除されます。