ORA-12154: TNS:could not resolve the connect identifier specified が出る。

状況

1つのOSに、データベースとクライアントを入れてODBCのとき。

slqplusは問題なく、ODBCで ORA-12154 になる。

解決

%ORACLE_HOME% のディレクトリを確認

・データベース用 dbhome_1 と クライアント用 client_1 に分かれてた。

…/dbhome_1/NETWORK/ADMIN の listener.ora と sqlnet.ora をコピー
…/client_1/NETWORK/ADMIN に貼り付け

実行して接続できるか確認。

※slqplusは、dbhome_1 を見に行って、ODBC は client_1を見に行って、でもsqlnet.oraが無くて ORA-12154 になってた模様。

VMwareEsxi ゲストOSのHDDを増やす(windows server2008)

windows server 2008 の C ドライブを増やします。

  1. ゲストOSを停止する
  2. 仮想マシン設定の編集からHDDを好きなサイズに増やす
  3. ゲストOSを起動する
  4. 管理ツール => コンピュータの管理 => ディスクの管理
  5. Cドライブの隣に空き領域が出来ていることを確認
  6. Cドライブを右クリック
  7. ボリュームの拡張
  8. そのまま進んで完了
  9. 再起動

参考サイト

VMware Esxi ゲストのHDDを増やす(CentOS)

VMwareEsxiのゲストOS(CentOS)のハードディスクを増やした記録です。今回は、20GBから30GBにしました。

下記作業は、PHP5.1.6サーバで行いました。

まずはターゲットとなるゲストOSにログインしてrootになって停止します。

# shutdown -h now

vSphere Client を起動し、ターゲットの「仮想マシン設定の編集」
今回は、20GBだったものを30GBにしたかったので、下図のように 30 に変更してOK。

vmware

ゲストOSを起動してログインします。
ここからはゲストOSでの作業。

まずは今の状態を確認

$ df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
 16G 13G 1.8G 88% /
tmpfs 246M 0 246M 0% /dev/shm
/dev/sda1 485M 75M 385M 17% /boot

vSphere Clientの設定変更だけでは変わらず今まで通りです。

rootになります。

$ su

fdiskで確認してみます。

# fdisk -l

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM

ディスク /dev/mapper/vg_home-lv_root: 16.7 GB, 16718495744 バイト
ヘッド 255, セクタ 63, シリンダ 2032
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

ディスク /dev/mapper/vg_home-lv_swap: 4227 MB, 4227858432 バイト
ヘッド 255, セクタ 63, シリンダ 514
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

32.2 GB という文字が見えます。

新しく追加した分をfdiskで作成します。

# fdisk /dev/sda

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
強く推奨します。 and change display units to
sectors (command 'u').

コマンド (m でヘルプ): p

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM

コマンド (m でヘルプ): n
コマンドアクション
e   拡張
p   基本パーティション (1-4)
p
パーティション番号 (1-4): 3
最初 シリンダ (2611-3916, 初期値 2611):
初期値 2611 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (2611-3916, 初期値 3916):
初期値 3916 を使います

コマンド (m でヘルプ): p

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM
/dev/sda3            2611        3916    10483750   83  Linux

コマンド (m でヘルプ): t
パーティション番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM
/dev/sda3            2611        3916    10483750   8e  Linux LVM

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。

fdiskを抜け出るので、再起動します。

# reboot

再起動したらログインして root になっておきます。

$ su

LVM物理ボリュームを作成

# pvcreate /dev/sda3
Writing physical volume data to disk "/dev/sda3"
 Physical volume "/dev/sda3" successfully created

ここから環境によって少し変わるのでコピペな方は注意です。

VG(ボリュームグループ)名の確認

# vgdisplay -v
    Finding all volume groups
    Finding volume group "vg_home"
  --- Volume group ---
  VG Name               vg_home
  System ID
  Format                lvm2
  Metadata Areas        1
~ 以下略 ~

Finding volume group “vg_home”
VGは、vg_homeなので、以下の説明には vg_home を使います。
※異なる場合は読み替えてください。

ボリュームグループに物理ボリュームを割り当てます。

# vgextend vg_home /dev/sda3
  Volume group "vg_home" successfully extended

