SFX KnowledgeBase Updates
Overview
- Software updates – new and updated configuration files, source parsers, target parsers, and so forth.
- Database updates – new and updated targets, sources, services, portfolios and objects.
Revision Packages
<YYYY><REV_NR><HOTFIX_NR>
- A KnowledgeBase software package – The name of this package starts with sfx-kbsw-update- and is followed by the revision number. For example: sfx-kbsw-update-20100500.run
- A database package – The name of this package starts with sfx-kbdb-update and is followed by the revision number. For example: sfx-kbdb-update-20100500.run
- An extra package – This package contains files that will be placed in the /app directory of the SFX server. For example: sfx-extra-update-20100500.run
- A software package – This package is included with the revision if a service pack or minor release is released at the same time as the revision. The name of the software package starts with sfx-sw-update and is not followed by the revision number, but includes the release or service pack number instead. For example: sfx-sw-update-4.1.3.run
The SFX KnowledgeBase Update Process
- Checks which revisions need to be applied on the SFX server. This makes it possible to apply several revisions in one execution of the program.
- Downloads the various revision packages required for the update.
- Backs up the files and database tables that will be altered by the update.
- Executes the .run files in the correct order.
- All global KnowledgeBase data maintained by Ex Libris and held in the sfxlglb41 database is updated automatically with all changes, additions, and deletions.
- Each local instance—with all its local items and localizations—is checked and changes are made if the local infomation is affected by the global KnowledgeBase changes.
Applying an SFX KnowledgeBase Update
Before starting the revision update process, the operating system of the SFX server is checked. The following operating system versions are not supported (and result in the revision update not being applied):
- RH4
- RH5, 32 bit
- Solaris 8
- Solaris 9
- Log on to the SFX server as the sfxlglb41 user.
- Type da to go to the admin directory.
- Start the update program by typing the following:
./revision/rev-up
- Downloads the sfx/revision_v4/list/RevisionList.pm file from the Ex Libris FTP server. This file contains a list of all SFX version 4.0 revisions and the order in which they need to be applied.
- Compares the RevisionList.pm file with the following file on your SFX server: exlibris/sfx_ver/sfx4_1/.sfx_history. The .sfx_history file lists the revision packages that have been applied to each instance. This comparison results in a list of available revisions that need to be applied on the server.
- Downloads the necessary update packages from the Ex Libris FTP server, based on the comparison results.
SFX Revision Update
Logging at 'exlibris/sfx_ver/sfx4_1/tmp/rev-up-2007-06-26T11:19:46.log'.
Downloading RevisionList.pm... ok Downloading sfx-extra-update-20070528.run... ok Downloading sfx-kbdb-update-20070601.run... ok Downloading sfx-kbsw-update-20070601.run... ok Downloading sfx-sw-update-20070528.run... ok |
- Backs up the SFX directories and database tables that may be modified as part of the update process. This backup enables you to roll back to the pre-revision state of the server if a problem occurs during the update process. More information about the backup can be found in the Running the KnowledgeBase in Batch Mode section of the SFX Advanced User’s Guide.
Creating full backup... IMPORTANT NOTE: This backup includes limited number of software folders and KB tables It is not a replacement for system backup! Initializing backup... Checking permissions...done Validating backup folder...done Creating temporary folder for backup...done Creating KB backup... Getting list of instances...done Backup KB of 'sfxlcl41' instance...done Backup KB of 'sfxtst41' instance...done Backup KB of 'sfxlglb41' instance...done KB backup done Creating SW backup... Storing folder 'admin'...done Storing folder 'cgi'...done Storing folder 'config'...done Storing folder 'kbdb-reports'...done Storing folder 'lib'...done Storing folder 'sfxadmin'...done Storing folder 'sqltab'...done Storing folder 'templates'...done SW backup done Creating History backup...done Finalizing backup... Creating rollback script...done Creating backup archive...done Removing temporary files...done Backup done |
- Applies any extra packages included in the revision updates first. The purpose of an extra package is to update or add new files in the SFX/app directory (for example, updates to Perl or Apache). The following is an example of what is displayed on the screen when applying an extra package:
--[ Executing extra-20070528 ]-- Verifying archive integrity... All good. Uncompressing SFX 3 - Revision sfx-extra-update-20070528 - Built 2007-04-30T14:39:07...................... Started running extra-20070528 Checking if there are missing dependencies... Unpacking linux.tar into exlibris/sfx_ver/sfx4_1. Finished extra-20070528 |
- Applies any software package included in the revision updates on sfxlglb41 and all the local instances (such as sfxlcl41 and sfxtst41). For each local instance, symbolic links are created from the local instances to any new files in the sfxlglb41 instance.
--[ Executing sw-20070528 ]-- Verifying archive integrity... All good. Uncompressing SFX 3 - Revision sfx-sw-update-20070528 - Built 2007-05-29T09:30:19................ Started running sw-20070528 Logging at 'exlibris/sfx_ver/sfx4_1/tmp/sw-20070528-20070626-11:20:45.log' Checking if there are missing dependencies... [ 1 ] Unpacking into sfxlglb41. [ 2 ] Removing deprecated files. [ 3 ] Going over all children instances of sfxlglb41. [ Execution per instance ] [ For instance 'sfxlcl41' ] Type the 'sfxlcl41' Unix Password Password: Creating symlinks from sfxlglb41 to sfxlcl41... ok ok Removing deprectated files and directories Executing 'restart' for 'sfxlcl41'. [ For instance 'sfxtst41' ] Type the 'sfxtst41' Unix Password Password: Creating symlinks from sfxlglb41 to sfxtst41... ok ok Removing deprectated files and directories Executing 'restart' for 'sfxtst41'. Finished sw-20070528 |
- Applies any KnowledgeBase software packages included in the revision updates on sfxlglb41 and all the local instances (such as sfxlcl41 and sfxtst41). For each local instance, symbolic links are created from the local instances to any new files in the sfxlglb41 instance.
--[ Executing kbsw-20070528 ]-- Verifying archive integrity... All good. Uncompressing SFX 3 - Revision sfx-kbsw-update-20070528 - Built 2007-05-21T13:55:03......... Started running kbsw-20070528 Logging at 'exlibris/sfx_ver/sfx4_1/tmp/kbsw-20070528-20070626-11:27:41.log' Checking if there are missing dependencies...[ 1 ] Unpacking into sfxlglb41. [ 2 ] Going over all children instances of sfxlglb41. [ Execution per instance ] [ For instance 'sfxlcl41' ] Type the 'sfxlcl41' Unix Password: Creating symlinks from sfxlglb41 to sfxlcl41... ok ok Executing 'restart' for 'sfxlcl41'. [ For instance 'sfxtst41' ] Type the 'sfxtst41' Unix Password: Creating symlinks from sfxlglb41 to sfxtst41... ok ok Executing 'restart' for 'sfxtst41'. Finished kbsw-20070528 |
- Applies any KnowledgeBase database packages included in the revision updates on the global instance sfxlglb41, and then on all the local instances (such as sfxlcl41 and sfxtst41). The following appears on the screen for each local instance:
--[ Executing kbdb-20070601 ]-- Verifying archive integrity... All good. Uncompressing SFX 3 - Revision sfx-kbdb-update-20070528 - Built 2007-05-21T15:43:17........ Started running kbdb-20070528 Logging at 'exlibris/sfx_ver/sfx4_1/tmp/kbdb-20070528-20070626-11:32:09.log' Getting list of instances...ok
[ Analyzing sfxlcl41 ] Logging activity in exlibris/sfx_ver/sfx4_1/tmp/kbdb-20070528-20070626-11:32:09.log Reports: exlibris/sfx_ver/sfx4_1/tmp/kbdb-reports/sfxlcl41-20070528-20070626113209 Working on GLOBAL_CAT_ASSIGN... action: Adding action: Deleting action: Updating Working on GLOBAL_CAT_SUBCAT... action: Adding action: Deleting action: Updating Working on GLOBAL_SUBCAT... action: Adding action: Deleting action: Updating Working on GLOBAL_CAT... action: Adding action: Deleting action: Updating Working on PUBLISHER... action: Adding action: Deleting action: Updating Working on RELATION... action: Adding action: Deleting action: Updating Working on CODEN... action: Adding action: Deleting action: Updating Working on CONTROL... action: Adding action: Deleting action: Updating Working on ISBN... action: Adding action: Deleting action: Updating Working on ISSN... action: Adding action: Deleting action: Updating Working on LCCN... action: Adding action: Deleting action: Updating Working on TITLE... action: Adding action: Deleting action: Updating Working on OBJECT_PORTFOLIO... action: Adding action: Deleting action: Updating Working on SOURCE_SERVICE... action: Adding action: Deleting action: Updating Working on SOURCE... action: Adding action: Deleting action: Updating Working on TS_AUTHENTICATION... action: Adding action: Deleting action: Updating Working on TARGET_SERVICE... action: Adding action: Deleting action: Updating Working on TARGET... action: Adding action: Deleting action: Updating Working on INTERFACE... action: Adding action: Deleting action: Updating <Working on SERVICE... action: Adding action: Deleting action: Updating |
- Displays the following after all instances on your server and sfxlglb41 have been updated successfully:
[ All instances in sync ] Finished kbdb-20070528 Sending update email... [ rev-up finished ] |
If all instances on your server cannot be updated, the sfxlglb41 database cannot be updated and the following message is displayed:
[ Update of instance 'sfxlglb41' ]
Checking if revision can be applied to sfxlglb41...no, some instances are not ready: $VAR1 = [ 'sfxlcl41' ]; [ END ] |
Software Update
- Symbolic links are created from the local instances to any new files in the sfxlglb41 instance
- Files symbolically linked to the global instance automatically get updates via the sfxglb41 instance
- Files with broken symbolic links are not automatically updated. Implementation instructions are provided in the revision update release notes that explain how to manually make changes to these files. Alternatively, the symbolic link to the global file can be recreated (if local changes to the file are no longer needed).
- For the global instance: /exlibris/sfx_ver/sfx_version_3/sfxglb41/config/global_broken_symlinks_update.config__
- For local instances: /exlibris/sfx_ver/sfx_version_3/<local instance>/config/local_broken_symlinks_update.config
Database Update
- delta_KB_TARGETS-added-5.sql
- delta_KB_TARGET_SERVICES-added-13.sql
- delta_KB_TARGET_SERVICES-updated-164.sql
- delta_KB_TARGETS-updated-5.sql
insert into KB_TARGETS (TARGET_ID,TARGET_NAME,TARGET_PUBLIC_NAME,DESCRIPTION,KB_INTERNAL_DESCRIPTION,AGGREGATOR,SITE_AVAILABILITY,TARGET_CHARACTER_SET,TARGET_TYPE,THRESHOLD,OWNER,AVAILABLE_FOR,INTERFACE_ID,STATUS,STATUS_DATE,DISTRIBUTION_STATUS,DISTRIBUTION_STATUS_DATE,CREATION_DATE,CREATED_BY,LAST_UPDATE_DATE,LAST_UPDATED_BY,VERSION_NUMBER,RELEASE_NUMBER,CRUD_TYPE,LOGIC_UPDATE_DATE) values (2260000000000002,'DAVID','David','','','','SITE UP','iso-8859-1','Journal','','OTB','OTB','2260000000000002','ACTIVE','0000-00-00 00:00:00','READY FOR DISTRIBUTION','0000-00-00 00:00:00','2010-01-14 12:03:31','Ex Libris - KB team','2010-01-14 12:20:38','Ex Libris - KB team','1','','CREATE','0000-00-00 00:00:00');
insert into KB_TARGETS (TARGET_ID,TARGET_NAME,TARGET_PUBLIC_NAME,DESCRIPTION,KB_INTERNAL_DESCRIPTION,AGGREGATOR,SITE_AVAILABILITY,TARGET_CHARACTER_SET,TARGET_TYPE,THRESHOLD,OWNER,AVAILABLE_FOR,INTERFACE_ID,STATUS,STATUS_DATE,DISTRIBUTION_STATUS,DISTRIBUTION_STATUS_DATE,CREATION_DATE,CREATED_BY,LAST_UPDATE_DATE,LAST_UPDATED_BY,VERSION_NUMBER,RELEASE_NUMBER,CRUD_TYPE,LOGIC_UPDATE_DATE) values (2260000000000003,'DAVID2','sfgrfv','','','','SITE UP','iso-8859-1','Journal','','OTB','OTB','2260000000000003','ACTIVE','0000-00-00 00:00:00','READY FOR DISTRIBUTION','0000-00-00 00:00:00','2010-01-14 12:10:03','Ex Libris - KB team','2010-01-14 12:20:39','Ex Libris - KB team','1','','CREATE','0000-00-00 00:00:00'); |
- report_KB_TARGETS_REPORT-added-5.sql
- report_KB_TARGETS_REPORT-deleted-2.sql
- report_KB_TARGETS_REPORT-updated-3.sql
- In case of database cleaning for new objects (removing object duplicates) – Duplicate objects can occur in SFX if you add local objects (with unique identifiers such as ISBN or ISSN) that are then added to the global Knowledgebase as part of the revision update. To prevent duplicates, SFX deletes the duplicate local objects.
For more information, see Database Cleaning for New Objects (Removing Object Duplicates).
- In case of duplicate object clean-up – As part of global KnowledgeBase maintenance, SFX periodically deletes duplicate objects found in the SFX KB. The revision update moves activation and localizations of portfolios from the duplicate object that is deleted to the object that is kept.
For more information, see Duplicate Object Clean-Up.
- As a result of global deletions – Activation and local overrides of global information are stored in the local instance. This information needs to be removed in case of global deletions. Additionally, sometimes local information is connected to global information (for example, a local portfolio is connected to a global target service). If there are deletions of global data, the locally created information may be affected.
- In case of new global database items – if AutoActive has been set to Yes, activate new object portfolios added during the update of sfxglb41 in the local instances.
If the revision update adds new objects with ISSN or other unique identifiers, the revision update needs to prevent ID duplication if the customer has added a local object with the same identifier.
- In case of updates to global database items – when AutoUpdate is turned on in the local instance, local overrides of global information are removed. For more information on AutoUpdate, see below.
AutoActive
- Aggregator Settings – Automatically activates the object if the target is an aggregator. If you select this option, the value INHERIT is stored in the SFX database.
- Yes – Automatically activates the object even if the target is not an aggregator
- No – Does not automatically activate the object even if the target is an aggregator
AutoUpdate
- Target service: parser and parse_param
- Object portfolio: parser and parse_param
Database Cleaning for Global Deletions
- When a global object is deleted, the revision update program deletes local object portfolios and the local override of title, as well as any existing local attributes.
All details regarding the local values of the deleted object portfolio and localizations of the global object are stored in the local revision report tables and are visible in the revision update reports.
- When a global target, target service, portfolio, or source service is deleted, the revision update program deletes local linking information and inventory information for the DEFAULT and for institutes.
Information regarding activation and local overrides of the deleted global entries is stored in the local revision report tables.
- If local database items are connected to deleted global entries.
- If local target service information is connected to a global target that is deleted, the local target service information is deleted. Details regarding the local target service information are stored in the local revision report tables.
- If local object portfolios are connected to a global target service that is deleted, the local object portfolio is deleted. Details regarding the local object portfolio information are stored in the local revision report tables.
Database Cleaning for New Objects (Removing Object Duplicates)
- Finds duplicate local objects based on ISSN/ISBN/LCCN/CODEN.
SFX objects are duplicates if they have:
- Identical values for ISSN, LCCN, or CODEN. SFX checks that the same value exists for both the local and global object.
- Identical value AND identical subtype (PRINT_HBK, PRINT_PBK, ELECTRONIC, or INCORRECT) for ISBNs. This means that for ISBNs with the same value but different subtypes are not treated as duplicates.
- Deletes the local object.
- Changes the main title to a local title. All other titles are deleted. All other attributes/identifiers are deleted except for the LOCAL attribute and local category assignments.
- Moves the object portfolio pointer to the new KnowledgeBase object.
- Changing the main title to a local title is not done if a local title already exists for the global object or if the title requirements for the global and local object are not identical. For example, if the global object is English (where one main title is required), and the local object is Japanese (two main titles are required), the local title is deleted and not connected to the global object.
- If a duplicate local object is connected to more than one global object (for example, one local object with an ISSN or EISSN where the ISSN matches global object1 - and the EISSN matches global object2) only one of the global objects is selected to which the local title (for example) is moved.
The following is the order of priority of the identifiers:
- ISSN - print
- ISSN - electronic
- ISBN - print
- ISBN - electronic
- LCCN
-
This step in the database update can also be performed separately via ServerAdminUtil > 4 Database maintenance > 15 Remove local duplicate objects.
Duplicate Object Clean-Up
- Localizations (such as local attributes and local titles) are moved from object 1 to object 2.
- Local portfolios are moved from object 1 to object 2.
- All portfolio activation and local linking information is moved from object 1 to object 2.
- Duplicate object portfolios with the same targets services, parse params, and thresholds are deleted. All activations and localizations are moved from the deleted object portfolio to the one that is kept.
- If identical global object portfolios exist for both object 1 and object 2, the duplicate object portfolio for object 2 is deleted and not moved. Object portfolios are treated as duplicates if they have the same target services, parse params, and thresholds. All activations and localizations are moved from the deleted object portfolio to the one that is kept (except if the object portfolio for object 1 already has activations and localizations).
Object portfolio deduplication occurs during duplicate object clean-up. This means that if the object portfolios of the object to be deleted and the object to be kept are the same, the object portfolios are deleted and not moved.