본문 바로가기
운영체제/Linux

[Linux] 오라클 21c 설치

by Youngs_ 2022. 6. 3.

필자의 설치환경 : Oracle Linux 7.6, 도커 컨테이너 환경

참조문서: Running RPM Packages to Install Oracle Database

오라클 데이터베이스 18c 부터는 리눅스 환경에서 preinstall RPM과 데이터베이스 RPM 패키지를 설치할 수 있습니다. 그래서 Preinstall > 데이터베이스 소프트웨어 설치 > 데이터베이스 구성까지 이르는 과정이 대단히 간편해 졌습니다.

다음은 Oracle Cloud Infrastructure OCI) 환경 오라클 리눅스 7.9에 오라클 데이터베이스 21c Multitenant 설치를 한 과정입니다.

오라클 데이터베이스 설치

먼저 19c, 21c데이터베이스 rpm 기반 설치 파일은 아래 링크에서 다운로드 받습니다.

Oracle Database Software Downloads

다운로드 받은 설치 파일을 리눅스 서버에 업로드합니다. 여기서는 ftp로 파일을 업로드했습니다.

오라클 리눅스를 사용하고 있고, Unbreakable Linux Network (ULN)에 가입되어 있다면 “yum -y install oracle-database-ee-21c" 같은 단일 yum 명령으로 오라클 데이터베이스 설치 파일 다운로드와 Preinstall RPM, 오라클 데이터베이스를 설치할 수 있습니다만, 여기서는 각 설치 과정으로 별도로 수행했습니다.

먼저 root 유저로 접속해서 오라클 데이터베이스 Preinstall RPM을 다운로드/설치합니다.

[root@apex ]# cd /opc
[root@apex opc]# whoami
root
[root@apex opc]# yum -y install oracle-database-preinstall-21c
...
Complete!
[root@apex opc]#

다운로드 받았던 rpm 기반 설치 파일을 임시 디렉토리로 옮기고, root 유저로 소유권을 변경한 다음 “yum localinstall” 명령으로 데이터베이스 소프트웨어를 설치합니다.

[root@apex opc]# mv oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm /tmp
[root@apex opc]# chown root:root /tmp/oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm
[root@apex opc]# cd /tmp/
[root@apex tmp]# yum -y localinstall oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm
Loaded plugins: langpacks, ulninfo
Examining oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm: oracle-database-ee-21c-1.0-1.x86_64
Marking oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package oracle-database-ee-21c.x86_64 0:1.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================================
 Package                             Arch                Version            Repository                                             Size
========================================================================================================================================
Installing:
 oracle-database-ee-21c              x86_64              1.0-1              /oracle-database-ee-21c-1.0-1.ol7.x86_64              7.1 G

Transaction Summary
========================================================================================================================================
Install  1 Package

Total size: 7.1 G
Installed size: 7.1 G
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : oracle-database-ee-21c-1.0-1.x86_64                                                                                  1/1
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-21c configure
  Verifying  : oracle-database-ee-21c-1.0-1.x86_64                                                                                  1/1

Installed:
  oracle-database-ee-21c.x86_64 0:1.0-1

Complete!
[root@apex tmp]#

이제 데이터베이스를 구성합니다. 아래 명령을 수행하면 1521 리스너 포트로 통신하는 “ORCLCDB” 라는 컨테이너 데이터베이스와 “ORCLPDB1” 이라는 Pluggable Database가 생성됩니다. 다른 설정으로 구성하고 싶다면, /etc/sysconfig/oracledb_ORCLCDB-21c.conf 설정 파라미터 파일을 열어 수정하면 됩니다.

[root@apex tmp]# /etc/init.d/oracle-xe-21c configure
Configuring Oracle Database ORCLCDB.
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
43% complete
46% complete
Completing Database Creation
51% complete
54% complete
Creating Pluggable Databases
58% complete
77% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.

Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user.
[root@apex tmp]#

 

오라클 데이터베이스 접속 설정

데이터베이스가 생성되었습니다. 명령 프롬프트에 나온대로 이제 oracle 유저로 데이터베이스에 접속해서 sys와 system 패스워드를 변경합니다. 그 전에 접속 편의를 위해 oracle 유저 환경 변수를 .bash_profile에 저장합니다.

도커에서 su - oracle을 입력하는데 [sudo su: permission denied]와 같이 권한이 없다는 메시지가 나오면서 들어가지지 않는다면 컨테이너를 만들때 컨테이너에 권한을 주지 않은것이다. 

