2012年4月アーカイブ

VMware vSphere CLI経由でリモートのPCからVMware ESXiの構成情報をバックアップする。

■手順1
[スタート] - [すべてのプログラム] - [VMware] - [VMware vSphere CLI] - [Command Prompt] を選択してプロンプトを起動する。

■手順2
binディレクトリに移動する。

C:\Program Files (x86)\VMware\VMware vSphere CLI>cd bin

■手順3
構成情報のバックアップコマンド(Perlのスクリプト)を実行する。

C:\Program Files (x86)\VMware\VMware vSphere CLI\bin>vicfg-cfgbackup.pl --server 192.168.0.10 --portnumber 443 --protocol https --username root --password password -s f:\esxi41cfgbackup_20120424
Saving firmware configuration to f:\esxi41cfgbackup_20120424 ...

vicfg-cfgbackup.plのオプションの意味は以下の通り。

--server 192.168.0.10 ・・・ 接続先ESXiのIPアドレス
--portnumber 443 ・・・ 接続する際のポート番号
--protocol https ・・・ 接続する際のプロトコル
--username root ・・・ 接続する際のユーザ
--password password ・・・ 接続する際のパスワード
-s f:\esxi41cfgbackup_20120424 ・・・ 構成情報を保存するファイル。ESXi上ではなく、vSphere CLIを実行しているPC上のファイルを指定する。

PostfixがLDAPを利用できるようにコンパイルされているかどうかは、以下のコマンドで確認する。
実行結果に『ldap』の文字が表示されれば利用できる。

# postconf -m
btree
cidr
environ
hash
ldap ←これがあるかを確認。あれば利用できる。
nis
pcre
proxy
regexp
static
unix

上記はRed Hat Enterprise Linux 5.5 64bitでの実行結果。

例えばOracleの停止シェルを作成する場合など、シェルスクリプト内でSQL*Plusを実行する場合は以下のように書きます。
oracleユーザで実行します。

--------------------ここから--------------------
#!/bin/bash

export ORACLE_SID=hoge

sqlplus /nolog < connect / as sysdba
shutdown immediate
exit
EOF
--------------------ここまで--------------------

『<

『EOF』という文字列自体にはあまり意味はなく、以下のように『AAA』などに変えても問題ありません。

--------------------ここから--------------------
#!/bin/bash

export ORACLE_SID=hoge

sqlplus /nolog < connect / as sysdba
shutdown immediate
exit
AAA
--------------------ここまで--------------------

ただし、終わりの方の『EOF(AAAの場合も)』は行の先頭から書かれていないといけません(スペースなどでインデントしてはいけない)。

■Oracleバージョン
 11.2.0.3.0

■OSバージョン
 Red Hat Enterprise Linux 5.5

■変更前の初期化パラメータ
 sec_case_sensitive_logon = true
 ※パスワードの大文字・小文字を区別する

■変更後の初期化パラメータ
 sec_case_sensitive_logon = false
 ※パスワードの大文字・小文字を区別しない

■目的
 Oracle 11gのデフォルトではパスワードの大文字・小文字を区別するように設定されている。
 これを区別しないように変更する。

■手順
# su - oracle
$ export ORACLE_SID=hoge
$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 金 4月 6 10:42:01 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL > connect / as sysdba
接続されました。
SQL hoge > show parameter sec_case_sensitive_logon

NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
sec_case_sensitive_logon boolean
TRUE
SQL hoge > alter system set sec_case_sensitive_logon = false scope = both;

システムが変更されました。

SQL hoge > show parameter sec_case_sensitive_logon;

NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
sec_case_sensitive_logon boolean
FALSE
SQL hoge > exit
Oracle Database 11g Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。
$ exit

■Oracleバージョン
 11.2.0.3.0

■OSバージョン
 Red Hat Enterprise Linux 5.5

