読者です 読者をやめる 読者になる 読者になる

愛しのSCOOTさんのEMPテーブルに100万行挿入しよう!!の巻

※ここで記載した内容は独断と偏見に基づく個人の見解であり、実行しているコマンドや手順も必ずしも正しい手順とは限りません。その為、あくまで参考程度にご覧頂ければと思います。

 

SCOTT.EMPテーブルにランダム関数とループ使って100万行挿入する手順。


★既存データの切り捨て。この手順は必須
SQL> truncate table scott.emp;

Table truncated.


★EMPNOの列定義がデフォのNUMBER(4)のままだと9999行までしかぶち込めないので列定義変更。
SQL> ALTER TABLE SCOTT.EMP MODIFY (EMPNO NUMBER(10));

Table altered.


★以下で100万行ぶち込む。
SQL> begin
2 for i in 1..1000000 loop
3 insert into scott.emp (empno,ename,job,mgr,hiredate,sal,comm,deptno)
4 values (i,DBMS_RANDOM.STRING('p',8),null,null,sysdate,null,null,null);
5 end loop;
6 commit;
7 end;
8 /

PL/SQL procedure successfully completed.

 

★件数確認。
SQL> select count(*) from scott.emp;

COUNT(*)
----------
1000000

12cでOracle Restart環境(ASM)を作っちゃおうぜ!!の巻

※ここで記載した内容は独断と偏見に基づく個人の見解であり、実行しているコマンドや手順も必ずしも正しい手順ではありません。その為、あくまで参考程度にご覧頂ければと思います。


How to install Oracle Database 12.1.0.1 Restart(ASM) on OEL5.8

 

■概要
Oracle Database 12.1.0.1 Restart(ASM)環境の構築時の手順を纏めましたので記録として残します。正式な手順ではないので、本番環境などの構築の参考にするのはご遠慮ください。

 

手順を実行するのに要する時間として、私は慣れているので1時間位で構築出来ましたが、慣れていない場合はそれ以上かかるかもしれません。


■構成

OS環境:Oracle Enterprise Linux 5.8
Grid:Grid Infrastructure 12.1.0.1
DB:Oracle Database 12.1.0.1


■環境概要

[Grid Infrastructure側構成概要]
ORACLE_BASE: /opt/app/oracle
ORACLE_HOME(gridのホーム):$ORACLE_BASE/product/12.1.0.1/grid
OSユーザ:grid
ORACLE_SID:+ASM

 

[DB 側構成概要]
ORACLLE_BASE:/opt/app/oracle
ORACLE_HOME(DBのホーム):$ORACLE_BASE/product/12.1.0.1/dbhome_1
OSユーザ:oracle
ORACLE_SID=orcl

 

[ASM構成概要]
ディスクグループ名:+DATA
ディスクグループの冗長:External(冗長無し)


■環境構築手順

(1)必須パッケージの確認
必要なパッケージがインストールされているか確認します。私の環境ではサーバーのインストール時に必要なパッケージが揃っていましたが不足している場合は任意の方法でインストールください。

[root@localhost grid]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \
> compat-libstdc++-33 \
> gcc \
> gcc-c++ \
> glibc \
> glibc-common \
> glibc-devel \
> glibc-headers \
> ksh \
> libaio \
> libaio-devel \
> libgcc \
> libstdc++ \
> libstdc++-devel \
> libXext \
> libXtst \
> libX11 \
> libXau \
> libXi \
> make \
> sysstat \
> unixODBC \
> unixODBC-devel
binutils-2.17.50.0.6-20.el5(x86_64)
compat-libstdc++-33-3.2.3-61(x86_64)
compat-libstdc++-33-3.2.3-61(i386)
gcc-4.1.2-52.el5(x86_64)
gcc-c++-4.1.2-52.el5(x86_64)
glibc-2.5-81(x86_64)
glibc-2.5-81(i686)
glibc-common-2.5-81(x86_64)
glibc-devel-2.5-81(x86_64)
glibc-devel-2.5-81(i386)
glibc-headers-2.5-81(x86_64)
ksh-20100621-5.el5(x86_64)
libaio-0.3.106-5(x86_64)
libaio-0.3.106-5(i386)
libaio-devel-0.3.106-5(x86_64)
libaio-devel-0.3.106-5(i386)
libgcc-4.1.2-52.el5(x86_64)
libgcc-4.1.2-52.el5(i386)
libstdc++-4.1.2-52.el5(x86_64)
libstdc++-4.1.2-52.el5(i386)
libstdc++-devel-4.1.2-52.el5(x86_64)
libXext-1.0.1-2.1(x86_64)
libXext-1.0.1-2.1(i386)
libXtst-1.0.1-3.1(x86_64)
libXtst-1.0.1-3.1(i386)
libX11-1.0.3-11.el5_7.1(x86_64)
libX11-1.0.3-11.el5_7.1(i386)
libXau-1.0.1-3.1(x86_64)
libXau-1.0.1-3.1(i386)
libXi-1.0.1-4.el5_4(x86_64)
libXi-1.0.1-4.el5_4(i386)
make-3.81-3.el5(x86_64)
sysstat-7.0.2-11.el5(x86_64)
unixODBC-2.2.11-10.el5(x86_64)
unixODBC-devel-2.2.11-10.el5(x86_64)
unixODBC-devel-2.2.11-10.el5(i386)


(2)カーネルパラメータの編集

[root@localhost grid]# vi /etc/sysctl.conf
kernel.core_uses_pid = 1
kernel.msgmax = 65536
kernel.msgmnb = 65535
kernel.msgmni = 2878
kernel.panic = 10
kernel.sem = 256 32000 100 142
kernel.shmall = 4294967296
kernel.shmmax = 68719476736
kernel.shmmni = 4096
kernel.sysrq = 0
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_forward = 0
net.ipv4.tcp_syncookies = 1
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576

 

(3)カーネルパラメータ変更の反映
[root@localhost grid]# /sbin/sysctl -p


(4)limits.confの編集
[root@localhost grid]# vi /etc/security/limits.conf

* hard nproc 16384
* soft nofile 2048
* hard nofile 65536


(5)ディスク容量の確認
[grid@localhost ~]$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda1 9.5G 3.8G 5.3G 42% /
/dev/sda2 29G 6.6G 21G 25% /opt
tmpfs 1.5G 0 1.5G 0% /dev/shm
F 233G 149G 84G 64% /media/sf_F
/dev/sr0 56M 56M 0 100% /media/VBOXADDITIONS_4.3.16_95972


(6)メモリ容量の確認
12cでGrid Infrastructureをインストールする際の最低メモリ要件は4Gとなっています。私の環境は約3GBとなっていますが、要件は満たす様にしてください。

