ablog

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

2011-02-01から1ヶ月間の記事一覧

DTrace を使って最もCPU時間を消費した関数を調べてみる

Solaris 10 で DTrace を使って pwd コマンドを実行して最もCPU時間を消費した関数を調べてみた。 bash-3.00# dtrace -qn ' pid$target:::entry { self->ts[probefunc] = timestamp; } pid$target:::return { @time[probefunc] = sum(timestamp - self->ts[p…

Oracle Database 11gR2 RAC でリスナー毎に TNS_ADMIN を分ける方法

Oracle Database 11gR2 RAC でリスナー毎に TNS_ADMIN を分けたい場合、srvctl コマンドで設定すると良い。 $ srvctl setenv listener -l listener -t TNS_ADMIN=/home/oracle/network/admin sqlnet.ora の TCP.INVITED_NODES でリスナー毎に接続を許可するI…

クエリ・オプティマイザによってビューを参照している SQL が書換えられているか確認する

Oracle Database でSQL文を実行すると、論理的に同じ意味を持たせたままSQL文自体をより効率的な文に変換されることがある。この機能を Query Transformation と呼ぶ。Query Transformation には様々な種類があるが、その中に View Merging と呼ばれる機能が…

Solaris 10 SPARC 64 で rlwrap を使ってみた

ダウンロードする 以下のパッケージをダウンロードする。 readline package for Solaris (9, 10) SPARC http://ivan.kartik.sk/oracle/download_from.php?site_id=10 rlwrap package for Solaris (9, 10) SPARC http://ivan.kartik.sk/oracle/download_from.…

GROUP BY句に指定できる最大列数は?

GROUP BY句に指定できる最大列数はいくつなんだろうか? GROUP BY式およびすべての非distinct集計関数(SUM、AVGなど)は1つのデータベース・ブロック内に収める必要がある 論理データベースの制限 The GROUP BY expression and all of the nondistinct aggr…

Oracle Database on UNIX でBEQプロトコルでLOCAL接続する場合はパイプを使ってプロセス間通信している

Oracle Database で「sqlplus / as sysdba」とかしてBEQプロトコルでLOCAL接続する場合はプロセス間通信しているんだろうなとなんとなく思っていて、プロセス間通信って共有メモリとかセマフォとかパイプとかあるけど、パイプあたりを使っているのかなと思っ…

UltimateDefrag でデフラグしてみた

OS のカーネルなどよく使うデータをディスクの外周に置いてみました。 参考 UltimateDefragの設定 | Chaleo's Diary Ultimate Defrag よく使うファイルを外周に配置するデフラグツール - [開発環境 ツール類/プログラム全般] ぺんたん info

初期化パラメータのエントリを SPFILE から削除する方法

書式 SQL> alter system reset <初期化パラメータ名>; 実行例 -bash-3.00$ cat spfileorcl.ora C",CC"zorcl.__db_cache_size=176160768 orcl.__java_ -bash-3.00$ pwd /u01/app/oracle/product/11.2.0/dbhome_1/dbs -bash-3.00$ cat spfileorcl.ora C",CC"zo…

ファイル中の2つ以上の空白文字を1つに変換する Perl ワンライナー

書き方 $ perl -i.org -ple 's/\s+/ /g' <ファイルパス> 実行例 $ cat <<EOF >foo.lst 1 neo male 2 trinity female 3 oracle female EOF $ perl -i.org -ple 's/\s+/ /g' foo.lst $ cat foo.lst 1 neo male 2 trinity female 3 oracle female</eof>

Solaris 10 で ELF オブジェクト内のシンボル名を表示する。

Solaris 10 で ELF オブジェクト内のシンボル名を表示する。 bash-3.00# /usr/ccs/bin/nm -D /usr/bin/ls /usr/bin/ls: [Index] Value Size Type Bind Other Shndx Name [45] | 156424| 0|OBJT |GLOB |0 |16 |_DYNAMIC [43] | 155648| 0|OBJT |GLOB |0 |14 |…

共有ライブラリ内の関数をインターポジショニングしてみる

ls から呼んでいる共有ライブラリ内の関数を調べる。 -bash-3.00$ sotruss ls ls -> libc.so.1:*atexit(0xff3c5bb4, 0x26000, 0x0) ls -> libc.so.1:*atexit(0x14648, 0xff1d0140, 0xee12c) ls -> libc.so.1:*setlocale(0x6, 0x14658, 0xff0b5900) ls -> lib…

Solaris 10 (SPARC) に wget をインストールする

パッケージをダウンロードする ブラウザで Introduction にアクセスする。 Webページ右側にある「Everything New or Old 」というリンクをクリックする。 「/pub/freeware/sparc/10/」に移動し、以下のパッケージをダウンロードする。 wget-1.11.4-sol10-spa…

Solaris 10 でパッケージをアンインストールする方法

bash-3.00# pkgrm -n SMCwget Removal of <SMCwget> was successful. 参考 CodeZine(コードジン)</smcwget>

Solaris 10 に SUN Studio 12.1 をインストールする

ダウンロードする http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/studio12-update1-136165.html で Download Tarfile Installer (Multi-Language) をクリックする。 Sun Studio 12 Update 1 Package Installer で以下の通り入…

クライアント側の Oracle Net のトレースを取得してみる

