ablog

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

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

Pro*C ってどうやってインストールするの?

Oracle9i では Pro*C は以下のメディアに同梱されているらしい。 Oracle Programmer Oracle Database Oracle Client 追記(2009/06/23): 要するに client をインストールせにゃいかんみたい。Database のメディアには client も入っていて、client をインス…

PSR11.1.0.7適用手順(シングルインスタンス)

Oracle Time Zone Definitions の確認 $ sqlplus / as sysdba SQL> select version from v$timezone_file; VERSION ---------- 4 ← 「4」であればOK SQL> shutdown immediate パッチ適用前のバックアップを取得する $ mkdir -p ~/db_backup/before_psr11107 …

bashのif文でAND(論理積演算子)やOR(論理和演算子)を使う

AND(論理積演算子) if [ -f a.txt -a -f b.txt ] OR(論理和演算子) if [ -f a.txt -o -f b.txt ] [参考] bashクックブック P.128 レシピ 6.4 複数の属性の評価

Oracle9iR2(Solaris 10 on SPARC)でインスタンスの自動起動に失敗する

Oracle9iR2(Solaris 10 on SPARC)で Oracle のインスタンス・リスナー・EMDBControl の自動起動・停止設定 - ablog の通り設定してもOracleインスタンスが起動しなかった。/etc/init.d/dbora の行頭に「-x」を追加して、 #!/bin/sh -x 実行してみると、 # …

Advanced Lights Out Management (ALOM) CMT を使って Solaris を起動する

SUNのマシンにはリモートからOSを起動できるものがある。 マシンに専用のLANポートがついていて、そこにtelnetでログインして、OSの起動を行うことができる。 ALOM にログインする。 telnet 192.168.0.100 Please login: hoge Please Enter password: ******…

Unique Key に同じ値を insert すると、トランザクション・ロック(TX)の競合が発生する

ne more thing to add. We have just finished our own battle with this same wait event. In our case, it resulted from 2 sessions inserting same value into a UK constraint. This scenario will also post the very same event. We disabled the con…

DDLの置換に使ったPerlワンライナーをメモっておく

Oracle の DDL 置換に使った Perl ワンライナー。echo ワンライナーも混じってるけどw STORAGE句のINITIALの値を変更する。 perl -i.org -ple 's/STORAGE\((\s+)?INITIAL\s+[0-9]+/STORAGE\(INITIAL 1/gi' create_table.sql オブジェクトを作成する表領域を…

Bigtableの内部構造

Bigtableの内部構造 - スティルハウスの書庫の書庫 これはよいエントリ。自分で調べようと思っていたことが書かれている。 Seasar Conference 2009 Spring の「BigtableとJDOの勝ちパターン(by id:higayasuo)」でイメージがつかめたので、 Googleを支える…

元のファイルを残してgzipで圧縮する

