A RDFセマンティク・グラフ・サポートの有効化、ダウングレードまたは削除
現在のOracle DatabaseリリースでRDFセマンティク・グラフ・サポートに関連する任意の型、シノニムまたはPL/SQLパッケージを使用できるようにするためにはいくつかステップを実行する必要があります。
1つ以上のスクリプトを実行し、Spatial and Graphがインストールされており、Partitioningオプションが使用可能であることを確認する必要があります。これらの要件は、「RDFセマンティク・グラフ・サポートの有効化」とそのサブトピックで説明されています。
この付録では、RDFセマンティク・グラフ・サポートを有効にした後、次のいずれかを実行する必要がある場合、そのステップについても説明します。
-
「以前のリリースへのRDFセマンティク・グラフ・サポートのダウングレード」の説明にあるとおり、以前のOracle Databaseリリースに付属のRDFセマンティク・グラフ・サポートをダウングレードします。
-
「RDFセマンティク・グラフ・サポートの削除」の説明にあるとおり、データベースからRDFセマンティク・グラフのすべてのサポートを削除します。
- RDFセマンティク・グラフ・サポートの有効化
現在のOracle DatabaseリリースでRDFセマンティク・グラフ・サポートに関する任意の型、シノニムまたはPL/SQLパッケージを使用するには、この機能を新しいOracle Databaseインストールにインストールするか、またはこの機能を以前のリリースからアップグレードする必要があります。 - 以前のリリースへのRDFセマンティク・グラフ・サポートのダウングレード
Oracle Databaseのリリース12.1へのダウングレードとあわせて、RDFセマンティク・グラフ・サポートをダウングレードできます。 - RDFセマンティク・グラフ・サポートの削除
データベースからRDFセマンティク・グラフ・サポートを削除できます。
A.1 RDFセマンティク・グラフ・サポートの有効化
現在のOracle DatabaseリリースでRDFセマンティク・グラフ・サポートに関する任意の型、シノニムまたはPL/SQLパッケージを使用するには、この機能を新しいOracle Databaseインストールにインストールするか、またはこの機能を以前のリリースからアップグレードする必要があります。
RDFセマンティク・グラフ・サポートのインストールは、Spatial and Graphのインストールに含まれています。したがって、Spatial and Graphがインストールされていることを確認する必要があります。また、パーティション化を有効にする必要があります。パーティション化の制限付き使用が、Oracle Databaseのグラフ機能をサポートするために無料で許可されています。詳細は、Restricted Use Licensesを参照してください。
A.1.1 新規データベース・インストールでのRDFセマンティク・グラフ・サポートの有効化
RDFセマンティク・グラフは、Spatial and Graphのリリース12.2またはそれ以降のリリースがインストールされると自動的に有効化されます。Oracle Databaseのインストール時にデフォルトでOracle Spatial and Graphがインストールされていない場合は、手動によるSpatial and Graphのインストールを参照してください。
RDFセマンティク・グラフが正常に有効化されると、次の列値を持つ行がMDSYS.RDF_PARAMETER表に現れます。
-
NAMESPACE:
MDSYS
-
ATTRIBUTE:
SEM_VERSION
-
VALUE: (
12.2
で始まる文字列) -
DESCRIPTION:
VALID
Oracle Databaseバージョンの識別
データベースの完全バージョンは、V$VERSION
を問い合せることで判別できます。詳細は、『Oracle Databaseリファレンス』のV$VERSIONに関する項を参照してください。
たとえば、次のようにします。
SQL> SELECT banner_full FROM V$VERSION;
実行時に、問合せによって次のような出力が生成されます。
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.13.0.1.0
前述の問合せの出力では、19.13.0.1.0
はデータベースの完全バージョンを、.13
はOracle Database 19cのリリース更新バージョンを表しています。
SQL Developerなどのツールを使用する場合は、19 cデータベースの.x
リリース更新バージョンを把握しておくと便利です。詳細は、「SQL Developerを使用したRDFセマンティック・ネットワークの作成」を参照してください。
親トピック: RDFセマンティク・グラフ・サポートの有効化
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_TABLES
、FAILED_INSUFFICIENT_WORKSPACE_PRIVILEGES
またはFAILED_OLS_POLICIES_ARE_ENABLED
がある場合は、RDFデータを移行する必要があります。
ただしFLOAT_DOUBLE_DECIMAL属性、XSD_TIME属性およびXSD_BOOLEAN属性が存在しないか、文字列値VALID
がなく、DATA_CONVERSION_CHECK属性が存在しない場合、RDFデータを移行する必要はありません。ただし、セマンティク・ネットワークに空のRDFリテラルがある場合は、「空のRDFリテラルの処理」を参照してください。既存の空リテラルを新しい形式に移行することを選択した場合は、この項のステップに従います。
RDFデータを移行するには、次のステップに従います。
-
SYSTEM (SYS ..AS SYSDBAではなく)ユーザーまたはDBAロールを持つ別の非SYSユーザーとしてデータベースに接続し、
SET CURRENT_SCHEMA=MDSYS
を入力します。 -
ユーザーMDSYSに次の権限があることを確認します。
-
セマンティク・ネットワークのすべてのアプリケーション表へのINSERT権限
-
ALTER ANY INDEX権限(オプション: ドキュメントのセマンティク索引付けが使用されている場合のみ必要)
-
バージョン対応アプリケーション表が変更されたワークスペースに対するACCESS権限(オプション: RDFデータにWorkspace Managerを使用する場合のみ必要)
-
-
RDFデータに対するOLSポリシーを一時的に無効化します(オプション: RDFデータにOLSが使用されている場合のみ必要)。OLSポリシーは、convert_old_rdf_dataを実行した後に、再度有効にできます。
-
SQL*Plusを起動します。すでに存在する空のリテラルを新しい形式に変換せずにRDFデータを移行する(「空のRDFリテラルの処理」を参照)には、次の文を入力します。
EXECUTE sdo_rdf_internal.convert_old_rdf_data;
RDFデータを移行し、既存の空のリテラルも新しい形式に変換する場合は、
convert_old_rdf_data
にflags
パラメータ('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
プロシージャの実行に非常に時間がかかります。 -
SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。その後、次の文を入力します。
-
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. (SYS ..AS SYSDBAではなく)ユーザーまたはDBAロールを持つ別の非SYSユーザーとしてデータベースに接続します。
-
次の文を実行します。
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_TABLES
、FAILED_INSUFFICIENT_WORKSPACE_PRIVILEGES
またはFAILED_OLS_POLICIES_ARE_ENABLED
がある場合は、RDFデータを移行する必要があります。
ただしFLOAT_DOUBLE_DECIMAL属性、XSD_TIME属性およびXSD_BOOLEAN属性が存在しないか、文字列値VALID
がなく、DATA_CONVERSION_CHECK属性が存在しない場合、RDFデータを移行する必要はありません。ただし、セマンティク・ネットワークに空のRDFリテラルがある場合は、「空のRDFリテラルの処理」を参照してください。既存の空リテラルを新しい形式に移行することを選択した場合は、この項のステップに従います。
RDFデータの移行は、次のステップに従います。
-
SYSTEM (SYS ..AS SYSDBAではなく)ユーザーまたはDBAロールを持つ別の非SYSユーザーとしてデータベースに接続し、
SET CURRENT_SCHEMA=MDSYS
を入力します。 -
ユーザーMDSYSに次の権限があることを確認します。
-
セマンティク・ネットワークのすべてのアプリケーション表へのINSERT権限
-
ALTER ANY INDEX権限(オプション: ドキュメントのセマンティク索引付けが使用されている場合のみ必要)
-
バージョン対応アプリケーション表が変更されたワークスペースに対するACCESS権限(オプション: RDFデータにWorkspace Managerを使用する場合のみ必要)
-
-
RDFデータに対するOLSポリシーを一時的に無効化します(オプション: RDFデータにOLSが使用されている場合のみ必要)。OLSポリシーは、convert_old_rdf_dataを実行した後に、再度有効にできます。
-
SQL*Plusを起動します。すでに存在する空のリテラルを新しい形式に変換せずにRDFデータを移行する(「空のRDFリテラルの処理」を参照)には、次の文を入力します。
EXECUTE sdo_rdf_internal.convert_old_rdf_data;
RDFデータを移行し、既存の空のリテラルも新しい形式に変換する場合は、
convert_old_rdf_data
にflags
パラメータ('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
プロシージャの実行に非常に時間がかかります。 -
SYSDBA権限を持つSYSユーザー(SYS AS SYSDBA)としてデータベースに接続し、SYSアカウントのパスワードを求められたら入力します。その後、次の文を入力します。
-
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データに対するワークスペース・マネージャのサポートをアンインストールするには:
-
SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。
-
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データに対する仮想プライベート・データベースのサポートをアンインストールするには:
-
SYSTEMユーザー(SYS … AS SYSDBAではなく)またはDBAロールを持つ非SYSユーザーとしてデータベースに接続します。
-
SQL*Plusを起動し、次の文を入力します。
EXECUTE mdsys.sem_rdfsa_dr.uninstall_vpd;
必要なアンインストール作業の実行後、ネットワークの有効性を次のようにリセットします。
-
SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。
-
SQL*Plusを起動し、次の文を入力します。
-
Linuxの場合:
@$ORACLE_HOME/md/admin/semvalidate.sql
-
Windowsの場合:
@%ORACLE_HOME%\md\admin\semvalidate.sql
ノート:
マルチテナント環境の場合は、
catcon.pl
のスクリプトを実行します。『Oracle Database管理者ガイド』の、オラクル社提供SQLスクリプトのCDBにおける実行に関する項を参照してください。 -
親トピック: RDFセマンティク・グラフ・サポートの有効化
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との非互換性があるかどうかを確認するには、次のステップを実行します。
-
SYSDBA権限を持つSYSユーザーとしてデータベース(リリース12.2以上)に接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。
-
SQL*Plusを起動し、次の文を入力します。
SET SERVEROUT ON EXECUTE SDO_SEM_DOWNGRADE.CHECK_121_COMPATIBLE;
リリース12.1と互換性がないRDFデータがある場合、プロシージャはエラーを生成し、非互換データのリストを表示します。この場合は、次のステップを実行する必要があります。
-
この項の前半の説明にあるとおり、リリース12.2以上のリリース固有のRDFデータまたはOWLデータを削除します(まだ削除していない場合)。
-
データベースのダウングレードを実行します。
-
SYSDBA権限を持つSYSユーザーとしてリリース12.1のデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。
-
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セマンティク・グラフ・サポートを削除するには、次のステップを実行します。
-
SYSDBA権限を持つSYSユーザーとしてデータベースに接続します(SYS AS SYSDBAを使用し、SYSアカウントのパスワードを求められたら入力します)。
-
-
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パッケージも削除されます。