オラクる。

oracle専門ブログにしてみようかな~っと

2015年04月

VNCを使うことによりWindowsからLinuxのコンソールに接続することが出来ます。
RHEL6を例にして説明してみます。
今回はrootユーザがVNC出来るように設定します。

[root@node01 ~]# yum install vnc-server

パッケージをインストールします。

[root@node01 ~]# vncserver

You will require a password to access your desktops.

Password:
Verify:
xauth:  creating new authority file /root/.Xauthority

New 'node01.test.com:1 (root)' desktop is node01.test.com:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/node01.test.com:1.log


VNCサーバに接続する時のパスワードを設定します。
VNC接続したいユーザーでログインしてから設定します。

[root@node01 ~]# cat /etc/sysconfig/vncservers

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 800x600"


VNCで接続する時の解像度を設定します。

[root@node01 ~]# cat .vnc/xstartup

#twm &
exec gnome-session


VNC接続時にgnomeが起動するようにします。

[root@node01 ~]# chkconfig vncserver on

[root@node01 ~]# service vncserver restart
VNC サーバー を停止中: 1:root                              [  OK  ]
VNC サーバー を起動中: 1:root
New 'node01.test.com:1 (root)' desktop is node01.test.com:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/node01.test.com:1.log

                                                           [  OK  ]


VNCの自動起動設定、サービスの起動を行ないます。
これで、VNCで接続できるようになりました。

000000

000001

000002

RealVNCを利用して接続してみました。

SSHで接続する際に、パスワードを入力せずに接続する方法です
クライアントの公開鍵をサーバに転送することで、サーバはクライアントを公開鍵で認証することが出来ます。

・クライアントの設定

[grid@node1 ~]$ mkdir .ssh
[grid@node1 ~]$ chmod 700 .ssh/


ホームディレクトリに.sshというフォルダを作成し、パーミッションを700に設定します。

