1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VMwareへOracle Grid Infrastructure 11.2 をインストールしてみてみた

Last updated at Posted at 2020-11-21

最近CloudになりSoftwareをInstallする機会がなくなり、RAC Databaseがどのような構成で動作しているのか勉強するため、Oracle Database 11gR2の10周年を記念して、Oracle Grid Infrastructure 11.2 をVMwareへインストールしてみてみます。
・ORACLEソフトウェアはソフトウェア・ダウンロードからダウンロードしてみてみます。

■ 構成

今回は、前回作成したVMware環境へOracle Grid Infrastructure 11.2 (GI)をインストールしてみます。
・参考: VMware vCenter Server Appliance 7.0 (VCSA)をデプロイしてみてみた
構成.png

■ VMware 仮想マシン作成

● Oracle Linux 6 の仮想マシン作成

  1. 作成タイプの選択
    [次へ]をクリック
    01.png

  2. 名前とゲストOSの選択
    以下情報を入力し、[次へ]をクリック

    ・名前: 仮想マシンの名前
    ・互換性: 互換対応したいESXiバージョン
    ・ゲストOSファミリ: Linuxを選択
    ・ゲストOSのバージョン: Oracle Linux 6(64bit)を選択

02.png

  1. ストレージの選択
    [次へ]をクリック
    03.png

  2. 設定のカスタマイズ
    Oracle RAC用のVMを設定します。
    [ネットワーク アダプタの追加]をクリックし、ネットワーク アダプタを追加
    そのほかの項目は必要値を入力し、[次へ]をクリック
    04.png

  3. 設定の確認
    設定を確認し、[完了]をクリック
    05.png

● GI用共有Disk追加

GI用共有DISKを4つ追加します。
以下画面のように以下項目を入力し、[保存]をクリック

・新規ハードディスク: OCR用Diskは1G, Database用DIskは必要量を入力
・ディスク プロビジョニング: [シック プロビジョンングEager Zeroed]を選択
・ディスク モード: [独立型: 通常]を選択
・共有: [マルチライターの共有]を選択

10_Disk追加.png

■ OSインストール

Oracle Linux 6.10をインストールします
パッケージはBasicを選択し、GUIをつかいたいので、X以外はデフォルト値、ホスト名、eth0とeht1は図面のように設定してインストール
06.png

■ VMware Toolインストール

以下を参考にVMware Toolインストール
・参考: Linux 仮想マシンへの VMware Tools の手動インストール

● インストール

[root@rac11g1 ~]# mkdir /mnt/cdrom
[root@rac11g1 ~]# mount /dev/cdrom /mnt/cdrom
[root@rac11g1 ~]# ls /mnt/cdrom -l
	合計 56840
	-r--r--r--. 1 root root 56405224 10月  2 04:18 2019 VMwareTools-10.3.21-14772444.tar.gzd
	-r-xr-xr-x. 1 root root     1976 10月  2 04:17 2019 manifest.txt
	-r-xr-xr-x. 1 root root     4943 10月  2 04:12 2019 run_upgrader.sh
	-r-xr-xr-x. 1 root root   872044 10月  2 04:14 2019 vmware-tools-upgrader-32
	-r-xr-xr-x. 1 root root   918184 10月  2 04:14 2019 vmware-tools-upgrader-64
[root@rac11g1 ~]# cd /tmp
[root@rac11g1 ~]# tar zxpf /mnt/cdrom/VMwareTools-10.3.21-14772444.tar.gz
[root@rac11g1 ~]# umount /dev/cdrom 
[root@rac11g1 ~]# cd vmware-tools-distrib
[root@rac11g1 ~]# ./vmware-install.pl

■ ORACLE インストール要件確認

● RPM要件の確認

以下64bnit、32bitのRPMがインストールされていることを確認

・x86_64
	binutils-2.20.51.0.2-5.11.el6 (x86_64)
	gcc-4.4.4-13.el6 (x86_64)
	gcc-c++-4.4.4-13.el6 (x86_64)
	glibc-2.12-1.7.el6 (x86_64)
	glibc-devel-2.12-1.7.el6 (x86_64)
	glibc-headers-2.12-1.7.el6(x86_64)
	compat-libstdc++-33-3.2.3-69.el6 (x86_64)
	compat-libcap1-1.10-1 (x86_64)
	ksh-*.el6 (x86_64)
	libaio-0.3.107-10.el6 (x86_64)
	libgcc-4.4.4-13.el6 (x86_64)
	libaio-devel-0.3.107-10.el6 (x86_64)
	libstdc++-devel-4.4.4-13.el6 (x86_64)
	make-3.81-19.el6 (x86_64)
	libstdc++-4.4.4-13.el6 (x86_64)
	sysstat-9.0.4-11.el6 (x86_64)
	cpp-4.4.4-13.el6(x86_64)
	mpfr.x86_64 0:2.4.1-6.el6(x86_64) 
・i686
	compat-libstdc++-33-3.2.3-69.el6 (i686)
	glibc-2.12-1.7.el6 (i686)
	glibc-devel-2.12-1.7.el6 (i686)
	libaio-0.3.107-10.el6 (i686)
	libaio-devel-0.3.107-10.el6 (i686)
	libgcc-4.4.4-13.el6 (i686)
	libstdc++-4.4.4-13.el6 (i686)
	libstdc++-devel-4.4.4-13.el6 (i686)

●RPMインストールコマンド例

