Oracle은 현재 우리나라에서는 가장 많이 사용하는 RDBMS 일것이다. 하지만, 이것을 R에서 SQL 쿼리문을 날려서, 모델링 결과를 전사 ERP 시스템에 업데이트를 하는 Case는 많지 않다.
R Oracle 연결 |
Ubuntu 에 Oracle 설치
Oracle을 다운로드 받으려면, 오라클 회원에 가입 해서, 로그인 후 다운 받아야 한다.
Ubuntu 버전에서 다운 받을때, X 윈도우를 사용한다.
우분투 다운로드에 다운이 되는데, 다운로드 폴더에 들어가서 실행 하여 보자.cd 다운로드
root 계정에 접속한다.sudo su root
압축 파일을 받았으니 압축을 풀어야 한다.unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
Disk1이 나타나며, Disk 1폴더로 이동하여야 한다.cd Disk1
root 계정으로 바뀌었다는 것으로 가정하에 아래와 같이 명령어를 수행 한다.alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm
그러면, deb 화일이 생긴다.dpkg --install oracle-xe_11.2.0-2_amd64.deb
설치가 정상적으로 끝나면, 오라클 환경 설정을 한다. sh 쉘스크립트 실행 화일을 실행하면, 모든 환경 설정은 끝난다.. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
그리고 항상 로그인 할때, 실행 될수 있도록 아래와 같이 설정 한다.
gedit /etc/bash.bashrc
오라클 재시작시 서비스 실행
오라클 Port, listener, Passward 등을 아래와 같이 설정 한다.
/etc/init.d/oracle-xe configure
다른 것은 놔두고, 비밀번호만 세팅 한다.
그리고 데이터 베이스가 저장될 폴더를 만들고 권한을 부여 한다.
mkdir /oradata
chmod 777 /oradata/
그리고 sqlplus를 실행 하여 준다.sqlplus system
Oracle 클라이어트 툴 설치
아래링크를 클릭 하여 오라클 클라이언트 툴을 다운 받는다.
oracle instant client 파일을 설치 한다.
$ sudo apt-get install alien
$ sudo alien -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm
$ sudo alien -i oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.x86_64.rpm
$ sudo alien -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm
설치 후 sqlplus 실행 한다.
$ sqlplus64 system/oracle@//localhost:1521/xe
만약에 libsqlplus.so 오류 발생 할 경우 (다른 .so 관련 문제가 발생할시에도 적용)에 아래와 같은 명령어를 실행 한다.
$ export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH
$ export ORACLE_HOME=/usr/lib/oracle/11.2/client64
$ sudo mkdir $ORACLE_HOME/rdbms
$ sudo mkdir $ORACLE_HOME/rdbms/public
$ sudo cp /usr/include/oracle/11.2/client64/* $ORACLE_HOME/rdbms/public
$ sudo vi /etc/ld.so.conf.d/oracle.conf && sudo chmod o+r /etc/ld.so.conf.d/oracle.conf
# 해당 라인 추가 후 저장한다. ---> /usr/lib/oracle/11.2/client64/lib/
libaio.so.1 오류 발생 할 경우 아래 명령어를 실행 한다.
$ sudo apt-get install libaio1
R 환경 설정
R Oracle을 아래와 같이 한다.
$ sudo -i R
R 콘솔에서 DBI를 설치 한다.
> install.packages("DBI")
# ROracle 설치 파일을 아래와 같이 다운로드 한다.
다운로드 받았으면 아래의 우분투 콘솔에서 R Package를 설치 한다.
$ R CMD INSTALL --configure-args='--with-oci-lib=/usr/lib/oracle/11.2/client64/lib --with-ociinc=/usr/include/oracle/11.2/client64' ROracle_1.3-1.tar.gz
R 시작시 로딩 하는 디폴트 환경값을 설정한다. 아래의 내용을
# /usr/lib/R/etc/Renviron.site 또는 # /usr/lib/R/etc/Rprofile.site 에 설정값을 추가 한다.
아래는 /Renviron.site 예제이다.
$ sudo vim /usr/lib/R/etc/Renviron.site
# Oracle Setup
ORACLE_HOME=/usr/lib/oracle/11.2/client64 ORACLE_SID=XE
ORACLE_BASE=/u01/app/oracle
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH
NLS_LANG=“KOREAN_KOREA.AL32UTF8"
R 코드 실행
sqlplus를 실행 하여 아래와 같이 테이블을 만든다.
CREATE TABLESPACE tbs_01
DATAFILE 'tbs_01.dat' SIZE 40M
ONLINE;
CREATE TABLE rtest_01 (
ename VARCHAR2(15) )
TABLESPACE TBS_01;
아래와 같이 Rstudio에서 Oracle을 실행 한다.
library(DBI)
library(ROracle)
# Set up connection info
drv <- dbDriver("Oracle")
host <- "127.0.0.1" #localhost
port <- "1521"
sid <- "xe"
connect.string <- paste(
"(DESCRIPTION=",
"(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
"(CONNECT_DATA=(SID=", sid, ")))", sep = "")
# Connect to database (can also try with system/oracle)
con <- dbConnect(drv, username = "system", password = "hs1234", dbname = connect.string, prefetch = FALSE,
bulk_read = 1000L, stmt_cache = 0L, external_credentials = FALSE,
sysdba = FALSE) # Enter Schema and Schema password for username and password
## Use dplyr directly in the database
# install.packages("dplyr")
# install.packages("dbplyr")
require("dplyr")
require("dbplyr")
rtest <- tbl(con, "RTEST_01")
rtest_tmp <- tibble(ENAME="한글")
# 로우 추가
dbWriteTable(con, "RTEST_01", data.frame(rtest_tmp), append = TRUE)
# 테이블 확인
dbReadTable(con, "RTEST_01")
위와 같이 RStudio에서 확인 되면 R 하고 오라클하고 연동이 되는 것을 볼 수 있다.
댓글 없음:
댓글 쓰기