新米SEのブログ

医療系システムに関わる中でつまづいた箇所をメモしています

MENU

SQL0976Nの対処法

DB2のV8.1でテーブルスペースを作成する際にSQL0976N(SQLSTATE=57012)で詰まったのでメモ。

 

DBとBufferpoolを作成後にテーブルスペースを作成。

その後にテーブルスペースを作成すると

「SQL0976N ディスケット・ドライブのドアが開いています。SQLSTATE=57012」のエラー。

作成用のDDLの中身を見てみるとテーブルスペースを指定する際のディレクトリが存在しないドライブを指していた。修正したところ解消。

AWSでサーバに接続できない

今さらながら、、AWSでテスト環境つくれないかなと思って登録してみました。

EC2にWindows2012とWindows2008で1年間30Gは無料とのことでとりあえず手順に沿って進めたもののサーバにつながらなかったのでメモ。

セキュリティグループの設定で自端末のIP設定をしないとつながりませんでした。

f:id:nakayanyan:20151110212829p:plain

もしくは固定IPを設定

f:id:nakayanyan:20151110212838p:plain

これで無事につながりました。

同一テーブル内でのINNER JOIN

同一テーブルでコードが重複しているデータの中に列の値が異なるものを抽出する必要があった。

同一テーブル内でのINNER JOINの方法がわからなかったためメモ。

 

select a1.列1,
a1.列2,
a2.列1,
a2.列3
from テーブルA a1
inner join
(select
dummy.列1,
from テーブルA dummy
where dummy.a1) a2
on a1.列1 = a2.列1
where a1.列1 = 条件
order by a1.列1, a2.列3
with ur;

DB2 レプリケーションエラー

DB2 10.5.4でのレプリケーションでうまくいかないことがあったのでメモ。

●現象

列を追加した後にREORGをしていないテーブルがあったので、

SQLSTATE=57016

が発生。

REORGを実施後に解消。

●調査

IBMのサイトを見てテーブルを抽出。

IBM [DB2 LUW] REORGペンディングの回復方法 - Japan

db2 "SELECT VARCHAR(TABSCHEMA,30) TABSCHEMA,VARCHAR(TABNAME,30) TABNAME, REORG_PENDING, NUM_REORG_REC_ALTERS  FROM SYSIBMADM.ADMINTABINFO WHERE REORG_PENDING = 'Y'

 

●解消のための手順

1.テーブルのバックアップデータ取得
2. ALTER TABLE で DATA CAPTURE CHANGES を無効にする
    db2 alter table tablename data capture none
3. ALTER TABLEで表の列の定義変更を実施(この場合キャラ10へ変更)
    db2 alter table tablename alter column colomnname set data type char(10)
4.REORG ペンディング状態になるため、対象表に対して REORG を実施
    db2 reorg table tablename
5. ALTER TABLE で DATA CAPTURE CHANGES を再度定義
    db2 alter table tablename data capture changes

SQL Server 2008 EXPRESSの入った仮想サーバにODBC接続できない

VM上に立てたSQLServer2008にWindows7からODBC接続が出来なかったのでメモ。

 

【確認した点:Windows7側】

サーバにPINGが飛ぶことを確認。

ファイアーウォールは無効に。

次にODBCの設定を確認。

・サーバ名→ホスト名¥SQLEXPRESS

・ネットワークライブラリ→TCP/IP

・ポート番号→1433

【確認した点:SQLServer2008EXPRESS側】

・ファイアーウォールは無効に

SQLServer構成マネージャ→SQLEXPRESSのプロトコルTCP/IPを有効

・サーバーのプロパティ→このサーバーへのリモート接続を許可するにチェック

最後に確認したところが、

SQLServer構成マネージャ→SQLEXPRESSのプロトコルTCP/IPのプロパティ

            →IPAⅡでTCPポートをWin7で設定した1433を入力。

f:id:nakayanyan:20150804150533p:plain

 

こちらを設定するとつながるようになった。

DB2クライアントだとコマンドで設定する箇所だからか調べるのに時間がかかりました。。

WAS v8.5 でSQLエラー55039が出る

データ移行作業時に何度か同じエラーが出たのでメモ。

データベースの更新を何度かしていると以下のエラーがSystemOutで出るようになった。

-------------------------------------------------------------------------------------------------------------------

表スペース・アクセスが許されていません。. SQLCODE=-290, SQLSTATE=55039, DRIVER=3.68.61

-------------------------------------------------------------------------------------------------------------------

いつもと同じ権限のユーザーで動かしているのでDB2のユーザー権限の問題ではなさそう。

バックアップペンディングと同じ問題なのかなぁと思ってバックアップを取った後に再度WASを動かすとこのエラーは出なくなった。

DB2でLOADをするとSQL0552Nになる

DB2でAdministrator以外のユーザーでロードする際に権限エラーになったためメモ。

コネクト後にロードをしようとすると、

                                                                                                                                      • -

SQL0552N "[ユーザー名]"は、操作"LOAD"を実行する特権を持っていません。
SQLSTATE=42502

                                                                                                                                      • -

となる。

LOADだけの権限を与える方法を探したがうまく見つからず、
結局AdmnistatatorからDBADMを与える方法が早かった。

                                                                                                                                              • -

db2 connect to [DB名]user Administrator using [パスワード]
db2 grant DBADM on database to user [ユーザー名]
db2 terminate

                                                                                                                                              • -

これでロードできるようになった。