PDBの起動状態のオープンモードの保持・破棄

概要

  • CDB 再起動時の 1つ以上の PDB のオープン状態を保持できる

方法

オープンモードを保持するように設定する

  • 特定の PDB を設定する場合
SQL> ALTER PLUGGABLE DATABASE pdb1 SAVE STATE;
  • 複数の PDB を設定する場合
SQL> ALTER PLUGGABLE DATABASE pdb1, pdb2 SAVE STATE;
  • すべての PDB を設定する場合
SQL> ALTER PLUGGABLE DATABASE ALL SAVE STATE;
  • 特定の PDB 以外の全てを設定する場合
SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 SAVE STATE;

オープンモードの破棄

  • 特定の PDB を破棄する場合
SQL> ALTER PLUGGABLE DATABASE pdb1 DISCARD STATE;
  • 複数の PDB を破棄する場合
SQL> ALTER PLUGGABLE DATABASE pdb1, pdb2 DISCARD STATE;
  • すべての PDB を破棄する場合
SQL> ALTER PLUGGABLE DATABASE ALL DISCARD STATE;
  • 特定の PDB 以外の全てを破棄する場合
SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 DISCARD STATE;

オープンモードの保持状態を確認する方法

  • DBA_PDB_SAVED_STATES を参照する
SQL> desc DBA_PDB_SAVED_STATES
 名前                                                NULL?    型
 ----------------------------------------------------- -------- ------------------------------------
 CON_ID                            NOT NULL NUMBER
 CON_NAME                          NOT NULL VARCHAR2(128)
 INSTANCE_NAME                         NOT NULL VARCHAR2(128)
 CON_UID                           NOT NULL NUMBER
 GUID                               RAW(16)
 STATE                              VARCHAR2(14)
 RESTRICTED                         VARCHAR2(3)

SQL> select con_id, con_name, instance_name, state from dba_pdb_saved_states;

    CON_ID CON_NAME   INSTANCE_N STATE
---------- ---------- ---------- --------------
     3 PDB1       orcl   OPEN

参考

やっくしぇいびんぐ

目的とすることを成し遂げる前の本質的でない事に時間をかけてしまう、またはかかってしまう様のこと。

IT業界ではよく使われる言葉。

例えば、 Tensorflow でディープラーニングしよう!!と思って、インストールしてみたらGPU版をインストールできず、調査したらglibのバージョンが低い → Glibってどうやったらアップデートできるか調べる → あれ?使ってるOSに提供されてるパーゲージなくね? → ビルド方法調べる → ビルドに必要なライブラリなくね? → ビルドに必要なライブラリ調べる → あれ?ライブラリ提供してるパッケージなくね? → ライブラリのビルド方法調べる → あry.. → 結局別OSバージョンでやる

みたいなケース。

 

これあるあるだと思ってたんだけど、よく考えたら防げることも多い。

そして人のメンタリティによる部分も大きい。実現したい事に対してまっすぐ進め、諦める事の決断が早い人は陥りにくい気がする。

自分の場合にはこれが本当に苦手で特に機械学習周りでよく起きる。アルゴリズムの原理が気になって先に進まない、もっといい方法がないか考えて先に進まない、先進的なライブラリがないか探して進まない。

これは本当に直さないといけない。

エクセルだって何だって実現方法なんて何でもよくて、目的をいかに素早く達成できるかのみを考えて決断して行動しないと、、、

 

ひとまず以下のことをする。

どんなコンテキストで、何を実現するために今何をすべきで、行った結果はどんなもので、その結果をもとに何するべきかの予想を立てて、出た結果をもとに次のアクションプランを立てる

 

すごく基本的なことだけど意識しないと出来ない

 

 

vagrantでboxファイル圧縮 [ProviderがVirtualBoxの場合]

1. 仮想マシン上で以下を実行

$ sudo su -
# umount /vagrant
# yum clean all
# dd if=/dev/zero of=/EMPTY bs=1M
# rm -f /EMPTY

