1. GCP 용도
- Informatica 제품 테스트를 위한 DB 설치 추후 PostgreSQL 설치 예정.
- 웹개발 프로젝트를 위한 Mriadb 설치 예정.
2. VM Spec
- asia지역은 현재 N1 시리즈만 가능.
- OS : CentOS 7
- DiskSize : 100G
- vCPU : 2 core
- Memory : 7.5G
3. OS 설정 및 oracle 계정 생성
- 커널 파라미터 설정.
커널 파라미터 정리
kernalParameter | comment |
---|---|
fs.aio-max-nr | 허가된 최대 동시 요청 수 |
fs.file-max | OS에서 동시에 오픈할 수 있는 파일의 수를 제어 |
kernel.shmall | 공유 메모리 최대 페이지수 |
kernel.shmmax | 공유 세그먼트 최대 사이즈 (바이트 수) |
kernel.shmmni | 공유 세그먼트 최대 수 |
kernel.sem | 아래 네 개의 값을 차례로 설정한다. -semmsl : 세마포어 세트당 최대 세마포어 수 - semmns : 시스템에 할당할 수 있는 최대 세마포어 개수 - semopm : 시스템 호출당 수행할 수 있는 최대 세마포어 수 - semmni : 세마포어 세트의 최대 수 |
net.ipv4.ip_local_port_range | 신규 접속시에 허용할 수 있는 포트의 사용 범위 |
net.core.rmem_default | 소켓이 사용하는 수신 버퍼(Window Size)의 기본값 |
net.core.rmem_max | 소켓이 사용하는 수신 버퍼(Window Size)의 최대값 |
net.core.wmem_default | 소켓이 사용하는 송신 버퍼(Window Size)의 기본값 |
net.core.wmem_max | 소켓이 사용하는 수신 버퍼(Window Size)의 최대값 |
- sysctl -p 명령어로 파라미터 반영.
- 그룹 oinstall,dba 생성 후 oracle 계정 생성.
- ulimit 설정 변경 (ulimit -a 설정 확인)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
- yum update 및 아래의 명령어로 기본 패키지 설치
yum install -y binutils compat-libcap1 gcc gcc-c++ glibc glibc-devel ksh compat-libstdc++-33 libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat zip unzip net-tools smartmontools
4. puttygen을 사용하여 ssh key 생성
- root로 접속을 하기위해 sudo passwd 로 root 비밀번호 설정 후 /etc/ssh/sshd_config 에서 PermitRootLogin, PasswordAuthentication 설정을 Yes로 변경.
Generate 버튼 클릭 후 로딩바에 마우스 좌우로 이동하면 키생성.
Key comment에 root 또는 생성한 아이디를 입력 후 Generate 버튼 클릭.
Key comment에 아이디 입력후 public Key와 private Key 저장.
- GCP 콘솔 -> Compute Engine -> 메타데이터 -> ssh 키에 puttygen으로 만든 키 등록.
5. 폴더 생성 및 소유자 변경
- mkdir -p /opt/oracle/product/19.3/dbhome_1
- chown -R oracle:oinstall /opt/oracle
- mkdir -p /opt/oraInventory
- chown oracle:oinstall /opt/oracle
- mv LINUX.X64_193000_db_home.zip /opt/oracle/product/19.3/dbhome_1
- unzip LINUX.X64_193000_db_home.zip
6. 환경 변수 설정 및 적용
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19.3/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
-----------------------------------------------------
source ~/.bash_profile
7. 소프트웨어 설치
db_install.rsp 수정
커널 파라미터 정리
oracle.install.option=INSTALL_DB_SWONLY => 다음 중 하나 선택 가능 INSTALL_DB_SWONLY, INSTALL_DB_AND_CONFIG UNIX_GROUP_NAME=oinstall => 인벤토리 디렉토리의 UNIX 그룹 선택 INVENTORY_LOCATION=/opt/oraInventory => 인벤토리 디렉토리 위치 선택 ORACLE_HOME=/opt/oracle/product/19.3/dbhome_1 => ORACLE_HOME 위치 ORACLE_BASE=/opt/oracle => ORACLE_BASE 위치 oracle.install.db.InstallEdition=EE => 데이타베이스 설치 버전 선택, EE Enterprise Edition, SE2 Standard Edition 2 oracle.install.db.OSDBA_GROUP=dba => 데이타베이스 관리자 그룹 oracle.install.db.OSOPER_GROUP= => 선택사항, 데이터베이스 운영자(OSOPER) 그룹 oracle.install.db.OSBACKUPDBA_GROUP=dba => 데이터베이스 백업 및 복구(OSBACKUPDBA) 그룹 oracle.install.db.OSDGDBA_GROUP=dba => Dtata Guard관리(OSDGDBA) 그룹 oracle.install.db.OSKMDBA_GROUP=dba => 암호화키 관리(OSKMDBA) oracle.install.db.OSRACDBA_GROUP=dba => Real Application Cluster 관리(OSRACDBA) 그룹 oracle.install.db.rootconfig.executeRootScript=true => true,false 선택, false일 경우 Manually 하게 ROOT SCRIPT 실행 oracle.install.db.rootconfig.configMethod=ROOT => ROOT, SUDO 중 선택, executeRootScript 설정값이 true 일 경우 선택
설치 명령어 실행
$ORACLE_HOME/runInstaller -executePrereqs -responseFile $ORACLE_HOME/install/response/db_install.rsp
8. 리스너 구성.
netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp
9. 데이터베이스 구성.
vi $ORACLE_HOME/assistants/dbca/dbca.rsp
dbca -silent -createDatabase -responsefile $ORACLE_HOME/assistants/dbca/dbca.rsp
dbca.rsp 설정
$ responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=orcl
#sid=orcl
#databaseConfigType=SI
createAsContainerDatabase=TRUE
numberOfPDBs=1
pdbName=orapdb
#useLocalUndoForPDBs=TRUE
pdbAdminPassword=oracle_4U
templateName=General_Purpose.dbc
sysPassword=oracle_4U
systemPassword=oracle_4U
#datafileDestination=$ORACLE_BASE/oradata
#recoveryAreaDestination=$ORACLE_BASE/flash_recovery_area
#storageType=FS
characterSet=AL32UTF8
nationalCharacterSet=AL16UTF16
listeners=LISTENER
memoryPercentage=40
#databaseType=MULTIPURPOSE
automaticMemoryManagement=FALSE
#totalMemory=1024
10. infa 유저 생성
- 12c 부터는 ALTER SESSION SET “_ORACLE_SCRIPT” = TRUE; 실행 후 유저 생성해야 11g 처럼 유저 생성 가능.
11. 오라클 포트 열기.
- 연결 성공
12. 오라클 서비스 등록하기.
/etc/oratab 파일에서 orcl:/opt/oracle/product/19.3/dbhome_1:Y 변경
리스너 등록
vi /usr/lib/systemd/system/oracle_listener.service
리스너 등록 스크립트
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=oracle listener
After=network.target
[Service]
Type=forking
Environment=ORACLE_BASE=/opt/oracle
Environment=ORACLE_HOME=/opt/oracle/product/19.3
Environment=ORACLE_SID=orcl
ExecStart=/opt/oracle/product/19.3/dbhome_1/bin/lsnrctl start
ExecStop=/opt/oracle/product/19.3/dbhome_1/bin/lsnrctl stop
User=oracle
[Install]
WantedBy=multi-user.target
- 인스턴스 등록
vi /usr/lib/systemd/system/oracle_instance.service
인스턴스 등록 스크립트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=oracle instance
After=network.target syslog.target
[Service]
Type=forking
User=oracle
Group=database
Environment=ORACLE_BASE=/opt/oracle
Environment=ORACLE_HOME=/opt/oracle/product/19.3
Environment=ORACLE_SID=orcl
ExecStart=/opt/oracle/product/19.3/dbhome_1/bin/dbstart
ExecStop=/opt/oracle/product/19.3/dbhome_1/bin/dbshut
[Install]
WantedBy=multi-user.target
13. Systemd에 등록
systemctl daemon-reload
systemctl start oracle_listener.service
systemctl enable oracle_listener.service
systemctl start oracle_instance.service
systemctl enable oracle_instance.service