増加させるサイズを確認します。

# vgdisplay -v
    Finding all volume groups
    Finding volume group "vg_home"
  --- Volume group ---
  VG Name               vg_home
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.50 GiB
  PE Size               4.00 MiB
  Total PE              7553
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       2559 / 10.00 GiB
  VG UUID               EcLBR0-GHfM-acS6-xmUF-uE7N-N6kK-K6WP3O
~ 以下略 ~

Free PE / Size 2559 / 10.00 GiB
ここの数字に注目します。今回は、10GB増やすように進めているので「10.00 GiB」の文字が見えます。
その隣の 2559 の数字を使います。

論理ボリュームを増加させます
上の手順で確認した、 2559 を指定します。

# lvextend -l +2559 /dev/vg_home/lv_root
  Extending logical volume lv_root to 25.57 GiB
  Logical volume lv_root successfully resized

変わったことを確認します。

# vgdisplay -v
    Finding all volume groups
    Finding volume group "vg_home"
  --- Volume group ---
  VG Name               vg_home
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.50 GiB
  PE Size               4.00 MiB
  Total PE              7553
  Alloc PE / Size       7553 / 29.50 GiB
  Free  PE / Size       0 / 0
  VG UUID               EcLBR0-GHfM-acS6-xmUF-uE7N-N6kK-K6WP3O
~ 以下略 ~

Alloc PE / Size 7553 / 29.50 GiB
Free PE / Size 0 / 0
Freeの数字がそのまま Alloc に足されたことが分かります。

ボリューム名の確認

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
                       16G   13G  1.8G  88% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   75M  385M  17% /boot

/dev/mapper/vg_home-lv_root
ここに注目します。
今回は、 vg_home なので vg_home の文字が確認できます。
次の手順ではその後ろの lv_root を使います。

ファイルシステムサイズの再認識します。
vg_home と lv_root は、手元の環境に合わせて書き換えてください。

# resize2fs /dev/vg_home/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_home/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg_home/lv_root to 6702080 (4k) blocks.
The filesystem on /dev/vg_home/lv_root is now 6702080 blocks long.

容量が増えたか確認してみます。

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
                       26G   13G   12G  54% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   75M  385M  17% /boot

増えてます。

比較として、本作業を行う前の df は下記になります。

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
                       16G   13G  1.8G  88% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   75M  385M  17% /boot

参考リンク

PHPにZipArchiveを入れる

PHPExcelを使おうとしてZipArchiveのエラーがでたときの対処です。

事前条件など

インストール


# yum install php-devel
# yum install zlib-devel
# pecl install zip
# vi /etc/php.ini
extension=zip.so
# /etc/init.d/httpd restart

上で問題なければOK

# pecl install zip
pecl/zip requires PEAR Installer (version >= 1.7.0), installed version is 1.4.9
No valid packages found
install failed

このようなエラーがでたときは、下記でバージョンを指定する。

# pecl install zip-1.8.10.tgz

参考

バーチャルホストを設定する

PHP5.4サーバにて作業

バーチャルホストを設定して、複数ドメインを同居できるようにします。

バーチャルドメインの有効化

httpdの設定ファイルを開きます。


# vi /etc/httpd/conf/httpd.conf

おそらくファイルの最後のほうにある下記を先頭の # を外し有効化して保存。


NameVirtualHost *:80

ドメインごとの設定

/etc/httpd/conf.d/ にドメインごとにファイルを作っていきます。
※/etc/httpd/conf/httpd.conf に書いたり、1つのファイルに全部書いたり方法はいろいろありますが、下記の方法に落ち着きました。

httpdではバーチャルホストに設定されていないドメインでアクセスがあった場合、一番最初に読み込まれた VirtualHost の内容が利用されます。
/etc/httpd/conf.d/ の中はファイル名の昇順で読まれるというルールがあります。

そこで下記のように、数字の0で始まるファイル名にすることでこのファイルの内容がデフォルトで使われるようにします。


# vi /etc/httpd/conf.d/00-vh-default.conf


<VirtualHost *:80>
DocumentRoot "/hoge/www/default/httpdocs"
</VirtualHost>

