Updated on 2024-04-22 GMT+08:00

Oracle -> RDS for MySQL/GaussDB(for MySQL)

Parameter

Feature Name

Description

Affected Object

Parameter Value

Value Description

Remarks

partition_columns_with_unique_constraint

Unique constraints for table column partition

It is applicable if the input table scripts contain the partition syntax with primary or unique keys.

Table, index

0

Ignore the migration. (Default value)

The migration is ignored, and compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail. You need to manually change the value.

1

Comment the partition syntax.

Partitions can provide many benefits to applications by improving performance, manageability, and availability. After the partition syntax is commented, tables will become normal tables (not partitioned tables) and you will miss out the partition benefits specified above.

2

Comment unique constraints (primary keys and unique keys).

Unique constraints help:

  • Avoid creating duplicate records in a table
  • Create referential integrity constraints
  • Accelerate database operations such as searching for records because indexes are created based on unique keys.

After the unique constraints (primary keys and unique keys) are commented, you will miss out the benefits specified above.

3

Add partition keys to the unique constraints (primary keys and unique keys).

After partition columns are added to the unique constraints (primary keys and unique keys), duplicate records may be created in the table.

plsql_delimiter

Setting PL/SQL delimiter

It is applicable if the input scripts contain PL/SQL blocks

Stored procedure, function, and trigger

$$

Use default delimiter for PL/SQL blocks

Thanks to delimiters, stored procedures, functions and triggers are executed as a single unit. Therefore, delimiters cannot be used in any PL/SQL scripts (procedures, functions, or triggers).

sql_mode_ansi_quotes

Setting SQL modes for handling object names

It is applicable if different SQL modes are used to handle object names. In Oracle, if an object name contains any special character, is case-sensitive, or uses Oracle reserved words, the object name is quoted using double quotation marks ("")

In RDS for MySQL/GaussDB(for MySQL), if ANSI_QUOTES (one of the sql_mod parameters) is set to false, replace "with `. If it is set to true, use ".

Table

FALSE

Add ` as a prefix and suffix to the object name. (Default value)

In RDS for MySQL/GaussDB(for MySQL), ANSI_QUOTES (one of the sql_mode parameters) is set to false by default. If the value is false, replace "with `.

TRUE

Add " as a prefix and suffix to the object name.

In RDS for MySQL/GaussDB(for MySQL), ANSI_QUOTES (one of the sql_mode parameters) is set to false by default. If the value is true, " in the object name remains unchanged.

view_editioning

EDITIONING views

It is applicable if the input view scripts contain EDITIONING keyword. In Oracle, it is allowed to create DML triggers on EDITIONING views.

View

0

No conversion will be happened. EDITIONING keyword will be retained as it is. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support the EDITIONING keyword and the keyword remains unchanged. Compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail. You need to manually change the value. If a DML trigger is created in views, the trigger should be rewritten in the base table without affecting the business logic.

1

Comment EDITIONING keyword in view statements

RDS for MySQL/GaussDB(for MySQL) does not support EDITIONING keyword, and this keyword will be commented. If a DML trigger is created in views, the trigger should be rewritten in the base table without affecting the business logic.

error_backtrace

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE

It is applicable if scripts contain DBMS_UTILITY.FORMAT_ERROR_BACKTRACE. It returns a string that traces the error back to the line where it occurred. There is no equivalent clause in MySQL.

Stored procedure, function, and trigger

0

Ignore the migration. (Default value)

The migration is ignored, and compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail. You need to manually change the value.

1

Convert and generate an error message by concatenating the RETURNED_SQLSTATE, MYSQL_ERRNO, and MESSAGE_TEXT utilities in MySQL.

If the value is true, an RDS for MySQL/GaussDB(for MySQL) error and the PL/SQL object name in the error location are returned.

float_support

FLOAT data type

It is applicable if tables contain one or more FLOAT columns and FLOAT is specified as FLOAT/FLOAT(n), where n > 53 and if n is not provided, default value 126 is used.

Table, function, stored procedure, trigger, and user-defined type

IGNORE

No conversion will happen. (Default value)

RDS for MySQL/GaussDB(for MySQL) supports FLOAT type, which will be implicitly converted as DOUBLE PRECISION when 25 <= precision <= 53. The default (maximum) precision of FLOAT type in Oracle is 126. In RDS for MySQL/GaussDB(for MySQL), if the precision is greater than 53, an error is reported and the statement fails to be executed.

DOUBLE

Convert the FLOAT type to the DOUBLE type.

