In the previous blog I changed the Docbase Name to repository1 instead of RepoTemplate using MigrationUtil, in this blog it is Server Config Name’s turn to be changed.
In general, the repository name and the server config name are the same except in High availability case.
You can find the Server Config Name in the server.ini file:
[[email protected] ~]$ cat $DOCUMENTUM/dba/config/repository1/server.ini [SERVER_STARTUP] docbase_id = 1000600 docbase_name = repository1 server_config_name = RepoTemplate database_conn = DCTMDB ...
1. Migration preparation
To change the server config name to repository1, you need first to update the configuration file of MigrationUtil, like below:
[[email protected] ~]$ cat $DM_HOME/install/external_apps/MigrationUtil/config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>Database connection details</comment> <entry key="dbms">oracle</entry> <!-- This would be either sqlserver, oracle, db2 or postgres --> <entry key="tgt_database_server">vmtestdctm01</entry> <!-- Database Server host or IP --> <entry key="port_number">1521</entry> <!-- Database port number --> <entry key="InstallOwnerPassword">install164</entry> <entry key="isRCS">no</entry> <!-- set it to yes, when running the utility on secondary CS --> <!-- <comment>List of docbases in the machine</comment> --> <entry key="DocbaseName.1">repository1</entry> <!-- <comment>docbase owner password</comment> --> <entry key="DocbasePassword.1">install164</entry> ... <entry key="ChangeServerName">yes</entry> <entry key="NewServerName.1">repository1</entry>
Put all other entry to no.
The tool will use above information, and load more from the server.ini file.
2. Execute the migration
Use the below script to execute the migration:
[[email protected] ~]$ cat $DM_HOME/install/external_apps/MigrationUtil/MigrationUtil.sh #!/bin/sh CLASSPATH=${CLASSPATH}:MigrationUtil.jar export CLASSPATH java -cp "${CLASSPATH}" MigrationUtil
Update it if you need to overload the CLASSPATH only during migration.
2.a Stop the Docbase and the DocBroker
$DOCUMENTUM/dba/dm_shutdown_repository1 $DOCUMENTUM/dba/dm_stop_DocBroker
2.b Update the database name in the server.ini file
Like during the Docbase Name change, it is a workaround to avoid below error:
... Database URL:jdbc:oracle:thin:@vmtestdctm01:1521/DCTMDB ERROR...Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
Check the tnsnames.ora and note the service name, in my case is dctmdb.local.
[[email protected] ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora DCTMDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = vmtestdctm01)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dctmdb.local) ) )
Make the change in the server.ini file:
[[email protected] ~]$ vi $DOCUMENTUM/dba/config/repository1/server.ini ... [SERVER_STARTUP] docbase_id = 1000600 docbase_name = repository1 server_config_name = RepoTemplate database_conn = dctmdb.local ...
2.c Execute the migration script
[[email protected] ~]$ $DM_HOME/install/external_apps/MigrationUtil/MigrationUtil.sh Welcome... Migration Utility invoked. Skipping Docbase ID Change... Skipping Host Name Change... Skipping Install Owner Change... Created log File: /app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/ServerNameChange.log Changing Server Name... Database owner password is read from config.xml Finished changing Server Name... Skipping Docbase Name Change... Skipping Docker Seamless Upgrade scenario... Migration Utility completed.
All changes have been recorded in the log file:
[[email protected] ~]$ cat /app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/ServerNameChange.log Start: 2019-02-02 19:55:52.531 Changing Server Name ===================== DocbaseName: repository1 Retrieving server.ini path for docbase: repository1 Found path: /app/dctm/product/16.4/dba/config/repository1/server.ini ServerName: RepoTemplate New ServerName: repository1 Database Details: Database Vendor:oracle Database Name:dctmdb.local Databse User:RepoTemplate Database URL:jdbc:oracle:thin:@vmtestdctm01:1521/dctmdb.local Successfully connected to database.... Validating Server name with existing servers... select object_name from dm_sysobject_s where r_object_type = 'dm_server_config' Processing Database Changes... Created database backup File '/app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/ServerNameChange_DatabaseRestore.sql' select r_object_id,object_name from dm_sysobject_s where r_object_type = 'dm_server_config' and object_name = 'RepoTemplate' update dm_sysobject_s set object_name = 'repository1' where r_object_id = '3d0f449880000102' select r_object_id,object_name from dm_sysobject_s where r_object_type = 'dm_jms_config' and object_name like '%repository1.RepoTemplate%' update dm_sysobject_s set object_name = 'JMS vmtestdctm01:9080 for repository1.repository1' where r_object_id = '080f4498800010a9' select r_object_id,object_name from dm_sysobject_s where r_object_type = 'dm_cont_transfer_config' and object_name like '%repository1.RepoTemplate%' update dm_sysobject_s set object_name = 'ContTransferConfig_repository1.repository1' where r_object_id = '080f4498800004ba' select r_object_id,target_server from dm_job_s where target_server like '%repository1.RepoTemplate%' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800010d3' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f44988000035e' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f44988000035f' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000360' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000361' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000362' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000363' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000364' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000365' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000366' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000367' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000372' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000373' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000374' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000375' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000376' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000377' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000378' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000379' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f44988000037a' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f44988000037b' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000386' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000387' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000388' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000389' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000e42' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000cb1' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000d02' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000d04' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000d05' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003db' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003dc' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003dd' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003de' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003df' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003e0' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003e1' update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800003e2' Successfully updated database values... Processing File changes... Backed up '/app/dctm/product/16.4/dba/config/repository1/server.ini' to '/app/dctm/product/16.4/dba/config/repository1/server.ini_server_RepoTemplate.backup' Updated server.ini file:/app/dctm/product/16.4/dba/config/repository1/server.ini Backed up '/app/dctm/product/16.4/wildfly9.0.1/server/DctmServer_MethodServer/deployments/acs.ear/lib/configs.jar/config/acs.properties' to '/app/dctm/product/16.4/wildfly9.0.1/server/DctmServer_MethodServer/deployments/acs.ear/lib/configs.jar/config/acs.properties_server_RepoTemplate.backup' Updated acs.properties: /app/dctm/product/16.4/wildfly9.0.1/server/DctmServer_MethodServer/deployments/acs.ear/lib/configs.jar/config/acs.properties Finished processing File changes... Finished changing server name 'repository1' Processing startup and shutdown scripts... Backed up '/app/dctm/product/16.4/dba/dm_start_repository1' to '/app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/dm_start_repository1_server_RepoTemplate.backup' Updated dm_startup script. Backed up '/app/dctm/product/16.4/dba/dm_shutdown_repository1' to '/app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/dm_shutdown_repository1_server_RepoTemplate.backup' Updated dm_shutdown script. Finished changing server name.... End: 2019-02-02 19:55:54.687
2.d Reset the value of database_conn in the server.ini file
[[email protected] ~]$ vi $DOCUMENTUM/dba/config/repository1/server.ini ... [SERVER_STARTUP] docbase_id = 1000600 docbase_name = repository1 server_config_name = repository1 database_conn = DCTMDB ...
3. Check after update
Start the Docbroker and the Docbase:
$DOCUMENTUM/dba/dm_launch_DocBroker $DOCUMENTUM/dba/dm_start_repository1
Check the log to be sure that the repository has been started correctly. Notice that the log name has been changed from RepoTemplate.log to repository1.log:
[[email protected] ~]$ tail -5 $DOCUMENTUM/dba/log/repository1.log ... IsProcessAlive: Process ID 0 is not > 0 2019-02-02T20:00:09.807613 29293[29293] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent worker (pid : 29345, session 010f44988000000b) is started sucessfully." IsProcessAlive: Process ID 0 is not > 0 2019-02-02T20:00:10.809686 29293[29293] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent worker (pid : 29362, session 010f44988000000c) is started sucessfully."
4. Manual rollback is possible?
In fact, in the MigrationUtilLogs folder, you can find logs, backup of start/stop scripts, and also the sql file for manual rollback:
[[email protected] ~]$ ls -rtl $DM_HOME/install/external_apps/MigrationUtil/MigrationUtilLogs total 980 -rw-rw-r-- 1 dmadmin dmadmin 4323 Feb 2 19:55 ServerNameChange_DatabaseRestore.sql -rwxrw-r-- 1 dmadmin dmadmin 2687 Feb 2 19:55 dm_start_repository1_server_RepoTemplate.backup -rwxrw-r-- 1 dmadmin dmadmin 3623 Feb 2 19:55 dm_shutdown_repository1_server_RepoTemplate.backup -rw-rw-r-- 1 dmadmin dmadmin 6901 Feb 2 19:55 ServerNameChange.log
lets see the content of the sql file :
[[email protected] ~]$ cat $DM_HOME/install/external_apps/MigrationUtil/MigrationUtilLogs/ServerNameChange_DatabaseRestore.sql update dm_sysobject_s set object_name = 'RepoTemplate' where r_object_id = '3d0f449880000102'; update dm_sysobject_s set object_name = 'JMS vmtestdctm01:9080 for repository1.RepoTemplate' where r_object_id = '080f4498800010a9'; update dm_sysobject_s set object_name = 'ContTransferConfig_repository1.RepoTemplate' where r_object_id = '080f4498800004ba'; update dm_job_s set target_server = '[email protected]' where r_object_id = '080f4498800010d3'; update dm_job_s set target_server = '[email protected]' where r_object_id = '080f44988000035e'; update dm_job_s set target_server = '[email protected]' where r_object_id = '080f44988000035f'; update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000360'; update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000361'; update dm_job_s set target_server = '[email protected]' where r_object_id = '080f449880000362'; update dm_job_s set target_server = 'repository1.RepoTem[email protected]' where r_object_id = '080f449880000363'; ...
I already noticed that a manual rollback is possible after Docbase ID and Docbase Name change but I didn’t test it… I would like to try this one.
So to rollback:
Stop the Docbase and the Docbroker
$DOCUMENTUM/dba/dm_shutdown_RepoTemplate $DOCUMENTUM/dba/dm_stop_DocBroker
Execute the sql
[[email protected] ~]$ cd $DM_HOME/install/external_apps/MigrationUtil/MigrationUtilLogs [[email protected] MigrationUtilLogs]$ sqlplus /nolog SQL*Plus: Release 12.1.0.2.0 Production on Sun Feb 17 19:53:12 2019 Copyright (c) 1982, 2014, Oracle. All rights reserved. SQL> conn [email protected] Enter password: Connected. SQL> @ServerNameChange_DatabaseRestore.sql 1 row updated. 1 row updated. 1 row updated. ...
The DB User is still RepoTemplate, it hasn’t been changed when I changed the docbase name
Copy back the files saved, you can find the list of files updated and saved in the log:
cp /app/dctm/product/16.4/dba/config/repository1/server.ini_server_RepoTemplate.backup /app/dctm/product/16.4/dba/config/repository1/server.ini cp /app/dctm/product/16.4/wildfly9.0.1/server/DctmServer_MethodServer/deployments/acs.ear/lib/configs.jar/config/acs.properties_server_RepoTemplate.backup /app/dctm/product/16.4/wildfly9.0.1/server/DctmServer_MethodServer/deployments/acs.ear/lib/configs.jar/config/acs.properties cp /app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/dm_start_repository1_server_RepoTemplate.backup /app/dctm/product/16.4/dba/dm_start_repository1 cp /app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/dm_shutdown_repository1_server_RepoTemplate.backup /app/dctm/product/16.4/dba/dm_shutdown_repository1
Think about changing back the the database connection in /app/dctm/product/16.4/dba/config/repository1/server.ini (see 2.d step).
Then start the DocBroker and the Docbase:
$DOCUMENTUM/dba/dm_launch_DocBroker $DOCUMENTUM/dba/dm_start_repository1
Check the repository log:
[[email protected] ~]$ tail -5 $DOCUMENTUM/dba/log/RepoTemplate.log ... 2019-02-02T20:15:59.677595 19200[19200] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent worker (pid : 19232, session 010f44988000000a) is started sucessfully." IsProcessAlive: Process ID 0 is not > 0 2019-02-02T20:16:00.679566 19200[19200] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent worker (pid : 19243, session 010f44988000000b) is started sucessfully." IsProcessAlive: Process ID 0 is not > 0 2019-02-02T20:16:01.680888 19200[19200] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent worker (pid : 19255, session 010f44988000000c) is started sucessfully."
Yes, the rollback works correctly! 😀 Despite this, I hope you will not have to do it on a production environment. 😉