2015年4月21日火曜日

[Oracle] 11.2.0.4.0に対してDBLINKを使用してアクセスするとORA-00600が出ることがある

新サーバにOracle Database 11.2.0.4.0を導入し、運用していたところ
外部からのDBLINKアクセス時間帯にORA-00600エラーが発生。

ORA-00600: 内部エラー・コード, 引数: [12224], [], [], [], [], [], [], [], [], [], [], []

外部Oracle側でもORA-00600を含め、ORAエラーが多発していたそうです。
# 管理下にないため詳細は確認できず。。

11.2.0.4.0側にパッチを適用すれば解消されるらしいので
適用してしばらく様子見ということで。


ついでにopatchを初めて使ったので、適用手順をざっくり覚書。

1. DB接続しているアプリ、Oracle関連サービスを停止
2. sh $ORACLE_HOME/OPatch/opatch lsinventory で適用状況確認
3. sh $ORACLE_HOME/OPatch/opatch apply [パッチ展開先Path] で適用
4. Oracle関連サービス、DB接続アプリを起動

Windowsなら、手順2,3はbatファイルになるのかな。
時間があるときに試してみよう。

# 2015/5/25追記
Windows向けのパッチはまだ提供されていない模様。。

2015年4月9日木曜日

[Linux] bashでのインクリメントの記述

bashでインクリメントを行うにはどうすればいいかを調べていたところ、
二重括弧を使ったほうが速いとの記述があったので覚書。


#!/bin/bash

COUNTER=0

while [ $COUNTER -lt 100 ]
do
  echo $COUNTER
  # COUNTER=`expr $COUNTER + 1` # 汎用性が高い
  COUNTER=$(( COUNTER + 1 ))    # 速いがOS依存
done


毎回インクリメントしたいときに調べて、という感じになってるので
いい加減に覚えてしまいたい。

2015年3月26日木曜日

[C# / Excel] ExcelにSQLを投げるツールを作ってみた

最近、Excelのシート間でデータを探す機会が多いのですが
一々VLOOKUPとかを使うのが面倒になってきたので、
Excelファイルに対してSQLを実行、データ表示するツールを作ってみました。
# 誰得?(笑)


とりあえず、scott.xlsxを用意。(Oracleのアレ)

■EMPシート
















■DEPTシート
















■作ったツールでSQLを実行した結果


















こんな感じ。


そのうち、ファイル間でも検索できるようにしたいなぁ。

2015年3月13日金曜日

[Java] 重複排除速い。。

Oracleにあるデータを重複排除しようと思ってDISTINCTをかけると
10分以上返ってこない、という状況が発生。

DISTINCTしなければ数秒で返ってくるので、プログラム的になんとかしてみようと
Javaを選択。(ほぼ初心者)

とりあえずDISTINCTしないでデータをテキストに出力して
List<String>で読み込み、HashSetにつっこんで回してみたところ
あっという間に重複排除した結果が得られました。


Javaのちからってすげー!

2015年3月10日火曜日

[Oracle] ある月の日付一覧を取得するSQL

とあるテーブルのデータを、休日も含めて(休日はレコードなし)
出力したいという要望があったので、日付一覧をとるSQLを覚書。

SELECT TO_CHAR(TO_DATE(:TARGET_MONTH, 'YYYY/MM') + ROWNUM - 1, 'YYYY/MM/DD')
  FROM "31レコード以上ある適当なテーブル/ビュー"
 WHERE ROWNUM <= EXTRACT(DAY FROM LAST_DAY(TO_DATE(:TARGET_MONTH, 'YYYY/MM')))

Oracle以外の場合は、編集が必要ですね。。