Conversion workspaces aggregate all conversion issues into groups and categories to help you plan for fixing conversion errors and warnings. Each category represents the type of work you might need to perform to fix the issues (review, refactor, adjust data types). Groups provide further aggregation, as they differentiate between specific cases at a lower level:


The following table lists all conversion issue groups you can encounter during schema conversion:
Issue group ID | Description | ||
---|---|---|---|
Input issues (
|
|||
CW_OP0101 |
Invalid source code |
||
Potential root cause
Errors in this group often occur when Database Migration Service encounters
unknown syntax, or when the Oracle source code isn't valid
(for example, a stored procedure is missing the |
|||
Possible mitigation
Correct the invalid objects in the source Oracle database. Then, refresh the source schema snapshot in Database Migration Service and re-try the schema conversion process. Alternatively, you can exclude the object from the migration. |
|||
CW_OP0102 |
Missing referenced objects |
||
Potential root cause Database Migration Service uses metadata of objects in the source tree to improve the code conversion quality of dependent objects. If your code refers to objects that aren't included in the source schema, you might experience conversion issues because Database Migration Service can't determine the structure or data types for the missing referenced columns, attributes, or objects. Possible errors in this group include incorrect data types for
user-defined types (UDTs) or default |
|||
Possible mitigation
Either ensure that all referenced objects are added to the Database Migration Service source tree, or manually adjust the PostgreSQL code based on your knowledge of the source data model for the missing dependencies. |
|||
CW_OP0103 |
Tables without primary key |
||
Potential root cause Database Migration Service requires all tables to have a primary key. For tables
without primary keys, Database Migration Service adds a |
|||
Possible mitigation
You can either retain or remove the |
|||
Source functionality not yet supported (
|
|||
CW_OP0200 |
Unsupported Oracle built-in functionality |
||
Potential root cause You might be using built-in Oracle functionality that isn't supported. |
|||
Possible mitigation
Find similar functionality in PostgreSQL and modify the converted code accordingly. In some cases, the missing functionality might be provided by the Orafce extension, available for both Cloud SQL for PostgreSQL and AlloyDB for PostgreSQL migrations. |
|||
CW_OP0201 |
|
||
Potential root cause The Oracle |
|||
Possible mitigation
If your source code doesn't rely on If your source code relies on |
|||
CW_OP0203 |
Oracle SQL function not yet supported |
||
Potential root cause Some Oracle built-in functions are unsupported by Database Migration Service for conversion.
Certain functions might have their equivalents in PostgreSQL
(for example, |
|||
Possible mitigation
Inspect which Oracle function raised the error.
|
|||
CW_OP0204 |
Oracle built-in packages not fully supported |
||
Potential root cause Database Migration Service supports certain Oracle built-in packages, but many
don't have full conversion support, for example
|
|||
Possible mitigation
If you use any unsupported packages, you might need to:
|
|||
CW_OP0205 |
Oracle data type not yet supported for conversion |
||
Potential root cause Some Oracle data types aren't currently supported for conversion or data movement. |
|||
Possible mitigation
In most cases, PostgreSQL has an equivalent data type. You can use conversion mapping files to customize conversion logic and transform the unsupported Oracle data type to the required PostgreSQL data type. For more information on data type support, see Conversion workspaces - overview and supported objects. |
|||
Source feature not yet supported (
|
|||
CW_OP0300 |
Source feature not yet supported |
||
Potential root cause
This group captures all generic issues that relate to Oracle features that aren't supported for conversion. Issues in this group don't fall under any other, more specific, issue groups. |
|||
Possible mitigation
|
|||
CW_OP0301 |
Schema object type not supported |
||
Potential root cause Database Migration Service doesn't support certain Oracle schema object types for code conversion because PostgreSQL doesn't have appropriate equivalents. Examples include Index-Organized Tables (IOTs), text search indexes, or bodies for user-defined types (UDTs). |
|||
Possible mitigation
Database Migration Service converts unsupported objects into the closest PostgreSQL equivalent. For example, IOTs become regular tables with a primary key constraint, text search indexes convert into B-tree indexes. Keep in mind that these conversions might lead to loss of functionality specific to the original object type. |
|||
CW_OP0302 |
PL/SQL feature not yet supported |
||
Potential root cause
This group captures all generic issues that relate to PL/SQL features that aren't supported for conversion. Issues in this group don't fall under any other, more specific, issue groups. |
|||
Possible mitigation
|
|||
CW_OP0303 |
Bulk binding not yet supported |
||
Potential root cause
Database Migration Service code conversion doesn't currently support Oracle
bulk binding features such as |
|||
Possible mitigation
To fix the issue, you need to modify the code that uses bulk binding features. You might want to consider the differences in PostgreSQL and Oracle architecture and whether array processing is necessary in PostgreSQL for your use case. There are several strategies for approaching Oracle bulk binding operations in PostgreSQL. Their usage depends on your specific scenario, so we recommend that you use Gemini-powered conversion assistance to handle your specific needs. Here are some other example recommendations to help get you started:
|
|||
CW_OP0304 |
Collections not yet supported |
||
Potential root cause Database Migration Service code conversion has partial support for Oracle collections. |
|||
Possible mitigation
You need to modify the converted PostgreSQL code accordingly. When resolving issues with collections, remember that PostgreSQL arrays are never sparse. If you assign elements sparsely, PostgreSQL arrays might return different results and cardinality counts than Oracle arrays.
Because PostgreSQL doesn't support string-indexed arrays, depending
on the nature of the data, you might find |
|||
CW_OP0305 |
Pipelined functions not yet supported |
||
Potential root cause Pipelined functions are not supported by Database Migration Service. |
|||
Possible mitigation
You can replace Oracle pipelined functions with PostgreSQL set returning functions. We recommend that you adjust the code in a way that is relevant to your use-case. Here are some examples to help get you started:
The source pipelined function's collection type, used in the Oracle
function's |
|||
CW_OP0306 |
Dynamic SQL option not yet supported |
||
Potential root cause
Database Migration Service provides partial support for converting dynamic SQL.
Oracle |
|||
Possible mitigation
You need to modify the converted code to match your requirements. We highly recommend that you use Gemini-powered conversion assistance to handle dynamic SQL. |
|||
CW_OP0307 |
|
||
Potential root cause Most |
|||
Possible mitigation
It's not possible to replicate the Review the reported issues with |
|||
CW_OP0308 |
JSON not yet supported |
||
Potential root cause There are certain limitations in how Database Migration Service supports
|
|||
Possible mitigation
|
|||
CW_OP0309 |
Locking and transactions issues |
||
Potential root cause Database Migration Service code conversion doesn't support |
|||
Possible mitigation
|
|||
CW_OP0310 |
XML not yet supported |
||
Potential root cause
Database Migration Service doesn't support Oracle |
|||
Possible mitigation
Although Database Migration Service doesn't directly support
To migrate your XML data, follow these steps:
For more information on how PostgreSQL works with
|
|||
CW_OP0312 |
|
||
Potential root cause Database Migration Service doesn't support the |
|||
Possible mitigation
You can achieve
You can create
|
|||
CW_OP0313 |
|
||
Potential root cause Database Migration Service doesn't |
|||
Possible mitigation
Replace the Oracle |
|||
CW_OP0314 |
SQL feature not yet supported |
||
Potential root cause
This group captures all generic issues that relate to SQL features
that aren't supported for conversion. Issues in this group
don't fall under any other, more specific, issue groups. Examples include
database event triggers, |
|||
Possible mitigation
|
|||
Unsupported syntax (
|
|||
CW_OP0400 |
Unsupported syntax |
||
Potential root cause
This group captures all generic issues that relate to unsupported Oracle SQL or PL/SQL syntax. Issues in this group don't fall under any other, more specific, issue groups. |
|||
Possible mitigation
Change your code to use PostgreSQL functionally-equivalent PostgreSQL syntax. We recommend that you explore Gemini-powered auto-conversion features to adjust the code. For more information, see Convert Oracle code and schema with Gemini assistance. |
|||
CW_OP0401 |
Unsupported SQL syntax | ||
Potential root cause Your source code uses SQL syntax or elements that are unsupported by
Database Migration Service. For example, the |
|||
Possible mitigation
|
|||
CW_OP0402 |
Unsupported PL/SQL syntax | ||
Potential root cause Your source code uses PL/SQL syntax or elements that are unsupported by
Database Migration Service. For example, record-based |
|||
Possible mitigation
Change your code to use PostgreSQL functionally-equivalent PostgreSQL syntax. We recommend that you explore Gemini-powered auto-conversion features to adjust the code. For more information, see Convert Oracle code and schema with Gemini assistance. |
|||
CW_OP0403 |
Unsupported date and timestamp syntax |
||
Potential root cause
Database Migration Service might raise errors or warnings for unsupported date or timestamp syntax,
operations, or expressions. Examples of these issues include
comparisons between mismatched data types or the use of |
|||
Possible mitigation
You can re-create most date and timestamp expressions using PostgreSQL equivalents. We recommend that you explore Gemini-powered auto-conversion features for expediting such fixes. For more information, see Convert Oracle code and schema with Gemini assistance. |
|||
CW_OP0404 |
Unsupported elements of Oracle's exception handling syntax |
||
Potential root cause Database Migration Service code conversion doesn't support the following Oracle
|
|||
Possible mitigation
You must manually resolve these issues in the converted code. We recommend that you explore Gemini-powered auto-conversion features for expediting such fixes. For more information, see Convert Oracle code and schema with Gemini assistance. |
|||
Data types and conversion (
|
|||
CW_OP0500 |
Data types and conversion issues |
||
Potential root cause Database Migration Service can group conversion issues based on
the context (for example,
conversion issues that occur in type comparison expressions).
The |
|||
Possible mitigation
In most cases, Database Migration Service emits an
|
|||
CW_OP0501 |
Date format mask issues |
||
Potential root cause
You might encounter warnings or issues when converting date or timestamp
expressions to or from strings based on a format model. Database Migration Service
uses a default model (currently
This can sometimes cause issues in the converted code if the format model
emitted for the implicit cast conflicts with an explicit format model in
the same expression. You might also see this issue if your
data is likely to be affected by the differences between
Oracle |
|||
Possible mitigation
Review and validate the converted PostgreSQL expressions in the conversion workspace. |
|||
CW_OP0502 |
Numeric format mask issues |
||
Potential root cause Database Migration Service doesn't support all
Oracle format models.
For example |
|||
Possible mitigation
For Oracle format models that have no equivalent in PostgreSQL, you might need to refactor your expressions or format models. We recommend that you explore Gemini-powered auto-conversion features for expediting such fixes. For more information, see Convert Oracle code and schema with Gemini assistance. |
|||
CW_OP0503 |
Data type casting issues |
||
Potential root cause You might encounter errors due to unsupported or inaccurate data type
casting. Database Migration Service usually emits |
|||
Possible mitigation
Adjust the PostgreSQL code to ensure correct data type conversions. These corrections require that you are familiar with your referenced attributes, variables, and columns. |
|||
CW_OP0504 |
Comparison issues |
||
Potential root cause
Database Migration Service might not have enough metadata or information about data
types when converting data comparison expressions. For example, this can
happen when a user-defined type (UDT) is compared with |
|||
Possible mitigation
Review the converted PostgreSQL expressions and resolve the issues. We recommend that you explore Gemini-powered auto-conversion features for expediting such fixes. For more information, see Convert Oracle code and schema with Gemini assistance. |
|||
Potential functional nuances (
|
|||
Issues in this category represent cases where Oracle source code is correctly converted to the closest PostgreSQL equivalent, but the resulting code might have minor semantic or functional differences that require your review. This happens because of the differences in how Oracle and PostgreSQL handle data types, formats, or objects. At first glance, this category might appear to overlap with issues in the
Data types and conversion ( |
|||
CW_OP0601 |
Review date format mask |
||
Potential root cause
Most
Oracle date and timestamp format models
have appropriate equivalents in PostgreSQL, so the converted code
has no semantic or functional differences.
Some models don't have an exact match, and their behavior varies.
One example is the
Oracle |
|||
Possible mitigation
Review and validate expressions with format model conversions to make sure that the converted code behaves as expected. |
|||
CW_OP0602 |
Review numeric format mask |
||
Potential root cause Most source numeric format models have an equivalent in PostgreSQL, and the converted code therefore has no semantic or functional differences. However, some format models might have no exact match or behave slightly differently. |
|||
Possible mitigation
Review and validate expressions with format model conversions to make sure that the converted code works as expected. |
|||
CW_OP0603 |
Review exception code |
||
Potential root cause When you use
|
|||
Possible mitigation
Review this behavior to determine whether it's suitable for your needs. This review is necessary only if the source error codes are meaningful to your application, support teams, or documentation. If the error code value itself isn't meaningful, you can ignore this warning. |
|||
CW_OP0604 |
Review exception message |
||
Potential root cause
The |
|||
Possible mitigation
If your application, support infrastructure, or documentation depends on the error text, review the conversion. Otherwise, you can ignore this difference. |
|||
CW_OP0605 |
Review Oracle built-in function emulation |
||
Potential root cause Database Migration Service code and schema conversion aims to provide Oracle function behavior with PostgreSQL equivalents, but the results might not always be satisfactory for your scenario. As such, conversion workspaces always provide advisory warning with function conversions that might require your review. |
|||
Possible mitigation
We recommend you review objects where conversion workspaces emit warnings
in the |
|||
CW_OP0606 |
Review foreign key column data type |
||
Potential root cause Database Migration Service identified mismatched data type specifications in
between parent and child objects (for example, when a parent column
is |
|||
Possible mitigation
Most of the time, slight data type mismatches don't cause problems in database functionality. However, we recommend that you review the converted data model for inconsistencies. |
|||
Functional review recommended (
|
|||
CW_OP0701 |
Functional review recommended | ||
Potential root cause
This group captures all generic issues that relate to potential functional differences in Oracle and PostgreSQL code. Issues in this group don't fall under any other, more specific, issue groups. |
|||
Possible mitigation
|
|||
CW_OP0702 |
Review Oracle built-in function emulation |
||
Potential root cause Many Oracle built-in functions don't have a direct equivalent in PostgreSQL. To help mitigate that problem for migrations, Database Migration Service converts your code by using different SQL expressions to produce equivalent functional behavior in PostgreSQL. In some cases, the converted expressions might be complex.
Database Migration Service emits warnings in the |
|||
Possible mitigation
Review the converted code to make sure that the converted functions behave as expected in your PostgreSQL environment. |
|||
Refactoring required (
|
|||
CW_OP0801 |
Autonomous transactions refactoring required |
||
Potential root cause PostgreSQL doesn't support autonomous transactions. |
|||
Possible mitigation
You can achieve autonomous transactions in PostgreSQL by using the
|
|||
CW_OP0802 |
Database links refactoring required |
||
Potential root cause Database Migration Service doesn't support Oracle database links. Objects that use links require refactoring. |
|||
Possible mitigation
Depending on the target of your database link, you can implement equivalent
functionality in PostgreSQL with database extensions, such as
|
|||
CW_OP0803 |
Advanced queuing refactoring required |
||
Potential root cause Oracle Advanced Queuing packages ( |
|||
Possible mitigation
Consider the following options:
|
|||
CW_OP0804 |
Database email refactoring required |
||
Potential root cause AlloyDB for PostgreSQL doesn't support sending emails directly from
the database. Extensions that enable this functionality are also unsupported.
As such, Database Migration Service doesn't convert uses of the
|
|||
Possible mitigation
Refactor your database email code, and move the responsibility for sending emails to the application tier. You can still use the database to capture the conditions under which sending out email is required. An example implementation could be to write email details to a dedicated table. This table can also act as an email queue that you poll with a Cloud Run functions function and handle the actual SMTP processing. |
|||
CW_OP0805 |
Jobs and scheduling refactoring required |
||
Potential root cause
The
|
|||
Possible mitigation
For simple jobs without dependencies, you can manually create scheduled
jobs in the target PostgreSQL database with the
For more complicated schedules that |
|||
CW_OP0806 |
File I/O refactoring required |
||
Potential root cause Database Migration Service doesn't support the Oracle
The Orafce extension includes |
|||
Possible mitigation
|
|||
CW_OP0807 |
Synonyms |
||
Potential root cause PostgreSQL doesn't support synonyms. For code objects, Database Migration Service automatically replaces synonym references with their source schema and object name. If you use synonyms outside of code objects, for example in read-only schemas for database application users, you need to convert them manually. |
|||
Possible mitigation
For synonym usage outside of code objects, you can use the PostgreSQL
|
|||
CW_OP0808 |
Global temporary tables |
||
Potential root cause This issue group is a warning that Database Migration Service detected a global temporary table in your Oracle source code. Migrating global temporary tables requires that you have the pgtt PostgreSQL extension installed and created on the destination database. |
|||
Possible mitigation
We recommend that you verify that you have the pgtt PostgreSQL extension installed and created on the destination database. |
|||
Gemini review recommendations (
|
|||
CW_AI9900 |
Review Gemini suggestions |
||
Potential root cause:
This issue group captures all generic errors and warnings related to Gemini-enhanced code conversion. |
|||
Possible mitigation: Issues found here might not always point to real problems, but we strongly recommend that you review all Gemini-enhanced conversions to make sure they match your expectations. |
|||
CW_AI9901 |
Review AI-augmented code |
||
Potential root cause: This DDL code was converted with Gemini-enhanced features and might need your review for accuracy. | |||
Possible mitigation We recommend that you carefully review code converted with AI augmentations to make sure the end result matches the functionality of your source schema. |
|||
CW_AI9902 |
Citations |
||
Potential root cause: Gemini-enhanced suggestions can include content cited from multiple sources. Certain citations might be subject to license restrictions. We recommend that you review the converted code for citations. | |||
General conversion issues (
|
|||
CW_OP0000 |
Metadata conversion issues |
||
Potential root cause:
This group captures all conversion issues that don't fall under any other, more specific, issue groups. |
|||
Possible mitigation
We recommend that you review the converted code based on your knowledge of the source data model and adjust the code as needed. |
|||
CW_OP0001 |
Metadata conversion issues |
||
Potential root cause:
This group captures all metadata-tracking issues that don't fall under any other, more specific, issue groups. |
|||
Possible mitigation:
Examples of issues in this group are usually related to compilation errors or warnings that can lead to problems with data types in the converted PostgreSQL. We recommend that you review the converted code based on your knowledge of the source data model and adjust the faulty references. |
|||
CW_OP0002 |
Contact your support team |
||
Potential root cause In special edge cases, you might encounter an internal error with a valid Oracle source object. If you do, contact your support team for additional assistance. |
|||
CW_OP0003 |
General conversion issues |
||
Potential root cause
This group contains all issues that don't fall under any other, more specific, issue categories or groups. |
|||
Possible mitigation
We recommend that you review the converted code based on your knowledge of the source data model and code, and adjust as needed. |