ablog

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

2016-01-01から1年間の記事一覧

Python ではてなフォトライフの RSS をスクレイピングして画像をダウンロードする

はてなフォトライフの RSS をスクレイピングして、画像の URI を取得してダウンロードするする Python スクリプト。 RSS(yohei-a's fotolife) ... <item rdf:about="http://f.hatena.ne.jp/yohei-a/20161211091424"> ... <dc:date>2016-12-11T09:14:24+09:00</dc:date> <hatena:imageurl> http://cdn-ak.f.st-hatena.com/images/fotolife/y/yohei-a/20161211/20161</hatena:imageurl></item>…

IndentationError: unexpected indent

スペースや改行コードなどに要注意

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; ちょっと聞かれたのでメモ。

easy_install と pip で Python のパッケージをインストールする on Cygwin

環境 Windows 7 Professional SP1 Cygwin $ uname -a CYGWIN_NT-6.1 ********-** 2.6.0(0.304/5/3) 2016-08-31 14:32 x86_64 Cygwin setuptools をインストールする Cygwin Installation の setup-x86_64.exe をダウンロードする。 setup-x86_64.exe を実行…

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

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

シンプルでシステマチックな Oracle Database 性能分析 with AWR & OS Watcher

JPOUG Advent Calendar 2016 の5日目のエントリーです。 昨日は id:knopp さんの Oracle RAC on Docker - KNOPP’s blog でした。 2012年から始った JPOUG Advent Calendar も今年で 6 年目になりました。 今年は私が AWRレポート*1と OS Watcher を使って Or…

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…

iPhone 6 Plus から iPhone 7 に移行した

iPhone 6 Plus について 片手で操作するには大きすぎた 角が丸く割れやすいので保護ケース必須 5sまでは保護ケースなしでも画面を割ったことがないが、6 Plus は保護ケースが傷んだので一時的に外しているときに落として、見事にバキバキ*1 背面の iSight カ…

ファイル名でパターンマッチするファイルだけコピーする

find . -regex '.*2016102[0-6].*' -print0|xargs -I{} -0 cp -pi {} ~/tmp/

tar でファイル名で部分マッチするファイルだけ解凍・展開する

find . -name '*.tar.gz' -print0|xargs -0 -I{} tar xf {} './sar_-u*'

Perl ワンライナーにシェル変数を渡す

Perl ワンライナーでシェル変数を渡すには -s オプションを使えばよい。 書式 perl -se '...' -- -Perlで使う変数名=シェル変数名 実行例 $ FOO=bar; perl -sle 'print $var' -- -var=$FOO bar 参考 sオプションを使います echo -e "hogehoge\nfugafuga" > m…

tar の解凍結果を -O オプションで標準出力する

tar で解凍するときに標準出力したい場合は -O オプションをつければよい。 書式 全て解凍して標準出力 tar xfvz sqlcl.tar.gz -O 特定のファイルのみ解凍して標準出力 tar xfvz sqlcl.tar.gz -O sqlcl/bin/sql 実行例 $ tar cfz sqlcl.tar.gz sqlcl $ tar t…

tar.gz を解凍せずにその中の特定ファイルの中身を検索する

sar、vmstat、iostat、top などが日別に一つの tar.gz にアーカイブ・圧縮されているファイルを解凍せずに、top の中身を検索するのに使ったコマンド。 find ./ -type f -name '*.tar.gz'|sort -n|while read LINE do tar tfz ${LINE}|egrep '^./top_'|xargs…

JDBC Driver の(プリ)フェッチサイズを Weblogic などで設定する方法

Weblogic は接続プールの接続プロパティに defaultRowPrefetch=XX を設定するとアプリのコードを変えずに(プリ)フェッチサイズを変更できる。 詳しくは以下の通り。 フェッチサイズを設定する方法は以下の3つ java.sql.Statement#setFetchSize Row Prefetch …

Flame Graph を使った Java-on-JDBC vs. PLSQL の分析

Oracle Real-World Performance チームの Toon Koppelaars の Flame Graph を使った Java-on-JDBC vs. PLSQL の分析面白い。The Helsinki Declaration (IT-version): NoPlsql vs ThickDB: which one requires a bigger database server?

InnoDB の Double Write の話

"Partial page writes is when page write request submited to OS completes only partially. " MySQL のストレージエンジン InnoDB は partial page writes を防ぐ為に double write という機能がある。page は Oracle Database でいう block。Partial pag…

Oracle Database の Wait Time と CPU Time が1つの Flame Graph に

Oracle Database の Wait Time と CPU Time が1つの Flame Graph に、素晴らしい! I/Oシステムコール発行時に実はカーネルコードが ON CPU で時間を使っていたというようなケースも腕ひしぎ十字固めで一本。それくらいならAWRレポートだけでも Awr1page 的…

NVDIMMのホワイトペーパー

赤井さん、伊藤さん、長谷川さんに教えてもらった、NVDIMMの検証結果。 SSDの限界を超えるアプリケーション高速化、「NVDIMM」の導入効果は?/日本ヒューレット・パッカード株式会社 [SSD/半導体ストレージ/フラッシュストレージ] 事例・サービス資料等 |…

Awr1page

AWR Ambiguity: Performance reasoning when the numbers don't add up DB Time カーネルが ON CPU で使う時間が含まれ、DB CPU(Linuxなら getrusageで取得)にも含まれるのでダブルカウントされるからという話。しかし、1回のI/Oシステコールあたり 1ms もCP…

プロセス別の PTE は /proc/[pid]/status の VmPTE で確認できる

$ cat /proc/1741/status Name: bash State: S (sleeping) Tgid: 1741 Pid: 1741 PPid: 1740 TracerPid: 0 Uid: 1200 1200 1200 1200 Gid: 54321 54321 54321 54321 FDSize: 256 Groups: 54321 54322 54323 54324 54325 54326 54327 VmPeak: 108516 kB VmSiz…

zone_reclaim_mode=1 だと NUMA のリモートノードのゾーンからページが割当られない?

zone_reclaim_mode=1 だと、NUMA ノードのゾーンごとに wmark_{min|low|high} が計算され、各ゾーンで空きメモリが wmark_low を下回るとページ回収が始まると理解している。 zone_reclaim_mode=1 の場合、ページ回収が追いつかないとリモートノードのゾーン…

Oracle VM のソースの入手場所

ソース入手場所 3.4 Oracle Software Delivery Cloud 2.1〜3.3 Oracle | oss.oracle.com - Home 関連 Oracle VM で使われている Xen のソースを読む - ablog

Poderosa から Cygwin に接続するとバックスペースが効かない

別件でいろいろ試した時に接続時のターミナル種別を kterm にしていたからだった。vt100 や xterm にするとバックスペースが効いた。

Cygwinで1行でプロンプトを表示する

.bashrc でシェル変数 PS1 を設定する。 .bashrc 設定例 PS1='\d \t \W\ $' 実行結果 Wed Jun 29 15:46:40 Poderosa\ $ 参考 bash の場合 PS1 という名前のシェル変数です。なぜ PS1 なのかは、マニュアルによると "The primary prompt string"=プライマリ…

nfsiostat で NFS の I/O レイテンシや IOPS を調べる

NFS で iostat の await と svctm のような情報を取れるツールが欲しいと思っていたら nfsiostat という素敵なツールを見つけた。await にあたるのが avg exe (ms)、svctm にあたるのが avg RTT (ms) だと思う。 iostat の await と svctm の意味は Linux の…

strace の -y や -yy でFD番号と共にファイルパスやIPアドレス・ポート番号を表示する

strace を使う場合、プロセスが起動している間に lsof や /proc/[pid]/fd でファイルディスクリプタ(FD)番号とファイルパスの対応を確認しておかないと、read(17, ... などと出力されている場合に、17 のファイルパスがわからなくなりますが*1、 strace 4.…

よく使う strace のオプション

Linux で strace を使ってシステムコールのトレースを調べる時によく使うオプションをメモ。 特にお気に入りのオプションは -T、-c、-ff & -o です。 書式 システムコールを詳細に追う tt: 行頭にタイムスタンプを出力(マイクロ秒) T: 行末にシステムコール…