kagamihogeの日記

kagamihogeの日記です。

Oracle

WildFlyでSpringのJTA設定

JTAの実体はWildFlyを使用してSpringの設定を行う。 環境 jdk1.8.0_131 Eclipse 4.6.3 WildFly Full 10.1.0.Final ubuntu 16.04 Oracle Database 11g Release 2(11.2.0.1.0) Enterprise Edition PostgreSQL 9.5.6 ojdbc6.jar postgresql-42.1.1.jar 事前準備…

SQL Developer 4.2 Early Adopter 2のInstance ViewerのTop SQL

www.thatjeffsmith.com SQL Developerには4.1にinstance viewerというDBの現在の実行状態をグラフィカルに表示するツールが追加されている。4.2では更にTop SQLという機能が追加されるらしい。ので、実際に試してみる。instance viewerについは SQL Develope…

spring-batchでCSV出力

最近になって知ったのだけど、spring-batchには原始的ではあるものの良くある処理についてはクラスが用意されている。例えばSQL食わせるとreaderとして実行してくれるヤツとか。既存部品だけで素朴なものCSV出力くらいなら作れるっぽかった。なので、xmlのbe…

SQL Developer 4.1の新機能Multi-Cursor Editing, SQL Logging, Import Data Wizardを試す

環境 DB CentOS-6.5-x86_64 Oracle Database 11g Release 2(11.2.0.1.0) Enterprise Edition Java Java SE Development Kit 8u51 ツール Oracle SQL Developer 4.1.1(4.1.1.19) General Enhancments SQL Developer 4.1 New FeaturesによるとBy popular deman…

SQL Developer 4.1の新機能Instance Viewerを試す

環境 DB CentOS-6.5-x86_64 Oracle Database 11g Release 2(11.2.0.1.0) Enterprise Edition Java Java SE Development Kit 8u51 ツール Oracle SQL Developer 4.1.1(4.1.1.19) Instance Viewerの公式の説明 データベースの状態をグラフィカルに表現する新し…

SQL実践入門──高速でわかりやすいクエリの書き方

俺は実務経験をある程度こなしたあと、RDBの知識不足を認識したクチである。改めてRDBを勉強し始めて困ったことの一つは、実行計画の読み方がよくわからないことだった。もちろん、ぐぐればNESTED LOOP JOINが何かとかは出てくるし、公式のマニュアルも参考…

UPDATE10万件をマルチスレッドで分割

10万件のUPDATEをマルチスレッドで分割した場合、実行時間にどのような影響があるか。実際にやってみる。 環境 DB CentOS-6.5-x86_64 Oracle Database 11g Release 2(11.2.0.1.0) Enterprise Edition Java Java SE Development Kit 8u31 Eclipse Luna(4.4.1)…

インデックスがタクサンあるときのINSERTとUPDATEの速度

一般的に、インデックスを作りすぎるとINSERTやUPDATEのパフォーマンスに影響を与えるため、よろしくないとされている。今回は実際にはどういう現象を発生させるのか、を見てみる。 やること 100列のテーブルを作り、INSERTとUPDATEの速度を、インデックス数…

UPDATEのINSERT SELECT置換から学ぶ

概要 シバタツ流! DWHチューニングの極意 第4回 SQL書き換えテクニックによると、DWHにおけるUPDATEをダイレクトパスインサートを用いたINSERT /*+ APPNED */ INTO ... SELECT ...に置き換えることで高速化を見込める、というテクニックが紹介されている。…

Oracle Flashback QueryをSQL Developerでつかう

Oracle Flashback Technologyという機能は、たとえばついうっかりDELETEしちゃった行を元に戻すのに使える。EE以上で使用可能。SQL Developerに依存する機能ではないが、SCNの確認程度には便利なので、せっかくなので使う。 環境 DB CentOS-6.5-x86_64 Oracl…

Oracleのビットマップインデックスのロックを学ぶ

Oracleのビットマップインデックスを学ぶ - kagamihogeのblogでは、基本的な使い方とその構造について学習した。次に、一般的な解説として、ビットマップインデックスは更新時にビットマップ全体をロックするのでオンライン向けの機能では無い、とされること…

Oracleのビットマップインデックスを学ぶ

@kagamihoge ppは基本的にOracleサイトから落とせますよ( ^ω^) 商用利用せずに個人で実験するレベルであれば、製品版と同じ物を使用できますよ☆ xeは機能制限が多くて、、、— かーりん (@curry9999) August 5, 2014 OTN開発者ライセンス付きのソフトウエア…

30 SQL Developer Tips in 30 Daysをテキトーに訳した(16~30)

30 SQL Developer Tips in 30 Daysをテキトーに訳した(1~15) - kagamihogeの日記 ↑の続きの16~30です。 30 SQL Developer Tips in 30 Days, Day 16: Comparing In-Memory Results with Autotrace まず、このTipsはversion 4.0.3以上にアップグレードして…

30 SQL Developer Tips in 30 Daysをテキトーに訳した(1~15)

http://www.thatjeffsmith.com/のaboutによるとProduct Manager for Oracle, working on the SQL Developer teamという方が主にSQL Developerについて書かれているブログがあります。詳しい経緯は不明ですがSQL DeveloerのTipsについて30日間連続で書き続け…

jBatchでデータロードしてみる

やること jBatchを使用してテキストファイルの中身をOracleにロードする。 とはいえ、単なるデータロードであればワザワザjBatchを使うのはオーバーヘッドがかさむだけである。OracleでSQL*Loaderや、手動ならSQL DeveloperやA5:SQL等各種のツールを使うのが…