The FLOAT type supports the precision ranging from 0 to 23. After it is converted to DOUBLE, the maximum precision is 53. If the precision of FLOAT is greater than 53, it is considered as 53.

bitmap_index

BITMAP index

It is applicable if CREATE INDEX statements contains BITMAP keyword.

Index

0

No conversion will be happened. BITMAP keyword will be retained as it is. (Default value)

Since BITMAP indexes are not supported by RDS for MySQL/GaussDB(for MySQL) and will not be converted, compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail. You need to manually correct the error.

1

Comment BITMAP indexes.

RDS for MySQL/GaussDB(for MySQL) does not support BITMAP indexes, and the indexes are commented. This may cause performance issue when the indexed columns are used in search condition. Therefore, you should create proper indexes.

2

Create BTREE indexes instead of BITMAP indexes.

BITMAP indexes are typically used for columns with a large number of duplicate values (low cardinality), while BTREE indexes are suitable for high cardinality columns. There is no exact equivalent for BITMAP indexes in MySQL. You can create BTREE indexes.

3

Create HASH indexes instead of BITMAP indexes.

There is no exact equivalent for BITMAP indexes in MySQL. The HASH index can be considered if an indexed column is used only when = operator is used for comparison.

large_table

Data type conversion when the sum of bytes used for string (CHAR & RAW) columns specified in a table exceeds the max_varchar_size_in_create_table value.

It is applicable if the sum of bytes used for string (CHAR & RAW) columns specified in a table exceeds the max_varchar_size_in_create_table value.

Table

0

Ignore the migration. (Default value)

The migration is ignored. Compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail. You should manually correct the error.

1

If the sum of bytes used for string (CHAR & RAW) columns specified in a table exceeds the max_varchar_size_in_create_table value, the CHAR columns are converted to TEXT, and the RAW columns are converted to BLOB.

If the sum of bytes used for string (CHAR & RAW) columns specified in a table exceeds the max_varchar_size_in_create_table value, the CHAR columns are converted to TEXT, and the RAW columns are converted to BLOB. As the storage size may increase slightly, the performance may decrease slightly.

max_varchar_size_in_create_table

Setting the maximum size of VARCHAR columns in tables.

It is applicable if the input scripts on CREATE TABLE statements involve in setting the maximum size of VARCHAR columns.

Table

64000

The maximum size for the sum of VARCHAR and VARCHAR2 data types in CREATE TABLE statements should be considered as the value of large_table. If the value is large and exceeds the limit, the type will be converted to TEXT.

Every database has limitation on storage. Based on this configuration, the default maximum size of CHARACTER columns is 64000. If the value exceeds the limit, the column type will be converted to TEXT.

on_commit_delete_rows

ON COMMIT DELETE ROWS clause

It is applicable if the input scripts on CREATE TABLE statements contain ON COMMIT DELETE ROWS clause.

Table

0

Ignore the migration. (Default value)

The migration is ignored, and compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail.

1

Comment COMMIT DELETE ROWS in CREATE TABLE statements.

In Oracle, ON COMMIT DELETE ROWS specifies that the created global temporary table is a transaction-level temporary table. This means that each time a transaction is committed, the table is truncated (all rows are deleted). RDS for MySQL/GaussDB(for MySQL) does not support ON COMMIT DELETE ROWS.

temp_table_global

Global temporary tables

It is applicable if scripts on CREATE TABLE statements contain the GLOBAL TEMPORARY clause.

Table

0

Ignore the migration. (Default value)

The migration is ignored, and compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail.

1

Comment the GLOBAL keyword in CREATE GLOBAL TEMPORARY TABLE statements.

Different from RDS for MySQL/GaussDB(for MySQL) temporary tables, Oracle global temporary tables are permanent database objects. Data is stored in disks and visible to all sessions. However, data stored in global temporary tables is private to sessions. In RDS for MySQL/GaussDB(for MySQL), when sessions or connections end, temporary tables are automatically deleted and database objects are not stored permanently.

RDS for MySQL/GaussDB(for MySQL) does not support global temporary tables. Data access methods vary according to temporary tables.

unusable_index

UNUSABLE index

It is applicable if input ALTER INDEX commands contain UNUSABLE keyword

Index

0

Ignore the migration. (Default value)

The migration is ignored, and compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail.

1

Comment the UNUSABLE keyword.

Oracle indexes may be in the UNUSABLE state after a maintenance operation is performed on tables or when ALTER INDEX statements are used to mark indexes as UNUSABLE. Loading tables or partitions by a direct path also leave indexes UNUSABLE. In RDS for MySQL/GaussDB(for MySQL), indexes cannot become UNUSABLE when ALTER INDEX statements are used. This configuration will comment the UNUSABLE keyword. You should manual update indexes.