yum install -y binutils-2*
yum install -y gcc-4*
yum install -y gcc-c++-4*
yum install -y glibc-2*
yum install -y glibc-devel-2*
yum install -y glibc-headers-2*
yum install -y compat-libstdc++-33-3*
yum install -y compat-libcap1-1*
yum install -y ksh-*.el6
yum install -y libaio-0.*
yum install -y libgcc-4.*
yum install -y libaio-devel-0.*
yum install -y libstdc++-devel-4.*
yum install -y make-3.81-19.el6
yum install -y libstdc++-4.*
yum install -y sysstat-9.*
yum install -y cpp-4.*
yum install -y mpfr.*
yum install -y compat-libstdc++-33-3.*i686*
yum install -y glibc-2.*i686*
yum install -y glibc-devel-2.*i686*
yum install -y libaio-0.*i686*
yum install -y libaio-devel-0.*i686*
yum install -y libgcc-4.*i686*
yum install -y libstdc++-4.*i686*
yum install -y libstdc++-devel-4.*i686*

■ カーネル設定

・sysctl.conf設定

[root@rac11g1 ~]# vi /etc/sysctl.conf
	#Oracle 11gR2
	net.core.rmem_default = 262144
	net.core.rmem_max = 4194304
	net.core.wmem_default = 262144
	net.core.wmem_max = 1048576
	net.ipv4.ip_local_port_range = 9000    65500
	kernel.sem = 250 32000 100 128
	kernel.shmmax = 4294967295
	#kernel.shmall = 2097152
	kernel.shmmni = 4096
	fs.file-max = 6815744
	fs.aio-max-nr = 1048576

・sysctl.conf設定反映

[root@rac11g1 ~]# sysctl -p 

● /dev/shm設定

MEMORY_MAX_SIZEの値以上を/dev/shmへ設定

★8GB /dev/shm設定例

[root@rac11g1 ~]# mount -t tmpfs shmfs -osize=8589934592 /dev/shm

・設定確認

[root@rac11g1 ~]# df -h
	Filesystem            Size  Used Avail Use% Mounted on
	/dev/mapper/vg_11grac01-lv_root
						50G  5.0G   42G  11% /
	tmpfs                 8.0G     0  8.0G   0% /dev/shm
	/dev/sda1             477M   79M  370M  18% /boot
	/dev/mapper/vg_11grac01-lv_home
						195G   60M  185G   1% /home
	shmfs                 8.0G     0  8.0G   0% /dev/shm

・永続設定
[root@rac11g1 ~]# vi /etc/fstab
	shmfs                   /dev/shm                tmpfs   size=8g        0 0

■ OSユーザ作成

● OS Grupe作成

groupadd -g 200 oinstall
groupadd -g 201 dba
groupadd -g 202 oper
groupadd -g 203 asmadmin
groupadd -g 204 asmdba
groupadd -g 205 asmoper

● Grid Infrastructureソフトウェア所有者ユーザの作成

・ユーザー作成

[root@rac11g1 ~]# useradd -d /home/grid -s /bin/bash -g oinstall -G asmadmin,asmdba,asmoper -u 201 grid

・ユーザー作成確認

[root@rac11g1 ~]# id -a grid
	uid=201(grid) gid=200(oinstall) 所属グループ=200(oinstall),203(asmadmin),204(asmdba),205(asmoper)

・ユーザーパスワード設定

[root@rac11g1 ~]# passwd grid

・環境変数.bash_profile設定

[grid@rac11g1 ~]$ cat .bash_profile
	# .bash_profile

	# Get the aliases and functions
	if [ -f ~/.bashrc ]; then
		. ~/.bashrc
	fi

	# User specific environment and startup programs

	PATH=$PATH:$HOME/bin
	export PATH

	export LANG=C
	export NLS_LANG=American_America.UTF8
	export ORACLE_BASE=/u01/app/grid
	export ORACLE_HOME=/u01/app/11.2.0/grid
	export ORACLE_SID=+ASM1
	export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
	export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

	# Alias
	export NODE_NUM=1
	alias crs='crsctl stat resource -t'
	alias alasm='tail -n 100 -f $ORACLE_BASE/diag/asm/+asm/+ASM${NODE_NUM}/trace/alert_+ASM${NODE_NUM}.log'
	alias crs='/u01/app/11.2.0/grid/bin/crsctl stat resource -t'
	alias cdo='cd $ORACLE_HOME'
	alias cdb='cd $ORACLE_BASE'

● ULIMIT設定

・limits.conf設定

[root@rac11g1 ~]# vi /etc/security/limits.conf
	oracle               soft    nproc   2047
	oracle               hard    nproc   16384
	oracle               soft    nofile  1024
	oracle               hard    nofile  65536
	oracle               soft    stack   12040
	oracle               hard    stack   32768
	grid                 soft    nproc   2047
	grid                 hard    nproc   16384
	grid                 soft    nofile  1024
	grid                 hard    nofile  65536
	grid                 soft    stack   12040
	grid                 hard    stack   32768

・grid設定確認

  • soft limits確認
[root@rac11g1 ~]# su - grid
[root@rac11g1 ~]# ulimit -a
	core file size          (blocks, -c) 0
	data seg size           (kbytes, -d) unlimited
	scheduling priority             (-e) 0
	file size               (blocks, -f) unlimited
	pending signals                 (-i) 15682
	max locked memory       (kbytes, -l) 64
	max memory size         (kbytes, -m) unlimited
	open files                      (-n) 1024
	pipe size            (512 bytes, -p) 8
	POSIX message queues     (bytes, -q) 819200
	real-time priority              (-r) 0
	stack size              (kbytes, -s) 12040
	cpu time               (seconds, -t) unlimited
	max user processes              (-u) 2047
	virtual memory          (kbytes, -v) unlimited
	file locks                      (-x) unlimited
  • Hard limits確認
[root@rac11g1 ~]# ulimit -aH
	core file size          (blocks, -c) unlimited
	data seg size           (kbytes, -d) unlimited
	scheduling priority             (-e) 0
	file size               (blocks, -f) unlimited
	pending signals                 (-i) 15682
	max locked memory       (kbytes, -l) 64
	max memory size         (kbytes, -m) unlimited
	open files                      (-n) 65536
	pipe size            (512 bytes, -p) 8
	POSIX message queues     (bytes, -q) 819200
	real-time priority              (-r) 0
	stack size              (kbytes, -s) 32768
	cpu time               (seconds, -t) unlimited
	max user processes              (-u) 16384
	virtual memory          (kbytes, -v) unlimited
	file locks                      (-x) unlimited

