ablog

不器用で落着きのない技術者のメモ

Oracle

SwingBench の Data Generator で Sales History のデータを生成する

準備 RDS Oracle RDS Oracle データベースを作成する。 EC2 EC2インスタンスを作成する。 JDKをインストールする。 $ sudo yum install -y java-1.8.0-openjdk.x86_64 Data Generator をダウンロードする。 $ wget http://dominicgiles.com/swingbench/datag…

Oracle->PostgreSQL移行関連

AWS SCT 評価レポート AWS Schema Conversion Tool 評価レポート - AWS Schema Conversion Tool ora2pg Ora2Pg : Migrates Oracle to PostgreSQL Oracle Database 11g/12c To Amazon Aurora with PostgreSQL Compatibility (9.6.x) Migration Playbook https…

AWR Formatter を使ってみた

渡部さんがツイートされていて知った AWR Formatter を知ってみた。"知っている方も多いと思いますが、念のためにAWR Formatterツールを紹介します。"しらなかった・・・https://t.co/IQWPvl51Ry— Watabe Ryota / 渡部 亮太 (@wrcsus4) 2018年3月30日 AWR Fo…

Oracle Database の DBMS_RANDOM.VALUE を MySQL 向けに書き換える

Oracle Database の以下の PL/SQL コードを standard_price := DBMS_RANDOM.VALUE(30,50); MySQL ではこう書き換えると同じことができる。 select round( rand() * 20 + 30 ) into var_standard_price; 実際にプロシージャを作成して実行してみるとこんな感…

Oracle Database で mutex を意図的に発生させる

Oracle Database で意図時に mutex(以下は"cursor: pin S") を発生させる。 “Cursor: pin S” mutex contention testcase and diagnostics tools. | Latch, mutex and beyond 以下のPL/SQLコードを同時多重実行する。 begin for i in 1..1000000 loop execute…

grep でヒットした SQL トレースを tkprof で整形する

$ grep -l foo *.trc|xargs -I{} -n1 tkprof {} {}.tkprof sort=exeela

Oracle Database のインスタンスリカバリではオープンしてからロールバックする

Oracle Database のインスタンスリカバリはデータベースがオープンして使える状態になった後にバックグラウンドでロールバックが行われる。トランザクションがロールバックが完了していないブロックを変更し用とした場合はフォアグラウンドでロールバックが…

RDS Oracle で Statspack を使う

RDS Oracle で Statspack を使えるようにする手順をメモ。 オプショングループを作成する AWSマネジメントコンソールで RDS を選択する。 [オプショングループ]-[グループの作成]を選択し、任意の名前と説明を入力し、エンジンは oracle-eeを選択して、メジ…

Oracle Database の I/O 負荷テストツール SLOB(The Silly Little Oracle Benchmark) の紹介

JPOUG Advent Calendar 2017 の21日目のエントリーです。昨日は JPOUG in 15 minutes at db tech showcase Tokyo 2017 開催報告 でした。 JPOUG Advent Calendar に参加するのも6年目になりました。 今年は「SLOB(The Silly Little Oracle Benchmark) 」とい…

DMS Full Load 検証メモ

AWS Database Migration Service (DMS) の Full Load (Oracle Database -> MySQL) の検証メモ。 Oracle Database(ソース) の TIMESTAMP WITH TIME ZONE 型の列は DMS で MySQL(ターゲット) にロードすると varchar(37) 型の列に変換される*1。 ソースが TIME…

RMAN のチューニング参考資料

Oracleのバックアップを高速化する6つの方法(11g対応) | Oracle オラクルエンジニア通信 - 技術資料、マニュアル、セミナー Blog http://www.oracle.com/webfolder/technetwork/jp/ondemand/ddd2014/B2-2.pdf http://www.oracle.com/technetwork/jp/ondema…

Oracle Database から MySQL(Aurora MySQL互換含む) に移行する際に留意すべきこと

パラメータ SQL_MODE ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々 MySQL で NOT NULL 制約のある列に複数行インサートするとその型のデフォルト値が入る - ablog TX_ISOLATION トランザクション分離レベルは Oracle のデ…

AWRレポートを CSV に変換する手順

AWRレポートを CSV に変換する手順。CSV を EXCEL のピボットグラフなどを使って分析すると便利です。 Python スクリプトを入手する。 $ git clone https://github.com/yasushiyy/awr2csv.git AWRレポートの存在するディレクトリに移動する。 $ cd awrrep AW…

Oracle Database から Aurora MySQL互換 に DMS でデータをロードする

Oracle Database から Aurora with MySQL Compatibility にテーブルのデータを AWS Database Migration Service (DMS) でフルロードしてみたメモ。 ロード後のソースDBとターゲットDBのデータ比較 ソースDB(Oracle Database) SQL> select * from test_time…

Mac OS X に Oracle Instant Client をインストールする

ダウンロード Instant Client for macOS (Intel x86) から以下をダウンロードする。 instantclient-basic-macos.x64-12.1.0.2.0.zip instantclient-sqlplus-macos.x64-12.1.0.2.0.zip インストール 解凍する % unzip instantclient-basic-macos.x64-12.1.0.2…

消えたDB Time を追え (DB Time > CPU Time + Wait Time になるケース)

