You are attending the second episode of the MigrationUtil series, today we will change the Docbase Name. If you missed the first one, you can find it here. I did this change on Documentum CS 16.4 with Oracle database, on the same docbase I already used to change the docbase ID.
My goal is to do both changes on the same docbase because that’s what I will need in the future.
So, we will be interested in the docbase RepoTemplate to change his name to repository1.
1. Migration preparation
I will not give the overview of the MigrationUtil, as I already did in the previous blog.
1.a Update the config.xml file
Below is the updated version of config.xml file to change the Docbase Name:
[dmadmin@vmtestdctm01 ~]$ cat $DOCUMENTUM/product/16.4/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">RepoTemplate</entry> <!-- <comment>docbase owner password</comment> --> <entry key="DocbasePassword.1">install164</entry> ... <entry key="ChangeDocbaseName">yes</entry> <entry key="NewDocbaseName.1">repository1</entry> ...
Put all other entry to no.
The tool will use above information, and load more from the server.ini file.
2. Before the migration (optional)
– Get docbase map from the docbroker:
[dmadmin@vmtestdctm01 ~]$ dmqdocbroker -t vmtestdctm01 -c getdocbasemap dmqdocbroker: A DocBroker Query Tool dmqdocbroker: Documentum Client Library Version: 16.4.0000.0185 Targeting port 1489 ************************************************** ** D O C B R O K E R I N F O ** ************************************************** Docbroker host : vmtestdctm01 Docbroker port : 1490 Docbroker network address : INET_ADDR: 02 5d2 c0a87a01 vmtestdctm01 192.168.122.1 Docbroker version : 16.4.0000.0248 Linux64 ************************************************** ** D O C B A S E I N F O ** ************************************************** -------------------------------------------- Docbase name : RepoTemplate Docbase id : 1000600 Docbase description : Template Repository Govern docbase : Federation name : Server version : 16.4.0000.0248 Linux64.Oracle Docbase Roles : Global Registry ...
– Create a document in the docbase:
Create an empty file
touch /home/dmadmin/DCTMChangeDocbaseExample.docx
Create document in the repository using idql
create dm_document object SET title = 'DCTM Change Docbase Document Example', SET subject = 'DCTM Change Docbase Document Example', set object_name = 'DCTMChangeDocbaseExample.docx', SETFILE '/home/dmadmin/DCTMChangeDocbaseExample.docx' with CONTENT_FORMAT= 'msw12';
Result:
object_created ---------------- 090f449880001125 (1 row affected)
note the r_object_id.
3. Execute the migration
3.a Stop the Docbase and the Docbroker
$DOCUMENTUM/dba/dm_shutdown_RepoTemplate $DOCUMENTUM/dba/dm_stop_DocBroker
3.b Update the database name in the server.ini file
It is a workaround to avoid below error:
Database Details: Database Vendor:oracle Database Name:DCTMDB Databse User:RepoTemplate 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
In fact, the tool deal with the database name as a database service name, and put “/” in the url instead of “:”. The best workaround I found is to update database_conn value in the server.ini file, and put the service name instead of the database name.
Check the tnsnames.ora and note the service name, in my case is dctmdb.local.
[dmadmin@vmtestdctm01 ~]$ 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:
[dmadmin@vmtestdctm01 ~]$ vi $DOCUMENTUM/dba/config/RepoTemplate/server.ini ... [SERVER_STARTUP] docbase_id = 1000600 docbase_name = RepoTemplate server_config_name = RepoTemplate database_conn = dctmdb.local database_owner = RepoTemplate database_password_file = /app/dctm/product/16.4/dba/config/RepoTemplate/dbpasswd.txt service = RepoTemplate root_secure_validator = /app/dctm/product/16.4/dba/dm_check_password install_owner = dmadmin ...
Don’t worry, we will roll back this change before docbase start 😉
3.c Execute the MigrationUtil script
[dmadmin@vmtestdctm01 ~]$ $DM_HOME/install/external_apps/MigrationUtil/MigrationUtil.sh Welcome... Migration Utility invoked. Skipping Docbase ID Changes... Skipping Host Name Change... Skipping Install Owner Change... Skipping Server Name Change... Changing Docbase Name... Created new log File: /app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/DocbaseNameChange.log Finished changing Docbase Name... Skipping Docker Seamless Upgrade scenario... Migration Utility completed.
No Error encountred here but it doesn’t mean that everything is ok… Please check the log file:
[dmadmin@vmtestdctm01 ~]$ cat /app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/DocbaseNameChange.log Start: 2019-02-01 19:32:10.631 Changing Docbase Name ===================== DocbaseName: RepoTemplate New DocbaseName: repository1 Retrieving server.ini path for docbase: RepoTemplate Found path: /app/dctm/product/16.4/dba/config/RepoTemplate/server.ini 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.... Processing Database Changes... Created database backup File '/app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/DocbaseNameChange_DatabaseRestore.sql' select r_object_id,object_name from dm_sysobject_s where r_object_type = 'dm_docbase_config' and object_name = 'RepoTemplate' update dm_sysobject_s set object_name = 'repository1' where r_object_id = '3c0f449880000103' select r_object_id,docbase_name from dm_docbaseid_map_s where docbase_name = 'RepoTemplate' update dm_docbaseid_map_s set docbase_name = 'repository1' where r_object_id = '440f449880000100' select r_object_id,file_system_path from dm_location_s where file_system_path like '%RepoTemplate%' update dm_location_s set file_system_path = '/app/dctm/product/16.4/data/repository1/content_storage_01' where r_object_id = '3a0f44988000013f' ... update dm_job_s set target_server = 'repository1.RepoTemplate@vmtestdctm01' where r_object_id = '080f4498800003e0' ... select i_stamp from dmi_vstamp_s where i_application = 'dmi_dd_attr_info' ... Successfully updated database values... ... Backed up '/app/dctm/product/16.4/dba/dm_start_RepoTemplate' to '/app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/dm_start_RepoTemplate_docbase_RepoTemplate.backup' Updated dm_startup script. Renamed '/app/dctm/product/16.4/dba/dm_start_RepoTemplate' to '/app/dctm/product/16.4/dba/dm_start_repository1' Backed up '/app/dctm/product/16.4/dba/dm_shutdown_RepoTemplate' to '/app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/dm_shutdown_RepoTemplate_docbase_RepoTemplate.backup' Updated dm_shutdown script. Renamed '/app/dctm/product/16.4/dba/dm_shutdown_RepoTemplate' to '/app/dctm/product/16.4/dba/dm_shutdown_repository1' WARNING...File /app/dctm/product/16.4/dba/config/RepoTemplate/rkm_config.ini doesn't exist. RKM is not configured Finished processing File changes... Processing Directory Changes... Renamed '/app/dctm/product/16.4/data/RepoTemplate' to '/app/dctm/product/16.4/data/repository1' Renamed '/app/dctm/product/16.4/dba/config/RepoTemplate' to '/app/dctm/product/16.4/dba/config/repository1' Renamed '/app/dctm/product/16.4/dba/auth/RepoTemplate' to '/app/dctm/product/16.4/dba/auth/repository1' Renamed '/app/dctm/product/16.4/share/temp/replicate/RepoTemplate' to '/app/dctm/product/16.4/share/temp/replicate/repository1' Renamed '/app/dctm/product/16.4/share/temp/ldif/RepoTemplate' to '/app/dctm/product/16.4/share/temp/ldif/repository1' Renamed '/app/dctm/product/16.4/server_uninstall/delete_db/RepoTemplate' to '/app/dctm/product/16.4/server_uninstall/delete_db/repository1' Finished processing Directory Changes... ... Processing Services File Changes... Backed up '/etc/services' to '/app/dctm/product/16.4/product/16.4/install/external_apps/MigrationUtil/MigrationUtilLogs/services_docbase_RepoTemplate.backup' ERROR...Couldn't update file: /etc/services (Permission denied) ERROR...Please update services file '/etc/services' manually with root account Finished changing docbase name 'RepoTemplate' Finished changing docbase name.... End: 2019-02-01 19:32:23.791
Here it is a justified error… Let’s change the service name manually.
3.d Change the service
As root, change the service name:
[root@vmtestdctm01 ~]$ vi /etc/services ... repository1 49402/tcp # DCTM repository native connection repository1_s 49403/tcp # DCTM repository secure connection
3.e Change back the Database name in the server.ini file
[dmadmin@vmtestdctm01 ~]$ vi $DOCUMENTUM/dba/config/repository1/server.ini ... [SERVER_STARTUP] docbase_id = 1000600 docbase_name = repository1 server_config_name = RepoTemplate database_conn = DCTMDB ...
3.f Start the Docbroker and the Docbase
$DOCUMENTUM/dba/dm_launch_DocBroker $DOCUMENTUM/dba/dm_start_repository1
3.g Check the docbase log
[dmadmin@vmtestdctm01 ~]$ tail -5 $DOCUMENTUM/dba/log/RepoTemplate.log ... 2019-02-01T19:43:15.677455 16563[16563] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent master (pid : 16594, session 010f449880000007) is started sucessfully." IsProcessAlive: Process ID 0 is not > 0 2019-02-01T19:43:15.677967 16563[16563] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent worker (pid : 16595, session 010f44988000000a) is started sucessfully." IsProcessAlive: Process ID 0 is not > 0 2019-02-01T19:43:16.680391 16563[16563] 0000000000000000 [DM_WORKFLOW_I_AGENT_START]info: "Workflow agent worker (pid : 16606, session 010f44988000000b) is started sucessfully."
You are saying the log name is still RepoTemplate.log 😉 Yes! because in my case the docbase name and the server name were the same before I change the docbase name:
[dmadmin@vmtestdctm01 ~]$ vi $DOCUMENTUM/dba/config/repository1/server.ini [SERVER_STARTUP] docbase_id = 1000600 docbase_name = repository1 server_config_name = RepoTemplate database_conn = DCTMDB database_owner = RepoTemplate database_password_file = /app/dctm/product/16.4/dba/config/repository1/dbpasswd.txt service = repository1 root_secure_validator = /app/dctm/product/16.4/dba/dm_check_password install_owner = dmadmin
Be patient, in the next episode we will see how we can change the server name 🙂
4. After the migration (optional)
Get docbase map from the docbroker:
[dmadmin@vmtestdctm01 ~]$ dmqdocbroker -t vmtestdctm01 -c getdocbasemap dmqdocbroker: A DocBroker Query Tool dmqdocbroker: Documentum Client Library Version: 16.4.0000.0185 Targeting port 1489 ************************************************** ** D O C B R O K E R I N F O ** ************************************************** Docbroker host : vmtestdctm01 Docbroker port : 1490 Docbroker network address : INET_ADDR: 02 5d2 c0a87a01 vmtestdctm01 192.168.122.1 Docbroker version : 16.4.0000.0248 Linux64 ************************************************** ** D O C B A S E I N F O ** ************************************************** -------------------------------------------- Docbase name : repository1 Docbase id : 1000600 Docbase description : Template Repository Govern docbase : Federation name : Server version : 16.4.0000.0248 Linux64.Oracle Docbase Roles : Global Registry ...
it’s not very nice to keep the old description of the docbase… Use below idql request to change it:
Update dm_docbase_config object set title='Renamed Repository' where object_name='repository1';
Check after change:
[dmadmin@vmtestdctm01 ~]$ dmqdocbroker -t vmtestdctm01 -c getdocbasemap ... Docbase name : repository1 Docbase id : 1000600 Docbase description : Renamed Repository ...
Check the document created before the migration:
docbase id : 090f449880001125
API> dump,c,090f449880001125 ... USER ATTRIBUTES object_name : DCTMChangeDocbaseExample.docx title : DCTM Change Docbase Document Example subject : DCTM Change Docbase Document Example ...
5. Conclusion
Well, the tool works, but as you saw we need a workaround to make the change. Which is not great, hope that it will be fixed in the future versions.
In the next episode I will change the server config name, see you there 😉