Advanced Server offers complete support for some Oracle features and partial support for others. Migration Toolkit cannot migrate any object that uses an unsupported feature.
In some cases, Migration Toolkit can migrate objects that use features that offer partial compatibility. In other cases, Advanced Server supports suitable workarounds.
Full-text search is an example of functionality that is not fully compatible with Oracle. The Advanced Server database has included support for full-text search for quite some time, but the implementation is quite different than Oracle’s; Migration Toolkit is unable to migrate objects that utilize this feature.
There are also features that Advanced Server does not yet support. Features in this category include Automated Storage Management, table compression, and external tables. You can often orchestrate a successful workaround:
Automated Storage Management can be replaced with (system specific) volume management software.
Table compression can be implemented by storing data in a tablespace that resides on a compressed filesystem.
External tables don’t exist in Advanced Server, but you can load flat text files into staging tables in the database. We recommend using the EDB*Loader utility to load the data into an Advanced Server database quickly.
When migrating multiple profiles from an Oracle database into Advanced server, you must manually assign the profile to a user (or users) when the migration completes.
Unsupported Postgres Features¶
Migration Toolkit does not support migration of the following Postgres features:
For information about
OPERATOR CLASS and
OPERATOR FAMILY, see the
PostgreSQL core documentation available at:
Frequently Asked Questions¶
Does Migration Toolkit support the migration of packages?
Migration Toolkit supports the migration of packages from an Oracle database into Advanced Server. See the Functionality Overview Section for information about the migration support offered by Advanced Server.
Is there a way to transfer only the data from the source database?
Yes. Data transfer is supported as part of an online or offline migration.
Does Migration Toolkit support migration of tables that contain data of the CLOB data type?
Migration Toolkit does support migration of tables containing data of
Does Advanced Server support the enum data type?
Advanced Server does not currently support the enum data type, but will support them in future releases. Until then, you can use a check constraint to restrict the data added to an Advanced Server database. A check constraint defines a list of valid values that a column may take.
The following code sample includes a simple example of a check
constraint that restricts the value of a column to one of three dept
CREATE TABLE emp ( emp_id INT NOT NULL PRIMARY KEY, dept VARCHAR(255) NOT NULL, CHECK (dept IN ('sales', 'admin', 'technical')) );
If we test the check constraint by entering a valid dept type, the INSERT statement works without error:
test=# INSERT INTO emp VALUES (7324, 'sales');
INSERT 0 1
If we try to insert a value not included in the constraint (support), Advanced Server throws an error:
test=# INSERT INTO emp VALUES (7325, 'support');
ERROR: new row for relation "emp" violates check constraint "emp_dept_check"
Does Advanced Server support materialized views?
Postgres does not support materialized views compatible with Oracle databases. To setup a materialized view/summary table in Postgres you must manually create the triggers that maintain the summary table. Automatic query rewrite is not currently supported; the application must be made aware of the summary table’s existence.
When I try to migrate from a MySQL database that includes a TIME data type, I get the following error: Error Loading Data into Table: Bad format for Time. Does Postgres support MySQL ``TIME`` data types?
Postgres will have no problem storing
TIME data types as long as the
value of the hour component is not greater than 24.
Unlike Postgres, the MySQL
TIME data type will allow you to store a
value that represents either a
TIME or an
INTERVAL value. A value stored
in a MySQL
TIME column that represents an
INTERVAL value could
potentially be out of the accepted range of a valid Postgres
value. If, during the migration process, Postgres encounters a value
stored in a
TIME data column that it perceives as out of range, it will
return an error.