12cR1.3.1.5での変更点
Oracle NoSQL Database 12cR1.3.1.5で次の変更が行われました。
トピック
新機能
-
APIと管理CLIの両方にロールベース認可のサポートが追加されました。認可は、リリース3.0に導入された認証メカニズムに基づいています。KVStoreの各認証済ユーザーには、ユーザーがアクセスできるAPIおよびCLIコマンドを決定するロールを付与できます。このリリースでは、データ・アクセス制御用の"read"および"write"ロールを含む組込みロールと、システムおよびデータベース操作制御用にそれぞれ"sysadmin"および"dbadmin"ロールがサポートされます。この機能の詳細は、『Oracle NoSQL Databaseセキュリティ・ガイド』で説明されています。
KVStoreロギング・システムは、セキュリティの影響を受けるイベントをログに記録するように拡張されました。SEC_WARNINGおよびSEC_INFOという2つの新しいロギング・レベルが導入されています。SEC_WARNINGレベルでログに記録されたメッセージは、CLIでクリティカル・イベントを生成します。失敗したログイン試行や不正な操作などの上位レベルのセキュリティ・イベントは、SEC_WARNING KVStoreイベントとして記録されます。sysadminまたはdbadminロールを必要とするCLIコマンドの実行は、SEC_INFOイベントとして記録されます。セキュリティの影響を受けるすべてのイベントのロギング・メッセージには、grepとフィルタリングを簡単にするための接頭辞としてtimestamp KVAuditInfoがあります。[#23423]
-
makebootconfigコマンドは、すべてのパラメータの妥当性チェックを行うように拡張されました。必要に応じてユーザーがデフォルトの妥当性チェックを手動でオーバーライドできる-forceフラグが追加されました。[#23422]
バグとパフォーマンスの修正
-
plan change-parametersコマンドが失敗することがあり、プラン履歴で
NullPointerException
がレポートされる原因となっていたバグが修正されました。この状況は、パラメータ変更にすべてのノードの再起動が必要な場合に、使用可能でないノードがある状況でのみ発生しました。[#22673] -
場合によってヒープ・サイズを削減して圧縮済オブジェクト参照の使用を可能にするために、レプリケーション・ノードのヒープ・サイズ計算が変更されました。
サポートされるJava環境では、ヒープ・サイズが特定のサイズ(現在は実装に応じて25から32GBの間)より小さい場合に圧縮済オブジェクト参照を使用できます。圧縮済参照により節約される領域は大きいため、より大きなヒープ・サイズを使用すると、ヒープ・サイズが圧縮済参照をサポートする最大サイズよりも50%以上大きい場合を除き、通常は使用可能領域が少なくなります。
memoryMB
ストレージ・ノード・パラメータの値により、圧縮済参照をサポートするには大きすぎるが使用可能領域を増やすほどには大きくないヒープ・サイズが生成される場合、システムはレプリケーション・ノードのヒープ・サイズを自動的に削減するようになりました。アプリケーションで、非圧縮参照または最大ヒープ・サイズを明示的に指定するjavaMiscParams
レプリケーション・ノード・パラメータが指定される場合、ヒープ・サイズは削減されません。memoryMB
パラメータが明示的に指定されていないか、ゼロに設定されている場合、システムにより、ホストで使用可能な物理メモリー量に設定され、memoryMB
がゼロ以外の値に明示的に設定されている場合と同じようにヒープ・サイズを削減します。[#22695] -
Version.getVersionメソッドは非推奨になり、公開ドキュメントから削除されました。おそらく、将来のリリースで完全に削除されます。getVersionメソッドは、特定のshardに関してのみ意味のある内部バージョン番号を返します。このため、任意のバージョンのメソッド結果の比較は安全ではないため削除されました。アプリケーションは、IDのバージョンを比較するために引き続きequalsメソッドを使用できますが、現在、どちらの方が新しいかを判断するためにバージョンを比較する正式な方法はありません。アプリケーションでニーズがある場合は、将来この機能を追加する可能性があります。[#23526]
-
plan add-indexコマンドは、索引作成ステータスをよりすばやくチェックするように変更されたため、コマンドはより迅速に終了します。[#23568]
-
JSON入力を使用してRowおよびPrimaryKeyインスタンスを作成する場合の型検証が追加されました。以前は、表スキーマに基づいて適切な型に警告なしでキャストされていた正しくない型が提供される可能性があり、その結果、情報が失われることがありました。[#23765]
-
IBM J9 JVM環境にホストされているNoSQL Databaseクラスタの構成中に発生する可能性のあった問題が修正されました。オプションのmemory_mbパラメータに明示的な値を指定せずにストレージ・ノードがデプロイされた場合、そのSNにホストされたレプリケーション・ノードに対する使用可能メモリーの計算は間違っており、plan deploy-topologyコマンドの実行時にそのレプリケーション・ノードで"OutOfMemoryError"が発生する原因となることがありました。この状況は、J9 JVMでのみ発生する可能性がありましたが、解決されました。[#23737]
-
HadoopとOracle外部表の両方が、ストアからデータを並列に読み取る独立プロセスを採用します。これらのプロセス間に作業を分散する方法が変更されました。新しいアルゴリズムでは、ストア間の並列度を最大化しながら単一レプリケーション・ノード上の競合を最小化する方法で作業を分散しようとします。shardの数、レプリケーション要因および要求される一貫性が計算に対する入力です。この変更は、Hadoopプロセスの数、または生成される分割数にも影響することがあります。作業分散の変更に加えて、Hadoopと外部表の両方のプロセスでパラレル・スキャンAPIを使用できるため、複数のスレッドを1つのプロセスで操作できます。[#23749]
ノート:
Direction.UNORDERED
のみがサポートされるため、パブリック・メソッドoracle.kv.hadoop.KVInputFormatBase.setDirection(Direction)
は非推奨になりました。 -
索引が配列または配列内のフィールドに作成され、配列自体がRow内でnullの場合、サーバー・ノードでの索引キー抽出時に
ClassCastException
がスローされることがありました。[#23757]
-
JARファイルをビルドするデフォルト・ターゲットがCommunity Editionに対して動作するようにAntビルド・スクリプトが変更されました。ソース・コードに変更を行った後で、antを使用してJARファイルの新しいバージョンをビルドできるようになりました。[#23764]
-
クライアント・プログラムがストレージ・ノードの信頼されるログイン・サービスに対して予期せず安全でないコールを行った場合、サービス実装の欠陥により、サービスがハングし、その後のユーザー・ログインが失敗する原因となりました。このバグは修正されました。[#23786]
-
複数の索引イテレータが短期間に連続してオープンおよびクローズされた場合のクライアント・スレッドのランナウェイ数の問題が解決されました。具体的には、イテレータのclose()メソッドは、戻る前にスレッドの終了を待機するようになります。この動作は、並列スキャン・イテレータと同じですが、ドキュメントには待機しないと記載されています。ドキュメントは修正されました。[#23797]
-
索引イテレータがクローズされるときにデッドロック状況を引き起こす可能性のあったバグが修正されました。この修正の一部として、
oracle.kv.KVStore
およびoracle.kv.table.TableAPI
インタフェースのJavadocが更新され、外部的に同期していないかぎり、これらのインタフェースにより返されるイテレータが一度に1つのスレッドでのみ安全に使用できることが明確化されました。[#23799] -
R2.XからR3.xへの一連のNoSQLクラスタのアップグレードでは、最初のストレージ・ノード・アップグレードの発生時に、それがホストするレプリケーション・ノードは"STARTING"ステータスに遷移し、他のノードがアップグレードされるまで待機します。ユーザーがこの時点で"verify upgrade"コマンドを実行した場合、次の誤解されやすいエラーが表示されます。
kv-> verify upgrade Unknown Exception: class oracle.kv.impl.rep.admin.RepNodeAdminFaultException RepNode is not RUNNING, current status is STARTING (12.1.3.1.2) oracle.kv.impl.rep.admin.IllegalRepNodeServiceStateException: RepNode is not RUNNING, current status is STARTING
これは修正されました。[#23859]
-
NoSQL Database内で使用されているBerkeley DB JEストレージ・エンジンで使用される次のパラメータが変更され、このリリースで使用されるJEの更新済バージョンの変更が反映されました。
-
以前は2に設定されていたEnvironmentConfig.EVICTOR_MAX_THREADSは、デフォルトのJE値を使用するようになりました。
-
EnvironmentConfig.CHECKPOINTER_BYTES_INTERVALは、200000000から500000000に変更されました。
-
-
チェックポイントの所要時間が10秒を超える場合に、stopユーティリティ・コマンドにより不完全なチェックポイントが発生するというパフォーマンスの問題が解決されました。不完全なチェックポイントにより、レプリケーション・ノードの再起動が完全なチェックポイントの場合より長時間かかることがありました。stopコマンドも変更され、シャットダウンされているストレージ・ノードにホストされているすべてのレプリケーション・ノード間でチェックポイントが並列に初期化されるようになり、コマンドの実行が高速になりました。
-
場合によって3.0より前のリリースからのアップグレードが失敗し、管理ログに次のスタック・トレースが記録される原因となっていた問題が解決されました。[#23879]
com.sleepycat.persist.evolve.IncompatibleClassException: (JE 6.2.5) Changes to the fields or superclass were detected when evolving class: oracle.kv.impl.admin.plan.task.StopAdmin version: 1 to class: oracle.kv.impl.admin.plan.task.StopAdmin version: 1 Error: A new higher version number must be assigned --- (Note that when upgrading an application in a replicated environment, this exception may indicate that the Master was mistakenly upgraded before this Replica could be upgraded, and the solution is to upgrade this Replica.) at com.sleepycat.persist.impl.PersistCatalog.init(PersistCatalog.java:512) at com.sleepycat.persist.impl.PersistCatalog.initAndRetry(PersistCatalog.java:268) at com.sleepycat.persist.impl.PersistCatalog.<init>(PersistCatalog.java:228) at com.sleepycat.persist.impl.Store.<init>(Store.java:202) at com.sleepycat.persist.EntityStore.<init>(EntityStore.java:190) at oracle.kv.impl.admin.Admin.initEstore(Admin.java:2126)