■既存のREDOログメンバ
 /data/oracle/hoge/red00/redo00_00.log
 /data/oracle/hoge/red00/redo01_00.log
 /data/oracle/hoge/red00/redo02_00.log

■追加するREDOログメンバ
 /data/oracle/hoge/red01/redo00_01.log
 /data/oracle/hoge/red01/redo01_01.log
 /data/oracle/hoge/red01/redo02_01.log
 ※REDOロググループ1~3に1ファイルずつ追加する

■目的
 オンラインREDOログのグループ1~3にメンバを1つずつ追加する。

■手順
1)SQL*PlusでOracleに接続する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
# su - oracle
$ export ORACLE_SID=hoge ←インスタンス名
$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 木 4月 5 16:56:18 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL > connect / as sysdba
接続されました。


2)変更前の状態を確認する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 0 536870912 512 1 YES UNUSED 0 0
2 1 29 536870912 512 1 NO CURRENT 306210 12-04-05 2.8147E+14
3 1 0 536870912 512 1 YES UNUSED 0 0

SQL hoge > select * from v$logfile;

GROUP# STATUS TYPE
---------- --------------------- ---------------------
MEMBER
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IS_RECOVE
---------
1 ONLINE
/data/oracle/hoge/red00/redo00_00.log
NO

2 ONLINE
/data/oracle/hoge/red00/redo01_00.log
NO

3 ONLINE
/data/oracle/hoge/red00/redo02_00.log
NO

SQL hoge > host ls -l /data/oracle/hoge/red01/
合計 1591504
-rw-r----- 1 oracle oinstall 17448960 4月 5 19:58 control_01.ctl
drwx------ 2 root root 16384 10月 19 19:04 lost+found


3)REDOログメンバを追加する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter database add logfile member '/data/oracle/hoge/red01/redo00_01.log' to group 1;

データベースが変更されました。

SQL hoge > alter database add logfile member '/data/oracle/hoge/red01/redo01_01.log' to group 2;

データベースが変更されました。

SQL hoge > alter database add logfile member '/data/oracle/hoge/red01/redo02_01.log' to group 3;

データベースが変更されました。


4)変更後の状態を確認する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 0 536870912 512 2 YES UNUSED 0 0
2 1 29 536870912 512 2 NO CURRENT 306210 12-04-05 2.8147E+14
3 1 0 536870912 512 2 YES UNUSED 0 0

SQL hoge > select * from v$logfile;

GROUP# STATUS TYPE
---------- --------------------- ---------------------
MEMBER
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IS_RECOVE
---------
1 ONLINE
/data/oracle/hoge/red00/redo00_00.log
NO

2 ONLINE
/data/oracle/hoge/red00/redo01_00.log
NO

3 ONLINE
/data/oracle/hoge/red00/redo02_00.log
NO

1 INVALID ONLINE
/data/oracle/hoge/red01/redo00_01.log
NO

2 INVALID ONLINE
/data/oracle/hoge/red01/redo01_01.log
NO

3 INVALID ONLINE
/data/oracle/hoge/red01/redo02_01.log
NO


6行が選択されました。

SQL hoge > host ls -l /data/oracle/hoge/red01/
合計 1591504
-rw-r----- 1 oracle oinstall 17448960 4月 5 19:58 control_01.ctl
drwx------ 2 root root 16384 10月 19 19:04 lost+found
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:57 redo00_01.log
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:57 redo01_01.log
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:57 redo02_01.log

SQL hoge > exit
Oracle Database 11g Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。

■Oracleバージョン
 11.2.0.3.0

■OSバージョン
 Red Hat Enterprise Linux 5.5

■変更前のオンラインREDOログファイルパス
 /data/oracle/hoge/red00/redo01.log ・・・50MB
 /data/oracle/hoge/red00/redo02.log ・・・50MB
 /data/oracle/hoge/red00/redo03.log ・・・50MB