・oracle設定確認

  • soft limits確認
[root@rac11g1 ~]# su - oracle
[root@rac11g1 ~]# ulimit -a
	core file size          (blocks, -c) 0
	data seg size           (kbytes, -d) unlimited
	scheduling priority             (-e) 0
	file size               (blocks, -f) unlimited
	pending signals                 (-i) 15682
	max locked memory       (kbytes, -l) 64
	max memory size         (kbytes, -m) unlimited
	open files                      (-n) 1024
	pipe size            (512 bytes, -p) 8
	POSIX message queues     (bytes, -q) 819200
	real-time priority              (-r) 0
	stack size              (kbytes, -s) 12040
	cpu time               (seconds, -t) unlimited
	max user processes              (-u) 2047
	virtual memory          (kbytes, -v) unlimited
	file locks                      (-x) unlimited
  • Hard limits確認
[root@rac11g1 ~]# ulimit -aH
	core file size          (blocks, -c) unlimited
	data seg size           (kbytes, -d) unlimited
	scheduling priority             (-e) 0
	file size               (blocks, -f) unlimited
	pending signals                 (-i) 15682
	max locked memory       (kbytes, -l) 64
	max memory size         (kbytes, -m) unlimited
	open files                      (-n) 65536
	pipe size            (512 bytes, -p) 8
	POSIX message queues     (bytes, -q) 819200
	real-time priority              (-r) 0
	stack size              (kbytes, -s) 32768
	cpu time               (seconds, -t) unlimited
	max user processes              (-u) 16384
	virtual memory          (kbytes, -v) unlimited
	file locks                      (-x) unlimited

■ Network周り設定

● hosts設定

[root@rac11g1 ~]# vi /etc/hosts
	# Do not remove the following line, or various programs
	127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
	::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

	### Oracle Public IP
	192.168.100.11	rac11g1.oracle.com	rac11g1
	192.168.100.12	rac11g2.oracle.com	rac11g2

	### Oracle VIP
	192.168.100.111	rac11g1-vip.oracle.com	rac11g1-vip
	192.168.100.112	rac11g2-vip.oracle.com	rac11g2-vip

	### Oracle SCAN
	192.168.100.117  rac11g-scan.oracle.com rac11g-scan
	192.168.100.118  rac11g-scan.oracle.com rac11g-scan
	192.168.100.119  rac11g-scan.oracle.com rac11g-scan

	### Oracle Private IP(Interconnect)
	11.11.11.11	rac11g1-priv1.oracle.com	rac11g1-priv1
	11.11.11.12	rac11g2-priv1.oracle.com	rac11g2-priv1

● NTP確認

  1. ntp.conf 設定
[root@rac11g1 ~]# cat /etc/ntp.conf
	server ntp.nict.jp 
	server ntp.jst.mfeed.ad.jp
	server pool.ntp.org
	server jp.pool.ntp.org
	server 127.127.1.0 iburstz
  1. ntpd 設定
[root@rac11g1 ~]# cat /etc/sysconfig/ntpd
	# Drop root to id 'ntp:ntp' by default.
	OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
  1. ntpd 再起動
[root@rac11g1 ~]# service ntpd restart
  1. ntp自動起動設定
[root@rac11g1 ~]# chkconfig ntpd on
[root@rac11g1 ~]# ps -ef | grep ntp
	ntp       4519     1  0 04:47 ?        00:00:00 ntpd -x -u ntp:ntp -p /var/run/ntpd.pid
  1. ntp 時刻同期確認
[root@rac11g1 ~]# ntpq -p
		remote           refid      st t when poll reach   delay   offset  jitter
	==============================================================================
	183.ip-51-89-15 67.92.135.130    3 u    2   64    1  275.209   17.625  14.352
	speedtest.switc 206.108.0.131    2 u    1   64    1  152.436   14.728  25.471
	ntp.ms.mff.cuni 116.49.102.213   2 u    2   64    1  313.151   26.953  36.625
	85.ip-54-38-242 5.196.160.139    3 u    1   64    1  293.323    9.096  31.235
	*LOCAL(0)        .LOCL.           5 l    6   64    1    0.000    0.000   0.000

■ iptables無効化

Interconnect通信エラーでないように、iptables無効化しておきます

  1. iptables停止
[root@rac11g2 ~]# /etc/init.d/iptables stop
	iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
	iptables: ファイアウォールルールを消去中:                  [  OK  ]
	iptables: モジュールを取り外し中:                          [  OK  ]
  1. 自動起動停止
[root@rac11g2 ~]# chkconfig iptables off

■ 共有DIsk設定

今回の共有ディスクは以下になります

Devise File ASM DIsk 概要
/dev/sdb CRS_1 CRS記憶域
/dev/sdc CRS_2 CRS記憶域
/dev/sdd CRS_3 CRS記憶域
/dev/sde DATA ASM DIsk

● 共有Disk事前確認