※私はこちらを無効なアクセスとして、エラー表示を行うHTMLだけを設置しています。
※ファイル名「00-vh-default.conf」は好みです。

例) aulta.net を設定


# vi /etc/httpd/conf.d/vh-net.aulta.conf


###############################
# aulta.net
###############################
<VirtualHost *:80>
 DocumentRoot "/hoge/www/aulta.net/httpdocs"
 ServerName aulta.net
</VirtualHost>

ファイル名 vh-net.aulta.conf は、
VirtualHostの設定なので、vh-
aulta.net をドット区切りを逆にして、 net ドット aulta
拡張子の .conf
としています。
ファイル名は好みなのでこのようなルールがあるわけじゃないですが、たくさんのドメイン・サブドメインを登録していくとこの形が ls -la /etc/httpd/conf.d/ したときに見やすいかなと思っています。

DocumentRoot “/hoge/www/aulta.net/httpdocs”
設置場所は好みです。
web用ディレクトリ(上記では/hoge/www)の下にドメイン名でディレクトリを作り httpdocs をドキュメントルートにしています。

例) server.aulta.net を設定

先述のやり方と同じで次のようになります。


# vi /etc/httpd/conf.d/vh-net.aulta.server.conf


###############################
# server.aulta.net
###############################
<VirtualHost *:80>
DocumentRoot "/hoge/www/server.aulta.net/httpdocs"
ServerName server.aulta.net
</VirtualHost>

他のドメイン・サブドメインも同様のルールで行います。
ポイントは「全体で同じ作成・記述ルール」を決めることで、本ページの内容をアレンジしたら良いと思います。

APCのインストール

PHP5.4サーバにて作業

インストール

# yum search apc
# yum --enablerepo=remi,epel install php-pecl-apc

設定

# vi /etc/php.d/apc.ini
apc.shm_size=128M

再起動

# /etc/init.d/httpd restart

管理モニター

# cd /hoge/apc //コピー先に移動
# find / -name apc.php
/usr/share/doc/php-pecl-apc-3.1.14/apc.php

# cp /usr/share/doc/php-pecl-apc-3.1.14/apc.php index.php
# chown hoge:hoge index.php

ブラウザから/apc.index.html にアクセスして確認。

.htaccessを扱えるように設定する

.htaccessファイルを使えるように、有効化します。

$ su

# vi /etc/httpd/conf/httpd.conf

下記の記述の場所まで移動します。

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

上記の記述はそのまま残しておき、続けて、下記を追記します。

<Directory "/home/ユーザー/vhosts">
    Options Includes ExecCGI  FollowSymLinks
    AllowOverride All
</Directory>

※ “/home/ユーザー/vhosts” の部分は、有効にさせたいパスに書き換えてください。
指定したディレクトリ以下で有効になります。

※ バーチャルホストを考えている場合は、バーチャルホスト側で記述したほうが良いですが、状況に応じて対処してください。

※ htaccessの有効化に必要なのは、FollowSymLinks と、AllowOverride All ですが、ついでなので上記のようにしてます。

※ httpd.conf を書き換え、設定を反映させるにはhttpdの再起動が必要です。

# /etc/init.d/httpd restart

MySqlに root のパスワードを設定

MySqlをインストールした時点では、 rootユーザーのパスワードが設定されていません。

※ ここでいう rootユーザーとは、 MySqlのユーザーであり、Linuxのユーザーとは異なります。

rootパスワードの変更

MySqlにrootでログインします。

# mysql -u root

例として、 hoge というパスワードを設定します。
下記の hoge の部分を、設定したいパスワードに書き換えてください。

※ MySQLでは、コマンドの最後に ; (セミコロン)が必要です。

mysql > SET PASSWORD FOR root@localhost=PASSWORD('hoge');

MySqlをログアウトします。

mysql > quit;

確認しましょう。

パスワードを指定しないで、rootユーザーでログインします。

# mysql -u root
Access denied for user 'root'@'localhost' (using password: NO)

上記のようになれば、OKです。

パスワードを指定して、ログインしましょう。

# mysql -u root -p

Enter password:
と、表示されたら、設定したパスワードを入力して、[enter]します。

mysql >

このように表示されたらログインできています。