[Oracle]メモ:複数インスタンスへの接続をaliasで切り替える。

1台のサーバに複数のインスタンスが同居している環境だと、sqlplus / as sysdbaでデータベースに接続する際、都度接続したいデータベースに合わせて環境変数ORACLE_SIDを切り替えなければなりません。これは面倒です。そんなときはaliasに登録してしまうと楽になります。

alias登録

コマンド

alias ufo='(export ORACLE_SID=UFO1; sqlplus / as sysdba)'

※ここでalias名をufoとしていますが特に決まりはありません。ただし、既存のコマンド等と同じ名前にすると予期せぬ挙動をするので避けましょう。

実際にはこれを.bash_profileに登録しておきますそうするとufoと打ち込むだけでデータベースに接続できます。

では実際にやってみます。

実行例

[oracle@rac-z1 ~]$ 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/.local/bin:$HOME/bin

export PATH
if [ -t 0 ]; then
   stty intr ^C
fi
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export NLS_LANG=Japanese_Japan.AL32UTF8
export PATH=$ORACLE_HOME/bin:$PATH

alias ufo='(export ORACLE_SID=UFO1; sqlplus / as sysdba)'
alias ufos='(export ORACLE_SID=UFOS1; sqlplus / as sysdba)'
[oracle@rac-z1 ~]$ 
[oracle@rac-z1 ~]$ ps -ef | grep ora_smon
oracle    6622     1  0 00:14 ?        00:00:00 ora_smon_UFO1
oracle    6751     1  0 00:14 ?        00:00:00 ora_smon_UFOS1
oracle   19097  7311  0 00:59 pts/0    00:00:00 grep --color=auto ora_smon
[oracle@rac-z1 ~]$ 
[oracle@rac-z1 ~]$ echo $ORACLE_SID

[oracle@rac-z1 ~]$ ufo

SQL*Plus: Release 19.0.0.0.0 - Production on 金 10月 18 00:59:37 2019
Version 19.3.0.0.0

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



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
UFO1

SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0との接続が切断されました。
[oracle@rac-z1 ~]$ echo $ORACLE_SID

[oracle@rac-z1 ~]$ 
[oracle@rac-z1 ~]$ ufos

SQL*Plus: Release 19.0.0.0.0 - Production on 金 10月 18 01:00:33 2019
Version 19.3.0.0.0

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



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
UFOS1

SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0との接続が切断されました。
[oracle@rac-z1 ~]$ echo $ORACLE_SID

[oracle@rac-z1 ~]$ 

ポイントはコマンドを()で包むことです。こうすることでコマンドが子シェル上で実行され、実行後に環境変数 ORACLE_SID が残らない事です。

[root@rac-z1 ~]# pstree -p 7311
bash(7311)───bash(26270)───sqlplus(26271)─┬─oracle_26272_uf(26272)
                                          └─{sqlplus}(26273)
[root@rac-z1 ~]# 

応用編

アラートログをtailする場合などもailasを活用すると楽に実施できます。

alias ufolog='(export ORACLE_SID=UFO1; tail -f /u01/app/oracle/diag/rdbms/`echo ${ORACLE_SID%[1,2]} | tr [A-Z] [a-z]`/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log)'
[oracle@rac-z1 ~]$ ufolog
Closing scheduler window
Closing Resource Manager plan via scheduler window
Clearing Resource Manager CDB plan via parameter
2019-10-21T03:00:17.862706+09:00
Thread 1 advanced to log sequence 80 (LGWR switch)
  Current log# 2 seq# 80 mem# 0: +DATA/UFO/ONLINELOG/group_2.265.1015629631
2019-10-21T03:00:18.064622+09:00
TT02 (PID:7994): SRL selected for T-1.S-80 for LAD:2
2019-10-21T03:00:18.451689+09:00
ARC1 (PID:7794): Archived Log entry 244 added for T-1.S-79 ID 0xcdfaf77c LAD:1


おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です