ドルヲタ系インフラエンジニア じーふーの備忘録

クラウドをメインに扱うインフラエンジニアが書くメモやら雑感、たまにドルヲタ的活動記録残します。最近の推しはAzureのData Factory(V2)です。

【oracle】 GI (11.2.0.4)インストールしようとするとホスト名に大文字が含まれていたらINS-06006エラー発生

Linux環境にGridInfrastructure(11.2.0.4)をOUIを利用してインストール・アップグレードしようとした場合に、インストール対象のホスト名には要注意です。
ホスト名に大文字が含まれていた場合、対象ホスト間をパスワードなしでSSH接続できる状態にあったとしてもNodeSelection画面でINS-06006エラーが発生して先に進めない状態になるバグあり。

当バグに関するMOS公式ドキュメントIDは1768391.1です。

環境

  • Redhat6.5
  • GI(11.2.0.4)

解決策

OUI起動コマンド実行時に、SSHのチェックを実行しないためのオプションを追加する。

./runInstaller

./runInstaller -J-Doracle.install.ssh.setupCheckEnabled=false

【windows】 個人的にちょっと便利だと思っているショートカットキーメモ

キーボードのみで右クリックメニュー表示

操作対象のファイル/フォルダを選択している状態で[Shift]+[F10]

(ちなみに、右クリックで表示されるメニューはコンテキストメニューというらしいです。)

地味ですが便利です。 自分はよくvagrantを利用して仮想環境を立ち上げる際に以下の操作をしています。

  1. エクスプローラよりVagrantfileを格納しているフォルダを選択
  2. [Shift]+[F10]キーでコンテキストメニュー表示
  3. [w]を押してコマンドウィンドウをここで表示選択
  4. 選択フォルダに移動している状態でコマンドプロンプトが立ち上がることを確認
  5. vagrant up実行
  6. 仮想環境起動!!

これでキーボードだけで仮想環境起動まで実行できます。
(マウス使うのと大差ないかも?)

アクティブウィンドウ終了 / windowsのシャットダウンメニュー表示

[alt]+[F4]でアクティブウィンドウが閉じることができます。 (有無を言わさず閉じられるので要注意)

また、デスクトップ上で上記ショートカットキーを実行するとwindowsのシャットダウンメニューが表示されます。

スタートメニューからWindowsをシャットダウンさせようとした場合、WindowsUpdateが実行されて中々帰れない..という状況に陥って困った経験がある方もいるかと思います。
WindowsUpdateを適用しないで終了したい場合は上記コマンドを実行してwindowsのシャットダウンメニューよりシャットダウンを選択すると幸せになれます。
Windows8以降からはwindowsのシャットダウンメニューからシャットダウンが選択できず、更新プログラムをインストールしてシャットダウンしか選択できないようになったみたいです。
検証環境が自分には用意できていないので未検証ですが。。

詳しくは下記をご参照ください。 Windows TIPS:Windows 7/8/8.1で更新プログラムのインストールをスキップしてシャットダウンさせる - @IT

【linux】 現在ログイン中ユーザーの利用状況を確認

コマンド

w [ユーザー名]コマンドを実行することで現在ホストにログインしている指定ユーザーの利用状況を確認することができます。
また、ユーザー名を指定しないで実行することで、ログインしている全てのユーザーの利用状況が確認できます。

Show who is logged on and what they are doing.

実行ログ

[root@vagrant-centos65 ~]# w
 21:50:11 up  2:27,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
vagrant  pts/0    192.168.33.1     18:39   21.00s  3.71s  0.18s sshd: vagrant [priv]
root     pts/1    192.168.33.1     21:50    1.00s  0.13s  0.02s w

各フィールド詳細

フィールド名 備考
USER ユーザー名
TTY 端末
FROM リモートホスト
LOGIN@ ログイン時刻
IDLE 入力待ち状態時間
JCPU 全てのプロセスの処理時間
PCPU 実行中プロセスの処理時間
WHAT 実行中のプロセス

オプション

オプション 備考
-h ヘッダを省略
-s JCPU, PCPU, WHATフィールドを省略
-f FROM(リモートホスト)フィールドを省略
-V バージョンを確認

【postgresql】 yumを利用してインストール

環境

CentOS 6.5

リポジトリ追加

公式で配布している各環境用のRPMファイルを下記サイトよりダウンロードしてインストール