[grid@localhost ~]$ free
total used free shared buffers cached
Mem: 3048752 1749096 1299656 0 32716 1195052
-/+ buffers/cache: 521328 2527424
Swap: 4096564 0 4096564


(7)SWAPの確認
SWAP領域はメモリと同等ほどで問題ありません。

[grid@localhost oracle]$ /sbin/swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 4096564 0 -1


(8)必要なグループとOSユーザを作成します。

[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd oper
[root@localhost ~]# groupadd asmoper 
[root@localhost ~]# groupadd asmadmin
[root@localhost ~]# groupadd asmdba
[root@localhost ~]# groupadd dba
[root@localhost home]# useradd -g oinstall -G dba,asmdba,oper oracle
[root@localhost home]# useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid


(9)作成したoracleユーザとgridユーザのパスワードを設定します。

[root@localhost oracle]# passwd grid
Changing password for user grid.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

[root@localhost oracle]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.


(10)必要なディレクトリを作成後、権限やパーミッションの変更を行います。
[root@localhost home]# mkdir -p /opt/app/oracle/product/12.1.0/dbhome_1
[root@localhost home]# mkdir -p /opt/app/grid/product/12.1.0/grid
[root@localhost home]# chown -R oracle:oinstall /opt/app/
[root@localhost home]# chown -R grid:oinstall /opt/app/grid
[root@localhost home]# chmod -R 775 /u01/


(11)gridユーザのプロファイルに必要な環境変数の設定を行います。

[grid@localhost ~]$ vi .bash_profile
export PATH
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_SID=+ASM; export ORACLE_SID
ORACLE_BASE=/opt/app/grid; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/grid; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH; export PATH


(12)oracleユーザも同様にプロファイルの設定を行っていきます。

[oracle@localhost ~]$ vi .bash_profile
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/opt/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH


(13)追加したディスクの確認
任意の方法で新規のディスクを追加後、fdiskコマンドでディスクが認識されている事を確認します。

[root@localhost ~]# fdisk -l

Disk /dev/sda: 47.8 GB, 47878307840 bytes
255 heads, 63 sectors/track, 5820 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

バイス Boot Start End Blocks Id System
/dev/sda1 * 1 1275 10241406 83 Linux
/dev/sda2 1276 5101 30732345 83 Linux
/dev/sda3 5102 5611 4096575 82 Linux swap / Solaris

Disk /dev/sdb: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/sdb は正常な領域テーブルを含んでいません


(14)追加したディスクのフォーマット
fdiskコマンドを使用し、ディスクをフォーマットします。

[root@localhost oracle]# /sbin/fdisk /dev/sdb
バイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 1566 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-1566, default 1): 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-1566, default 1566):
Using default value 1566

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。


(15)gridユーザがアクセスできるようにブロックデバイスの権限を変更します

[root@hoge ~]# chown grid:oinstall /dev/sdb1
[root@hoge ~]# chmod u=rw /dev/sdb1


(16)上記の設定をOSの再起動後にも有効化するために以下ファイルを作成し、必要なエントリを追加します。

[root@hoge ~]# vi /etc/udev/rules.d/51-oracle.rules
#ASM
KERNEL=="sdb1",OWNER="grid",GROUP="oinstall",MODE="0660"


(17)作成した「51-oracle.rules」の内容を以下コマンドでパーティションに反映します。

[root@hoge ~]# udevcontrol reload_rules
[root@hoge ~]# start_udev
udev を起動中: [ OK ]


(18)GridInfrastructureのメディアをgridユーザで解凍後、インストーラを進めていきます。

※特に悩む項目もないと思うので、GUI上の操作については省略します。
[grid@localhost grid]$ unzip linuxamd64_12c_grid_1of2.zip
[grid@localhost grid]$ unzip linuxamd64_12c_grid_2of2.zip
[grid@localhost grid]$ ./runInstaller
Oracle Universal Installerを起動中です...

一時領域の確認中: 120MBを超えている必要があります. 実際 5822MB 問題なし
スワップ領域の確認中: 150MBを超えている必要があります. 実際 4000MB 問題なし
モニターの確認中: 少なくとも256色表示するよう設定されている必要があります. 実際 16777216 問題なし
Oracle Universal Installerの起動を準備中 /tmp/OraInstall2015-02-27_11-57-22PM. お待ちくださ


(19)DBのメディアをoracleユーザで解凍後、インストーラを進めていきます。

※特に悩む項目もないと思うので、GUI上の操作については省略します。
[oracle@localhost oracle]$ unzip linuxamd64_12c_database_1of2.zip
[oracle@localhost oracle]$ unzip linuxamd64_12c_database_2of2.zip
[oracle@localhost database]$ ./runInstaller
Oracle Universal Installerを起動中です...

一時領域の確認中: 500MBを超えている必要があります. 実際 5759MB 問題なし
スワップ領域の確認中: 150MBを超えている必要があります. 実際 4000MB 問題なし
モニターの確認中: 少なくとも256色表示するよう設定されている必要があります. 実際 16777216 問題なし
Oracle Universal Installerの起動を準備中 /tmp/OraInstall2015-02-28_12-40-32AM. お待ちください...


■環境構築後のおまけ

環境が構築できたので、少し遊んでみましょう。


(1)OSターミナルからASMCMDユーティリティを起動させます。その後、ASMインスタンスのディスク・グループをリストしてみます。

[grid@hoge ~]$ asmcmd

ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 12284 9771 0 9771 0 N DATA/

(2)SQL*PLUSから作成されたデータファイルを確認します。

SQL> select name from V$datafile;

NAME
--------------------------------------------------------------------------------
+DATA/ORCL/DATAFILE/system.258.873197537
+DATA/ORCL/DATAFILE/example.270.873197687
+DATA/ORCL/DATAFILE/sysaux.257.873197453
+DATA/ORCL/DATAFILE/undotbs1.260.873197635
+DATA/ORCL/DATAFILE/users.259.873197633

 

(3)srvctlコマンドでDBの構成を確認します。

[grid@hoge dbs]$ srvctl config database -d ORCL
一意のデータベース名: orcl
データベース名: orcl
Oracleホーム: /opt/app/oracle/product/12.1.0/dbhome_1
Oracleユーザー: oracle
spfile: +DATA/orcl/spfileORCL.ora
パスワード・ファイル:
ドメイン:
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
データベース・インスタンス: ORCL
ディスク・グループ: DATA
サービス:


(4)srvctlコマンドでasmの構成を確認してみましょう。
[grid@hoge ~]$ srvctl config asm
ASMホーム: /opt/app/grid/product/12.1.0/grid
パスワード・ファイル: +DATA/orapwasm
ASMリスナー: LISTENER
spfile: +DATA/ASM/ASMPARAMETERFILE/registry.253.873196493
ASMディスク・グループ検出文字列:


