SlideShare a Scribd company logo
Oracle Database に PLEASE などいらぬ!
Noriyoshi Shinoda
April 12, 2021
SPEAKER
篠田典良(しのだのりよし)
– 所属
– 日本ヒューレット・パッカード株式会社
– 現在の業務
– Oracle Database, PostgreSQL, Microsoft SQL Server, Vertica 等 RDBMS 全般に関するシステムの設計、移
行、チューニング、コンサルティング
– Oracle ACE (2009 年 4 月~)
– Oracle Database 関連書籍15冊の執筆
– オープンソース製品に関する調査、検証
– 関連する 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
1
SQL Translation Framework
SQL 文の書き換え機能
– プロファイルの作成
SQL> BEGIN
2 DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION(
3 profile_name => 'TEST_PROFILE1',
4 sql_text => 'PLEASE SELECT SYSDATE FROM DUAL',
5 translated_text => 'SELECT SYSTIMESTAMP FROM DUAL');
6 END;
7 /
PL/SQLプロシージャが正常に完了しました。
SQL> EXEC DBMS_SQL_TRANSLATOR.CREATE_PROFILE('TEST_PROFILE1');
PL/SQLプロシージャが正常に完了しました。
– カスタム変換ルールの追加
2
SQL Translation Framework
SQL 文の書き換え機能
– SQL*Plus から実行
– 「SP2-0734」エラーが発生
SQL> ALTER SESSION SET events = '10601 trace name context forever, level 32';
セッションが変更されました。
SQL> ALTER SESSION SET sql_translation_profile = TEST_PROFILE1;
セッションが変更されました。
SQL> PLEASE SELECT SYSDATE FROM DUAL;
SP2-0734: "PLEASE SEL..."で開始するコマンドが不明です - 残りの行は無視されました。
3
Caused by: Error : 900, Position : 20, Sql = PLEASE SELECT SYSDATE FROM DUAL, OriginalSql = PLEASE
SELECT SYSDATE FROM DUAL, Error Msg = ORA-00900: invalid SQL statement
– Java アプリケーションから実行
– 「ORA-00900」エラーが発生
SQL Translation Framework
SQL 文の書き換え機能
SQL> BEGIN
2 DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION(
3 profile_name => 'TEST_PROFILE1',
4 sql_text => 'SELECT SYSDATE FROM DUAL WHERE 1=1 PLEASE',
5 translated_text => 'SELECT SYSTIMESTAMP FROM DUAL WHERE 1=1');
6 END;
7 /
PL/SQLプロシージャが正常に完了しました。
SQL> SELECT SYSDATE FROM DUAL WHERE 1=1 PLEASE;
SYSTIMESTAMP
---------------------------------------------------------------------------
21-04-12 18:01:09.278177 +09:00
– SELECT 文の最後に PLEASE をつけることで部分的に成功(PLEASE は SELECT 直後でも可)
4
Advanced Query Rewrite
SQL 文の書き換え機能
– Query Rewrite の登録
– 「ORA-30389」が発生し、変換ルールの登録すらできない。
SQL> BEGIN
2 SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE(
3 name => 'name1',
4 source_stmt => 'SELECT ''Before'' FROM DUAL2 WHERE 1=1 PLEASE',
5 destination_stmt => 'SELECT ''After'' FROM DUAL2 WHERE 1=1',
6 validate => FALSE,
7 rewrite_mode => 'GENERAL');
8 END;
9 /
BEGIN
*
行1でエラーが発生しました。:
ORA-30389: ソース文は宛先文と互換性がありません ORA-00907:右カッコがありません。 ORA-06512:
5
THANK YOU
Mail: noriyoshi.shinoda@hpe.com
Twitter: @nori_shinoda

More Related Content

What's hot (18)

PDF
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
PDF
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
 
PDF
MySQL ガチBeginnerがやってみたことと反省したこと
Satoshi Suzuki
 
PDF
DBスキーマもバージョン管理したい!
kwatch
 
PDF
MySQL日本語利用徹底入門
Mikiya Okuno
 
PDF
MySQL 5.7 Technical Update (日本語)
Shinya Sugiyama
 
PDF
MySQLインストールのお作法
Meiji Kimura
 
PDF
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
PDF
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Mikiya Okuno
 
KEY
My sql casual_in_fukuoka_vol1
Makoto Haruyama
 
PDF
Migr8.rb チュートリアル
kwatch
 
PDF
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
 
PDF
MySQL 5.7が魅せる新しい運用の形
yoku0825
 
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
 
PPTX
Ruby on Rails on MySQL チューニング入門
だいすけ さとう
 
PDF
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
Insight Technology, Inc.
 
