kenken0807_DBメモ

つば九郎が好きなDBAです。Oracle Standard Editionでの運用やツールとかとかの備忘録。特に記載がない場合はoracle11gR2です。時々MySQL

pt-online-schema-changeとgh-ostの比較(データが損失するかもしれないAlterTable編)

こちらのエントリーは MySQL Advent Calendar 2021の14日目の記事になります。 今年はオンラインスキーママイグレーションツールのpt-online-schema-change(pt-osc)とgh-ostをよく調べていたので、その中から一つ。 mysqlコマンドではエラーになるけど、制約…

performance_schema.events_statements_historyを使って直近に実行されたクエリを見る

さくっと、直近で実行されたクエリの情報がみたいです。 それにはperformance_schema.events_statements_historyテーブルを使います。 performance_schema.events_statements_historyはスレッドごとにperformance_schema_events_statements_history_size(def…

mysqldumpがFLUSH TABLESでタイムアウトしたので調べた話

この記事は MySQL Advent Calendar 2019 11日目の記事です。 mysqldumpがFLUSH TABLESでタイムアウトしたので調べたという記録です。 (SQLステートメントや出力結果は一部省略しています) 問題 とある日、スレーブが壊れましてmysqldumpを使ってマスターか…

Instant Add Columnして全行UPDATEしてみる

MySQL8.0の Instant Add Columnで追加したカラムを全行updateするとデータサイズとか実行時間ととかどうなるか試してみた。 まず、 Instant Add Columnとは... データディクショナリのみを変更することで、add column処理が即時で完了する操作。 ALTER TABLE…

Serverside Prepare Statementの統計情報を見る

この記事は MySQL Casual Advent Calendar 2018 の12日目の記事です。 さて、MySQLでSQLステートメントの統計情報を見る時ってどうしますか? performance_schema.events_statements_summary_by_digest テーブルであったり、sys.statement_analysis ビューを…

InnoDBで行ロックを取得してるSQLを調べる

InnoDBでSELECT FOR UPDATEでセッションが溢れて、原因のpidはわかるけど、ロック取得しているSQLがなんとかとれないかなと調べてみた。 MySQL5.7以降であれば下のSQLでとれるかも。たぶんいけるはず。 SELECT lo.*, t.thread_id AS blocking_thread_id, GRO…

最近知ったSET型について

MySQL Casual Advent Calendar 2017の15日目の記事です。 MySQLには古くからSET型というカラムの型がありまして、知らない人もいるかもしれません。 私は聞いたことあるぐらいで、使ったこと、使っている現場に遭遇したことなかったです。 今回は初めてめぐ…

xtrabackupが終わらない

xtrabackupでバックアップとっていたがいつまでたっても終わる気配ないという状況に。 バージョンはxtrabackup2.4.7。 xtrabackupにはIOを制御するための--throttleオプションがあって、これにやられた。 マニュアルの情報。 --throttle=# This option limit…

redis-fainaでよく使用されるコマンドを確認する

redis-faina使おうとするときすぐ使えるようにするメモ。 github.com RedisのMonitorコマンドを使って出力した情報をsummaryしてくれるすごいツール。 Monitorしてると負荷上がるからなにかある時に使う。 ダウンロード git clone https://github.com/facebo…

sysbench1.0でMySQLベンチマークするメモ

sysbench1.0でMySQLのベンチマークとったのでその方法のメモ。 OSはCentOS7.3 MySQLをyumでインストールする # wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm # rpm -i mysql57-community-release-el7-11.noarch.rpm # yum i…

xtrabackupの--ftwrl-wait-timeoutと--ftwrl-wait-thresholdのメモ

xtrabackupの–ftwrl-wait-timeoutと–ftwrl-wait-thresholdをいつも忘れてしまうのでメモ。 xtrabackup2.4で試す。 –ftwrl-wait-threshold Flush table with read lockを実行するタイミングでのクエリの実行時間。デフォルト60秒。 –ftwrl-wait-timeout –ftwr…

MySQLのsql_modeにあるORACLEとは

これはJPOUG Advent Calendar 2016の16日目の記事です。 最初に言っておきますが、この記事はなんも役に立ちません! では始めます。 MySQLのsql_modeにはいろいろとsqlの動作の設定ができるんですが、 ここにORACLEというのが選択できます。 たぶんOracle d…

Redis Cluster構築メモ

同一ホスト内にRedis Cluster構築してみたのでメモ。 version:Redis 3.2.6 インストール 6台構成でクラスター作成する ノードを追加してみる ノードを撤去してみる ノードを移動してみる インストール 動作確認のためなのでインストールの細かい設定は気にし…

MySQLのInnoDBセカンダリインデックスのロック

MySQLのセカンダリインデックスのロックで嵌ったのでメモ。 isolationがREPEATABLE-READのときギャップロックやらネクストキーロックはセカンダリーインデックスの場合どうなるかよくわかってなかった。 例えば、こんなテーブル作ってcol2にインデックスを作…

MySQLにgdbアタッチするメモ

MySQLにgdbアタッチしてソースコードからいろいろ追う方法を教わったので自分メモ。 gdbアタッチ gdb -p mysqldのプロセス番号 この時点でmysqldが一時停止される。 ブレイクポイント (gdb) b function_name mysqld再開 (gdb) c ステップ実行 (gdb) n 変数確…

Oracle SEでの運用いろいろ@JPOUG in 15 minutes #1

JPOUG in 15 minutes #1 | Japan Oracle User Group (JPOUG)で自分がやってきたOracle SEでの運用方法について話をさせてもらいました。 Oracle Database Standard Editionでの運用いろいろ from kenken0807 www.slideshare.net 主な話としてはSEでASHっぽく…

MyDumperを使ってみた

MySQLのデータインポートツールMyDumperを試したのでメモ。 mysqldump・・・データのエクスポート・インポートをシングルスレッドで実行 mydumper・・・データのエクスポート・インポートをパラレルスレッドで実行 エクスポートしたファイルごとにパラレルで…

OEM再作成のエラー対処方法

RMANで別ホストに移行した時にOEMの作成でいろいろ嵌ったのでメモ。 emca -config dbcontrol db -repos recreate実行時 パターン1 設定: ORA-01031: ???????-?????????? ・ ・ ・ 2014/10/09 9:58:40 oracle.sysman.emcp.util.GeneralUtil initSQLEngineLoa…

Oracle shrinkする上での注意点

Oracleを使用していると、断片化がつらい。 頻繁に更新しているインデックスの断片化が特につらい。 そして表領域を圧迫していく。。 そういう時にEnterpriseEditionであればindex rebuild onlineなんてできるけど、 StandardEditionだとできないのでshrink…

RMANで同一サーバ上にデータベースを複製する

あるOracleDBを同一サーバ上に複製させるメモ。 環境は12cSE2。 現在、稼動中のインスタンス名をtestdb、複製先DBをcopydbとする。 準備 初期化パラメータをコピーして、リネーム cp -p $ORACLE_HOME/dbs/inittestdb.ora $ORACLE_HOME/dbs/initcopydb.ora パ…

基表にSELECT権限がないVIEWに対して実行計画を取得する

基表に対してSELECT権限がないVIEWに対してEXPLAIN PLAN FORを使用して実行計画を取得しようとすると SQL> explain plan for select * from test.test1_view; explain plan for select * from test.test1_view * 行1でエラーが発生しました。: ORA-01039: ビ…

redis3.2.0以降はprotect-modeが有効

最近勉強中のredis。 redis3.2.0以降はデフォルトprotect-modeが有効になっているようで、bindとrequirepassが設定されていない場合 他端末から接続しようとすると↓のメッセージが表示されて情報取得できない。 # redis-cli -h 192.168.1.1 -p 6379 info DEN…

12cから増えたオンライン操作をOracle SE2で試した

Oracle 12cの新機能のオンライン操作をOracle Standard Edition2でできるか確認したのでメモ。 ↓を基にいろいろ確認した。 docs.oracle.com バージョンはOracle 12.1.0.2 SE2 オンラインでのデータファイル移動 結果: × これはもちろんできません。 alter da…

Oracle database 12cマルチスレッドを試してみた

12cからの新機能のプロセスのマルチスレッド化を試してみました。 今回はバックグラウンドプロセスではなく専用サーバのスレッド化についてです。 環境はOracle database 12.1.0.2 SE2 マルチスレッドの有効化 初期化パラメータのTHREADED_EXECUTIONとUSE_DE…

Oracle Database Connect 2016(JPOUG) でDRCPについてLTしました

JPOUGで2回目のLTしました。 さすがに1回目より緊張しないかなーと思たけど、 500人以上の会場の規模にさすがにビビった。。。 イベント内容 Oracle Database Connect 2016 | Japan Oracle User Group (JPOUG) スライド Oracle常駐接続プーリング(DRCP)を…

ORACLEでテーブルごとのDML回数を取得する

テーブルごとの1時間あたりのDML(INSERT,UPDATE,DELETE)の平均を取得するために考えた方法。 確認手段としてDBA_TAB_MODIFICATIONSを使用する。 ALL_TAB_MODIFICATIONS 以下のように確認できる。 SELECT table_name,inserts,updates,deletes,to_char(time…

OracleSERAC+ASMのRMANバックアップから非ASMのシングル環境へリストア

OracleSERAC+ASMのRMANバックアップから非ASM(ファイルシステム)のシングル環境へリストアしたのでメモ。 環境 Oracle11.2.0.4 DB_NAME:orcl 前提 RMANバックアップは毎日0時にフルバックアップを取得(backupset plus archivelog) delete noprompt obsol…

ORACLE RMANで複製データベースの作成

RMANでアクティブなデータベースから同じSIDを持った複製データベースを作成したのでメモ。 複製先サーバ側の設定 複製先サーバでOracleインスタンスが起動できる状態にしておく 同じバージョンORACLEソフトウェアのインストールをしておく 環境変数も設定す…

データリカバリアドバイザを使用したRMANリカバリ方法(ユーザ表領域)

データリカバリアドバイザを使用してリカバリを行うと楽に復旧可能だったのでメモ。 Oracle RACでは対応してないみたい、シングルインスタンスのみ対応。 環境はOracle database 11.2.0.4 SEone。 以下条件で実施している。 1. 高速リカバリ領域の有効化(バ…

Centos7にORACLE database11.2.0.4 SEoneをさくっとサイレントインストールしてみる

GUIを使用せずに簡単にORACLE DATABASEを作成する。 SIDはorclで作成。 環境 今回はdockerを使用する。 dockerのデフォルトshmsizeが64MBで小さすぎてORACLEインスタンス起動できなかったので --shm-sizeを指定できるversion1.10を使用。 # docker --version…