{"id":42419,"date":"2026-01-12T15:36:59","date_gmt":"2026-01-12T14:36:59","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=42419"},"modified":"2026-01-12T15:37:01","modified_gmt":"2026-01-12T14:37:01","slug":"migrate-your-database-to-26ai-on-oda","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/","title":{"rendered":"Migrate your database to 26ai on ODA"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"h-introduction\">Introduction<\/h2>\n\n\n\n<p>Oracle 26ai is not yet available on Bare Metal ODA, but it will probably be in a few weeks. For now, 26ai is available as a DB System on Oracle Database Appliance, meaning that it&#8217;s already possible to test this new version. Let&#8217;s try to migrate a 19c Bare Metal PDB to a 26ai DB System using 3 different methods.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-prerequisites\">Prerequisites<\/h2>\n\n\n\n<p>26ai is only available with the minimum release 19.29, meaning on ODA X8-2 and newer models. You will need to patch your ODA to 19.29 first if you want to test 26ai. 26ai is only compatible with multitenant architecture, so another prerequisite is to migrate your non-container databases to PDBs. If you&#8217;re still using non-CDB architecture, and among these 3 methods, only the first one will work for you.<\/p>\n\n\n\n<p>The recommended patching method as told by Oracle is using AutoUpgrade: <a href=\"https:\/\/www.dbi-services.com\/blog\/oracle-autoupgrade-easy-way-to-upgrade-your-oracle-database-part-i\/\">please refer to this blog post if you want more details<\/a>.<\/p>\n\n\n\n<p>On my side, I will explore these 3 other possibilities:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Datapump Export\/Import<\/li>\n\n\n\n<li>PDB copy through a DB link<\/li>\n\n\n\n<li>PDB unplug\/plug<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-download-the-needed-files-for-26ai-db-system\">Download the needed files for 26ai DB System<\/h2>\n\n\n\n<p>These files are needed for creating a 26ai DB System:<\/p>\n\n\n\n<p>36524660 =&gt; System image for 26ai DB Systems<br>36524627 =&gt; the GI clone needed for deploying newer 26ai GI version<br>36524642 =&gt; the DB clone for deploying new version 26ai<\/p>\n\n\n\n<p>Be sure to choose the very latest 19.29 patch when downloading these files, download link from MOS will first propose older versions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-my-19c-source-database\">My 19c source database<\/h2>\n\n\n\n<p>My source database is a 19c container database with one PDB running on an ODA X8-2M. I want to migrate this PDB to 26ai:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n . oraenv &lt;&lt;&lt; CPROD19\nORACLE_SID = &#091;CPROD19] ? The Oracle base remains unchanged with value \/u01\/app\/odaorabase\/oracle\nsqlplus \/ as sysdba\n\nSQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 8 09:53:43 2026\nVersion 19.29.0.0.0\n\nCopyright (c) 1982, 2025, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\nVersion 19.29.0.0.0\n\nshow pdbs\n\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n         2 PDB$SEED                       READ ONLY  NO\n         3 PRODDB01                       READ WRITE NO\n\nexit\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-provision-a-new-26ai-db-system\">Provision a new 26ai DB System<\/h2>\n\n\n\n<p>It&#8217;s not yet possible to deploy a 26ai container database on Bare Metal, so let&#8217;s create a DB System for testing this migration. First unzip and register the VM template, GI 26ai and DB 26ai:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/dbi\n\nunzip -o p36524660_1929000_Linux-x86-64.zip\nunzip -o p36524627_1929000_Linux-x86-64.zip\nunzip -o p36524642_1929000_Linux-x86-64.zip\n\nodacli update-repository -f \/opt\/dbi\/odacli-dcs-23.26.0.0.0-251116-ODAVM-19.29.0.0.zip\nodacli update-repository -f \/opt\/dbi\/odacli-dcs-23.26.0.0.0-251116-GI-23.26.0.0.zip\nodacli update-repository -f \/opt\/dbi\/odacli-dcs-23.26.0.0.0-251116-DB-23.26.0.0.zip\n\nsleep 30 ; odacli list-jobs | tail -n 4\nd4700315-db8c-4522-af55-0fddd262bfe4     Repository Update                                                           2025-12-08 15:20:14 CET             Success\nba7d452f-e03d-46d0-a607-fd7c758cd1b1     Repository Update                                                           2025-12-08 15:20:59 CET             Success\nbfc102d1-985b-4792-8054-03709aa8d949     Repository Update                                                           2025-12-08 15:21:20 CET             Success\n\nodacli describe-dbsystem-image | grep 23.26\nDBVM                  23.26.0.0.0           23.26.0.0.0\nGI                    23.26.0.0.0           23.26.0.0.0\nDB                    23.26.0.0.0           23.26.0.0.0<\/code><\/pre>\n\n\n\n<p>A CPU pool is needed for DB Systems, if you don&#8217;t have one. A 2-core CPU pool is enough:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>odacli create-cpupool -c 2 -n cpupool2c -dbs\n<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s create a json file, then create a new DB System based on this file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/opt\/dbi\/create_dbs-04-tst-cdb.json\n{\n    \"system\": {\n        \"name\": \"dbs-04-tst\",\n        \"shape\": \"dbs2\",\n        \"systemPassword\": \"***********\",\n        \"timeZone\": \"Europe\/Zurich\",\n        \"diskGroup\": \"DATA\",\n        \"cpuPoolName\": \"cpupool2c\",\n        \"enableRoleSeparation\": true,\n        \"customRoleSeparation\": {\n            \"groups\": &#091;\n                {\n                    \"name\": \"oinstall\",\n                    \"id\": 1001,\n                    \"role\": \"oinstall\"\n                },\n                {\n                    \"name\": \"dbaoper\",\n                    \"id\": 1002,\n                    \"role\": \"dbaoper\"\n                },\n                {\n                    \"name\": \"dba\",\n                    \"id\": 1003,\n                    \"role\": \"dba\"\n                },\n                {\n                    \"name\": \"asmadmin\",\n                    \"id\": 1004,\n                    \"role\": \"asmadmin\"\n                },\n                {\n                    \"name\": \"asmoper\",\n                    \"id\": 1005,\n                    \"role\": \"asmoper\"\n                },\n                {\n                    \"name\": \"asmdba\",\n                    \"id\": 1006,\n                    \"role\": \"asmdba\"\n                }\n            ],\n            \"users\": &#091;\n                {\n                    \"name\": \"grid\",\n                    \"id\": 1001,\n                    \"role\": \"gridUser\"\n                },\n                {\n                    \"name\": \"oracle\",\n                    \"id\": 1000,\n                    \"role\": \"oracleUser\"\n                }\n            ]\n        }\n    },\n    \"database\": {\n        \"name\": \"CTEST26\",\n        \"uniqueName\": \"CTEST26_S1\",\n        \"domainName\": \"dbi-lab.ch\",\n        \"adminPassword\": \"**********\",\n        \"version\": \"23.26.0.0.0\",\n        \"edition\": \"EE\",\n        \"type\": \"SI\",\n        \"dbClass\": \"OLTP\",\n        \"shape\": \"odb2\",\n        \"role\": \"PRIMARY\",\n        \"enableDbConsole\": false,\n        \"enableFlashStorage\": false,\n        \"redundancy\": null,\n        \"characterSet\": {\n            \"characterSet\": \"AL32UTF8\",\n            \"nlsCharacterset\": \"AL16UTF16\",\n            \"dbTerritory\": \"AMERICA\",\n            \"dbLanguage\": \"AMERICAN\"\n        },\n        \"rmanBackupPassword\": null,\n        \"enableTDE\": false,\n        \"isCdb\": true,\n        \"pdbName\": \"pdb1\",\n        \"pdbAdminUser\": \"pdbadmin\",\n        \"tdePassword\": null\n    },\n    \"network\": {\n        \"domainName\": \"dbi-lab.ch\",\n        \"ntpServers\": &#091;\n            \"85.195.224.28\"\n        ],\n        \"dnsServers\": &#091;\n            \"10.16.0.250\"\n        ],\n        \"nodes\": &#091;\n            {\n                \"name\": \"dbs-04-tst\",\n                \"ipAddress\": \"10.16.0.247\",\n                \"netmask\": \"255.255.255.0\",\n                \"gateway\": \"10.16.0.1\",\n                \"number\": 0\n            }\n        ],\n        \"publicVNetwork\": \"pubnet\"\n    },\n    \"grid\": {\n        \"language\": \"en\"\n    }\n}\n\nodacli create-dbsystem -p \/opt\/dbi\/create_dbs-04-tst-cdb.json\nEnter password for system \"dbs-04-tst\":\nRetype password for system \"dbs-04-tst\":\nEnter administrator password for DB \"CTEST26\":\nRetype administrator password for DB \"CTEST26\":\n...<\/code><\/pre>\n\n\n\n<p>35 minutes later, my new DB System is ready to use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>odacli describe-job -i c79ecbbf-dd0c-4b75-ba10-249c78b25f33\n\nJob details\n----------------------------------------------------------------\n                     ID:  c79ecbbf-dd0c-4b75-ba10-249c78b25f33\n            Description:  DB System dbs-04-tst creation\n                 Status:  Success\n                Created:  January 08, 2026 10:23:39 CET\n                Message:\n\nTask Name                                Start Time                               End Time                                 Status\n---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------\nCreate DB System metadata                January 08, 2026 10:23:39 CET            January 08, 2026 10:23:41 CET            Success\nPersist new DB System                    January 08, 2026 10:23:41 CET            January 08, 2026 10:23:41 CET            Success\nRemove unused network interfaces         January 08, 2026 10:23:41 CET            January 08, 2026 10:23:41 CET            Success\nValidate DB System creation              January 08, 2026 10:23:41 CET            January 08, 2026 10:23:46 CET            Success\nCreate the infra quota group             January 08, 2026 10:23:46 CET            January 08, 2026 10:23:50 CET            Success\nSetup DB System environment              January 08, 2026 10:23:46 CET            January 08, 2026 10:23:46 CET            Success\nCreate DB System ASM volume              January 08, 2026 10:23:50 CET            January 08, 2026 10:24:01 CET            Success\nCreate DB System ACFS filesystem         January 08, 2026 10:24:01 CET            January 08, 2026 10:24:13 CET            Success\nCreate DB System ACFS mount point        January 08, 2026 10:24:01 CET            January 08, 2026 10:24:01 CET            Success\nCreate DB System VM ACFS snapshots\t January 08, 2026 10:24:13 CET            January 08, 2026 10:24:28 CET            Success\nSetup ASM client cluster config          January 08, 2026 10:24:28 CET            January 08, 2026 10:24:30 CET            Success\nCreate temporary SSH key pair            January 08, 2026 10:24:30 CET            January 08, 2026 10:24:31 CET            Success\nCreate BM certificates in ACFS location  January 08, 2026 10:24:31 CET            January 08, 2026 10:24:32 CET            Success\nCreate DB System cloud-init config\t January 08, 2026 10:24:32 CET            January 08, 2026 10:24:32 CET            Success\nProvision DB System VM(s)                January 08, 2026 10:24:32 CET            January 08, 2026 10:24:35 CET            Success\nCreate u01 vDisk for DB System           January 08, 2026 10:24:35 CET            January 08, 2026 10:24:36 CET            Success\nAdd DB System to Clusterware             January 08, 2026 10:24:36 CET            January 08, 2026 10:24:37 CET            Success\nAttach disks to DB System                January 08, 2026 10:24:36 CET            January 08, 2026 10:24:36 CET            Success\nAttach u01 vDisk to DB System            January 08, 2026 10:24:36 CET            January 08, 2026 10:24:36 CET            Success\nAdd extra PCI slots                      January 08, 2026 10:24:37 CET            January 08, 2026 10:24:37 CET            Success\nCreate Network Filters                   January 08, 2026 10:24:37 CET            January 08, 2026 10:24:37 CET            Success\nExport clones repository                 January 08, 2026 10:24:37 CET            January 08, 2026 10:24:37 CET            Success\nStart DB System                          January 08, 2026 10:24:37 CET            January 08, 2026 10:24:40 CET            Success\nWait DB System VM first boot             January 08, 2026 10:24:40 CET            January 08, 2026 10:26:49 CET            Success\nSetup Mutual TLS (mTLS)                  January 08, 2026 10:26:49 CET            January 08, 2026 10:26:51 CET            Success\nCleanup temporary SSH key pair           January 08, 2026 10:26:51 CET            January 08, 2026 10:26:52 CET            Success\nCopy ASM client cluster config           January 08, 2026 10:26:51 CET            January 08, 2026 10:26:51 CET            Success\nDelete Mutual TLS (mTLS) Artifacts\t January 08, 2026 10:26:51 CET            January 08, 2026 10:26:51 CET            Success\nWait DB System VM DCS Agent readiness    January 08, 2026 10:26:52 CET            January 08, 2026 10:27:12 CET            Success\nAdd Network Filters                      January 08, 2026 10:27:12 CET            January 08, 2026 10:27:14 CET            Success\nInstall DB System                        January 08, 2026 10:27:14 CET            January 08, 2026 10:53:57 CET            Success\nWait DB System VM DCS Agent readiness    January 08, 2026 10:53:57 CET            January 08, 2026 10:55:58 CET            Success\nSet DB System as configured              January 08, 2026 10:55:58 CET            January 08, 2026 10:55:58 CET            Success\n\nodacli list-dbsystems\n\nName                  Shape       GI version          DB info                         Status                  Created                   Updated\n--------------------  ----------  ------------------  ------------------------------  ----------------------  ------------------------  ------------------------\ndbs-04-tst            dbs2        23.26.0.0.0         23.26(CONFIGURED=1)             CONFIGURED              2026-01-08 10:23:39 CET   2026-01-08 10:55:58 CET\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-migration-using-datapump\">Migration using datapump<\/h2>\n\n\n\n<p>Let&#8217;s consider a classic migration using datapump. This tool has been the official one for migration for nearly 2 decades now.<\/p>\n\n\n\n<p>Let&#8217;s first create a new PDB inside the container database of the new DB System:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@dbs-04-tst\nsu - oracle\n. oraenv &lt;&lt;&lt; CTEST26\nsqlplus \/ as sysdba\nshow pdbs\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 3 PDB1 \t\t\t  READ WRITE NO\n\nalter pluggable database PDB1 close immediate;\nPluggable database altered.\n\ndrop pluggable database PDB1 including datafiles;\nPluggable database dropped.\n\ncreate pluggable database MIG26DTPUMP admin user pdbadmin identified by \"*********\";\nPluggable database created.\n\nalter pluggable database MIG26DTPUMP open;\nPluggable database altered.\n\nalter pluggable database MIG26DTPUMP save state;\nPluggable database altered.\n\nshow pdbs\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 4 MIG26DTPUMP\t\t\t  READ WRITE NO\n\nalter session set container=MIG26DTPUMP;\n\ncreate tablespace users datafile size 100M autoextend on maxsize 10G;\nTablespace created.\n\nexit\n<\/code><\/pre>\n\n\n\n<p>On source database, non-CDB or PDB it doesn&#8217;t matter, export data using datapump:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n. oraenv &lt;&lt;&lt; CPROD19\nexport ORACLE_PDB_SID=PRODDB01\nsqlplus \/ as sysdba\ncreate or replace directory mig as '\/backup\/dumps\/';\ncol current_scn for 999999999999\nselect current_scn from v$database;\n    CURRENT_SCN\n---------------\n        6292616\nexit\nexpdp system directory=MIG full=y dumpfile=PRODDB01_20260112.dmp logfile=exp_PRODDB01_20260112.log flashback_scn=6292616\n\nExport: Release 19.0.0.0.0 - Production on Mon Jan 12 10:36:52 2026\nVersion 19.29.0.0.0\n\nCopyright (c) 1982, 2019, Oracle and\/or its affiliates.  All rights reserved.\nPassword:\n\nConnected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\nStarting \"SYSTEM\".\"SYS_EXPORT_FULL_01\":  system\/******** directory=MIG full=y dumpfile=PRODDB01_20260112.dmp logfile=exp_PRODDB01_20260112.log flashback_scn=6292616\nProcessing object type DATABASE_EXPORT\/EARLY_OPTIONS\/VIEWS_AS_TABLES\/TABLE_DATA\nProcessing object type DATABASE_EXPORT\/NORMAL_OPTIONS\/TABLE_DATA\nProcessing object type DATABASE_EXPORT\/NORMAL_OPTIONS\/VIEWS_AS_TABLES\/TABLE_DATA\nProcessing object type DATABASE_EXPORT\/SCHEMA\/TABLE\/TABLE_DATA\nProcessing object type DATABASE_EXPORT\/SCHEMA\/TABLE\/INDEX\/STATISTICS\/INDEX_STATISTICS\nProcessing object type DATABASE_EXPORT\/SCHEMA\/TABLE\/STATISTICS\/TABLE_STATISTICS\nProcessing object type DATABASE_EXPORT\/STATISTICS\/MARKER\nProcessing object type DATABASE_EXPORT\/PRE_SYSTEM_IMPCALLOUT\/MARKER\nProcessing object type DATABASE_EXPORT\/PRE_INSTANCE_IMPCALLOUT\/MARKER\nProcessing object type DATABASE_EXPORT\/TABLESPACE\n...\n\n. . exported \"WMSYS\".\"WM$METADATA_MAP\"                   11.16 KB       0 rows\n. . exported \"MDSYS\".\"RDF_PARAM$\"                        6.515 KB       3 rows\n. . exported \"SYS\".\"AUDTAB$TBS$FOR_EXPORT\"               5.960 KB       2 rows\n. . exported \"SYS\".\"DBA_SENSITIVE_DATA\"                  8.070 KB       0 rows\n. . exported \"SYS\".\"DBA_TSDP_POLICY_PROTECTION\"          7.656 KB       0 rows\n. . exported \"SYS\".\"NACL$_ACE_EXP\"                       9.812 KB       0 rows\n. . exported \"SYS\".\"NACL$_HOST_EXP\"                      6.921 KB       1 rows\n. . exported \"SYS\".\"NACL$_WALLET_EXP\"                    5.929 KB       0 rows\n. . exported \"DBI\".\"CONSULTANTS\"                         5.937 KB       1 rows\nMaster table \"SYSTEM\".\"SYS_EXPORT_FULL_01\" successfully loaded\/unloaded\n******************************************************************************\nDump file set for SYSTEM.SYS_EXPORT_FULL_01 is:\n  \/backup\/dumps\/PRODDB01_20260112.dmp\nJob \"SYSTEM\".\"SYS_EXPORT_FULL_01\" successfully completed at Mon Jan 12 10:38:52 2026 elapsed 0 00:01:54\n\n\nls -lrth \/backup\/dumps\/*20260112*\n-rw-r-----. 1 oracle asmadmin  34M Jan 12 10:38 \/backup\/dumps\/PRODDB01_20260112.dmp\n-rw-r--r--. 1 oracle asmadmin 9.8K Jan 12 10:38 \/backup\/dumps\/exp_PRODDB01_20260112.log<\/code><\/pre>\n\n\n\n<p>On target database, let&#8217;s do the import:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@dbs-04-tst\nsu - oracle\n. oraenv &lt;&lt;&lt; CTEST26\nexport ORACLE_PDB_SID=MIG26DTPUMP\nsqlplus \/ as sysdba\ncreate or replace directory mig as '\/backup\/dumps\/';\nexit\n\nvi \/backup\/dumps\/imp_PRODDB01.par\ndirectory=MIG\nschemas=dbi\ndumpfile=PRODDB01_20260112.dmp\nlogfile=imp_PRODDB01_to_MIG26DTPUMP_20260112.log\nexclude=statistics\n\nimpdp system parfile=\/backup\/dumps\/imp_PRODDB01.par\nImport: Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems on Mon Jan 12 10:51:39 2026\nVersion 23.26.0.0.0\n\nCopyright (c) 1982, 2025, Oracle and\/or its affiliates.  All rights reserved.\nPassword:\n\nConnected to: Oracle AI Database 26ai Enterprise Edition Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems\nMaster table \"SYSTEM\".\"SYS_IMPORT_SCHEMA_01\" successfully loaded\/unloaded\nimport done in AL32UTF8 character set and AL16UTF16 NCHAR character set\nexport done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set\nWarning: possible data loss in character set conversions\nStarting \"SYSTEM\".\"SYS_IMPORT_SCHEMA_01\":  system\/******** parfile=\/backup\/dumps\/imp_PRODDB01.par\nProcessing object type DATABASE_EXPORT\/SCHEMA\/USER\nProcessing object type DATABASE_EXPORT\/SCHEMA\/GRANT\/SYSTEM_GRANT\nProcessing object type DATABASE_EXPORT\/SCHEMA\/ROLE_GRANT\nProcessing object type DATABASE_EXPORT\/SCHEMA\/DEFAULT_ROLE\nProcessing object type DATABASE_EXPORT\/SCHEMA\/PROCACT_SCHEMA\/LOGREP\nProcessing object type DATABASE_EXPORT\/SCHEMA\/TABLE\/TABLE\nProcessing object type DATABASE_EXPORT\/SCHEMA\/TABLE\/TABLE_DATA\n. . imported \"DBI\".\"CONSULTANTS\"                           5.9 KB       1 rows\nJob \"SYSTEM\".\"SYS_IMPORT_SCHEMA_01\" successfully completed at Mon Jan 12 10:51:54 2026 elapsed 0 00:00:08<\/code><\/pre>\n\n\n\n<p>Let&#8217;s now compute statistics for my schema:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\nexec dbms_stats.gather_schema_stats(ownname =&gt; 'DBI');\nPL\/SQL procedure successfully completed.\nexit;<\/code><\/pre>\n\n\n\n<p>Let&#8217;s do a quick check on data:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\nselect start_date from dbi.consultants where name like 'DUB%';\n\nSTART_DAT\n---------\n04-SEP-17\n\nexit\n<\/code><\/pre>\n\n\n\n<p>That&#8217;s fine.<\/p>\n\n\n\n<p><strong>Pros &amp; cons<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>+ Same procedure as previous migrations<\/li>\n\n\n\n<li>+ Reorganize data and indexes<\/li>\n\n\n\n<li>+ Keep the source database untouched<\/li>\n\n\n\n<li>&#8211; Rather slow when database is big<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-migration-using-pdb-copy-through-db-link\">Migration using PDB copy through DB link<\/h2>\n\n\n\n<p>If the source database is a PDB, it can be copied through a DB link, this is a very convenient way of migrating a database.<\/p>\n\n\n\n<p>First, it&#8217;s weird but the PDB administrator of the source DB must have the CREATE PLUGGABLE DATABASE privilege:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n. oraenv &lt;&lt;&lt; CPROD19\nsqlplus \/ as sysdba\nalter session set container=PRODDB01;\ngrant create pluggable database to pdbadmin;\nexit<\/code><\/pre>\n\n\n\n<p>On the DB System, let&#8217;s create a new TNS entry for the 19c PDB:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh dbs-04-tst\nsu - oracle\n. oraenv &lt;&lt;&lt; CTEST26\nvi $ORACLE_HOME\/network\/admin\/tnsnames.ora\n\n...\nPRODDB01 =\n  (DESCRIPTION =\n      (ADDRESS = (PROTOCOL = TCP)(HOST = dbioda01.dbi-lab.ch)(PORT = 1521))\n    (CONNECT_DATA =\n      (SERVER = DEDICATED)\n      (SERVICE_NAME = proddb01.dbi-lab.ch)\n    )\n  )<\/code><\/pre>\n\n\n\n<p>On the target CDB, create a new database link to the source database:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE DATABASE LINK PRODDB01 CONNECT TO PDBADMIN IDENTIFIED BY \"*********\"  USING 'PRODDB01';\n\nselect count(*) from dual@PRODDB01;\n  COUNT(*)\n----------\n         1<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s copy the source PDB under a new name on the 26ai container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>create pluggable database MIG26DBLINK from PRODDB01@PRODDB01;\nPluggable database created.\n\nalter pluggable database MIG26DBLINK open;\n<\/code><\/pre>\n\n\n\n<p>Opening this PDB will take some minutes because it automatically triggers the upgrade from 19c to 26ai:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -n 15 --f \/u01\/app\/oracle\/diag\/rdbms\/ctest26_s1\/CTEST26\/trace\/alert_CTEST26.log \n...\nMIG26DBLINK(3):Starting Upgrade on PDB Open\n2026-01-12T10:57:49.606651+01:00\nMIG26DBLINK(3):alter pluggable database application APP$CDB$CATALOG begin install '19.0.0.0.0' on error capture\nMIG26DBLINK(3):Completed: alter pluggable database application APP$CDB$CATALOG begin install '19.0.0.0.0' on error capture\nMIG26DBLINK(3):alter pluggable database application APP$CDB$CATALOG end install '19.0.0.0.0'\nMIG26DBLINK(3):Completed: alter pluggable database application APP$CDB$CATALOG end install '19.0.0.0.0'\nMIG26DBLINK(3):alter pluggable database application APP$CDB$CATALOG begin upgrade\n  '19.0.0.0.0' to '23.0.0.0.0.partial' on error capture\nMIG26DBLINK(3):Completed: alter pluggable database application APP$CDB$CATALOG begin upgrade\n  '19.0.0.0.0' to '23.0.0.0.0.partial' on error capture\n...\nMIG26DBLINK(3):SERVER COMPONENT id=CATJAVA: status=UPGRADED, version=23.26.0.0.0, timestamp=2026-01-12 11:09:54 Container=MIG26DBLINK Id=3\n2026-01-12T11:09:58.200636+01:00\nMIG26DBLINK(3):Resize operation completed for file# 19, fname +DATA\/CTEST26_S1\/482EE16D86417106E063F700240A6555\/DATAFILE\/undotbs1.294.1222340161, old size 450560K, new size 455680K\n2026-01-12T11:09:59.496448+01:00\nMIG26DBLINK(3):Resize operation completed for file# 19, fname +DATA\/CTEST26_S1\/482EE16D86417106E063F700240A6555\/DATAFILE\/undotbs1.294.1222340161, old size 455680K, new size 460800K\n2026-01-12T11:10:26.701609+01:00\nMIG26DBLINK(3):oracle :\nMIG26DBLINK(3):SERVER COMPONENT id=XDB: status=UPGRADED, version=23.26.0.0.0, timestamp=2026-01-12 11:10:26 Container=MIG26DBLINK Id=3\n2026-01-12T11:10:36.378304+01:00\nMIG26DBLINK(3):Resize operation completed for file# 19, fname +DATA\/CTEST26_S1\/482EE16D86417106E063F700240A6555\/DATAFILE\/undotbs1.294.1222340161, old size 460800K, new size 465920K\n2026-01-12T11:10:45.077998+01:00\nMIG26DBLINK(3):Resize operation completed for file# 19, fname +DATA\/CTEST26_S1\/482EE16D86417106E063F700240A6555\/DATAFILE\/undotbs1.294.1222340161, old size 465920K, new size 471040K\n...\nMIG26DBLINK(3):***************************************************************\nMIG26DBLINK(3):WARNING: Pluggable Database MIG26DBLINK with pdb id - 3 is\nMIG26DBLINK(3):         altered with errors or warnings. Please look into\nMIG26DBLINK(3):         PDB_PLUG_IN_VIOLATIONS view for more details.\nMIG26DBLINK(3):***************************************************************\nMIG26DBLINK(3):--ATTENTION--\nMIG26DBLINK(3):Errors reported while opening PDB (ContainerId: 3) and have been recorded in pdb_alert$ table.\nMIG26DBLINK(3) Error Violation: SQL Patch, Cause: '23.26.0.0.0 Release_Update 2509270520' is installed in the CDB but no release updates are installed in the PDB, Action: Call datapatch to install in the PDB or the CDB\n2026-01-12T11:13:31.632629+01:00\nMIG26DBLINK(3):Opening pdb with no Resource Manager plan active\nViolations: Type: 1, Count: 1\nViolations: Type: 2, Count: 2\nCompleted: Pluggable database MIG26DBLINK opened read write\nCompleted: alter pluggable database MIG26DBLINK open<\/code><\/pre>\n\n\n\n<p>After a couple of minutes, the PDB is opened with errors:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Warning: PDB altered with errors.\nexit<\/code><\/pre>\n\n\n\n<p>Let&#8217;s apply datapatch on this very PDB:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ORACLE_HOME\/OPatch\/datapatch -pdbs MIG26DBLINK\nSQL Patching tool version 23.26.0.0.0 Lim on Mon Jan 12 11:14:55 2026\nCopyright (c) 2012, 2025, Oracle.  All rights reserved.\n\nLog file for this invocation: \/u01\/app\/oracle\/product\/23.0.0.0\/dbhome_1\/cfgtoollogs\/sqlpatch\/sqlpatch_sid_CTEST26_ts_2026_01_12_11_14_55_pid_5074\/sqlpatch_invocation.log\n\nConnecting to database...OK\nGathering database info...done\n\nNote:  Datapatch will only apply or rollback SQL fixes for PDBs\n       that are in an open state, no patches will be applied to closed PDBs.\n       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation\n       (Doc ID 1585822.1)\n\nBootstrapping registry and package to current versions...done\nDetermining current state...done\n\nCurrent state of interim SQL patches:\n  No interim patches found\n\nCurrent state of release update SQL patches:\n  Binary registry:\n    23.26.0.0.0 Release_Update 250927052030: Installed\n  PDB MIG26DBLINK:\n    Applied 23.26.0.0.0 Release_Update 250927052030 successfully\n\nAdding patches to installation queue and performing prereq checks...done\nInstallation queue:\n  For the following PDBs: MIG26DBLINK\n    No interim patches need to be rolled back\n    No release update patches need to be installed\n    No interim patches need to be applied\n\nBypass install queue:\n  For the following PDBs: MIG26DBLINK\n    No interim rollbacks will bypass install\n    Patch 38404116 (Database Release Update : 23.26.0.0.0 (38404116) Gold Image): will bypass install\n      Apply from 23.26.0.0.0 Release_Update 250927052030 to 23.26.0.0.0 Release_Update 250927052030\n    No interim applys will bypass install\n\n\nInstallation queue after removing bypass entries...\nInstallation queue:\n  For the following PDBs: MIG26DBLINK\n    No interim patches need to be rolled back\n    No release update patches need to be installed\n    No interim patches need to be applied\n\n\nProcessing bypass install queue:\n  Patch 38404116 apply (pdb MIG26DBLINK): SUCCESS (bypass_install)\n\nSQL Patching tool complete on Mon Jan 12 11:15:03 2026<\/code><\/pre>\n\n\n\n<p>Everything is fine, now let&#8217;s close and open this PDB in normal mode:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\nshow pdbs\n\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 3 MIG26DBLINK\t\t\t  READ WRITE YES\n\t 4 MIG26DTPUMP\t\t\t  READ WRITE NO\n\nalter pluggable database MIG26DBLINK close immediate;\nalter pluggable database MIG26DBLINK open;\nalter pluggable database MIG26DBLINK save state;\n\nshow pdbs\n\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 3 MIG26DBLINK\t\t\t  READ WRITE NO\n\t 4 MIG26DTPUMP\t\t\t  READ WRITE NO<\/code><\/pre>\n\n\n\n<p>Let&#8217;s do a quick data check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\nalter session set container=MIG26DBLINK;\nselect start_date from dbi.consultants where name like 'DUB%';\nSTART_DAT\n---------\n04-SEP-17\n\nexit<\/code><\/pre>\n\n\n\n<p>Database is ready to use.<\/p>\n\n\n\n<p><strong>Pros &amp; cons<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>+ Maybe the easiest way of migrating a PDB<\/li>\n\n\n\n<li>+ Keep the source database untouched<\/li>\n\n\n\n<li>+ Rather fast<\/li>\n\n\n\n<li>+ No downtime of the source database<\/li>\n\n\n\n<li>&#8211; Need to apply datapatch<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-migration-using-unplug-plug-features\">Migration using unplug\/plug features<\/h2>\n\n\n\n<p>If the source database is a PDB, it can be unplugged and plugged back to another container. This is how multitenant architecture was presented when it first came to 12cR1.<\/p>\n\n\n\n<p>Let&#8217;s unplug the source PDB:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n. oraenv &lt;&lt;&lt; CPROD19\nsqlplus \/ as sysdba\nalter pluggable database PRODDB01 close immediate;\nPluggable database altered.\n\nalter pluggable database PRODDB01 unplug into '\/backup\/dumps\/PRODDB01.xml';\nPluggable database altered.\n\nexit<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s plug this PDB to the new 26ai container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@dbs-04-tst\nsu - oracle\n. oraenv &lt;&lt;&lt; CTEST26\n\nsqlplus \/ as sysdba\n\nshow pdbs\n\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 3 MIG26DBLINK\t\t\t  READ WRITE NO\n\t 4 MIG26DTPUMP\t\t\t  READ WRITE NO\n\ncreate pluggable database MIG26REPLUG using '\/backup\/dumps\/PRODDB01.xml' COPY;\ncreate pluggable database MIG26REPLUG using '\/backup\/dumps\/PRODDB01.xml' COPY\n*\nERROR at line 1:\nORA-19505: failed to identify file\n\"+DATA\/CPROD19_S1\/450AA2873245B6F5E063F100240AC35A\/DATAFILE\/system.302.122233608\n1\"\nORA-17503: ksfdopn:2 Failed to open file\n+DATA\/CPROD19_S1\/450AA2873245B6F5E063F100240AC35A\/DATAFILE\/system.302.1222336081\nORA-15260: permission denied on ASM disk group\nHelp: https:\/\/docs.oracle.com\/error-help\/db\/ora-19505\/\n<\/code><\/pre>\n\n\n\n<p>Files from the source database are not readable by this DB System. Let&#8217;s change the permission on these files from the Bare Metal ASM instance:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit\nexit\nexit\nsu - grid\n\nasmcmd ls -lt +DATA\/CPROD19_S1\/450AA2873245B6F5E063F100240AC35A\/DATAFILE\/* --permission\nType      Redund  Striped  Time             Sys  User                                     Group  Permission  Name\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-------  USERS.297.1222336081\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-------  UNDOTBS1.306.1222336081\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-------  SYSTEM.302.1222336081\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-------  SYSAUX.305.1222336081\n\nasmcmd ls -lt +DATA\/CTEST26_S1\/DATAFILE\/* --permission\nType      Redund  Striped  Time             Sys  User                                     Group  Permission  Name\nDATAFILE  MIRROR  COARSE   JAN 12 10:00:00  Y    oracle@b94b488f82b1cf5cbf58f54162aafac0          rw-------  USERS.299.1222339507\nDATAFILE  MIRROR  COARSE   JAN 12 10:00:00  Y    oracle@b94b488f82b1cf5cbf58f54162aafac0          rw-------  UNDOTBS1.693.1222338993\nDATAFILE  MIRROR  COARSE   JAN 12 10:00:00  Y    oracle@b94b488f82b1cf5cbf58f54162aafac0          rw-------  SYSTEM.906.1222338951\nDATAFILE  MIRROR  COARSE   JAN 12 10:00:00  Y    oracle@b94b488f82b1cf5cbf58f54162aafac0          rw-------  SYSAUX.832.1222338987\n\nasmcmd chmod a+r +DATA\/CPROD19_S1\/450AA2873245B6F5E063F100240AC35A\/DATAFILE\/*\nasmcmd ls -lt +DATA\/CPROD19_S1\/450AA2873245B6F5E063F100240AC35A\/DATAFILE\/* --permission\nType      Redund  Striped  Time             Sys  User                                     Group  Permission  Name\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-r--r--  USERS.297.1222342153\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-r--r--  UNDOTBS1.301.1222341995\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-r--r--  SYSTEM.305.1222341995\nDATAFILE  MIRROR  COARSE   JAN 12 11:00:00  Y    oracle@e7d9d36f6b157fdabf89026bcf48d757          rw-r--r--  SYSAUX.302.1222341995\n\nexit\n\nssh root@dbs-04-tst\nsu - oracle\n. oraenv &lt;&lt;&lt; CTEST26\n\nsqlplus \/ as sysdba\n\ncreate pluggable database MIG26REPLUG using '\/backup\/dumps\/PRODDB01.xml' COPY;\nPluggable database created.\n\nshow pdbs\n\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 3 MIG26DBLINK\t\t\t  READ WRITE NO\n\t 4 MIG26DTPUMP\t\t\t  READ WRITE NO\n\t 6 MIG26REPLUG\t\t\t  MOUNTED\n\nalter pluggable database MIG26REPLUG open;<\/code><\/pre>\n\n\n\n<p>It will also take a couple of minutes for this upgrade to 26ai. You will see corresponding traces in the alert.log file of the 26ai container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/u01\/app\/oracle\/diag\/rdbms\/ctest26_s1\/CTEST26\/trace\/alert_CTEST26.log\n...\n2026-01-12T11:34:21.075364+01:00\nMIG26REPLUG(6):Starting Upgrade on PDB Open\n...\nMIG26REPLUG(6):***************************************************************\nMIG26REPLUG(6):WARNING: Pluggable Database MIG26REPLUG with pdb id - 6 is\nMIG26REPLUG(6):         altered with errors or warnings. Please look into\nMIG26REPLUG(6):         PDB_PLUG_IN_VIOLATIONS view for more details.\nMIG26REPLUG(6):***************************************************************\nMIG26REPLUG(6):--ATTENTION--\nMIG26REPLUG(6):Errors reported while opening PDB (ContainerId: 6) and have been recorded in pdb_alert$ table.\nMIG26REPLUG(6) Error Violation: SQL Patch, Cause: '23.26.0.0.0 Release_Update 2509270520' is installed in the CDB but no release updates are installed in the PDB, Action: Call datapatch to install in the PDB or the CDB\n2026-01-12T11:49:56.836062+01:00\nMIG26REPLUG(6):Opening pdb with no Resource Manager plan active\nViolations: Type: 1, Count: 1\nViolations: Type: 2, Count: 1\nCompleted: Pluggable database MIG26REPLUG opened read write\nCompleted: alter pluggable database MIG26REPLUG open<\/code><\/pre>\n\n\n\n<p>Let&#8217;s have a look at my PDBs and apply the datapatch on MIG26REPLUG:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>show pdbs\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 3 MIG26DBLINK\t\t\t  READ WRITE NO\n\t 4 MIG26DTPUMP\t\t\t  READ WRITE NO\n\t 6 MIG26REPLUG\t\t\t  READ WRITE YES\n\nexit\n\n$ORACLE_HOME\/OPatch\/datapatch -pdbs MIG26REPLUG\n\nSQL Patching tool version 23.26.0.0.0 Lim on Mon Jan 12 11:51:42 2026\nCopyright (c) 2012, 2025, Oracle.  All rights reserved.\n\nLog file for this invocation: \/u01\/app\/oracle\/product\/23.0.0.0\/dbhome_1\/cfgtoollogs\/sqlpatch\/sqlpatch_sid_CTEST26_ts_2026_01_12_11_51_42_pid_24026\/sqlpatch_invocation.log\n\nConnecting to database...OK\nGathering database info...done\n\nNote:  Datapatch will only apply or rollback SQL fixes for PDBs\n       that are in an open state, no patches will be applied to closed PDBs.\n       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation\n       (Doc ID 1585822.1)\n\nBootstrapping registry and package to current versions...done\nDetermining current state...done\n\nCurrent state of interim SQL patches:\n  No interim patches found\n\nCurrent state of release update SQL patches:\n  Binary registry:\n    23.26.0.0.0 Release_Update 250927052030: Installed\n  PDB MIG26REPLUG:\n    Applied 23.26.0.0.0 Release_Update 250927052030 successfully\n\nAdding patches to installation queue and performing prereq checks...done\nInstallation queue:\n  For the following PDBs: MIG26REPLUG\n    No interim patches need to be rolled back\n    No release update patches need to be installed\n    No interim patches need to be applied\n\nBypass install queue:\n  For the following PDBs: MIG26REPLUG\n    No interim rollbacks will bypass install\n    Patch 38404116 (Database Release Update : 23.26.0.0.0 (38404116) Gold Image): will bypass install\n      Apply from 23.26.0.0.0 Release_Update 250927052030 to 23.26.0.0.0 Release_Update 250927052030\n    No interim applys will bypass install\n\n\nInstallation queue after removing bypass entries...\nInstallation queue:\n  For the following PDBs: MIG26REPLUG\n    No interim patches need to be rolled back\n    No release update patches need to be installed\n    No interim patches need to be applied\n\n\nProcessing bypass install queue:\n  Patch 38404116 apply (pdb MIG26REPLUG): SUCCESS (bypass_install)\n\nSQL Patching tool complete on Mon Jan 12 11:51:50 2026<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s restart the PDB in normal mode:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\n\nalter pluggable database MIG26REPLUG close immediate;\nalter pluggable database MIG26REPLUG open;\nalter pluggable database MIG26REPLUG save state;\n\nshow pdbs\n\n    CON_ID CON_NAME\t\t\t  OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n\t 2 PDB$SEED\t\t\t  READ ONLY  NO\n\t 3 MIG26DBLINK\t\t\t  READ WRITE NO\n\t 4 MIG26DTPUMP\t\t\t  READ WRITE NO\n\t 6 MIG26REPLUG\t\t\t  READ WRITE NO<\/code><\/pre>\n\n\n\n<p>This PDB is now running on 26ai.<\/p>\n\n\n\n<p>Let&#8217;s check my consultants table:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter session set container=MIG26REPLUG;\nselect start_date from dbi.consultants where name like 'DUB%';\nSTART_DAT\n---------\n04-SEP-17\n\nexit\n<\/code><\/pre>\n\n\n\n<p><strong>Pros &amp; cons<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>+ Easy migration<\/li>\n\n\n\n<li>+ Preserve source files with the copy option<\/li>\n\n\n\n<li>+ Rather fast<\/li>\n\n\n\n<li>&#8211; Need a downtime of the source PDB<\/li>\n\n\n\n<li>&#8211; Reuse of source database is only possible by unplugging and plugging back the PDB with the xml file<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>There are multiple ways of migrating to 26ai. There is quite a lot of new features coming with 26ai. You will use them or not, but trying to migrate to this version is something to start thinking about in 2026.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Oracle 26ai is not yet available on Bare Metal ODA, but it will probably be in a few weeks. For now, 26ai is available as a DB System on Oracle Database Appliance, meaning that it&#8217;s already possible to test this new version. Let&#8217;s try to migrate a 19c Bare Metal PDB to a 26ai [&hellip;]<\/p>\n","protected":false},"author":45,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[62,3808,3560,3807,734,3809,64,3806,2567,3810,2203,3267,66,2838,2837],"type_dbi":[],"class_list":["post-42419","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-19c","tag-23-26","tag-23ai","tag-create-pluggable-database","tag-datapump","tag-migration-26ai","tag-multitenant","tag-non-cdb","tag-oda-2","tag-odacli-migrate","tag-oracle-database","tag-oracle-migration","tag-pdb","tag-plug","tag-unplug"],"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>Migrate your database to 26ai on ODA - dbi Blog<\/title>\n<meta name=\"description\" content=\"How to migrate to 26ai on ODA: 3 different methods explained\" \/>\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\/migrate-your-database-to-26ai-on-oda\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrate your database to 26ai on ODA\" \/>\n<meta property=\"og:description\" content=\"How to migrate to 26ai on ODA: 3 different methods explained\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-12T14:36:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-12T14:37:01+00:00\" \/>\n<meta name=\"author\" content=\"J\u00e9r\u00f4me Dubar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"J\u00e9r\u00f4me Dubar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 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\/migrate-your-database-to-26ai-on-oda\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/\"},\"author\":{\"name\":\"J\u00e9r\u00f4me Dubar\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd\"},\"headline\":\"Migrate your database to 26ai on ODA\",\"datePublished\":\"2026-01-12T14:36:59+00:00\",\"dateModified\":\"2026-01-12T14:37:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/\"},\"wordCount\":880,\"commentCount\":0,\"keywords\":[\"19c\",\"23.26\",\"23ai\",\"create pluggable database\",\"DataPump\",\"migration 26ai\",\"multitenant\",\"non-CDB\",\"oda\",\"odacli migrate\",\"Oracle Database\",\"Oracle Migration\",\"PDB\",\"plug\",\"unplug\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/\",\"name\":\"Migrate your database to 26ai on ODA - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2026-01-12T14:36:59+00:00\",\"dateModified\":\"2026-01-12T14:37:01+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd\"},\"description\":\"How to migrate to 26ai on ODA: 3 different methods explained\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrate your database to 26ai on ODA\"}]},{\"@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\/0fb4bbf128b4cda2f96d662dec2baedd\",\"name\":\"J\u00e9r\u00f4me Dubar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g\",\"caption\":\"J\u00e9r\u00f4me Dubar\"},\"description\":\"J\u00e9r\u00f4me Dubar has more than 15 years of experience in the field of Information Technology. Ten years ago, he specialized in the Oracle Database technology. His expertise is focused on database architectures, high availability (RAC), disaster recovery (DataGuard), backups (RMAN), performance analysis and tuning (AWR\/statspack), migration, consolidation and appliances, especially ODA (his main projects during the last years). Prior to joining dbi services, J\u00e9r\u00f4me Dubar worked in a Franco-Belgian IT service company as Database team manager and main consultant for 7 years. He also worked for 5 years in a software editor company as technical consultant across France. He was also teaching Oracle Database lessons for 9 years. J\u00e9r\u00f4me Dubar holds a Computer Engineering degree from the Lille Sciences and Technologies university in northern France. His branch-related experience covers the public sector, retail, industry, banking, health, e-commerce and IT sectors.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/jerome-dubar\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrate your database to 26ai on ODA - dbi Blog","description":"How to migrate to 26ai on ODA: 3 different methods explained","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\/migrate-your-database-to-26ai-on-oda\/","og_locale":"en_US","og_type":"article","og_title":"Migrate your database to 26ai on ODA","og_description":"How to migrate to 26ai on ODA: 3 different methods explained","og_url":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/","og_site_name":"dbi Blog","article_published_time":"2026-01-12T14:36:59+00:00","article_modified_time":"2026-01-12T14:37:01+00:00","author":"J\u00e9r\u00f4me Dubar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"J\u00e9r\u00f4me Dubar","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/"},"author":{"name":"J\u00e9r\u00f4me Dubar","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd"},"headline":"Migrate your database to 26ai on ODA","datePublished":"2026-01-12T14:36:59+00:00","dateModified":"2026-01-12T14:37:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/"},"wordCount":880,"commentCount":0,"keywords":["19c","23.26","23ai","create pluggable database","DataPump","migration 26ai","multitenant","non-CDB","oda","odacli migrate","Oracle Database","Oracle Migration","PDB","plug","unplug"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/","url":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/","name":"Migrate your database to 26ai on ODA - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2026-01-12T14:36:59+00:00","dateModified":"2026-01-12T14:37:01+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0fb4bbf128b4cda2f96d662dec2baedd"},"description":"How to migrate to 26ai on ODA: 3 different methods explained","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/migrate-your-database-to-26ai-on-oda\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrate your database to 26ai on ODA"}]},{"@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\/0fb4bbf128b4cda2f96d662dec2baedd","name":"J\u00e9r\u00f4me Dubar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/efaa5a7def0aa4cdaf49a470fb4a7641a3ea6e378ae1455096a0933f99f46d6b?s=96&d=mm&r=g","caption":"J\u00e9r\u00f4me Dubar"},"description":"J\u00e9r\u00f4me Dubar has more than 15 years of experience in the field of Information Technology. Ten years ago, he specialized in the Oracle Database technology. His expertise is focused on database architectures, high availability (RAC), disaster recovery (DataGuard), backups (RMAN), performance analysis and tuning (AWR\/statspack), migration, consolidation and appliances, especially ODA (his main projects during the last years). Prior to joining dbi services, J\u00e9r\u00f4me Dubar worked in a Franco-Belgian IT service company as Database team manager and main consultant for 7 years. He also worked for 5 years in a software editor company as technical consultant across France. He was also teaching Oracle Database lessons for 9 years. J\u00e9r\u00f4me Dubar holds a Computer Engineering degree from the Lille Sciences and Technologies university in northern France. His branch-related experience covers the public sector, retail, industry, banking, health, e-commerce and IT sectors.","url":"https:\/\/www.dbi-services.com\/blog\/author\/jerome-dubar\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42419","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\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=42419"}],"version-history":[{"count":9,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42419\/revisions"}],"predecessor-version":[{"id":42428,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42419\/revisions\/42428"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=42419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=42419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=42419"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=42419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}