This documentation describes the steps of upgrading Choral without stopping the operation of the formerly installed Choral. This upgrade method is available from version 22.16.0 as the version upgrading to.
You have a running Choral setup with <choral_owner_old> as Choral owner. The users access all Choral methods they are privileged to use - <type>_idxtype, <type>_search, <type>_standardize, <type>_highlight, molconvert, molconvert_clob, chemterm, isvalidmolecule - without the schema prefix by having synonyms.
E.g.:
The query of the <user> doesn't set the <choral_owner_old> schema prefix:
The synonym defines that this call is the same as the following:
Install the new Choral version with <choral_owner_new> as Choral owner. You may choose setting up a new Choral server or using a new install directory on the same server but on different port.
Create all necessary grants and privileges for <user>.
Don't change the synonyms yet and don't add the indexes yet.
At the end of this step the old and the new Choral version are both working, only the indexes are missing for the new version.
Execute this grant statement as SYSTEM:
Fill out the placeholders and execute as the following script for each index: as <user>
The script waits until no uncommitted changes exist for the indexed table. Then creates an empty index. The index is invisible at first, so the query planner doesn't use it yet. Then the script fills the empty index with the index data. It takes a bit more time than a usual indexing. The current progress can be monitored in the v$session_longops view. When it is finished, the index is ready to use. The final step in the script is to make the index visible.
At the end of this step the old and the new Choral both contain the same index data and both are fully functioning.
E.g. these scripts must both work fine for the <user>:
Change the synonym definitions to use the new Choral version instead of the old Choral version. E.g.:
Test the synonym's work as <user>:
The synonym defines that this call is the same as the following:
Stop running the old version of choral service and drop the user <choral_owner_old>.