Version : 19c
OS : CentOS 7 64-bit
VM Tool: VMware
SSH Tool: MobaXterm
DB Tool : dbeaver
해당 게시물은 기존 구축된 DB를 다른 PC(VM)에 import하는 것을 목적으로 합니다.
그렇기 때문에 dmp 파일이 반드시 필요합니다.
오라클 다운로드 주소
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
MobaXterm로 작업을 위해 SSH 연결에 필요한 설정들을 미리 해줘야됨.
VM에 기본적으로 있는 폴더에 압축파일을 풀어도 되지만 그럴 경우 관리가 어렵기 때문에 새로운 폴더를 만들어서 진행합니다.
/home/계정명
경로에 oracle19c라는 폴더를 생성했습니다.
저는 'test'라는 계정을 생성하여 경로는 /home/test/oracle19c 입니다.
사용 명령어 :
mkdir oracle19c
MobaXterm은 물리 PC에 있는 파일을 드래그앤드랍을 통해 SSH 연결로 접속한 VM으로 이동이 가능합니다.
하지만 권한을 부여하지 않고 드래그앤드랍을 했을 경우 "permission denied"라는 팝업이 출력됩니다.
/home/test로 이동하여 chmod 명령어를 통해 권한을 부여합니다.
명령어
chmod -R 777 oracle19c
chmod : 권한 부여 명령어
-R : 디렉토리 내부의 모든 파일과 서브디렉토리에도 같은 권한을 적용
777은 보안적으로 위험할 수 있습니다. 실제 적용에서는 필요한 권한만 부여하시면 됩니다.
권한을 부여한 후 드래그앤드랍을 하면 정상적으로 zip파일이 이동한 것을 확인할 수 있습니다.
unzip
명령어를 통해 zip파일을 압축 해제 할 수 있다.
사용 명령어
unzip ~~.zip -d /home/test/oracle19c
해당 명령어를 입력하면 많은 파일들이 압축해제되는 것을 확인할 수 있다.
그리고 zip 파일은 삭제해줍니다.
사용 명령어
rm ~~.zip
oracle19c 내에 runInstaller라는 파일이 있다. 해당 인스톨러를 실행하여 설치를 진행한다.
사용 명령어
./runInstaller
해당 명령어를 실행했을 때
no x11 display variable was set but this program performed an operation which requires it. 다음과 같은 명령어가 출력된다면
DISPLAY=:0.0
export DISPLAY
해당 명령어를 입력 후 ./runInstaller를 입력하면 정상적으로 인스톨러가 실행된다.
인스톨러 및 설치는 아래 블로그를 참고했습니다.
해당 과정을 모두 마치면 오라클이 정상적으로 설치되었다.
방화벽에 오라클 서버 포트를 추가해야 한다.
오라클은 기본적으로 1521번 포트를 사용.
명령어
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --reload
오라클은 인스턴스와 리스너를 각각 실행시키는 구조로 되어있다.
오라클 실행을 위해서는 lsnrctl 명령어와 sqlplus 명령어가 필요하다.
해당 명령어는 오라클이 설치된 경로에 bin 디렉토리에 위치하고 있다. 이를 모든 경로에서 실행하기 위해 .bash_profile
을 수정해야한다.
vi .bash_profile
명령어를 통해 해당 파일에 다음 명령어를 추가한다.
$HOME에 bin경로 추가 :/home/test/oracle19c/bin
export ORACLE_HOME=/home/test/oracle19c
export ORACLE_SID=orcl
명령어
sqlplus "/as sysdba"
실행 : startup
중지 : shutdown immediate
실행 : lsnrctl start
상태 확인 : lsnrctl status
중지 : lsnrctl stop
명령어
포트 번호로 상태 확인
netstat -anp |grep 1521
덤프 파일을 저장할 폴더를 생성한다.
경로 : /home/test
명령어 : mkdir db_dump
sqlplus "/as sysdba"를 통해 오라클에 로그인 한 후 디렉토리를 생성해야 한다.
create directory db_dump as '/home/test/db_dump';
그리고 계정을 생성하고, 해당 계정에 읽기, 쓰기 권한을 부여해야한다.
create user (id) identified by (pw);
grant read, write, connect, resource , dba to (id);
덤프를 진행할 때는 DB에 대한 정보를 알기 때문에 테이블 스페이스이름을 알고 있을 것이다.
create tablespace (테이블 스페이스 이름) datafile '.dbf 파일 저장경로' size (초기크기) autoextend on next (확장 크기);
create user (이름) identified by (4-2. 생성계정명) default tablespace (테이블 스페이스 이름);
commit;
명령어
impdp directory=(4-2. 선언한 디렉토리명) dumpfile= ~.dmp logfile=~.log full=yes
impdp 명령어에서 사용한 옵션
directory =
덤프파일이 저장된 디렉토리를 지정. oracle DB에서 쿼리문을 통해 생성한 디렉토리 변수를 사용해야 한다.
logfile=
작업 실행 중 발생하는 로그를 기록할 파일 이름을 지정한다.
full=yes
해당 옵션을 yes로 설정하면 전체 데이터를 덤프한다. DB 내의 모든 객체와 데이터가 대상으로 선택된다.
만약, no로 설정할 경우 특정 객체나 데이터만 선택한다.
정보에 감사드립니다.