Contenu connexe
Similaire à [B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
Similaire à [B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda (20)
Plus de Insight Technology, Inc.
Plus de Insight Technology, Inc. (20)
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
- 1. Postgres Plus Advanced
ServerのOracle Database
互換機能検証
Hewlett-Packard Japan.
Hewlett Packard Japan
Noriyoshi Shinoda /14 Nov, 2013
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 2. Speaker
篠田 典良 (しのだ のりよし)
• 1990年 日本ディジタル・イクイップメント株式会社入社。
• 日本ヒューレット・パッカード株式会社 テクノロジー・コンサル
ティング事業統括本部に所属。
グ事業統括本部に所属
• 現在は主に金融機関向けにデータベース関連のコンサルティ
ングを実施。
• Oracle Databaseに関する著書あり。
• Oracle ACE
2
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 4. 1. SQL文の移植性
Q
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 5. 1. SQL文の移植性
1.1 SQL文の標準とベンダー拡張
1 1 SQL文の標準とベンダ 拡張
現状のSQL標準は不完全
• SQL構文の標準はANSI / ISOにより決定されています。
– ANSI SQL 86, SQL89, SQL92, SQL99, SQL:2003, SQL:2008
– ISO/IEC 9075-{n}:2008
• 標準の構文以外に、多くのベンダー拡張構文が存在します。
• 関数の動作までは標準に含まれないため、同名の関数の動作が異なる場合があります。
5
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 6. 1. SQL文の移植性
1.2
1 2 非互換SQLの例
文字列の結合
SELECT 'Hello ' || first name || ',' FROM employees
Hello first_name ,
RDBMS
first_name = 'SCOTT'の場合
first_name IS NULLの場合
Oracle Database
Hello SCOTT,
Hello ,
SQL Server
Hello SCOTT,
NULL
PostgreSQL
Hello SCOTT,
NULL
MySQL
Hello SCOTT,
NULL
文字列結合関数 CONCATを使用
Postgres Plus
Hello SCOTT,
NULL または Hello ,
パラメータ設定によって結果が異なる
• 単純な計算でもRDBMSによって演算子が異なります。
• データによって結果が異なる場合があります。
6
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
備考
文字列結合演算子 + を使用
- 7. 2. Postgres Plus Advanced
g
Serverのご紹介
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 8. 2. Postgres Plus Advanced Serverのご紹介
2.1 P t SQLをベ スに独自拡張されたRDBMS
2 1 PostgreSQLをベースに独自拡張されたRDBMS
Postgres Plus Advanced Server
統合管理ツール
(
(Postgres Enterprise Manager)
g
p
g )
Oracle Database互換機能
データ型
デ タ型
データベースオブジェクト
Oracle拡張SQL
PL/SQL
ユーティリティ
Pro C互換機能
Pro*C互換機能
OCI互換機能
柔軟なトランザクション管理
レプリケーション
(Slony-I)
(Sl
I)
異種RDBMSからの移行(Migration Toolkit)
異種RDBMSとのレプリケーション
(xDBレプリケーション)
分散メモリキャッシュ(Infinite
分散メモリキャッシ (Infinite Cache)
その他
コネクションプーリング
/負荷分散
(pgpool-II)
スケジューラ
(pgAgent)
(
)
各種コネクタ
(JDBC,ODBC,etc)
(
)
PostgreSQL
8
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
そ
の
他
O
S
S
- 9. 2. Postgres Plus Advanced Serverのご紹介
2.2 O l Database互換機能の例
2 2 Oracle D t b 互換機能の例
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2
rec_emp employees%ROWTYPE ;
3
CURSOR c_emp IS SELECT e1.first_name, e2.employee_id
4
FROM employees e1, employees e2 WHERE e1.employee_id(+) = e2.employee_id ;
5
BEGIN
6
FOR rec_emp IN c_emp LOOP
7
DBMS_OUTPUT.PUT_LINE('FIRST_NAME=' || NVL(rec_emp.first_name,'NULL')) ;
8
END LOOP ;
9
EXCEPTION
10
WHEN OTHERS THEN
11
DBMS_OUTPUT.PUT_LINE('Error Message=' || SQLERRM) ;
12 END ;
9
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 10. 2. Postgres Plus Advanced Serverのご紹介
2.3
2 3 検証環境と内容
• バージョン
– Postgres Plus Advanced Server 9.3 beta 1
• プラットフォーム
– Red Hat Enterprise Linux 6 Update 4 (x86-64)
• 検証内容
– 本資料はP t
本資料はPostgres Plus Advanced ServerとOracle D t b について 主にSQL文の互換性を検証した結果
Pl Ad
dS
とO l Databaseについて、主にSQL文の互換性を検証した結果
を説明しています。
10
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 11. 3. Oracle Databaseとの互換性
換
検証結果
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 12. 3. Oracle Databaseとの互換性検証結果
3.1 データ型
3 1 デ タ型
Oracle Databaseのデータ型は、PostgreSQLのデータ型にマッピングされます。
Oracle Database
Postgres Plus
bytea
NUMBER
numeric
CHAR
character
NVARCHAR2
character varying
CLOB
clob
l b
Postgres Pl 拡張
P t
Plus拡張
RAW
bytea
b t
DATE
timestamp / date
パラメータ設定による
TIMESTAMP
timestamp
FLOAT
real /
double precision
精度により自動変換
TIMESTAMP WITH
TIME ZONE
timestamp with
time zone
INTERVAL
interval
VARCHAR2
character varying
varchar
LONG
text
XMLTYPE
xmltype
LONG RAW
bytea
Postgres Plus拡
張
NCHAR
character
Oracle Database
Postgres Plus
BLOB
12
備考
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
備考
varchar
- 13. 3. Oracle Databaseとの互換性検証結果
3.1 データ型
3 1 デ タ型
マッピングできないデータ型
• 以下のデータ型はマッピングできないため、使用できません。
– BINARY_FLOAT / BINARY_DOUBLE
– BFILE
– NCLOB
– UROWID
– CREATE TYPE AS OBJECT以外で作成されたユーザー定義型
• PostgreSQL独自のデータ型も使用可能です。
– money
– serial / bigserial / smallserial
– time
– boolean
– etc
13
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 14. 3. Oracle Databaseとの互換性検証結果
3.1 データ型
3 1 デ タ型
DATE型の変換
• Oracle DatabaseのDATE型は、「年月日/時分秒」まで格納可能です。
• PostgreSQLのDATE型は「年月日」のみ格納します。
• パラメータedb_redwood_dateをtrue(デフォルトtrue)にすると、DATE型はtimestamp型にマップされます。
キャラクタ・セマンティクス
• Oracle DatabaseのCHAR / VARCHAR2型の標準はバイト数指定(バイト・セマンティクス)。
– キャラクタ・セマンティクス構文も使用可能(first name VARCHAR2(30 CHAR) )
キャラクタ セマンティクス構文も使用可能(first_name
• PostgreSQLのcharacter / character varying型は文字数指定(キャラクタ・セマンティクス)。
• Postgres Plusでは、Oracle Databaseのキャラクタ・セマンティクス構文は使用不可。
14
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 15. 3. Oracle Databaseとの互換性検証結果
3.1 データ型
3 1 デ タ型
文字列の連結と長さ0の文字列
• || 演算子の実行結果は、パラメータedb_redwood_stringsをtrue(デフォルトtrue)にするとOracle Databaseと互
g
換性を持ちます。ただし、長さ0の文字列('')をNULLと見なすOracle Databaseの仕様は実装されていません。
SQL> SELECT 'string' | | NULL col1, LENGTH('') col2 FROM DUAL ;
COL1
COL2
----------------------------------- -------------string
0
SQL> ALTER SESSION SET edb_redwood_strings = false ;
Session lt d
S i altered.
SQL> SELECT 'TEST' | | NULL col1, LENGTH('') col2 FROM DUAL ;
COL1
COL2
---------------------------------- --------------Null
0
15
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 16. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
データベース・オブジェクトの対応
Oracle Database
PostgreSQL
TABLE
TABLE
TABLE
INDEX
INDEX
INDEX
SEQUENCE
SEQUENCE
SEQUENCE
VIEW
VIEW
VIEW
SYNONYM
SYNONYM
-
PROCEDURE
PROCEDURE
-
FUNCTION
FUNCTION
FUNCTION
Postgres Plusによる拡張あり
PARTITION TABLE
PARTITION TABLE
-
実装はPostgreSQLに準拠、一部拡張あり
PARTITION INDEX
16
Postgres Plus
-
-
備考
Postgres Plusによる拡張あり
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 17. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
データベース・オブジェクトの対応
Oracle Database
PostgreSQL
DIRECTORY
DIRECTORY
-
PACKAGE
PACKAGE
-
PACKAGE BODY
PACKAGE BODY
-
MATERIALIZED VIEW
MATERIALIZED VIEW
MATERIALIZED VIEW
Postgres Plusによる拡張あり
TRIGGER
TRIGGER
TRIGGER
Postgres Plusによる拡張あり
TYPE
TYPE
TYPE
Postgres Pl による拡張あり
P t
Plusによる拡張あり
ディクショナリ
17
Postgres Plus
DBMS|ALL|USERビュー
-
備考
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 18. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
TABLE
• CREATE TABLE文は、物理属性を除きほぼ同一です(制約、データ型の指定等)。
• 同一名称のインデックスとテーブルは作成できません。
• 以下の構文が使用できません。
– TABLESPACE以外の物理属性(PCTFREE / PCTUSED / INITRANS等)
– RELY制約
– ENABLE | DISABLE句
– 仮想列
– DROP TABLE文のPURGE句
INDEX
• CREATE INDEX文は、物理属性を除きほぼ同一です(制約、データ型の指定等)。
• GLOBAL PARTITION INDEXは作成できません。
• BITMAP INDEXは作成できません(ハッシュ・インデックスで代替します)。
18
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 19. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
PARTITION TABLE
• CREATE TABLE文のPARTITION句は、物理属性を除きほぼ同一です。
• 使用できるパーティショニング・メソッドはレンジ/リストとコンポジット・パーティションのみです。
• 実装としては、PostgreSQLのパーティション方法(継承による子テーブル化)にマップされます。子テーブル名
は「{親テーブル名}_{パーティション名}」となります。
• コンポジット・パーティションではTEMPLATE句を使用できません。
ンポジ ト パ テ シ ンでは
P
句を使用できません
• 以下の操作を行うことができます。
– パーティションの追加(ADD PARTITION)
– パーティションの削除(DROP PARTITION)
– パーティションの分割(SPLIT PARTITION)
– データの一括削除(TRUNCATE PARTITION)
– テーブルとの変換(EXCHANGE PARTITION)
テ
ル の変換(
)
– 名前の変更(RENAME PARTITION)
19
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 20. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
SEQUENCE
• CREATE SEQUENCE文はほぼ同一です(NOCYCLE句の構文、ORDER句が異なる)。
• CACHE句のデフォルト値が異なります。
• 呼び出し方法はOracle Databaseの構文、PostgreSQLの構文どちらも使用できます。
操作
PostgreSQL
次の値
sequence.NEXTVAL
NEXTVAL('sequence')
現在の値
20
Oracle Database
sequence.CURRVAL
CURRVAL('sequence')
備考
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 21. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
DATABASE LINK
• CREATE DATABASE LINK文はほぼ同一です。
• パラメータoracle_homeに、Oracle Database Instant Clientのインストール先を指定することで、リモートの
Oracle Databaseインスタンスに接続することができます。
• 集計関数(SUM, AVG)、GROUP BYによる集約、ORDER BYによる並べ替えは、ローカル・ホストで実行されます。
• WHERE句によるレコードの選択はリモート・ホストで実行されます。
R 句によるレ
ドの選択はリ
ト ホ トで実行されます
CREATE [PUBLIC] DATABASE LINK {データベースリンク名}
CONNECT TO {ユーザー名} IDENTIFIED BY '{パスワード}'
USING OCI '//{ホスト名}:{ポート番号}/{サービス名}'
21
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 22. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
SYNONYM
•
•
•
•
CREATE SYNONYM文は同一です。
PUBLIC SYNONYMも作成できます(publicスキーマ内のオブジェクトとして定義されます)。
DDLに対してもシノニム名を指定することができます。
PostgreSQLにはSYNONYMは存在しないため、新規に追加されたオブジェクトです。
PROCEDURE
• CREATE PROCEDURE文はほぼ同一です。
• PostgreSQLには、PROCEDUREは存在しないため新規に追加されたオブジェクトです。
• RESULT_CACHE / AGGREGATE / PIPELINED / PARALLEL_ENABLED等の属性を指定できません。
22
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 23. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
FUNCTION / PROCEDURE
• CREATE FUNCTION文は同一ですが、DROP FUNCTION文はパラメータのデータ型指定が必要です。
• PL/SQLで記述することができます。
TRIGGER
•
•
•
•
CREATE TRIGGER文はほぼ同一です
TRIGGER文はほぼ同一です。
DATABASE TRIGGER / CROSSEDITION TRIGGERは使用できません。
CREATE / DROP / ALTER文に関するDDL TRIGGERが利用できる仕様ですが、Beta段階では動作しません。
更新対象列を複数指定する場合は UPDATE
更新対象列を複数指定する場合は「UPDATE {列名#1}, {列名#2} … 」と記述します。
DIRECTORY
• CREATE DIRECTORY文はほぼ同一です。
• ディレクトリに対するオブジェクト権限を指定することができません
ディレクトリに対するオブジェクト権限を指定することができません。
23
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 24. 3. Oracle Databaseとの互換性検証結果
3.2 オブジェクト
3 2 オブジ クト
PACKAGE / PACKAGE BODY
• CREATE PACKAGE文/CREATE PACKAGE BODY文はほぼ同一です。
– パッケージ変数、ファンクション、プロシージャ定義、AUTHID等が使用可能です。
• ALTER PACKAGE文 / ALTER PACKAGE BODY文は提供されていません。
24
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 25. 3. 検証結果
3.2 オブジェクト
3 2 オブジ クト
PL/SQL PACKAGE
• 互換機能として提供されている主なパッケージは以下の通りです。
パッケージ
パッケージ
備考
DBMS_ALERT
一部データ型の相違
DBMS_SQL
一部プロシージャなし
DBMS_JOB
一部プロシージャなし
プ
ジ
DBMS_UTILITY
一部プロシージャなし
プ
ジ
DBMS_CRYPTO
一部データ型の相違
DBMS_MVIEW
一部プロシージャなし
DBMS_LOB
一部プロシージャなし
UTL_ENCODE
一部データ型の相違
DBMS_LOCK
DBMS LOCK
SLEEPプロシージャのみ実装
SLEEPプロシ ジャのみ実装
UTL_FILE
UTL FILE
一部プロシージャなし
部プロシ ジャなし
DBMS_OUTPUT
一部データ型の相違
UTL_MAIL
一部データ型の相違
DBMS_PIPE
一部データ型の相違
UTL_SMTP
一部プロシージャなし
DBMS_PROFILER
DBMS PROFILER
一部データ型の相違
UTL_TCP
UTL TCP
一部プロシージャなし
DBMS_RLS
25
備考
一部プロシージャなし
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 26. 3. Oracle Databaseとの互換性検証結果
3.3
3 3 SQL
独自構文のサポート状況
• ANSI 構文には互換性があります。
• (+) 句による外部結合、DUAL表をサポートします。
• 使用できない主な構文は以下の通りです。
使用できない構文
INSERT ALL
MODEL
SUBMULTISET
INSERT FIRST
NESTED TABLE
VERSIONS
LOG ERRORS
PIVOT / UNPIVOT
WITH CHECK OPTION
MEMBER OF
RETURN
INSERT INTO (SELECT …)
MERGE
SAMPLE
DELETE FROM (SELECT …)
UPDATE SET (col1, col2) = (SELECT col1, col2 …)
26
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 27. 3. Oracle Databaseとの互換性検証結果
3.3
3 3 SQL
トランザクション
• PostgreSQLとOracle Databaseでは実装が異なります。
• 標準では、PostgreSQL方式が採用されます。
– トランザクション中にエラーが発生すると、COMMIT文を実行してもすべてROLLBACKされます。
• パラメータedb_stmt_level_txをtrueに指定することでOracle Databaseと同じ動作になります(デフォルトfalse)。
– trueに設定する場合は、パフォーマンス上問題ないかテスト実施を推奨します。
• COMMIT文、 ROLLBACK文はCOMMENT句、FORCE句以外は互換性があります。
• SAVEPOINT文には互換性があります。
• PL/ SQLでは フ ンクシ ン内でCOMMIT文 ROLLBACK文を実行できませんが P t
PL/pgSQLでは、ファンクション内でCOMMIT文、ROLLBACK文を実行できませんが、Postgres Plusでは、PL/SQL
Pl では PL/SQL
を使ったファンクション/プロシージャ内でこれらの文を実行できます。
27
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 28. 3. Oracle Databaseとの互換性検証結果
3.3
3 3 SQL
疑似列
• 使用できる疑似列はLEVEL、ROWID、ROWNUMのみになります。
• ROWID疑似列を使用するためには、パラメータdefault_with_rowidsをtrueに設定する必要があります(デフォ
ルトはfalse)。
• ROWNUM構文はPostgreSQLのフィルターとして実装されているため、ROWNUM=1を指定しても全件検索にな
る可能性があります。
る可能性があります
SQL> EXPLAIN SELECT * FROM demo1 WHERE ROWNUM=1 ;
QUERY PLAN
-------------------------------------------------------------------------------Seq Scan on demo1 (cost=0.00..16.38 rows=3 width=128)
Filter: (rownum = 1)
28
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 29. 3. Oracle Databaseとの互換性検証結果
3.3
3 3 SQL
演算子
Oracle Database
PostgreSQL
PRIOR
PRIOR
-
CONNECT_BY_ROOT
-
-
CASE
CASE
CASE
UNION
UNION
UNION
INTERSECT
INTERSECT
-
MINUS
MINUS, EXCEPT
EXCEPT
MULTISET
-
-
||
||
||
LIKE %_
LIKE %_
LIKE %_
^=
29
Postgres Plus
-
-
備考
UNION ALLも同一
パラメータedb_redwood_stringsに依存
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 30. 3. Oracle Databaseとの互換性検証結果
3.3
3 3 SQL
ヒント
• 使用頻度が高いヒントが実装されています。使用方法はOracle Databaseと同じです。
• ヒントはパラメータenable_hintsをfalseに設定することで無効にできます(デフォルトtrue)。
使用できる主なヒント
ALL_ROWS
USE_MERGE(t …)
APPEND
INDEX(t i)
NO_USE_MERGE(t …)
CHOOSE
NO_INDEX(t i)
USE_NL(t …)
FIRST_ROWS
ORDERED
NO_USE_NL(t …)
FIRST_ROWS_[10 | 100 | 1000]
USE_HASH(t …)
FIRST_ROWS(n)
30
FULL(t)
NO_USE_HASH(t …)
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 31. 3. Oracle Databaseとの互換性検証結果
3.3
3 3 SQL
関数
• PostgreSQLの関数にOracle Database独自の関数を追加しています。
g
• MOD / GREATEST / LEAST 関数は、使用方法は同じですが結果が異なる場合があります(PostgreSQLの動作
となります)。
互換性のために追加された関数
ADD_MONTHS
ROW_NUMBER
DECODE
MONTHS_BETWEEN
SUBSTR2 / SUBSTR4
EXTRACT
NEW_TIME
SUBSTRB / SUBSTRC
HEXTORAW
NEXT_DAY
SYS_EXTRACT_UTC
INSTR / INSTRB
NVL / NVL2
SYSDATE
LAST_DAY
RAWTOHEX
SYSTIMESTAMP
LENGTH2 / LENGTH4
31
LENGTHB / LENGTHC
REGEXP_{COUNT|INSTR|SUBSTR}
TRIM
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 32. 3. Oracle Databaseとの互換性検証結果
3.4
3 4 PL/SQL
構文の互換性
•
•
•
•
主な構文DECLARE / BEGIN / END、カーソルの使用方法、変数への代入等は完全に互換性を持っています。
カーソル属性SQL%BULK_EXCEPTIONS、SQL%BULK_ROWCOUNTは使用できません。
PRAGMA EXCEPTION_INIT以外のプラグマ構文は使用できません。
一時PROCEDURE、一時FUNCTIONは使用できません。
データ型の互換性
• NATURAL / NATURALN / POSITIVE / POSITIVEN / SIMPLE_INTEGER / SIGNTYPE型は使用できません。
変換 ラ
/ Q
ラ
なります 、
g
実行時 ラ
なります。
• 型変換エラーはPL/SQLではコンパイル・エラーになりますが、Postgres Plusでは実行時エラーになります。
• PLS_INTEGER / BINARY_INTEGER型に小数点を含む値を代入すると、PL/SQLでは整数値に丸められますが、
Postgres Plusでは実行時エラーになります。
32
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 33. 3. Oracle Databaseとの互換性検証結果
3.4
3 4 PL/SQL
例外
• 主要な例外名には互換性があります。
• 使用できない例外名は以下の通りです。
使用できないPL/SQL例外名
ACCESS_INTO_NULL
ROWTYPE_MISMATCH
INVALID_NUMBER
SELF_IS_NULL
LOGIN_DENIED
STORAGE_ERROR
NO_DATA_NEEDED
NO DATA NEEDED
SYS_INVALID_ROWID
SYS INVALID ROWID
NOT_LOGGED_ON
TIMEOUT_ON_RESOURCE
PROGRAM_ERROR
33
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 34. 3. Oracle Databaseとの互換性検証結果
3.5
3 5 埋め込みSQL
ECPGPlus
•
•
•
•
•
34
Pro*Cに相当するプログラムがECPGPlusです。
オリジナルのECPGに、Pro*C互換機能を提供しています(-C PROCパラメータ)。
ECPGとPro*Cは基本的に高い互換性を持っています。
ECPGPlusでは、EXEC SQL EXECUTE ~ END-EXEC ブロック内にPL/SQLブロックを記述できます。
以下の部分がPro*Cと異なります。
– データベース接続構文(EXEC SQL CONNECT TO :conn USER :user IDENTIFIED BY :password ;)。
– 文字列の保存フォーマットはSTRINGと互換です(CHARZ, CHARF, VARCHAR2は選択できません)。
– ALLOCATE / CACHE FREE ALL / COLLECTION / CONTEXT / ENABLE THREAD / FREE / LOB / OBJECT / REGISTER
CONNECT / TYPE / VAR 句は使用できません。
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 35. 3. Oracle Databaseとの互換性検証結果
3.6 ユーティリティ
3 6 ユ ティリティ
提供される互換ユーティリティ
• 以下の互換ユーティリティが提供されています。
Oracle Database (コマンド)
SQL*Plus (sqlplus)
EDB*Plus (edbplus.sh)
SQL*Loader (sqlldr)
EDB*Loader (edbldr)
Wrap (wrap)
35
Postgres Plus (コマンド)
EDB*Wrap (edbwrap)
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 36. 3. Oracle Databaseとの互換性検証結果
3.6 ユーティリティ
3 6 ユ ティリティ
EDB*Plus
• 起動方法はSQL*Plusと異なりますが、起動後は非常に高い互換性を持っています。
• WHENEVER OS ERRORコマンドが使用できません。
• ARCHIVE / SHUTDOWN / STARTUP等のシステム管理系コマンドが使用できません。
EDB*Wrap
• 使用方法はwrapコマンドと同じです。
実行結果は同 になりません。
• 実行結果は同一になりません。
36
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 37. 3. Oracle Databaseとの互換性検証結果
3.6 ユーティリティ
3 6 ユ ティリティ
EDB*Loader
• 基本的な起動方法、パラメータはSQL*Loaderと同じです。
– パラメータでデータ・ファイル、エラー・ファイル等を指定することができません。
– 文字コードの変換機能がありません。
– システム管理者権限(superuser)で接続する必要があります。
– 一意制約エラーが発生した場合には、全レコードがロードされません。
• 制御ファイルの構文には互換性がありますが、機能は限定的です。
– DIRECTモードの場合は、列値として関数が使用できません。
– WHEN句に列名指定ができません
WHEN句に列名指定ができません。
– 空文字列をNULLとするか、空文字列のままとするか決定するパラメータを持ちます。
37
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 38. 4. まとめ
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
- 40. Thank you
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.