2

Make indexes invisible.

Indexes are invisible.

index_column_size_limit

Setting the maximum size of columns supported by an index

It is used for setting the maximum size of VARCHAR and VARCHAR2 columns supported by RDS for MySQL/GaussDB(for MySQL) in CREATE INDEX statements.

Index, table

3072

Maximum size of index columns in CREATE INDEX statements.

You can specify the maximum size of an index column. The default value is 3072. If the index size is greater than the default value, the default value (3072) is used. This parameter limits the maximum size of indexes.

index_column_size_exceed_limit

Big indexes

It is applicable to the scenario where CREATE INDEX statements are converted when the column size exceeds the specified limit.

Index

0

Ignore the migration.

The migration is ignored. Compiling the migrated scripts will fail.

1

Comment CREATE INDEX statements.

CREATE INDEX statements are commented. No indexes will be created. You must manually create indexes. Otherwise, the performance is affected.

2

Comment index expressions.

Index expressions will be commented.

3

Reduce the size of index expressions.

If the size of an index expression exceeds 3072 bytes, this configuration reduces the size of the index expression. The part that exceeds the limit is deleted.

4

Raise an error. (Default value)

If the index size exceeds the limit, the error log will be updated.

default_schema

Setting default schema names

It is applicable if schema names are not provided.

schema

-

The default schema name is used for a database object whose schema name is not specified.

The default schema name is used. The schema name cannot be empty.

package_name_delimiter

Setting package name delimiters

It is applicable if scripts contain package names.

Stored procedure, function, and trigger

$

Set a delimiter to form the name of a sub-object of a package during the Oracle package migration.

Delimiters are used for package conversion. For example, if the dollar sign ($) is used as a delimiter, the name of the specified stored procedure or function in a package will be converted to packageName$procedureName or packageName$functionName.

Sample delimiters are: $#_

A delimiter string can contain a maximum of four characters. DOT(.) and any other special characters cannot be used as the delimiters.

partition_with_multiple_columns

Table partitioning with multiple columns

It is applicable if input scripts contain partition syntax with multiple columns. The column data type is DECIMAL, DOUBLE or DATETIME.

Table

0

Ignore the migration. The input scripts remain unchanged. (Default value)

The migration is ignored. It is applicable if input scripts contain partition syntax with multiple columns.

The column data type is DECIMAL, DOUBLE or DATETIME.

1

Comment the entire partition.

The entire partition is commented. When the data volume is large, the performance is affected.

2

Generate virtual columns.

Virtual columns are generated and the same virtual columns are used in the partition.

seqMode

Allowing/Restricting the conversion of SEQUENCE objects in statements

Allowing/Restricting the conversion of SEQUENCE objects in statements

Sequence

TRUE

Use functions to perform sequence operations. (Default value)

Sequences will be created using a tool. The operation is not supported by MySQL.

FALSE

Ignore the migration.

The migration is ignored. Compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL) will fail.

comment_tablespace

Tablespace

It is applicable if CREATE TABLE and CREATE INDEX statements contain TABLESPACE clause.

Tablespace, table

FALSE

Do not convert TABLESPACE. (Default value)

In RDS for MySQL/GaussDB(for MySQL), CREATE TABLE and CREATE INDEX statements support TABLESPACE clause. However, if the specified tablespace does not exist in RDS for MySQL/GaussDB(for MySQL), the CREATE TABLE and CREATE INDEX statements will fail to be executed. Before compiling the migrated scripts on RDS for MySQL/GaussDB(for MySQL), you need to create the required tablespace.

TRUE

Comment TABLESPACE clauses.

The TABLESPACE clauses are commented. The default tablespace is used when a table or index is created.

grant_support

GRANT

Object privileges

Table, view, index, stored procedure, and function

ignore

Do not convert GRANT statements. The scripts will be retained unchanged. (Default value)

In RDS for MySQL/GaussDB(for MySQL), object privileges are granted separately. This configuration will ignore the migration and script will be retained as it is.

comment

Comment entire GRANT statements.

In RDS for MySQL/GaussDB(for MySQL), object privileges are granted separately. This configuration will comment the entire GRANT statements.

sqlplus_unsupported_command

SQL PLUS

RDS for MySQL/GaussDB(for MySQL) does not fully support SQL PLUS commands. This configuration will handle such type of requirements.

SQL PLUS commands

IGNORE

Ignore the migration. The script will be retained as it is.

RDS for MySQL/GaussDB(for MySQL) does not support SQL PLUS commands. This configuration will ignore the script.