(5)srvctlコマンドでリスナーの構成を確認してみましょう
[grid@hoge ~]$ srvctl config listener
名前: LISTENER
ホーム: /opt/app/grid/product/12.1.0/grid
エンド・ポイント: TCP:1521


(6)同じくonsプロセス構成を確認してみましょう。

[grid@hoge dbs]$ srvctl config ons
ONSが存在します: ローカル・ポート6100、リモート・ポート6200、EMポート2016


(7)psコマンドでGridInfrastrucure固有のプロセスを確認してみましょう。

[grid@hoge ~]$ ps -ef |grep /grid/bin
grid 2837 1 1 11:38 ? 00:00:06 /opt/app/grid/product/12.1.0/grid/bin/ohasd.bin reboot
grid 3561 1 1 11:41 ? 00:00:02 /opt/app/grid/product/12.1.0/grid/bin/oraagent.bin
grid 3576 1 0 11:41 ? 00:00:00 /opt/app/grid/product/12.1.0/grid/bin/evmd.bin
grid 3582 1 0 11:41 ? 00:00:00 /opt/app/grid/product/12.1.0/grid/bin/tnslsnr LISTENER -no_crs_notify -inherit
grid 3597 3576 0 11:41 ? 00:00:00 /opt/app/grid/product/12.1.0/grid/bin/evmlogger.bin -o /opt/app/grid/product/12.1.0/grid/log/[HOSTNAME]/evmd/evmlogger.info -l /opt/app/grid/product/12.1.0/grid/log/[HOSTNAME]/evmd/evmlogger.log
grid 3605 1 0 11:41 ? 00:00:00 /opt/app/grid/product/12.1.0/grid/bin/cssdagent
grid 3629 1 0 11:41 ? 00:00:00 /opt/app/grid/product/12.1.0/grid/bin/ocssd.bin
grid 3945 3423 0 11:44 pts/1 00:00:00 grep /grid/bin


(8)PSコマンドでASMインスタンス側のプロセスの起動状態を確認してみます。

[grid@hoge ~]$ ps -ef |grep asm_
grid 3665 1 0 11:41 ? 00:00:00 asm_pmon_+ASM
grid 3667 1 0 11:41 ? 00:00:00 asm_psp0_+ASM
grid 3670 1 4 11:41 ? 00:00:09 asm_vktm_+ASM
grid 3674 1 0 11:41 ? 00:00:00 asm_gen0_+ASM
grid 3676 1 0 11:41 ? 00:00:00 asm_mman_+ASM
grid 3680 1 0 11:41 ? 00:00:00 asm_diag_+ASM
grid 3682 1 0 11:41 ? 00:00:00 asm_dia0_+ASM
grid 3684 1 0 11:41 ? 00:00:00 asm_dbw0_+ASM
grid 3686 1 0 11:41 ? 00:00:00 asm_lgwr_+ASM
grid 3688 1 0 11:41 ? 00:00:00 asm_ckpt_+ASM
grid 3690 1 0 11:41 ? 00:00:00 asm_smon_+ASM
grid 3692 1 0 11:41 ? 00:00:00 asm_lreg_+ASM
grid 3694 1 0 11:41 ? 00:00:00 asm_rbal_+ASM
grid 3696 1 0 11:41 ? 00:00:00 asm_gmon_+ASM
grid 3698 1 0 11:41 ? 00:00:00 asm_mmon_+ASM
grid 3700 1 0 11:41 ? 00:00:00 asm_mmnl_+ASM
grid 3731 1 0 11:41 ? 00:00:00 asm_asmb_+ASM
grid 3735 1 0 11:41 ? 00:00:00 asm_o000_+ASM

 

(9)lsnrctl statusコマンドでリスナーの構成状況を確認してみましょう。

[oracle@hoge ~]$ lsnrctl status

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 01-MAR-2015 13:34:55

Copyright (c) 1991, 2013, Oracle. All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date 01-MAR-2015 11:57:54
Uptime 0 days 1 hr. 37 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/grid/product/12.1.0/grid/network/admin/listener.ora
Listener Log File /opt/app/grid/diag/tnslsnr/hoge/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hoge)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=hoge)(PORT=5500))(Security=(my_wallet_directory=/opt/app/oracle/product/12.1.0/dbhome_1/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
The command completed successfully


(10)lsnrctl serviceコマンドでサービスの登録状態を確認してみましょう。

[oracle@hoge ~]$ lsnrctl service

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 01-MAR-2015 13:34:43

Copyright (c) 1991, 2013, Oracle. All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "ORCLXDB" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: hoge, pid: 6958>
(ADDRESS=(PROTOCOL=tcp)(HOST=hoge)(PORT=37115))
Service "orcl" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully


以上です(^^)/~

Enterprise Manager Express 12cで遊んでみようぜ!!の巻

※ここで記載した内容は独断と偏見に基づく個人の見解であり、実行しているコマンドや手順も必ずしも正しい手順とは限りません。その為、あくまで参考程度にご覧頂ければと思います。


■検証環境
OS:Oracle Enterprise Linux 5.8(54-bit)
DB:Oracle Database Enterprise Edition 12.1.0.1

 

■検証内容

(1)12cのDB構成時にEMを構成するオプションを選択した場合は、デフォルトで以下のURLからEM Expressにアクセス出来ます。

https://<hostname>:5500/em


(2)以下SQLで、EM Express(HTTPS)のポート番号を確認できます。

SQL> select dbms_xdb_config.gethttpsport() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
5500


(3)以下のコマンドで該当ポート5500がリスナーに認識されているか確認できます。
[grid@hoge admin]$ lsnrctl status | grep -i 5500
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=hoge)(PORT=5500))(Security=(my_wallet_directory=/opt/app/oracle/product/12.1.0/dbhome_1/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))


(4)以下でデフォルト以外のHTTPSポートに変更可能です。

SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5501);

PL/SQL procedure successfully completed.

 

(5)ポートの変更後、リスナーの認識しているポートを確認すると、変更直後は変更前の5500と変更後の5501の両方の情報を保持している様でした

[oracle@hoge ~]$ lsnrctl status | grep -i 5500
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=hoge)(PORT=5500))(Security=(my_wallet_directory=/opt/app/oracle/product/12.1.0/dbhome_1/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))

 

[oracle@hoge ~]$ lsnrctl status | grep -i 5501
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=hoge)(PORT=5501))(Security=(my_wallet_directory=/opt/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))

(6)1分ほど放置していると変更後の5501の情報のみ認識するようになりました。
[oracle@hoge ~]$ lsnrctl status | grep -i 5500

