SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
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.
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.
Agenda
1.
2.
3.
1.
2.
3.
4.
5.
6.
6

4.

3

SQL文の移植性
Postgres Plus Advanced Serverのご紹介
検証結果
データ型
オブジェクト
SQL
PL/SQL
埋め込みSQL
ユ ティリティ
ユーティリティ
まとめ

© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
1. SQL文の移植性
Q

© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
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.
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.

備考

文字列結合演算子 + を使用
2. Postgres Plus Advanced
g
Serverのご紹介

© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
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
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.
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.
3. Oracle Databaseとの互換性
換
検証結果

© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
4. まとめ

© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
4. まとめ
互換性検証を終えて
•
•
•
•
•
•
•
•

39

アプリケーションが使用するSQLやユーティリティの互換性を高める拡張が行われています。
一般的に使用されるSQL文は高い互換性を持ちます。
PL/SQLは特殊な構文を除き、高い互換性を持ちますが、一部のデータ型は使用できません。
トランザクションについてはPostgreSQLの動作が標準です。
EDB*Plusは高い互換性を持っています。
EDB*Loaderの互換性はやや低い状態です。
バックアップやチューニング等のシステム運用に関連する部分については互換性はありません。
本資料では説明していませんが、Oracle D t b
本資料では説明していませんが O l Database STATSPACK相当の機能DRITAが含まれます
STATSPACK相当の機能DRITAが含まれます。

© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Thank you

© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Mais conteúdo relacionado

Mais procurados

CloudFrontのリアルタイムログをKibanaで可視化しよう
CloudFrontのリアルタイムログをKibanaで可視化しようCloudFrontのリアルタイムログをKibanaで可視化しよう
CloudFrontのリアルタイムログをKibanaで可視化しようEiji KOMINAMI
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13Uptime Technologies LLC (JP)
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話terurou
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視についてMasaya Aoyama
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?ichirin2501
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
Azure Log Analytics 概要
Azure Log Analytics 概要Azure Log Analytics 概要
Azure Log Analytics 概要喜智 大井
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and PerformanceMineaki Motohashi
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編hdais
 
Data Factoryの勘所・大事なところ
Data Factoryの勘所・大事なところData Factoryの勘所・大事なところ
Data Factoryの勘所・大事なところTsubasa Yoshino
 
AWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL Compatibility
AWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL CompatibilityAWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL Compatibility
AWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL CompatibilityAmazon Web Services Japan
 
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較Yoshiyasu SAEKI
 

Mais procurados (20)

CloudFrontのリアルタイムログをKibanaで可視化しよう
CloudFrontのリアルタイムログをKibanaで可視化しようCloudFrontのリアルタイムログをKibanaで可視化しよう
CloudFrontのリアルタイムログをKibanaで可視化しよう
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視について
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
MongoDBの監視
MongoDBの監視MongoDBの監視
MongoDBの監視
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
Azure Log Analytics 概要
Azure Log Analytics 概要Azure Log Analytics 概要
Azure Log Analytics 概要
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and Performance
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
Data Factoryの勘所・大事なところ
Data Factoryの勘所・大事なところData Factoryの勘所・大事なところ
Data Factoryの勘所・大事なところ
 
AWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL Compatibility
AWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL CompatibilityAWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL Compatibility
AWS Black Belt Online Seminar 2017 Amazon Aurora with PostgreSQL Compatibility
 
AWS Systems manager 入門
AWS Systems manager 入門AWS Systems manager 入門
AWS Systems manager 入門
 
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
 

Semelhante a [B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda

Extending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 JapanExtending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 JapanShigeru Hanada
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -日本マイクロソフト株式会社
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報dstn
 
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...Insight Technology, Inc.
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama Insight Technology, Inc.
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナーKazuko Itoda
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張Shigeru Hanada
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu GotoInsight Technology, Inc.
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥Insight Technology, Inc.
 
20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章
20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章
20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章Insight Technology, Inc.
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Cloudera Japan
 
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)オラクルエンジニア通信
 

Semelhante a [B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda (20)

Extending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 JapanExtending PostgreSQL - PgDay 2012 Japan
Extending PostgreSQL - PgDay 2012 Japan
 
Oracle GoldenGate入門
Oracle GoldenGate入門Oracle GoldenGate入門
Oracle GoldenGate入門
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
 
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
 
EDB Postgres Vision 2019
EDB Postgres Vision 2019 EDB Postgres Vision 2019
EDB Postgres Vision 2019
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
 
0151209 Oracle DDD OracleとHadoop連携の勘所
0151209 Oracle DDD OracleとHadoop連携の勘所0151209 Oracle DDD OracleとHadoop連携の勘所
0151209 Oracle DDD OracleとHadoop連携の勘所
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 
20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章
20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章
20170714_MySQLドキュメントストア JSONデータ型&JSON関数 by 日本オラクル株式会社 MySQL GBU 山﨑由章
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
 
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
 
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
 

Mais de Insight Technology, Inc.

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Insight Technology, Inc.
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明するInsight Technology, Inc.
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーンInsight Technology, Inc.
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとInsight Technology, Inc.
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームInsight Technology, Inc.
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門Insight Technology, Inc.
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー Insight Technology, Inc.
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?Insight Technology, Inc.
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Insight Technology, Inc.
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?Insight Technology, Inc.
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...Insight Technology, Inc.
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 Insight Technology, Inc.
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Insight Technology, Inc.
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]Insight Technology, Inc.
 

Mais de Insight Technology, Inc. (20)

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
Docker and the Oracle Database
Docker and the Oracle DatabaseDocker and the Oracle Database
Docker and the Oracle Database
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォーム
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門
 
Lunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL ServicesLunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL Services
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
 

[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.
  • 3. Agenda 1. 2. 3. 1. 2. 3. 4. 5. 6. 6 4. 3 SQL文の移植性 Postgres Plus Advanced Serverのご紹介 検証結果 データ型 オブジェクト SQL PL/SQL 埋め込みSQL ユ ティリティ ユーティリティ まとめ © 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.
  • 39. 4. まとめ 互換性検証を終えて • • • • • • • • 39 アプリケーションが使用するSQLやユーティリティの互換性を高める拡張が行われています。 一般的に使用されるSQL文は高い互換性を持ちます。 PL/SQLは特殊な構文を除き、高い互換性を持ちますが、一部のデータ型は使用できません。 トランザクションについてはPostgreSQLの動作が標準です。 EDB*Plusは高い互換性を持っています。 EDB*Loaderの互換性はやや低い状態です。 バックアップやチューニング等のシステム運用に関連する部分については互換性はありません。 本資料では説明していませんが、Oracle D t b 本資料では説明していませんが O l Database STATSPACK相当の機能DRITAが含まれます STATSPACK相当の機能DRITAが含まれます。 © 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.