{"id":41459,"date":"2025-12-08T08:00:00","date_gmt":"2025-12-08T07:00:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=41459"},"modified":"2025-12-23T19:56:04","modified_gmt":"2025-12-23T18:56:04","slug":"extend-session-timeout-in-oracle-goldengate-microservices-web-ui","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/","title":{"rendered":"Extend Session Timeout in GoldenGate Microservices Web UI"},"content":{"rendered":"\n<p>If you start using the GoldenGate web UI after <a href=\"https:\/\/www.dbi-services.com\/blog\/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation\/\">installing it<\/a>, you might end up thinking that extending the session timeout would be nice. Since there is no clear Oracle documentation on that matter, here are multiple ways of doing it.<\/p>\n\n\n\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents\"><h2>Table of contents<\/h2><ul><li><a href=\"#h-modifying-the-configuration-files-quick-but-with-downtime\" data-level=\"2\">Modifying the configuration files: quick but with downtime<\/a><\/li><li><a href=\"#h-using-the-rest-api-online-but-more-complex\" data-level=\"2\">Using the Rest API: online but more complex<\/a><\/li><li><a href=\"#h-can-i-just-paste-the-authorization-fields-and-not-the-whole-configuration-file-in-the-patch-request\" data-level=\"2\">Can I just paste the authorization fields and not the whole configuration file in the patch request ?<\/a><\/li><li><a href=\"#h-do-i-have-to-update-the-configuration-file-after-modifying-the-configuration-with-the-rest-api\" data-level=\"2\">Do I have to update the configuration file after modifying the configuration with the Rest API ?<\/a><\/li><li><a href=\"#h-will-the-parameters-affect-connections-opened-through-the-adminclient\" data-level=\"2\">Will the parameters affect connections opened through the adminclient ?<\/a><\/li><li><a href=\"#h-after-modifying-the-configuration-files-manually-and-restarting-goldengate-my-sessions-are-not-affected-by-the-changes\" data-level=\"2\">After modifying the configuration files manually and restarting GoldenGate, my sessions are not affected by the changes<\/a><\/li><\/ul><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-modifying-the-configuration-files-quick-but-with-downtime\">Modifying the configuration files: quick but with downtime<\/h2>\n\n\n\n<p>The first way of doing it is to modify the <code>deploymentConfiguration.dat<\/code> files located in your <code>$OGG_CONF_HOME<\/code> directory. By default, <code>OGG_CONF_HOME<\/code> is set to <code>$OGG_ETC_HOME\/conf<\/code>.<\/p>\n\n\n\n<p>Inside this directory, the  <code>deploymentConfiguration.dat<\/code> file looks similar to this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"ServiceManager\": {\n        \"$schema\": \"ogg:service\",\n        \"config\": {\n            \"csrfHeaderProtectionEnabled\": false,\n            \"securityDetails\": {\n                \"network\": {\n                    \"common\": {\n                        \"fipsEnabled\": false,\n                        \"id\": \"OracleSSL\"\n                    },\n                    \"inbound\": {\n                        \"authMode\": \"clientOptional_server\",\n                        \"crlEnabled\": false,\n                        \"sessionCacheDetails\": {\n                            \"limit\": 20480,\n                            \"timeoutSecs\": 1800\n                        },\n                        \"role\": \"server\",\n                        \"cipherSuites\": &#091;\n                            \"TLS_AES_256_GCM_SHA384\",\n                            \"TLS_AES_128_GCM_SHA256\",\n                            \"TLS_CHACHA20_POLY1305_SHA256\"\n                        ],\n                        \"certACL\": &#091;\n                            {\n                                \"name\": \"ANY\",\n                                \"permission\": \"allow\"\n                            }\n                        ],\n                        \"sessionCacheEnabled\": false,\n                        \"protocolVersion\": \"TLS_ALL\"\n                    },\n                    \"outbound\": {\n                        \"authMode\": \"clientOptional_server\",\n                        \"crlEnabled\": false,\n                        \"role\": \"client\",\n                        \"cipherSuites\": \"^.*$\",\n                        \"sessionCacheEnabled\": false\n                    }\n                }\n            },\n            \"workerThreadCount\": 5,\n            \"csrfTokenProtectionEnabled\": true,\n            \"network\": {\n                \"ipACL\": &#091;\n                    {\n                        \"address\": \"ANY\",\n                        \"permission\": \"allow\"\n                    }\n                ],\n                \"serviceListeningPort\": {\n                    \"address\": \"0.0.0.0\",\n                    \"port\": 7809\n                }\n            },\n            \"hstsEnabled\": true,\n            \"authorizationDetails\": {\n                \"movingExpirationWindowSecs\": 900,\n                \"common\": {\n                    \"allow\": &#091;\n                        \"Digest\",\n                        \"x-Cert\",\n                        \"Basic\",\n                        \"Bearer\"\n                    ],\n                    \"customAuthorizationEnabled\": true\n                },\n                \"useMovingExpirationWindow\": false,\n                \"sessionDurationSecs\": 3600\n            },\n            \"security\": true,\n            \"defaultSynchronousWait\": 30,\n            \"authorizationEnabled\": true,\n            \"hstsDetails\": \"max-age=31536000;includeSubDomains\",\n            \"asynchronousOperationEnabled\": true,\n            \"taskManagerEnabled\": true,\n            \"legacyProtocolEnabled\": false\n        },\n        \"enabled\": true,\n        \"id\": \"30316382-c77b-495c-b69e-fd910d525b36\",\n        \"status\": \"restart\"\n    },\n    \"pluginsrvr\": {\n        \"$schema\": \"ogg:service\",\n        \"config\": \"external\",\n        \"critical\": true,\n        \"enabled\": false,\n        \"status\": \"stopped\",\n        \"locked\": false,\n        \"id\": \"eea1497d-8ff2-473f-90b3-84fffa57ebc7\"\n    }\n}<\/code><\/pre>\n\n\n\n<p>There are two parameters that impact session timeout:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>sessionDurationSecs<\/code> : Duration of the authorization. Defaults to 3600 (one hour). After this delay, the session will be terminated, even if it has been active.<\/li>\n\n\n\n<li><code>sessionInactiveSecs<\/code> : Maximum number of seconds an unexpired authorization session may be inactive before expiring. Defaults to 1800 (30 minutes). If set to 0, a session&#8217;s inactivity time will be unlimited. This parameter is the one responsible for the pop-up you see after some time in the UI (see below)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"326\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-1024x326.png\" alt=\"\" class=\"wp-image-41764\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-1024x326.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-300x96.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-768x245.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout.png 1186w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Depending on your goals, two changes can be made:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If you want to increase the overall session duration, but still want inactive sessions to be disconnected after 30 minutes, you just have to increase <code>sessionDurationSecs<\/code>.<\/li>\n\n\n\n<li>If you feel limited by the inactivity timeout and want to increase it, then you have to increase <code>sessionInactiveSecs<\/code>. If you want your sessions to last longer than one hour, you will also have to increase <code>sessionDurationSecs<\/code>.<\/li>\n<\/ul>\n\n\n\n<p>Let&#8217;s check how it looks inside the configuration file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;oracle@vmogg conf]$ grep -E 'sessionDurationSecs|sessionInactiveSecs' deploymentConfiguration.dat\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \"sessionDurationSecs\": 3600<\/code><\/pre>\n\n\n\n<p>The authorization limit is present (and set to the default value of 3600 seconds), but the inactivity parameter is absent. If you want to modify it, you will first have to add it. To update the session timeout, just modify these parameters (in seconds). After this, just restart the service manager and it&#8217;s done !<\/p>\n\n\n\n<p>Here is a full configuration file example, modified with the two parameters <code>sessionDurationSecs<\/code> and <code>sessionInactiveSecs<\/code> added:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"ServiceManager\": {\n        \"$schema\": \"ogg:service\",\n        \"config\": {\n            \"csrfHeaderProtectionEnabled\": false,\n            \"securityDetails\": {\n                \"network\": {\n                    \"common\": {\n                        \"fipsEnabled\": false,\n                        \"id\": \"OracleSSL\"\n                    },\n                    \"inbound\": {\n                        \"authMode\": \"clientOptional_server\",\n                        \"crlEnabled\": false,\n                        \"sessionCacheDetails\": {\n                            \"limit\": 20480,\n                            \"timeoutSecs\": 1800\n                        },\n                        \"role\": \"server\",\n                        \"cipherSuites\": &#091;\n                            \"TLS_AES_256_GCM_SHA384\",\n                            \"TLS_AES_128_GCM_SHA256\",\n                            \"TLS_CHACHA20_POLY1305_SHA256\"\n                        ],\n                        \"certACL\": &#091;\n                            {\n                                \"name\": \"ANY\",\n                                \"permission\": \"allow\"\n                            }\n                        ],\n                        \"sessionCacheEnabled\": false,\n                        \"protocolVersion\": \"TLS_ALL\"\n                    },\n                    \"outbound\": {\n                        \"authMode\": \"clientOptional_server\",\n                        \"crlEnabled\": false,\n                        \"role\": \"client\",\n                        \"cipherSuites\": \"^.*$\",\n                        \"sessionCacheEnabled\": false\n                    }\n                }\n            },\n            \"workerThreadCount\": 5,\n            \"csrfTokenProtectionEnabled\": true,\n            \"network\": {\n                \"ipACL\": &#091;\n                    {\n                        \"address\": \"ANY\",\n                        \"permission\": \"allow\"\n                    }\n                ],\n                \"serviceListeningPort\": {\n                    \"address\": \"0.0.0.0\",\n                    \"port\": 7809\n                }\n            },\n            \"hstsEnabled\": true,\n            \"authorizationDetails\": {\n                \"movingExpirationWindowSecs\": 900,\n                \"common\": {\n                    \"allow\": &#091;\n                        \"Digest\",\n                        \"x-Cert\",\n                        \"Basic\",\n                        \"Bearer\"\n                    ],\n                    \"customAuthorizationEnabled\": true\n                },\n                \"useMovingExpirationWindow\": false,\n                \"sessionDurationSecs\": 7200,\n                \"sessionInactiveSecs\": 3600\n            },\n            \"security\": true,\n            \"defaultSynchronousWait\": 30,\n            \"authorizationEnabled\": true,\n            \"hstsDetails\": \"max-age=31536000;includeSubDomains\",\n            \"asynchronousOperationEnabled\": true,\n            \"taskManagerEnabled\": true,\n            \"legacyProtocolEnabled\": false\n        },\n        \"enabled\": true,\n        \"id\": \"30316382-c77b-495c-b69e-fd910d525b36\",\n        \"status\": \"restart\"\n    },\n    \"pluginsrvr\": {\n        \"$schema\": \"ogg:service\",\n        \"config\": \"external\",\n        \"critical\": true,\n        \"enabled\": false,\n        \"status\": \"stopped\",\n        \"locked\": false,\n        \"id\": \"eea1497d-8ff2-473f-90b3-84fffa57ebc7\"\n    }\n}<\/code><\/pre>\n\n\n\n<p>Of course, you will have to do the same for all the services of all your deployments. You can repeat the same process (including a restart) for all deployments, or use one of the methods described below.<\/p>\n\n\n\n<p><strong><em>Warning:<\/em><\/strong> The root object will defer depending on the configuration file ! It is called <code>ServiceManager<\/code> for the service manager, and <code>adminsrvr<\/code>, <code>recvsrvr<\/code>, <code>distsrvr<\/code> and <code>pmsrvr<\/code> for the services of a deployment. Adapt the commands accordingly.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-update-with-jq\">Update with <code>jq<\/code><\/h4>\n\n\n\n<p><code>jq<\/code> is a powerful utility to manage JSON objects. I described it in more details in a blog about <a href=\"https:\/\/www.dbi-services.com\/blog\/mongodb-log-analysis-a-comprehensive-guide\/\">Log Analysis in MongoDB<\/a>. To put it simple, you can retrieve a configuration option like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;oracle@vmogg ~] jq '.ServiceManager.config.authorizationDetails.sessionDurationSecs' deploymentConfiguration.dat\n3600<\/code><\/pre>\n\n\n\n<p>And change it with the following commands:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># For the service manager\ncd \/u01\/app\/oracle\/product\/ogg23ai_sm\/etc\/conf\njq '.ServiceManager.config.authorizationDetails.sessionDurationSecs = 7200' deploymentConfiguration.dat &gt; tmp &amp;&amp; mv tmp deploymentConfiguration.dat\n\n# For the services of your deployment\ncd \/u01\/app\/oracle\/product\/ogg_test_01\/etc\/conf\njq '.adminsrvr.config.authorizationDetails.sessionDurationSecs = 7200' deploymentConfiguration.dat &gt; tmp &amp;&amp; mv tmp deploymentConfiguration.dat\njq '.recvsrvr.config.authorizationDetails.sessionDurationSecs = 7200'  deploymentConfiguration.dat &gt; tmp &amp;&amp; mv tmp deploymentConfiguration.dat\njq '.distsrvr.config.authorizationDetails.sessionDurationSecs = 7200' deploymentConfiguration.dat &gt; tmp &amp;&amp; mv tmp deploymentConfiguration.dat\njq '.pmsrvr.config.authorizationDetails.sessionDurationSecs = 7200' deploymentConfiguration.dat &gt; tmp &amp;&amp; mv tmp deploymentConfiguration.dat\n<\/code><\/pre>\n\n\n\n<p>Unfortunately, there is no option to edit files in place with <code>jq<\/code>. Even though it&#8217;s a powerful tool, you will have to go through a temporary file to modify files. To add the absent <code>sessionInactiveSecs<\/code> parameter, just use the exact same command, replacing <code>sessionDurationSecs<\/code>, and <code>jq<\/code> will take care of adding the necessary commas and delivering an uncorrupted file.<\/p>\n\n\n\n<p>Finally, to verify the values across your deployments, use <code>[]<\/code> to go through all services, and <code>?<\/code> to avoid errors for missing keys:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;oracle@vmogg ~] jq '.&#091;].config?.authorizationDetails?.sessionDurationSecs' \/u01\/app\/oracle\/product\/*\/etc\/conf\/deploymentConfiguration.dat\n7200\n7200\n7200\n7200\n7200\n&#091;oracle@vmogg ~] jq '.&#091;].config?.authorizationDetails?.sessionInactiveSecs' \/u01\/app\/oracle\/product\/*\/etc\/conf\/deploymentConfiguration.dat\n3600\n3600\n3600\n3600\n3600<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-update-via-sed\">Update via <code>sed<\/code><\/h4>\n\n\n\n<p>Modifying the JSON file with <code>sed<\/code> is less practical, but probably more familiar. Unfortunately, the tool was not made to modify JSON directly. While you can edit an existing parameter, adding a new one without corrupting your configuration might be harder. Anyway, here is a command that will update <code>sessionDurationSecs<\/code> in all your <code>deploymentConfiguration.dat<\/code> files, keeping the correct indentation and not corrupting your file by keeping commas at the end of the lines when there is one.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/\"sessionDurationSecs\": &#091;0-9]\\+\\(,\\)\\?\/\"sessionDurationSecs\": 7200\\1\/g' \/u01\/app\/oracle\/product\/*\/etc\/conf\/deploymentConfiguration.dat<\/code><\/pre>\n\n\n\n<p><strong>Warning:<\/strong> When applying changes to the configuration file, pay attention to the line endings ! If you don&#8217;t use the provided <code>sed<\/code> command, you might remove commas at the end of some lines, and your configuration file might become invalid !<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-update-with-python\">Update with Python<\/h4>\n\n\n\n<p>If you plan on doing any <strong>serious automation work<\/strong> around your GoldenGate configuration files, you should most certainly <strong>use Python<\/strong>. With the native <code>json<\/code> module, you can easily access and modify not just these two session parameters, but any aspect of the configuration. Here is a little code snippet that will modify a specific configuration file from a service manager:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\nimport os\n\nfile = \"deploymentConfiguration.dat\"\n\nif not os.path.exists(file):\n    print(f\"File not found: {file}\")\n    sys.exit(1)\n\nwith open(file, \"r\") as f:\n    data = json.load(f)\n\n# sessionDurationSecs and sessionInactiveSecs will be changed, or added if they didn't exist before\ndata&#091;\"ServiceManager\"]&#091;\"config\"]&#091;\"authorizationDetails\"]&#091;\"sessionDurationSecs\"] = 7200\ndata&#091;\"ServiceManager\"]&#091;\"config\"]&#091;\"authorizationDetails\"]&#091;\"sessionInactiveSecs\"] = 3600\n\nwith open(file, \"w\") as f:\n    json.dump(data, f, indent=4)<\/code><\/pre>\n\n\n\n<p>Output example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;oracle@vmogg ~]$ grep -E \"sessionDurationSecs|sessionInactiveSecs\" deploymentConfiguration.dat\n                \"sessionDurationSecs\": 3600\n&#091;oracle@vmogg ~]$ python3 ogg_conf_session_setting.py\n&#091;oracle@vmogg ~]$ grep -E \"sessionDurationSecs|sessionInactiveSecs\" deploymentConfiguration.dat\n                \"sessionDurationSecs\": 7200,\n                \"sessionInactiveSecs\": 3600<\/code><\/pre>\n\n\n\n<p>And for a more robust code that will search in all <code>*\/etc\/conf\/deploymentConfiguration.dat files<\/code>, and for all services of GoldenGate, not just the service manager:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\nimport glob\nimport os\n\ndef modify_ogg_configs(path_pattern, duration=7200, inactive=3600):\n    file_list = glob.glob(path_pattern, recursive=True)\n    if not file_list:\n        print(\"No configuration files found.\")\n        return\n    services = &#091;\"ServiceManager\", \"adminsrvr\", \"distsrvr\", \"recvsrvr\", \"pmsrvr\", \"pluginsrvr\"]\n    for file in file_list:\n        print(f\"Modifying GoldenGate configuration file: {file}\")\n        try:\n            with open(file, \"r\") as f:\n                data = json.load(f)\n        except Exception as e:\n            print(f\"  Skipping {file}: failed to parse JSON ({e})\")\n            continue\n        modified = False\n        for service in services:\n            try:\n                cfg = data&#091;service]&#091;\"config\"]\n                if \"authorizationDetails\" in cfg:\n                    cfg&#091;\"authorizationDetails\"]&#091;\"sessionDurationSecs\"] = duration\n                    cfg&#091;\"authorizationDetails\"]&#091;\"sessionInactiveSecs\"] = inactive\n                    print(f\"  Updated {service}\")\n                    modified = True\n            except KeyError:\n                print(f\"  {service} section not found, skipping\")\n        if modified:\n            backup_file = file + \".bak\"\n            os.replace(file, backup_file)\n            with open(file, \"w\") as f:\n                json.dump(data, f, indent=4)\n            print(f\"  Changes saved (backup at {backup_file})\")\n        else:\n            print(\"  No changes made to this file.\")\n\n# Example usage:\nmodify_ogg_configs(\"\/u01\/app\/oracle\/product\/*\/etc\/conf\/deploymentConfiguration.dat\")<\/code><\/pre>\n\n\n\n<p>Output example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;oracle@vmogg ~]$ python3 ogg_conf_session_setting_global.py\nModifying GoldenGate configuration file: \/u01\/app\/oracle\/product\/ogg23ai_sm\/etc\/conf\/deploymentConfiguration.dat\n  Updated ServiceManager\n  adminsrvr section not found, skipping\n  distsrvr section not found, skipping\n  recvsrvr section not found, skipping\n  pmsrvr section not found, skipping\n  Changes saved (backup at \/u01\/app\/oracle\/product\/ogg23ai_sm\/etc\/conf\/deploymentConfiguration.dat.bak)\nModifying GoldenGate configuration file: \/u01\/app\/oracle\/product\/ogg_test_01\/etc\/conf\/deploymentConfiguration.dat\n  ServiceManager section not found, skipping\n  Updated adminsrvr\n  Updated distsrvr\n  Updated recvsrvr\n  Updated pmsrvr\n  pluginsrvr section not found, skipping\n  Changes saved (backup at \/u01\/app\/oracle\/product\/ogg_test_01\/etc\/conf\/deploymentConfiguration.dat.bak)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-using-the-rest-api-online-but-more-complex\">Using the Rest API: online but more complex<\/h2>\n\n\n\n<p>GoldenGate Rest API is not so hard to use when you&#8217;re used to it. I will probably write about this soon, but in the meantime, I will summarize what you need to know. <strong>You cannot directly modify a single parameter through the Rest API.<\/strong> To do so, you first have to retrieve the whole configuration, update it and push it.<\/p>\n\n\n\n<p>You can do this in many ways, but I will just give you a minimal script example with the <code>requests<\/code> module from Python, to achieve what we&#8217;re looking for here:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nimport json\n\n\nclass OGGRestAPI:\n    def __init__(self, host, port=7809, username=None, password=None, protocol='https'):\n        \"\"\"Initialize Oracle GoldenGate REST API client\"\"\"\n        self.base_url = f'{protocol}:\/\/{host}:{port}'\n        self.auth = (username, password)\n        self.headers = {'Accept': 'application\/json', 'Content-Type': 'application\/json'}\n\n    def _get(self, path, params=None):\n        url = f'{self.base_url}{path}'\n        response = requests.get(url, auth=self.auth, headers=self.headers, params=params)\n        self._check_response(response)\n        return self._parse(response)\n\n    def _post(self, path, data=None):\n        url = f'{self.base_url}{path}'\n        response = requests.post(url, auth=self.auth, headers=self.headers, data=json.dumps(data or {}))\n        self._check_response(response)\n        return self._parse(response)\n\n    def _put(self, path, data=None):\n        url = f'{self.base_url}{path}'\n        response = requests.put(url, auth=self.auth, headers=self.headers, data=json.dumps(data or {}))\n        self._check_response(response)\n        return self._parse(response)\n\n    def _patch(self, path, data=None):\n        url = f'{self.base_url}{path}'\n        response = requests.patch(url, auth=self.auth, headers=self.headers, data=json.dumps(data or {}))\n        self._check_response(response)\n        return self._parse(response)\n\n    def _delete(self, path):\n        url = f'{self.base_url}{path}'\n        response = requests.delete(url, auth=self.auth, headers=self.headers)\n        self._check_response(response)\n        return self._parse(response)\n\n    def _check_response(self, response):\n        if not response.ok:\n            print(f'HTTP {response.status_code}: {response.text}')\n            response.raise_for_status()\n\n    def _parse(self, response):\n        try:\n            return response.json()\n        except ValueError:\n            return response.text\n\n    def _extract_main(self, result):\n        if isinstance(result, dict):\n            resp = result.get('response', result)\n            if isinstance(resp, dict) and '$schema' in resp and 'items' in resp:\n                resp_items = resp&#091;'items']\n                exclude = &#091;'links', '$schema']\n                resp = &#091;{k: v for k, v in d.items() if k not in exclude} for d in resp_items]\n                return resp\n            return resp\n        return result\n\n    def list_deployments(self, version='v2'):\n        \"\"\"\n        GET \/services\/{version}\/deployments\n        Required Role: User\n        Retrieve the collection of Oracle GoldenGate Deployments.\n\n        Parameters:\n            version (string): Oracle GoldenGate Service API version. Example: v2\n\n        Example:\n            client.list_deployments()\n\n        \"\"\"\n        path = f\"\/services\/{version}\/deployments\"\n        result = self._get(path)\n        return self._extract_main(result)\n\n    def list_services(self, deployment, version='v2'):\n        \"\"\"\n        GET \/services\/{version}\/deployments\/{deployment}\/services\n        Required Role: User\n        Retrieve the collection of Oracle GoldenGate Services in a deployment.\n\n        Parameters:\n            deployment (string): Name for the Oracle GoldenGate deployment. Example: deployment_example\n            version (string): Oracle GoldenGate Service API version. Example: v2\n\n        Example:\n            client.list_services(\n                deployment='deployment_example'\n            )\n        \"\"\"\n        path = f\"\/services\/{version}\/deployments\/{deployment}\/services\"\n        result = self._get(path)\n        return self._extract_main(result)\n\n    def retrieve_service(self, service, deployment, version='v2'):\n        \"\"\"\n        GET \/services\/{version}\/deployments\/{deployment}\/services\/{service}\n        Required Role: User\n        Retrieve the details of a service in an Oracle GoldenGate deployment.\n\n        Parameters:\n            service (string): Name of the service. Example: service_example\n            deployment (string): Name for the Oracle GoldenGate deployment. Example: deployment_example\n            version (string): Oracle GoldenGate Service API version. Example: v2\n\n        Example:\n            client.retrieve_service(\n                service='service_example',\n                deployment='deployment_example'\n            )\n        \"\"\"\n        path = f\"\/services\/{version}\/deployments\/{deployment}\/services\/{service}\"\n        result = self._get(path)\n        return self._extract_main(result)\n\n    def update_service_properties(self, service, deployment, data=None, version='v2'):\n        \"\"\"\n        PATCH \/services\/{version}\/deployments\/{deployment}\/services\/{service}\n        Required Role: Administrator\n        Update the properties of a service.\n\n        Parameters:\n            service (string): Name of the service. Example: service_example\n            deployment (string): Name for the Oracle GoldenGate deployment. Example: deployment_example\n            version (string): Oracle GoldenGate Service API version. Example: v2\n            body (object):  Example: body_example\n\n        Example:\n            client.update_service_properties(\n                service='service_example',\n                deployment='deployment_example',\n                data={\n                    \"enabled\": true,\n                    \"status\": \"running\"\n                })\n        \"\"\"\n        path = f\"\/services\/{version}\/deployments\/{deployment}\/services\/{service}\"\n        result = self._patch(path, data=data)\n        return self._extract_main(result)\n\n\nif __name__ == \"__main__\":\n    client = OGGRestAPI(\n        host=\"10.0.0.1\",\n        port=7809,\n        username=\"ogg\",\n        password=\"password_ogg\",\n        protocol=\"http\")\n\n    deployments = &#091;d&#091;\"name\"] for d in client.list_deployments()]\n    for deployment in deployments:\n        services = &#091;s&#091;\"name\"] for s in client.list_services(deployment)]\n        for service in services:\n            print(f'\\n\\ndeployment: {deployment}, service: {service}')\n            modified = False\n            data = client.retrieve_service(service, deployment)\n\n            try:\n                if \"authorizationDetails\" in data&#091;\"config\"]:\n                    data&#091;\"config\"]&#091;\"authorizationDetails\"]&#091;\"sessionDurationSecs\"] = 7200\n                    data&#091;\"config\"]&#091;\"authorizationDetails\"]&#091;\"sessionInactiveSecs\"] = 3600\n                    print(f\"  Updated {service}\")\n                    modified = True\n                else:\n                    print(f\"  'authorizationDetails' not found in {service} section, skipping\")\n            except KeyError:\n                print(f\"  'config' not found in {service} section, skipping\")\n\n            if modified:\n                patch_data = {\n                    \"config\": data&#091;'config']\n                }\n                print(\"Updating service properties...\")\n                client.update_service_properties(service, deployment, patch_data)\n                print(\"Service properties updated.\")\n                data = client.retrieve_service(service, deployment)\n                print(f\"  sessionDurationSecs: {data&#091;'config']&#091;'authorizationDetails']&#091;'sessionDurationSecs']}\")\n                print(f\"  sessionInactiveSecs: {data&#091;'config']&#091;'authorizationDetails']&#091;'sessionInactiveSecs']}\")<\/code><\/pre>\n\n\n\n<p>And the output from the script:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;oracle@vmogg ~]$ python3 minimal_example_update_service_properties.py\n\ndeployment: ServiceManager, service: ServiceManager\n  Updated ServiceManager\nUpdating service properties...\nService properties updated.\n  sessionDurationSecs: 7200\n  sessionInactiveSecs: 3600\n\n\ndeployment: ServiceManager, service: pluginsrvr\n  'authorizationDetails' not found in pluginsrvr section, skipping\n\n\ndeployment: ogg_test_01, service: adminsrvr\n  Updated adminsrvr\nUpdating service properties...\nService properties updated.\n  sessionDurationSecs: 7200\n  sessionInactiveSecs: 3600\n\n\ndeployment: ogg_test_01, service: distsrvr\n  Updated distsrvr\nUpdating service properties...\nService properties updated.\n  sessionDurationSecs: 7200\n  sessionInactiveSecs: 3600\n\n\ndeployment: ogg_test_01, service: pmsrvr\n  Updated pmsrvr\nUpdating service properties...\nService properties updated.\n  sessionDurationSecs: 7200\n  sessionInactiveSecs: 3600\n\n\ndeployment: ogg_test_01, service: recvsrvr\n  Updated recvsrvr\nUpdating service properties...\nService properties updated.\n  sessionDurationSecs: 7200\n  sessionInactiveSecs: 3600<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-can-i-just-paste-the-authorization-fields-and-not-the-whole-configuration-file-in-the-patch-request\">Can I just paste the authorization fields and not the whole configuration file in the patch request ?<\/h2>\n\n\n\n<p>Unfortunately, with the method described above, <strong>you cannot<\/strong>. If you do so, the request will not fail, but you will erase all fields that were in the field but not in the configuration of your patch requests. This is why I would rather <strong>get the configuration first, and then update it<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-do-i-have-to-update-the-configuration-file-after-modifying-the-configuration-with-the-rest-api\">Do I have to update the configuration file after modifying the configuration with the Rest API ?<\/h2>\n\n\n\n<p>When modifying the configuration with the Rest API, changes are dynamic, but the configuration file is also updated, so there is nothing else to change in the configuration file.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-will-the-parameters-affect-connections-opened-through-the-adminclient\">Will the parameters affect connections opened through the <code>adminclient<\/code> ?<\/h2>\n\n\n\n<p><strong>Yes<\/strong>, connections opened through the <code>adminclient<\/code> <strong>will be impacted<\/strong> when changing the value of <code>sessionDurationSecs<\/code>. These connections will not be asked for credentials again, but you will receive the following error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Connected to the deployment for less than sessionDurationSecs\nOGG (http:\/\/vmogg:7809 ServiceManager) 2&gt; status service * deployment *\nDeployment Name                   Service Name     Service Status\n\nServiceManager                    SERVICEMANAGER   RUNNING\nServiceManager                    PLUGINSRVR       STOPPED\nogg_test_01                       ADMINSRVR        RUNNING\nogg_test_01                       DISTSRVR         RUNNING\nogg_test_01                       PMSRVR           RUNNING\nogg_test_01                       RECVSRVR         RUNNING\n\n# After at least sessionDurationSecs seconds of inactivity\nOGG (http:\/\/vmogg:7809 ServiceManager) 3&gt; status service * deployment *\n\nError: Authorization failure for user 'ogg'.\n\n# Whenever you enter the command again, you will be connected without having to re-enter credentials\nOGG (http:\/\/vmogg:7809 ServiceManager) 4&gt; status service * deployment *\nDeployment Name                   Service Name     Service Status\n\nServiceManager                    SERVICEMANAGER   RUNNING\nServiceManager                    PLUGINSRVR       STOPPED\nogg_test_01                       ADMINSRVR        RUNNING\nogg_test_01                       DISTSRVR         RUNNING\nogg_test_01                       PMSRVR           RUNNING\nogg_test_01                       RECVSRVR         RUNNING<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-after-modifying-the-configuration-files-manually-and-restarting-goldengate-my-sessions-are-not-affected-by-the-changes\">After modifying the configuration files manually and restarting GoldenGate, my sessions are not affected by the changes<\/h2>\n\n\n\n<p>If you try the non-dynamic methods described earlier on your deployments, make sure to log out from the UI and log in again. Even after restarting the service manager and services, old sessions could still be connected and benefit from the old <code>sessionDurationSecs<\/code> and <code>sessionInactiveSecs<\/code> value.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you start using the GoldenGate web UI after installing it, you might end up thinking that extending the session timeout would be nice. Since there is no clear Oracle documentation on that matter, here are multiple ways of doing it. Modifying the configuration files: quick but with downtime The first way of doing it [&hellip;]<\/p>\n","protected":false},"author":152,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3787,59],"tags":[708,328,96,1089,3767,3766,735],"type_dbi":[3740,2728,3768,3769],"class_list":["post-41459","post","type-post","status-publish","format-standard","hentry","category-goldengate","category-oracle","tag-automation","tag-goldengate","tag-oracle","tag-python","tag-restapi","tag-session","tag-timeout","type-goldengate","type-oracle","type-python","type-restapi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Extend Session Timeout in GoldenGate Microservices Web UI - dbi Blog<\/title>\n<meta name=\"description\" content=\"In this blog, I provide multiple ways of increasing session timeout in GoldenGate, modifying the configuration or using Python and the RestAPI\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extend Session Timeout in GoldenGate Microservices Web UI\" \/>\n<meta property=\"og:description\" content=\"In this blog, I provide multiple ways of increasing session timeout in GoldenGate, modifying the configuration or using Python and the RestAPI\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-08T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-23T18:56:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1186\" \/>\n\t<meta property=\"og:image:height\" content=\"378\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Julien Delattre\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julien Delattre\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/\"},\"author\":{\"name\":\"Julien Delattre\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e\"},\"headline\":\"Extend Session Timeout in GoldenGate Microservices Web UI\",\"datePublished\":\"2025-12-08T07:00:00+00:00\",\"dateModified\":\"2025-12-23T18:56:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/\"},\"wordCount\":1092,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-1024x326.png\",\"keywords\":[\"Automation\",\"GoldenGate\",\"Oracle\",\"Python\",\"restapi\",\"session\",\"timeout\"],\"articleSection\":[\"GoldenGate\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#respond\"]}],\"accessibilityFeature\":[\"tableOfContents\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/\",\"name\":\"Extend Session Timeout in GoldenGate Microservices Web UI - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-1024x326.png\",\"datePublished\":\"2025-12-08T07:00:00+00:00\",\"dateModified\":\"2025-12-23T18:56:04+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e\"},\"description\":\"In this blog, I provide multiple ways of increasing session timeout in GoldenGate, modifying the configuration or using Python and the RestAPI\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout.png\",\"width\":1186,\"height\":378},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extend Session Timeout in GoldenGate Microservices Web UI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e\",\"name\":\"Julien Delattre\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"caption\":\"Julien Delattre\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/juliendelattre\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Extend Session Timeout in GoldenGate Microservices Web UI - dbi Blog","description":"In this blog, I provide multiple ways of increasing session timeout in GoldenGate, modifying the configuration or using Python and the RestAPI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/","og_locale":"en_US","og_type":"article","og_title":"Extend Session Timeout in GoldenGate Microservices Web UI","og_description":"In this blog, I provide multiple ways of increasing session timeout in GoldenGate, modifying the configuration or using Python and the RestAPI","og_url":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/","og_site_name":"dbi Blog","article_published_time":"2025-12-08T07:00:00+00:00","article_modified_time":"2025-12-23T18:56:04+00:00","og_image":[{"width":1186,"height":378,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout.png","type":"image\/png"}],"author":"Julien Delattre","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Julien Delattre","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/"},"author":{"name":"Julien Delattre","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e"},"headline":"Extend Session Timeout in GoldenGate Microservices Web UI","datePublished":"2025-12-08T07:00:00+00:00","dateModified":"2025-12-23T18:56:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/"},"wordCount":1092,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-1024x326.png","keywords":["Automation","GoldenGate","Oracle","Python","restapi","session","timeout"],"articleSection":["GoldenGate","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#respond"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/","url":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/","name":"Extend Session Timeout in GoldenGate Microservices Web UI - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout-1024x326.png","datePublished":"2025-12-08T07:00:00+00:00","dateModified":"2025-12-23T18:56:04+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e"},"description":"In this blog, I provide multiple ways of increasing session timeout in GoldenGate, modifying the configuration or using Python and the RestAPI","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/ogg_ui_session_timeout.png","width":1186,"height":378},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/extend-session-timeout-in-oracle-goldengate-microservices-web-ui\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Extend Session Timeout in GoldenGate Microservices Web UI"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e","name":"Julien Delattre","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","caption":"Julien Delattre"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/juliendelattre\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/41459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/152"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=41459"}],"version-history":[{"count":27,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/41459\/revisions"}],"predecessor-version":[{"id":42255,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/41459\/revisions\/42255"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=41459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=41459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=41459"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=41459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}