[oracle@hoge ~]$ lsnrctl status | grep -i 5501
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=hoge)(PORT=5501))(Security=(my_wallet_directory=/opt/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))


(7)ちなみに以下の例の様にHTTPに変更することも可能。
SQL> exec DBMS_XDB_CONFIG.SETHTTPPORT(5503);

PL/SQL procedure successfully completed.


(8)HTTPの場合のポート番号を確認するSQLは以下。
SQL> SELECT DBMS_XDB_CONFIG.gethttpport FROM dual;

GETHTTPPORT
-----------
5503

(9)試しにDBを停止して、停止後ブEMにブラウザアクセスできるか確認してみる

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.


→DBが停止した状態ではアクセス出来ない。XDBが停止しているとダメな様(11gR2までとは異なる動作)


(10)次はlsofコマンドで5503ポートをオープンしているプロセスを確認してみます。ブラウザからEMへアクセスがない場合は以下の様にリスナープロセスのみが該当ポートをオープンしている様でした。

[root@hoge oracle]# lsof -i:5503
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
tnslsnr 6961 grid 25u IPv6 117195 0t0 TCP *:fcp-srvr-inst2 (LISTEN)


(11)次は、ブラウザからEM Expressにアクセスした状態でlsofコマンドでEM Expressにアクセスしてみるとディスパッチャも該当ポートをオープンしている事が確認出来ました。

[root@hoge oracle]# lsof -i:5503
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
tnslsnr 6961 grid 25u IPv6 117195 0t0 TCP *:fcp-srvr-inst2 (LISTEN)
ora_d000_ 7125 oracle 14u IPv6 126782 0t0 TCP hoge:fcp-srvr-inst2->192.168.56.1:52575 (ESTABLISHED)
ora_d000_ 7125 oracle 16u IPv6 126838 0t0 TCP hoge:fcp-srvr-inst2->192.168.56.1:52577 (ESTABLISHED)
ora_d000_ 7125 oracle 18u IPv6 126839 0t0 TCP hoge:fcp-srvr-inst2->192.168.56.1:52578 (ESTABLISHED)
ora_d000_ 7125 oracle 20u IPv6 126840 0t0 TCP hoge:fcp-srvr-inst2->192.168.56.1:52579 (ESTABLISHED)
ora_d000_ 7125 oracle 23u IPv6 126844 0t0 TCP hoge:fcp-srvr-inst2->192.168.56.1:52580 (ESTABLISHED)

 

■ASMCMDで遊んでみようぜ!!の巻

※ここで記載した内容は独断と偏見に基づく個人の見解であり、実行しているコマンドや手順も必ずしも正しい手順とは限りません。その為、あくまで参考程度にご覧頂ければと思います。

 

■ASMCMDで遊んでみようぜ!!の巻

極まれにASMCMDを使う場面がありますよね。タマに使うものなので使い方をど忘れしてしまったなんて事も往々にしてあるかと思います。今日は備忘録的にASMCMDの基本的な使い方に触れてみようと思います。

■検証環境
DB:Oracle Database 12.1.0.1
OS:Oracle Enterprise Linux 5.8(64-bit)
Oracle Restart環境

(1)ASMCMDを起動する前にはgridユーザにて最低限、ORACLE_SIDとORACLE_HOME、PATHの3つの環境変数の指定を行う必要があります。

$export ORACLE_SID=<ASMインスタンスのSIDを指定>
$export ORACLE_HOME=<$ORACLE_HOMEを指定>
$export PATH=<$ORACLE_HOME直下/binディレクトリを指定>

以下、参考までに実行例です。
[grid@hoge ~]$ export ORACLE_SID=+ASM
[grid@hoge ~]$ export ORACLE_HOME=/opt/app/grid/product/12.1.0/grid
[grid@hoge ~]$ export PATH=$ORACLE_HOME/bin:$PATH

(2)ASMCMDは以下コマンドで起動します。
[grid@hoge ~]$ asmcmd
ASMCMD>

(3)lsdgコマンドにてASMインスタンスにマウントされたディスクグループの一覧が確認できます。

以下ご参考までに実行例です。
ASMCMD>lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files
MOUNTED EXTERN N 512 4096 1048576 12284 9686 0 9686 0 N DATA/

以下に主な列の概要を記載しました。

State列 :ディスクグループの状態を表します
Type 列 :ディスクグループの冗長性を表します(EXTERNは冗長無し、NORMALは2重、HIGHは3重)
Rebal列 :リバランス操作が進行中かどうか
Sector列 :セクタサイズ
Block列 :OraclASMメタデータのブロックサイズ(バイト単位)
AU列 :割当てユニットのサイズ(バイト単位)
Total_MB :該当ディスクグループの総容量(MB単位)
Free_MB :ディスクグループの未使用容量(MB単位)
Offline_disks列:ディスクグループ内のオフラインなディスクの本数
Name列 :ディスクグループ名
Voting_files列 :ディスク内に投票ファイルが含まれるか否か

(4)次はfindコマンドでASMディスク上の特定のファイルを検索します。

以下ご参考までに実行例です。個々のコマンドの詳細な説明は割愛させていただきます。

ASMディスク上の制御ファイルを確認する例
ASMCMD> find --type CONTROLFILE +data/orcl *
+data/orcl/CONTROLFILE/Current.261.873197667
+data/orcl/CONTROLFILE/Current.262.873197667

ASMディスク上のデータファイルを確認する例
ASMCMD> find --type DATAFILE +data/orcl *
+data/orcl/DATAFILE/EXAMPLE.270.873197687
+data/orcl/DATAFILE/SYSAUX.257.873197453
+data/orcl/DATAFILE/SYSTEM.258.873197537
+data/orcl/DATAFILE/UNDOTBS1.260.873197635
+data/orcl/DATAFILE/USERS.259.873197633

ASMディスク上のオンラインREDOログを確認する例
ASMCMD> find --type ONLINELOG +data/orcl *
+data/orcl/ONLINELOG/group_1.263.873197669
+data/orcl/ONLINELOG/group_1.264.873197669
+data/orcl/ONLINELOG/group_2.265.873197669
+data/orcl/ONLINELOG/group_2.266.873197671
+data/orcl/ONLINELOG/group_3.267.873197671
+data/orcl/ONLINELOG/group_3.268.873197671

ASMディスク上の初期化パラメータを確認する例
ASMCMD> find --type parameterfile +data/asm *
+data/asm/PARAMETERFILE/bkpspfile.272.873245209

ASMディスク上のパスワードファイルを確認する例
ASMCMD> find --type password +data/asm *
+data/asm/PASSWORD/pwdasm.256.873196493