$ ls /home/oracle/from/*.* | while read LINE do gzip -c $LINE > /home/oracle/to/$LINE.gz done う〜ん、もっとスマートにできると思うんだけどな。。。

全ての表・索引・クラスタから未使用の領域のみを解放するPL/SQL

Oracle で全ての表・索引・クラスタから未使用の領域のみを解放するPL/SQLを作ってみた。 declare cursor cu is select segment_name, segment_type from user_segments where segment_type = 'TABLE' or segment_type = 'INDEX' or segment_type = 'CLUSTER…

セグメントの未使用領域を開放する

Oracle でテーブルやインデックスを作成する際、STORAGE句でINITIALやMINEXTENTSが指定されていると、中身は空っぽでも指定されたサイズの領域が確保される。 未使用の領域を開放したい場合は、 alter table EMP deallocate unused keep 1k; とかしてやれば…

Solaris10で vncserver が起動しない

vncserver を起動しようとると、失敗した。 # /opt/sfw/bin/vncserver vncserver: couldn't find "xauth" on your PATH. xauth が見つからないらしいので探す。 # find / -name *xauth* /usr/openwin/bin/xauth /usr/openwin/share/man/man1/xauth.1 /usr/op…

サイズの大きいセグメントのランキングを調べるSQL

set pagesize 1000 set linesize 200 col segment_name for a50 col MB for 99999999 col extents for 99999999 select * from ( select segment_name, bytes/1024/1024 MB, extents from dba_segments where tablespace_name='USERS' order by bytes desc) …

Oracle9iR2 で Export しようとすると、ORA-00942 が発生する

$ exp system/oracle file=systme.dmp owner=system compress=y EXP-00008: Oracleエラー942が発生しました。 ORA-00942: 表またはビューが存在しません。 EXP-00024: エクスポート・ビューがインストールされていません。DBAに連絡してください。 EXP-00000…

Oracle で dump ファイルの中身を確認する

「show=y」を指定すると、インポートされずに DDL の内容が標準出力とログに出力される。 $imp system/oracle file=expdat.dmp log=expdat.log fromuser=scott touser=scott ignore=y show=y

Solaris で tar.gz を展開する

$ tar xvfz ... とできないので、 $ gunzip -c hoge.tar.gz |tar xvf - とすればよい。 圧縮ファイルの中身を確認する場合は、 $ gunzip -c hoge.tar.gz |tar tvf - 逆に、tar.gz に圧縮したい場合は、 $ tar cvf - hoge | gzip -c > hoge.tar.gz [補足] gzi…

SQL*Plusでバックスペースで文字を削除できない

以下の2つの方法で削除することができる。 [Ctrl] + [Backspace] で削除する。 削除キーを [Backspace] に設定して、[Backspace] で削除する。 SQL> ho stty erase [Backspace]

PHPでWebページの最終更新日時を取得する

PHP

PHP使ってないけど、友達から聞かれたので調べてみた。 PHP: $http_response_header - Manual でいいみたい。ちょっと試してみたいけど、実行環境がないなと思っていたら、そうだ「lleval」があった! lleval - run codes from your browser に行って、php…

初期化パラメータ CURSOR_SHARING とはなんぞや?

oracle-l メーリングリスト(sga - oracle-l - FreeLists)を読んでたら、Oracle の初期化パラメータ CURSOR_SHARING が話題にあがっていたので調べてみた。まず、初期化パラメータ OPEN_CURSORS とはなんぞや? - ablog を読んでカーソルとはなんぞやという…

小飼弾さんとスマナラサーラ長老が対談!?

先日行われた長老との対談の際に出版社から頂いたもの。 404 Blog Not Found:日本の寺がなぜ駄目なのかがわかった - 書評 - 出家の覚悟 小飼弾さんがスマナサーラ長老と対談!? それは読みたい。 茂木健一郎さんとスマナサーラ長老の対談はそのうちあるだろ…

Oracle はどのようにして読み取り一貫性をとっているか(2)

Oracle はどのようにして読み取り一貫性をとっているか - ablog を実機で確認してみた。 [セッション1]emp表の中身を確認する。 $ sqlplus scott/tiger SQL> select * from emp; ID NAME ------ -------------------- 001 smith [セッション1]update文を発行…

Oracle のトランザクションロック待ち

排他行ロック(TYPE=TX, LMODE=6)と行排他テーブルロック(TYPE=TM, LMODE=3)がかかってるのはわかるけど、何で共有テーブルロック(TYPE=TX, REQUEST=4)で待機してるんだろう? Primary Key に同じ値を insert すると、トランザクション・ロック(TX)の競合が発…

Oracle はどのようにして読み取り一貫性をとっているか

Oracle はどのようにして読み取り一貫性をとっているかまとめてみた。 例えば、SCNが100の時点でselect文を発行したとする。 必要なデータブロックを読み出す。 ブロックヘッダのSCN そうでない場合、ブロックヘッダのITL*1を見てどのUNDOブロックを使えば良…

RHEL 4 Update 6 または 7 で EM Agent を起動すると Linux がクラッシュするらしい

oracle-l メーリングリストから。 これはカーネルのバグで、カーネルにパッチをあてれば解決するとのこと。 sys_times()システムコールを同時にガンガン使うとカーネルパニックを引き起す不具合があったらしい。

rman でバックアップするときになぜターゲットデータベースをマウントしないといけないか?

rman でバックアップするときに制御ファイルにバックアップ情報を書込むからだと思う。 マウントとは何かというと制御ファイルをオープンして読込むこと。 rman はバックアップするときに制御ファイルに情報を書込まないといけない。 制御ファイルに書込むた…

Oracle Master Platinum の教科書がなかなか良い

最近、Oracle Master Platinum の教科書がなかなか良いことに気付いた。 例えば、rman(Recovery Manager)について詳しく書かれた書籍があまりないなと思っていたら、Amazon で中古で買った Oracle Master Platinum の教科書に詳しいことが書かれていた。オ…

複数のrmanカタログを同期する方法

oracle-l メーリングリストでなるほどという投稿があったのでメモ。 Q: rmanカタログが複数ある場合、例えば本番サイトと災害対策サイトがあるような場合、どうやって同期すればいいか? A: それぞれのrmanカタログで resync すればよい。 なるほどなるほど…

NHKで面白そうな番組やってるな

TV

http://www.nhk.or.jp/shiruraku/thu/index.html http://www.nhk.or.jp/itwb/ ふだん、アメトークとかレッドカーペットとかぐるナイとかお笑ばっかり見てるから気付かなかったw たまにカンブリア宮殿とか見るけど。

リスナー経由でsysユーザーでログインする

Oracle でリスナー経由でsysユーザーでログインしたい場合、以下の通り設定する必要がある。 パスワードファイルを作成する REMOTE_LOGIN_PASSWORDFILE=shared or exclusive REMOTE_LOGIN_PASSWORDFILE には以下の値を指定することができる。 none: パスワー…

UNDO表領域使用率の警告アラート閾値を変更してみる

自動UNDOチューニングについて - ablog のつづき。 UNDO表領域使用率の警告アラート値を実際に変更してみる。 dba_thresholds の定義を確認する。 desc dba_thresholds Name Null? Type ----------------------------------------- -------- ---------------…