かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

DENSOハンディターミナル:スキャンディスクの結果、不正なファイルを発見した時の対処

DENSOハンディ―ターミナルのBHシリーズを起動時に、以下のメッセージが出た時の対処。

スキャンディスクの結果、不正なファイルを発見しました.
詳細は、"$$BRKLST.SYS"を参照してください

何らかの原因でファイルが破損した時に、時々発生する。  
 

<操作>
  1. 電源を落とす。
  2. [SF] + [1] を押しながら電源を入れ、システムメニューを起動
  3. システムメニュー起動後、[SF] + [0] を押し、DELETE FILEメニューを起動
  4. ファイル名の先頭に、「+」の記号が付いたファイルを削除。
  5. 再起動

破損したファイルが、システムの稼働に必要なコンフィグファイルだった場合、再度入れ直す。

Oracle:主キーの内容を変更

プライマリキーを編集するコマンドは無いみたいなんで、いったん削除した後に、もう1回作成する。

alter table <テーブル名> drop constraint <主キー制約名>; 
alter table <テーブル名> add constraint <主キー制約名> primary key <列名>; 

再作成時にエラーが発生した場合、以下のコマンドを先に実行する。

drop index <主キー制約名>

キーに複数カラムを指定する場合、(COLUMN1, COLUMN2) といった記述となる。

DENSOハンディターミナル:ハンディからハンディへのコピー

DENSO製のハンディターミナルにて、ソースや設定ファイルを別の機器に丸コピーする時の手順です。

1.システムメニュー起動

[SF] + [1] を押しながら電源をONにすると、システムメニューが起動します。 

2.双方の通信設定を合わせる

システムメニューより、「4:SET SYSTEM」→「5:COMMUNICATION」→「1:OPTICAL」→「1:PARAMETER」の設定を、通信させる機器同士で一致させる。
加えて、「4:SET SYSTEM」→「5:COMMUNICATION」→「1:OPTICAL」→「2:PROTOCOL」の設定も一致させる。
※合わせる値は何でもいいのですが、工場出荷時の状態がオススメです。

3.通信プロトコルを選択する

システムメニューより、「4:SET SYSTEM」→「5:COMMUNICATION」→「4:PROTOCOL TYPE」→「1:Ymodem」を選択。

4.プログラムをコピーする

<コピー元>
システムメニューより、「3:UPLOAD」→「3:HT<-->HT COPY」を選択

<コピー先>  
システムメニューより、「2:DOWNLOAD」→「2:HT<-->HT COPY」を選択

双方の準備が出来たら、赤外線の通信口を合わせる。
近すぎると上手く通信出来ない事が多いです。
※結構大きい通信音が鳴ります。注意して下さい。

その他注意点

  • PROTOCOL TYPEが「BHT-Ir Protocol」だと、バイナリファイル(PD4)がコピーされません。
  • ハンディからハンディへコピーする時、通信プロトコルと伝送速度が表示されます。うまく行かない場合、設定を見直してみて下さい。

Oracle:【ORA-00060】デッドロックの発生原因を調査

(エラーメッセージ)
ORA-00060: リソース待機の間にデッドロックが検出されました。

デッドロックの解除は、こんな感じで。

詳しく調べたい場合(デッドロックが発生しやすいSQLはどれか等)は、トレースファイルを確認する。

トレースファイルの保存先は、sql plusにて以下を実行する事で調べる事が出来る。

show parameter user_dump_dest;

ファイル名は、<SID>_ora_<process_id>.trc となっている。

Oracle:【ORA-12514】突然リスナー異常が発生して繋がらなくなった

正常稼働していたが、ある日突然繋がらなくなったので調査。

クライアントから接続した時のエラー内容

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

サーバから接続した時のエラー内容

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

あれ?エラーの内容が違う。
よく調べてたら、DBFを保存しているドライブがパンパンになっていて、SGA(共有メモリ)へ正常にアクセスできなかったのが原因だったみたい。

ディスク容量を空けた後、マシン再起動で解決した。

参考情報

DBFの保存先は、以下のSQLで確認できる。

select TABLESPACE_NAME, FILE_NAME from DBA_DATA_FILES

Oracle:ログの種類と出力先

Oracleのログの種類と出力先についてのメモ。
以下、出力先はデフォルト設定時となっています。

クライアントからDBへの接続が出来ない場合

sqlnet.log を確認する。
パスはバージョンによって異なる。

(10g以前)
$ORACLE_HOME/network/log

(11g以降)
$ORACLE_BASE/diag/clients/user_<OS_USERNAME>/host_<MASHINE_HASH_VALUE>_<ADR_VERSION>/trace/

sqlnet.log の出力先は、sqlnet.ora にて指定可。
sqlnet.ora のパスは、$ORACLE_HOME/network/admin/


リスナーに接続できない場合

リスナー・ログ(listener.log)を確認する。
パスはバージョンによって異なる。

(10g以前)
$ORACLE_HOME/network/log

(11g以降)
$ADR_BASE/diag/rdbms/<ORACLE_SID>/<SID>/trace/alert_<ORACLE_SID>.log
$ADR_HOME/alert/log.xml



各種アラート情報

アラート・ログ(alert_.log)を確認する。
パスはバージョンによって異なる。

(10g以前)
$ORACLE_BASE/admin/<ORACLE_SID>/bdump/alert_<ORACLE_SID>.log

(11g以降)
$ADR_BASE/diag/rdbms/<SID>/<SID>/trace/alert_<SID>.log

または、sql plusで以下を実行しても確認できます。

show parameter BACKGROUND_DUMP_DEST



その他補足情報

Oracle環境変数

ORACLE_HOME、ORACLE_BASE のパスは、コンソールより以下を実行する事で確認できる。(Windows環境)

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE" /s

ADR_HOME、ADR_BASE は、以下のSQLで確認できる。

select * from V$DIAG_INFO where NAME in ('ADR Base','ADR Home')

ADR

ADR(Automatic Diagnostic Repository:自動診断リポジトリ)は、Oracleの診断に使用するファイル群です。

Visual Studio Code:ショートカットキーの一覧

以下の操作で、ショートカットキーの一覧を表示できる。

ファイル→基本操作→キーボードショートカット

検索機能が付いてて便利。

f:id:kakisoft:20171012011559p:plain  
キーバインドが割り当てられていない操作については、keybindings.jsonを編集する事で有効化できる。
(「次を開いて編集:keybindings.json」をクリックするとファイルを開く。)
 
以下、keybindings.json追記例。

[
    //選択範囲を大文字に変換
    { "key": "ctrl+u", 
      "command": "editor.action.transformToUppercase"},

    //選択範囲を小文字に変換
    { "key": "ctrl+shift+u", 
      "command": "editor.action.transformToLowercase"}
]

key: の内容は任意。
commandに設定する内容は、ファイルを開いた時に同時に開かれる、「既定のキーバインド」のタブを参照。