CPU のランキュー待ち ページイン時のディスクI/O待ち(メジャーフォルト) AIX on Power 7 SMT である条件下で発生するケース 問題ではなくCPU時間や使用率の計上の仕方により発生する トレースファイルに書くのに時間を要してるケースいるケース

「ロールバックセグメントの歌」と「データガードの歌」

前職(日本オラクル)の先輩データベースコンサルタントのちゃむさんからの依頼で、ロールバックセグメントの歌」と「データガードの歌」の歌詞と音源 を掲載します。 ちゃむさんはインサイトテクノロジー時代に「 おら!オラ!Oracle − どっぷり検証生活」…

「エキスパートはどう考えるか? 体感!パフォーマンスチューニング」@DB Connect 2017

2017/3/8 に開催された Oracle Database Connect 2017 で、「エキスパートはどう考えるか? 体感!パフォーマンスチューニング」というお題で、津島博士(解説)、しばちょう先生(司会)、JPOUGの関口さん、諸橋さん、渡部さん、私(パネラー)でパネルディ…

「SQL性能を最大限に引き出すDB 12cクエリー・オプティマイザ」 @TechNight#7

2017/3/27に Oracle Database Technology Night #7 で「SQL性能を最大限に引き出すDB 12cクエリー・オプティマイザ 〜 新機能活用と統計情報運用の戦略 〜」というお題で発表しました。 内容 SQL性能を最大限に引き出すDB 12cクエリー・オプティマイザ 〜 新…

Infiniband とRDS、Exafusion、RDMA とか

とりあえずメモ去年、Infiniband、RDMA あたりを調べたとに見つけた資料のいい絵。ブログにメモしとこ。 pic.twitter.com/VF6LIaWkj6— yohei.a-z (@yoheia) 2017年3月26日 pic.twitter.com/XlU3hQx0Vp— yohei.a-z (@yoheia) 2017年3月26日 参考 Exafusion Di…

SQLHCのススメ

SQLHCとは SQLチューニング・ヘルス・チェック・スクリプト(SQLHC)は My Oracle Support で提供されているPL/SQLスクリプト My Oracle Support の DocID: 1542531.1 から sqlhc.zip をダウンロード・解凍して、sqlplus で SQL_ID を指定して実行 指定した SQ…

Optimizer(10053)トレースを見るときによく使うキーワード

Optimizer(10053)トレースを見るときによく使うキーワード sql_id plan_hash_value Plan Table Final query after transformations Best so far Join order[ Table Stats Single Table Access Path

UEK ダウンロードサイト

インターネットに接続されていないサーバで Yum でパッケージをインストール出来ない場合は Oracle Linux Yum Server | Oracle, Software. Hardware. Complete. からダウンロードできる。例えば、Oracle Linux 6 の UEK なら Oracle Linux 6 (x86_64) UEK Re…

「簡単!AWRをEXCELピボットグラフで分析しよう♪」というお題で発表しました

2017/1/17(火)の夜にオラクル青山センターで開催された JPOUG in 15 minutes #3で「簡単!AWRをEXCELピボットグラフで分析しよう♪」というお題で発表しました。 オラクルコンサルがトラブルシューティングや性能ヘルスチェックでAWRレポート、V$ASH、DBA_HIS…

SQLテスト・ケース・ビルダーで再現ケースを作成する

実行計画絡みの性能トラブルシューティングでよく使うので書いておきます。 エクスポート 共有プールに共有カーソルのキャッシュが残っている場合 データベースにログオンする sqlplus / as sysdba 共有プールに共有カーソルがキャッシュされているか確認す…

統計情報とSQL計画ディレクティブを操作するコマンド集

統計情報 ユーザー統計表を作成する exec dbms_stats.create_stat_table(ownname=>'SCOTT', stattab=>'STAT_TAB_20160223'); ユーザー統計表に表の統計をエクスポートする。 exec dbms_stats.export_table_stats(ownname=>'SCOTT', tabname=>'EMP', stattab=…

SQL*Plus実行結果をシェル変数に格納する方法

SQL*Plus にヒアドキュメントで SQL を渡し、全体をバッククオート(`)で囲めばよい。"$"などはエスケープする必要がある。 $ TRACE_DIR=`sqlplus -s <

SQLで特殊文字をエスケープする方法

CHR関数を使う方法もある。 SQL> select 'select '||chr(39)||'X'||chr(39)||' from dual;' from dual 'SELECT'||CHR(39)||'X --------------------- select 'X' from dual; ちょっと聞かれたのでメモ。

Oracle DBA & Developer Day 2016 で発表しました

2016/10/27(木)に開催された Oracle DBA & Developer Day 2016 で、 「オラクル・コンサルが語る! SQL性能を最大限に引き出すDB 12cクエリー・オプティマイザ 新機能活用と統計情報運用の戦略」 というお題で柴田歩さんと発表しました。 スライド Oracle DB…

AWR に永続化された SQL Monitor を抽出する

だいぶ前にブログに書いたつもりで書いてなかったのでメモ。 SQL_ID から REPORT_ID を調べる column key1 format a30; SELECT REPORT_ID, KEY1 FROM DBA_HIST_REPORTSWHERE KEY1 = 'gxsc2sdj0xz39' ORDER BY KEY1, REPORT_ID; -- SQL_ID を指定 REPORT_ID K…