그럴때는 컨테이너를 다시 만들어야 하는데 아래 명령어를 이용해 컨테이너를 삭제 한 후 

$ docker stop [컨테이너 ID]
$ docker rm [컨테이너 ID]

아래 명령어를 이용해 다시  컨테이너를 만드는데, 반드시 '--privileged' 옵션을 넣어야한다.
--privileged 옵션은 컨테이너에 모든 권한을 부여하는 옵션이다.

docker run -td  --name="oraclelinux" --privileged -p 18080:8080 -p 18443:8443 oraclelinux:7.6

 

 

[root@apex tmp]# su - oracle
Last login: Fri Mar 18 02:27:28 GMT 2022 on pts/0
[oracle@apex ~]$ vi .bash_profile
...
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE
export ORACLE_SID=XE
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
...
[oracle@apex ~]$ source .bash_profile
[oracle@apex ~]$ sqlplus "/as sysdba"
...
SQL> alter user sys identified by xxxxxxxxxx;
User altered.

SQL> alter user system identified by xxxxxxxxxx;
User altered.

SQL> exit
Disconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

리스너 파일 생성/설정과 TNS 접속 정보를 생성/설정을 합니다. 호스트 정보에는 호스트의 DNS 이름을 여기서는 사용했습니다. 

find . -name "*.ora"
#다른경로에 설치될수도있는데 그럴땐 위 명령어를 사용하여 위치를 찾을수있다.
[oracle@apex ~]$ vi $ORACLE_HOME/network/admin/listener.ora
...
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCLCDB)
      (ORACLE_HOME = /opt/oracle/product/21c/dbhome_1)
      (SID_NAME = ORCLCDB)
    )
  )
...
[oracle@apex ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
...
ORCLCDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLCDB)
    )
  )

ORCLPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLPDB1)
    )
  )
...
[oracle@apex ~]$

이제 Pluggable Database 서비스가 올라온 것까지 확인한 다음 컨테이너 데이터베이스, Pluggable Database 접속을 확인합니다.

[oracle@apex ~]$ tnsping orclcdb
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = apex.subnetpublic.demovcn.oraclevcn.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLCDB)))
OK (0 msec)

[oracle@apex ~]$ tnsping orclpdb1
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = apex.subnetpublic.demovcn.oraclevcn.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLPDB1)))
OK (0 msec)

[oracle@apex ~]$ sqlplus system/xxxxxxxxxx@orclpdb1
...
Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL> show con_name

CON_NAME
------------------------------
ORCLPDB1
SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
ORCLCDB          OPEN

<END>

 


https://feellikeghandi.tistory.com/27

 

오라클 데이터베이스 21c RPM 기반 설치

참조문서: Running RPM Packages to Install Oracle Database 오라클 데이터베이스 18c 부터는 리눅스 환경에서 preinstall RPM과 데이터베이스 RPM 패키지를 설치할 수 있습니다. 그래서 Preinstall > 데이터베이..

feellikeghandi.tistory.com

해당 페이지에 있는 방법을 이용해 진행중인데, 도커에서 오라클리눅스 7.6 컨테이너에서 진행하다보니 [yum -y localinstall 어쩌구저쩌구.rpm] 명령어를 입력하면 아래와 같은 에러가 나오면서 정상적으로 진행이 안된다. (해당 에러가 나와도 하단에는 Complete! 문구가 나오니 주의, 필자는 정상진행 되는줄 알고 한참 헤맸다)

