SlideShare a Scribd company logo
1 of 35
Download to read offline
1
Standard Edition 2でも使える
Oracle Database 12c Release 2
オススメ新機能
2016年11月17日
Japan Oracle User Group 渡部 亮太
2
自己紹介+所属会社紹介
渡部 亮太(わたべ りょうた)
– 著書「プロとしてのOracleアーキテクチャ入門
[第2版]」 「プロとしてのOracle運用管理入門」
– 講演実績多数
– ブログ「コーソルDatabaseエンジニアのBlog」
http://cosol.jp/techdb/
– JPOUG 共同創設者、ボードメンバー
– Oracle ACE
株式会社コーソル
– 「CO-Solutions=共に解決する」の理念のもと、Oracle技術に特化
した事業を展開中。心あるサービスの提供とデータベースエンジニア
の育成に注力している
– 社員数: 131名 (2016年11月時点)
– ORACLE MASTER Platinum 11g 取得者数 45名
ORACLE MASTER Platinum 12c 取得者数 32名
取得者数 日本 No.1 (日本オラクル様Webページより)
http://www.oracle.com/jp/education/omdata-171891-ja.html
3
今日の発表について
• リリースとともに華々しく宣伝される新機能の大部分は
大抵有償オプションがないと使用できない・・・
とお感じの皆様!
12.2新機能には、Standard Edition 2でも使用できるも
のがちゃんとありますよ! というお話です。
• オンプレミス版Oracle Database 12c Release 2のリ
リース前であるため、機能を使用可能なライセンス
(Edition/Option/Pack)に認識違いがある可能性がありま
す。リリース後に、ご自身でチェックいただけますよう
お願いいたします。
• 今日の内容が、皆さんの今後のご提案のお役にたてば、
また、現場での会話のネタになれば、嬉しいです 
4
[参考] 2016年11月時点の12c R2リリース状況
• Oracle Cloudにリリース
– オンプレミス版(ダウンロード版)は未リリース
• 英語版マニュアルは公開済
http://docs.oracle.com/database/122/nav/portal_booklist.htm
– 日本語版マニュアルは未公開
5
今回ご紹介する12.2新機能
• Long Identifiers
• UNIFORM_LOG_TIMESTAMP_FORMAT
• Handling Data Errors with SQL
• Approximate Query Processing
• ON STATEMENT Refresh for Materialized Views
• Real-time Materialized Views
• Data-Bound Collation
• SQL*Plus Command History
• SQL*Plus CSV Output
6
Long Identifiers
7
Long Identifiers
オブジェクト名の長さ制限を大幅に緩和
• 長い日本語のオブジェクト名が使いやすく
version 最大サイズ 最大文字数 (日本語、UTF-8換算)
12.1以前 30バイト 10文字
12.2 128バイト 42文字
SQL> CREATE TABLE T_店別月次商品売上実績 ( store_id number, month date, amount
number);
CREATE TABLE T_店別月次商品売上実績 ( store_id number, month date, amount number)
*
行1でエラーが発生しました。:
ORA-00972: 識別子が長すぎます。
12.1
SQL> CREATE TABLE T_店別月次商品売上実績 ( store_id number, month date, amount
number);
表が作成されました。
12.2
※:DBキャラクタセットAL32UTF8で検証
8
UNIFORM_LOG_
TIMESTAMP_FORMAT
9
UNIFORM_LOG_TIMESTAMP_FORMAT
ログファイルのタイムスタンプ フォーマットを変更する
初期化パラメータ
• YYYY-MM-DDThh:mm:ss.??????TZ形式
• デフォルトでtrue!なことに注意
• 影響するログファイル
– テキスト形式のアラートログ / トレースファイル
– リスナーログの扱いについては調査中
2016-11-07T10:15:27.142353+09:00
Starting ORACLE instance (normal) (OS id: 6640)
2016-11-07T10:15:27.148320+09:00
CLI notifier numLatches:3 maxDescs:519
alert_XXX.log (UNIFORM_LOG_TIMESTAMP_FORMAT=true)
10
Handling Data Errors with SQL
11
Handling Data Errors with SQL
データ型の変換処理におけるエラーに対応するためのSQL
機能強化
• 変換NGな異常データは通常ごく一部、一部の異常データ
のために変換処理全体がロールバックされるのは非効率
• 外部データ(他DB、非構造化データ)を取り込むケースが増加
→ 変換エラー発生は避けがたい → 効率的な対処が必要
# 狙い SQL機能強化
1 変換NGな一部データを、
デフォルト値に一律変換する
TO_<データ型>ファンクションに
デフォルト値を設定可能に
2 変換NGな一部データを、
変換実行前に特定可能に
VALIDATE_CONVERSION(<データ>
AS <データ型>)ファンクションで変換
OK or NGを判定可能に
[参考] DMLエラーロギング (従来機能)
• 変換NGな一部データをスキップして、変換OKなデータのみを処理
• 変換NGな一部データはエラーロギング表に記録
12
TO_<データ型>ファンクションのデフォルト値
id amount (varchar2型)
1 100
2 200
3 XXX
4 400
SQL> INSERT INTO cnv_dst (SELECT id, TO_NUMBER(amount) FROM cnv_src);
INSERT INTO cnv_dst (SELECT id, TO_NUMBER(amount) FROM cnv_src)
*
行1でエラーが発生しました。:
ORA-01722: 数値が無効です。
SQL> INSERT INTO cnv_dst
(SELECT id, TO_NUMBER(amount DEFAULT 999 ON CONVERSION ERROR) FROM cnv_src);
4行が作成されました。
id amount (number型)
id amount (varchar2型)
1 100
2 200
3 XXX
4 400
id amount (number型)
1 100
2 200
3 999
4 400
変換OKデータを含め
全データ変換されず
変換NGデータは
デフォルト値に変換
13
VALIDATE_CONVERSIONファンクション
VALIDATE_CONVERSION(<データ> AS <データ型>)
– 変換OK → 戻り値 1
– 変換NG → 戻り値 0
使用例 : 変換処理の事前チェック
id amount (varchar2型)
1 100
2 200
3 XXX
4 400
SQL> SELECT id, amount FROM cnv_src
2 WHERE VALIDATE_CONVERSION(amount AS NUMBER) = 0;
ID AMOUNT
---------- --------------------
3 XXX
id amount (number型)
変換NGデータを特定
14
アイディア:外部表を用いたデータロードに活用
• データロードに伴う型変換を含むデータ処理をSQLで
– 外部表のORACLE_LOADERアクセスドライバを用いて型変換を実行
しない
– 外部表のDDL(≒SQL*Loaderの制御ファイル文法)をシンプルに
id amount
(number型)
id amount
(VARCHAR2型)
外部表 表(データロード先)
CREATE TABLE "TBL_EXT2"
(
"ID" VARCHAR2(255),
"AMOUNT" VARCHAR2(255)
)
ORGANIZATION external
(
… < SQL*Loaderの制御ファ
イル文法> …
);
INSERT INTO tbl_to
SELECT id,
TO_NUMBER(amount DEFAULT 0 ON CONVERSION
ERROR),
FROM TBL_EXT2;
フラットファ
イルなど
型変換
15
Approximate Query Processing
16
Approximate Query Processing
• 12.1.0.2で導入されたApproximate Query Processing
(近似値を高速に返すSQL処理)を強化
1. Approx系ファンクションの追加
2. 非Approx系ファンクションをApprox処理に自動的に置
換するパラメータの追加
version ファンクション 相当する機能
12.1.0.2 APPROX_COUNT_DISTINCT() COUNT(DISTINCT <列>)
12.2 APPROX_FOR_PERCENTILE() PERCENTILE_CONT()
PERCENTILE_DISC()
初期化パラメータ 置換処理
APPROX_FOR_COUNT_DISTINCT COUNT(DISTINCT <列>)
→ APPROX_COUNT_DISTINCT()
APPROX_FOR_PERCENTILE PERCENTILE_CONT()
PERCENTILE_DISC()
→ APPROX_FOR_PERCENTILE()
17
Approximate Query Processing
3. MVIEWを用いたApprox処理の高速化向け機能拡張
y m d name1
2016 1 1 xx1
2016 1 1 xx2
2016 1 2 xx1
2016 1 2 xx3
2016 1 2 xx2
2016 1 3 xx1
2016 1 3 xx4
2016 1 3 xx1
2016 1 4 xx5
2016 1 4 xx6
y m d apx1
2016 1 1 (BLOB)
2016 1 2 (BLOB)
2016 1 3 (BLOB)
2016 1 4 (BLOB)
CREATE MATERIALIZED VIEW mv0_ymd AS
SELECT y, m, d,
APPROX_COUNT_DISTINCT_DETAIL(name1) apx1
FROM tbl0 GROUP BY y, m, d;
SELECT y, m, d,
TO_APPROX_COUNT_DISTINCT(apx1)
FROM mv0_ymd;
MVIEWとして事前
計算し独自BLOB形
式で保持
y m d cnt
2016 1 1 2
2016 1 2 3
2016 1 3 2
2016 1 4 2
SELECT y, m, d,
APPROX_COUNT_DISTINCT(name1) cnt
FROM tbl0 GROUP BY y, m, d;
問合せ結果 MVIEW
元データの表
元データの表に直接APPROX_COUNT_DISTINCT
を実行するのと同等
18
Approximate Query Processing
y m d name1
2016 1 1 xx1
2016 1 1 xx2
2016 1 2 xx1
2016 1 2 xx3
2016 1 2 xx2
2016 1 3 xx1
2016 1 3 xx4
2016 1 3 xx1
2016 1 4 xx5
2016 1 4 xx6
y m d apx1
y m cnt
y m d cnt
y cnt
y m apx1
y apx1
CREATE MATERIALIZED VIEW mv0_ym
SELECT y, m,
APPROX_COUNT_DISTINCT_AGG(apx1) apx1
FROM mv0_ymd GROUP BY y, m;
SELECT y, m, d,
TO_APPROX_COUNT_DISTINCT(apx1)
FROM mv0_ymd;
元データの表
SELECT y,
TO_APPROX_COUNT_DISTINCT(apx1)
FROM mv0_y;
CREATE MATERIALIZED VIEW mv0_y
SELECT y,
APPROX_COUNT_DISTINCT_AGG(apx1) apx1
FROM mv0_ym GROUP BY y, m;
SELECT y, m,
TO_APPROX_COUNT_DISTINCT(apx1)
FROM mv0_ym;
MVIEW問合せ結果
CREATE MATERIALIZED VIEW mv0_ymd AS
SELECT y, m, d,
APPROX_COUNT_DISTINCT_DETAIL(name1) apx1
FROM tbl0 GROUP BY y, m, d;
19
ON STATEMENT Refresh for
Materialized Views
20
ON STATEMENT Refresh for Mviews
コミットを待たずにDML実行でMVIEWをリフレッシュ
• マスタ表へDMLを実行すると、背後でMVIEWも更新され
ているイメージ
マスタ表 MVIEW マスタ表 MVIEW
ON COMMIT Refresh ON STATEMENT Refresh
UPDATE
INSERT
COMMIT
UPDATE
INSERT
COMMITUPD+INS分
を反映
COMMIT
COMMIT
UPD分を反映
INS分を反映
21
ON STATEMENT Refreshとトランザクション
MVIEW更新も含めて同一のトランザクションにカプセル化
されているイメージ
• マスタ表の更新をrollbackすると、MVIEWの更新も
rollbackされる
• マスタ表の更新をcommitする前に、他セッションが
MVIEWを参照しても、更新前のデータのまま
(Read Committed分離性)
– マスタ表の更新するセッションがMVIEWを参照すると、更新さ
れたデータが得られる
22
ON STATEMENT Refreshの制約
意外と制約が多いことに注意
• MVIEWは高速リフレッシュできる必要がある
• MVIEWを定義するSELECT文にファクト表のrowidを含
める必要がある
• 併用できない機能がいくつか: 非可視列、ANSIジョイン、
(MVIEWの観点からみて)複雑なクエリ、インライン
ビュー、複合主キー、LONG型、LOB型
• ディメンション表を更新すると、ステータスがunusable
い
• などなど
23
ON STATEMENT Refreshを利用すべき状況
• ON COMMIT高速リフレッシュにおけるMVIEWログのメ
ンテナス負荷が問題になる場合
マスタ表 MVIEW
ON COMMIT高速リフレッシュの内部動作
UPDATE
INSERT
COMMIT
MVIEWログから
更新内容を特定し反映
COMMIT
MVIEWログ
更新を記録
更新を記録
• マスタ表の更新中に、そのセッションで更新された
MVIEWを参照したい場合
24
Real-time Materialized Views
25
Real-time Materialized Views
MVの新鮮さとリフレッシュ負荷のトレードオフ問題を解決
• MVIEWのデータを最新にするには、
MVIEWの頻繁なリフレッシュが必要 → 負荷の増加
モード 動作概要 MVデータの
新鮮さ
マスタ表 更新頻発時の
リフレッシュ負荷
ON
COMMIT
マスタ表への更新コミット時
に毎回リフレッシュ
◎ × 更新都度リフレッシュ
するため
ON
DEMAND
自動リフレッシュなし
適宜手動でリフレッシュ
× リフレッシュ
しないと古いまま
◎
定期リフ
レッシュ
ジョブで定期的にリフレッ
シュ
? リフレッシュ
頻度に依存
△ある程度新しいが最新
ではない
マスタ表 MVIEW
既存リレッシュ機能の整理
更新 リフレッシュ
26
Real-time Materialized Viewsの概念
MVをリフレッシュしなくても、最新のデータが得られる
• MVの古いデータ+MVログ → 最新データ
マスタ表 MVIEW
MVIEWログ
マスタ表への
更新内容
古いデータ
データの
乖離
参照
最新のデータ
最新のデータ
参照時にリフレッシュ相当の負荷が発生するが、
更新頻度>>参照頻度であれば、トータルの負荷は
軽減できると想定
更新
27
Real-time Materialized Viewsの使用方法
Real-time Materialized Viewsの構成
• ENABLE ON QUERY COMPUTATION句を指定してMVIEW
を作成
• マスタ表にMVIEWログが必要
• 定期リフレッシュと組み合わせで使用するのがオススメ
Real-time Materialized Viewsから最新データを得る
a. クエリリライト(要EE)を有効にして、マスタ表に問合せ
b. /*+ FRESH_MV */ヒントを指定して、MVIEWに直接問合
せを発行
28
Data-Bound Collation
29
Data-Bound Collation
データベース側でCollationを設定可能に
• Collation(照合) ≒ 文字列のソート・文字の等価規則
• 以下の設定が必要なことに注意
– MAX_STRING_SIZE=EXTENDED、COMPATIBILITY>=12.2
• MAX_STRING_SIZE=EXTENDEDは文字列データの最大長を32Kバ
イトまで拡張する12.1新パラメータ
version 設定方法 設定単位・影響範囲
12.1以前 NLS_SORT
初期化パラメータ
セッション(ALTER SESSION)
インスタンス(ALTER SYSTEM)
12.2 各種DDLの
COLLATION /
COLLATE句
カラム
テーブル
スキーマ
他
動的・
ユーザー側
静的・
データベース側
30
Data-Bound Collation
id str ・・・
A ・・・
a ・・・
A ・・・
12.1
NLS_COMP=LINGUISTIC
NLS_SORT=JAPANESE_M_CI
a → a → A → A
→ b → b → B → B
12.2 Data-Bound Collation
NLS_COMP=BINARY
NLS_SORT=BINARY
A → B → a → b
→ A → B → a → b
SELECT ... ORDER BY ...
SELECT ... ORDER BY ...
NLS_COMP=<XXX>
NLS_SORT=<XXX>
a → a → A → A
→ b → b → B → B
SELECT ... ORDER BY ...
CREATE TABLE tab1(
str VARCHAR2(10) COLLATE JAPANESE_M_CI);
ユーザー側で動的に
Collationを指定
データベース側で静的に
Collationを指定
原則無視される
(無視しない設定も可能ではある)
id str ・・・
A ・・・
a ・・・
A ・・・
31
SQL*Plus Command History
32
SQL*Plus Command History
DBA待望!のコマンド履歴機能
• readlineライブラリによる実装で
ないのが残念…
→ 今後もrlwrapのお世話になりそう…
• とはいえ、ツール追加ができない
カスタマ環境では助かる
– 事前にset hist onを実行する必要が
ある点に注意!
SQL> set hist on
SQL> select * from dual;
D
-
X
SQL> show user
USER is "SYS"
SQL> hist
1 select * from dual;
2 show user
SQL> hist 1 run
D
-
X
33
SQL*Plus CSV Output
34
SQL*Plus CSV Output
問合せ結果をCSV形式で出力
• 診断情報、統計情報をExcelなどで分析するときに便利
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SQL> SELECT * FROM t_csv1;
N S D
---------- ---------------------------------------- -------------------
1 string1 2016-01-01 01:00:00
2 string2 2016-01-01 02:00:00
SQL> set markup csv on delimiter , quote on
SQL> SELECT * FROM t_csv1;
"N","S","D"
1,"string1","2016-01-01 01:00:00"
2,"string2","2016-01-01 02:00:00"
35
SQL*Plus CSV Output
CSV特有の処理も実装済み!
SQL> set markup csv on delimiter , quote on
SQL> SELECT * FROM t_csv2;
"N","S"
1,"aaa""aaa"
2,"A
B"
3,"_______(略 - とても長い文字列)______"
①非数値データのみをクォート
②文字列データ中の"を""として出力
(ダブルクオート文字のエスケープ)
③文字列データ中の改行文字を改行とし
て出力
SQL> set colsep ','
SQL> SELECT * FROM t_csv2;
N,S
----------,----------------------------------------
1,aaa"aaa
2,A
,B
3,________________________________________
(略)
,_______________________________________
[参考] 従来の方法(苦肉の策だった…)では上記処理は実現できない
④表示幅(linesize)を超える文字列でも
データ途中で改行しない
③
①
②
④

