{"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":28,"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 v28.8 (Yoast SEO v28.8) - 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=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\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\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"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\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"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\\\/4bae5e5dd8c7d48edbd948772b49b202\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"caption\":\"Open source Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/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":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","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":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202"},"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\/4bae5e5dd8c7d48edbd948772b49b202"},"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\/4bae5e5dd8c7d48edbd948772b49b202","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","caption":"Open source Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_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\/28"}],"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}]}}