(5)iostatコマンドにてディスクI/Oの統計も確認可能です。詳細な説明は割愛します。

以下ご参考までに実行例です。
ASMCMD> iostat --region
Group_Name Dsk_Name Reads Writes Cold_Reads Cold_Writes Hot_Reads Hot_Writes
DATA DATA_0000 360195072 133446656 359871488 130972672 0 0

(6)lsofコマンドにてオープンされているファイルの一覧が確認出来ます。

以下ご参考までに実行例です。
ASMCMD> lsof
DB_Name Instance_Name Path
orcl ORCL +DATA/ORCL/CONTROLFILE/current.261.873197667
orcl ORCL +DATA/ORCL/CONTROLFILE/current.262.873197667
orcl ORCL +DATA/ORCL/DATAFILE/example.270.873197687
orcl ORCL +DATA/ORCL/DATAFILE/sysaux.257.873197453
orcl ORCL +DATA/ORCL/DATAFILE/system.258.873197537
orcl ORCL +DATA/ORCL/DATAFILE/undotbs1.260.873197635
orcl ORCL +DATA/ORCL/DATAFILE/users.259.873197633
orcl ORCL +DATA/ORCL/ONLINELOG/group_1.263.873197669
orcl ORCL +DATA/ORCL/ONLINELOG/group_1.264.873197669
orcl ORCL +DATA/ORCL/ONLINELOG/group_2.265.873197669
orcl ORCL +DATA/ORCL/ONLINELOG/group_2.266.873197671
orcl ORCL +DATA/ORCL/ONLINELOG/group_3.267.873197671
orcl ORCL +DATA/ORCL/ONLINELOG/group_3.268.873197671
orcl ORCL +DATA/ORCL/TEMPFILE/temp.269.873197675

(7)lsodコマンドにてオープンデバイスの一覧が確認可能です。

以下ご参考までに実行例です。
ASMCMD> lsod
Instance Process OSPID Path
1 oracle@hoge (DBW0) 8975 /dev/sdb1
1 oracle@hoge (GMON) 8987 /dev/sdb1
1 oracle@hoge (LGWR) 8977 /dev/sdb1
1 oracle@hoge (RBAL) 8985 /dev/sdb1
1 oracle@hoge (RBAL) 8985 /dev/sdb1
1 oracle@hoge (TNS V1-V3) 9027 /dev/sdb1
1 oracle@hoge (TNS V1-V3) 9333 /dev/sdb1
1 oracle@hoge (X000) 9628 /dev/sdb1

(8) showpatches コマンドにてパッチ適用状況について確認

以下ご参考までに実行例です。
ASMCMD> showpatches
---------------
List of Patches
===============

(9)showversionコマンドでASMのバージョンを確認。基本的にはGridInfraStructureのバージョンに順じます。

以下ご参考までに実行例です。
ASMCMD> showversion
ASM version : 12.1.0.1.0

(10)rabelコマンドでASMCMDから実行可能なコマンド一覧が確認出来ます。

以下ご参考までに実行例です。
ASMCMD> rabel
commands:
--------

md_backup, md_restore


lsattr, setattr

cd, cp, du, find, help, ls, lsct, lsdg, lsof, mkalias
mkdir, pwd, rm, rmalias, showclustermode, showclusterstate
showpatches, showversion

mapau, mapextent

chdg, chkdg, dropdg, iostat, lsdsk, lsod, mkdg, mount
offline, online, rebal, remap, umount

pwcopy, pwcreate, pwdelete, pwget, pwmove, pwset

dsget, dsset, lsop, shutdown, spbackup, spcopy, spget
spmove, spset, startup

chtmpl, lstmpl, mktmpl, rmtmpl

chgrp, chmod, chown, groups, grpmod, lsgrp, lspwusr, lsusr
mkgrp, mkusr, orapwusr, passwd, rmgrp, rmusr, rpusr

volcreate, voldelete, voldisable, volenable, volinfo
volresize, volset, volstat

(11) passwdコマンドでASMインスタンス側(DBユーザでは無い)のユーザパスワードの変更が可能です。


以下ご参考までに実行例です。
ASMCMD> passwd sys
Enter old password (optional): ******
Enter new password: ******

以上です。

WLS小技

※ここで記載した内容は独断と偏見に基づく個人の見解であり、実行しているコマンドや手順も必ずしも正しい手順ではありません。その為、あくまで参考程度にご覧頂ければと思います。

 

今日はWLSTの基本だけど意外と知らない小技を紹介しようと思います。全て単純なコマンドですが意外と役に立つ場面があります。


■検証環境
OS:Windows 8.1 Enterprise
WLS:Wenlogic Server 12.1.3


◆1ステップででWLSTから管理サーバーに接続する方法

以下、実行例です。

wls:/offline> connect('weblogic','welcome1','t3://10.10.10.10:7001')
ユーザーID weblogicでt3://10.10.10.10:7001に接続しています ...
ドメイン"base_domain"に属する管理サーバー"AdminServer"に。が正常に接続されました


警告: サーバーへの接続に安全でないプロトコルが使用
されました。通信セキュリティを確保するには、かわりにSSLポートまたは
管理ポートを使用する必要があります。

 

Weblogicのバージョン確認方法

以下、実行例です。

wls:/base_domain/serverConfig> print version
WebLogic Server 12.1.3.0.0 Wed May 21 18:53:34 PDT 2014 1604337

 

◆現在、Weblogicにログインしているユーザ名の確認

以下、実行例です。

wls:/base_domain/serverConfig> print username
weblogic

 

◆現在、WLSTがWeblogicインスタンスに接続しているか確認

以下、実行例です。

wls:/base_domain/serverConfig> print connected
true


◆ローカルのMbeabHomeを確認

以下、実行例です。

wls:/base_domain/serverConfig> print home
weblogic.rmi.internal.BasicRemoteRef - hostID: '-8235549366564595636S:10.10.10.1
0:[7001,7001,-1,-1,-1,-1,-1]:base_domain:AdminServer', oid: '284', channel: 'null'


◆管理MbeanHomeを確認

以下、実行例です。

wls:/base_domain/serverConfig> adminHome()
Traceback (innermost last):
File "<console>", line 1, in ?
AttributeError: 'javainstance' object has no attribute '__call__'
wls:/base_domain/serverConfig> print adminHome
weblogic.rmi.internal.BasicRemoteRef - hostID: '7883532101325450384S:10.10.10.10
:[7001,7001,-1,-1,-1,-1,-1]:base_domain:AdminServer', oid: '283', channel: 'null

'


◆WLSTから管理サーバーを起動する方法

以下、実行例です。