PPTX
MySQL clients
yoku0825
 
PPTX
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
hiroi10
 
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
 
MySQL ガチBeginnerがやってみたことと反省したこと
Satoshi Suzuki
 
DBスキーマもバージョン管理したい!
kwatch
 
MySQL日本語利用徹底入門
Mikiya Okuno
 
MySQL 5.7 Technical Update (日本語)
Shinya Sugiyama
 
MySQLインストールのお作法
Meiji Kimura
 
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Mikiya Okuno
 
My sql casual_in_fukuoka_vol1
Makoto Haruyama
 
Migr8.rb チュートリアル
kwatch
 
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
 
MySQL 5.7が魅せる新しい運用の形
yoku0825
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
 
Ruby on Rails on MySQL チューニング入門
だいすけ さとう
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
Insight Technology, Inc.
 
MySQL clients
yoku0825
 
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
hiroi10
 

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
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
 
PDF
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
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
 
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
 
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
Noriyoshi Shinoda
 
Ad

Recently uploaded (8)

PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
Ad

Add PLEASE clause to Oracle Database

  • 1. Oracle Database に PLEASE などいらぬ! Noriyoshi Shinoda April 12, 2021
  • 2. SPEAKER 篠田典良(しのだのりよし) – 所属 – 日本ヒューレット・パッカード株式会社 – 現在の業務 – Oracle Database, PostgreSQL, Microsoft SQL Server, Vertica 等 RDBMS 全般に関するシステムの設計、移 行、チューニング、コンサルティング – Oracle ACE (2009 年 4 月~) – Oracle Database 関連書籍15冊の執筆 – オープンソース製品に関する調査、検証 – 関連する 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 1
  • 3. SQL Translation Framework SQL 文の書き換え機能 – プロファイルの作成 SQL> BEGIN 2 DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION( 3 profile_name => 'TEST_PROFILE1', 4 sql_text => 'PLEASE SELECT SYSDATE FROM DUAL', 5 translated_text => 'SELECT SYSTIMESTAMP FROM DUAL'); 6 END; 7 / PL/SQLプロシージャが正常に完了しました。 SQL> EXEC DBMS_SQL_TRANSLATOR.CREATE_PROFILE('TEST_PROFILE1'); PL/SQLプロシージャが正常に完了しました。 – カスタム変換ルールの追加 2
  • 4. SQL Translation Framework SQL 文の書き換え機能 – SQL*Plus から実行 – 「SP2-0734」エラーが発生 SQL> ALTER SESSION SET events = '10601 trace name context forever, level 32'; セッションが変更されました。 SQL> ALTER SESSION SET sql_translation_profile = TEST_PROFILE1; セッションが変更されました。 SQL> PLEASE SELECT SYSDATE FROM DUAL; SP2-0734: "PLEASE SEL..."で開始するコマンドが不明です - 残りの行は無視されました。 3 Caused by: Error : 900, Position : 20, Sql = PLEASE SELECT SYSDATE FROM DUAL, OriginalSql = PLEASE SELECT SYSDATE FROM DUAL, Error Msg = ORA-00900: invalid SQL statement – Java アプリケーションから実行 – 「ORA-00900」エラーが発生
  • 5. SQL Translation Framework SQL 文の書き換え機能 SQL> BEGIN 2 DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION( 3 profile_name => 'TEST_PROFILE1', 4 sql_text => 'SELECT SYSDATE FROM DUAL WHERE 1=1 PLEASE', 5 translated_text => 'SELECT SYSTIMESTAMP FROM DUAL WHERE 1=1'); 6 END; 7 / PL/SQLプロシージャが正常に完了しました。 SQL> SELECT SYSDATE FROM DUAL WHERE 1=1 PLEASE; SYSTIMESTAMP --------------------------------------------------------------------------- 21-04-12 18:01:09.278177 +09:00 – SELECT 文の最後に PLEASE をつけることで部分的に成功(PLEASE は SELECT 直後でも可) 4
  • 6. Advanced Query Rewrite SQL 文の書き換え機能 – Query Rewrite の登録 – 「ORA-30389」が発生し、変換ルールの登録すらできない。 SQL> BEGIN 2 SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE( 3 name => 'name1', 4 source_stmt => 'SELECT ''Before'' FROM DUAL2 WHERE 1=1 PLEASE', 5 destination_stmt => 'SELECT ''After'' FROM DUAL2 WHERE 1=1', 6 validate => FALSE, 7 rewrite_mode => 'GENERAL'); 8 END; 9 / BEGIN * 行1でエラーが発生しました。: ORA-30389: ソース文は宛先文と互換性がありません ORA-00907:右カッコがありません。 ORA-06512: 5