[21.02.02 수정] CentOS 7에 Oracle 11g 설치 완벽정리!
– 사전준비
Oracle 11g 파일을 준비합니다.
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
들어갈때마다 페이지 구성이 바뀌는 오라클 홈페이지에서 Oracle Database 11g Release 2 중 Linux x86-64(64비트) 혹은 Linux-x86(32비트)를 다운로드 받습니다.
File1, File2 모두 다운받아주세여
소유한 리눅스의 비트를 확인하는 명령어는 다음과 같습니다.
[root@localhost ~]# getconf LONG_BIT
– 설치 시작
1. 의존 라이브러리 설치
root 계정으로 설치합니다.
yum -y install compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel
yum -y install glibc glibc-common glibc-devel glibc-headers gcc gcc-c++ libaio-devel
yum -y install libaio libgcc libstdc++ libstdc++ make sysstat unixODBC unixODBC-devel
yum -y install unzip
yum -y install compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel
마지막에 Complete! 문구가 출력됐는지 확인합니당.
(Nothing to do 라고 출력이 되면 이미 최신버전으로 다운로드가 되어있는것을 의미합니다.)
** 21.02.02 추가 **
[ 오류 내용 ]
위의 명령어를 실행할때 다음과 같은 오류가 발생할 경우가 있습니다.YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/arch combination/removing mirrorlist with no valid mirrors: /var/cache/yum/i386/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: baseCentOS6 버전 업데이트 지원이 종료되면서 yum update 등 명령어 사용 시 발생합니다.
이때, 해결방법을 알려드리겠습니다.
32bit, 64bit 에 따라 명령어가 다르니 getconf LONG_BIT명령어를 통해 리눅스의 비트를 확인해주세여![ 해결방법 ]
// 32bit
[root@localhost ~]# echo “https://vault.centos.org/6.10/os/i386/” > /var/cache/yum/i386/6/base/mirrorlist.txt
[root@localhost ~]# echo “http://vault.centos.org/6.10/extras/i386/” > /var/cache/yum/i386/6/extras/mirrorlist.txt
[root@localhost ~]# echo “http://vault.centos.org/6.10/updates/i386/” > /var/cache/yum/i386/6/updates/mirrorlist.txt// 64bit
[root@localhost ~]# echo “https://vault.centos.org/6.10/os/x86_64/” > /var/cache/yum/x86_64/6/base/mirrorlist.txt
[root@localhost ~]# echo “http://vault.centos.org/6.10/extras/x86_64/” > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
[root@localhost ~]# echo “http://vault.centos.org/6.10/updates/x86_64/” > /var/cache/yum/x86_64/6/updates/mirrorlist.txt명령어 입력 후, 다음 명령어 실행해주세염
[root@localhost ~]# yum update참고로 열라 오래걸리더라고여…
update가 모두 끝나면 에러났던 위의 yum install 설치 명령어들 다시 입력하면 잘 설치됩니다!
2. 파라미터 및 유저 리소스 설정
1) 커널 파라미터 값을 설정합니다.
[root@localhost ~]# vi /etc/sysctl.conf
다음과 같은 값을 추가합니다.
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 10523004
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128fs.aio-max-nr = 1048576
fs.file-max = 6815744net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
변경 후 커널 파라미터 값을 적용시킵니다.
[root@localhost ~]# /sbin/sysctl -p
2) 유저의 자원 사용 제한값을 설정합니다.
[root@localhost ~]# vi /etc/security/limits.conf
해당 파일 맨 밑에 추가해주세염
oracle soft nproc 2048
oracle hard nproc 65536
oracle soft nofile 1024
oracle hard nofile 65536
3) SELINUX 설정을 해제합니다.
[root@localhost ~]# vi /etc/selinux/config
다음과 같이 변경합니다.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=disabled
3. 유저 생성, 환경변수 설정, 권한 설정
오라클을 사용할 유저를 생성하고 패스워드를 설정합니다.
[root@localhost ~]# groupadd dba
[root@localhost ~]# useradd -g dba oracle
[root@localhost ~]# passwd oracle
오라클을 설치할 디렉터리를 생성하고 위에서 만든 oracle 계정에 권한을 부여합니다.
[root@localhost ~]# mkdir -p /app/oracle
[root@localhost ~]# chown -R oracle:dba /app
[root@localhost ~]# chmod -R 775 /app
oracle 계정으로 접속하여 변수를 저장합니다.
[root@localhost ~]# su – oracle
[oracle@localhost ~]$ vi .bash_profile
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin# alias
alias ss=’sqlplus / as sysdba’
4. ORACLE 설치하기
FileZilla나 MobaXterm을 이용해서 로컬 컴퓨터에서 다운받은 오라클 파일을 리눅스 서버로 쉽게 옮길수 있지만
모르시는 분들은 밑에 더보기 란을 참고해서 명령 프롬프트(cmd)를 이용해 파일을 옮겨주세염
다운로드 받은 설치파일의 압축을 해제합니다.
[oracle@localhost ~]$ unzip linux.x64_11gR2_database_1of2.zip
[oracle@localhost ~]$ unzip linux.x64_11gR2_database_2of2.zip
압축 해제한 뒤 설치 디렉터리에서 실행합니다.
[oracle@localhost ~]$ su – root
암호 :
[root@localhost ~]# xhost +
[root@localhost ~]# su – oracle
[oracle@localhost ~]$ cd database
[oracle@localhost database]$ ./runInstaller
※ xhost + 했을 때 command not found 또는 unable to open display “” 뜨시는 분들은
[root@localhost ~]# yum install xorg*
[root@localhost ~]# export DISPLAY=localhost:0.0
[root@localhost ~]# su – oracle
[oracle@localhost ~]$ export DISPLAY=localhost:0.0
[oracle@localhost ~]$ cd database
[oracle@localhost database]$ ./runInstaller>>>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<
에러가 날 경우 켜져있는 리눅스 서버를 모두 종료하고 다시 실행해주세요[oracle@localhost ~]$ cd database
[oracle@localhost database]$ ./runInstaller
위에처럼 한글이 깨지면 밑에 사진을 참고해서 우선 종료해줍니다.
영어 설정하고 다시 실행 해줄게여
[oracle@localhost database]$ export LANG=C
[oracle@localhost database]$ export LC_ALL=C
[oracle@localhost database]$ ./runInstaller
체크 해제하고 Next (뭐라 창 뜨면 걍 yes하고 넘겨도됩니다)
데이터베이스 소프트웨어만 설치하는것으로 설정하고 Next
Single instance 웅앵웅 체크 Next
항구거 추가 후 ㄴㅅㅌ
Enterprise Edition 선택 후 ㄴㅅㅌ
아까 위에서 ORACLE_HOME 변수 선언해줬쥬? 경로값 확인 후 ㄴㅅㅌ
이것도 아까 위에서 유저 생성할대 부여한 Group과 Inventory 경로 확인 후 ㄴㅅㅌ
그룹명 확인 후 ㄴㅅㅌ
Ignore All 체크 후 ㄴㅅㅌ
최종 설정 값 확인 후 Finish
아래와 같이 설치가 잘 되다가
84% 쯤에 아래와 같은 에러가 발생하길래
설치중인 창을 끄지말고 새로 창을 열어서 oracle 계정을 로그인하고 저기 경로로 갑니다.
[oracle@localhost ~]$ cd /app/product/11.2.0/dbhome_1/ctx/lib
[oracle@localhost lib]$ vi ins_ctx.mk
아래와 같은 구문을 찾습니다.
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
아래와 같이 수정하고 저장합니다.
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
Retry 버튼을 선택해서 재시도합니다.
잘되다가 또 다른 에러가 발생하네염
또 저기 경로로 가서 파일을 수정해줍니다.
[oracle@localhost ~]$ cd /app/product/11.2.0/dbhome_1/sysman/lib
[oracle@localhost lib]$ vi ins_emagent.mk
아래와 같은 구문을 찾아서
$(SYSMANBIN) emdctl:
$(MK_EMAGENT_NMECTL)
아래와 같이 수정하고 저장합니다.
$(SYSMANBIN) emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
Retry 버튼을 선택해서 재시도합니다. 잘되는군염
완료될때쯤 쉘 스크립트 실행하라는 안내창이 뜹니다.
하라는대로 따라하면됩니다. 새 창을 열어서 root 계정으로 실행해줍니다.
[root@localhost ~]# /usr/oracle/oraInventory/orainstRoot.sh
Changing permissions of /app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.Changing groupname of /app/oraInventory to dba.
The execution of the script is complete.
[root@localhost ~]# /usr/oracle/app/product/11.2.0/dbhome_1/root.sh
Running Oracle 11g root.sh script…The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /app/oracle/product/11.2.0/dbhome_1Enter the full pathname of the local bin directory: [/usr/local/bin]: [ENTER]키 누르세용
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.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
설치가 완료되면 창을 종료하고 환경변수를 적용합니다.
[oracle@localhost database]$ source ~/.bash_profile
5. 리스너 생성
다음 명령어로 리스너를 생성합니다.
[oracle@localhost database]$ netca
※ netca command not found 웅앵웅 에러 뜰 경우 다음과 같은 명령어를 실행하세염
위에서 환경변수가 적용이 안되었거나 오라클이 설치된 path가 잘못될 경우 나타납니다.
[oracle@localhost ~]$ cd /app/oracle/product/11.2.0/dbhome_1/bin
[oracle@localhost ~]$ ./netca
Listener configuration 체크 후 Next
최초 구성이므로 Add 선택 후 Next
아묻따 Next
확인 후 넥스트
오라클 기본포트 1521 확인 후 넥스트
다른 리스터 추가 할거니? 아니 > 넥스트
끝났당 ㄴㅅㅌ
Finish 선택해서 창 종료
6. 데이터베이스 생성
다음 명령어로 데이터베이스를 생성합니다.
[oracle@localhost ~]$ dbca
생성시작 Next
Create a Database 선택하고 Next
웅웅 알겠어염 확인하구 Next
ORACLE SID를 orcl로 설정하고 넥스트
(SID를 orcl 말고 다른걸로 변경하고 싶으면 .bash_profile의 ORACLE_SID 변수 값도 변경해주어야해여)
고대로 넥스트
관리자 전체 계정에 동일 패스워드를 사용한다는 옵션 체크 후 패스워드 설정
(까먹으면 귀찮아지니까 쉬운걸로 설정하세염)
패스워드를 단순하게 설정하면 뜨는 확인창임다 Yes를 선택해서 무시하고 넘어가시져
넥스트
ㄴㅅㅌ
ㄴㅅㅌ
서버 메모리 사양에 따라 설정된 값임다 그대로 설정하고 [Sizing] 탭을 선택해주세여
확인하고 [Character Sets] 탭 선택하세여
UTF-8이랑 항구거로 설정하고 [Connection Mode] 선택
기본 설정값 고대로 ㄴㅅㅌ
설정된 값 확인하고 ㄴㅅㅌ
피니쉬
마지막으로 설치 전에 확인하고 OK
아래와 같이 설치됩니다
(나만그런가 설치 열라느림)
아래와 같은 창 뜨면 설치 완료된겁니다.
ㅎㅏ,, 이제 모두 설치 완료가 됐습니다.
이제 실행하는 것만 남았군여,,,
7. 데이터베이스 및 리스너 실행
아까 위에서 .bash_profile에 alias로 sysdba로 접속하는 별칭을 주었기 때문에 아래와 같은 명령어로 접속합니다.
[oracle@localhost ~]$ ss
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 31 13:56:58 2020
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> startup
ORA-01081: cannot start already-running ORACLE – shut it down first
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 768294912 bytes
Fixed Size 2217304 bytes
Variable Size 486541992 bytes
Database Buffers 276824064 bytes
Redo Buffers 2711552 bytes
Database mounted.
Database opened.
SQL > exit
리스너 기동 상태를 확인합니다.
[oracle@localhost ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 31-JAN-2020 14:01:07
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xx.xx.xx.xx)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 – Production
Start Date 30-JAN-2020 17:28:30
Uptime 0 days 20 hr. 32 min. 36 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xx.xx.xx.xx)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary…
Service “orcl” has 1 instance(s).
Instance “orcl”, status UNKNOWN, has 1 handler(s) for this service…
The command completed successfully
리스너는 lsnrctl start 또는 lsnrctl stop 명령어를 이용해서 끄고 켜고를 할 수 있습니다.
8. 데이터베이스 계정 생성
이제 데이터베이스에 계정을 생성해서 SQLDeveloper에 붙어볼겁니다.
저는 제 티스토리 주소인 xxsiyoung 이름으로 계정을 만들고 권한까지 줘보겠슴다.
참고로 저는 귀찮아서 계정 아디랑 비번을 똑같이 만들어요
밑에 명령어중에 identified by 뒤에는 비밀번호를 설정하는 겁니다.
권한은 데이터베이스 사용하는데 필요한 권한은 다 줬어요
자세한 권한 설명은 구글링 하시기 바랍니다,,
[oracle@localhost ~]# ss
…SQL> CREATE USER xxsiyoung identified by xxsiyoung;
User created.
SQL> GRANT resource, connect, dba to xxsiyoung;
Grant succeeded.
다음과 같은 명령어로 생성한 계정이 잘 만들어졌는지 확인해주세여
SQL> SELECT * FROM ALL_USERS;
9. SQLDeveloper에 연결하기 (외부접속하기)
이제 생성을 했으면 사용하기 쉽게 SQLDeveloper에 연결할겁니다.
$ORACLE_HOME/network/admin 폴더에 있는 listener.ora 파일과 tnsnames.ora 파일을 수정해주어야 합니다.
우선 여러분의 .ora 파일들은 백업해주시고 제 파일을 참고해주세욤
listener.ora 파일
(여러분 서버 ip를 xx.xx.xx.xx 자리에 넣어주세여)
…
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /app/oracle/product/11.2.0/dbhome_1)
)
)LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)ADR_BASE_LISTENER = /app/oracle
tnsnames.ora 파일
(여러분 서버 ip를 xx.xx.xx.xx 자리에 넣어주세여)
…
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
저장하고 리스너를 껐다가 다시 켭니다.
[oracle@localhost admin]$ lsnrctl stop
[oracle@localhost admin]$ lsnrctl start
이제 SQLDeveloper를 실행해서 새 접속을 합니다.
[테스트] 버튼을 눌러서 [성공] 이 바로 뜨면 좋겠지만,,
만약에 다음과 같은 에러가 난다,,?
접속에러가 난겁니다,, 한번 해결해봅시다 ㅠ
1) 방화벽을 엽니다
[root@localhost ~]# firewall-cmd –permanent –zone=public –add-port=1521/tcp
success
SQLDeveloper에서 테스트를 해봅니다. 그래도 에러가 나면,, ↓↓↓
2) 리스너 종료- 디비 종료 – 디비 연결 – 리스너 연결 – 리스너 동작확인 – sqlplus로 붙고 – SQLDeveloper에 연결
[oracle@localhost ~]$ lsnrctl stop
[oracle@localhost ~]$ lsnrctl start
[oracle@localhost ~]$ sqlplus /nolog
…SQL> conn /as sysdba
SQL> shutdown immediate
…
SQL> startup
…
SQL> exit
[oracle@localhost ~]$ lsnrctl stop
[oracle@localhost ~]$ lsnrctl start
[oracle@localhost ~]$ lsnrctl status
SQLDeveloper에서 테스트를 해봅니다. 저는 이케 하니까 되더라구여 오예~