wls:/offline> startServer()
WebLogicサーバーを起動しています...
WLST-WLS-1424697940968: <2015/02/23 22時25分41秒 JST> <Info> <Security> <BEA-090
905> <Disabling the CryptoJ JCE Provider self-integrity check for better startup
performance. To enable this check, specify -Dweblogic.security.allowCryptoJDefa
ultJCEVerification=true.>
WLST-WLS-1424697940968: <2015/02/23 22時25分41秒 JST> <Info> <Security> <BEA-090
906> <Changing the default Random Number Generator in RSA CryptoJ from ECDRBG128
to FIPS186PRNG. To disable this change, specify -Dweblogic.security.allowCrypto
JDefaultPRNG=true.>
WLST-WLS-1424697940968: <2015/02/23 22時25分42秒 JST> <Info> <WebLogicServer> <B
EA-000377> <Starting WebLogic Server with Java HotSpot(TM) 64-Bit Server VM Vers
ion 24.75-b04 from Oracle Corporation.>
WLST-WLS-1424697940968: <2015/02/23 22時25分42秒 JST> <Info> <Management> <BEA-1
41107> <Version: WebLogic Server 12.1.3.0.0 Wed May 21 18:53:34 PDT 2014 160433
7 >
WLST-WLS-1424697940968: <2015/02/23 22時25分43秒 JST> <Notice> <WebLogicServer>
< BEA-000365> <Server state changed to STARTING.>
WLST-WLS-1424697940968: <2015/02/23 22時25分43秒 JST> <Info> <WorkManager> <BEA-
002900> <Initializing self-tuning thread pool.>
WLST-WLS-1424697940968: <2015/02/23 22時25分43秒 JST> <Info> <WorkManager> <BEA-
002942> <CMM memory level becomes 0. Setting standby thread pool size to 256.>
WLST-WLS-1424697940968: <2015/02/23 22時25分44秒 JST> <Notice> <Log Management>
< BEA-170019> <The server log file C:\Oracle\Middleware\Oracle_Home\wlserver\comm
on\bin\servers\myserver\logs\myserver.log is opened. All server side log events
will be written to this file.>
WLST-WLS-1424697940968: <2015/02/23 22時25分45秒 JST> <Notice> <Security> <BEA-0
90082> <Security initializing using security realm myrealm.>
WLST-WLS-1424697940968: <2015/02/23 22時25分47秒 JST> <Notice> <WebLogicServer>
< BEA-000365> <Server state changed to STANDBY.>
WLST-WLS-1424697940968: <2015/02/23 22時25分47秒 JST> <Notice> <WebLogicServer>
< BEA-000365> <Server state changed to STARTING.>
WLST-WLS-1424697940968: 2 23, 2015 10:25:47 午後 weblogic.wsee.WseeCoreMessages
logWseeServiceStarting
WLST-WLS-1424697940968: 情報: Wseeサービスを開始しています
WLST-WLS-1424697940968: <2015/02/23 22時25分47秒 JST> <Notice> <Log Management>
< BEA-170027> <The server has successfully established a connection with the Doma
in level Diagnostic Service.>
WLST-WLS-1424697940968: <2015/02/23 22時25分48秒 JST> <Notice> <WebLogicServer>
< BEA-000365> <Server state changed to ADMIN.>
WLST-WLS-1424697940968: <2015/02/23 22時25分48秒 JST> <Notice> <WebLogicServer>
< BEA-000365> <Server state changed to RESUMING.>
WLST-WLS-1424697940968: <2015/02/23 22時25分48秒 JST> <Notice> <Server> <BEA-002
613> <Channel "Default" is now listening on 127.0.0.1:7001 for protocols iiop, t
3, ldap, snmp, http.>
WLST-WLS-1424697940968: <2015/02/23 22時25分48秒 JST> <Notice> <WebLogicServer>
< BEA-000331> <Started the WebLogic Server Administration Server "myserver" for d
omain "mydomain" running in development mode.>
WLST-WLS-1424697940968: <2015/02/23 22時25分48秒 JST> <Notice> <WebLogicServer>
< BEA-000360> <The server started in RUNNING mode.>
WLST-WLS-1424697940968: <2015/02/23 22時25分48秒 JST> <Notice> <WebLogicServer>
< BEA-000365> <Server state changed to RUNNING.>
.サーバーが正常に起動しました。
'WLST-WLS-1424697940968'


◆管理サーバーの起動状態を確認

以下、実行例です。

wls:/base_domain/serverConfig> state('AdminServer')
"AdminServer"の現在の状態: RUNNING


◆WLSTからの接続を切断する

以下、実行例です。

wls:/base_domain/serverConfig/Clusters> disconnect()
WebLogic Serverから切断されました: AdminServer

Oracleのバッググラウンドプロセスをぶっこ●しちゃおうぜ!!の巻

※ここで記載した内容は独断と偏見に基づく個人の見解であり、実行しているコマンドや手順も必ずしも正しい手順とは限りません。その為、あくまで参考程度にご覧頂ければと思います。

 

■前置き

Oracleには大まかに以下7つの必須のバックグラウンドプロセスがあります。
 
 ======
 -プロセス・モニター・プロセス(PMON)
 -システム・モニター・プロセス(SMON)
 -データベース・ライター・プロセス(DBWn)
 -ログ・ライター・プロセス(LGWR)
 -チェックポイント・プロセス(CKPT)
 -管理性モニター・プロセス(MMONおよびMMNL)
 -リカバラ・プロセス(RECO)
 ======
 
上記のバックグラウンドプロセスは、DBで動作する必須のプロセスです。何らかの原因でどれか1つでも終了してしまった場合は、DBが正常に稼働できなくなる為、インスタンスが停止してしまいます。


■検証概要

今回は、実際に必須のバックグラウントプロセスをKILLコマンドにて停止させた場合に実際にインスタンスダウンが発生するのか確認します。また、それ以外のオプションのプロセスを停止した場合にどういった挙動となるのか検証して確認してみようと思います。


■検証環境

OS:Oracle Enterprise Linux 5.8
DB:Oracle Database Enterprise Edition 11.2.0.1


■検証内容

(1)まずはV$PROCESSから現在起動しているプロセスの状態を確認します。
 
  SQL> SELECT PNAME FROM V$PROCESS
  WHERE PNAME IS NOT NULL ORDER BY PNAME;
 
  PNAME
  ---------------
  ARC0
  ARC1
  ARC2
  ARC3
  CJQ0
  CKPT <-★チェックポイント(必須プロセス)
  D000
  DBRM
  DBW0 <-★データベースライター(必須プロセス)
  DIA0
  DIAG
 
  PNAME
  ---------------
  GEN0
  LGWR <-★ログライター(必須プロセス)
  MMAN
  MMNL <-★管理モニタライト(必須プロセス)
  MMON <-★管理モニタ(必須プロセス)
  NSA2
  PMON <-★プロセスモニター(必須プロセス)
  PSP0
  Q000
  Q001
  QMNC
 
  PNAME
  ---------------
  RECO <-★リカバラ(必須プロセス)
  S000
  SMCO <-★システムモニタ(必須プロセス)
  SMON
  VKRM
  VKTM
  W000
 