PostgreSQL RPM Repository (with Yum)

今回は下記RPMファイルをインストールしました

[root@vagrant-centos65 ~]# rpm -ivh /vagrant/pgdg-centos94-9.4-1.noarch.rpm
warning: /vagrant/pgdg-centos94-9.4-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8                                                                                                       : NOKEY
Preparing...                ########################################### [100%]
   1:pgdg-centos94          ########################################### [100%]
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# rpm -ql pgdg-centos94
/etc/pki/rpm-gpg
/etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-94
/etc/yum.repos.d/pgdg-94-centos.repo
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# rpm -qi pgdg-centos94
Name        : pgdg-centos94                Relocations: (not relocatable)
Version     : 9.4                               Vendor: (none)
Release     : 1                             Build Date: Thu 15 May 2014 09:29:57 PM JST
Install Date: Tue 05 May 2015 07:07:43 PM JST      Build Host: koji-sl6-x86-64-pg94
Group       : System Environment/Base       Source RPM: pgdg-centos94-9.4-1.src.rpm
Size        : 2168                             License: BSD
Signature   : DSA/SHA1, Thu 15 May 2014 09:29:57 PM JST, Key ID 1f16d2e1442df0f8
URL         : http://yum.postgresql.org
Summary     : PostgreSQL 9.4.X PGDG RPMs for CentOS - Yum Repository Configuration
Description :
This package contains yum configuration for CentOS, and also the GPG
key for PGDG RPMs.
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# cat /etc/yum.repos.d/pgdg-94-centos.repo
[pgdg94]
name=PostgreSQL 9.4 $releasever - $basearch
baseurl=http://yum.postgresql.org/9.4/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-94

[pgdg94-source]
name=PostgreSQL 9.4 $releasever - $basearch - Source
failovermethod=priority
baseurl=http://yum.postgresql.org/srpms/9.4/redhat/rhel-$releasever-$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-94

PostgreSQLインストール

下記パッケージをインストール

[root@vagrant-centos65 ~]# yum search postgresql94-server
postgresql94-server.x86_64 : The programs needed to create and run a PostgreSQL server

postgresql94-serverをインストールすることで下記パッケージがインストールされます。

  • postgresql94-server
  • postgresql94
  • postgresql94-libs

備考

各パッケージ詳細

postgresql94

PostgreSQLのクライアント機能群

postgresql94.x86_64 : PostgreSQL client programs and libraries

インストールすることで追加される機能

機能 備考
/usr/pgsql-9.4/bin/clusterdb PostgreSQLデータベースをクラスタ化する
/usr/pgsql-9.4/bin/createdb 新しいPostgreSQLデータベースを作成する
/usr/pgsql-9.4/bin/createlang PostgreSQLの手続き言語をインストールする ※廃止予定
/usr/pgsql-9.4/bin/createuser 新しいPostgreSQLのユーザアカウントを定義する
/usr/pgsql-9.4/bin/dropdb PostgreSQLデータベースを削除する
/usr/pgsql-9.4/bin/droplang PostgreSQLの手続き言語を削除する ※廃止予定
/usr/pgsql-9.4/bin/dropuser PostgreSQLのユーザアカウントを削除する
/usr/pgsql-9.4/bin/pg_basebackup PostgreSQLクラスタのベースバックアップを取得する
/usr/pgsql-9.4/bin/pg_config インストールしたバージョンのPostgreSQLに関する情報を提供する
/usr/pgsql-9.4/bin/pg_dump PostgreSQLデータベースをスクリプトファイルまたは他のアーカイブファイルへ抽出する
/usr/pgsql-9.4/bin/pg_dumpall PostgreSQLのデータベースクラスタスクリプトファイルへ抽出する
/usr/pgsql-9.4/bin/pg_isready PostgreSQLサーバの接続状態を検査する
/usr/pgsql-9.4/bin/pg_receivexlog PostgreSQLサーバからトランザクションログをストリームする
/usr/pgsql-9.4/bin/pg_restore pg_dumpによって作成されたアーカイブファイルからPostgreSQLデータベースをリストアする
/usr/pgsql-9.4/bin/pg_test_fsync PostgreSQLの最も高速なwal_sync_methodを決定する
/usr/pgsql-9.4/bin/psql PostgreSQLの対話的ターミナル
/usr/pgsql-9.4/bin/reindexdb PostgreSQLデータベースのインデックスを再作成する
/usr/pgsql-9.4/bin/vacuumdb PostgreSQLデータベースの不要領域の回収と解析を行う