fdisk -l
		ディスク /dev/sdb: 1073 MB, 1073741824 バイト
		ヘッド 34, セクタ 61, シリンダ 1011
		Units = シリンダ数 of 2074 * 512 = 1061888 バイト
		セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
		I/O size (minimum/optimal): 512 bytes / 512 bytes
		ディスク識別子: 0xd2d37d06
		ディスク識別子: 0x00000000

		ディスク /dev/sdc: 1073 MB, 1073741824 バイト
		ヘッド 34, セクタ 61, シリンダ 1011
		Units = シリンダ数 of 2074 * 512 = 1061888 バイト
		セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
		I/O size (minimum/optimal): 512 bytes / 512 bytes
		ディスク識別子: 0x00000000


		ディスク /dev/sdd: 1073 MB, 1073741824 バイト
		ヘッド 34, セクタ 61, シリンダ 1011
		Units = シリンダ数 of 2074 * 512 = 1061888 バイト
		セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
		I/O size (minimum/optimal): 512 bytes / 512 bytes
		ディスク識別子: 0x00000000


		ディスク /dev/sde: 53.7 GB, 53687091200 バイト
		ヘッド 64, セクタ 32, シリンダ 51200
		Units = シリンダ数 of 2048 * 512 = 1048576 バイト
		セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
		I/O size (minimum/optimal): 512 bytes / 512 bytes
		ディスク識別子: 0x00000000

		注意: セクタサイズが 2048 です (512 ではなく)

● パーティション作成

共有Diskなので、片ノードだけで実施
以下のように、fidiskで、共有Disk全部にパーティション作成

  1. fdisk実行
[root@rac11g1 ~]# fdisk /dev/sdb
	デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
	含んでいません
	新たに DOS ディスクラベルをディスク識別子 0xd2d37d06 で作成します。
	あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
	その後はもちろん以前の内容は修復不可能になります。
	警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
	正常になります

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

	コマンド (m でヘルプ): n  <-- nを入力
	コマンドアクション
	e   拡張
	p   基本パーティション (1-4)
	p                      <-- pを入力
	パーティション番号 (1-4): 
	最初 シリンダ (1-1011, default 1): 1  <-- default値のままEnterを入力
	Using default value 1
	Last シリンダ, +シリンダ数 or +size{K,M,G} (1-1011, default 1011): <-- default値のままEnterを入力
	Using default value 1011

	コマンド (m でヘルプ): p   <-- pを入力して、Disk情報を確認

	ディスク /dev/sdb: 1073 MB, 1073741824 バイト
	ヘッド 34, セクタ 61, シリンダ 1011
	Units = シリンダ数 of 2074 * 512 = 1061888 バイト
	セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
	I/O size (minimum/optimal): 512 bytes / 512 bytes
	ディスク識別子: 0xd2d37d06

	デバイス ブート      始点        終点     ブロック   Id  システム
	/dev/sdb1               1        1011     1048376+  83  Linux

	コマンド (m でヘルプ): w    <-- wを入力して、設定書き込み反映
	パーティションテーブルは変更されました!

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

● パーティション作成確認

[root@rac11g1 ~]# fdisk -l
	・・・
	ディスク /dev/sdb: 1073 MB, 1073741824 バイト
	ヘッド 34, セクタ 61, シリンダ 1011
	Units = シリンダ数 of 2074 * 512 = 1061888 バイト
	セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
	I/O size (minimum/optimal): 512 bytes / 512 bytes
	ディスク識別子: 0xd2d37d06

	デバイス ブート      始点        終点     ブロック   Id  システム
	/dev/sdb1               1        1011     1048376+  83  Linux

	ディスク /dev/sdc: 1073 MB, 1073741824 バイト
	ヘッド 34, セクタ 61, シリンダ 1011
	Units = シリンダ数 of 2074 * 512 = 1061888 バイト
	セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
	I/O size (minimum/optimal): 512 bytes / 512 bytes
	ディスク識別子: 0xb88c0579

	デバイス ブート      始点        終点     ブロック   Id  システム
	/dev/sdc1               1        1011     1048376+  83  Linux

	ディスク /dev/sdd: 1073 MB, 1073741824 バイト
	ヘッド 34, セクタ 61, シリンダ 1011
	Units = シリンダ数 of 2074 * 512 = 1061888 バイト
	セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
	I/O size (minimum/optimal): 512 bytes / 512 bytes
	ディスク識別子: 0x846dde95

	デバイス ブート      始点        終点     ブロック   Id  システム
	/dev/sdd1               1        1011     1048376+  83  Linux

	ディスク /dev/sde: 53.7 GB, 53687091200 バイト
	ヘッド 64, セクタ 32, シリンダ 51200
	Units = シリンダ数 of 2048 * 512 = 1048576 バイト
	セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
	I/O size (minimum/optimal): 512 bytes / 512 bytes
	ディスク識別子: 0x2c85ca08

	デバイス ブート      始点        終点     ブロック   Id  システム
	/dev/sde1               1       51200    52428784   83  Linux
	注意: セクタサイズが 2048 です (512 ではなく)

● Disk パーミッション設定

  1. UDEV設定
[root@rac11g1 ~]# vi /etc/udev/rules.d/99-oracle.rules
	KERNEL=="sdb1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660"
	KERNEL=="sdc1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660"
	KERNEL=="sdd1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660"
	KERNEL=="sde1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660"
  1. UDEV再起動
[root@rac11g1 ~]# udevadm control --reload-rules
[root@rac11g1 ~]# /sbin/start_udev	
	udev を起動中:                                             [  OK  ]
  1. パーミッション設定確認
[root@rac11g1 ~]# ls -la /dev | grep asm
	brw-rw----.  1 grid asmadmin   8,  17 Nov 12 23:57 sdb1
	brw-rw----.  1 grid asmadmin   8,  33 Nov 12 23:57 sdc1
	brw-rw----.  1 grid asmadmin   8,  49 Nov 12 23:57 sdd1
	brw-rw----.  1 grid asmadmin   8,  65 Nov 12 23:57 sde1
	brw-rw----.  1 grid asmadmin   8,  81 Nov 12 23:57 sdf1
  1. Disk 初期化と書き込み確認
    gridユーザーで書き込み確認
[root@rac11g1 ~]# su - grid
[grid@rac11g1 ~]$ dd if=/dev/zero  of=/dev/sdb1 bs=1024k count=100
[grid@rac11g1 ~]$ dd if=/dev/zero  of=/dev/sdc1 bs=1024k count=100
[grid@rac11g1 ~]$ dd if=/dev/zero  of=/dev/sdd1 bs=1024k count=100
[grid@rac11g1 ~]$ dd if=/dev/zero  of=/dev/sde1 bs=1024k count=100

