ablog

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

2009-07-01から1ヶ月間の記事一覧

続・門外不出のOracle現場ワザの v$session_wait から情報収集するスクリプト

続・門外不出のOracle現場ワザ (DB SELECTION) で紹介されているスクリプト*1は v$session_wait から情報収集するスクリプトがあるけど、不要な情報が出力される。 $ ./session_wait.sh|sqlplus SQL*Plus: Release 9.2.0.7.0 - Production on Fri Jul 31 22:…

Getopt::Std を使ってコマンドライン引数を処理してみた

getopt.pl #!/usr/bin/env perl use strict; use warnings; use Getopt::Std; my %opt; # 記号の後に「:」をつけるとオプション引数が取れる。「:」をつけないと「1」が取れる。 getopts("ali:o:" => \%opt); map{print "$_: $opt{$_}\n"} keys %opt; __END_…

Oracle9iR2 でどう設定したら RBO が使われるか?

初期化パラメータ OPTIMIZER_MODE = RULE の場合。 初期化パラメータ OPTIMIZER_MODE = CHOOSE で、データ・ディクショナリに文がアクセスするどの表の統計も含まれていない場合。 [参考] http://www.oracle.com/technology/global/jp/documentation/product…

全セッションのSQLトレースを取得するスクリプト

全セッション*1のSQLトレースを取得するスクリプトを作ってみた。 [手順] SQLトレース取得を開始する。 SQL> conn / as sysdba SQL> @sqltrace_start.sql SQLトレース取得を停止する。 SQL> @sqltrace_stop.sql SQLトレースの出力先を確認する。 SQL> select…

Perl でミリ秒単位の計算をする

レスポンスタイムをログの処理開始時と終了時のタイムスタンプを比較して算出するようなときに使うコードサンプル。 msec.pl #!/bin/perl use strict; use warnings; use Time::Local; my $begin = '2009/07/30 11:15:36.180'; my $end = '2009/07/30 11:15:…

Perl で正規表現にマッチした文字列を変数に入れる

びっくりするくらい毎回書き方を忘れるのでメモっておく。 例 perl -e '$s="hogehoge2009";($s1,$s2)=$s=~/^([a-z]+)([0-9]+)$/;print "$s1:$s2\n";' 実行結果 hogehoge:2009

Windows で特定のポート範囲がアプリケーションから使用されないよう予約する方法