[grid@node1 ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Your identification has been saved in /home/grid/.ssh/id_dsa.
Your public key has been saved in /home/grid/.ssh/id_dsa.pub.
The key fingerprint is:
95:94:02:2d:22:87:77:ee:70:2b:04:80:e4:75:cc:ce grid@node1.test.com
The key's randomart image is:
+--[ DSA 1024]----+
|+o oo..o  ..     |
|o = =oo o...     |
| . =o+ . .o      |
|    oEo  .       |
|   . + .S        |
|    . o          |
|     .           |
|                 |
|                 |
+-----------------+


ssh-keygenコマンドで鍵を作成します。
キーの保管先、パスフレーズの入寮が求められたら、いずれもenterだけ押してください。

[grid@node1 ~]$ ls -al .ssh/
合計 16
drwx------. 2 grid oinstall 4096  4月 13 23:04 2015 .
drwx------. 5 grid oinstall 4096  4月 13 23:03 2015 ..
-rw-------. 1 grid oinstall  668  4月 13 23:04 2015 id_dsa
-rw-r--r--. 1 grid oinstall  609  4月 13 23:04 2015 id_dsa.pub


.sshフォルダに秘密鍵と公開鍵が作成されました。

[grid@node1 ~]$ scp .ssh/id_dsa.pub root@172.17.9.101:/tmp
The authenticity of host '172.17.9.101 (172.17.9.101)' can't be established.
RSA key fingerprint is 68:0f:08:5e:19:10:92:b6:0f:36:3d:0f:92:00:43:e4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.9.101' (RSA) to the list of known hosts.
root@172.17.9.101's password:
id_dsa.pub                                    100%  609     0.6KB/s   00:00


作成した公開鍵をサーバに転送します。

・サーバ側の設定

[grid@node02 ~]$ mkdir .ssh
[grid@node02 ~]$ chmod 700 .ssh/


サーバ側でもホームディレクトリに.sshフォルダを作成します。

[grid@node02 ~]$ cd .ssh/
[grid@node02 .ssh]$ ls
[grid@node02 .ssh]$ cat /tmp/id_dsa.pub > authorized_keys

クライアントの公開鍵の内容を.ssh配下のauthorized_keysに記載します。

[root@node02 ~]# vi /etc/ssh/sshd_config

(省略)
PubkeyAuthentication yes
(省略)


sshd_configに「#PubkeyAuthentication yes」という項目があるので、コメントを解除します。

[root@node02 ~]# service sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]


SSHサービスを再起動します。
これでパスワード無しのSSH接続が出来るようになりました。

[grid@node01 ~]$ ssh 172.17.9.101
The authenticity of host '172.17.9.101 (172.17.9.101)' can't be established.
RSA key fingerprint is 68:0f:08:5e:19:10:92:b6:0f:36:3d:0f:92:00:43:e4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.9.101' (RSA) to the list of known hosts.
Last login: Mon Apr 13 23:19:39 2015 from 172.17.9.100
[grid@node02 ~]$


初回だけyesと入力する必要があります。

Apr 13 23:12:35 node02 sshd[6096]: Accepted publickey for grid from 172.17.9.100
 port 61464 ssh2

サーバ側の/var/log/secureには公開鍵を利用したというメッセージが記録されています。

vCenterで仮想マシンをクローンすると、クローンした先の仮想マシンでNICが使えなくなるというのがあります。
それはMACアドレスが新しくなるためで、主にRHEL6やCentOS6とかで起こる問題です。
「/etc/udev/rules.d/70-persistent-net.rules」ファイルにMACアドレスが記載されているので、それを修正する必要があります。

000000
000001

例えば、NICを3枚付けていた仮想マシンをクローンした場合です。
元々のeth0,1,2にeth3,4,5が追加されています。
新しくなったMACアドレスはこちらに紐付けられています。
eth3,4,5にはifcfg-ethxの設定ファイルが存在しないので、ネットワークが作動しません。

000002

修正するにはまず上記のファイルを綺麗にします。
そして、再起動

000003

再起動後、新しいMACアドレスがeth0,1,2に紐付けられました。

今日は制御ファイルが全損した場合のリストア方法です。
バックアップファイルのコピー→REDOファイルを利用した完全リカバリ→RESETLOGS付きのDBオープンと言った流れになります。

SQL> ALTER DATABASE BACKUP CONTROLFILE TO
  2  '/data/backup/control1.bak';

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

SQL> !ls -alh /data/backup
合計 9.4M
drwxr-xr-x  2 oracle oinstall 4.0K  4月  9 00:29 2015 .
drwxrwxr-x 10 oracle oinstall 4.0K  4月  6 00:55 2015 ..
-rw-r-----  1 oracle oinstall 9.4M  4月  9 00:29 2015 control1.bak


バックアップ取得済みです。

[oracle@test01 backup]$ rm -rf /u01/app/oracle/oradata/orcl/control01.ctl
[oracle@test01 backup]$ rm -rf /u01/app/oracle/oradata/orcl/control02.ctl

制御ファイルを削除して擬似障害を発生させます。

SQL> shutdown abort
ORACLEインスタンスがシャットダウンされました。


起動している場合はインスタンスを強制停止します。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             641730552 bytes
Database Buffers          188743680 bytes
Redo Buffers                6590464 bytes
ORA-00205: ?????????????????????????????????????????

SQL> select status from v$instance;

STATUS
------------------------------------
STARTED


インスタンスは起動しますが、制御ファイルが存在しないためオープンできません。

[oracle@test01 backup]$ cp /data/backup/control1.bak /u01/app/oracle/oradata/orcl/control01.ctl
[oracle@test01 backup]$ cp /data/backup/control1.bak /u01/app/oracle/oradata/orcl/control02.ctl

バックアップファイルから制御ファイルをリストアします。

SQL> ALTER DATABASE MOUNT;

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

SQL> select status from v$instance;

STATUS
------------------------------------
MOUNTED

データベースをマウントします。

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;
ORA-00279: ??9618672(04/09/2015 00:43:37???)??????1?????
ORA-00289:
????????????:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_1_876530613.dbf
ORA-00280: ??9618672(????1)?????1???????


ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/orcl/redo01.log
ログが適用されました。
メディア・リカバリが完了しました。


完全リカバリを実施して、redoログを適用します。
(そのため、この方法でリストアする場合はredoログが完全に揃っている必要があります。)

SQL> ALTER DATABASE OPEN RESETLOGS;

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

SQL> select status from v$instance;

STATUS
------------------------------------
OPEN


RESETLOGSキーワード付きでデータベースをオープンします。
これでリストア完了です。

多重化した制御ファイルの1つが損失すると、制御ファイルにアクセスがあった時点でDBが停止します。
起動しようにもエラーが発生し、DBをオープン状態にすることが出来ません。
しかし、1つは生きているので、生きている制御ファイルをコピーすることでリカバリすることが出来ます。

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl

[oracle@test01 ~]$ rm -rf /u01/app/oracle/oradata/orcl/control02.ctl


制御ファイルを一つ消してみます。

SQL> shutdown abort
ORACLEインスタンスがシャットダウンされました


DBが停止していない場合はabortでDBを強制停止します。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             641730552 bytes
Database Buffers          188743680 bytes
Redo Buffers                6590464 bytes
ORA-00205: ?????????????????????????????????????????


SQL> select STATUS from v$instance;

STATUS
------------------------------------
STARTED

DBを起動しようとすると、nomount(STARTED)状態までしか遷移しません。

[oracle@test01 ~]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control02.ctl

SQL> ALTER DATABASE MOUNT;

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

SQL> ALTER DATABASE OPEN;

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

SQL> select STATUS from v$instance;

STATUS
------------------------------------
OPEN

生きている制御ファイルをOSのcopyコマンドでコピーすることで、DBをopen状態で完全に起動することが出来ました。

ALTER DATABASE   MOUNT
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control02.ctl'
ORA-27037: unable to obtain file status

制御ファイル損失時のアラートログファイルです。

このページのトップヘ