2. 仮想マシンをシャットダウン

$ vagrant halt

3. VirutalBoxのファイルを形式をvmdk から vdiに変更したり諸々

# VirtualBoxのHDDファイルがある場所を探す.
$ vboxmanage list vms
$ vboxmanage showvminfo 

# HDDファイルがある場所へ移動する
$ cd ~/VirtualBox VMs/test-app

# vmdk -> vdi
$ vboxmanage clonehd test-app.vmdk test-app.vdi --format vdi

# vdi形式のファイルを圧縮
$ vboxmanage modifyhd test-app.vdi compact

# 作成したvdiをvmdkに変換する
## ファイル名を前のvmdkファイルと別にする必要性がある。
$ vboxmanage clonehd test-app.vdi test-app-compact.vmdk --format vmdk

# 前のvmdkファイルを取り外し、圧縮したvmdkファイルを接続する。
# VirtualBoxのGUIでやるのが簡単なため割愛。

4. vagrant の boxファイルを作成 (これより前に圧縮したvmdkで動作するかどうか確認するほうが無難)

# vagrant package --out test-app.box

Windows でファイル結合

分割されたファイルを結合するためには、コマンドプロンプトで以下のように実行する。

# テキストファイルの場合
copy hoge01.txt + hoge02.txt + hoge03.txt hogehoge.txt

# zipのようなバイナリファイルの場合
copy /b hoge.zip01 + hoge.zip02 + hoge.zip03 hoge.zip

mecabで記号が名詞, サ変接続とされてしまう問題の解消

概要

  • MeCabのデフォルトでは半角記号が名詞、サ変接続とされてしまう。
$ mecab
;
;       名詞,サ変接続,*,*,*,*,*
EOS
  • この問題を解消するために未定義語の辞書を編集して、半角記号が記号として取り扱うことができるようにする

前提環境

ステップ

  1. unk.def の編集
  2. 辞書の再インストール

1. unk.def の編集

$ cat unk.def | grep SYMBOL
SYMBOL,1283,1283,17585,名詞,サ変接続,*,*,*,*,*
$ sed -i unk.def -e '/^SYMBOL,/s/名詞,サ変接続,\*,\*,\*,\*,\*/記号,一般,\*,\*,\*,\*,\*/' 
$ cat unk.def | grep SYMBOL
SYMBOL,1283,1283,17585,記号,一般,*,*,*,*,*

2. 辞書の再インストール

$ sudo /usr/local/libexec/mecab/mecab-dict-index
$ sudo make install
$ mecab
;
;       記号,一般,*,*,*,*,*
EOS

CentOS7でnkfを使う

インストール方法

$ sudo yum localinstall -y http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86 _64.rpm

nkfEUC-JPなファイルをUTF8に変換し、変換元を書き換える

$ nkf -g hoge.csv
EUC-JP (LF)
$ nkf -w --overwrite hoge.csv
$ nkf -g hoge.csv
UTF-8 (LF)

ssh で ProxyCommandが動かない問題の解決

ssh で多段ポートフォワーディングやプロキシを通す時に、~/.ssh/configにProxyCommandを設定してsshコマンドを実行しようとしたところ、下記のようなエラーが発生した。

$ ssh hoge
zsh: No such file or directory
write: Broken pipe

むむ、と思い、取り合えずデバッグモードで実行してみても..

$ ssh hoge -vvv
...
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Executing proxy command: exec ssh -CW 192.168.56.112:22 hoge
debug1: permanently_drop_suid: 197609
zsh: No such file or directory
...

エラーを見る限り、ProxyCommand内に設定しているコマンドを見つけることが出来ないのではなく、zsh自体のパスが解決できていない模様。

$SHELLを見てみると zshとなっている。

$ echo $SHELL
zsh

これをフルパスに直して実行すると、問題なく実行できた。

$ export SHELL=/bin/zsh
$ ssh hoge