{"id":13719,"date":"2020-03-20T14:31:25","date_gmt":"2020-03-20T13:31:25","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/"},"modified":"2020-03-20T14:31:25","modified_gmt":"2020-03-20T13:31:25","slug":"migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/","title":{"rendered":"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS"},"content":{"rendered":"<p>If you followed the last two posts in this little series (<a href=\"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-1-setting-up-the-base-infrastructure\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> and <a href=\"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-2-the-aws-schema-conversion-tool-sct\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>) this is the current status of this demo migration project: We have converted the Oracle SH schema and applied it to the target AWS Aurora with PostgreSQL compatibility instance. This worked quite well but a few objects (mostly PL\/SQL procedures) would need manual actions. The next and final step is to replicate the data from Oracle to the Aurora instance using <a href=\"https:\/\/aws.amazon.com\/dms\/\" target=\"_blank\" rel=\"noopener noreferrer\">AWS DMS (Data Migration Service)<\/a>. As with all logical replications this is a two step process: First a consistent state of the current data needs to be loaded to the target. Once that is completed changes that happened since the load on the source need to be captured and replayed on the target.<\/p>\n<p><!--more--><\/p>\n<p>Coming back to our current setup:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png\" alt=\"\" width=\"797\" height=\"324\" class=\"aligncenter size-full wp-image-38364\" \/><\/a><\/p>\n<p>What we do not need anymore is the Windows host, this one was only required for the AWS Schema Conversion Utility (although you can install that on <a href=\"https:\/\/docs.aws.amazon.com\/SchemaConversionTool\/latest\/userguide\/CHAP_Installing.html\" target=\"_blank\" rel=\"noopener noreferrer\">Linux and macOS<\/a> as well). The target setup will look like this:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_target_setup-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_target_setup-1.jpg\" alt=\"\" width=\"950\" height=\"501\" class=\"aligncenter size-full wp-image-38366\" \/><\/a><\/p>\n<p>The key point here is the DMS replication instance. This one will connect to a source end point, mines the transaction logs and replays all the changes to the target end point. The replication instance will also take care of the initial load of the data. You have two choices for log mining, either <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/sutil\/oracle-logminer-utility.html\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle LogMiner<\/a> or the AWS DMS Binary Reader which is an AWS implementation for mining the log files. AWS recommends to use Oracle LogMiner in most situation except:<br \/>\n<a href=\"https:\/\/docs.aws.amazon.com\/dms\/latest\/userguide\/CHAP_Source.Oracle.html#CHAP_Source.Oracle.CDC\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_log_mining-1.jpg\" alt=\"\" width=\"1000\" height=\"166\" class=\"aligncenter size-full wp-image-38369\" \/><\/a><\/p>\n<p>Before we go on and create the replication instance we need to prepare the Oracle instance. The first requirement is, that the Oracle instance need to be in archiving mode:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n[oracle@ip-10-0-1-146 ~]$ sqlplus sys\/manager@localhost\/XE as sysdba\n\nSQL*Plus: Release 18.0.0.0.0 - Production on Fri Mar 20 10:46:49 2020\nVersion 18.4.0.0.0\n\nCopyright (c) 1982, 2018, Oracle.  All rights reserved.\n\n\nConnected to:\nOracle Database 18c Express Edition Release 18.0.0.0.0 - Production\nVersion 18.4.0.0.0\n\nSQL&gt; shutdown immediate;\n\n...\n[oracle@ip-10-0-1-146 ~]$ sqlplus \/ as sysdba\n\nSQL*Plus: Release 18.0.0.0.0 - Production on Fri Mar 20 10:48:14 2020\nVersion 18.4.0.0.0\n\nCopyright (c) 1982, 2018, Oracle.  All rights reserved.\n\nConnected to an idle instance.\n\nSQL&gt; startup mount\nORACLE instance started.\n\nTotal System Global Area 1191181104 bytes\nFixed Size                  8895280 bytes\nVariable Size             436207616 bytes\nDatabase Buffers          738197504 bytes\nRedo Buffers                7880704 bytes\nDatabase mounted.\nSQL&gt; alter database archivelog;\n\nDatabase altered.\n\nSQL&gt; alter database open;\n\nDatabase altered.\n\nSQL&gt; archive log list;\nDatabase log mode              Archive Mode\nAutomatic archival             Enabled\nArchive destination            \/opt\/oracle\/product\/18c\/dbhomeXE\/dbs\/arch\nOldest online log sequence     2\nNext log sequence to archive   4\nCurrent log sequence           4\n<\/pre>\n<p>The second requirement is that supplemental logging needs to be enabled:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;\nALTER DATABASE ADD SUPPLEMENTAL LOG DATA\n*\nERROR at line 1:\nORA-44608: Supplemental logging settings cannot be modified in Oracle Database\nExpress Edition.\n\n\nSQL&gt; SELECT supplemental_log_data_min FROM v$database;\n\nSUPPLEME\n--------\nNO\n\nSQL&gt; \n<\/pre>\n<p>So, with our setup this is not possible as Oracle XE 18 does not support supplemental logging. What we can do is to load the complete data, but we can not capture changes. For some migrations that might actually be fine for others the downtime for fully loading the data is not acceptable. So lets see how far we will come.<\/p>\n<p>Step one is creating the end points. One for Oracle as the source:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_1.jpg\" alt=\"\" width=\"926\" height=\"371\" class=\"aligncenter size-full wp-image-38373\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_2.jpg\" alt=\"\" width=\"1000\" height=\"186\" class=\"aligncenter size-full wp-image-38374\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_3-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_3-1.jpg\" alt=\"\" width=\"800\" height=\"787\" class=\"aligncenter size-full wp-image-38376\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_4.jpg\" alt=\"\" width=\"800\" height=\"595\" class=\"aligncenter size-full wp-image-38377\" \/><\/a><\/p>\n<p>&#8230; and the other one for the target:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_5.jpg\" alt=\"\" width=\"1000\" height=\"167\" class=\"aligncenter size-full wp-image-38378\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_6.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_6.jpg\" alt=\"\" width=\"800\" height=\"796\" class=\"aligncenter size-full wp-image-38379\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_7.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_7.jpg\" alt=\"\" width=\"800\" height=\"577\" class=\"aligncenter size-full wp-image-38380\" \/><\/a><\/p>\n<p>Both end points are now ready:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_8.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_8.jpg\" alt=\"\" width=\"1000\" height=\"190\" class=\"aligncenter size-full wp-image-38381\" \/><\/a><\/p>\n<p>Next we need the replication instance:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_9.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_9.jpg\" alt=\"\" width=\"1000\" height=\"177\" class=\"aligncenter size-full wp-image-38383\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_10.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_10.jpg\" alt=\"\" width=\"800\" height=\"773\" class=\"aligncenter size-full wp-image-38384\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_11.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_11.jpg\" alt=\"\" width=\"800\" height=\"530\" class=\"aligncenter size-full wp-image-38385\" \/><\/a><\/p>\n<p>The creation of the replication instance will take some time:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_12.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_12.jpg\" alt=\"\" width=\"1000\" height=\"166\" class=\"aligncenter size-full wp-image-38387\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_13.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_13.jpg\" alt=\"\" width=\"1000\" height=\"166\" class=\"aligncenter size-full wp-image-38389\" \/><\/a><\/p>\n<p>Now we need something that connects the end points with the replication instance and that is the goal of the &#8220;Database migration tasks&#8221;:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_14.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_14.jpg\" alt=\"\" width=\"1000\" height=\"194\" class=\"aligncenter size-full wp-image-38390\" \/><\/a><\/p>\n<p>Without log mining we can only go for &#8220;Migrate existing data&#8221;:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_15.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_15.jpg\" alt=\"\" width=\"800\" height=\"701\" class=\"aligncenter size-full wp-image-38391\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_16.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_16.jpg\" alt=\"\" width=\"800\" height=\"514\" class=\"aligncenter size-full wp-image-38392\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_17.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_17.jpg\" alt=\"\" width=\"800\" height=\"370\" class=\"aligncenter size-full wp-image-38394\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_18.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_18.jpg\" alt=\"\" width=\"800\" height=\"759\" class=\"aligncenter size-full wp-image-38395\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_19.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_19.jpg\" alt=\"\" width=\"1000\" height=\"169\" class=\"aligncenter size-full wp-image-38396\" \/><\/a><\/p>\n<p>Nothing really happens, and the reason is this:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_20.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_20.jpg\" alt=\"\" width=\"1000\" height=\"217\" class=\"aligncenter size-full wp-image-38397\" \/><\/a><\/p>\n<p>So, with our current setup we can not proceed. What I did is: I took one of our training EC2 instances which runs Oracle 19c, enabled archive mode, supplemental logging and installed the same sample schemas. Now the connection is successful:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_21.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_21.jpg\" alt=\"\" width=\"1000\" height=\"209\" class=\"aligncenter size-full wp-image-38400\" \/><\/a><\/p>\n<p>Restart the task:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_22.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_22.jpg\" alt=\"\" width=\"1000\" height=\"169\" class=\"aligncenter size-full wp-image-38401\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_23.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_23.jpg\" alt=\"\" width=\"1000\" height=\"173\" class=\"aligncenter size-full wp-image-38402\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_24.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_24.jpg\" alt=\"\" width=\"1000\" height=\"140\" class=\"aligncenter size-full wp-image-38403\" \/><\/a><\/p>\n<p>After a few seconds the load is complete:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_25.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_25.jpg\" alt=\"\" width=\"1000\" height=\"571\" class=\"aligncenter size-full wp-image-38404\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_26.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_26.jpg\" alt=\"\" width=\"1000\" height=\"511\" class=\"aligncenter size-full wp-image-38405\" \/><\/a><\/p>\n<p>That was quite easy, lets see if there really is something in the Aurora instance:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres=&gt; select * from \"SH\".\"PRODUCTS\";\n PROD_ID |                   PROD_NAME                    |                      PROD_DESC                      |   PROD_SUBCATEGORY   | PROD_SUBCATEGORY_ID | PROD_SUBCATEGORY_DESC |        PROD_CATEGORY        | PROD_CATEGORY_ID |     PROD_CATEGORY_DESC      | PROD_WEIG\nHT_CLASS | PROD_UNIT_OF_MEASURE | PROD_PACK_SIZE | SUPPLIER_ID | PROD_STATUS | PROD_LIST_PRICE | PROD_MIN_PRICE | PROD_TOTAL | PROD_TOTAL_ID | PROD_SRC_ID |    PROD_EFF_FROM    | PROD_EFF_TO | PROD_VALID \n---------+------------------------------------------------+-----------------------------------------------------+----------------------+---------------------+-----------------------+-----------------------------+------------------+-----------------------------+----------\n---------+----------------------+----------------+-------------+-------------+-----------------+----------------+------------+---------------+-------------+---------------------+-------------+------------\n      13 | 5MP Telephoto Digital Camera                   | 5MP Telephoto Digital Camera                        | Cameras              |     2044.0000000000 | Cameras               | Photo                       |   204.0000000000 | Photo                       |          \n       1 | U                    | P              |           1 | STATUS      |          899.99 |         899.99 | TOTAL      |  1.0000000000 |             | 1998-01-01 00:00:00 |             | A\n      14 | 17\" LCD w\/built-in HDTV Tuner                  | 17\" LCD w\/built-in HDTV Tuner                       | Monitors             |     2035.0000000000 | Monitors              | Peripherals and Accessories |   203.0000000000 | Peripherals and Accessories |          \n       1 | U                    | P              |           1 | STATUS      |          999.99 |         999.99 | TOTAL      |  1.0000000000 |             | 1998-01-01 00:00:00 |             | A\n      15 | Envoy 256MB - 40GB                             | Envoy 256MB - 40Gb                                  | Desktop PCs          |     2021.0000000000 | Desktop PCs           | Hardware                    |   202.0000000000 | Hardware                    |          \n       1 | U                    | P              |           1 | STATUS      |          999.99 |         999.99 | TOTAL      |  1.0000000000 |             | 1998-01-01 00:00:00 |             | A\n      16 | Y Box                                          | Y Box                                               | Game Consoles        |     2011.0000000000 | Game Consoles         | Electronics                 |   201.0000000000 | Electronics                 |          \n       1 | U                    | P              |           1 | STATUS      |          299.99 |         299.99 | TOTAL      |  1.0000000000 |             | 1998-01-01 00:00:00 |             | A\n      17 | Mini DV Camcorder with 3.5\" Swivel LCD         | Mini DV Camcorder with 3.5\" Swivel LCD              | Camcorders           |     2041.0000000000 | Camcorders            | Photo                       |   204.0000000000 | Photo                       |          \n       1 | U                    | P              |           1 | STATUS      |         1099.99 |        1099.99 | TOTAL      |  1.0000000000 |             | 1998-01-01 00:00:00 |             | A\n      18 | Envoy Ambassador                               | Envoy Ambassador                                    | Portable PCs         |     2022.0000000000 | Portable PCs          | Hardware                    |   202.0000000000 | Hardware                    |          \n       1 | U                    | P              |           1 | STATUS      |         1299.99 |        1299.99 | TOTAL      |  1.0000000000 |             | 1998-01-01 00:00:00 |             | A\n\n<\/pre>\n<p>Looks fine. Once you get used to the DMS interface and know what the differnent pieces are really there for it is quite easy to get a simple migration going. In the next post we&#8217;ll see how chance capture can be configured so that changes on the source are automatically replicated to the target.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you followed the last two posts in this little series (here and here) this is the current status of this demo migration project: We have converted the Oracle SH schema and applied it to the target AWS Aurora with PostgreSQL compatibility instance. This worked quite well but a few objects (mostly PL\/SQL procedures) would [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":13720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[133,135,1143,15,77],"type_dbi":[],"class_list":["post-13719","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-aws","tag-cloud","tag-dms","tag-migration","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS - dbi Blog<\/title>\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\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS\" \/>\n<meta property=\"og:description\" content=\"If you followed the last two posts in this little series (here and here) this is the current status of this demo migration project: We have converted the Oracle SH schema and applied it to the target AWS Aurora with PostgreSQL compatibility instance. This worked quite well but a few objects (mostly PL\/SQL procedures) would [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-20T13:31:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png\" \/>\n\t<meta property=\"og:image:width\" content=\"797\" \/>\n\t<meta property=\"og:image:height\" content=\"324\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\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\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS\",\"datePublished\":\"2020-03-20T13:31:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/\"},\"wordCount\":575,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/dms_current_setup.png\",\"keywords\":[\"AWS\",\"Cloud\",\"DMS\",\"Migration\",\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/\",\"name\":\"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/dms_current_setup.png\",\"datePublished\":\"2020-03-20T13:31:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/dms_current_setup.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/dms_current_setup.png\",\"width\":797,\"height\":324},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS\"}]},{\"@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\\\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\\\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/westermanndanie\"],\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/daniel-westermann\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS - dbi Blog","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\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/","og_locale":"en_US","og_type":"article","og_title":"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS","og_description":"If you followed the last two posts in this little series (here and here) this is the current status of this demo migration project: We have converted the Oracle SH schema and applied it to the target AWS Aurora with PostgreSQL compatibility instance. This worked quite well but a few objects (mostly PL\/SQL procedures) would [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/","og_site_name":"dbi Blog","article_published_time":"2020-03-20T13:31:25+00:00","og_image":[{"width":797,"height":324,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png","type":"image\/png"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS","datePublished":"2020-03-20T13:31:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/"},"wordCount":575,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png","keywords":["AWS","Cloud","DMS","Migration","PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/","url":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/","name":"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png","datePublished":"2020-03-20T13:31:25+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/dms_current_setup.png","width":797,"height":324},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-an-oracle-instance-to-aws-aurora-3-data-replication-with-aws-dms\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrating an Oracle instance to AWS Aurora \u2013 3 \u2013 Data replication with AWS DMS"}]},{"@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\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13719","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\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=13719"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13719\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/13720"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13719"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}