12cR1.4.2.10での変更点
Oracle NoSQL Database 12cR1.4.2.10で次の変更が行われました。
新機能
-
トポロジ・ビルダーは、シャードおよびパーティションをレイアウトするときにストレージ・ディレクトリ・サイズを考慮するように拡張されました。これが意味するのは、ストレージ・ディレクトリがより大きいレプリケーション・ノードの方が、ディレクトリが小さいレプリケーション・ノードより、割り当てられるストアのデータ部分が大きくなるということです。ストレージ・ディレクトリ・サイズのレイアウトは、ディレクトリ・サイズが構成されている場合、拡張度の操作中に自動的に行われます。既存のストアでこの機能を有効にするには、各レプリケーション・ノードのストレージ・ディレクトリのサイズを(通常は管理者が)設定する必要があります。次に、リバランス、再分散またはトポロジ操作により、ディレクトリ・サイズの違いに対応するようシャードまたはパーティション(あるいはその両方)が調整されます。
既存のストアでディレクトリ・サイズを設定または変更するために、
plan change-storagedir
管理CLIコマンドに新しい-storagedirsize
フラグが用意されています。新しい構成でディレクトリ・サイズを設定するために、フラグ-storagedirsize
がmakebootconfig
に追加されました。どちらのフラグも、単位を使用したサイズ値を受け入れることができます。たとえば、"1_TB"を使用すると、1TBのディレクトリを指定できます。[#24981]、[#25166] -
検索およびフィルタリングをサポートするために、DDL操作が標準監査ロギング接頭辞timestamp KVAuditInfoとともにログに記録されるようになりました。[#25460]
-
アービタ機能が追加されました。この機能を使用すると、シャードで1つのレプリケーション・ノードが使用できなくても、Durability.ReplicaAckPolicy.SIMPLE_MAJORITY永続性を使用したKVStore DML操作が成功します。「緩和された」永続性を指定して記述されたデータは、他のレプリケーション・ノードが使用可能になったときにこのレプリケーション・ノードに移行されます。また、「緩和された」永続性データがあるノードのみが、そのデータが別のレプリケーション・ノードに移行するまではマスターになることができます。これにより、(シャードに基づく)任意のノード障害発生時の書込み可用性とは対照的に、単一ノード障害に対する書込み可用性が緩和されます。[#20590]
-
新しいtopology contractコマンドが管理CLIに追加されました。このコマンドは、指定された一連のストレージ・ノードをトポロジから削除し、シャードを削除することでストアのサイズを縮小できるようサポートします。また、削除するストレージ・ノードを指定するプロセスを簡略化するために新しいpool leaveコマンドが追加されました。[#24425]
-
セカンダリ索引には、索引フィールド用としてnull値を持つ行のエントリが含まれるようになりました。これは次の2つの目的に役立ちます。
-
これは以前とは異なり、値とは関係なく、表内のすべての行で1つの索引に対して1つのエントリが存在することを意味します
-
複合索引(複数のフィールドを含む索引)がより便利になります。なぜなら、アプリケーションは部分キーを使用できるとともに、他のフィールドにnullが含まれていることによって行がスキップされることがないと認識できるためです
この変更には、索引データベース自体のフォーマットの変更が必要でした。すべての新しい索引にこの新しいフォーマットが適用され、null値がサポートされます。既存の索引ではnull値がサポートされないため、null値がなかった過去の索引と同じように動作し続けます。このため、null値が必要な場合は、索引を削除してから再度追加することをお薦めします。[#24785]
-
-
ユーザーが新しいパスワードを作成したり既存のパスワードを変更したりする場合に、管理者がパスワードの複雑性の要件を強制することを許可する新しいポリシー・パラメータが追加されました。[#24985]
-
アプリケーションでRecordValue内のフィールドの位置が認識されている場合、名前ベースのメソッドより効率的に機能する位置ベースの新しいputおよびgetメソッドがRecordValueに追加されました。[# 25214]
-
JSONのフィールド・タイプに対するJava APIサポートのプレビュー・リリースが含まれます。このタイプを使用するのは、プレビューの場合のみです。このタイプを使用するストアはサポートされないため、完全なサポートが提供される場合は削除し、再利用しないでください。このプレビューには次が含まれます。[#23589]
-
フィールドをJSON型として宣言する機能。これは、有効なJSONとして解釈できる任意の型をこのフィールドで使用できることを意味します。この型には数値型、ブール型、文字列、マップ(JSONオブジェクト)、配列(JSON配列)が含まれます。
-
JSON値を出力および取得したり、行内のJSONフィールドにナビゲートしたりするための、FieldDefおよびFieldValueと関連型に対するメソッド。
プレビュー・リリースには、次のような既知の制限と問題があります。これらは、障害や予測できない結果の原因となる可能性があります。
-
JSONに対する索引はまだサポートされていません。これは、今後のリリースでサポートされる機能です。
-
JSONが関わる問合せはまだサポートされておらず、コンパイルまたは実行(あるいはその両方)しようとすると失敗します。これは、今後のリリースでサポートされる機能です
-
JSONの数値がすべてサポートされているわけではありません。longまたはdoubleとして表すことができない数値を処理しようとすると失敗します。これは、今後のリリースでサポートされる機能です。
-
マップ・キーは大/小文字が区別され、これはJSONオブジェクトでも同様です。これはバグであり、今後のリリースで修正されます。
-
フィールドのMAP(JSON)とARRAY(JSON)の宣言のサポートが完了していません。これらの宣言はDDL文で機能しますが、このような表の行は使用できないため、避ける必要があります。これはバグであり、今後のリリースで修正されます。
-
バグとパフォーマンスの修正
-
ディスク順のカーソルを使用してスナップショットの複数のデータベースからエントリを読み取るようロード・ユーティリティが拡張されました。この変更によって入力スループットが向上するため、ロードの全体的なパフォーマンスが向上します。[#25294]
-
rnHeapMaxMBストレージ・ノード・パラメータに大きい値を指定したとき、圧縮オブジェクト参照をサポートする小さいヒープ・サイズの方が効率的であっても、圧縮オブジェクト参照をサポートしていないヒープ・サイズを指定したそのストレージ・ノードによってレプリケーション・ノードがホストされるという可能性がある問題が修正されました。[#25472]
-
トポロジが変更され、レプリケーション・グループ間でパーティションが移行されたときに、TextIndexFeederがそれに応じて動作できないというバグが修正されました。この修正により、ストアで拡張度の操作が行われるときに、TextIndexFeederによってElasticsearchに対するすべての書込みがストリーミングされるようになります。[#25334]
-
アクセス制御の変更中、シャード定数の不足が原因で予期しないInsufficientAcksExceptionが発生し、レプリケーション・ノードが再起動するという問題が修正されました。[#25439]
-
アクセス制御の変更中、シャード定数の不足が原因で一時的なデッドロックになり、予期しないInsufficientAcksExceptionが発生するという問題が修正されました。[#25442]
-
スキーマが進化した表がストアに含まれている場合に、3.xバージョンのストアのアップグレードが失敗する問題が修正されました。[#25532]
-
セキュア・ストアでの全文検索(FTS)を無効にします。KVStoreがセキュアなストアとして構成されている場合、FTSは無効になり、ユーザーは外部Elasticsearchクラスタを登録できなくなります。また、FTSがすでに有効であるKVStoreの場合、ユーザーはストアを非セキュアなストアからセキュアなストアに再構成できません。かわりに、すべてのテキスト索引を削除し、外部Elasticsearchクラスタの登録を解除して非セキュアなストアをセキュアなストアに再構成する必要があります。[#25245], [#25246]
-
レプリケーション・ノードは、Oracle Java仮想マシンを使用する際、LinuxプラットフォームでデフォルトでJavaオプション-XX:+AlwaysPreTouchを使用するよう構成されました。この変更により、Javaの起動が若干遅くなりますが(4Kのページを使用した32GBのヒープの場合は約10秒、2MBのラージ・ページを使用している場合は1秒未満)、レプリケーション・ノードによってより大量のヒープ・ストレージが使用されるため、後続のレイテンシの一時停止が減少します。[#25161]
-
レプリケーション・ノードは、デフォルトでガベージファースト・ガベージ・コレクタ(G1 GC)を使用するようになりました。通常、G1 GCの方が、以前のデフォルトであった並行マーク・スイープ(CMS)よりGC一時停止時間が短くなります。そのため、G1 GCの場合、ストア操作の平均レイテンシと最大レイテンシの両方が短縮され、スループットが改善されます。
アプリケーションでは、レプリケーション・ノードの
javaMiscParams
パラメータの値に-XX:+UseConcMarkSweepGC
を含めることで、CMS GCを使用して以前のGC設定に戻すことができます。[#24695] -
IndexKeyの表現が互換性のない方法で変更されました。その理由は、使いやすさ、機能およびパフォーマンスの組合せです。このリリースの前は、IndexKeyはスキーマ(RecordDef)を同じ表の対応する行オブジェクトと共有していました。古い表現は、深くネストされたレコード、マップおよび配列内のフィールド上の索引が出現すると、紛らわしく、煩雑になっていました。新しい表現は、構造が単一レベルであり、索引付けされたフィールドがフラット化されたバージョンです。この場合のフィールド名は、索引付けされたフィールドへのパスです。
次の表および索引について考えてみます。
CREATE TABLE user (id INTEGER, PRIMARY KEY(id), address RECORD(city String, state String)) CREATE INDEX City on user(address.city)
このリリースの前は、City索引を反復するために使用するIndexKeyの作成に必要なJavaコードは、次のようになっていました。
/* assume userTable is a handle on the table */ Index index = userTable.getIndex("City"); IndexKey indexKey = index.createIndexKey(); indexKey.createRecord("address").put("city", "Chicago");
これを使用するには、レコードの構造を作成する使用する必要があることに注意してください。新しいフラット化された表現は、次のとおりです。
/* assume userTable is a handle on the table */ Index index = userTable.getIndex("City"); IndexKey indexKey = index.createIndexKey(); indexKey.put("address.city", "Chicago");
マップおよび配列が関係する索引の構文は、次のとおりです。
-
マップ・キー: keys(path-to-map-field)。例: keys(this_is_a_map)
-
マップ値: path-to-map-field[]。例: this_is_a_map[]。索引がレコードのマップ内のフィールド上にある場合、map_of_records[].path-to-fieldのようになります
-
配列値: マップ値に類似しており、"[]": path-to-array[]を使用する必要があります。
これらのパスに使用される構文ルールは、索引自体を作成する文で使用される構文ルールと同じものです。マップや配列などの他の複合型の索引に対しても、類似構文を使用できます。
これは互換性のない変更であり、複合型の索引を使用するアプリケーションは、新しい形式と構文を使用するように変更する必要があります。変更しない場合、そのようなフィールドに対しては、FieldRange構成およびIndexKey.put*()コールからスローされるIllegalArgumentExceptionとしてエラーが表示されます。レコード、マップまたは配列上の索引を使用しないアプリケーションは変更されなくても処理を続行します。複合索引フィールドへのパスの表現方法の詳細は、ドキュメントを参照してください。[#25090]
-
-
セキュアなストアのSSL証明書の更新時に、既存のクライアントがKVStoreハンドルを再オープンせずにストアにアクセスできるように変更されました。[#25062]
-
例外KVSecurityExceptionがFaultExceptionを拡張していましたが、これは、FaultExceptionの規約によると、正しくありませんでした。KVSecurityExceptionはRuntimeExceptionを拡張するようになりました。
これはAPIの軽微な変更ですが、KVStoreおよびTableAPIインタフェースのほとんどのメソッドからスローされる可能性がある例外に影響します。これらは現在、KVSecurityExceptionをスローできますが、これはFaultExceptionには含まれなくなりました。KVSecurityExceptionインスタンス(UnauthorizedException、AuthenticationRequiredException、およびAuthenticationFailureException)を1つ以上捕捉する必要があるアプリケーションでは、それらを明示的に実行する必要があります。[#24967]
-
より効率的にテキストの索引付けを行うために、索引の移入にElasticsearchの一括操作インタフェースが使用されるようになりました。[#25040]
-
マップ索引および配列索引の重複結果が除去されました。以前は、マップ値または配列索引が含まれる問合せを実行するときに、索引内に独立した複数のエントリを持つ行について重複した結果が表示される可能性がありました。これは、索引の反復メソッドを使用する場合にも発生します。これらの重複が削除されたため、ユーザーには一致する各レコードのインスタンスが1つのみ表示されます。[#25023]
-
互換性の問題を回避するために、NoSQL Databaseはデフォルトでは、ノード・クライアントではなくElasticsearchのトランスポート・クライアントを介してElasticsearchクラスタに接続するようになりました。[#25146]
-
テキスト索引フィールドに空の文字列のみが含まれるレコードが、テキスト索引に正しく追加されるようになりました。以前は、これらのレコードは省略されていました。[#25058]
-
テキスト索引の作成時に発生する可能性がある2つの競合条件が修正されました。[#25093], [#25182]
-
ストレージ・ノードに必要なサービス・ポート範囲のサイズが縮小されました。以前は、管理サービスをホストするストレージ・ノードの構成のためにmakebootconfigを呼び出すときに-servicerangeを使用した場合、この範囲には非セキュアなデプロイメント用として8個のポートが必要でした。その数は現在3に削減されました。詳細は、『管理ガイド』のストレージ・ノード・パラメータの項のservicePortRangeパラメータに関するドキュメントを参照してください。[#24708]
-
匿名ユーザーが管理CLIでDDL文を使用し、セキュアなストアの最初のユーザーを作成することを許可します。[#25051]
-
クライアントに不正なヘルパー・ホスト・セットがあるためレプリケーション・ノードに障害が発生し、再起動できないという問題が修正されました。この問題が発生するのは、クライアントが関連性のないストアのヘルパー・ホストを使用して構成されたときに、あるストアから取得したトポロジ更新を別のストアに転送しようとした場合です。このような発生はログに記録されますが、レプリケーション・ノードに障害が発生することはなくなりました。[#24693]
-
メモリー量が多いマシンに対応するように、memoryMBパラメータの最大値を500GBから128TBに変更しました。[#25017]
-
予期しないInterruptedExceptionのためにレプリケーション・ノードの障害が発生する統計収集コードの問題が修正されました。[#25046]
2016-04-12 13:34:42.678 UTC INFO [rg1-rn3] Exception accessing the migration db {0} com.sleepycat.je.ThreadInterruptedException: (JE 7.0.5) Environment must be closed, caused by: com.sleepycat.je.ThreadInterruptedException: Environment invalid because of previous exception: (JE 7.0.5) rg1-rn3(3):/scratch/yfei/nftest/dm_mode/kv_isolate_rn/scratch/kvroot/mystore/sn3/rg1-rn3/env java.lang.InterruptedException THREAD_INTERRUPTED: InterruptedException may cause incorrect internal state, unable to continue. Environment is invalid and must be closed. at com.sleepycat.je.ThreadInterruptedException.wrapSelf(ThreadInterruptedException.java:135) at com.sleepycat.je.dbi.EnvironmentImpl.checkIfInvalid(EnvironmentImpl.java:1720) at com.sleepycat.je.Transaction.checkEnv(Transaction.java:886) at com.sleepycat.je.Transaction.commit(Transaction.java:350) at oracle.kv.impl.rep.migration.PartitionMigrations.fetch(PartitionMigrations.java:295) at oracle.kv.impl.rep.migration.MigrationManager$3.call(MigrationManager.java:1286) at oracle.kv.impl.rep.migration.MigrationManager$3.call(MigrationManager.java:1282) at oracle.kv.impl.rep.migration.MigrationManager.tryDBOperation(MigrationManager.java:1464) at oracle.kv.impl.rep.migration.MigrationManager.getMigrations(MigrationManager.java:1282) at oracle.kv.impl.rep.migration.MigrationService.pendingSources(MigrationService.java:180) at oracle.kv.impl.rep.migration.MigrationManager.awaitIdle(MigrationManager.java:445) at oracle.kv.impl.rep.table.MaintenanceThread.run(MaintenanceThread.java:149)
-
ストレージ・ノードの再起動時にレプリケーション・ノードに予期しない障害が発生するマスター・リバランシング・コードの未処理のセキュリティ例外が修正されました。[#25134]
-
セキュア・ストアのレプリケーション・ノードが完全に初期化される前に要求を受信したときに、NullPointerExceptionが発生して終了するという問題が修正されました。[#25092]
2016-05-03 18:08:42.191 UTC SEVERE [rg5-rn3] Process exiting java.lang.NullPointerException at oracle.kv.impl.rep.login.KVSessionManager.initializeKVStore(KVSessionManager.java:495) at oracle.kv.impl.rep.login.KVSessionManager.isReady(KVSessionManager.java:259) at oracle.kv.impl.rep.login.KVSessionManager.resolve(KVSessionManager.java:425) at oracle.kv.impl.security.login.TokenResolverImpl.resolvePersistentToken(TokenResolverImpl.java:216) at oracle.kv.impl.security.login.TokenResolverImpl.resolve(TokenResolverImpl.java:168) at oracle.kv.impl.security.login.TokenVerifier.verifyToken(TokenVerifier.java:97) at oracle.kv.impl.security.AccessCheckerImpl.identifyRequestor(AccessCheckerImpl.java:141) at oracle.kv.impl.security.ExecutionContext.create(ExecutionContext.java:181) at oracle.kv.impl.security.SecureProxy$CheckingHandler$1.execute(SecureProxy.java:609) at oracle.kv.impl.security.SecureProxy$CheckingHandler$1.execute(SecureProxy.java:600) at oracle.kv.impl.fault.ProcessFaultHandler.execute(ProcessFaultHandler.java:148) at oracle.kv.impl.rep.admin.RepNodeAdminFaultHandler.execute(RepNodeAdminFaultHandler.java:124) at oracle.kv.impl.security.SecureProxy$CheckingHandler.invoke(SecureProxy.java:598) at oracle.kv.impl.security.SecureProxy.invoke(SecureProxy.java:144) at com.sun.proxy.$Proxy9.getTopoSeqNum(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) at sun.rmi.transport.Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
-
定義されている場合、前の行の有効期限を返すためのTableOperationResult.getPreviousExpirationTime()が追加されました。以前は、有効期限は前の行から使用可能でしたが、これは不完全なソリューションでした。[#25229]
-
セキュアなストアに対してクライアントが署名なしでトポロジの更新をプッシュできるという問題が修正されました。この修正の前は、サーバー監査ログに次のような警告エントリが表示される場合がありました。[#25273]
2016-06-13 06:53:32.476 UTC SEC_WARNING [rg2-rn1] Empty signature. Verification failed for topology seq# 38
-
アプリケーションで、使用できない古いストアのKVStoreハンドルが、同じホスト上で再作成された新しいストアに対して使用された場合に、新しいストアでレプリケーション・ノードが再起動するというバグが修正されました。ストアが影響を受けることがなくなり、アプリケーションはoracle.kv.StaleStoreHandleExceptionを受け取り、ハンドルをクローズして再オープンする必要があることを認識できるようになりました。[#24693]
ユーティリティの変更点
-
ユーザーがActive Directoryの使用する場合など、Kerberosを手動で構成する必要がある場合、makebootconfigコマンドおよびsecurityconfigコマンドで-kadmin-path引数にnoneを指定できるようになりました。この場合、キータブは自動的に生成されず、手動で生成およびコピーする必要があります。[#25445]
-
デプロイメントに失敗し、パーティションのないシャードを持つストア・トポロジが生成された場合、
verify configuration
管理CLIコマンドで警告が表示されるようになりました。[#22098] -
セキュリティ構成ユーティリティが追加されました。[#24948]
-
security config update
特定のセキュリティ構成でセキュリティ・パラメータを更新します。
-
security config verify
特定のセキュリティ構成の一貫性と正確性を検証します。
-
security config show
特定のセキュリティ構成のすべての情報を出力します。
-
-
oracle.kv.util.Loadユーティリティが拡張され、複数のシャード・バックアップ・ディレクトリからのデータのロードを同時にサポートし、一括Putによってデータのロードのパフォーマンスを改善できるようになりました。[#25085]
-
管理Webサービスの実行はセキュア・ストアに対してサポートされなくなったため、ユーティリティに対して次の変更が加えられました。[#25249]
-
makebootconfig
コマンドを使用してセキュアなストアのストレージ・ノードを構成するには、ストア・ノードが管理を実行する必要がある場合は-runadmin
を指定し、管理ポートに0を指定するか、管理ポートを指定しないままにしておく必要があります -
plan deploy-admin
を使用してセキュアなストアにデプロイされた管理サービスは、-port
フラグの値に0を指定する必要があります -
securityconfig add-security
コマンドは、管理Webサービスを備えた管理サービスを持つ非セキュアなストアに対して実行されると失敗します -
plan change-parameters
コマンドは、セキュアなストアでゼロ以外の管理ポートを指定しようとすると失敗します -
plan migrate-sn
コマンドは、セキュアなストアでゼロ以外の管理ポートを使用してストレージ・ノードを移行しようとすると失敗します
管理Webサービスが有効な管理を実行するセキュアなストア内のストレージ・ノードは、このリリースへのアップグレード後に正常に起動しなくなります。アップグレードの実行前に、管理Webサービスを必ず無効にしてください。
管理Webサービスが有効なセキュアなストアのストレージ・ノードをアップグレードしようとすると、次のようなメッセージが表示されてノードの起動が失敗します。
Failed to start SNA: Cannot start the storage node agent for a secure store when the storage node has an admin with the admin web service enabled. Please start this storage node and reconfigure the storage node to disable the admin web service, or disable store security with 12.1.4.0.9 before starting this storage node.
ストレージ・ノードの起動時にこのメッセージが表示された場合、以前のリリースのソフトウェアに戻してストレージ・ノードを再起動すると、問題を回避できます。次に、
plan change-parameters
コマンドを使用して管理Webサービスを無効にします。たとえば、admin1上のWebサービスを無効にするには、次のコマンドを使用します。plan change-parameters -service admin1 -wait -params adminHttpPort=0
-
SQL問合せ言語およびシェルの変更点
-
Oracle NoSQL Database SQL問合せ言語は、次の機能で拡張されました。
-
OFFSETおよびLIMITのサポート[#25078]
-
スキーマの展開に使用されるALTER TABLEが変更され、他のレコード、マップおよび配列内でネストされたRECORD型を変更できるようになりました。[#24049]
-
-
配列、マップ・キーおよびマップ値に関連する索引を参照するためにDDL文で使用されるパスが変更され、問合せで使用されるパスとの一貫性が確保されました。影響を受ける文は
CREATE INDEX
およびDESCRIBE TABLE
です。[#25167]次の3つのタイプのパスがあります。
-
配列値へのパス:
Previous syntax: path-to-array or path-to_array[] New syntax: path-to-array[] ("[]" is required) For example, to create an index on the values in an array: CREATE TABLE MyTable(id INTEGER, myArray ARRAY(INTEGER), PRIMARY KEY(id)) CREATE INDEX ArrayIndex on MyTable(myArray[])
-
マップ値へのパス:
Previous syntax: path-to-map or path-to-map[] New syntax: path-to-map[] ("[]" is required) For example, to describe the field used in a map: CREATE TABLE MyTable(id INTEGER, myMap MAP(STRING), PRIMARY KEY(id)) DESCRIBE AS JSON MyTable(myMap[])
-
キー値へのパス:
Previous syntax: KEYOF(path-to-map) New syntax: KEYS(path-to-map) For example, to create an index on the keys of a map: CREATE TABLE MyTable(id INTEGER, myMap MAP(STRING), PRIMARY KEY(id)) CREATE INDEX MapIndex on MyTable(myMap[])
-
-
CREATE FULLTEXT INDEXおよびDROP INDEX DDL文に新しい構文が採用され、新しい制約をオーバーライドできるようになりました。[#24809]
-
テキスト索引を作成および削除するときに新しい制約が適用されるようになりました。Elasticsearchクラスタのヘルス・ステータスがGREENでないかぎり、これらの操作は許可されません。[#25093]
-
SQLシェル内に!=条件を含む問合せ文を実行したときに、java.io.IOException (Invoke method readLine of Jline.ConsoleReader failed: !=... : event not found.)が発生するバグが修正されました。[#25065]
-
問合せの問合せプランをSQLシェルに表示するためにコマンドshow query <statement>が追加されました。これは問合せ言語自体の一部ではなく、SQLシェルの機能です。[#25170]
ストレージ・エンジンの変更(JE 7.2)
-
アプリケーションの書込み操作が停止したときにログのクリーニング後にチェックポイント処理が発生せず、ディスク領域を再利用できなくなるという問題が修正されました。これは、書込み操作の停止後にディスク領域を再利用することを想定しているテストでよく発生した問題です。本番システムでは、ディスク不足の状況の修復中の問題になることもありました。JE 7.1の以前の修正[#23180]ではこの状況でクリーニングが行われましたが、ディスク領域を再利用するためにチェックポイントも必要であるため、以前の修正では不完全でした。[#25364]
-
予期しないJEデータ・ファイル(.jdbファイル)の削除がバックグラウンド・タスクで自動的に検出されるようになりました。通常、JEログのクリーニングの結果としてすべてのJEデータ・ファイルの削除が内部的に実行されます。外部ファイルの削除が検出された場合、JEはこれは過失であるとみなします。これにより、RNの障害が早期に発生するようになったため、問題をできるだけ早く認識できるようになりました。以前は、削除したファイルが頻繁にアクセスされない場合、問題を一定期間検出できませんでした。[#25201]
-
複数のノード障害が原因でデータが失われる可能性が大幅に低くなりました(JEのRollbackProhibitedException)。NO_SYNCの永続性を使用すると、JEによってログがディスクに定期的にフラッシュされるため、この問題を回避できます。以前は、fsync (ストレージ・デバイスへのフラッシュ)が5分ごとに実行されていました。現在は、ファイル・システムへのフラッシュが5秒ごとに実行され、fsyncが20秒ごとに実行されます。[#25417]
-
CacheMode.EVICT_LNおよびオフヒープ・キャッシュを使用するNoSQL DBなどのアプリケーションで、JEのDbCacheSizeユーティリティが改善されました。NoSQL DB容量計画の実行中にDbCacheSizeを実行する場合、-offheap引数を指定する必要があります。DbCacheSizeを実行するためのドキュメントは、『NoSQL DB管理者ガイド』の「C.初期容量計画」のJEキャッシュ・サイズの決定に関する項で更新されました。このドキュメントは以前、オフヒープ・キャッシュの使用が考慮されていなかったため、正確ではありませんでした。[#25380]
非推奨になった機能
-
このリリースでは、SNMPプロトコルを介してストアのメトリックへのアクセスを可能にするSNMPエージェント(oracle.kv.impl.mgmt.snmp.SnmpAgent)が非推奨になりました。将来のリリース(2017年7月頃)に製品から削除される予定です。