29行が選択されました。


(2)続いてOS側からpsコマンドにてDBのバッググラウンドプロセスについて確認します。
  
  bash-3.2$ ps -ef |grep ora_
  oracle 5149 1 0 00:00 ? 00:00:00 ora_pmon_orcl <-★プロセスモニター(必須プロセス)
  oracle 5151 1 0 00:00 ? 00:00:00 ora_vktm_orcl
  oracle 5155 1 0 00:00 ? 00:00:00 ora_gen0_orcl
  oracle 5157 1 0 00:00 ? 00:00:00 ora_diag_orcl
  oracle 5159 1 0 00:00 ? 00:00:00 ora_dbrm_orcl
  oracle 5161 1 0 00:00 ? 00:00:00 ora_psp0_orcl
  oracle 5163 1 0 00:00 ? 00:00:00 ora_dia0_orcl
  oracle 5165 1 0 00:00 ? 00:00:00 ora_mman_orcl
  oracle 5167 1 0 00:00 ? 00:00:00 ora_dbw0_orcl<-★データベースライター(必須プロセス)
  oracle 5169 1 0 00:00 ? 00:00:00 ora_lgwr_orcl<-★ログライター(必須プロセス)

  oracle 5171 1 0 00:00 ? 00:00:00 ora_ckpt_orcl<-★チェックポイント(必須プロセス)
  oracle 5173 1 0 00:00 ? 00:00:00 ora_smon_orcl<-★システムモニタ(必須プロセス)
  oracle 5175 1 0 00:00 ? 00:00:00 ora_reco_orcl<-★リカバラ(必須プロセス)
  oracle 5177 1 1 00:00 ? 00:00:00 ora_mmon_orcl<-★管理モニタ(必須プロセス)
  oracle 5179 1 0 00:00 ? 00:00:00 ora_mmnl_orcl<-★管理モニタライト(必須プロセス)
  oracle 5183 1 0 00:00 ? 00:00:00 ora_s000_orcl

  oracle 5227 1 0 00:00 ? 00:00:00 ora_arc0_orcl
  oracle 5229 1 0 00:00 ? 00:00:00 ora_arc1_orcl
  oracle 5231 1 0 00:00 ? 00:00:00 ora_arc2_orcl
  oracle 5233 1 0 00:00 ? 00:00:00 ora_arc3_orcl
  oracle 5235 1 0 00:00 ? 00:00:00 ora_nsa2_orcl
  oracle 5237 1 0 00:00 ? 00:00:00 ora_qmnc_orcl
  oracle 5245 1 0 00:00 ? 00:00:00 ora_arc4_orcl
  oracle 5263 1 0 00:00 ? 00:00:00 ora_cjq0_orcl
  oracle 5281 1 0 00:00 ? 00:00:00 ora_vkrm_orcl
  oracle 5290 1 0 00:00 ? 00:00:00 ora_q000_orcl
  oracle 5292 1 0 00:00 ? 00:00:00 ora_q001_orcl
  oracle 5298 1 1 00:00 ? 00:00:00 ora_j000_orcl
  oracle 5300 1 9 00:00 ? 00:00:01 ora_j001_orcl
  oracle 5302 1 0 00:00 ? 00:00:00 ora_j002_orcl
  oracle 5307 3632 0 00:00 pts/1 00:00:00 grep ora_
  

(3)必須プロセスのDBWRn(nは数字)をやっちゃいます(^^)/

bash-3.2$ kill -9 5167


(4)DB側の起動状況をアラートログから確認すると、一定間隔でバックグラウンド・プロセスの状態監視を行っているPMONがDBWRの異常終了を感知しDBが強制的に停止された状況が確認できます(★2)DBWRn(nは数字)は必須のバッググラウンドプロセスとなる為、インスタンスが停止されたのも想定通りの動作になるかと思います。
  
  ===アラートログより該当時間帯抜粋
  Thu Feb 26 00:02:59 2015
  PMON (ospid: 5149): terminating the instance due to error 471<-★1
  Instance terminated by PMON, pid = 5149 <-★2
  ===
  
★1でアラートログには「error 471」のエラーが出力されている事も確認できます。こちらの出力は「ORA-00471」エラーが発生した事を表します。ORA-00471エラーはDBWRが何らかの理由で異常終了した場合に出力されるエラーです。


(5)続いてオプションのプロセスとなる一般タスク実行プロセス(GENn(nは数字))を停止します。

bash-3.2$ kill -9 30534


(6)一般タスク実行プロセスをkill後、アラートログを確認します。オプションのプロセスにも関わらず、PMONが該当プロセスの異常終了を検知しインスタンスを強制停止させた事が確認できます。
  
  ====アラートログより該当箇所抜粋
  PMON (ospid: 30528): terminating the instance due to error 495 <-★
  Instance terminated by PMON, pid = 30528 <-★
  ====
  
上記で出力されている「error 495」は「ORA-495」エラーが発生した事を表し、こちらのエラーは一般タスク実行プロセスが何らかの原因によって異常終了した場合に出力されます。


(7)次はオプションのプロセスの中でもかなりメジャーなプロセスとなるARCn(nは数字)を停止した場合の動作について確認していきます。

bash-3.2$ kill -9 30939


(8)該当時間帯のアラートログを確認してみます。以下の様な出力が確認出来ました。
 

  =====アラートログより該当箇所抜粋
  Thu Feb 26 00:31:46 2015
  ARCH shutting down <-★1
  ARC4: Archival stopped <-★2
  Thu Feb 26 00:31:46 2015
  Thu Feb 26 00:33:46 2015
  ARC2: Detected ARCH process failure <-★3
  ARC2: STARTING ARCH PROCESSES <-★4
  Thu Feb 26 00:33:46 2015
  ARC0 started with pid=29, OS id=31076 <-★5
  Thu Feb 26 00:33:47 2015
  ARC0: Archival started <-★6
  ARC2: STARTING ARCH PROCESSES COMPLETE <-★7
  =====
  
上記の出力結果より、アーカイバプロセスのKILLではPMONによるインスタンスの強制終了は行われない事が確認できます。

また、該当時間帯に複数の出力がありますので、順をおってそちらも確認していきましょう。まず、★1の箇所でKILLコマンドが実行されたことを受け、ARCHが停止された事が確認出来ます。

 

