SlideShare a Scribd company logo
1 of 7
Download to read offline
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

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

What's hot (18)

配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
MySQL日本語利用徹底入門
MySQL日本語利用徹底入門MySQL日本語利用徹底入門
MySQL日本語利用徹底入門
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
 
MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
 
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
 
[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
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
 

Similar to Add PLEASE clause to Oracle Database

Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
20131209_buildinsidermeetup
20131209_buildinsidermeetup20131209_buildinsidermeetup
20131209_buildinsidermeetupkumake
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1オラクルエンジニア通信
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?Masayuki Ozawa
 
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)uroboroSQLの紹介 (OSC2017 Tokyo/Spring)
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)Kenichi Hoshi
 
Oracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDLOracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDLKentaro Kitagawa
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪Yohei Azekatsu
 
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
Oracle Cloud Platform - クラクドにおける新たなデータベース開発Oracle Cloud Platform - クラクドにおける新たなデータベース開発
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発オラクルエンジニア通信
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyaKenichi Hoshi
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRecruit Technologies
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003Shinya Sugiyama
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術Oda Shinsuke
 
各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-
各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-
各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-Yoshinori Nakanishi
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Hiroshi Hayakawa
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key泰 増田
 
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用elanlilac
 
[LT] T sql の parse と generator
[LT] T sql の parse と generator[LT] T sql の parse と generator
[LT] T sql の parse と generatorOda Shinsuke
 
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi ShinodaInsight Technology, Inc.
 
[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...
[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...
[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...Insight Technology, Inc.
 

Similar to Add PLEASE clause to Oracle Database (20)

Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
20131209_buildinsidermeetup
20131209_buildinsidermeetup20131209_buildinsidermeetup
20131209_buildinsidermeetup
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
 
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)uroboroSQLの紹介 (OSC2017 Tokyo/Spring)
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)
 
Oracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDLOracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDL
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪
 
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
Oracle Cloud Platform - クラクドにおける新たなデータベース開発Oracle Cloud Platform - クラクドにおける新たなデータベース開発
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-
各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-
各スペシャリストがお届け!データベース最新情報セミナー -PostgreSQL10-
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用
 
[LT] T sql の parse と generator
[LT] T sql の parse と generator[LT] T sql の parse と generator
[LT] T sql の parse と generator
 
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
 
[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...
[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...
[data analytics showcase] B16: Live Demo! データ分析基盤を支えるデータレプリケーション技術とデータワークロード分...
 

More from Noriyoshi Shinoda

PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationNoriyoshi Shinoda
 
Citus 10 verification result (Japanese)
Citus 10 verification result (Japanese)Citus 10 verification result (Japanese)
Citus 10 verification result (Japanese)Noriyoshi Shinoda
 
PostgreSQL 14 Beta1 New Features with Examples (Japanese)
PostgreSQL 14 Beta1 New Features with Examples (Japanese)PostgreSQL 14 Beta1 New Features with Examples (Japanese)
PostgreSQL 14 Beta1 New Features with Examples (Japanese)Noriyoshi Shinoda
 
PostgreSQL 14 Beta 1 New Features with Examples (English)
PostgreSQL 14 Beta 1 New Features with Examples (English)PostgreSQL 14 Beta 1 New Features with Examples (English)
PostgreSQL 14 Beta 1 New Features with Examples (English)Noriyoshi Shinoda
 
PostgreSQL 12 New Features with Examples (English) GA
PostgreSQL 12 New Features with Examples (English) GAPostgreSQL 12 New Features with Examples (English) GA
PostgreSQL 12 New Features with Examples (English) GANoriyoshi Shinoda
 
PostgreSQL 12 Beta 1 New Features with Examples (Japanese)
PostgreSQL 12 Beta 1 New Features  with Examples (Japanese)PostgreSQL 12 Beta 1 New Features  with Examples (Japanese)
PostgreSQL 12 Beta 1 New Features with Examples (Japanese)Noriyoshi Shinoda
 
PostgreSQL 12 Beta 1 New Features with Examples (English)
PostgreSQL 12 Beta 1 New Features with Examples (English)PostgreSQL 12 Beta 1 New Features with Examples (English)
PostgreSQL 12 Beta 1 New Features with Examples (English)Noriyoshi Shinoda
 
Let's scale-out PostgreSQL using Citus (English)
Let's scale-out PostgreSQL using Citus (English)Let's scale-out PostgreSQL using Citus (English)
Let's scale-out PostgreSQL using Citus (English)Noriyoshi Shinoda
 
PostgreSQL 11 New Features With Examples (Japanese)
PostgreSQL 11 New Features With Examples (Japanese)PostgreSQL 11 New Features With Examples (Japanese)
PostgreSQL 11 New Features With Examples (Japanese)Noriyoshi Shinoda
 
PostgreSQL 11 New Features With Examples (English)
PostgreSQL 11 New Features With Examples (English)PostgreSQL 11 New Features With Examples (English)
PostgreSQL 11 New Features With Examples (English)Noriyoshi Shinoda
 
PostgreSQL 11 New Features Japanese version (Beta 1)
PostgreSQL 11 New Features Japanese version (Beta 1)PostgreSQL 11 New Features Japanese version (Beta 1)
PostgreSQL 11 New Features Japanese version (Beta 1)Noriyoshi Shinoda
 
PostgreSQL 11 New Features English version (Beta 1)
PostgreSQL 11 New Features English version (Beta 1)PostgreSQL 11 New Features English version (Beta 1)
PostgreSQL 11 New Features English version (Beta 1)Noriyoshi Shinoda
 
PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)Noriyoshi Shinoda
 
PostgreSQL 10 New Features (English)
PostgreSQL 10 New Features (English)PostgreSQL 10 New Features (English)
PostgreSQL 10 New Features (English)Noriyoshi Shinoda
 
PostgreSQL 10 Beta1 New Features (Japanese)
PostgreSQL 10 Beta1 New Features (Japanese)PostgreSQL 10 Beta1 New Features (Japanese)
PostgreSQL 10 Beta1 New Features (Japanese)Noriyoshi Shinoda
 
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)PostgreSQL Internals (1) for PostgreSQL 9.6 (English)
PostgreSQL Internals (1) for PostgreSQL 9.6 (English)Noriyoshi Shinoda
 

More from Noriyoshi Shinoda (17)

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

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (9)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

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