一回のSQLで明細・小計・総計を集計する

やりたいこと 下図のイメージのように、左側のデータを基に、右側の集計表を作りたい、とする。ポイントは、テーブル全体の販売個数だけでなく、種類ごとの小計、種類と名前ごとの小計も出力する。さらに加えて、明細行も一緒に出す、というのをやりたい。 …

Oracleの空コミットは別セッションのトランザクションに影響を与えるか

Oracleの空コミット負荷はどのくらいか - kagamihogeの日記の続き。これを書いたときに芽生えた疑問があった。それは、あるセッションがDMLを伴うトランザクションをしているとき、それとは別のセッションが空コミットをしたら前者のトランザクションに影響…

Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windowsのインストール

環境 Windows7 64bit 手順とか まずはブツを手に入れる。 64bit:Oracle Database 11g Release 2 for Microsoft Windows (x64)からwin64_11gR2_client.zipをダウンロードする。 32bit:Oracle Database 11g Release 2 for Microsoft Windows (32-bit)からwin32…

Oracleの空コミット負荷はどのくらいか

空コミットとは、あるトランザクションでDMLの実行は無いがコミットする、ことを指す。一般的に通用する用語かどうかは謎だが、ひとまずこのエントリ内ではそういうもんとして話を進める。Oracleでコレがどういう時に現れるかというと、たとえばFOR UPDATE句…

OracleからのCSV出力を考える

軽くぐぐっただけなので間違っているかもしれないが、OracleにはCSV出力の機能なりAPIなりは備わっていない。ただし、SQL*PlusのコマンドであるとかPL/SQLを使うとかでCSV出力は実現出来る。今回のエントリでは、自分が調べられた範囲内でCSV出力の方法を色…

Oracle11gのPL/SQLのネイティブコンパイル

Oracle11gのPL/SQLのネイティブコンパイルを試す。 環境 DB CentOS-6.4-x86_64 Oracle Database Express Edition 11g Release 2 ツール Oracle SQL Developer 4.0(4.0.0.13.80) RLogin Version 2.14.7 やったこと 検証用プログラム どういう速度計測プログラ…

SQLトレースさわる

環境 DB CentOS-6.4-x86_64 Oracle Database Express Edition 11g Release 2 ツール Oracle SQL Developer 4.0(4.0.0.13.80) RLogin Version 2.14.7 SQLトレースの取得 Oracle Database PL/SQLパッケージおよびタイプ・リファレンス11g リリース2(11.2) DBMS…

SQL DeveloperのSVN機能のメモ

環境 Oracle SQL Developer 4.0(4.0.0.13.80) RLogin Version 2.14.7 TortoiseSVN 1.8.4.24972 やったこと りポジトリのチェックアウトと編集 チーム -> Subversion -> チェックアウトと進む。初回のみSubversion関連のプラグインと思しきものの調整でやや時…

コミットせずINSERTし続ける

OracleのPL/SQLを使い無限ループでINSERTをし続けると何が起きるのか、をやる。実際には適当なところでキャンセルをかけたが、その理由も含めて表領域の状態やstatspackレポートの中身を見て何が起きるのかを確認していく。 環境 DB CentOS-6.4-x86_64 Oracl…

ライブラリキャッシュにヒットしないSQLを流し続けたときのstatspackを見る

statspackの使用例としてしばしば見かけるものの一つに、ライブラリキャッシュのヒット率がある。Oracleでは同一と見なされないSQLの書き方とかバインド変数の効果とかについての記述と共に記されることが多い。また、ヒット率はおおむねどの文献でも95%~9…

どのようにOracleを勉強してきたか

一昨年から去年にかけては、リレーショナルデータベースの分野の学習に注力すべく活動を続けてきた。具体的なRDBMSのプロダクトはそのときの仕事で使っていたという理由でOracleを選んだ。学習内容としてブログでまとめたものは、主に実行速度に影響を与える…

JPAからフェッチサイズを変更したかった

JPAだけで完結するのはさすがにムリがあったのでこういうタイトルにした。が、JPAプロバイダ固有のAPIのレベルではフェッチサイズを変更する効果を確認できた。JDBCのsetFetchSize変更時の動きをstatspackで見てみる - kagamihogeの日記ではJDBCを直接使用し…

JPAからJDBCのバッチ更新を使う

JDBCのaddBatchとexecuteBatchの頻度変更時の動きをstatspackで見てみる - kagamihogeの日記は、JDBCを直接使用していた。が、JPAから同じことをするにはどういう設定などをすればよいのか。それをやってみて、ついでに実行速度の違いも計測する。実際には、…

JDBCのaddBatchとexecuteBatchの頻度変更時の動きをstatspackで見てみる

JDBCのsetFetchSize変更時の動きをstatspackで見てみる - kagamihogeのblogに引き続いてstatspackの学習を続ける。昔書いたJDBC経由で100万件取得・追加してみた - kagamihogeのblogでは、JDBCのjava.sql.Statement#addBatch(String sql)とjava.sql.Prepared…

JDBCのsetFetchSize変更時の動きをstatspackで見てみる

昔書いたJDBC経由で100万件取得・追加してみた - kagamihogeのblogでは、JDBCのjava.sql.Statement#setFetchSize(int rows)を変更するとSELECT文の実行速度が改善できる可能性があることを調べた。ここでは、なぜ速度が改善されるかを考える。やることとして…