ディレクトリ構成

役割 パス
実行ファイル /usr/bin and /usr/pgsql-9.4/bin
ライブラリ /usr/pgsql-9.4/lib
ドキュメント /usr/pgsql-9.4/doc
コントリビューション関連ドキュメント /usr/pgsql-9.4/doc
データファイル /var/lib/pgsql/9.4/data
バックアップ領域 /var/lib/pgsql/9.4/backups
テンプレート /usr/pgsql-9.4/share
プロシージャ言語 /usr/pgsql-9.4/lib
共有ライブラリ /usr/pgsql-9.4/include
その他 /usr/pgsql-9.4/share
リグレッションテスト /usr/pgsql-9.4/lib/test

マニュアル

RPM FILE LOCATIONS.
-----------------------------------------------------------------------------
To be in compliance with the Linux FHS, the PostgreSQL RPMs install files in
a manner not consistent with most of the PostgreSQL documentation.  According
to the standard PostgreSQL documentation, PostgreSQL is installed under the
directory /usr/local/pgsql, with executables, source, and data existing in
various subdirectories.

Different distributions have different ideas of some of these file locations.
In particular, the documentation directory can be /usr/doc, /usr/doc/packages,
/usr/share/doc, /usr/share/doc/packages, or some other similar path.

However, the Red Hat / Scientific Linux ( CentOS / Fedora RPM's install
the files like this:

Executables:            /usr/bin and /usr/pgsql-9.4/bin
Libraries:              /usr/pgsql-9.4/lib
Documentation:          /usr/pgsql-9.4/doc
Contrib documentation:  /usr/pgsql-9.4/doc
Source:                 not installed
Data:                   /var/lib/pgsql/9.4/data
Backup area:            /var/lib/pgsql/9.4/backups
Templates:              /usr/pgsql-9.4/share
Procedural Languages:   /usr/pgsql-9.4/lib
Development Headers:    /usr/pgsql-9.4/include
Other shared data:      /usr/pgsql-9.4/share
Regression tests:       /usr/pgsql-9.4/lib/test

While it may seem gratuitous to place these files in different locations, the
FHS requires it -- distributions should not ever touch /usr/local.  It may
also seem like more work to keep track of where everything is -- but, that's
the beauty of RPM -- you don't have to keep track of the files, RPM does it
for you.

These RPMs are designed to be LSB-compliant -- if you find this not to be the
case, please let us know by way of the pgsql-pkg-yum@postgresql.org
mailing list.

リグレッションテストを実行する

下記パッケージをインストールすることでリグレッションテストを実行することが可能となります。

postgresql94-test.x86_64 : The test suite distributed with PostgreSQL

実行ログ

[root@vagrant-centos65 regress]# su - postgres
-bash-4.1$
-bash-4.1$ cd /usr/pgsql-9.4/lib/test/regress/
-bash-4.1$
-bash-4.1$
-bash-4.1$-bash-4.1$ make check
rm -rf testtablespace results
mkdir testtablespace results
./pg_regress --inputdir=. --psqldir='/usr/bin'   --dlpath=. --schedule=./parallel_schedule
(using postmaster on Unix socket, default port)
============== dropping database "regression"         ==============
NOTICE:  database "regression" does not exist, skipping
DROP DATABASE
============== creating database "regression"         ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test tablespace               ... ok
parallel group (20 tests):  name txid regproc oid pg_lsn char varchar money int2 float4 boolean text int4 float8 uuid int8 bit enum rangetypes numeric
     boolean                  ... ok
     char                     ... ok
     name                     ... ok
     varchar                  ... ok
     text                     ... ok
     int2                     ... ok
     int4                     ... ok
     int8                     ... ok
     oid                      ... ok
     float4                   ... ok
     float8                   ... ok
     bit                      ... ok
     numeric                  ... ok
     txid                     ... ok
     uuid                     ... ok
     enum                     ... ok
     money                    ... ok
     rangetypes               ... ok
     pg_lsn                   ... ok
     regproc                  ... ok
test strings                  ... ok
test numerology               ... ok
parallel group (20 tests):  comments lseg path timetz time reltime line box polygon tinterval abstime circle tstypes macaddr point date interval inet timestamp timestamptz
     point                    ... ok
     lseg                     ... ok
     line                     ... ok
     box                      ... ok
     path                     ... ok
     polygon                  ... ok
     circle                   ... ok
     date                     ... ok
     time                     ... ok
     timetz                   ... ok
     timestamp                ... ok
     timestamptz              ... ok
     interval                 ... ok
     abstime                  ... ok
     reltime                  ... ok
     tinterval                ... ok
     inet                     ... ok
     macaddr                  ... ok
     tstypes                  ... ok
     comments                 ... ok
parallel group (6 tests):  geometry regex horology type_sanity oidjoins opr_sanity
     geometry                 ... ok
     horology                 ... ok
     regex                    ... ok
     oidjoins                 ... ok
     type_sanity              ... ok
     opr_sanity               ... ok
test insert                   ... ok
test create_function_1        ... ok
test create_type              ... ok
test create_table             ... ok
test create_function_2        ... ok
parallel group (2 tests):  copyselect copy
     copy                     ... ok
     copyselect               ... ok
parallel group (2 tests):  create_operator create_misc
     create_misc              ... ok
     create_operator          ... ok
parallel group (2 tests):  create_view create_index
     create_index             ... ok
     create_view              ... ok
parallel group (11 tests):  create_cast create_aggregate typed_table create_function_3 drop_if_exists vacuum constraints create_table_like triggers inherit updatable_views
     create_aggregate         ... ok
     create_function_3        ... ok
     create_cast              ... ok
     constraints              ... ok
     triggers                 ... ok
     inherit                  ... ok
     create_table_like        ... ok
     typed_table              ... ok
     vacuum                   ... ok
     drop_if_exists           ... ok
     updatable_views          ... ok
test sanity_check             ... ok
test errors                   ... ok
test select                   ... ok
parallel group (20 tests):  select_distinct_on btree_index select_distinct random select_having delete hash_index namespace update case select_implicit select_into prepared_xacts union portals transactions subselect aggregates arrays join
     select_into              ... ok
     select_distinct          ... ok
     select_distinct_on       ... ok
     select_implicit          ... ok
     select_having            ... ok
     subselect                ... ok
     union                    ... ok
     case                     ... ok
     join                     ... ok
     aggregates               ... ok
     transactions             ... ok
     random                   ... ok
     portals                  ... ok
     arrays                   ... ok
     btree_index              ... ok
     hash_index               ... ok
     update                   ... ok
     namespace                ... ok
     prepared_xacts           ... ok
     delete                   ... ok
parallel group (6 tests):  lock replica_identity security_label collate matview privileges
     privileges               ... ok
     security_label           ... ok
     collate                  ... ok
     matview                  ... ok
     lock                     ... ok
     replica_identity         ... ok
parallel group (4 tests):  async psql alter_generic misc
     alter_generic            ... ok
     misc                     ... ok
     psql                     ... ok
     async                    ... ok
test rules                    ... ok
test event_trigger            ... ok
parallel group (19 tests):  combocid portals_p2 advisory_lock tsdicts xmlmap guc equivclass functional_deps dependency json select_views tsearch jsonb window cluster bitmapops foreign_data indirect_toast foreign_key
     select_views             ... ok
     portals_p2               ... ok
     foreign_key              ... ok
     cluster                  ... ok
     dependency               ... ok
     guc                      ... ok
     bitmapops                ... ok
     combocid                 ... ok
     tsearch                  ... ok
     tsdicts                  ... ok
     foreign_data             ... ok
     window                   ... ok
     xmlmap                   ... ok
     functional_deps          ... ok
     advisory_lock            ... ok
     json                     ... ok
     jsonb                    ... ok
     indirect_toast           ... ok
     equivclass               ... ok
parallel group (19 tests):  limit prepare conversion plancache returning temp xml sequence without_oid copy2 rowtypes with polymorphism truncate domain largeobject rangefuncs alter_table plpgsql
     plancache                ... ok
     limit                    ... ok
     plpgsql                  ... ok
     copy2                    ... ok
     temp                     ... ok
     domain                   ... ok
     rangefuncs               ... ok
     prepare                  ... ok
     without_oid              ... ok
     conversion               ... ok
     truncate                 ... ok
     alter_table              ... ok
     sequence                 ... ok
     polymorphism             ... ok
     rowtypes                 ... ok
     returning                ... ok
     largeobject              ... ok
     with                     ... ok
     xml                      ... ok
test stats                    ... ok

=======================
 All 145 tests passed.
=======================

-bash-4.1$

【oracle】 コネクションプーリング

以前、社内勉強会内で「コネクションプーリングについて説明できる人いる?」という部長からの質問があり、自分はまだ説明できるほど理解できていないなと実感したのでメモメモ。
まずは参考リンクを熟読して理解して、人に説明できるレベルにしなければ!
(参考リンクを載せているだけの薄っぺらい記事ですみません!)

参考

http://www.oracle.com/technetwork/jp/articles/chapter5-1-101584-ja.html

【linux】 xbuildで簡単rubyインストール

tagomorisさんが開発したxbuildというツールを使うことで、手軽にrubyをインストールできるようになっています。
その他にも、Go/PHP/Perl/Python/Node.js がサポートされています。
(tagomorisさん、xbuild開発に携わった皆様、ありがとうございます!)

tagomoris.hatenablog.com

github.com

xbuild & rubyインストール

xbuild では 各サポート言語別のインストーラが用意されており、各インストーラ[バージョン][インストール先パス]を渡して実行するだけで、指定の言語を指定先にインストールしてくれます。

インストールが完了したら、最後にPATHを通してあげるだけで利用できるようになります。

$ git clone https://github.com/tagomoris/xbuild.git
$ ./xbuild/ruby-install 2.1.1 /path/to/local/ruby-2.1.1
$ echo 'export PATH=/path/to/local/ruby-2.1.1/bin:$PATH' >> ~/.bashrc

rubyビルド中のログなどは、/tmp以下に出力されますので、それらをtailして進捗を確認できます。

$ ll /tmp/
total 140
-rw-r--r-- 1 root    root      202 May  1 17:23 root-ruby-install-bundler.log
-rw-r--r-- 1 root    root      406 May  1 17:20 root-ruby-install.log
-rw-r--r-- 1 root    root    99626 May  1 17:20 ruby-build.20150501165219.18366.log

【linux】 ユーザーをグループに追加する際は gpasswd -a か usermod -aG を使う方がいい

ユーザーをあるグループに追加する場合はusermod -aGコマンドかgpasswd -aを利用した方がいいという話です。

ユーザーをグループに追加する手段

ユーザーを作成する場合に、そのユーザーをグループに所属させる方法として主に以下の手段が考えられる

  • user作成時にオプションで所属させるグループを指定する
# useradd -g [主グループ名 or gid] -G [サブグループ名 or gid] [ユーザー名]
  • usermodコマンドで所属グループ指定
# usermod -g [主グループ名 or gid] -G [サブグループ名 or gid] [ユーザー名]
  • usermodコマンドに -aG オプションを付けて追加グループ指定
# usermod -aG [グループ名] [ユーザー名]
  • gpasswdコマンドで特定のグループに指定ユーザーを追加する
# gpasswd -a [ユーザー名] [グループ名]

usermodを使用する場合の注意点

usermodコマンドを使用する際、-aオプションをつけない状態で-Gオプションで所属グループを指定した場合、指定したグループにのみ所属する状態に変更されます。そのため、指定によっては元々所属していたグループから外れる恐れがありますので注意が必要です。

マニュアル

# man usermod
       -a, --append
           Add the user to the supplementary group(s). Use only with the -G option.

       -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
           A list of supplementary groups which the user is also a member of. Each
           group is separated from the next by a comma, with no intervening
           whitespace. The groups are subject to the same restrictions as the group
           given with the -g option.

           If the user is currently a member of a group which is not listed, the user
           will be removed from the group. This behaviour can be changed via the -a
           option, which appends the user to the current supplementary group list.

実行ログ

わかり辛いかもですが、redmine というユーザーに対して gpasswd -ausermod -Gusermod -aGでグループ追加操作を行った操作ログです。

[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# id redmine
uid=502(redmine) gid=502(redmine) groups=502(redmine)
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# gpasswd -a redmine wheel
Adding user redmine to group wheel
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# id redmine
uid=502(redmine) gid=502(redmine) groups=502(redmine),10(wheel)
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# usermod -G redmine redmine
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# id redmine
[uid=502(redmine) gid=502(redmine) groups=502(redmine)
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# usermod -aG wheel redmine
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# id redmine
uid=502(redmine) gid=502(redmine) groups=502(redmine),10(wheel)