More Related Content

What's hot

YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya MoritaInsight Technology, Inc.
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)Takanori Sejima
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術までAkihiro Suda
 
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャZero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャオラクルエンジニア通信
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)オラクルエンジニア通信
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13Uptime Technologies LLC (JP)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Masahito Zembutsu
 

What's hot (20)

YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Exadata X8M-2 KVM仮想化ベストプラクティス
Exadata X8M-2 KVM仮想化ベストプラクティスExadata X8M-2 KVM仮想化ベストプラクティス
Exadata X8M-2 KVM仮想化ベストプラクティス
 
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
 
PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャZero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
 

Similar to Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能

PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio KumazawaC11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio KumazawaInsight Technology, Inc.
 
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!yoyamasaki
 
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会オラクルエンジニア通信
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...オラクルエンジニア通信
 
Windows環境でのMySQL
Windows環境でのMySQLWindows環境でのMySQL
Windows環境でのMySQLyoyamasaki
 
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料yoyamasaki
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Noriyoshi Shinoda
 
MySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL WorkbenchMySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL Workbenchyoyamasaki
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0Ryusuke Kajiyama
 
Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)CLOUDIAN KK
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517akirahiguchi
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyaKenichi Hoshi
 
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏Insight Technology, Inc.
 
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介Machiko Ikoma
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?Masayuki Ozawa
 
BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理
BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理
BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理Yutaro Ono
 

Similar to Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能 (20)

PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration
 
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio KumazawaC11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
 
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
 
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
 
Windows環境でのMySQL
Windows環境でのMySQLWindows環境でのMySQL
Windows環境でのMySQL
 
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1
 
MySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL WorkbenchMySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL Workbench
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
 
Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
 
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介
20210305_MySQLベースのクエリ・アクセラレーターHeatWaveのご紹介
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
 
BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理
BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理
BigData-JAWS 2020-11-30 - AWS Batchによるデータ変換処理
 

More from Ryota Watabe

Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...Ryota Watabe
 
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2Ryota Watabe
 
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違いバックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違いRyota Watabe
 
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016 Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016 Ryota Watabe
 
全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会Ryota Watabe
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureRyota Watabe
 
Corruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUGCorruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUGRyota Watabe
 
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)Ryota Watabe
 
Analyzing Oracle Database hang issues using various diagnostics.
Analyzing Oracle Database hang issues using various diagnostics.Analyzing Oracle Database hang issues using various diagnostics.
Analyzing Oracle Database hang issues using various diagnostics.Ryota Watabe
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009Ryota Watabe
 
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~Ryota Watabe
 
Oracle Database In Lock
Oracle Database In LockOracle Database In Lock
Oracle Database In LockRyota Watabe
 