■変更後のオンラインREDOログファイルパス
 /data/oracle/hoge/red00/redo01.log ・・・512MB
 /data/oracle/hoge/red00/redo02.log ・・・512MB
 /data/oracle/hoge/red00/redo03.log ・・・512MB

■目的
 オンラインREDOログファイルのサイズを1メンバ当たり50MBから512MBへ変更する。

■手順
1)SQL*PlusでOracleに接続する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
# su - oracle
$ export ORACLE_SID=hoge ←インスタンス名
$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 木 4月 5 16:56:18 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL > connect / as sysdba
接続されました。


2)変更前のサイズを確認する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14
2 1 26 52428800 512 1 NO INACTIVE 278975 12-04-05 287768 12-04-05
3 1 27 52428800 512 1 NO INACTIVE 287768 12-04-05 295065 12-04-05


3)グループ2のサイズを変更する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter database drop logfile group 2;

データベースが変更されました。

SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14
3 1 27 52428800 512 1 NO INACTIVE 287768 12-04-05 295065 12-04-05

SQL hoge > host rm /data/oracle/hoge/red00/redo02.log

SQL hoge > host ls -l /data/oracle/hoge/red00/
合計 68340
-rw-r----- 1 oracle oinstall 17448960 4月 5 18:42 control_00.ctl
drwx------ 2 root root 16384 10月 19 19:04 lost+found
-rw-r----- 1 oracle oinstall 52429312 4月 5 18:21 redo01.log
-rw-r----- 1 oracle oinstall 52429312 4月 5 18:21 redo03.log

SQL hoge > alter database add logfile group 2 '/data/oracle/hoge/red00/redo02.log' size 512m;

データベースが変更されました。

SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14
2 1 0 536870912 512 1 YES UNUSED 0 0
3 1 27 52428800 512 1 NO INACTIVE 287768 12-04-05 295065 12-04-05


4)グループ3のサイズを変更する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter database drop logfile group 3;

データベースが変更されました。

SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14
2 1 0 536870912 512 1 YES UNUSED 0 0

SQL hoge > host rm /data/oracle/hoge/red00/redo03.log

SQL hoge > host ls -l /data/oracle/hoge/red00/
合計 541888
-rw-r----- 1 oracle oinstall 17448960 4月 5 18:45 control_00.ctl
drwx------ 2 root root 16384 10月 19 19:04 lost+found
-rw-r----- 1 oracle oinstall 536871424 4月 5 18:43 redo01.log
-rw-r----- 1 oracle oinstall 536871424 4月 5 18:43 redo02.log

SQL hoge > alter database add logfile group 3 '/data/oracle/hoge/red00/redo03.log' size 512m;

データベースが変更されました。

SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14
2 1 0 536870912 512 1 YES UNUSED 0 0
3 1 0 536870912 512 1 YES UNUSED 0 0


5)強制ログスイッチする
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter system switch logfile;

システムが変更されました。

SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 28 52428800 512 1 NO ACTIVE 295065 12-04-05 306210 12-04-05
2 1 29 536870912 512 1 NO CURRENT 306210 12-04-05 2.8147E+14
3 1 0 536870912 512 1 YES UNUSED 0 0


6)グループ1のサイズを変更する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter database drop logfile group 1;

データベースが変更されました。

SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
2 1 29 536870912 512 1 NO CURRENT 306210 12-04-05 2.8147E+14
3 1 0 536870912 512 1 YES UNUSED 0 0

SQL hoge > host rm /data/oracle/hoge/red00/redo01.log

SQL hoge > host ls -l /data/oracle/hoge/red00/
合計 1066700
-rw-r----- 1 oracle oinstall 17448960 4月 5 19:07 control_00.ctl
drwx------ 2 root root 16384 10月 19 19:04 lost+found
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:07 redo02.log
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:05 redo03.log

SQL hoge > alter database add logfile group 1 '/data/oracle/hoge/red00/redo01.log' size 512m;

データベースが変更されました。