그럴때는 [아래 export 명령어를 이용하여 ORACLE_DOCKER_INSTALL을 true값으로 지정해준후 진행하면된다.

해결법 출처 : https://www.hinomaruc.com/three-ways-to-prepare-oracle-database-xe-environment-using-docker/

export ORACLE_DOCKER_INSTALL=true
[SEVERE] The su command is not configured properly or the oracle user
does not have the required privileges to install the Oracle database.
If you are running in a container environment,
ensure to set the environment variable ORACLE_DOCKER_INSTALL=true and try again.
error: %prein(oracle-database-xe-21c-1.0-1.x86_64) scriptlet failed, exit status 1

 

 


아래부분은 필자는 아직 안해봤다. 윗부분은 됨
-> 해봤는데 아래와같은 에러가 나온다. 오라클리눅스 7.6은 설치가능한 OS라고 홈페이지에 나와있는데 ㅠㅠ
Oracle Database is not supported on this operating system. Installer will not perform prerequisite checks on the system.

더보기

 

https://www.oracle.com/kr/database/technologies/xe-downloads.html

해당 페이지에서 설치파일을 받는다.

 

주의: "sampleSchema true"는 21c에서 지원되지 않습니다.
>> [ FATAL ][ DBT - 12513 ]샘플 스키마는 Oracle Home 버전21.0.0에서는 지원되지 않습니다.
 
Oracle Home은 읽기 전용 홈입니다.
 
[http@ol8 bin] $orabasehome
/u01/app/oracle/homes/OraDB21홈 1
[oracle@ol8 bin]$ cat $ORACLE_HOME/install/orabasetab
#orabasetab 파일은 Oracle Base와 관련된 Oracle Home 추적에 사용됩니다.
/u01/db21c:/u01/app/oracle:OraDB21 Home1:Y:

 

 
소프트웨어를 압축 해제합니다.

 

$ unzip LINUX.X64_213000_db_home.zip -d /u01/db21c

 

ORACLE_HOME을 수정하고, user 계정을 생성하고 압축해제한 폴더 소유자를 user로 변경합니다.

$ vi $HOME/.bash_profile

$ source $HOME/.bash_profile

$ useradd user

$ su user

$ chown user db21c/

 

$HOME/.bash_profile 파일 내용

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
ORACLE_HOME=/u01/db21c

export PATH
 
 
21c 데이터베이스 바이너리 설치(21c는 임플레이스 설치)
$ cd /u01/db21c
$ ./runInstaller  -silent -ignorePrereqFailure -waitforcompletion \
    oracle.install.option=INSTALL_DB_SWONLY \
    UNIX_GROUP_NAME=oinstall \
    INVENTORY_LOCATION=/u01/app/oraInventory \
    ORACLE_HOME=/u01/db21c \
    ORACLE_HOME_NAME='OraDB21Home1' \
    ORACLE_BASE=/u01/app/oracle \
    oracle.install.db.InstallEdition=EE \
    oracle.install.db.OSDBA_GROUP=dba \
    oracle.install.db.OSOPER_GROUP=oper \
    oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
    oracle.install.db.OSDGDBA_GROUP=dgdba \
    oracle.install.db.OSKMDBA_GROUP=kmdba \
    oracle.install.db.OSRACDBA_GROUP=racdba \
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
    DECLINE_SECURITY_UPDATES=true
 
리스너 작성
export ORACLE_BASE=/u01/app/oracle; export ORACLE_HOME=/u01/db21c; /u01/db21c/bin/netca /orahome /u01/db21c /instype typical /inscomp client,oraclenet,javavm,server,ano /insprtcl tcp /cfg local /authadp NO_VALUE /responseFile /u01/db21c/network/install/netca_typ.rsp /lisport 1521 /silent /orahnam OraDB21Home1
 
데이터베이스 작성
export ORACLE_HOME=/u01/db21c; export ORACLE_BASE=/u01/app/oracle; /u01/db21c/bin/dbca -silent -createDatabase  -emConfiguration NONE  -templateName 'General_Purpose.dbc' -storageType FS -datafileDestination '/u01/app/oracle/oradata' -datafileJarLocation '/u01/db21c/assistants/dbca/templates' -oratabLocation /etc/oratab  -runCVUChecks false -continueOnNonFatalErrors true -createAsContainerDatabase true -numberOfPDBs 1 -pdbName pdb1 -gdbName 'orcl21c' -sid 'orcl21c' -initParams filesystemio_options=setall -ignorePrereqs -sysPassword WElcome123## -systemPassword WElcome123## -pdbAdminPassword WElcome123## -dbsnmpPassword WElcome123##

 

 


 

Oracle 21c on Linux Silent installation

A blog about on new technologie. Hands-on note about Hadoop, Cloudera, Hortonworks, NoSQL, Cassandra, Neo4j, MongoDB, Oracle, SQL Server, Linux, etc.

www.dbaglobe.com

 

 

오라클 데이터베이스 21c RPM 기반 설치

참조문서: Running RPM Packages to Install Oracle Database 오라클 데이터베이스 18c 부터는 리눅스 환경에서 preinstall RPM과 데이터베이스 RPM 패키지를 설치할 수 있습니다. 그래서 Preinstall > 데이터베이..

feellikeghandi.tistory.com

 

댓글