More from Ryota Watabe (12)

Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
Introduction of Oracle Database Architecture(抜粋版) - JPOUG Oracle Database入学式 ...
 
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
 
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違いバックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
 
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016 Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
 
全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database Architecture
 
Corruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUGCorruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUG
 
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
 
Analyzing Oracle Database hang issues using various diagnostics.
Analyzing Oracle Database hang issues using various diagnostics.Analyzing Oracle Database hang issues using various diagnostics.
Analyzing Oracle Database hang issues using various diagnostics.
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
 
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
 
Oracle Database In Lock
Oracle Database In LockOracle Database In Lock
Oracle Database In Lock
 

Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能

  • 1. 1 Standard Edition 2でも使える Oracle Database 12c Release 2 オススメ新機能 2016年11月17日 Japan Oracle User Group 渡部 亮太
  • 2. 2 自己紹介+所属会社紹介 渡部 亮太(わたべ りょうた) – 著書「プロとしてのOracleアーキテクチャ入門 [第2版]」 「プロとしてのOracle運用管理入門」 – 講演実績多数 – ブログ「コーソルDatabaseエンジニアのBlog」 http://cosol.jp/techdb/ – JPOUG 共同創設者、ボードメンバー – Oracle ACE 株式会社コーソル – 「CO-Solutions=共に解決する」の理念のもと、Oracle技術に特化 した事業を展開中。心あるサービスの提供とデータベースエンジニア の育成に注力している – 社員数: 131名 (2016年11月時点) – ORACLE MASTER Platinum 11g 取得者数 45名 ORACLE MASTER Platinum 12c 取得者数 32名 取得者数 日本 No.1 (日本オラクル様Webページより) http://www.oracle.com/jp/education/omdata-171891-ja.html
  • 3. 3 今日の発表について • リリースとともに華々しく宣伝される新機能の大部分は 大抵有償オプションがないと使用できない・・・ とお感じの皆様! 12.2新機能には、Standard Edition 2でも使用できるも のがちゃんとありますよ! というお話です。 • オンプレミス版Oracle Database 12c Release 2のリ リース前であるため、機能を使用可能なライセンス (Edition/Option/Pack)に認識違いがある可能性がありま す。リリース後に、ご自身でチェックいただけますよう お願いいたします。 • 今日の内容が、皆さんの今後のご提案のお役にたてば、 また、現場での会話のネタになれば、嬉しいです 
  • 4. 4 [参考] 2016年11月時点の12c R2リリース状況 • Oracle Cloudにリリース – オンプレミス版(ダウンロード版)は未リリース • 英語版マニュアルは公開済 http://docs.oracle.com/database/122/nav/portal_booklist.htm – 日本語版マニュアルは未公開
  • 5. 5 今回ご紹介する12.2新機能 • Long Identifiers • UNIFORM_LOG_TIMESTAMP_FORMAT • Handling Data Errors with SQL • Approximate Query Processing • ON STATEMENT Refresh for Materialized Views • Real-time Materialized Views • Data-Bound Collation • SQL*Plus Command History • SQL*Plus CSV Output
  • 7. 7 Long Identifiers オブジェクト名の長さ制限を大幅に緩和 • 長い日本語のオブジェクト名が使いやすく version 最大サイズ 最大文字数 (日本語、UTF-8換算) 12.1以前 30バイト 10文字 12.2 128バイト 42文字 SQL> CREATE TABLE T_店別月次商品売上実績 ( store_id number, month date, amount number); CREATE TABLE T_店別月次商品売上実績 ( store_id number, month date, amount number) * 行1でエラーが発生しました。: ORA-00972: 識別子が長すぎます。 12.1 SQL> CREATE TABLE T_店別月次商品売上実績 ( store_id number, month date, amount number); 表が作成されました。 12.2 ※:DBキャラクタセットAL32UTF8で検証
  • 9. 9 UNIFORM_LOG_TIMESTAMP_FORMAT ログファイルのタイムスタンプ フォーマットを変更する 初期化パラメータ • YYYY-MM-DDThh:mm:ss.??????TZ形式 • デフォルトでtrue!なことに注意 • 影響するログファイル – テキスト形式のアラートログ / トレースファイル – リスナーログの扱いについては調査中 2016-11-07T10:15:27.142353+09:00 Starting ORACLE instance (normal) (OS id: 6640) 2016-11-07T10:15:27.148320+09:00 CLI notifier numLatches:3 maxDescs:519 alert_XXX.log (UNIFORM_LOG_TIMESTAMP_FORMAT=true)
  • 11. 11 Handling Data Errors with SQL データ型の変換処理におけるエラーに対応するためのSQL 機能強化 • 変換NGな異常データは通常ごく一部、一部の異常データ のために変換処理全体がロールバックされるのは非効率 • 外部データ(他DB、非構造化データ)を取り込むケースが増加 → 変換エラー発生は避けがたい → 効率的な対処が必要 # 狙い SQL機能強化 1 変換NGな一部データを、 デフォルト値に一律変換する TO_<データ型>ファンクションに デフォルト値を設定可能に 2 変換NGな一部データを、 変換実行前に特定可能に VALIDATE_CONVERSION(<データ> AS <データ型>)ファンクションで変換 OK or NGを判定可能に [参考] DMLエラーロギング (従来機能) • 変換NGな一部データをスキップして、変換OKなデータのみを処理 • 変換NGな一部データはエラーロギング表に記録
  • 12. 12 TO_<データ型>ファンクションのデフォルト値 id amount (varchar2型) 1 100 2 200 3 XXX 4 400 SQL> INSERT INTO cnv_dst (SELECT id, TO_NUMBER(amount) FROM cnv_src); INSERT INTO cnv_dst (SELECT id, TO_NUMBER(amount) FROM cnv_src) * 行1でエラーが発生しました。: ORA-01722: 数値が無効です。 SQL> INSERT INTO cnv_dst (SELECT id, TO_NUMBER(amount DEFAULT 999 ON CONVERSION ERROR) FROM cnv_src); 4行が作成されました。 id amount (number型) id amount (varchar2型) 1 100 2 200 3 XXX 4 400 id amount (number型) 1 100 2 200 3 999 4 400 変換OKデータを含め 全データ変換されず 変換NGデータは デフォルト値に変換
  • 13. 13 VALIDATE_CONVERSIONファンクション VALIDATE_CONVERSION(<データ> AS <データ型>) – 変換OK → 戻り値 1 – 変換NG → 戻り値 0 使用例 : 変換処理の事前チェック id amount (varchar2型) 1 100 2 200 3 XXX 4 400 SQL> SELECT id, amount FROM cnv_src 2 WHERE VALIDATE_CONVERSION(amount AS NUMBER) = 0; ID AMOUNT ---------- -------------------- 3 XXX id amount (number型) 変換NGデータを特定
  • 14. 14 アイディア:外部表を用いたデータロードに活用 • データロードに伴う型変換を含むデータ処理をSQLで – 外部表のORACLE_LOADERアクセスドライバを用いて型変換を実行 しない – 外部表のDDL(≒SQL*Loaderの制御ファイル文法)をシンプルに id amount (number型) id amount (VARCHAR2型) 外部表 表(データロード先) CREATE TABLE "TBL_EXT2" ( "ID" VARCHAR2(255), "AMOUNT" VARCHAR2(255) ) ORGANIZATION external ( … < SQL*Loaderの制御ファ イル文法> … ); INSERT INTO tbl_to SELECT id, TO_NUMBER(amount DEFAULT 0 ON CONVERSION ERROR), FROM TBL_EXT2; フラットファ イルなど 型変換
  • 16. 16 Approximate Query Processing • 12.1.0.2で導入されたApproximate Query Processing (近似値を高速に返すSQL処理)を強化 1. Approx系ファンクションの追加 2. 非Approx系ファンクションをApprox処理に自動的に置 換するパラメータの追加 version ファンクション 相当する機能 12.1.0.2 APPROX_COUNT_DISTINCT() COUNT(DISTINCT <列>) 12.2 APPROX_FOR_PERCENTILE() PERCENTILE_CONT() PERCENTILE_DISC() 初期化パラメータ 置換処理 APPROX_FOR_COUNT_DISTINCT COUNT(DISTINCT <列>) → APPROX_COUNT_DISTINCT() APPROX_FOR_PERCENTILE PERCENTILE_CONT() PERCENTILE_DISC() → APPROX_FOR_PERCENTILE()
  • 17. 17 Approximate Query Processing 3. MVIEWを用いたApprox処理の高速化向け機能拡張 y m d name1 2016 1 1 xx1 2016 1 1 xx2 2016 1 2 xx1 2016 1 2 xx3 2016 1 2 xx2 2016 1 3 xx1 2016 1 3 xx4 2016 1 3 xx1 2016 1 4 xx5 2016 1 4 xx6 y m d apx1 2016 1 1 (BLOB) 2016 1 2 (BLOB) 2016 1 3 (BLOB) 2016 1 4 (BLOB) CREATE MATERIALIZED VIEW mv0_ymd AS SELECT y, m, d, APPROX_COUNT_DISTINCT_DETAIL(name1) apx1 FROM tbl0 GROUP BY y, m, d; SELECT y, m, d, TO_APPROX_COUNT_DISTINCT(apx1) FROM mv0_ymd; MVIEWとして事前 計算し独自BLOB形 式で保持 y m d cnt 2016 1 1 2 2016 1 2 3 2016 1 3 2 2016 1 4 2 SELECT y, m, d, APPROX_COUNT_DISTINCT(name1) cnt FROM tbl0 GROUP BY y, m, d; 問合せ結果 MVIEW 元データの表 元データの表に直接APPROX_COUNT_DISTINCT を実行するのと同等
  • 18. 18 Approximate Query Processing y m d name1 2016 1 1 xx1 2016 1 1 xx2 2016 1 2 xx1 2016 1 2 xx3 2016 1 2 xx2 2016 1 3 xx1 2016 1 3 xx4 2016 1 3 xx1 2016 1 4 xx5 2016 1 4 xx6 y m d apx1 y m cnt y m d cnt y cnt y m apx1 y apx1 CREATE MATERIALIZED VIEW mv0_ym SELECT y, m, APPROX_COUNT_DISTINCT_AGG(apx1) apx1 FROM mv0_ymd GROUP BY y, m; SELECT y, m, d, TO_APPROX_COUNT_DISTINCT(apx1) FROM mv0_ymd; 元データの表 SELECT y, TO_APPROX_COUNT_DISTINCT(apx1) FROM mv0_y; CREATE MATERIALIZED VIEW mv0_y SELECT y, APPROX_COUNT_DISTINCT_AGG(apx1) apx1 FROM mv0_ym GROUP BY y, m; SELECT y, m, TO_APPROX_COUNT_DISTINCT(apx1) FROM mv0_ym; MVIEW問合せ結果 CREATE MATERIALIZED VIEW mv0_ymd AS SELECT y, m, d, APPROX_COUNT_DISTINCT_DETAIL(name1) apx1 FROM tbl0 GROUP BY y, m, d;
  • 19. 19 ON STATEMENT Refresh for Materialized Views
  • 20. 20 ON STATEMENT Refresh for Mviews コミットを待たずにDML実行でMVIEWをリフレッシュ • マスタ表へDMLを実行すると、背後でMVIEWも更新され ているイメージ マスタ表 MVIEW マスタ表 MVIEW ON COMMIT Refresh ON STATEMENT Refresh UPDATE INSERT COMMIT UPDATE INSERT COMMITUPD+INS分 を反映 COMMIT COMMIT UPD分を反映 INS分を反映
  • 21. 21 ON STATEMENT Refreshとトランザクション MVIEW更新も含めて同一のトランザクションにカプセル化 されているイメージ • マスタ表の更新をrollbackすると、MVIEWの更新も rollbackされる • マスタ表の更新をcommitする前に、他セッションが MVIEWを参照しても、更新前のデータのまま (Read Committed分離性) – マスタ表の更新するセッションがMVIEWを参照すると、更新さ れたデータが得られる
  • 22. 22 ON STATEMENT Refreshの制約 意外と制約が多いことに注意 • MVIEWは高速リフレッシュできる必要がある • MVIEWを定義するSELECT文にファクト表のrowidを含 める必要がある • 併用できない機能がいくつか: 非可視列、ANSIジョイン、 (MVIEWの観点からみて)複雑なクエリ、インライン ビュー、複合主キー、LONG型、LOB型 • ディメンション表を更新すると、ステータスがunusable い • などなど
  • 23. 23 ON STATEMENT Refreshを利用すべき状況 • ON COMMIT高速リフレッシュにおけるMVIEWログのメ ンテナス負荷が問題になる場合 マスタ表 MVIEW ON COMMIT高速リフレッシュの内部動作 UPDATE INSERT COMMIT MVIEWログから 更新内容を特定し反映 COMMIT MVIEWログ 更新を記録 更新を記録 • マスタ表の更新中に、そのセッションで更新された MVIEWを参照したい場合
  • 25. 25 Real-time Materialized Views MVの新鮮さとリフレッシュ負荷のトレードオフ問題を解決 • MVIEWのデータを最新にするには、 MVIEWの頻繁なリフレッシュが必要 → 負荷の増加 モード 動作概要 MVデータの 新鮮さ マスタ表 更新頻発時の リフレッシュ負荷 ON COMMIT マスタ表への更新コミット時 に毎回リフレッシュ ◎ × 更新都度リフレッシュ するため ON DEMAND 自動リフレッシュなし 適宜手動でリフレッシュ × リフレッシュ しないと古いまま ◎ 定期リフ レッシュ ジョブで定期的にリフレッ シュ ? リフレッシュ 頻度に依存 △ある程度新しいが最新 ではない マスタ表 MVIEW 既存リレッシュ機能の整理 更新 リフレッシュ
  • 26. 26 Real-time Materialized Viewsの概念 MVをリフレッシュしなくても、最新のデータが得られる • MVの古いデータ+MVログ → 最新データ マスタ表 MVIEW MVIEWログ マスタ表への 更新内容 古いデータ データの 乖離 参照 最新のデータ 最新のデータ 参照時にリフレッシュ相当の負荷が発生するが、 更新頻度>>参照頻度であれば、トータルの負荷は 軽減できると想定 更新
  • 27. 27 Real-time Materialized Viewsの使用方法 Real-time Materialized Viewsの構成 • ENABLE ON QUERY COMPUTATION句を指定してMVIEW を作成 • マスタ表にMVIEWログが必要 • 定期リフレッシュと組み合わせで使用するのがオススメ Real-time Materialized Viewsから最新データを得る a. クエリリライト(要EE)を有効にして、マスタ表に問合せ b. /*+ FRESH_MV */ヒントを指定して、MVIEWに直接問合 せを発行
  • 29. 29 Data-Bound Collation データベース側でCollationを設定可能に • Collation(照合) ≒ 文字列のソート・文字の等価規則 • 以下の設定が必要なことに注意 – MAX_STRING_SIZE=EXTENDED、COMPATIBILITY>=12.2 • MAX_STRING_SIZE=EXTENDEDは文字列データの最大長を32Kバ イトまで拡張する12.1新パラメータ version 設定方法 設定単位・影響範囲 12.1以前 NLS_SORT 初期化パラメータ セッション(ALTER SESSION) インスタンス(ALTER SYSTEM) 12.2 各種DDLの COLLATION / COLLATE句 カラム テーブル スキーマ 他 動的・ ユーザー側 静的・ データベース側
  • 30. 30 Data-Bound Collation id str ・・・ A ・・・ a ・・・ A ・・・ 12.1 NLS_COMP=LINGUISTIC NLS_SORT=JAPANESE_M_CI a → a → A → A → b → b → B → B 12.2 Data-Bound Collation NLS_COMP=BINARY NLS_SORT=BINARY A → B → a → b → A → B → a → b SELECT ... ORDER BY ... SELECT ... ORDER BY ... NLS_COMP=<XXX> NLS_SORT=<XXX> a → a → A → A → b → b → B → B SELECT ... ORDER BY ... CREATE TABLE tab1( str VARCHAR2(10) COLLATE JAPANESE_M_CI); ユーザー側で動的に Collationを指定 データベース側で静的に Collationを指定 原則無視される (無視しない設定も可能ではある) id str ・・・ A ・・・ a ・・・ A ・・・
  • 32. 32 SQL*Plus Command History DBA待望!のコマンド履歴機能 • readlineライブラリによる実装で ないのが残念… → 今後もrlwrapのお世話になりそう… • とはいえ、ツール追加ができない カスタマ環境では助かる – 事前にset hist onを実行する必要が ある点に注意! SQL> set hist on SQL> select * from dual; D - X SQL> show user USER is "SYS" SQL> hist 1 select * from dual; 2 show user SQL> hist 1 run D - X
  • 34. 34 SQL*Plus CSV Output 問合せ結果をCSV形式で出力 • 診断情報、統計情報をExcelなどで分析するときに便利 SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; SQL> SELECT * FROM t_csv1; N S D ---------- ---------------------------------------- ------------------- 1 string1 2016-01-01 01:00:00 2 string2 2016-01-01 02:00:00 SQL> set markup csv on delimiter , quote on SQL> SELECT * FROM t_csv1; "N","S","D" 1,"string1","2016-01-01 01:00:00" 2,"string2","2016-01-01 02:00:00"
  • 35. 35 SQL*Plus CSV Output CSV特有の処理も実装済み! SQL> set markup csv on delimiter , quote on SQL> SELECT * FROM t_csv2; "N","S" 1,"aaa""aaa" 2,"A B" 3,"_______(略 - とても長い文字列)______" ①非数値データのみをクォート ②文字列データ中の"を""として出力 (ダブルクオート文字のエスケープ) ③文字列データ中の改行文字を改行とし て出力 SQL> set colsep ',' SQL> SELECT * FROM t_csv2; N,S ----------,---------------------------------------- 1,aaa"aaa 2,A ,B 3,________________________________________ (略) ,_______________________________________ [参考] 従来の方法(苦肉の策だった…)では上記処理は実現できない ④表示幅(linesize)を超える文字列でも データ途中で改行しない ③ ① ② ④