SQL hoge > select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM
---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ --------
1 1 0 536870912 512 1 YES UNUSED 0 0
2 1 29 536870912 512 1 NO CURRENT 306210 12-04-05 2.8147E+14
3 1 0 536870912 512 1 YES UNUSED 0 0


7)変更後のファイルサイズを確認する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > host ls -l /data/oracle/hoge/red00/
合計 1591508
-rw-r----- 1 oracle oinstall 17448960 4月 5 19:22 control_00.ctl
drwx------ 2 root root 16384 10月 19 19:04 lost+found
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:08 redo01.log
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:22 redo02.log
-rw-r----- 1 oracle oinstall 536871424 4月 5 19:05 redo03.log

SQL hoge > exit

■Oracleバージョン
 11.2.0.3.0

■OSバージョン
 Red Hat Enterprise Linux 5.5

■変更前のオンラインREDOログファイルパス
 /data/oracle/hoge/redo01.log
 /data/oracle/hoge/redo02.log
 /data/oracle/hoge/redo03.log

■変更後のオンラインREDOログファイルパス
 /data/oracle/hoge/red00/redo01.log
 /data/oracle/hoge/red00/redo02.log
 /data/oracle/hoge/red00/redo03.log

■目的
 オンラインREDOログの格納場所を変更する。

■手順
1)SQL*PlusでOracleに接続する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
# su - oracle
$ export ORACLE_SID=hoge ←インスタンス名
$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 木 4月 5 16:56:18 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL > connect / as sysdba
接続されました。


2)Oracleを停止する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL hoge > exit
Oracle Database 11g Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。


3)オンラインREDOログファイルを新しい場所へコピーする
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
$ cd /data/oracle/hoge/
$ cp -piv redo0* /data/oracle/hoge/red00/.


4)OracleをMOUNT状態で起動する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 木 4月 5 17:03:02 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL > connect / as sysdba
接続されました。
SQL hoge > startup mount
ORACLEインスタンスが起動しました。

Total System Global Area 3423965184 bytes
Fixed Size 2231288 bytes
Variable Size 704644104 bytes
Database Buffers 2701131776 bytes
Redo Buffers 15958016 bytes
データベースがマウントされました。


5)オンラインREDOログファイル名を変更する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter database rename file '/data/oracle/hoge/redo01.log',
2 '/data/oracle/hoge/redo02.log', '/data/oracle/hoge/redo03.log'
3 to '/data/oracle/hoge/red00/redo01.log',
4 '/data/oracle/hoge/red00/redo02.log', '/data/oracle/hoge/red00/redo03.log';

データベースが変更されました。


6)データベースをオープンする
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter database open;

データベースが変更されました。

SQL hoge > exit

■Oracleバージョン
 11.2.0.3.0

■OSバージョン
 Red Hat Enterprise Linux 5.5

■変更前の制御ファイルパス
 /data/oracle/hoge/und00/control_00.ctl
 /data/oracle/hoge/und01/control_01.ctl

■変更後の制御ファイルパス
 /data/oracle/hoge/red00/control_00.ctl
 /data/oracle/hoge/red01/control_01.ctl

■目的
 インストール時に制御ファイルのパスを間違ったので、インストール後に変更する。

■手順
1)SQL*PlusでOracleに接続する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
# su - oracle
$ export ORACLE_SID=hoge ←インスタンス名
$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 木 4月 5 16:56:18 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL > connect / as sysdba
接続されました。


2)変更前の設定を確認する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > show parameter control_files

NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
control_files string
/data/oracle/hoge/und00/con
trol_00.ctl, /data/oracle/hoge
/und01/control_01.ctl


3)SPFILEの内容を書き換える
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > alter system set control_files='/data/oracle/hoge/red00/control_00.ctl',
2 '/data/oracle/hoge/red01/control_01.ctl' scope=spfile;

システムが変更されました。


4)Oracleを停止する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL hoge > exit
Oracle Database 11g Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。