[スタート]-[ファイル名を指定して実行]を選択し、「regedit.exe」と入力し、[OK] をクリックする。 次のレジストリ サブキーを見つけ、クリックする。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters [編集]- [新規]-[複数業文字…

Solaris10 でプロセスの通信相手のIPアドレスとポート番号を調べる

Oracle のサーバープロセスの通信相手のIPアドレスとポート番号を調べてみた。 コマンド ps -ef|egrep [o]racleorcl|while read LINE do PID=`echo $LINE|perl -lane 'print $F[1]'` PEER=`pfiles $PID|egrep [p]eername` echo $LINE $PEER done 実行結果 or…

1 〜 10000 まで表示するだけの Perl ワンライナー

$ perl -le 'print for 1..10000' 1 2 ... 9999 10000

ローカルに git のリポジトリを作ってみた

git

github にはあげれないもののあるので。 $ cd /cygdrive/c/git $ mkdir hoge $ cd hoge $ git init Initialized empty Git repository in /cygdrive/c/git/hoge/.git/ $ ls docs src $ git add docs/* $ git add src/* $ git commit -m 'init' [master (root…

縦 → 横 変換 Perl ワンライナー

レコードセパレータが1つ以上の空行で、レコード内に改行文字を1つ含むデータを1行1レコードに変換する Perl ワンライナー。元のファイル。 $ cat aaa.txt line1 line2 line1 line2 line1 line2 変換する。 $ perl -i.org -00 -pe 's/^(.*)\n(.*)\n+$/$1 $2\…

パフォーマンステストでの STATSPACK の取得について

[参考文献] 門外不出のOracle現場ワザ (DB Magazine SELECTION) P.97-98 STATSPACK は、Oracle8i(リリース 8.1.6)から使用可能になったパフォーマンス診断ツールです。STATSPACK は従来の Bstat/Estat の後継であり、無償のPL/SQLスクリプトとして提供され…

tnsnames.ora の読取り権限がなくて ORA-12154

SQL*Plus でデータベースに接続しようとすると ORA-12154 エラーが発生すると言われて調べてみた。 $ sqlplus scott/tiger@orcl ORA-12154 TNS:指定された接続識別子を解決できませんでした 環境変数など調べてみたが無問題。 ふと、SQL*Plus を実行している…

Perlワンライナーで後方参照

perl -ple "s/([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})/TO_DATE\(\'\1\',\'YYYYY-MM-DD HH24:MI:SS\'\)/g;" hoge.csv 後方参照って $1 だと思ったけどうまくいかないので、\1 にしたたうまくいった。 パターン内で括弧を使用することで、括…

Perlワンライナーでダブルクオートをシングルクオートに置換する

「"」を「'」に置換しようとして、 perl -ple 's/\"/\'/g' hoge.csv としたら、ダメだったので、 perl -ple "s/\"/\'/g" hoge.csv としたらいけた。 ぐぐってみると、他にもやり方があるみたい。 perl -e '' の中で シングルクオートを書く bash で perl を …

Oracle でデフォルトスキーマを指定する

SQL> alter session set current_schema = SCOTT;

TO_CHAR を使ってゼロ埋めすると頭にスペースが入る

Oracle で TO_CHAR を使って数値を前ゼロ埋めにしようと思ったら、 SQL> select 'USER'||to_char(1, '00') name from dual; NAME ------- USER 01 頭にスペースが入った。。。 SQL> select 'USER'||to_char(1, 'FM00') name from dual; NAME ------- USER01 …

Oracle Instant Client を使ってみる

http://www.oracle.com/technology/global/jp/software/tech/oci/instantclient/10104/instantclient_win_dl.html から以下をダウンロードする。 instantclient-basic-win32-10.2.0.3-20061115.zip instantclient-sqlplus-win32-10.2.0.3-20061115.zip 解凍…

Emacs で SQL の編集・実行を快適にする

http://www.geocities.com/kensanata/elisp/ から以下のファイルをダウンロードする。 sql.el sql-indent.el sql-transform.el sql-complete.el master.el ダウンロードしたファイルを C:\meadow3\site-lisp\ に保存する。 .emacs に以下を追記する。 ;;; ;;…

プロセスについて調べる

Solaris でプロセスについて調べるときに使えるコマンドをメモっておく。 pfiles ptree truss pargs pgrep 上記以外にも、以下のURLにいろいろ載ってる。 http://docs.sun.com/app/docs/doc/819-1210/pfiles-1?a=view

man コマンドの使い方

マニュアルを見る man ls ページャが less の場合 <↑>: 1行上に進む。 <↓>: 1行下に進む。 <PgUp>: 1ページ上に進む。 <PgDn>: 1ページ下に進む。 /検索文字列: 検索する。 q: 終了する。 ページャが more の場合(ページャが less の場合でも使える) h: ヘルプを表示す</pgdn></pgup>…

Linux のコマンドラインオプションとヘルプについて

「-」 + 単語の先頭1文字(伝統的なUNIXのコマンドラインオプション) ls -a 「--」 + 単語(機能が増えて1文字で区別するのが困難になってきたため最近作られたコマンドラインオプション) ls --all ヘルプを表示する ls -h ls --help ヘルプの見方 [] で囲…

Perlワンライナーでレコードセパレータを変更する

n または p オプションを指定すると Perl はデフォルトで1行ずつ読み込む。OSで固有に定義されている入力レコードセパレータを使って各行の終わりを検出する。-0digits オプションを使うとレコードセパレータ(レコードの区切り)を変更することができる。 …

負荷テストについて基本的なメモ

負荷テストは性能要件を満たすことを確認するテスト。 要件(requirement)には機能要件(functional requirement)と非機能要件(non-functional requirements)がある。 性能要件は非機能要件の一つ。 非機能要件には性能要件、障害対策要件、セキュリティ要件、…

Oracle の負荷テストについてメモ

良すぎるキャッシュヒット率に注意 一部のデータにしかアクセスしない場合、全データがキャッシュに載り、良すぎるキャッシュヒット率が計測される。 キャッシュの状態を適切に再現する キャッシュの状態を適切に再現するためにテスト手順、テストデータ、テ…

娘の絵に癒された

何の絵かわからんけどw。アンパンマンかお魚かたまごか。。。それともドキンちゃんかな?

Meadow から Cygwin を使う設定

github を使うために Cygwin をインストールしたので、Meadow3 から Cygwin を使う設定をしてみた。 PATH環境変数の先頭に以下を追加する [スタート]>[マイコンピュータ]>[プロパティ]>[詳細設定]>[環境変数]>[システム環境変数] C:\cygwin\bin;c:\cygwin\sb…

github にリポジトリを作成したのと別のマシンからファイルを作成したり削除したりする

git

github にリポジトリを作成したのと別のマシンからファイルを作成したり削除したりしようとしたけど、ローカルリポジトリは変更できるが、github に同期できないので、一旦ローカルリポジトリを削除してやり直してみた。 Cygwin を起動する。 ローカルリポジ…

Oracleデータベースの制御ファイルのみ全損した場合のリカバリ方法を検証してみる

[まとめ] 制御ファイルを全損した場合、以下の2つのリカバリ方法がある。 物理バックアップ*1を使ったリカバリ 論理バックアップ*2を使ったリカバリ いずれの方法でも障害発生直前までリカバリできる。つまり、オンラインREDOログの最後のcommit済みREDOエン…

/etc/passwd から useradd コマンドを生成する Perl ワンライナー

/etc/group から groupadd コマンドを生成する。 $ perl -lanF':' -e 'print "groupadd -g $F[2] $F[0]"' /etc/group groupadd -g 501 oinsatll ... /etc/passwd から useradd コマンドを作成する。 $ perl -lanF':' -e 'print "useradd -u $F[2] -g $F[3] -…