12cR1.3.0.9での変更点
Oracle NoSQL Database 12cR1.3.0.9で次の変更が行われました。
トピック
新機能
-
管理CLIのコマンドライン履歴がファイルに保存されるように修正され、再起動後に使用できるようにしました。この機能を無効にする場合は、runadminの実行中に次のJavaプロパティを設定する必要があります。
java -Doracle.kv.shell.jline.disable=true -jar KVHOME/kvstore.jar runadmin -host <hostname> -port <portname>
CLIは、
KVHOME/.jlineoracle.kv.impl.admin.client.CommandShell.history
ファイルに履歴を保存するよう試みます。このファイルは、自動的に作成およびオープンされます。デフォルトで保存される履歴は500行です。履歴ファイルを開けない場合、警告なしで失敗し、CLIは保存済履歴なしで実行されます。デフォルトの履歴ファイルのパスは、Javaプロパティ
oracle.kv.shell.history.file=
pathを設定することでオーバーライドできます。ファイルに保存されるデフォルトの行数は、Javaプロパティ
oracle.kv.shell.history.size=
int_valueを設定することで変更できます。[#22690] -
管理CLIの
aggregate
コマンドを修正して、キー/値の入力用のサブコマンドを使用できるようにしました。aggregate table
サブコマンドは表の数値フィールドに対する単純なデータ集計操作を実行し、aggregate kv
サブコマンドはキーに対する集計操作を実行します。[#23258]
バグとパフォーマンスの修正
-
弱参照を使用するように索引イテレータの実装を修正し、ガベージ・コレクタが未使用の索引イテレータに関連付けられたリソースを削除できるようにしました。[#23306]
-
メタデータ伝播の処理およびその他の内部操作を改善しました。[#23355], [#23368], [#23385]
-
外部表の統合を修正して、同時処理の負荷をプロセス間により均等に配分するようにしました。[#23363]
-
索引のあるストアのトポロジ再配分の際に実行されたパーティション移行中の失敗により、移行が再開されたときに
SecondaryIntegrityExceptions
がスローされるという問題を修正しました。[#23392] -
FieldRange.setEndDate
メソッドを削除し、既存のsetEnd
メソッドを使用するようにしました。[#23399] -
異なるタイプを使用する古いフィールドを復活させる可能性がある変更を避けるために、スキーマ展開を修正しました。このような変更により、現行の表で古いデータが読取り不可になることがあります。この修正は、以前の定義に厳密に一致しないかぎり、フィールド名の復活を回避します。[#23403]
-
ネットワーク・タイムアウトの処理の問題を修正し、タイムアウトの発生時にRequestTimeoutではなく、KVStore操作から
FaultException
がスローされることがないようにしました。次にスタック・トレースの例を示します。[#23411]Caused by: oracle.kv.FaultException: Problem during unmarshalling (12.1.2.1.24) Fault class name: java.rmi.UnmarshalException at oracle.kv.impl.api.RequestDispatcherImpl.faultIfWrite(RequestDispatcherImpl.java:968) at oracle.kv.impl.api.RequestDispatcherImpl.handleRemoteException(RequestDispatcherImpl.java:883) at oracle.kv.impl.api.RequestDispatcherImpl.handleDispatchException(RequestDispatcherImpl.java:736) at oracle.kv.impl.api.RequestDispatcherImpl.execute(RequestDispatcherImpl.java:572) at oracle.kv.impl.api.RequestDispatcherImpl.execute(RequestDispatcherImpl.java:1031) at oracle.kv.impl.api.KVStoreImpl.executeRequest(KVStoreImpl.java:1251) at oracle.kv.impl.api.KVStoreImpl.putIfVersion(KVStoreImpl.java:990) at oracle.kv.impl.api.KVStoreImpl.putIfVersion(KVStoreImpl.java:968) [...] ... 41 more Caused by: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is: java.net.SocketException: Socket closed at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:228) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148) at com.sun.proxy.$Proxy21.execute(Unknown Source) at oracle.kv.impl.api.RequestHandlerAPI.execute(RequestHandlerAPI.java:94) at oracle.kv.impl.api.RequestDispatcherImpl.execute(RequestDispatcherImpl.java:560) ... 46 more Caused by: java.net.SocketException: Socket closed at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:121) at java.net.SocketOutputStream.write(SocketOutputStream.java:159) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) at java.io.ObjectOutputStream$BlockDataOutputStream.flush(ObjectOutputStream.java:1822) at java.io.ObjectOutputStream.flush(ObjectOutputStream.java:718) at sun.rmi.transport.StreamRemoteCall.releaseOutputStream(StreamRemoteCall.java:114) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:212) ... 52 more
-
表の反復を修正して、すべての一致するエントリが1つのシャードに含まれる場合のパフォーマンスを最適化しました。[#23412]
-
別のシャードからのレコードと等価のレコードがある場合に、索引スキャン・イテレータがシャードからレコードを返すことに失敗する問題を修正しました。この状況は、ストアに複数のシャードがあり、指定された索引と等価の索引エントリが両方のシャードにある場合に発生します。これは、索引の反復で予想より少ない行が返される症状です。[#23421]
-
表パッケージにいくつかのインタフェースを追加しました。
-
List<String>IndexKey.getFields()
は、索引の定義に使用されるフィールドを返します。 -
List<String>PrimaryKey.getFields()
は、主キーの定義に使用されるフィールドを返します。 -
List<String>RecordValue.getFields()
は、レコードの定義に使用されるフィールドを宣言順に返します。 -
Map<String, FieldValue> MapValue.getFields()
は、マップの不変のビューを返します。
関連するJavadocも、これら(および類似のインタフェース)から返されるリストおよびマップが不変であることを示すように更新されました。[#23433]
-
-
データ・コマンドライン・インタフェース(CLI)には、JSON記法によるファイルから表の行を入力するメソッドがあります。この入力メソッドには、空白行が原因で入力パスに無限ループが発生する問題がありました。これは、空白行およびコメント行(最初の非空白文字が"#"の行)をサイレントにスキップする方法で修正されました。[#23449]
-
索引付きフィールドおよびIndexKeyのnull値の処理を修正しました。これまで、索引付きフィールドのnull値はサーバー側の例外の原因となっていました。putの間、索引付きフィールドのnull値が原因で、そのフィールドが参加する索引に対する索引エントリがなくなります。さらに、IndexKeyインスタンスではnull値が許可されていません。IndexKeyにnull値を設定しようとすると、IllegalArgumentExceptionがスローされます。[#23588]
-
ホスト上のすべてのインタフェースをリッスンするように管理サービスを修正しました。この変更により、異機種間ネットワーク環境におけるKVStoreのデプロイメントが可能になりました。この場合、ホスト名を異なるIPアドレスに解決し、使用可能なネットワーク・ハードウェアを最大限に利用できます。[#23524]