ORACLE
HOME > DB > ORACLE
2018.05.26 / 01:36

ubuntu 에 oracle 11g Release2 설치 -3 출처: http://shinyul.tistory.com/11?category=541650 [시작...]

인사이드자바
추천 수 14

해당 게시글은 http://ioriy2k.pe.kr/archives/815 에서 퍼왔습니다.

참고 했던 게시물중 가장 정확한 게시물 이였습니다. 문제시 삭제 하도록 하겠습니다.




1. System이 시작될 때 Oracle을 자동으로 실행하기

Oracle을 설치한 System이 Boot할 때마다 자동으로 Oracle Database를 실행할 수 있도록 Init Script를 작성하여 등록하면 Oracle을 실행할 때의 여러 명령어를 입력하는 귀찮음을 줄일 수 있습니다. 먼저 dbstart와 같은 명령에서 Database Instance를 자동으로 실행할 수 있도록 /etc/oratab을 수정합니다. 마지막 : 뒤에 N을 Y로 고치고 저장합니다.

1
2
3
4
$ su - oracle
$ vi /etc/oratab

orcl11:/opt/oracle/product/11.2.0/db_1:Y

그 다음, 아래와 같은 Init Script를 작성합니다. 몇 가지 변수가 Script내에 설정되어 있는데, System에 설치된 경로가 다르다면 변수의 값을 각자 설정에 맞게 수정하시면 됩니다. (ORACLE_BASE, ORACLE_HOME)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$ sudo vi /etc/init.d/oracle

#!/bin/bash
#
# /etc/init.d/oracle
#
# Run-level Startup script for the Oracle Listener and Instances
# It relies on the information on /etc/oratab

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_OWNR=oracle
export PATH=$PATH:$ORACLE_HOME/bin

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi

case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
touch /var/lock/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac

exit 0

$ sudo chmod 755 /etc/init.d/oracle

이제 마지막으로 Init script를 rc에 등록합니다. Ubuntu에서는 update-rc.d 명령을 사용하면 쉽게 등록할 수 있습니다.

1
$ sudo update-rc.d oracle defaults

만약, System 실행 시 자동으로 실행하고 싶지 않다면 아래와 같은 명령을 실행합니다.

1
$ sudo update-rc.d -f oracle remove

그리고 Oracle 서비스를 종료하고 싶으면 다음과 같이 입력합니다.

1
$ sudo service oracle stop

2. System에 있는 모든 User가 Oracle을 사용할 수 있도록 만들기

Oracle Database 설치 시에 생성한 계정인 oracle은 DBA를 위한 계정으로 Database의 모든 것을 설정할 수 있는 계정입니다. 그 외의 dba Group에 속하지 않는 계정들은 일반적으로 DBA가 주어진 권한에 따라 sqlplus나 그 외의 Tool을 사용할 수 있습니다. 이것을 System 전역의 모든 User가 사용하게 하고 싶다면/etc/profile.d에 다음과 같은 환경변수를 저장하고, Rebooting하면 됩니다. (물론 Test나 Study 용도로는 편리하지만, 실제로 사용하기에는 그다지 좋은 방법은 아닙니다.)

1
2
3
4
5
6
$ sudo vi /etc/profile.d/oracle.sh

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl11
export PATH=$PATH:$ORACLE_HOME/bin

그리고 System 전역으로 Oracle의 각 명령들을 사용하려면 Library Path를 적용해야 합니다. Ubuntu는 각 Library Path를 저장하기 위한 Directory인 /etc/ld.so.conf.d에 아래와 같이 경로를 적은 File을 두면 System 전역에 Library Path가 설정됩니다.

1
2
3
4
5
$ sudo vi /etc/ld.so.conf.d/oracle.conf

/opt/oracle/product/11.2.0/db_1/lib

$ sudo ldconfig

3. DB 사용을 위한 일반 계정 생성하기