5)制御ファイルを新しい場所へ移動する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
$ cd /data/oracle/hoge/und00/
$ mv control_00.ctl /data/oracle/hoge/red00/.
$ cd /data/oracle/hoge/und01
$ mv control_01.ctl /data/oracle/hoge/red01/.


6)Oracleを起動する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 木 4月 5 17:03:02 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL > connect / as sysdba
接続されました。
SQL hoge > startup
ORACLEインスタンスが起動しました。

Total System Global Area 3423965184 bytes
Fixed Size 2231288 bytes
Variable Size 704644104 bytes
Database Buffers 2701131776 bytes
Redo Buffers 15958016 bytes
データベースがマウントされました。
データベースがオープンされました。


7)変更後の設定を確認する
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SQL hoge > show parameter control_files

NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
control_files string
/data/oracle/hoge/red00/con
trol_00.ctl, /data/oracle/hoge
/red01/control_01.ctl
SQL hoge > exit
Oracle Database 11g Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。

まず以下のとおり、Oracleから必要なデータを抽出する。

# su - oracle
$ export ORACLE_SID=インスタンス名
$ sqlplus /nolog

SQL> connect / as sysdba
SQL> set pagesize 10000
SQL> set linesize 10000
SQL> select NUM||'!'||NAME||'!'||TYPE||'!'||VALUE||'!'||DISPLAY_VALUE||'!'||ISDEFAULT||'!'||ISSES_MODIFIABLE||'!'||ISSYS_MODIFIABLE||'!'||ISINSTANCE_MODIFIABLE||'!'||ISMODIFIED||'!'||ISADJUSTED||'!'||ISDEPRECATED||'!'||ISBASIC||'!'||DESCRIPTION||'!'||UPDATE_COMMENT||'!'||HASH from v$system_parameter;
SQL> exit

この出力結果をコピーし、Windowsのメモ帳などに貼り付ける。
メモ帳の置換機能で、『||'』と『'||』を全て削除する。
置換後にテキストとして保存する。
このテキストファイルをEXCELファイルで開く。
EXCELの[データ]メニューから[区切り位置]を選択する。
区切り文字として『!』を指定する。

Linuxでhtpasswdコマンドを利用して、ApacheのBASIC認証用ユーザを作成する場合、パスワードはcrypt()関数を利用してハッシュされる。

crypt()関数の仕様として8文字までしかハッシュできないため、パスワードに9文字以上入力しても8文字までしか使用されない。それ以上は切り捨てられる。

そのため、パスワードに『abcdefghij』を設定しても、最後の『ij』が切り捨てられて、『abcdefgh』だけがハッシュされて.htpasswdファイルに書き込まれる。

実際にブラウザでアクセスして、認証する際にも、始めの8文字が『abcdefgh』であれば、それ以降の文字はハッシュされるときに切り捨てられるので、マッチしていてもしていなくても認証OKとなる。
つまり、上記ケースでは以下のいずれでも認証OKとなる。
・abcdefgh
・abcdefghij
・abcdefghaaaaa

上記仕様から、標準では9文字以上のパスワードが利用できない。しかし、パスワードの暗号化にmd5を利用すると9文字以上のパスワードが利用できる。

md5で暗号化するには、以下のように『-m』オプションを付与すればよい。

【実行例】
# htpasswd -m /etc/httpd/conf/.htpasswd user3
New password:
Re-type new password:
Adding password for user user3

md5で暗号化した場合は、パスワードがキッチリ一致しなければ認証OKとならない。
md5の場合の文字数制限は確認中。。。
ただ、相当長くても大丈夫そう。

【.htpasswdの内容】
user2:YbFSlpa9ix7so ←crypt()で暗号化したもの
user3:$apr1$sGgFf...$YtExFt5siF7hd2ARlaSst/ ←md5で暗号化したもの
※混在していても正常に動いた。

このアーカイブについて

このページには、2012年4月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2012年3月です。

次のアーカイブは2012年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。