COMMENT

Comment the SQL PLUS commands. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support SQL PLUS commands. This configuration will comment the script.

ERROR

Raise an error.

RDS for MySQL/GaussDB(for MySQL) does not support SQL PLUS commands. This configuration will raise an error.

large_table

Big table

RDS for MySQL/GaussDB(for MySQL) does not support tables with more than 65535 characters.

Table

0

Raise an error. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support tables with more than 65535 characters.

1

Migrate the script.

This configuration will migrate the script.

2

Ignore the migration. The script will be retained as it is.

This configuration will ignore the migration and the script remains unchanged.

external_global_user_support

External and global users

RDS for MySQL/GaussDB(for MySQL) does not support external or global users. Based on configuration, you can ignore global or external users, comment global or external users, or convert global or external users to common database users.

System

IGNORE

Ignore the migration. The script will be retained as it is. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support external and global users. This configuration will ignore the migration.

COMMENT

Comment the migration script.

RDS for MySQL/GaussDB(for MySQL) does not support external and global users. This configuration will comment the script.

DBUSER

Convert global or external users to common database users.

RDS for MySQL/GaussDB(for MySQL) does not support external and global users. This configuration will convert global or external users to common database users.

system_role_support

System-defined roles

In RDS for MySQL/GaussDB(for MySQL), system roles cannot be granted to users. This configuration will handle such type of requirements.

System

IGNORE

Ignore GRANT statements. (Default value)

In RDS for MySQL/GaussDB(for MySQL), system roles cannot be granted to users. This configuration will log an error during migration and ignore the GRANT statements.

COMMENT

Comment GRANT statements.

In RDS for MySQL/GaussDB(for MySQL), system roles cannot be granted to users. This configuration will comment GRANT statements during migration.

ERROR

Ignore the migration and log an error.

In RDS for MySQL/GaussDB(for MySQL), system roles cannot be granted to users. This configuration will ignore migration and log an error.

grant_support

GRANT

RDS for MySQL/GaussDB(for MySQL) does not fully support GRANT. This configuration will handle such type of requirements.

System

IGNORE

Ignore the migration. The script will be retained as it is. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not fully support GRANT. This configuration will ignore the migration and the script remains unchanged.

COMMENT

Comment the migration script.

RDS for MySQL/GaussDB(for MySQL) does not fully support GRANT. This configuration will comment the script in the migration.

ERROR

Ignore the migration and log an error.

RDS for MySQL/GaussDB(for MySQL) does not fully support GRANT. This configuration will ignore migration and log an error.

xmltype_support

XMLTYPE

RDS for MySQL/GaussDB(for MySQL) does not support XMLTYPE. This configuration will handle such type of requirements.

Table, function, stored procedure, trigger, and user-defined type

IGNORE

Ignore the migration. The script will be retained as it is. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support XMLTYPE. This configuration will ignore the migration and the script remains unchanged.

LONGTEXT

Convert XMLTYPE to LONGTEXT.

RDS for MySQL/GaussDB(for MySQL) does not support XMLTYPE. This configuration converts XMLTYPE to LONGTEXT.

ERROR

Ignore the migration and log an error.

RDS for MySQL/GaussDB(for MySQL) does not support XMLTYPE. This configuration will ignore migration and log an error.

bfile_support

BFILE

RDS for MySQL/GaussDB(for MySQL) does not support BFILE. This configuration will handle such type of requirements.

Table, function, stored procedure, trigger, and user-defined type

IGNORE

Ignore the migration. The script will be retained as it is. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support BFILE. This configuration will ignore the migration and the script remains unchanged.

LONGTEXT

Convert BFILE to LONGTEXT.

RDS for MySQL/GaussDB(for MySQL) does not support BFILE. This configuration converts BFILE to LONGTEXT.

ERROR

Ignore the migration and log an error.

RDS for MySQL/GaussDB(for MySQL) does not support BFILE. This configuration will ignore migration and log an error.

user_name_case

User name case

The username in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will handle such type of requirements.

System

UPPER

Migrate the username in UPPERCASE.

The username in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will migrate the username in UPPERCASE.

LOWER

Migrate the username in LOWERCASE.

The username in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will migrate the username in LOWERCASE.

IGNORE

Ignore the UPPERCASE and LOWERCASE and no migration will happen.

The username in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will ignore the UPPERCASE and LOWERCASE and no migration will happen.

role_name_case

Role name case

The role name in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will handle such type of requirements.

System

UPPER

Migrate the role name in UPPERCASE.

The role name in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will migrate the role name in UPPERCASE.

LOWER

