NonStopSQL関連の知識をためていきます
https://h50146.www5.hpe.com/products/servers/nonstop/download/
https://www.slideshare.net/fjongma/mfc-whitepaper
-Dt4sqlmx.T4LogLevel=ALL -Dt4sqlmx.T4LogFile=<LogFile>
をオプションに加える
(T4ドライバはMXCSを使ってDBにアクセスをするJavaのドライバー)
端末接続をしてシェルからnohupでgtaclを実行しても端末接続を切ると、プロセスが終了してしまう
端末接続断の時に、画面出力先の端末が消滅してしまうからだ~
そのため、次の様にする
gtacl -term /G/zhome -c "<コマンド>"
これで端末接続が切れても、出力先が zhomeになるので処理が継続する
⇒ gtaclの出力先を grep してローカルファイルに落とすといったシェルが作れる
そのシェルをnohupで起動して、そのprocess id をファイルに保存しておき、あとでkillする作りにすれば、バックグランドで処理を継続できる
mxci mode mxcs; info ds *.*,detail; info server *.*,detail;
info serverは各DataSource(DS)に接続しているmxosrvrのプロセス情報を取得
各個別のDS名を指定することで表示範囲を狭めることも可能
また、大文字小文字の違いがなかったりするので、必要であれば""でかこう必要がある
起動方法は
start ds <DS名>;
止め方は
stop ds <DS名>, reason '理由';
設定変更は
alter evar <DS名>.<KEY>, value '<NEW_VALUE>'; alter ds <DS名>, <KEY> <value>;
DS名は OASとDS名のフルパスにする
super.superなどの特権ユーザでログインして
meascom 1+ status meassubsys
これで現在稼働しているMeasureファイルが一覧表示される
止めるには
2+ stop <MeasureFileFullPath>
の様に実行する (たとえば、 stop $WORK001.MEASURE.CP031510 の様に )
性能をリアルタイムで測定するのにはrpmを使用する
rpm > set term vt100 > add <SEVERNAME> > zoom \*
画面に一定間隔で性能がカラーで表示更新される
SERVERは複数指定することが可能(画面分割される)
終了は<Ctl-C>
emsdist /pri 10/ty p,co $0,te $home,ti xx:xx, st xx:xx
tiはfrom、stはstopなので省略すると連続して最新情報が画面出力
止めるのは <Alt-B> で抜けて、 stop を入力 ⇒ 抜けただけだと、コマンドは入力できるが、画面出力も続く状態
ログインを続けて失敗してFREEZEされたら、 特権ユーザー(super.superなど)でログインして、
safecom =info alias <user> =thaw alias <user> =fc info =info alias <user> . =exit
で解放する
sql の中身を編集して、? を ?P1 の様に、番号をつける\ 与えるパラメータを個別に指定する(全てのパラメータを定義する必要がある)
PREPARE q FROM [SQL文] ; set param ?P1 'XXXXXXX'; set statistics on; execute q;
途中経過の処理件数とパラメータ付与でのSQL実行を確認できる
explain options 'e' 'MXSTMT01' from '<MFC_FILE>';
オプションは f も可、MFC_FILE名は無印を指定
普通のSQLの場合は
PREPARE q FROM [SQL文] ; explain options 'f' q; explain options 'e' q;
で画面表示される
textファイルでMACROを作成 → ftp or ffftp で転送 (Guardian modeでの転送)
⇒ テキストファイルとして保存される → run <できればフルパス> で動く
gname -s <OSS_FILE> ⇔ pname -s <Guardian_FILE>
⇒ -s がないともう少し詳細なデータが表示される
基本gtacl を実行するのだが、shellから実行する場合、端末からの実行と異なる(結果が出力されない)
File=`gname -s $oss_file` Cmd="'run \$SYSTEM.XXXX.XXXXXX ${File}'" sh "gtacl -c ${Cmd}"
最後を単に gtacl だけにすると、画面表示・出力されない
テーブルの一覧は
get all tables;
インデックスの一覧は
get all indexes;
oshなどでOSS環境になっている状態でGuradianプロセスを起動するには
run name=/G/ProcessID Program parameter
これで、Guardian環境で実行される
プロセス間通信を使ってアクセスする場合は、
client \$ProcessID
のように実行する。 ここでポイントは、
1) Process名には$がついている。
2) シェル実行の場合\$ とエスケープのためのバックスラッシュが必要
社内LANからは、TeraTermを使って、普通のtelnetでログインする。
SSHでログインしようとすると拒絶される。
UserIDとPasswordでログイン可能。
mxci でコマンド入力が可能になる。 exit; で終了
set catalog XXXX; set schema YYYY;
を指定すると、目的のDBにアクセスできる。(set schmea XXXX.YYYY;でもよい)
(ない場合は作成が必要、schema作成はちょっとだけ時間がかかる)
DBにまでたどり着けば、あとは、Create Table ・・・ / select * from ・・・ と普通