kagamihogeの日記

kagamihogeの日記です。

Oracle

Testcontainers + Spring Boot 3.1 + Oracle XE

従来 Testcontainers とspring-bootを組み合わせる場合は @DynamicPropertySource で接続URLプロパティなどを置き換える処理がやや煩雑だった。しかし https://spring.io/blog/2023/06/23/improved-testcontainers-support-in-spring-boot-3-1 によると有名…

Testcontainers + Spring Boot + Oracle XE

Testcontainersを使用し、spring-bootのテスト開始時にoracle xeのdockerコンテナを起動してテスト終了時に停止する。 環境 Windows 10 Pro x64 docker desktop 3.1.0 事前準備 oracleのdocker まずdockerでoracleを起動可能にする。 kagamihoge.hatenablog.…

oracleのpre-builtによるdocker run起動高速化

dockerとはいえoracleは結構な起動時間がかかる。下記URLにあるpre-builtにより時間の短縮が見込めるとのことなので試す。 https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/samples/prebuiltdb 環境 Windows 10 Docker …

OracleからLogstashでElasticsearchにデータおくる

OracleからLogstashを経由してElasticsearchにデータを追加する。Oracleのtimestampカラムを使用して、Logstashが定期的に前回以降のデータを取得して、Elasticsearchのインデックスに追加する。KIbanaはデータ確認用としてのみ使用する。 なお、環境構築はd…

Docker for WindowsでOracle Database 18c XEうごかす

環境 Docker for Windows Version 2.0.0.0-win81 (29211) https://docs.docker.com/docker-for-windows/ Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production - https://www.oracle.com/technetwork/database/database-technologies/expre…

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…