HiRDB Tips
HiRDB Tips 集
昔、HiRDBのクラスタリング環境を作るというミッションがあり、盛大に嵌りました。多分今までのエンジニア人生で一番、折角なので色々学んだTipsを書きます。
別スキーマへの参照権の付与
- まずは参照させるユーザでログインする
- GRANT SELECT ON テーブル名 TO 参照させるユーザ;
SQLで日付を使う(oracleのsysdateみたいなもん)
- CURRENT_TIMESTAMP
- CURRENT_DATE
- CURRENT_TIME
pdsqlでAutoCommit
SET AUTO COMMIT ON;
で auto commit
SET AUTO COMMIT OFF;
で auto commit off
RDエリアを拡張する
まずファイルを作る
expand rdarea RDエリア名
file name "作成したファイルシステム領域"
initial 2000 segments ; ←2000セグメント追加
pdmod -a フルパスで上記ファイル
ロックを探す
pdls -d lck
SQL実行時のトレースログを出す(チューニング時に使うとか)
PDSQLTRACE=0 ・・・トレースファイルサイズ0無制限
PDCLTPATH=/xxxx/yyy ・・・トレースファイル格納ディレクトリパス
PDSQLEXECTIME=YES ・・・SQL実行時間をトレースログに出す
PDUAPREPLVL=a ・・・統計情報をトレースログに出す
を環境変数にセットして、pdsql経由でSQLを実行
テーブル一覧を検索する
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,N_COLS FROM MASTER.SQL_TABLES WHERE TABLE_SCHEMA='スキーマ名'
これを使えば、その他のシステム系テーブルの名前が分かり便利です。
Columテーブルとか、Indexテーブル、RDエリアテーブルとか
Oracleのdba_tablesとかmysqlのinfomationschemaみたいなもん
##テーブル定義を出力(Oracleのdesc)
columns テーブル名
ファイルに記載されたSQLを実行
pdsql < ファイル名(SQLが記述)
pdsql < ファイル名(SQLが記述)> 結果がファイルに出力
※参考情報 pdsqlでSQLの結果をファイルで出力
putfile
HiRDBに接続中のユーザの強制削除(実行中のSQL毎)
返って来ないSQLを強制終了もします。マニュアル読みつつ自己責任で実行して下さい。
pdcancel -x [サーバ名] -i [プロセスID] -d
pdcancel -X [ユニット名] -i [プロセスID] -d (パラレルサーバ)
プロセスIDはpdls -d prc で見つける
データがnullだった場合の初期値(Oracleのnvl)
COALESCE(ID, 'aaaaa')AS ID … IDがnullだったらaaaaaという文字列を返す
データ全削除 (Oracle のtruncate table)
PURGE TABLE テーブル名;
RDエリアの閉塞解除
pdrels -r [RDエリア名] -o
※RDエリア名は*でワイルドカードな指定が可能
トリム
LTRIM,RTRIM
差集合検索(Oracleのminus)
exceptまたはexcept all
※union みたいに使う
日付フォーマット変換 (Oracle のto_charみたいなもん)
VARCHAR_FORMAT(日付カラム,'YYYY-MM-DD ')
VARCHAR_FORMAT(日付カラム,'HH-MI-SS.N')
文字位置検索
position('def' in 'abcdefc' from 1)
最後に
上記色々書きましたが、当時一番苦労したのが
HiRDBのパラレルサーバで、クラスタリング環境を構築するタスクでした。
マニュアルと格闘しつつサポートに頼りつつ、相当苦労しました。
最終的には何とかなりましたが
Unix初心者が手を出せる領域じゃないんだなぁと実感しました。
同じ苦労をしている人がいたら、頑張って下さい!!