Migrate the role name in LOWERCASE.

The role name in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will migrate the role name in LOWERCASE.

IGNORE

Ignore the UPPER and LOWERCASE and no migration will happen.

The role name in RDS for MySQL/GaussDB(for MySQL) can contain uppercase letters and lowercase letters. This configuration will ignore the UPPERCASE and LOWERCASE and no migration will happen.

user_profile_support

PROFILE

RDS for MySQL/GaussDB(for MySQL) does not support PROFILE in users. This configuration will handle such type of requirements.

System

IGNORE

Ignore the migration. The script will be retained as it is.

RDS for MySQL/GaussDB(for MySQL) does not support PROFILE in users. This configuration will ignore the migration and the script remains unchanged.

COMMENT

This configuration will comment the script.

RDS for MySQL/GaussDB(for MySQL) does not support PROFILE in users. Comment the script in the migration.

ERROR

Ignore the migration and log an error. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support PROFILE in users. This configuration will ignore migration and log an error.

role_support

Role

RDS for MySQL 5.7 does not fully support roles. This configuration will handle such type of requirements.

System

IGNORE

Ignore the migration. The script will be retained as it is.

RDS for MySQL 5.7 does not fully support roles. This configuration will ignore the migration and the script remains unchanged.

COMMENT

Comment the script.

RDS for MySQL 5.7 does not fully support roles. This configuration will comment the script.

ERROR

Ignore the migration and log an error. (Default value)

RDS for MySQL 5.7 does not fully support roles. This configuration will ignore migration and log an error.

grant_delegate_option_support

Delegate option

RDS for MySQL/GaussDB(for MySQL) does not support DELIGATE option in grants. This configuration will handle such type of requirements.

System

IGNORE

Ignore the migration. The script will be retained as it is.

RDS for MySQL/GaussDB(for MySQL) does not support DELIGATE option in grants. This configuration will ignore the migration and the script remains unchanged.

COMMENT

Comment the script.

RDS for MySQL/GaussDB(for MySQL) does not support DELIGATE option in grants. This configuration will comment the script partially in the migration.

ERROR

Ignore the migration and log an error. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support DELIGATE option in grants. This configuration will ignore migration and log an error.

debug_priv_support

DEBUG privilege

RDS for MySQL/GaussDB(for MySQL) does not support DEBUG privilege. This configuration will handle such type of requirements.

System

IGNORE

Ignore the migration. The script will be retained as it is.

RDS for MySQL/GaussDB(for MySQL) does not support DEBUG privilege. This configuration will ignore the migration and the script remains unchanged.

COMMENT

Comment the script.

RDS for MySQL/GaussDB(for MySQL) does not support DEBUG privilege. This configuration will comment the script partially in the migration.

ERROR

Ignore the migration and log an error. (Default value)

RDS for MySQL/GaussDB(for MySQL) does not support DEBUG privilege. This configuration will ignore migration and log an error.

grant_identify_support

GRANT IDENTIFIED BY

GaussDB(for MySQL) 8.0 does not support GRANT IDENTIFIED BY password. This configuration will handle such type of requirements.

System

IGNORE

Ignore the migration. The script will be retained as it is.

GaussDB(for MySQL) 8.0 does not support GRANT IDENTIFIED BY password. This configuration will ignore the migration and the script remains unchanged.

COMMENT_IDENTIFIEDBY

Comment IDENTIFIED BY statements.

GaussDB(for MySQL) 8.0 does not support GRANT IDENTIFIED BY password. This configuration will comment IDENTIFIED BY statements.

COMMENT_GRANT

Comment the entire GRANT statements.

GaussDB(for MySQL) 8.0 does not support GRANT IDENTIFIED BY password. This configuration will comment the entire GRANT statements.

ERROR

Ignore the migration and log an error. (Default value)

GaussDB(for MySQL) 8.0 does not support GRANT IDENTIFIED BY password. This configuration will ignore migration and log an error.

user_auth_support

Role authorization

RDS for MySQL/GaussDB(for MySQL) roles do not support user authorization. This configuration will handle such type of requirements.

System

IGNORE

Ignore the migration. The script will be retained as it is. (Default value)

RDS for MySQL/GaussDB(for MySQL) roles do not support user authorization. This configuration will ignore the migration and the script remains unchanged.

COMMENT

Comment the script partially.

RDS for MySQL/GaussDB(for MySQL) roles do not support user authorization. This configuration will comment the script partially.

ERROR

Ignore the migration and log an error.

RDS for MySQL/GaussDB(for MySQL) roles do not support user authorization. This configuration will ignore migration and log an error.