■ ASMlib構成

  1. ASMパッケージのインストール
[root@rac11g1 ~]# yum install -y oracleasm
[root@rac11g1 ~]# yum install -y oracleasm-support
[root@rac11g1 ~]# yum install oracleasmlib
  1. ASMlib構成
[root@rac11g1 ~]# /usr/sbin/oracleasm configure -i
	Configuring the Oracle ASM library driver.

	This will configure the on-boot properties of the Oracle ASM library
	driver.  The following questions will determine whether the driver is
	loaded on boot and what permissions it will have.  The current values
	will be shown in brackets ('[]').  Hitting <ENTER> without typing an
	answer will keep that current value.  Ctrl-C will abort.

	Default user to own the driver interface []: grid
	Default group to own the driver interface []: asmadmin
	Start Oracle ASM library driver on boot (y/n) [n]: y
	Scan for Oracle ASM disks on boot (y/n) [n]: y
	Writing Oracle ASM library driver configuration: done
  1. Oracleasmカーネルモジュールの読み込み
[root@rac11g1 ~]# /usr/sbin/oracleasm init
	Creating /dev/oracleasm mount point: /dev/oracleasm
	Loading module "oracleasm": oracleasm
	Configuring "oracleasm" to use device physical block size
	Mounting ASMlib driver filesystem: /dev/oracleasm
  1. 確認
[root@rac11g1 ~]# oracleasm status
	Checking if ASM is loaded: yes
	Checking if /dev/oracleasm is mounted: yes
  1. ASM Disk 設定
[root@rac11g1 ~]# oracleasm createdisk CRS_1 /dev/sdb1
[root@rac11g1 ~]# oracleasm createdisk CRS_2 /dev/sdc1
[root@rac11g1 ~]# oracleasm createdisk CRS_3 /dev/sdd1
[root@rac11g1 ~]# oracleasm createdisk DATA_1 /dev/sde1
  1. 設定反映
[root@rac11g1 ~]# oracleasm scandisks
	Reloading disk partitions: done
	Cleaning any stale ASM disks...
	Scanning system for ASM disks...
  1. 設定確認

・listdisks

[root@rac11g1 ~]# oracleasm listdisks
	CRS_1
	CRS_2
	CRS_3
	DATA_1

・ls

[root@rac11g1 ~]# ls -la /dev/oracleasm/disks
	合計 0
	drwxr-xr-x. 1 root root         0 11月 13 23:38 2020 .
	drwxr-xr-x. 4 root root         0 11月 13 23:38 2020 ..
	brw-rw----. 1 grid asmadmin 8, 17 11月 13 15:11 2020 CRS_1
	brw-rw----. 1 grid asmadmin 8, 33 11月 13 15:11 2020 CRS_2
	brw-rw----. 1 grid asmadmin 8, 49 11月 13 15:11 2020 CRS_3
	brw-rw----. 1 grid asmadmin 8, 65 11月 13 15:11 2020 DATA_
  1. 他のクラスタ・ノードからマーキング設定読み込み
    ノード2で以下実行し、設定確認
[root@rac11g2 ~]# oracleasm scandisks
[root@rac11g2 ~]# oracleasm listdisks
[root@rac11g2 ~]# ls -la /dev/oracleasm/disks/

■ Grid Infrastructureインストール

● ソフトウェア・インストール・ディレクトリの作成

[root@rac11g1 ~]# mkdir -p /u01/app/grid
[root@rac11g1 ~]# mkdir -p /u01/app/11.2.0/grid
[root@rac11g1 ~]# chown -R grid:oinstall /u01/app
[root@rac11g1 ~]# chmod -R 775 /u01/app

● Linuxのcvuqdisk RPMのインストール

[root@rac11g1 ~]# cd /media/grid/rpm
[root@rac11g1 grid]# ls
	install  readme.html  response  rpm  runcluvfy.sh  runInstaller  sshsetup  stage  welcome.html
[root@rac11g1 grid]# cd rpm
[root@rac11g1 rpm]# ls
	cvuqdisk-1.0.9-1.rpm
[root@rac11g1 rpm]# export CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
[root@rac11g1 rpm]# rpm -iv cvuqdisk-1.0.9-1.rpm
	Preparing packages for installation...
	cvuqdisk-1.0.9-1

● OUI起動

  1. 環境変数設定
[root@rac11g1 rpm]# su - grid
[grid@rac11g1 rpm]$ export GRID_BASE=/u01/app/grid
[grid@rac11g1 rpm]$ export LANG=C
  1. Grid Infrastractureのメディアにある runInstallerを実行
[grid@rac11g1 rpm]$ /Media/grid/runInstaller
  1. Download Software Updates画面
    [skip software updates] を選択し、[Next]をクリック
    01.png

  2. Select Installation Option画面
    [Install and Configure ~] を選択し、[Next]をクリック
    02.png

  3. Select Installtaion Type画面
    [Advanced Installation] を選択し、[Next]をクリック
    03.png

  4. Select Product Languages画面
    必要言語 を選択し、[Next]をクリック
    04.png

  5. Grid Plug and Play Information画面
    以下項目を選択し、[Next]をクリック

    ・Cluster Name: Cluster名
    ・SCAN NAME: DNSで名前解決できるSCANホスト名
    ・SCAN Port: SCANリスーナーのPort番号