Database를 접속하기 위한 일반 계정을 생성하기 위해서 먼저 dba인 oracle 계정에서 SYSDBA권한으로 다음과 같이 접속합니다.

1
2
$ su - oracle
$ sqlplus / as sysdba

새로 생성할 일반 계정을 위한 Tablespace를 먼저 생성합니다. Tablespace는 User에 분양하기 위한 Database의 부분 집합 정도로 생각하면 될 것 같네요. 실제로 Tablespace 내에는 User가 생성한 Table, Index, Cluster 등이 들어있습니다. 아래의 SQL문은 예시로 제 입맛에 맞게 만든 것입니다. 기본크기로 300M를 할당하고 자동 증가와 최대크기를 설정했습니다.

1
2
3
4
CREATE TABLESPACE "<TABLESPACE 이름>"
DATAFILE '/home/oracle/<DATAFILE 이름>.dbf'
SIZE 300M
AUTOEXTEND ON NEXT 100M MAXSIZE 1000M;

그 다음 사용자를 생성합니다. Default Tablespace로 방금 전에 생성한 Tablespace 이름을 넣으면 사용자가 생성한 DB는 모두 해당 Tablespace에 저장됩니다.

1
2
3
CREATE USER <USER ID>
IDENTIFIED BY <PASSWORD>
DEFAULT TABLESPACE "<생성한 TABLESPACE 이름>";

그리고 생성한 사용자에게 아래와 같이 기본적인 권한을 부여합니다.

1
GRANT CONNECT,resource,CREATE VIEW TO <USER ID>;

이제 생성한 계정을 Test하기 위해서 아래의 명령을 입력한 후, 생성한 ID와 Password를 입력합니다.

1
CONNECT

4. sqlplus에서 한글을 제대로 표시하려면..

sqlplus에서 한글로 입력된 Record를 보거나 삽입할 경우 글자가 제대로 표시되지 않는 문제가 있습니다. 설치 시에 DB의 Charset을 AL32UTF8으로 설정했다면(이전 Post의 Step12. Configuration Options 참조), 다음과 같은 환경변수를 ~/.bashrc 또는 위의 System 전역설정을 한 경우 /etc/profile.d/oracle.sh에 추가합니다.

1
export NLS_LANG=KOREAN_KOREA.AL32UTF8

5. Oracle 11g를 강제로 System에서 삭제하는 방법

설치 시에 문제가 생겼거나 System에서 Oracle 강제로 삭제하고 싶다면 Command-line에서 다음과 같이 입력한 후, System을 재시작하면 됩니다.

1
2
3
4
5
6
7
8
9
10
$ sudo -s -H
$ service oracle stop
$ rm -rf /opt/oracle /opt/oraInventory
$ rm -f /etc/oratab /etc/oraInst.loc
$ find /etc -name '*oracle*' -type f -exec rm -f {} \;
$ cd /usr/local/bin
$ rm -f coraenv dbhome oraenv
$ userdel -rf oracle
$ groupdel oinstall
$ groupdel dba

6. Oracle 11g Release 2 설치하기 Post를 모두 마치면서..

2000년도 초반에 어렵게 Linux를 설치하고 필요한 RPM을 여기저기서 구해서 설치해서 겨우겨우 설치했던 Oracle 8i의 기억을 떠올려봅니다. 그 때에 비해서는 지금은 너무나도 편하네요. 그동안 이래저래 많은 삽질을 거치면서 실력이 늘어서이기도 하겠지만, 예전에 비해 Oracle이 DB자체의 기술을 발전시키는 것을 넘어 외적인 것에도 신경을 쓰지 시작했기 때문인 것 같네요. 그리고 Linux 환경이 예전보다 많이 편해진 것도 한 몫 하는 것 같습니다. 그럼 즐거운 DB 생활(?) 되시길..



출처: http://shinyul.tistory.com/11?category=541650 [시작...]