SlideShare a Scribd company logo
異なるデータベース間の SQL 比較と
Oracle Database 12c の新機能
Noriyoshi Shinoda
March 8, 2017
Oracle Database Connect 2017 / JPOUG
自己紹介
篠田典良(しのだのりよし)
– 所属
– 日本ヒューレット・パッカード株式会社 テクノロジーコンサルティング事業統括
– 現在の業務
– Oracle DatabaseをはじめPostgreSQL, Microsoft SQL Server, Vertica, Sybase
ASE等 RDBMS全般に関するシステムの設計、チューニング、コンサルティング
– Oracle ACE
– Oracle Database関連書籍の執筆
– オープンソース製品に関する調査、検証
– 関連する URL
– Oracle ACEってどんな人?
– http://www.oracle.com/technetwork/jp/database/articles/vivadeveloper/index-
1838335-ja.html
– 「PostgreSQL 虎の巻」シリーズ
– http://h30507.www3.hp.com/t5/user/viewprofilepage/user-id/838802
2
Agenda
– 自動採番列 (12.1)
– 文字列型の最大長 (12.1)
– FETCH n ROWS (12.1)
– オブジェクト名最大長 (12.2)
– 照合 (12.2)
– JSONデータ (12.1 / 12.2)
3
Oracle Database 12c新機能
4
Oracle Database 12c新機能
自動採番列
5
RDBMS 自動採番列の構文
MySQL AUTO_INCREMENT列属性
PostgreSQL serial, bigserial, smallserial型
DB2 GENERATE ALWAYS 列属性
SQL Server IDENTITY列属性
Vertica
AUTO_INCREMENT列属性
IDENTITY列属性
Oracle Database 12c新機能
自動採番列
6
– 実体は自動生成される SEQUENCE オブジェクトと DEFAULT の組み合わせ
– 利用するためには CREATE TABLE システム権限に加えて CREATE
SEQUENCE システム権限が必要
– Oracle Database 12c (12.1) から利用可能
– GENERATED ALWAYS AS IDENTITY 列属性
– 常に自動採番値を生成、更新不可
– GENERATED BY DEFAULT AS IDENTITY 列属性
– ユーザーが更新可能
SQL> CREATE TABLE idtbl1 (id NUMBER
GENERATED BY DEFAULT AS IDENTITY (START WITH 10),
val VARCHAR2(10)) ;
Oracle Database 12c新機能
文字列型最大長
7
RDBMS CHAR VARCHAR
MySQL 255 65,535
PostgreSQL 10,485,760 10,485,760
DB2 255 32,704
SQL Server 8,000 2 GB
Vertica 65,000 65,000
Oracle Database 11g (11.2) 2,000 4,000
Oracle Database 12c新機能
文字列型最大長
8
– Oracle Database 12c (12.1) から VARCHAR2 型 / NVARCHAR2 型 / RAW
型の最大長を 32,767 バイトに拡張可能
– CHAR / NCHAR 型の最大長はそのまま
– PL/SQL の最大長に合致
– 初期化パラメーター MAX_STRING_SIZE = EXTENDED が必要
– @?/rdbms/admin/utl32k.sql の実行
– @?/rdbms/admin/utlrp.sql の実行
– 再起動
– 一旦変更すると元に戻せない
– 初期化パラメーター COMPATIBLE >= 12.0.0.0 も必要
– 内部的には初期化パラメーター _scalar_type_lob_storage_threshold
(Default 2,000) を超えるデータはインライン BLOB 型に変換して保存
Oracle Database 12c新機能
FETCH n ROWS
9
RDBMS 最初の 10 レコード取得
MySQL LIMIT 10
PostgreSQL FETCH FIRST 10 ROWS ONLY
DB2 FETCH FIRST 10 ROWS ONLY
SQL Server
TOP 10
FETCH FIRST 10 ROWS ONLY
Vertica LIMIT 10
SELECT first_name, last_name, salary FROM (
SELECT first_name, last_name, salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) ranking
FROM employees)
WHERE ranking <= 10
– Oracle Database 11g の記述
Oracle Database 12c新機能
FETCH n ROWS
10
– Oracle Database 12c (12.1) から OFFSET n ROWS FETCH FIRST m
ROWS ONLY 構文が利用可能
SQL> SELECT first_name, last_name, salary FROM employees
ORDER BY salary DESC
FETCH FIRST 10 ROWS ONLY ;
– OFFSET n ROWS 句を指定して途中を抜き出すこともできる
– 実行計画を確認すると内部的には ROW_NUMBER 関数を使っている
1 - filter("from$_subquery$_002"."rowlimit_$$_rownumber"<=10)
2 - filter(ROW_NUMBER() OVER (
ORDER BY "EMPLOYEES".“SALARY" )<=10)
Oracle Database 12c新機能
オブジェクト名最大長
11
RDBMS 最大長
MySQL 64 char
PostgreSQL 63 bytes
DB2 128 bytes
SQL Server 128 char
Vertica 128 bytes
Oracle Database 12c (12.1) 30 bytes
– 主要 RDBMS のオブジェクト名の最大長
Oracle Database 12c新機能
オブジェクト名最大長
12
– V$PDBS ビューの NAME 列, DBA_PDBS ビューの PDB_NAME 列は 128
バイトだが?
オブジェクト 最大長
データベース名 8 bytes
表領域名 30 bytes
サービス名 64 bytes
ASMディスクグループ 30 bytes
PDB名 30 bytes
– Oracle Database 12c (12.2) から主なオブジェクトの最大長は 128 バイト
– 初期化パラメーター COMPATIBLE >= 12.2 が必要
– 以下は例外
Oracle Database 12c新機能
照合(COLLATION)
13
– 日本語環境で標準インストールした場合
– 文字列型による大文字/小文字の区別
RDBMS 大文字/小文字区別 列単位に変更
MySQL しない ○
PostgreSQL する ×
DB2 する ×
SQL Server しない ○
Vertica する ×
Oracle Database 12c (12.1) する ×
– Oracle Database のデフォルトは初期化パラメーター NLS_COMP,
NLS_SORT に依存
Oracle Database 12c新機能
照合(COLLATION)
14
– 使用条件
– 初期化パラメーター COMPATIBLE >= 12.2
– 初期化パラメーター MAX_STRING_SIZE=EXTENDED
– Oracle Database 12c (12.2) では列/テーブル単位に COLLATE 指定可能
– 確認方法は ALL_TAB_COLUMNS ビューの COLLATION 列、ALL_TABLES ビューの
DEFAULT_COLLATION 列
SQL> CREATE TABLE table_name1 (val VARCHAR2(10))
DEFAULT COLLATION BINARY_AI ;
SQL> CREATE TABLE table_name2 (id NUMERIC,
val VARCHAR2(10) COLATE BINARY_CI) ;
Oracle Database 12c新機能
照合(COLLATION)
15
SQL> CREATE TABLE collate1 (col1 VARCHAR2(10),
col2 VARCHAR2(10) COLLATE BINARY_CI) ;
SQL> INSERT INTO collate1 VALUES ('ABC', 'ABC') ;
SQL> INSERT INTO collate1 VALUES ('abc' 'abc') ;
SQL> SELECT * FROM collate1 WHERE col1='abc' ;
COL1 COL2
---------- ----------
abc abc
SQL> SELECT * FROM collate1 WHERE col2='abc' ;
COL1 COL2
---------- ----------
ABC ABC
abc abc
Oracle Database 12c新機能
照合(COLLATION)
16
SQL> SELECT * FROM collate1 c1 INNER JOIN collate2 c2 ON
c1.col1 = c2.col2 ;
SELECT * FROM collate1 c1 INNER JOIN collate2 c2 ON
c1.col1 = c2.col2
*
行1でエラーが発生しました。:
ORA-43915: 照合を決定できません: 引数に競合する照合があります
– COLLATION が異なる列は直接結合できない
SQL> SELECT * FROM collate1 c1 INNER JOIN collate2 c2 ON
c1.col1 COLLATE BINARY_CI = c2.col2 ;
– COLLATION を合わせてから結合する
Oracle Database 12c新機能
照合(COLLATION)
17
SQL> SELECT * FROM collate1 WHERE col2='ABC' ;
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(NLSSORT("COL2",'nls_sort=''BINARY_CI''')=HEXTORAW('61626300'))
– 実行計画を確認すると、自動的に NLSSORT 関数を実行している
Oracle Database 12c新機能
JSONデータ対応
18
RDBMS データ型 関数 演算子
MySQL JSON ○ ○
PostgreSQL
JSON,
JSONB
○ ○
DB2 - ○ -
SQL Server - ○ -
Vertica - ○ ○
Oracle Database 12c (12.1) - ○ -
– Oracle Database 12c (12.2) では、JSON データを生成する関数、パッケー
ジが追加された
Oracle Database 12c新機能
JSONデータ対応
19
– JSON 専用のデータ型は未提供(VARCHAR2, CLOB を利用)
– 条件式が利用可能
– IS JSON / IS NOT JSON
– JSON_EXISTS
– JSON_TEXTCONTAINS
– 関数
– JSON_ARRAY / JSON_ARRAYAGG (12.2)
– JSON_DATAGUIDE (12.2)
– JSON_OBJECT / JSON_OBJECTAGG (12.2)
– JSON_QUERY
– JSON_TABLE
– JSON_VALUE
– DBMS_JSON パッケージ (12.2)
– CREATE SEARCH INDEX FOR JSON
Oracle Database 12c新機能
JSONデータ対応
20
SQL> SELECT JSON_ARRAY (
2 JSON_OBJECT('Percentage' VALUE .30),
3 JSON_ARRAY('A', 'B', 'C')
4 ) FROM DUAL ;
JSON_ARRAY(JSON_OBJECT('PERCENTAGE'VALUE.30),JSON_ARRAY('A
','B','C'))
--------------------------------------------------------------------------------
[{"Percentage":0.3},["A","B","C"]]
SQL>
– JSON データ生成関数が追加(12.2)
新機能の情報
21
新機能の情報
マニュアル
– 新機能ガイド
– 各マニュアルの先頭部分
22
Thank you
noriyoshi.shinoda@hpe.com
23

More Related Content

PPTX
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
Michitoshi Yoshida
 
PDF
簡単!AWRをEXCELピボットグラフで分析しよう♪
Yohei Azekatsu
 
PDF
PostgreSQL Unconference #26 No Error on PostgreSQL
Noriyoshi Shinoda
 
PDF
db tech showcase 2019 D10 Oracle Database New Features
Noriyoshi Shinoda
 
PDF
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
 
PDF
Add PLEASE clause to Oracle Database
Noriyoshi Shinoda
 
PDF
Babelfish Compatibility
Noriyoshi Shinoda
 
PDF
PostgreSQL Conference Japan 2021 B2 Citus 10
Noriyoshi Shinoda
 
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
Michitoshi Yoshida
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
Yohei Azekatsu
 
PostgreSQL Unconference #26 No Error on PostgreSQL
Noriyoshi Shinoda
 
db tech showcase 2019 D10 Oracle Database New Features
Noriyoshi Shinoda
 
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
 
Add PLEASE clause to Oracle Database
Noriyoshi Shinoda
 
Babelfish Compatibility
Noriyoshi Shinoda
 
PostgreSQL Conference Japan 2021 B2 Citus 10
Noriyoshi Shinoda
 

What's hot (18)

PDF
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
Insight Technology, Inc.
 
PDF
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
 
PDF
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
PDF
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
Shigeru Hanada
 
PDF
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
 
PDF
「Oracle Database + Java + Linux」 環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1
Shogo Wakayama
 
PDF
Jpug study-postgre sql-10-pub
Toshi Harada
 
PDF
Oracle how-to-audit-backup
Daiki Mogmet Ito
 
PPTX
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
 
PDF
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
Ryota Watabe
 
PDF
Microsoft SQL Serverソースエンドポイント-スタンドアロン環境での非sysadminユーザーのセットアップ
QlikPresalesJapan
 
PDF
DBスキーマもバージョン管理したい!
kwatch
 
PDF
PostgreSQL 10 新機能 @オープンセミナー香川 2017
Shigeru Hanada
 
PDF
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Ryota Watabe
 
PDF
Pg14_sql_standard_function_body
kasaharatt
 
PPTX
Ruby on Rails on MySQL チューニング入門
だいすけ さとう
 
PDF
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
 
PDF
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
Insight Technology, Inc.
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
Insight Technology, Inc.
 
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
 
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
Shigeru Hanada
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
 
「Oracle Database + Java + Linux」 環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1
Shogo Wakayama
 
Jpug study-postgre sql-10-pub
Toshi Harada
 
Oracle how-to-audit-backup
Daiki Mogmet Ito
 
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
 
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
Ryota Watabe
 
Microsoft SQL Serverソースエンドポイント-スタンドアロン環境での非sysadminユーザーのセットアップ
QlikPresalesJapan
 
DBスキーマもバージョン管理したい!
kwatch
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
Shigeru Hanada
 
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Ryota Watabe
 
Pg14_sql_standard_function_body
kasaharatt
 
Ruby on Rails on MySQL チューニング入門
だいすけ さとう
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
 
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
Insight Technology, Inc.
 
Ad

Viewers also liked (15)

PDF
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Ryota Watabe
 
PDF
監査ログをもっと身近に!〜統合監査のすすめ〜
Michitoshi Yoshida
 
PDF
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
Noriyoshi Shinoda
 
PDF
DBA だってもっと効率化したい!〜最近の自動化事情とOracle Database〜
Michitoshi Yoshida
 
PDF
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
Ryota Watabe
 
PDF
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
CO-Sol for Community
 
PDF
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
Ryota Watabe
 
PPTX
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
 
PPS
Oracle Database Overview
honglee71
 
PDF
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Amazon Web Services Japan
 
PDF
Oracle RAC 12c Release 2 - Overview
Markus Michalewicz
 
PDF
待ち事象から考える、Sql server の改善ポイント
Masayuki Ozawa
 
PPTX
私がPerlを使う理由
Yohei Azekatsu
 
PPTX
Oracle常駐接続プーリング(DRCP)を導入した話
Kentaro Kitagawa
 
PPTX
Using the PostgreSQL Extension Ecosystem for Advanced Analytics
Chartio
 
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Ryota Watabe
 
監査ログをもっと身近に!〜統合監査のすすめ〜
Michitoshi Yoshida
 
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
Noriyoshi Shinoda
 
DBA だってもっと効率化したい!〜最近の自動化事情とOracle Database〜
Michitoshi Yoshida
 
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
Ryota Watabe
 
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
CO-Sol for Community
 
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
Ryota Watabe
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
 
Oracle Database Overview
honglee71
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Amazon Web Services Japan
 
Oracle RAC 12c Release 2 - Overview
Markus Michalewicz
 
待ち事象から考える、Sql server の改善ポイント
Masayuki Ozawa
 
私がPerlを使う理由
Yohei Azekatsu
 
Oracle常駐接続プーリング(DRCP)を導入した話
Kentaro Kitagawa
 
Using the PostgreSQL Extension Ecosystem for Advanced Analytics
Chartio
 
Ad

Similar to Oracle Database Connect 2017 / JPOUG#1 (20)

PDF
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
オラクルユニバーシティ
 
PDF
Oracle GoldenGate導入Tips
オラクルエンジニア通信
 
PDF
オープンソース・データベースの最新事情
Meiji Kimura
 
PPT
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
Toru Miyahara
 
PPT
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Toru Miyahara
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Pgunconf14 pg13-psql
Toshi Harada
 
PDF
DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略
歩 柴田
 
PDF
Postgresql advent calender 2014 using jsonb by ecpg
Toshi Harada
 
PDF
20170510_ORACLE MASTER Silver Oracle Database 12c 徹底特訓
オラクルユニバーシティ
 
PDF
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
 
PDF
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
Meiji Kimura
 
PDF
ORACLE MASTER Bronze Oracle Database 12c 傾向と対策 (SQL および Bronze DBA)
オラクルユニバーシティ
 
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
PPT
SQLチューニング勉強会資料
Shinnosuke Akita
 
PDF
MySQL 5.5 Update #denatech
Mikiya Okuno
 
PDF
JPUGしくみ+アプリケーション勉強会(第20回)
Yoshinori Nakanishi
 
PDF
より深く知るオプティマイザとそのチューニング
Yuto Hayamizu
 
PDF
2018年度 若手技術者向け講座 実行計画
keki3
 
PPT
S2dao Seminar in tripodworks
tripodworks
 
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
オラクルユニバーシティ
 
Oracle GoldenGate導入Tips
オラクルエンジニア通信
 
オープンソース・データベースの最新事情
Meiji Kimura
 
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
Toru Miyahara
 
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Toru Miyahara
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
Pgunconf14 pg13-psql
Toshi Harada
 
DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略
歩 柴田
 
Postgresql advent calender 2014 using jsonb by ecpg
Toshi Harada
 
20170510_ORACLE MASTER Silver Oracle Database 12c 徹底特訓
オラクルユニバーシティ
 
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
 
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
Meiji Kimura
 
ORACLE MASTER Bronze Oracle Database 12c 傾向と対策 (SQL および Bronze DBA)
オラクルユニバーシティ
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
SQLチューニング勉強会資料
Shinnosuke Akita
 
MySQL 5.5 Update #denatech
Mikiya Okuno
 
JPUGしくみ+アプリケーション勉強会(第20回)
Yoshinori Nakanishi
 
より深く知るオプティマイザとそのチューニング
Yuto Hayamizu
 
2018年度 若手技術者向け講座 実行計画
keki3
 
S2dao Seminar in tripodworks
tripodworks
 

More from Noriyoshi Shinoda (17)

PDF
PostgreSQL Unconference #5 ICU Collation
Noriyoshi Shinoda
 
PDF
Citus 10 verification result (Japanese)
Noriyoshi Shinoda
 
PDF
PostgreSQL 14 Beta1 New Features with Examples (Japanese)
Noriyoshi Shinoda
 
PDF
PostgreSQL 14 Beta 1 New Features with Examples (English)
Noriyoshi Shinoda
 
PDF
PostgreSQL 12 New Features with Examples (English) GA
Noriyoshi Shinoda
 
PDF
EDB Postgres Vision 2019
Noriyoshi Shinoda
 
PDF
PostgreSQL 12 Beta 1 New Features with Examples (Japanese)
Noriyoshi Shinoda
 
PDF
PostgreSQL 12 Beta 1 New Features with Examples (English)
Noriyoshi Shinoda
 
PDF
Let's scale-out PostgreSQL using Citus (English)
Noriyoshi Shinoda
 
PDF
PostgreSQL 11 New Features With Examples (Japanese)
Noriyoshi Shinoda
 
PDF
PostgreSQL 11 New Features With Examples (English)
Noriyoshi Shinoda
 
PDF
Citus 7.5 Beta 検証結果
Noriyoshi Shinoda
 
PDF
PostgreSQL 11 New Features Japanese version (Beta 1)
Noriyoshi Shinoda
 
PDF
PostgreSQL 11 New Features English version (Beta 1)
Noriyoshi Shinoda
 
PDF
PGConf.ASIA 2017 Logical Replication Internals (English)
Noriyoshi Shinoda
 
PDF
PostgreSQL 10 New Features (English)
Noriyoshi Shinoda
 
PDF
PostgreSQL 10 Beta1 New Features (Japanese)
Noriyoshi Shinoda
 
PostgreSQL Unconference #5 ICU Collation
Noriyoshi Shinoda
 
Citus 10 verification result (Japanese)
Noriyoshi Shinoda
 
PostgreSQL 14 Beta1 New Features with Examples (Japanese)
Noriyoshi Shinoda
 
PostgreSQL 14 Beta 1 New Features with Examples (English)
Noriyoshi Shinoda
 
PostgreSQL 12 New Features with Examples (English) GA
Noriyoshi Shinoda
 
EDB Postgres Vision 2019
Noriyoshi Shinoda
 
PostgreSQL 12 Beta 1 New Features with Examples (Japanese)
Noriyoshi Shinoda
 
PostgreSQL 12 Beta 1 New Features with Examples (English)
Noriyoshi Shinoda
 
Let's scale-out PostgreSQL using Citus (English)
Noriyoshi Shinoda
 
PostgreSQL 11 New Features With Examples (Japanese)
Noriyoshi Shinoda
 
PostgreSQL 11 New Features With Examples (English)
Noriyoshi Shinoda
 
Citus 7.5 Beta 検証結果
Noriyoshi Shinoda
 
PostgreSQL 11 New Features Japanese version (Beta 1)
Noriyoshi Shinoda
 
PostgreSQL 11 New Features English version (Beta 1)
Noriyoshi Shinoda
 
PGConf.ASIA 2017 Logical Replication Internals (English)
Noriyoshi Shinoda
 
PostgreSQL 10 New Features (English)
Noriyoshi Shinoda
 
PostgreSQL 10 Beta1 New Features (Japanese)
Noriyoshi Shinoda
 

Recently uploaded (9)

PDF
ダイヤモンドスラリー市場規模の成長見通し:2031年には193百万米ドルに到達へ
yhresearch
 
PPTX
PRESENTASI IZIN OPERASIONAL SMK ISLAM KARYA MANDIRI
BAHRULALAM27
 
PDF
工業用ミストシステム調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
2418867459
 
PPTX
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
QlikPresalesJapan
 
PDF
RV車市場、CAGR2.60%で成長し、2031年には37640百万米ドル規模に
yhresearch
 
PPTX
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
QlikPresalesJapan
 
PPTX
BEIS ORIENTATION FOR S.Y2024 - 2025.pptx
AsmiraCo2
 
PDF
埋め込み型ドラッグデリバリーデバイスの成長予測:2031年には751百万米ドルに到達へ
2418867459
 
PDF
硫酸ナトリウム市場、CAGR0.50%で成長し、2031年には1520百万米ドル規模に
yhresearch
 
ダイヤモンドスラリー市場規模の成長見通し:2031年には193百万米ドルに到達へ
yhresearch
 
PRESENTASI IZIN OPERASIONAL SMK ISLAM KARYA MANDIRI
BAHRULALAM27
 
工業用ミストシステム調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
2418867459
 
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
QlikPresalesJapan
 
RV車市場、CAGR2.60%で成長し、2031年には37640百万米ドル規模に
yhresearch
 
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
QlikPresalesJapan
 
BEIS ORIENTATION FOR S.Y2024 - 2025.pptx
AsmiraCo2
 
埋め込み型ドラッグデリバリーデバイスの成長予測:2031年には751百万米ドルに到達へ
2418867459
 
硫酸ナトリウム市場、CAGR0.50%で成長し、2031年には1520百万米ドル規模に
yhresearch
 

Oracle Database Connect 2017 / JPOUG#1

  • 1. 異なるデータベース間の SQL 比較と Oracle Database 12c の新機能 Noriyoshi Shinoda March 8, 2017 Oracle Database Connect 2017 / JPOUG
  • 2. 自己紹介 篠田典良(しのだのりよし) – 所属 – 日本ヒューレット・パッカード株式会社 テクノロジーコンサルティング事業統括 – 現在の業務 – Oracle DatabaseをはじめPostgreSQL, Microsoft SQL Server, Vertica, Sybase ASE等 RDBMS全般に関するシステムの設計、チューニング、コンサルティング – Oracle ACE – Oracle Database関連書籍の執筆 – オープンソース製品に関する調査、検証 – 関連する URL – Oracle ACEってどんな人? – http://www.oracle.com/technetwork/jp/database/articles/vivadeveloper/index- 1838335-ja.html – 「PostgreSQL 虎の巻」シリーズ – http://h30507.www3.hp.com/t5/user/viewprofilepage/user-id/838802 2
  • 3. Agenda – 自動採番列 (12.1) – 文字列型の最大長 (12.1) – FETCH n ROWS (12.1) – オブジェクト名最大長 (12.2) – 照合 (12.2) – JSONデータ (12.1 / 12.2) 3
  • 5. Oracle Database 12c新機能 自動採番列 5 RDBMS 自動採番列の構文 MySQL AUTO_INCREMENT列属性 PostgreSQL serial, bigserial, smallserial型 DB2 GENERATE ALWAYS 列属性 SQL Server IDENTITY列属性 Vertica AUTO_INCREMENT列属性 IDENTITY列属性
  • 6. Oracle Database 12c新機能 自動採番列 6 – 実体は自動生成される SEQUENCE オブジェクトと DEFAULT の組み合わせ – 利用するためには CREATE TABLE システム権限に加えて CREATE SEQUENCE システム権限が必要 – Oracle Database 12c (12.1) から利用可能 – GENERATED ALWAYS AS IDENTITY 列属性 – 常に自動採番値を生成、更新不可 – GENERATED BY DEFAULT AS IDENTITY 列属性 – ユーザーが更新可能 SQL> CREATE TABLE idtbl1 (id NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH 10), val VARCHAR2(10)) ;
  • 7. Oracle Database 12c新機能 文字列型最大長 7 RDBMS CHAR VARCHAR MySQL 255 65,535 PostgreSQL 10,485,760 10,485,760 DB2 255 32,704 SQL Server 8,000 2 GB Vertica 65,000 65,000 Oracle Database 11g (11.2) 2,000 4,000
  • 8. Oracle Database 12c新機能 文字列型最大長 8 – Oracle Database 12c (12.1) から VARCHAR2 型 / NVARCHAR2 型 / RAW 型の最大長を 32,767 バイトに拡張可能 – CHAR / NCHAR 型の最大長はそのまま – PL/SQL の最大長に合致 – 初期化パラメーター MAX_STRING_SIZE = EXTENDED が必要 – @?/rdbms/admin/utl32k.sql の実行 – @?/rdbms/admin/utlrp.sql の実行 – 再起動 – 一旦変更すると元に戻せない – 初期化パラメーター COMPATIBLE >= 12.0.0.0 も必要 – 内部的には初期化パラメーター _scalar_type_lob_storage_threshold (Default 2,000) を超えるデータはインライン BLOB 型に変換して保存
  • 9. Oracle Database 12c新機能 FETCH n ROWS 9 RDBMS 最初の 10 レコード取得 MySQL LIMIT 10 PostgreSQL FETCH FIRST 10 ROWS ONLY DB2 FETCH FIRST 10 ROWS ONLY SQL Server TOP 10 FETCH FIRST 10 ROWS ONLY Vertica LIMIT 10 SELECT first_name, last_name, salary FROM ( SELECT first_name, last_name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) ranking FROM employees) WHERE ranking <= 10 – Oracle Database 11g の記述
  • 10. Oracle Database 12c新機能 FETCH n ROWS 10 – Oracle Database 12c (12.1) から OFFSET n ROWS FETCH FIRST m ROWS ONLY 構文が利用可能 SQL> SELECT first_name, last_name, salary FROM employees ORDER BY salary DESC FETCH FIRST 10 ROWS ONLY ; – OFFSET n ROWS 句を指定して途中を抜き出すこともできる – 実行計画を確認すると内部的には ROW_NUMBER 関数を使っている 1 - filter("from$_subquery$_002"."rowlimit_$$_rownumber"<=10) 2 - filter(ROW_NUMBER() OVER ( ORDER BY "EMPLOYEES".“SALARY" )<=10)
  • 11. Oracle Database 12c新機能 オブジェクト名最大長 11 RDBMS 最大長 MySQL 64 char PostgreSQL 63 bytes DB2 128 bytes SQL Server 128 char Vertica 128 bytes Oracle Database 12c (12.1) 30 bytes – 主要 RDBMS のオブジェクト名の最大長
  • 12. Oracle Database 12c新機能 オブジェクト名最大長 12 – V$PDBS ビューの NAME 列, DBA_PDBS ビューの PDB_NAME 列は 128 バイトだが? オブジェクト 最大長 データベース名 8 bytes 表領域名 30 bytes サービス名 64 bytes ASMディスクグループ 30 bytes PDB名 30 bytes – Oracle Database 12c (12.2) から主なオブジェクトの最大長は 128 バイト – 初期化パラメーター COMPATIBLE >= 12.2 が必要 – 以下は例外
  • 13. Oracle Database 12c新機能 照合(COLLATION) 13 – 日本語環境で標準インストールした場合 – 文字列型による大文字/小文字の区別 RDBMS 大文字/小文字区別 列単位に変更 MySQL しない ○ PostgreSQL する × DB2 する × SQL Server しない ○ Vertica する × Oracle Database 12c (12.1) する × – Oracle Database のデフォルトは初期化パラメーター NLS_COMP, NLS_SORT に依存
  • 14. Oracle Database 12c新機能 照合(COLLATION) 14 – 使用条件 – 初期化パラメーター COMPATIBLE >= 12.2 – 初期化パラメーター MAX_STRING_SIZE=EXTENDED – Oracle Database 12c (12.2) では列/テーブル単位に COLLATE 指定可能 – 確認方法は ALL_TAB_COLUMNS ビューの COLLATION 列、ALL_TABLES ビューの DEFAULT_COLLATION 列 SQL> CREATE TABLE table_name1 (val VARCHAR2(10)) DEFAULT COLLATION BINARY_AI ; SQL> CREATE TABLE table_name2 (id NUMERIC, val VARCHAR2(10) COLATE BINARY_CI) ;
  • 15. Oracle Database 12c新機能 照合(COLLATION) 15 SQL> CREATE TABLE collate1 (col1 VARCHAR2(10), col2 VARCHAR2(10) COLLATE BINARY_CI) ; SQL> INSERT INTO collate1 VALUES ('ABC', 'ABC') ; SQL> INSERT INTO collate1 VALUES ('abc' 'abc') ; SQL> SELECT * FROM collate1 WHERE col1='abc' ; COL1 COL2 ---------- ---------- abc abc SQL> SELECT * FROM collate1 WHERE col2='abc' ; COL1 COL2 ---------- ---------- ABC ABC abc abc
  • 16. Oracle Database 12c新機能 照合(COLLATION) 16 SQL> SELECT * FROM collate1 c1 INNER JOIN collate2 c2 ON c1.col1 = c2.col2 ; SELECT * FROM collate1 c1 INNER JOIN collate2 c2 ON c1.col1 = c2.col2 * 行1でエラーが発生しました。: ORA-43915: 照合を決定できません: 引数に競合する照合があります – COLLATION が異なる列は直接結合できない SQL> SELECT * FROM collate1 c1 INNER JOIN collate2 c2 ON c1.col1 COLLATE BINARY_CI = c2.col2 ; – COLLATION を合わせてから結合する
  • 17. Oracle Database 12c新機能 照合(COLLATION) 17 SQL> SELECT * FROM collate1 WHERE col2='ABC' ; Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(NLSSORT("COL2",'nls_sort=''BINARY_CI''')=HEXTORAW('61626300')) – 実行計画を確認すると、自動的に NLSSORT 関数を実行している
  • 18. Oracle Database 12c新機能 JSONデータ対応 18 RDBMS データ型 関数 演算子 MySQL JSON ○ ○ PostgreSQL JSON, JSONB ○ ○ DB2 - ○ - SQL Server - ○ - Vertica - ○ ○ Oracle Database 12c (12.1) - ○ - – Oracle Database 12c (12.2) では、JSON データを生成する関数、パッケー ジが追加された
  • 19. Oracle Database 12c新機能 JSONデータ対応 19 – JSON 専用のデータ型は未提供(VARCHAR2, CLOB を利用) – 条件式が利用可能 – IS JSON / IS NOT JSON – JSON_EXISTS – JSON_TEXTCONTAINS – 関数 – JSON_ARRAY / JSON_ARRAYAGG (12.2) – JSON_DATAGUIDE (12.2) – JSON_OBJECT / JSON_OBJECTAGG (12.2) – JSON_QUERY – JSON_TABLE – JSON_VALUE – DBMS_JSON パッケージ (12.2) – CREATE SEARCH INDEX FOR JSON
  • 20. Oracle Database 12c新機能 JSONデータ対応 20 SQL> SELECT JSON_ARRAY ( 2 JSON_OBJECT('Percentage' VALUE .30), 3 JSON_ARRAY('A', 'B', 'C') 4 ) FROM DUAL ; JSON_ARRAY(JSON_OBJECT('PERCENTAGE'VALUE.30),JSON_ARRAY('A ','B','C')) -------------------------------------------------------------------------------- [{"Percentage":0.3},["A","B","C"]] SQL> – JSON データ生成関数が追加(12.2)