{"id":6383,"date":"2015-11-29T12:55:47","date_gmt":"2015-11-29T11:55:47","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/"},"modified":"2015-11-29T12:55:47","modified_gmt":"2015-11-29T11:55:47","slug":"migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/","title":{"rendered":"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4"},"content":{"rendered":"<p>This post takes a look on how to migrate the Oracle 12cR1 sample schemas to <a href=\"http:\/\/www.enterprisedb.com\/products-services-training\/products\/postgres-plus-advanced-server\" target=\"_blank\">PPAS 9.4 (PostgreSQL Plus Advanced Server 9.4)<\/a>. I&#8217;ll not dig into how to install PPAS as <a href=\"http:\/\/dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-1-setting-up-ppas\/\" target=\"_blank\">this was described in detail some time ago<\/a>. Just follow this post if you need a setup guide.<\/p>\n<p>If you wonder why I am doing this there are two reasons:<\/p>\n<ul>\n<li>to see if it works, to have fun and to learn<\/li>\n<li>PostgreSQL and PPAS are real alternatives to Oracle so migrating applications from one to another can make make a lot of sense<\/li>\n<\/ul>\n<p>To download the Oracle database examples point your browser to the <a href=\"http:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/downloads\/database12c-linux-download-2240591.html\" target=\"_blank\">otn download page<\/a> and download the &#8220;Oracle Database 12c Release 1 Examples (12.1.0.2.0) for Linux x86-64&#8221; file.<br \/>\nInstalling the sample is quite easy: unzip, start OUI, next, next, next:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\noracle@oel12102:\/u01\/app\/oracle\/software\/ [PROD] unzip linuxamd64_12102_examples.zip\noracle@oel12102:\/u01\/app\/oracle\/software\/ [PROD] cd examples\/\noracle@oel12102:\/u01\/app\/oracle\/software\/examples\/ [PROD] .\/runInstaller\n<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample1.png\" alt=\"orasample1\" width=\"794\" height=\"614\" class=\"aligncenter size-full wp-image-5568\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample2.png\" alt=\"orasample2\" width=\"793\" height=\"612\" class=\"aligncenter size-full wp-image-5569\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample3.png\" alt=\"orasample3\" width=\"797\" height=\"609\" class=\"aligncenter size-full wp-image-5570\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample4.png\" alt=\"orasample4\" width=\"798\" height=\"611\" class=\"aligncenter size-full wp-image-5571\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample5.png\" alt=\"orasample5\" width=\"792\" height=\"612\" class=\"aligncenter size-full wp-image-5572\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/orasample6.png\" alt=\"orasample6\" width=\"796\" height=\"610\" class=\"aligncenter size-full wp-image-5573\" \/><\/a><\/p>\n<p>Once the scripts are available we can install the schemas. The only important point is that <a href=\"http:\/\/docs.oracle.com\/database\/121\/COMSC\/installation.htm#COMSC00004\" target=\"_blank\">the schemas need to be installed in the right order<\/a>. So I&#8217;ll begin with the HR schema:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n@?\/demo\/schema\/human_resources\/hr_main.sql\nspecify password for HR as parameter 1:\nEnter value for 1: manager\n\nspecify default tablespeace for HR as parameter 2:\nEnter value for 2: users\n\nspecify temporary tablespace for HR as parameter 3:\nEnter value for 3: temp\n\nspecify password for SYS as parameter 4:\nEnter value for 4: manager\n\nspecify log path as parameter 5:\nEnter value for 5: \/var\/tmp\/\n<\/pre>\n<p>After that the OE schema can be installed (You&#8217;ll need the <a href=\"http:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28415\/ap_instl_upgrd.htm#BHAJIGHF\" target=\"_blank\">Multimedia Option<\/a> installed for this to succeed):<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; @?\/demo\/schema\/order_entry\/oe_main.sql\n\nspecify password for OE as parameter 1:\nEnter value for 1: manager\n\nspecify default tablespeace for OE as parameter 2:\nEnter value for 2: users\n\nspecify temporary tablespace for OE as parameter 3:\nEnter value for 3: temp\n\nspecify password for HR as parameter 4:\nEnter value for 4: manager\n\nspecify password for SYS as parameter 5:\nEnter value for 5: manager\n\nspecify directory path for the data files as parameter 6:\nEnter value for 6: \/var\/tmp\/\n\nwriteable directory path for the log files as parameter 7:\nEnter value for 7: \/var\/tmp\/\n\nspecify version as parameter 8:\nEnter value for 8: v3\n<\/pre>\n<p>The we can continue with the PM schema:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; @?\/demo\/schema\/product_media\/pm_main.sql\n\nspecify password for PM as parameter 1:\nEnter value for 1: manager\n\nspecify default tablespeace for PM as parameter 2:\nEnter value for 2: users\n\nspecify temporary tablespace for PM as parameter 3:\nEnter value for 3: temp\n\nspecify password for OE as parameter 4:\nEnter value for 4: manager\n\nspecify password for SYS as parameter 5:\nEnter value for 5: manager\n\nspecify directory path for the PM data files as parameter 6:\nEnter value for 6: \/u01\/app\/oracle\/product\/12.1.0\/db_2_0\/demo\/schema\/product_media\/\n\nspecify directory path for the PM load log files as parameter 7:\nEnter value for 7: \/u01\/app\/oracle\/product\/12.1.0\/db_2_0\/demo\/schema\/product_media\/\n\nspecify work directory path as parameter 8:\nEnter value for 8: \/u01\/app\/oracle\/product\/12.1.0\/db_2_0\/demo\/schema\/product_media\/\n<\/pre>\n<p>Then continue with the IX schema:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; @?\/demo\/schema\/info_exchange\/ix_main.sql\n\nspecify password for IX as parameter 1:\nEnter value for 1: manager\n\nspecify default tablespeace for IX as parameter 2:\nEnter value for 2: users\n\nspecify temporary tablespace for IX as parameter 3:\nEnter value for 3: temp\n\nspecify password for SYS as parameter 4:\nEnter value for 4: manager\n\nspecify path for log files as parameter 5:\nEnter value for 5: \/u01\/app\/oracle\/product\/12.1.0\/db_2_0\/demo\/schema\/info_exchange\/\n\nspecify version as parameter 6:\nEnter value for 6: v3\n<\/pre>\n<p>And finally the SH schema:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; @?\/demo\/schema\/sales_history\/sh_main.sql\n\nspecify password for SH as parameter 1:\nEnter value for 1: manager\n\nspecify default tablespace for SH as parameter 2:\nEnter value for 2: users\n\nspecify temporary tablespace for SH as parameter 3:\nEnter value for 3: temp\n\nspecify password for SYS as parameter 4:\nEnter value for 4: manager\n\nspecify directory path for the data files as parameter 5:\nEnter value for 5: \/u00\/app\/oracle\/product\/12.1.0\/db_2_0\/demo\/schema\/sales_history\/\n\nwriteable directory path for the log files as parameter 6:\nEnter value for 6: \/u00\/app\/oracle\/product\/12.1.0\/db_2_0\/demo\/schema\/sales_history\/\n\nspecify version as parameter 7:\nEnter value for 7: v3\n<\/pre>\n<p>Once everything is installed we have the following objects available:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; select owner,object_type,count(*) num_obj \n       from dba_objects \n      where owner in ('SH','PM','OE','IX','HR','BI') group by owner,object_type order by 1,2;\n\nOWNER                          OBJECT_TYPE                NUM_OBJ\n------------------------------ ----------------------- ----------\nHR                             INDEX                           19\nHR                             PROCEDURE                        2\nHR                             SEQUENCE                         3\nHR                             TABLE                            7\nHR                             TRIGGER                          2\nHR                             VIEW                             1\nIX                             EVALUATION CONTEXT               2\nIX                             INDEX                           17\nIX                             LOB                              3\nIX                             QUEUE                            4\nIX                             RULE SET                         4\nIX                             SEQUENCE                         2\nIX                             TABLE                           17\nIX                             TYPE                             1\nIX                             VIEW                             8\nOE                             FUNCTION                         1\nOE                             INDEX                           48\nOE                             LOB                             15\nOE                             SEQUENCE                         1\nOE                             SYNONYM                          6\nOE                             TABLE                           14\nOE                             TRIGGER                          4\nOE                             TYPE                            37\nOE                             TYPE BODY                        3\nOE                             VIEW                            13\nPM                             INDEX                           21\nPM                             LOB                             17\nPM                             TABLE                            3\nPM                             TYPE                             3\nSH                             DIMENSION                        5\nSH                             INDEX                           23\nSH                             INDEX PARTITION                196\nSH                             MATERIALIZED VIEW                2\nSH                             TABLE                           13\nSH                             TABLE PARTITION                 56\nSH                             VIEW                             1\n<\/pre>\n<p>Having the sample schemas available we are almost ready to start the migration to PPAS 9.4. We&#8217;ll use the <a href=\"http:\/\/www.enterprisedb.com\/products-services-training\/products-overview\/postgres-plus-solution-pack\/migration-toolkit\" target=\"_blank\">EDB migration toolkit<\/a> for this as it automates many tasks. The toolkit itself is documented <a href=\"http:\/\/www.enterprisedb.com\/docs\/en\/9.4\/migrate\/toc.html\" target=\"_blank\">here<\/a>. If you do not want to read documentation here is the short version \ud83d\ude42 <\/p>\n<p>As the migration toolkit uses jdbc to connect to the Oracle database we&#8217;ll need to download the <a href=\"http:\/\/www.oracle.com\/technetwork\/database\/features\/jdbc\/index-091264.html\" target=\"_blank\">Oracle jdbc drivers<\/a>. I used the latest one, which is 12.1.0.2 (ojdbc7.jar) at the time of writing. This jar file needs to be copied to the following location:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nenterprisedb@centos7:\/home\/enterprisedb\/ [dummy] ls -la \/etc\/alternatives\/jre\/lib\/ext\/\ntotal 11424\ndrwxr-xr-x. 2 root root    4096 Nov 25 14:46 .\ndrwxr-xr-x. 9 root root    4096 Nov 25 13:01 ..\n-rw-r--r--. 1 root root 4003647 Oct 21 22:19 cldrdata.jar\n-rw-r--r--. 1 root root    9444 Oct 21 22:19 dnsns.jar\n-rw-r--r--. 1 root root   48732 Oct 21 22:19 jaccess.jar\n-rw-r--r--. 1 root root 1204407 Oct 21 22:19 localedata.jar\n-rw-r--r--. 1 root root     617 Oct 21 22:19 meta-index\n-rw-r--r--. 1 root root 2023751 Oct 21 22:19 nashorn.jar\n-rw-r--r--. 1 root root 3698857 Nov 25 14:46 ojdbc7.jar  &lt;=================\n-rw-r--r--. 1 root root   30448 Oct 21 22:19 sunec.jar\n-rw-r--r--. 1 root root  294143 Oct 21 22:19 sunjce_provider.jar\n-rw-r--r--. 1 root root  266680 Oct 21 22:19 sunpkcs11.jar\n-rw-r--r--. 1 root root   77887 Oct 21 22:19 zipfs.jar\nenterprisedb@centos7:\/home\/enterprisedb\/ [dummy] \n<\/pre>\n<p>The connection parameters to the source and the target have to be specified in the toolkit.properties file which is located in the edbmtk\/etc directory of the ppas installation:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\ncat \/u01\/app\/postgres\/product\/9.4\/ppas_1_3\/edbmtk\/etc\/toolkit.properties\nSRC_DB_URL=jdbc:oracle:thin:@192.168.22.242:1521:PROD\nSRC_DB_USER=system\nSRC_DB_PASSWORD=manager\nTARGET_DB_URL=jdbc:edb:\/\/localhost:5444\/orasample\nTARGET_DB_USER=enterprisedb\nTARGET_DB_PASSWORD=manager\n<\/pre>\n<p>I want the Oracle sample schemas in my own database in PPAS so I created the ORASAMPLE database:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5444) [postgres] &gt; create database orasample;\nCREATE DATABASE\nTime: 624.415 ms\n<\/pre>\n<p>Ready for migrating the first schema?<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nenterprisedb@centos7:\/u01\/app\/postgres\/product\/9.4\/ppas_1_3\/edbmtk\/bin\/ [CRM] pwd\n\/u01\/app\/postgres\/product\/9.4\/ppas_1_3\/edbmtk\/bin\nenterprisedb@centos7:\/u01\/app\/postgres\/product\/9.4\/ppas_1_3\/edbmtk\/bin\/ [CRM] .\/runMTK.sh -fastCopy -logBadSQL -fetchSize 10000 -loaderCount 1 -dropSchema true HR\n<\/pre>\n<p>The result:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nRunning EnterpriseDB Migration Toolkit (Build 48.0.1) ...\nSource database connectivity info...\nconn =jdbc:oracle:thin:@192.168.22.242:1521:PROD\nuser =system\npassword=******\nTarget database connectivity info...\nconn =jdbc:edb:\/\/localhost:5444\/orasample\nuser =enterprisedb\npassword=******\nConnecting with source Oracle database server...\nConnected to Oracle, version 'Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production\nWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing options'\nConnecting with target EnterpriseDB database server...\nConnected to EnterpriseDB, version '9.4.1.3'\nImporting redwood schema HR...\nCreating Schema...hr \nCreating Sequence: DEPARTMENTS_SEQ\nCreating Sequence: EMPLOYEES_SEQ\nCreating Sequence: LOCATIONS_SEQ\nLoading Table Data in 8 MB batches...\nCreating Table: COUNTRIES\nLoading Table: COUNTRIES ...\n[COUNTRIES] Migrated 25 rows.\n[COUNTRIES] Table Data Load Summary: Total Time(s): 0.075 Total Rows: 25\nCreating Table: DEPARTMENTS\nLoading Table: DEPARTMENTS ...\n[DEPARTMENTS] Migrated 27 rows.\n[DEPARTMENTS] Table Data Load Summary: Total Time(s): 0.038 Total Rows: 27\nCreating Table: EMPLOYEES\nLoading Table: EMPLOYEES ...\n[EMPLOYEES] Migrated 107 rows.\n[EMPLOYEES] Table Data Load Summary: Total Time(s): 0.09 Total Rows: 107 Total Size(MB): 0.0087890625\nCreating Table: JOBS\nLoading Table: JOBS ...\n[JOBS] Migrated 19 rows.\n[JOBS] Table Data Load Summary: Total Time(s): 0.011 Total Rows: 19\nCreating Table: JOB_HISTORY\nLoading Table: JOB_HISTORY ...\n[JOB_HISTORY] Migrated 10 rows.\n[JOB_HISTORY] Table Data Load Summary: Total Time(s): 0.026 Total Rows: 10\nCreating Table: LOCATIONS\nLoading Table: LOCATIONS ...\n[LOCATIONS] Migrated 23 rows.\n[LOCATIONS] Table Data Load Summary: Total Time(s): 0.03 Total Rows: 23 Total Size(MB): 9.765625E-4\nCreating Table: REGIONS\nLoading Table: REGIONS ...\n[REGIONS] Migrated 4 rows.\n[REGIONS] Table Data Load Summary: Total Time(s): 0.025 Total Rows: 4\nData Load Summary: Total Time (sec): 0.489 Total Rows: 215 Total Size(MB): 0.01\nCreating Constraint: JHIST_EMP_ID_ST_DATE_PK\nCreating Constraint: EMP_EMP_ID_PK\nCreating Constraint: EMP_EMAIL_UK\nCreating Constraint: JOB_ID_PK\nCreating Constraint: DEPT_ID_PK\nCreating Constraint: LOC_ID_PK\nCreating Constraint: COUNTRY_C_ID_PK\nCreating Constraint: REG_ID_PK\nCreating Constraint: JHIST_DEPT_FK\nCreating Constraint: JHIST_EMP_FK\nCreating Constraint: JHIST_JOB_FK\nCreating Constraint: DEPT_MGR_FK\nCreating Constraint: EMP_MANAGER_FK\nCreating Constraint: EMP_JOB_FK\nCreating Constraint: EMP_DEPT_FK\nCreating Constraint: DEPT_LOC_FK\nCreating Constraint: LOC_C_ID_FK\nCreating Constraint: COUNTR_REG_FK\nCreating Constraint: JHIST_DATE_INTERVAL\nCreating Constraint: EMP_SALARY_MIN\nCreating Index: LOC_COUNTRY_IX\nCreating Index: LOC_STATE_PROVINCE_IX\nCreating Index: LOC_CITY_IX\nCreating Index: JHIST_DEPARTMENT_IX\nCreating Index: JHIST_EMPLOYEE_IX\nCreating Index: JHIST_JOB_IX\nCreating Index: DEPT_LOCATION_IX\nCreating Index: EMP_NAME_IX\nCreating Index: EMP_MANAGER_IX\nCreating Index: EMP_JOB_IX\nCreating Index: EMP_DEPARTMENT_IX\nCreating Trigger: SECURE_EMPLOYEES\nCreating Trigger: UPDATE_JOB_HISTORY\nCreating View: EMP_DETAILS_VIEW\nCreating Procedure: ADD_JOB_HISTORY\nCreating Procedure: SECURE_DML\n\nSchema HR imported successfully.\n\nCreating User: HR\n\nMigration process completed successfully.\n\nMigration logs have been saved to \/home\/enterprisedb\/.enterprisedb\/migration-toolkit\/logs\n\n******************** Migration Summary ********************\nSequences: 3 out of 3\nTables: 7 out of 7\nConstraints: 20 out of 20\nIndexes: 11 out of 11\nTriggers: 2 out of 2\nViews: 1 out of 1\nProcedures: 2 out of 2\nUsers: 1 out of 1\n\nTotal objects: 47\nSuccessful count: 47\nFailed count: 0\nInvalid count: 0\n\n*************************************************************\n<\/pre>\n<p>That was quite easy, wasn&#8217;t it? Non of the objects failed to migrate. Lets validate this inside PPAS. I installed PPAS in Oracle compatibility mode and therefore have the dba_* views available:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5444) [postgres] &gt; \\c orasample\nYou are now connected to database \"orasample\" as user \"enterprisedb\".\n(enterprisedb@[local]:5444) [orasample] &gt; select object_type,count(*) \n                                            from dba_objects \n                                           where schema_name = 'HR' and status = 'VALID';\n object_type | count \n-------------+-------\n TRIGGER     |     2\n SEQUENCE    |     3\n VIEW        |     1\n PROCEDURE   |     2\n TABLE       |     7\n INDEX       |    19\n(6 rows)\n<\/pre>\n<p>Exactly the same amount of objects as in Oracle, even the PL\/SQL procedures are there. You don&#8217;t believe it? :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5444) [orasample] &gt; select text from dba_source where schema_name = 'HR';\n                                                                                                  text                                                                                                   \n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n CREATE OR REPLACE PROCEDURE hr.add_job_history(p_emp_id numeric, p_start_date timestamp without time zone, p_end_date timestamp without time zone, p_job_id character varying, p_department_id numeric)\n  AUTHID DEFINER IS\n BEGIN\n   INSERT INTO job_history (employee_id, start_date, end_date,\n                            job_id, department_id)\n     VALUES(p_emp_id, p_start_date, p_end_date, p_job_id, p_department_id);\n END\n...\n<\/pre>\n<p>Ok, the HR schema is a simple one. Lets continue with the next one, SH:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nenterprisedb@centos7:\/u01\/app\/postgres\/product\/9.4\/ppas_1_3\/edbmtk\/bin\/ [CRM] pwd\n\/u01\/app\/postgres\/product\/9.4\/ppas_1_3\/edbmtk\/bin\nenterprisedb@centos7:\/u01\/app\/postgres\/product\/9.4\/ppas_1_3\/edbmtk\/bin\/ [CRM] .\/runMTK.sh -fastCopy -logBadSQL -fetchSize 10000 -loaderCount 1 -dropSchema true SH\n<\/pre>\n<p>The result:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\n******************** Migration Summary ********************\nTables: 11 out of 11\nConstraints: 14 out of 14\nIndexes: 13 out of 13\nViews: 1 out of 3\n\nTotal objects: 41\nSuccessful count: 39\nFailed count: 2\nInvalid count: 0\n\nList of failed objects\n======================\nViews\n--------------------\n1. SH.FWEEK_PSCAT_SALES_MV\n2. SH.CAL_MONTH_SALES_MV\n<\/pre>\n<p>Not bad, but two views are invalid. Why? As specified the &#8220;-logBadSQL&#8221; switch there is a separate logfile containing all the sql statements which failed:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nenterprisedb@centos7:\/home\/enterprisedb\/.enterprisedb\/migration-toolkit\/logs\/ [CRM] pwd\n\/home\/enterprisedb\/.enterprisedb\/migration-toolkit\/logs\nenterprisedb@centos7:\/home\/enterprisedb\/.enterprisedb\/migration-toolkit\/logs\/ [CRM] ls -latr | grep SH\n-rw-r--r--. 1 enterprisedb enterprisedb    1286 Nov 28 15:30 mtk_bad_sql_SH_20151128032916.sql\n-rw-r--r--. 1 enterprisedb enterprisedb    8097 Nov 28 15:30 mtk_SH_20151128032916.log\n<\/pre>\n<p>This file contains exactly the statements for the two views that failed to create:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n-- MTK-15009: Error Creating Materialized View: FWEEK_PSCAT_SALES_MV\n-- DB-42601: ERROR: syntax error at or near \"PREBUILT\" at position 53\n-- Line 1: CREATE MATERIALIZED VIEW FWEEK_PSCAT_SALES_MV BUILD PREBUILT\n--                                                             ^\n\nCREATE MATERIALIZED VIEW FWEEK_PSCAT_SALES_MV BUILD PREBUILT\n REFRESH FORCE\n ON DEMAND\n AS \nSELECT   t.week_ending_day\n  ,        p.prod_subcategory\n  ,        sum(s.amount_sold) AS dollars\n  ,        s.channel_id\n  ,        s.promo_id\n  FROM     sales s\n  ,        times t\n  ,        products p\n  WHERE    s.time_id = t.time_id\n  AND      s.prod_id = p.prod_id\n  GROUP BY t.week_ending_day\n  ,        p.prod_subcategory\n  ,        s.channel_id\n  ,        s.promo_id;\n\n-- MTK-15009: Error Creating Materialized View: CAL_MONTH_SALES_MV\n-- DB-42601: ERROR: syntax error at or near \"PREBUILT\" at position 51\n-- Line 1: CREATE MATERIALIZED VIEW CAL_MONTH_SALES_MV BUILD PREBUILT\n--                                                           ^\n\nCREATE MATERIALIZED VIEW CAL_MONTH_SALES_MV BUILD PREBUILT\n REFRESH FORCE\n ON DEMAND\n AS \nSELECT   t.calendar_month_desc\n  ,        sum(s.amount_sold) AS dollars\n  FROM     sales s\n  ,        times t\n  WHERE    s.time_id = t.time_id\n  GROUP BY t.calendar_month_desc;\n<\/pre>\n<p>If we take a look at the syntax for create materialized view it becomes clear why this happened:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5444) [postgres] &gt; \\h CREATE MATERIALIZED VIEW \nCommand:     CREATE MATERIALIZED VIEW\nDescription: define a new materialized view\nSyntax:\nCREATE MATERIALIZED VIEW table_name\n    [ (column_name [, ...] ) ]\n    [ WITH ( storage_parameter [= value] [, ... ] ) ]\n    [ TABLESPACE tablespace_name ]\n    AS query\n    [ WITH [ NO ] DATA ]\n<\/pre>\n<p>There syntax is just wrong. Maybe this is a bug in the migration toolkit as it seems the statements are not mapped from Oracle to PPAS syntax. It is easy to fix:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5444) [orasample] &gt; CREATE MATERIALIZED VIEW sh.FWEEK_PSCAT_SALES_MV\nAS SELECT   t.week_ending_day\n  ,        p.prod_subcategory\n  ,        sum(s.amount_sold) AS dollars\n  ,        s.channel_id\n  ,        s.promo_id\n  FROM     sh.sales s\n  ,        sh.times t\n  ,        sh.products p\n  WHERE    s.time_id = t.time_id\n  AND      s.prod_id = p.prod_id\n  GROUP BY t.week_ending_day\n  ,        p.prod_subcategory\n  ,        s.channel_id\n  ,        s.promo_id;\nSELECT 11266\nTime: 8193.370 ms\n(enterprisedb@[local]:5444) [orasample] &gt; CREATE MATERIALIZED VIEW sh.CAL_MONTH_SALES_MV\nAS SELECT   t.calendar_month_desc\n  ,        sum(s.amount_sold) AS dollars\n  FROM     sh.sales s\n  ,        sh.times t\n  WHERE    s.time_id = t.time_id\n  GROUP BY t.calendar_month_desc;\nSELECT 48\nTime: 396.849 ms\n<\/pre>\n<p>Comparing the amount of objects again we should be fine:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5444) [postgres] &gt; \\c orasample\nYou are now connected to database \"orasample\" as user \"enterprisedb\".\n(enterprisedb@[local]:5444) [orasample] &gt; select object_type,count(*) \n                                            from dba_objects \n                                           where schema_name = 'SH' and status = 'VALID'\n                                           group by object_type;\n object_type | count \n-------------+-------\n TRIGGER     |    60\n VIEW        |     1\n TABLE       |    67\n INDEX       |    19\n(4 rows)\n<\/pre>\n<p>Uh, totally different numbers. Table partitions are counted as tables here and each partition gets a trigger created (that is how partitions are implemented in PostgreSQL). There is no concept of partitioned indexes in PostgreSQL but we can create indexes on the partitions. I am not sure what happened to the dimension as I am not familiar with this on the oracle side (I&#8217;ll see that I can check this in more detail soon). At least nothing about that is reported in the log file. You can see, comparing the amount of objects is not longer sufficient for being able to tell if everything was migrated. Special Oracle features need special considerations and can not be migrated automatically. Not everything can be migrated easily or without adjusting the application but the migration toolkit automates a lot of work and can give a picture of what is possible and what not.<\/p>\n<p>The next schemas will be a topic for another post. Hope this helped.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post takes a look on how to migrate the Oracle 12cR1 sample schemas to PPAS 9.4 (PostgreSQL Plus Advanced Server 9.4). I&#8217;ll not dig into how to install PPAS as this was described in detail some time ago. Just follow this post if you need a setup guide. If you wonder why I am [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":6390,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[280,713,15,209,77],"type_dbi":[],"class_list":["post-6383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-database","tag-enterprisedb","tag-migration","tag-oracle-12c","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 the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4 - 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-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4\" \/>\n<meta property=\"og:description\" content=\"This post takes a look on how to migrate the Oracle 12cR1 sample schemas to PPAS 9.4 (PostgreSQL Plus Advanced Server 9.4). I&#8217;ll not dig into how to install PPAS as this was described in detail some time ago. Just follow this post if you need a setup guide. If you wonder why I am [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-29T11:55:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/edb_logo_larger.png\" \/>\n\t<meta property=\"og:image:width\" content=\"101\" \/>\n\t<meta property=\"og:image:height\" content=\"57\" \/>\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=\"13 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-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4\",\"datePublished\":\"2015-11-29T11:55:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/\"},\"wordCount\":709,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/edb_logo_larger.png\",\"keywords\":[\"database\",\"enterprisedb\",\"Migration\",\"Oracle 12c\",\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/\",\"name\":\"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4 - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/edb_logo_larger.png\",\"datePublished\":\"2015-11-29T11:55:47+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/edb_logo_larger.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/edb_logo_larger.png\",\"width\":101,\"height\":57},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4\"}]},{\"@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 the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4 - 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-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/","og_locale":"en_US","og_type":"article","og_title":"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4","og_description":"This post takes a look on how to migrate the Oracle 12cR1 sample schemas to PPAS 9.4 (PostgreSQL Plus Advanced Server 9.4). I&#8217;ll not dig into how to install PPAS as this was described in detail some time ago. Just follow this post if you need a setup guide. If you wonder why I am [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/","og_site_name":"dbi Blog","article_published_time":"2015-11-29T11:55:47+00:00","og_image":[{"width":101,"height":57,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/edb_logo_larger.png","type":"image\/png"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4","datePublished":"2015-11-29T11:55:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/"},"wordCount":709,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/edb_logo_larger.png","keywords":["database","enterprisedb","Migration","Oracle 12c","PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/","url":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/","name":"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4 - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/edb_logo_larger.png","datePublished":"2015-11-29T11:55:47+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/edb_logo_larger.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/edb_logo_larger.png","width":101,"height":57},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-the-oracle-12cr1-sample-schemas-to-postgresql-plus-advanced-server-9-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrating the Oracle 12cR1 sample schemas to PostgreSQL Plus Advanced Server 9.4"}]},{"@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\/6383","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=6383"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/6383\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/6390"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=6383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=6383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=6383"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=6383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}