-1.アラートの★2の出力からARCHの停止に伴い、ARC4プロセスも停止してしまった様です。

-2.アラートの★3の出力でARCH2プロセスがARCHプロセスの障害を検知した様子が確認出来ます。

-3.アラートの★4の出力からARCH2プロセスによってアーカイブプロセスが起動された様です。

-4.アラートの★5の出力からARC0プロセスの起動が開始した事が確認出来ます。

-5.アラートの★6や★7の出力からアーカイブプロセスの起動が完了した事が確認できます。


(9)続いて CJQnプロセスを停止した場合の動作について確認します。

bash-3.2$ kill -9 30979
  
  ====アラートログより該当箇所抜粋
  Thu Feb 26 01:00:51 2015
  Restarting dead background process CJQ0<-★
  Thu Feb 26 01:00:51 2015
  CJQ0 started with pid=28, OS id=31687<-★
  ====
  
この場合、アラートログにはCJQn(nは数字)プロセスが停止された事を示す出力はなされない様です。また停止後、即座にCJQn(nは数字)プロセスが再起動されることが確認出来ました。

 

■まとめ

その後も、KILLコマンドでバックグラウンドプロセスを停止させた場合の動作を確認しましたが必須プロセスについてはどのプロセスを停止した場合にもインスタンが強制停止される動作となりました。

 

ただし、オプションのプロセスについてはプロセスの種類によって、インスタンスが強制停止される動作となるものや、インスタンスの停止は無くプロセス再起動となるプロセス、停止後も起動されないプロセス等プロセスの種類によって様々な動作となりました。

 

しかしながら、上記で確認した内容については、OSの種類やDBのバージョンによって挙動は異なってくるものだろうし、中には私の検証環境の設定等による固有の動作もあったのかなと推察しています。

DBMS_METADATA.GET_DDL

■検証内容
表定義やビュー定義などの定義文が確認できたら便利な場面があると思います。ORACLEではDBMS_METADATA.GET_DDLパッケージを使って様々なオブジェクトの定義文を確認する事が可能です。
検証して確認した内容をまとめましたので記録として残します。

以下の方法は全てDBMS_METADATA.GET_DDLパッケージを使った方法となりますが、このパッケージの実行はDBに対して一定の負荷がかかります。また、内容については個人の趣味の範囲で記載させて頂いております。実行する場合は全て実行責任でお願い致します。


■検証環境
Oracle Database Enterprise Edition 11.1.0.7
Asianux Server 3.0 (64-bit)

★表定義を確認する定義
SQL*PLUSよりSYSユーザにて以下の様に実行する事で表定義の確認が可能です。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('TABLE','<表名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL> SET PAGESIZE 0
SQL> SET LONG 1000000
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','DEPT','SCOTT') FROM dual;

 CREATE TABLE "SCOTT"."DEPT"
  (    "DEPTNO" NUMBER(2,0),
       "DNAME" VARCHAR2(14),
       "LOC" VARCHAR2(13),
        CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO")
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENT
S 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 B
UFFER_POOL DEFAULT)
 TABLESPACE "USERS"  ENABLE
  ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
 STORAGE(INITIAL 65536 NEXT 1048576 MINE
XTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUF
FER_POOL DEFAULT)
 TABLESPACE "USERS"  ENABLE ROW MOVEMENT

★インデックス定義を確認する場合
インデックスの定義を確認する場合は、SQL*PLUSより以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('INDEX','<インデックス名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('INDEX','PK_EMP','SCOTT') FROM dual;

CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMPNO")
 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS"

★ビュー定義を確認する場合
ビューの定義を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('VIEW','<ビュー名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('VIEW','DEPTVIEW','SCOTT') FROM dual;

 CREATE OR REPLACE FORCE VIEW "SCOTT"."DEPTVIEW" ("DEPTNO", "DNAME", "LOC") AS
 SELECT "DEPTNO","DNAME","LOC" FROM SCOTT.DEPT

★トリガーの定義文を確認する場合
トリガーの定義文を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('TRIGGER','<トリガー名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL> SET PAGESIZE 0
SQL> SET LONG 1000000
SQL> SELECT DBMS_METADATA.GET_DDL('TRIGGER','TESTTRIGGER','SCOTT') FROM dual;

CREATE OR REPLACE TRIGGER "SCOTT"."TESTTRIGGER"
BEFORE INSERT OR UPDATE OR DELETE ON SCOTT.DEPT
FOR EACH ROW
BEGIN
 CASE
   WHEN INSERTING THEN
   WHEN UPDATING THEN
   WHEN DELETING THEN
 END CASE;
END;
ALTER TRIGGER "SCOTT"."TESTTRIGGER" ENABLE  

★表領域の定義文を確認する場合
表領域の定義を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。注意して欲しいのは表領域の定義を確認する場合はスキーマ名の入力が不要となる点です。これは表領域はすべてSYSの所有物となるためです。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('TABLESPACE','<表領域名>') FROM dual;

以下、ご参考までに実行例です。
SQL> SET PAGESIZE 0
SQL> SET LONG 1000000
SQL> SELECT DBMS_METADATA.GET_DDL('TABLESPACE','USERS') FROM dual;

 CREATE TABLESPACE "USERS" DATAFILE
 '/opt/app/oracle/oradata/o11107/users01.dbf' SIZE 5242880
 AUTOEXTEND ON NEXT 1310720 MAXSIZE 32767M
 LOGGING ONLINE PERMANENT BLOCKSIZE 8192
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO

★マテリアライズドビュー定義を確認する場合
マテリアライズドビューの定義を確認する場合は、SYSユーザにてSQL*PLUSより以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW','<マテリアライズドビュー名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW','MV1','SCOTT') FROM dual;

 CREATE MATERIALIZED VIEW "SCOTT"."MV1"
 ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS"
 BUILD IMMEDIATE
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS"
 REFRESH FORCE ON DEMAND
 WITH PRIMARY KEY USING DEFAULT LOCAL ROLLBACK SEGMENT
 USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
 AS SELECT "DEPT"."DEPTNO" "DEPTNO","DEPT"."DNAME" "DNAME","DEPT"."LOC" "LOC" FROM "SCOTT"."DEPT" "DEPT"

★ユーザ定義を確認する場合
ユーザの定義文を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。尚、実行結果でパスワードについてはマスキングされております。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('USER','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('USER','SCOTT') FROM dual;
  CREATE USER "SCOTT" IDENTIFIED BY VALUES 'S:106A6D27B1BDD0310FACE2AFB22AA7943E92F0AE7A865473610984BD890F;F894844C34402B67'
     DEFAULT TABLESPACE "USERS"
     TEMPORARY TABLESPACE "TEMP"

以上となります。