VMware Fusion上のWindows10が調子悪かったのでVMwareに問い合わせてみた件
VMware Fustion上のWindows10がストールしてしまうことが時々あったので、問い合わせしたところメールをいただいた結果が以下。
VMware Fusionのスナップショットの意味
メールでは
- バックアップを取り
- スナップショットを消してみて
とのことだったので、それをして様子見している。と回答した。
でもじゃあ、スナップショットは何個とれるの?って質問したら 100まで取れるけど、スナップショットからの起動(そうなの?)はパフォーマンスに影響があり、 そもそもスナップショットは未知や危険な何かのテストのためのもので テスト終わったら消せとのこと。ストール時は12,13個スナップショットが溜まっていた状態。
要はバックアップの意味合いはまったくないということ(バックアップは仮想マシンのファイルをまるごとコピーで対処)。
によると、最初のVMからの差分らしい。 バックアップしたいのならやはり、
を参考に仮想マシンをコピーするべき。
Oracle CREATE DIRECTORYでディレクトリオブジェクトを使用
PL/SQLでUTL_FILE()なんかを使う場合に便利なディレクトリオブジェクト
CREATE DIRECTORY オブジェクト名 AS '/path/to/foo/bar'; GRANT READ ON DIRECTORY オブジェクト名 TO ユーザ名; GRANT WRITE ON DIRECTORY オブジェクト名 TO ユーザ名;
こうしておくと「オブジェクト名」でアクセスできる。
CREATE OR REPLACE PROCEDURE FOO_BAR AS vHandle UTL_FILE.FILE_TYPE; BEGIN vHandle := UTL_FILE.FOPEN('オブジェクト名(大文字)', 'foo.txt', 'a'); .... END; /
大文字ってのがミソ。
参考は以下。
Oracleでディレクトリ・オブジェクトの作成・削除・確認
UTL_FILEの使い方 (CREATE DIRECTORY 編)
Markdown 記法で書いて見た
はてな記法も好きなんですけど、はてなでしか使えないので、今回は、githubなどでも使っているmarkdownにしてみた。以下の記事が秀逸。
本当にh2ははてなでは使えていないの?
上記はh2になるはずだけどデフォルトのcssではh3とはfont-sizeが150%か140%の違いみたいですね。
プログラム系は以下
バッククォート3つの後に言語名称を書く。
/** * テスト */ int main(void) { return 0; }
先頭に4つのスペース
先頭4つをスペースにするとpreで囲まれるみたい。
'''c
/**
* テスト
*/
int main(void) {
return 0;
}
'''
引用
引用は先頭に>
をつけるだけでいいっていいよね。二行目以降には>
があってもいいみたい。
ここが引用です。 メールの引用もそのままいけそう。 連続行も対象になります。
注意
途中で改行したいときは行の最後にスペース2つが必要。
バルクバインド(BULK BIND)の例
セレクト結果を一行づつ処理したいってとき、BULK BIND(BULK FETCHもあるみたい)っていうこともoracleではできるんですね。
-- バルクバインドの例 SET SERVEROUTPUT ON DECLARE TYPE TLINE IS TABLE OF テーブル名%ROWTYPE INDEX BY BINARY_INTEGER; vLINE TLINE; BEGIN SELECT * BULK COLLECT INTO vLINE FROM テーブル名; FOR i IN 1 .. vLINE.COUNT LOOP DBMS_OUTPUT.PUT_LINE('No=' || vLINE(i).カラム名); END LOOP; DBMS_OUTPUT.PUT_LINE('取得行=' || vLINE.COUNT); END; /
参照は以下。
連載 PL/SQLを使ってみよう!第61回「バルク・バインド(SELECT BULK COLLECT INTOの場合)」 | 集合研修 システム・テクノロジー・アイ銀座会場
ちなみに、BULK FETCHは以下。
レコード確認してからのINSERT
レコードがない場合に限りinsertする方法。キーにしてエラーにすればよいって言われるのはわかっているけど、エラーメッセージ見たくない(見せたくない)人向け。
INSERT INTO テーブル(col1, col2) SELECT '値1', '値2' FROM DUAL WHERE NOT EXISTS(SELECT 'X' FROM テーブル WHERE col1 = '確認したい値');
テーブルの検索結果をNOT EXISTSで判定して、INSERT SELECTでインサートする。
参考サイトは以下。
Oracle NVARCHAR2(1600)で1600文字入らない件
NVARCHAR2のカラムを大きくして大量文字を入力しようとすると以下のエラーが発生して入力できない。
エラー:: ORA-01461 : LONG値はLONG列にのみバインドできます。
ググってみたところ、
http://www.projectgroup.info/tips/Oracle/errorcode/ORA01461.html
のサイトが出てきた。
とのことでバージョンを確認したところ、こちらの環境はOracle Clientは11.2.0.4でした。残念。で、エラーメッセージが崩壊しているのは置いておいて、どこまで入るのだろうと根気強く入力値を変化した結果、1333文字までしか入らないことがわかった。
NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
と指定しているのでShift_JIS(2byte)なんだけど、1333×3=3999つまり4000byte境界があるっぽい(内部で3byteで計算してるのか?)。
なんだかとても納得行かない仕様。
ちなみに確認したOracleサーバ側のバージョンは11.2。