05.png

  1. Cluster Node Information画面
    インストールするノード情報を入力し、[SSH Connectivity]をクリックして、[Setup]を実行
    gridユーザーでInstall全ノードどうしがパスワード無しssh鍵で接続できるよう自動設定してくれます
    08.png

  2. Successfullyプロンプト
    [OK]をクリックし、[Next]をクリック
    Successfullyしなかった場合は、sshで全ノードssh鍵で接続できるように設定します
    Successfullyしたら、[Advanced Installation] を選択し、[Next]をクリック
    09.png

  3. Specify Network Interface Usage画面
    Interface NameとSubnetが正しいことを確認し、[Next]をクリック
    10.png

  4. Storage OPtion Information画面
    [Oracle Automatic Storage Management (Oracle ASM)] を選択し、[Next]をクリック
    11.png

  5. Create ASM DIsk Group画面
    [Change DIscovery Path] をクリックし、ASMlibで設定したパスが表示されるように「/dev/oracleasm/disks/*」を入力し、[OK]をクリック
    12.png

  6. Create ASM DIsk Group画面
    以下項目を入力し、[Next]をクリック

    ・Disk Group Name: CRS Disk Group名
    ・Redundancy: 冗長度、今回はNormalの3冗長を選択
    ・AU size: AUサイズ
    ・Add disks: CRSを設定するDisklへチェック

13.png

  1. Specify ASM Password画面
    SYS, ASMSNMPユーザーのパスワードを設定し、[Next]をクリック
    14.png

  2. Failure Isolation Support画面
    [Do not use IPMI] を選択し、[Next]をクリック
    15.png

  3. Pricileged Operationg System Groups画面
    各グループを確認し、[Next]をクリック
    16.png

  4. Specify Installation Location画面
    以下項目を入力し、[Next]をクリック

    Oracle Base: ORACE_BASEパスを入力
    Software Location: ORACLE_HOMEパスを入力

17.png

  1. Create Inventory画面
    [Inventory Directory] はデフォルト値のまま、[Next]をクリック
    18.png

  2. Perform Prerequisite Checks画面
    19.png

  3. Perform Prerequisite CHecks画面
    問題がないことを確認し、[Next]をクリック
    21.png

  4. Summary画面
    インストール内容を確認し、[Install]をクリック
    23.png

  5. Install Product画面
    25.png

  6. Execute Configuration scripts画面
    orainstRoot.sh と root.shをまず、node1実行完了してから、node2実行
    ※同時実行禁止
    26.png

・ orainstRoot.sh実行

[root@rac11g1 ~]# /u01/app/oraInventory/orainstRoot.sh
	Changing permissions of /u01/app/oraInventory.
	Adding read,write permissions for group.
	Removing read,write,execute permissions for world.

	Changing groupname of /u01/app/oraInventory to oinstall.
	The execution of the script is complete.

・ root.sh実行
node1実行完了してから、node2実行

  • node1
[root@rac11g1 rpm]# /u01/app/11.2.0/grid/root.sh
		Performing root user operation for Oracle 11g

		The following environment variables are set as:
			ORACLE_HOME=  /u01/app/11.2.0/grid

		Enter the full pathname of the local bin directory: [/usr/local/bin]:
		Copying dbhome to /usr/local/bin ...
		Copying oraenv to /usr/local/bin ...
		Copying coraenv to /usr/local/bin ...


		Creating /etc/oratab file...
		Entries will be added to the /etc/oratab file as needed by
		Database Configuration Assistant when a database is created
		Finished running generic part of root script.
		Now product-specific root actions will be performed.
		Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
		Creating trace directory
		User ignored Prerequisites during installation
		Installing Trace File Analyzer
		OLR initialization - successful
		root wallet
		root wallet cert
		root cert export
		peer wallet
		profile reader wallet
		pa wallet
		peer wallet keys
		pa wallet keys
		peer cert request
		pa cert request
		peer cert
		pa cert
		peer root cert TP
		profile reader root cert TP
		pa root cert TP
		peer pa cert TP
		pa peer cert TP
		profile reader pa cert TP
		profile reader peer cert TP
		peer user cert
		pa user cert
		Adding Clusterware entries to upstart
		CRS-2672: Attempting to start 'ora.mdnsd' on 'rac11g1'
		CRS-2676: Start of 'ora.mdnsd' on 'rac11g1' succeeded
		CRS-2672: Attempting to start 'ora.gpnpd' on 'rac11g1'
		CRS-2676: Start of 'ora.gpnpd' on 'rac11g1' succeeded
		CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac11g1'
		CRS-2672: Attempting to start 'ora.gipcd' on 'rac11g1'
		CRS-2676: Start of 'ora.cssdmonitor' on 'rac11g1' succeeded
		CRS-2676: Start of 'ora.gipcd' on 'rac11g1' succeeded
		CRS-2672: Attempting to start 'ora.cssd' on 'rac11g1'
		CRS-2672: Attempting to start 'ora.diskmon' on 'rac11g1'
		CRS-2676: Start of 'ora.diskmon' on 'rac11g1' succeeded
		CRS-2676: Start of 'ora.cssd' on 'rac11g1' succeeded

		ASMは正常に作成され、起動しました。

		ディスク・グループCRSは正常に作成されました。

		clscfg: -install mode specified
		Successfully accumulated necessary OCR keys.
		Creating OCR keys for user 'root', privgrp 'root'..
		Operation successful.
		CRS-4256: Updating the profile
		Successful addition of voting disk 0c63e51d97114f4abf56beb3dbdc14b6.
		Successful addition of voting disk 7c68c0b9b14f4f6bbf58c8d2fe0c772b.
		Successful addition of voting disk 9852446dc86a4fc9bfa205acdf216afc.
		Successfully replaced voting disk group with +CRS.
		CRS-4256: Updating the profile
		CRS-4266: Voting file(s) successfully replaced
		##  STATE    File Universal Id                File Name Disk group
		--  -----    -----------------                --------- ---------
		1. ONLINE   0c63e51d97114f4abf56beb3dbdc14b6 (/dev/oracleasm/disks/CRS_3) [CRS]
		2. ONLINE   7c68c0b9b14f4f6bbf58c8d2fe0c772b (/dev/oracleasm/disks/CRS_2) [CRS]
		3. ONLINE   9852446dc86a4fc9bfa205acdf216afc (/dev/oracleasm/disks/CRS_1) [CRS]
		Located 3 voting disk(s).
		CRS-2672: Attempting to start 'ora.asm' on 'rac11g1'
		CRS-2676: Start of 'ora.asm' on 'rac11g1' succeeded
		CRS-2672: Attempting to start 'ora.CRS.dg' on 'rac11g1'
		CRS-2676: Start of 'ora.CRS.dg' on 'rac11g1' succeeded
		Configure Oracle Grid Infrastructure for a Cluster ... succeeded
  • Node2
[root@rac11g2 ~]# /u01/app/oraInventory/orainstRoot.sh
			Changing permissions of /u01/app/oraInventory.
			Adding read,write permissions for group.
			Removing read,write,execute permissions for world.

			Changing groupname of /u01/app/oraInventory to oinstall.
			The execution of the script is complete.


		[root@rac11g2 tmp]# /u01/app/oraInventory/orainstRoot.sh
		Changing permissions of /u01/app/oraInventory.
		Adding read,write permissions for group.
		Removing read,write,execute permissions for world.

		Changing groupname of /u01/app/oraInventory to oinstall.
		The execution of the script is complete.
		[root@rac11g2 tmp]# /u01/app/11.2.0/grid/root.sh
		Performing root user operation for Oracle 11g

		The following environment variables are set as:
			ORACLE_OWNER= grid
			ORACLE_HOME=  /u01/app/11.2.0/grid

		Enter the full pathname of the local bin directory: [/usr/local/bin]:
		Copying dbhome to /usr/local/bin ...
		Copying oraenv to /usr/local/bin ...
		Copying coraenv to /usr/local/bin ...


		Creating /etc/oratab file...
		Entries will be added to the /etc/oratab file as needed by
		Database Configuration Assistant when a database is created
		Finished running generic part of root script.
		Now product-specific root actions will be performed.
		Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
		Creating trace directory
		User ignored Prerequisites during installation
		Installing Trace File Analyzer
		OLR initialization - successful
		Adding Clusterware entries to upstart
		CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node rac11g1, number 1, and is terminating
		An active cluster was found during exclusive startup, restarting to join the cluster
		Configure Oracle Grid Infrastructure for a Cluster ... succeeded
  1. Install Product画面
    28.png

  2. Finish
    29.png

■ GI動作確認

● CRS確認

[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/crsctl stat res -t
	--------------------------------------------------------------------------------
	NAME           TARGET  STATE        SERVER                   STATE_DETAILS
	--------------------------------------------------------------------------------
	Local Resources
	--------------------------------------------------------------------------------
	ora.CRS.dg
				ONLINE  ONLINE       rac11g1
				ONLINE  ONLINE       rac11g2
	ora.asm
				ONLINE  ONLINE       rac11g1                  Started
				ONLINE  ONLINE       rac11g2                  Started
	ora.gsd
				OFFLINE OFFLINE      rac11g1
				OFFLINE OFFLINE      rac11g2
	ora.net1.network
				ONLINE  ONLINE       rac11g1
				ONLINE  ONLINE       rac11g2
	ora.ons
				ONLINE  ONLINE       rac11g1
				ONLINE  ONLINE       rac11g2
	--------------------------------------------------------------------------------
	Cluster Resources
	--------------------------------------------------------------------------------
	ora.LISTENER_SCAN1.lsnr
		1        ONLINE  ONLINE       rac11g2
	ora.LISTENER_SCAN2.lsnr
		1        ONLINE  ONLINE       rac11g1
	ora.LISTENER_SCAN3.lsnr
		1        ONLINE  ONLINE       rac11g1
	ora.cvu
		1        ONLINE  ONLINE       rac11g1
	ora.oc4j
		1        ONLINE  ONLINE       rac11g1
	ora.rac11g1.vip
		1        ONLINE  ONLINE       rac11g1
	ora.rac11g2.vip
		1        ONLINE  ONLINE       rac11g2
	ora.scan1.vip
		1        ONLINE  ONLINE       rac11g2
	ora.scan2.vip
		1        ONLINE  ONLINE       rac11g1
	ora.scan3.vip
		1        ONLINE  ONLINE       rac11g1

● ASM接続確認

・asmcmd

[grid@rac11g1 ~]$ export ORACLE_SID=+ASM1
[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/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  NORMAL  N         512   4096  1048576      3069     2143             1023             560              0             Y  CRS/
ASMCMD> exit

・SQL*Plus

[grid@rac11g1 ~]$ export ORACLE_HOME=/u01/app/11.2.0/grid
[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/sqlplus / as sysasm

	SQL*Plus: Release 11.2.0.1.0 Production on Sun Nov 22 09:37:39 2020

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


	Connected to:
	Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
	With the Real Application Clusters and Automatic Storage Management options

	SQL> select Instance_name from v$instance;

		INSTANCE_NAME
		------------------------------------------------
		+ASM1

	SQL> exit

● GI設定確認

[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/olsnodes -i  -n
	rac11g1	1	rac11g1-vip
	rac11g2	2	rac11g2-vip

[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/olsnodes -l -p
	rac11g1	11.11.11.11

[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/oifcfg getif
	eth0  192.168.100.0  global  public
	eth1  11.11.11.0  global  cluster_interconnect


[grid@rac11g1 ~]$ cat /u01/app/11.2.0/grid/install/cluster.ini
	[cluster_info]
	cluster_name=rac11g-cluster

[grid@rac11g1 ~]$ cat /etc/oracle/ocr.loc
	ocrconfig_loc=+CRS
	local_only=FALSE

● SCAN確認

[grid@rac11g2 ~]$ /u01/app/11.2.0/grid/bin/srvctl config scan
	SCAN name: rac11g-scan.oracle.com, Network: 1/192.168.100.0/255.255.255.0/eth0
	SCAN VIP name: scan1, IP: /rac11g-scan.oracle.com/192.168.100.117
	SCAN VIP name: scan2, IP: /rac11g-scan.oracle.com/192.168.100.118
	SCAN VIP name: scan3, IP: /rac11g-scan.oracle.com/192.168.100.119

[grid@rac11g1 ~]$/u01/app/11.2.0/grid/bin/srvctl config scan_listener
	SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
	SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
	SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521

● inventory / インストール先の確認

[grid@rac11g1 ~]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
		<?xml version="1.0" standalone="yes" ?>
		<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.
		All rights reserved. -->
		<!-- Do not modify the contents of this file by hand. -->
		<INVENTORY>
		<VERSION_INFO>
		<SAVED_WITH>11.2.0.1.0</SAVED_WITH>
		<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
		</VERSION_INFO>
		<HOME_LIST>
		<HOME NAME="Ora11g_gridinfrahome1" LOC="/u01/app/11.2.0/grid" TYPE="O" IDX="1">
		<NODE_LIST>
			<NODE NAME="rac11g1"/>
			<NODE NAME="rac11g2"/>
		</NODE_LIST>
		</HOME>
		</HOME_LIST>
		<COMPOSITEHOME_LIST>
		</COMPOSITEHOME_LIST>
		</INVENTORY>


[grid@rac11g1 ~]$cat /u01/app/oraInventory/oraInst.loc
	inventory_loc=/u01/app/oraInventory
	inst_group=oinstall


[grid@rac11g1 ~]$cat /u01/app/oraInventory/ContentsXML/inventory.xml | grep "HOME NAME"
	<HOME NAME="Ora11g_gridinfrahome1" LOC="/u01/app/11.2.0/grid" TYPE="O" IDX="1">

[grid@rac11g1 ~]$cat /u01/app/11.2.0/grid/install/cluster.ini
	[cluster_info]
	cluster_name=rac11g-cluster

● OCR確認

[grid@rac11g1 ~]$cat /etc/oracle/ocr.loc
	ocrconfig_loc=+CRS
	local_only=FALSE

[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/ocrcheck
		Status of Oracle Cluster Registry is as follows :
			Version                  :          3
			Total space (kbytes)     :     262120
			Used space (kbytes)      :       2664
			Available space (kbytes) :     259456
			ID                       :  326447638
			Device/File Name         :       +CRS
											Device/File integrity check succeeded

											Device/File not configured

											Device/File not configured

											Device/File not configured

											Device/File not configured

			Cluster registry integrity check succeeded

			Logical corruption check bypassed due to non-privileged user

● Voting Disk確認

/u01/app/11.2.0/grid/bin/crsctl query css votedisk

[grid@rac11g1 ~]$ /u01/app/11.2.0/grid/bin/crsctl query css votedisk
	##  STATE    File Universal Id                File Name Disk group
	--  -----    -----------------                --------- ---------
	1. ONLINE   a0f9d0b9a6934f6ebfe866061f4fcb72 (/dev/oracleasm/disks/CRS_1) [CRS]
	2. ONLINE   8513208b95504f14bf54f0700b8c5b7b (/dev/oracleasm/disks/CRS_2) [CRS]
	3. ONLINE   055e682ee08d4f50bf6c63a8b76083d1 (/dev/oracleasm/disks/CRS_3) [CRS]
	Located 3 voting disk(s).

■ Database用ASM Disk作成

Database用ASM DIskの +DATAをASM Configuration Assistant (asmca)で作成

● asmcmd実行

[root@rac11g1 ~]# su - grid
[grid@rac11g1 ~]$ asmca

01.png

  1. Disk Groupタブ
    「Disk Group」タブを選択し、[Create]をクリック
    02.png

  2. Create Disk Group画面
    事前に上記ASMLibで作成した「DATA_1」DIsk Pathが出力されます
    以下項目を入力し、[OK]をクリック

    ・Disk Group Names: Disk Group名を入力
    ・Redundancy: 冗長度を設定、今回は冗長化しないので、[External]を選択
    ・Disk Path: 未使用のASMLibで作成したDisk Pathをチェック

03.png

  1. Disk Group: Creation
    Successfullyが出力されたことを確認し、[OK]をクリック
    04.png

  2. Configure ASM: Disk Group画面
    作成したASM Diskがあることを確認し、[Exit]をクリックして完了
    06.png

■ GI関連バックアップ

リストアできるようにCRSとASM関連をバックアップしておきます

● CRSバックアップ

  1. バックアップ
[root@rac11g1 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -manualbackup

	rac11g2     2020/11/18 07:43:08     /u01/app/11.2.0/grid/cdata/rac11g-cluster/backup_20201118_074308.ocr
  1. バックアップ確認
[root@rac11g1 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -showbackup
	PROT-24: Auto backups for the Oracle Cluster Registry are not available

	rac11g2     2020/11/18 07:43:08     /u01/app/11.2.0/grid/cdata/rac11g-cluster/backup_20201118_074308.ocr

● ASM SPFILEバックアップ

  1. ASMの SPFILEバックアップ
[grid@rac11g1 ~]$ sqlplus sys/sysasm as sysdba

	SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 24 09:46:20 2020

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


	Connected to:
	Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
	With the Real Application Clusters and Automatic Storage Management options

	SQL> create pfile='/tmp/initASM.ora' from spfile;

		File created.

	SQL> host cat /tmp/initASM.ora
		+ASM1.asm_diskgroups='DATA'#Manual Mount
		+ASM2.asm_diskgroups='DATA'#Manual Mount
		*.asm_diskstring='/dev/oracleasm/disks/*'
		*.asm_power_limit=1
		*.diagnostic_dest='/u01/app/grid'
		*.instance_type='asm'
		*.large_pool_size=12M
		*.remote_login_passwordfile='EXCLUSIVE'
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?