Release 11gR2.2.0.39 Enterprise Edition
Oracle NoSQL Database 2.0 has moved to Admin version 2. This is an on-disk format change which affects internal data stored by the Admin services. The change is forward compatible in that Admin services deployed using 2.0 can read data created by older releases. The change is not backwards compatible in that Admin services which have been deployed with the new release cannot be restarted using older NoSQL releases.See the section on Updating an Existing Oracle NoSQL Database Deployment in the Admin Guide.
java.net.InetAddress.getLocalHost() returned loopback address:<hostname> and no suitable address associated with network interfaces.This has been fixed. [#22252]
RequestTimeoutException
will now be propagated to the client; wrapping the original exception from the underlying persistent store as the cause. For additional information, including strategies one might employ when this exception is encountered, refer to the RequestTimeoutException
javadoc.
This has been fixed. [#21210]
hideUserData
is set
to true, as it is by default, error messages which are printed to the
server side logs or are displayed via the show CLI commands replace
any key/values with the string "[hidden]". To see the actual record content
in errors, set the parameter to false. [#22376]
plan
deploy-topology
command would often be visible only within
the NoSQL DB logs, which made
installation troubleshooting difficult. In this
release, such start up errors can now be seen via the Admin CLI
show plan -id <id>
command. [#22101]
examples.hadoop.CountMinorKeys
example against a cluster based on the 2.x version of Hadoop (CDH4), the MapReduce job initiated by that example would fail as a result of an IncompatibleClassChangeError
; which is caused by an incompatibility introduced in org.apache.hadoop.mapreduce.JobContext
between Hadoop 1.x and Hadoop 2.x. This failure occurs whether the example is compiled and built against Hadoop 1.x or Hadoop 2.x. Because the product's customer base almost exclusively uses Hadoop 2.x, this release will provide support for Hadoop 2.x instead of 1.x. Future releases may revisit support for both Hadoop version paths, but doing so will involve refactoring the codebase and its associated release artifacts, as well as substantial changes to the product's current build process.
Support of Hadoop 2.x (CDH4) has been provided. [#22157]
plan remove-admin -admin <adminId>
You cannot remove the sole Admin if only one Admin instance is configured.
For availability and durability reasons, it is highly recommended that you maintain at least three Admin instances at all times. For that reason, if you try to remove an Admin when the removal would result in there being fewer than three, the command will fail unless you give the -force flag.
If you try to remove the Admin that is currently the master, mastership will transfer to another Admin. The plan will be interrupted, and subsequently can be re-executed on the new master Admin. To re-execute the interrupted plan, you would use this command:
plan execute -id <planId>
show perf
command, .perf files and .csv files, as well as the client-side statistics
returned by KVStore.getStats. However, corrections to the 95% and 99% values do
not apply to the client-side statistics, since these values do not appear in
the client-side API.
Op Type
column where latency
information is displayed. The previous definition was "latency in
milliseconds per operation" while the new definition is "latency
in milliseconds per request". In other words, for a "multi"
operation request, latency now applies to the entire request rather than
to each operation. For "single" operation requests, the definition of
latency has not changed.
TotalReq
. This is also available for client-side
statistics using the new OperationMetrics.getTotalRequests
method. For "multi" operation requests, the total number of requests is
normally smaller than the total number of operations (the
TotalOps
column). For "single" operation requests, the
total number of requests and operations are equal.
Exception in thread "main" com.sleepycat.je.EnvironmentFailureException: (JE 5.0.XX) ... last LSN=.../... LOG_INTEGRITY: Log information is incorrect, problem is likely persistent. Environment is invalid and must be closed. at com.sleepycat.je.recovery.RecoveryManager.traceAndThrowException(RecoveryManager.java:2793) at com.sleepycat.je.recovery.RecoveryManager.undoLNs(RecoveryManager.java:1097) at com.sleepycat.je.recovery.RecoveryManager.buildTree(RecoveryManager.java:587) at com.sleepycat.je.recovery.RecoveryManager.recover(RecoveryManager.java:198) at com.sleepycat.je.dbi.EnvironmentImpl.finishInit(EnvironmentImpl.java:610) at com.sleepycat.je.dbi.DbEnvPool.getEnvironment(DbEnvPool.java:208) at com.sleepycat.je.Environment.makeEnvironmentImpl(Environment.java:246) at com.sleepycat.je.Environment.[#22052](Environment.java:227) at com.sleepycat.je.Environment. (Environment.java:170) ... Caused by: java.lang.NullPointerException at com.sleepycat.je.log.entry.LNLogEntry.postFetchInit(LNLogEntry.java:406) at com.sleepycat.je.txn.TxnChain. (TxnChain.java:133) at com.sleepycat.je.txn.TxnChain. (TxnChain.java:84) at com.sleepycat.je.recovery.RollbackTracker$RollbackPeriod.getChain(RollbackTracker.java:1004) at com.sleepycat.je.recovery.RollbackTracker$Scanner.rollback(RollbackTracker.java:477) at com.sleepycat.je.recovery.RecoveryManager.undoLNs(RecoveryManager.java:1026) ... 10 more
KVStore.storeIterator
or KVStore.storeKeysIterator
method was used. [#21973]
lib/kvstore.jar lib/kvclient.jar
This change should reduce the amount of work needed to switch to a new release because the names of JAR files will no longer change between releases. Note that the name of the installation directory continues to include the release version number. [#22034]
121215 13:48:57:480 SEVERE [...] Average cleaner backlog has grown from 0.0 to 6.4. If the cleaner continues to be unable to make progress, the JE cache size and/or number of cleaner threads are probably too small. If this is not corrected, eventually all available disk space will be used.For more information on setting the cache size appropriately to avoid such problems, see "Determining the Per-Node Cache Size" in the Administrator's Guide. [#21111]
oracle.kv.lob
package provides operations that can
be used to read and write Large Objects (LOBs) such as audio and video
files. As a general rule, any object larger than 1 MB is a good
candidate for representation as a LOB. The LOB API permits access to
large values without having to materialize the value in its entirety
by providing streaming APIs for reading and writing these objects.
A storage node was incorrectly configured, and cannot be deployed.[#20530]
A storage node was once part of a NoSQL Database, but all components have been migrated from it using the migrate-storagenode command, and the storage node should be decommissioned.
oracle.kv.avro
package is
described in the Javadoc. The use of the Avro format is strongly
recommended. NoSQL DB will leverage Avro in the future to provide additional
features and capabilities. [#21213]
KVInputFormat
classes.
A new oracle.kv.hadoop.KVAvroInputFormat
class returns Avro
IndexedRecord
s to the caller. When this class is used in
conjunction with Oracle Loader for Hadoop, it is possible to read data
directly from NoSQL Database using OLH without using an interim Map-Reduce
job to store data in HDFS. [#21157]
oracle.kv.exttab
package and an "cookbook" example in the
examples/externaltables
directory. [#20981]
Javadoc
KVStoreConfig.setOpenTimeout()
KVStoreConfig.getOpenTimeout()
KVStoreConfig.setReadTimeout()
KVStoreConfig.getReadTimeout()
R1 installations must ensure that the software on the storage nodes has been upgraded as described in the upgrade documentation accompanying this release before using the above APIs on the client. [#20997]
rnRHSOBacklog
(default
1024), rnMonitorSOBacklog
(default 0), rnAdminSOBacklog
(default 0), rnAdminSOBacklog
(default 0),
snAdminSOBacklog
(default
0), snMonitorSOBacklog
(default 0), and
snRegistrySOBacklog
(default 1024).
[#21322]
Key.isPrefix
with an argument containing
a smaller major or minor path than the target Key object caused an
IndexOutOfBoundsException in certain cases. This has been fixed.
KeyRange()
constructor now checks that the start
Key
is less than the end Key
if both are specified,
otherwise an IllegalArgumentException
is thrown.
KeyRange
also has toString()
and
fromString()
methods for encoding and decoding
KeyRange
instances, similar to the same methods in
Key
. [#21470]
Datacenters can now be expressed as # or dc#joinPool myStorageNodePool 17 show repnode-params 5,3
The commands shown above are still valid, but can also be expressed as:
[#21099]joinPool myStorageNodePool sn17 show repnode-params rg5-rn3
Key.createKey
methods has been improved to
warn that List instances passed as parameters are owned by the Key object
after calling the method. To avoid unpredictable results, they must not be
modified. [#20530]
snapshot create
command
has been made significantly faster. Previously, it could take
minutes if executed on a store with a large amount of data. This
should be reduced to seconds. [#20772]
bin/run-kvlite.sh
and bin/kvctl
, have been replaced
by a java -jar lib/kvstore-M.N.P.jar
command. This provides portability
to all Java platforms, including Windows. The two scripts are deprecated, but
will be supported for at least one release cycle.
The translation from the old script commands to the new -jar commands is as follows:
Old script command | New -jar command |
---|---|
bin/run-kvlite.sh args... |
java -jar lib/kvstore-M.N.P.jar kvlite args... |
bin/kvctl command args... |
java -jar lib/kvstore-M.N.P.jar command args... |
There are a few differences to be aware of between the old and new commands.
nohup
, if desired, must be explicitly specified. In
the bin/kvctl
script, nohup was added automatically for the
start
and restart
commands. To specify the
equivalent command, use:
nohup java -jar lib/kvstore-M.N.P.jar start args... > /dev/null <
/dev/null 2<&1 &
The logging configuration file for kvlite is now specified using
standard Java syntax. Previously, the
examples/logging.properties
configuration file was added
automatically when passing -logging
to the
run-kvlite.sh
script. The new equivalent is:
java -Djava.util.logging.config.file=examples/logging.properties
-jar lib/kvstore-M.N.P.jar kvlite args...
Previously, the -host
argument defaulted to
the local machine name (via the `hostname`
command) when
running the kvctl
script. Now, for all control commands, no
default hostname is used and the -host
argument must be
specified explicitly. This change was made for two reasons: 1)
consistency, since the port and other arguments have no default value for
control commands, and 2) safety, since specifying an explicit hostname
guards against accidental errors.
Previously, the -host
argument defaulted to
localhost
when running the run-kvlite.sh
script.
Now, the default is the local machine name rather than (literally)
localhost
. Note that the kvlite command, unlike the control
commands, has default values for all arguments. This is because the kvlite
command is designed for ease-of-use during development on a single machine.
kvlite should not be used in production or for performance testing.
Previously, running java -jar lib/kvstore-M.N.P.jar
, with or
without arguments, printed the product version. Now, if no arguments are
specified, a usage message is printed. To print the version, use the
version command:
java -jar lib/kvstore-M.N.P.jar version