Overview
Before Migrating from ORACLE, you need to check the features which ALTIBASE HDB doesn't provide but ORACLE does.
Here 's a brief overview about the features those ALTIBASE HDB does not provide.
Info |
---|
This guide is based on the functionalities at ALTIBASE HDB V6. 이 가이드는 ALTIBASE HDB V6에서의 기능을 기준으로 한다. |
Object
Materialized View
ALTIBASE HDB does not provide Materilaized View functionality that ORACLE supports.
But, this functionality will be applied at ALTIBASE HDB V7.
Index Organized Table (IOT)
ALTIBASE HDB does not support Index Organized Table that ORACLE supports.
Cluster
ALTIBASE HDB does not support Cluster object.
Index
There're various index types which ORACLE supports, such as
- B-Tree Index
- Bitmap Index
- Function Based Index
- Application Domain Index
- R-tree Index (for spatial only)
ALTIBASE HDB supports only B-Tree index and R-Tree Index (Spatial Data only).
But, Among those indexes listed above, A Function Based Index functionality will be applied at ALTIBASE HDB V7.
CHECK constraint on Table
ALTIBASE HDB does not support CHECK constraint that checks column value whether those to insert are proper for this constraint.
But, this functionality will be provided at ALTIBASE HDB V7.
XML support
ALTIBASE HDB does not support XML types, and related functionality.
Development
Hierarchy Query
ALTIBASE HDB provides the limited functionality about hierarchy query. ALTIBASE HDB does not support following features those ORACLE provides
- CONNECT_BY_ISCYCLE pseudocolumn
- CONNECT_BY_ISLEAF pseudocolumn
- CONNECT_BY_ROOT operator
- SYS_CONNECT_BY_PATH function
- SIBLINGS in order by clause
But, At ALTIBASE HDB V7, The functionality of Hierarchical query will be enhanced.
Among of them described above, CONNECT_BY_ISCYCLE pseudocolumn, CONNECT_BY_ISLEAF pseudocolumn, SIBLINGS will be included in ALTIBASE HDB.
Analytic Functions
ALTIBASE HDB provides the limited functionality about analytic functions.
At the ALTIBASE HDB version 6, some of the window functions, namely ranking functions, those are added in a limited extent.
Those are DENSE_RANK(), RANK(), ROW_NUMBER() functions.
Updatable Join view
To use DML statement on View except SELECT statement is not allowed to use in ALTIBASE HDB.
Info |
---|
This functionality will be applied at ALTIBASE HDB V7 by adopting "Instead of Trigger" functionality. |
External Procedures
External procedure means that DBMS engine provides the way to adopt functions or procedures written in C/C++ or Java or any progammable lanuage.
But ALTIBASE HDB does not support this feature.
Package
ALTIBASE HDB does not provide Package.
But, this functionality will be adopted as a name of the Stored Package in psm at ALTIBASE HDB V7.
SQL resultset cache (Client side)
ALITBASE HDB does not provide SQL resultset cache function, namely the cache as a result of the query or function is stored in the client side.
Fetch Across Commit
When a cursor is open and does fetch row by row, you can not issue "COMMIT" or "ROLLBACK" before all rows in the cursor have been fetched.
For example,
Code Block | ||||
---|---|---|---|---|
| ||||
CREATE OR REPLACE PROCEDURE proc1 AS BEGIN DECLARE CURSOR c1 IS SELECT eno, ename FROM employee; BEGIN FOR emp_rec IN c1 LOOP INSERT INTO emp_temp VALUES(emp_rec.eno, emp_rec.ename); COMMIT; END LOOP; END; END; / |
Above procedures work properly in ORACLE, but it does not work in ALTIBASE HDB and it returns error, "ERR-31168 : Invalid CURSOR".
If COMMIT or ROLLBACK statement is sent, ALTIBASE HDB applies commit or rollback operation to the transaction and closes all open cursors within the transaction. In this case, COMMIT statement is issued after INSERT statement, C1 CURSOR is closed.
Thus client gets error as above.
To solve this limitation, you can
- Execute COMMIT / ROLLBACK statement after all data have been fetched in the cursor.
For example, you can change example as below.Code Block linenumbers true lang sql CREATE OR REPLACE PROCEDURE proc1 AS BEGIN DECLARE CURSOR c1 IS SELECT eno, ename FROM employee; BEGIN FOR emp_rec IN c1 LOOP INSERT INTO emp_temp VALUES(emp_rec.eno, emp_rec.ename); END LOOP; COMMIT; /* Commit after all data have fetched. */ END; END; /
- Decouple the connection between SELECT statement in CURSOR and another statement.
In APRE or ODBC/CLI interface, you can make two connections. One is for SELECT statement ( CURSOR ) , the other is for another statement (inside LOOP).
Info |
---|
This functionality will be adopted at ALTIBASE HDB V7. |
Parallel Query
ALTIBASE HDB does not provide Parallel Query feature. Only one thread per query is allowable.
MERGE statement
MERGE statement is useful when you want to decide whether insert or update statement is proper according to the existence of the corrsponding rows.
Info |
---|
This functionality will be adopted at ALTIBASE HDB V7. |
Partitioned table with GLOBAL INDEX
ALTIBASE HDB support Partioned Table feature with local partition index but does not support global index in Partitioned Table.
Info |
---|
This functionality will be adopted at ALTIBASE HDB V7. |
High Availability
RAC
ALTIBASE HDB doesn't provide RAC(Real Application Cluster).
ALTIBASE HDB provides replication functionality for High Availability Instead of RAC.
TAF (Transparent Application Failover )
ALTIBASE HDB only provides CTF (Connection Time Failover).
CTF refers to the case where the fault is noted at the time of connection to the DBMS, and connection
is made to a DBMS on another available node rather than to the DBMS suffering from the fault,
so that service can continue to be provided.
DBA side
Auditing
ALTIBASE HDB does not support Auditing, that is to say watching DB according to the type of executing SQLs and gathering results of it in ORACLE.
In fact, an audit utility is in use not for same purpose but as a same name in ALTIBASE HDB.
It is utilized for matching rows as a result of investigation of data difference between servers.
Besides it provides a functionality for comparison of data difference between the ALTIBASE HDB server and ORACLE server irregardless of the data modification by replication.
And matching them is available by using that utility.