2009년 5월 14일 목요일

원격지에서 오라클서버 시동/종료

원격지에서 오라클서버 시동/종료
 
 

원격지에서 오라클서버 시동/종료

사실 기본적인 내용이지만, 모르는 사람들이 많은 것 같아 적어본다.
여기서 다루는 내용은 원격지 오라클DB서버를 자신의 컴퓨터에서 시동/종료하는 것이다.

리눅스:
192.168.0.2
Oracle EE 8.1.7
ORACLE_SID=db


[리눅스에서 작업]

1. init.ora에서 remote_login_passwordfile = remote 확인
일단, 자신의 초기화패러미터파일(initSID.ora)에서 remote_login_passwordfile패러미터가 exclusive값으로
설정되어 있는지 확인한다.

[oracle@linux oracle]$ cd $ORACLE_HOME/dbs
[oracle@linux dbs]$ grep remote_login_passwordfile initdb.ora
remote_login_passwordfile = exclusive
[oracle@linux dbs]$

대부분 위와 같은 값을 가지고 있을 것이다.
디폴트로, 보통 아무런 지정을 하지 않았다면 exclusive값을 가지고 있고,
원격지 로그인이 가능한 놈은 sys, internal 두 놈이 있다.
여기에 다른 오라클 계정들을 추가할 수도 있는데 이 글의 후반부에 언급하겠다.


2. 리스너를 실행
원격에서 연결하려면, 당연히 리스너가 실행되어 있어야 한다.

[oracle@linux dbs]$ lsnrctl start

LSNRCTL for Linux: Version 8.1.7.0.0 - Production on 19-APR-2003 20:26:32

(c) Copyright 1998 Oracle Corporation.  All rights reserved.

Starting /u01/app/oracle/product/8.1.7/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 8.1.7.0.0 - Production
System parameter file is /u01/app/oracle/product/8.1.7/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/8.1.7/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.2)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 8.1.7.0.0 - Production
Start Date                19-APR-2003 20:26:32
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  OFF
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/8.1.7/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/8.1.7/network/log/listener.log
Services Summary...
  db            has 1 service handler(s)
The command completed successfully
[oracle@linux dbs]$


[윈도에서 작업]

3. init.ora파일을 자신의 컴퓨터로 복사
리눅스에 있는 init.ora파일을 자신의 컴퓨터로 복사해 온다.
우리는 윈도에서 리눅스에 존재하는 오라클서버를 시동할때 이것을 이용할 것이다.

C:\oracle\admin>ftp 192.168.0.2
Connected to 192.168.0.2.
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
User (192.168.0.2:(none)): oracle
331 Please specify the password.
Password:
230 Login successful. Have fun.
ftp> bin
200 Binary it is, then.
ftp> cd /u01/app/oracle/product/8.1.7/dbs
250 Directory successfully changed.
ftp> get initdb.ora
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for initdb.ora (4426 bytes).
226 File send OK.
ftp: 4426 bytes received in 0.00Seconds 4426000.00Kbytes/sec.
ftp> quit
221 Goodbye.

C:\oracle\admin>


4. 원격지 DB를 기동/종료
C:\oracle\admin>type C:\oracle\ora81\network\ADMIN\tnsnames.ora
LINUXDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (COMMUNITY = TCP_COMM)(PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = db)
      (GLOBAL_NAME = db.world)
    )
  )

sqlplus실행부분이 빠져서 추가했음(2003-07-30)
C:\oracle\admin>sqlplus /nolog

SQL*Plus: Release 8.1.7.0.0 - Production on 수 Jul 30 22:24:24 2003

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

SQL> connect sys/change_on_install@linuxdb as sysoper
휴지 인스턴스에 접속되었습니다.
SQL> startup pfile=c:\oracle\admin\initdb.ora
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area   30064800 bytes
Fixed Size                    73888 bytes
Variable Size              13041664 bytes
Database Buffers           16777216 bytes
Redo Buffers                 172032 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
INTERNAL                       TRUE  TRUE
SYS                            TRUE  TRUE

SQL> shutdown
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL>


다른 계정으로 시동/종료
v$pwfile_users에 존재하는 internal, sys는 원격지 시동/종료가 가능하다.
그럼, sys사용자 대신 system으로 시동/종료해 보도록 하자.

SQL> startup pfile=c:\oracle\admin\initdb.ora
ORACLE 인스턴스가 시작되었습니다.
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> connect sys/change_on_install@linuxdb as sysdba sysoper권한을 주기 위해선 sysdba권한이 필요하다.
연결되었습니다.
SQL> grant sysoper to system; 시동/종료는 sysoper권한으로 충분하다. sysdba권한은 되도록이면 남용하지 않는 것이 좋다.

권한이 부여되었습니다.

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
INTERNAL                       TRUE  TRUE
SYS                            TRUE  TRUE
SYSTEM                         FALSE TRUE

SQL> shutdown
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> connect system/change_on_install@linuxdb as sysoper
휴지 인스턴스에 접속되었습니다.
SQL> startup pfile=c:\oracle\admin\initdb.ora
ORACLE 인스턴스가 시작되었습니다.
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> shutdown
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL>


PS>
리눅스에서 부팅시마다 리스너를 실행토록 하려면 다음과 같이 해둔다.
[root@linux root]# cat >> /etc/rc.d/rc.local
su - oracle -c "/u01/app/oracle/product/8.1.7/bin/lsnrctl start"
[root@linux root]#


[2003-07-30 추가]
DB서버를 제어(시동/종료)하는 윈도클라이언트에서, DB서버내의 리스너가 정상적으로 실행되어 있는지는
'lsnrctl statux 서비스이름'으로 파악할 수 있다. 물론 간단히 tnsping으로도 확인할 수 있을 것이다.

C:\oracle\admin>lsnrctl status linuxdb

LSNRCTL for 32-bit Windows: Version 8.1.7.0.0 - Production on 30-JUL-2003 22:29:25

(c) Copyright 1998 Oracle Corporation.  All rights reserved.

(DESCRIPTION=(ADDRESS=(COMMUNITY=TCP_COMM)(PROTOCOL=TCP)(HOST=192.168.0.2)(PORT=1521))(CONNECT_DATA=
(SID=db)(GLOBAL_NAME=db.world)(SERVER=DEDICATED)))에 연결되었습니다
리스너의 상태------------------------
별칭                  LISTENER
버전                  TNSLSNR for Linux: Version 8.1.7.0.0 - Production
시작 날짜          30-JUL-2003 22:06:07
업타임                    0 일 0 시간. 19 분. 0 초
트레이스 수준      off
보안               OFF
SNMP                      OFF리스너 매개변수 파일   /u01/app/oracle/product/8.1.7/network/admin/list
ener.ora
리스너 로그 파일              /u01/app/oracle/product/8.1.7/network/log/listener.log
서비스 요약...
  db            has 1 서비스 핸들러
명령이 성공적으로 수행되었습니다

C:\oracle\admin>


This article comes from dbakorea.pe.kr (Leave this line as is)  

댓글 없음:

댓글 쓰기