sqlnet.ora を作成する。 $ cd /home/oracle $ vi sqlnet.ora TRACE_LEVEL_CLIENT=6 TRACE_DIRECTORY_CLIENT=/home/oracle TRACE_UNIQUE_CLIENT=ON TRACE_TIMESTAMP_CLIENT=ON tnsnames.ora を作成する。 $ vi tnsnames.ora orcl = (DESCRIPTION = (ADDRESS …

.bash_profile に LD_PRELOAD を設定すると su を実行時に「ld.so.1: su: warning: .... : open failed: illegal insecure pathname」エラーが発生する

現象 -bash-3.00$ id uid=501(oracle) gid=501(oinstall) -bash-3.00$ cp -pi /usr/lib/32/libc.so /home/oracle/ -bash-3.00$ vi /home/oracle/.bash_profile export LD_PRELOAD_32=/home/oracle/libc.so -bash-3.00$ source .bash_profile -bash-3.00$ su …

2つ以上の空白文字は1つにするがシングルクオートで囲まれたリテラルは無視する Perl ワンライナー

@yoheia つ s/\G(('[^']*'[^']*?)*[^']*?)[ ]+/$1 /g Twitter. It's what's happening. Perl ワンライナーで試してみると、 % cat foo.c select ' ','a bc' from emp where ename='a '; % perl -pe 's/\G((\x27[^\x27]*\x27[^\x27]*?)*[^\x27]*?)[ ]+/$1 /g'…

ディスク使用率推移をPerlワンライナー

大量のファイル(df コマンドの実行結果)からディスク使用率の推移を出力する Perl ワンライナー。 find . -type f -print0|xargs -0 perl -lane '($d,$t)=$ARGV=~/([0-9]{8})([0-9]{4})$/;$t==q/0000/ and print qq/$F[5]\t$d\t$t\t$F[1]\t$F[2]\t$F[3]/'|…

「jobs -l」実行したときの「+」とか「-」ってなんだろ?

-bash-3.00$ jobs -l [1] 7328 Running tail -f a & [2]- 7339 Running perl -e 'while(1) {}' & [3]+ 7535 Running tail -f a & ↑の「-」とか「+」とかは何を意味するんだろう?手元の Solaris 10 でちょっと確認してみた。 -bash-3.00$ cat /etc/release O…

行頭が「*」で始まらない場合、行頭に「**」を追加する Perl ワンライナー

行頭が「*」で始まらない場合、もしくは、空行でない場合に、行頭に「**」を追加する Perl ワンライナー。 perl -nle '/^\*|^\s*$/ or s/^/\*\*/;print' hoge.txt

オラクルコンサルタントが語るSQLチューニング

基礎から学ぶOracle SQLチューニング (DB Magazine SELECTION)作者: 加藤祥平,中島益次郎出版社/メーカー: 翔泳社発売日: 2009/09/17メディア: 単行本(ソフトカバー)購入: 2人 クリック: 74回この商品を含むブログ (4件) を見る数ヶ月ぶりに本を買った。 D…

時刻の差を求める Perl ワンライナー

% perl -MTime::Local -le 'print ((timelocal(0,0,23,1,1,2000)-timelocal(0,30,8,,1,1,2000))/(60*60))' 14.5 コマンドラインでもっと楽に計算できそうな気がする。。。

Solaris 10 64bit で LD_PRELOAD で共有ライブラリをプリロードするとOSコマンド実行時にエラーが発生する

環境 -bash-3.00# uname -a SunOS solaris101 5.10 Generic_142910-17 i86pc i386 i86pc -bash-3.00# cat /etc/release Oracle Solaris 10 9/10 s10x_u9wos_14a X86 Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. Assembled 11 A…

file# と block# からセグメント名を調べる SQL

SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE 80 = FILE_ID AND 112000 BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1; 参考 続・INDEXに関する検証 その1 | Insight Technology, Inc. 静的データ・ディクショナリ・ビュー: DBA_2PC_N…

man をキーワード検索する

$ man -k sshd_config /usr/share/man/ja/windex: /usr/share/man/windex: $ su - # catman -w # exit $ man -k sshd_config

ASCIIコードを文字に変換する Perl ワンライナー

ASCIIコードが10進数の場合 $ perl -e 'map{print chr($_)} @ARGV' 112 101 114 108 perl ASCIIコードが16進数の場合 $ perl -e 'map{print chr(hex($_))} @ARGV' 70 65 72 6C perl 参考 chr関数 - 数値をASCIIに変換 - Perlゼミ(サンプルコードPerl入門)

Text::CSV を使ってみる

Text::CSV をインストールする。 $ /usr/local/bin/cpanm -f Text::CSV text_csv_sample.pl #!/usr/bin/env perl use strict; use warnings; use Text::CSV; my $tc = Text::CSV->new; while(<>){ next unless $tc->parse($_); my @fields = $tc->fields; pr…

Solaris 10 で /etc/resolv.conf を設定しているのにDNSで名前解決できない

現象 Solaris 10 で /etc/resolv.conf を設定しているのに DNS によるホスト名の名前解決ができない。 原因 ホスト名の名前解決に DNS を使用する設定になっていないため。 bash-3.00# cat /etc/nsswitch.conf ... hosts: files ... 対処 bash-3.00# vi /etc…