생계/Oracle2021. 10. 9. 16:33

오라클 디비는 아래의 단계를 거쳐서 기동이 되며, 정상 open 이 되어야 client 에서 사용가능한 상태가 된다. 

shutdown -> nomount -> mount -> open 


Step 1) shutdown (closed)

  오라클 process 가 완전히 종료된 상태

   ps -ef | grep ora_  명령어를 치면 떠있는 프로세스가 없다.  


Step 2) nomount

  오라클 프로세스가 SGA, 버퍼캐쉬 등 자신이 사용할 메모리영역을 os 로 부터 할당 받는 단계.

  오라클 초기화 파라미터 파일(spfile,pfile) 에 명시된 레시피를 참조하여 인스턴스를 생성한다. 

  참조할 파라미터 파일은 아래처럼 직접 명시할수도 있다 

STARTUP NOMOUNT pfile=C:\oracle\database\initora.ora 


Step 3) mount 

  datafile 등이 instance 에 붙는(mounted) 단계

  no mount 단계에서 인스턴스가 생성이 되면 초기화 파라미터에 명시된 컨트롤 파일 경로를 참고하여

 우리가 데이터베이스라고 부르는 데이터 파일들에 마운트를 시도한다. 

[initSID.ora]  

*.control_files='/home/oracle/control01.ctl' ,


Step 4) open 

컨트롤 파일과 데이터 파일간의 정합성을 체크하고 이상이 없다면 데이터베이스는 open 상태가 된다.   

만약 일부 데이터 파일이 문제가 있다면 컨트롤 파일을 수정해서 일부만 open 할수 있고, 

불완전복구나 백업된 컨트롤파일이 아닌 컨트롤 파일로 오픈할 경우엔는 resetlogs 를 써야 open 이 가능하다. 

 

 

반응형
Posted by 돌고래트레이너
생계/Oracle2021. 9. 20. 17:47

 

1. 파라미터 파일이란 : 

   shutdown 상태에서 no mount 가 되면 SGA 등이 포함된 instance 를 메모리에 올리게 되는데 이때

 파라미터 파일을 참고해서 instance 를 올린다. 

 오라클 서버 프로세스가 사용할 인스턴스를 어떤 스펙으로 올려라 같은 레시피 같은 것.

 

2. 어떤것을 규정하는가 

- 인스턴스에 대한 내용(SGA, PGA, 버퍼캐쉬)

- 컨트롤 파일의 위치

- 기타 성능 및 버그 관련 work around

 

3. 최적화 

파라미터는 사이트마다 최적이 다르다. 

- 최적을 알고 싶다면 oracle acs 파라미터 진단 서비스  => 유료 

- 널리 쓰이는 공통적인 것은 적용

- 좋은 기능이지만 리스크가 있을만한것은 놔두고  

- 그때그때 필요한것을 추가 

- 버그 문제는 히든파라미터를 써가며 work around

- 현실 : 오라클 버전 업, 패치 적용이후 파라미터들을 최신, 최적화하여 관리해야 하지만, 한번 설정한 파라미터는 시간이 갈수록 side effect 에 대해서 책임지기 싫어서 놔둠.

- 결론 : 한방에 최적을 알고 싶지만 경험을 통해 넣고 빼고 해야함 

 

반응형
Posted by 돌고래트레이너
생계/Oracle2021. 9. 18. 14:47

사이베이스 datetime -> 오라클로 이관 하기
날짜 타입의 경우 형식이 달라 바로 이관이 되지 않는다.
sql loader 로 들어갈수 있게 형식을 맞추고 집어넣어야 한다.


1. sybase 에서 view 만들기

-- 오라클 date 타입 으로 변경 

create view aaa
as
select aa, bb,
convert(varchar, datetime_column, 112) || str_replace( convert(varchar, datetime_column, 8),':',null) dt
from souce_tab
go
=> yyyymmddhh24miss 형식으로 datetime 을 바꿔준다.

-- 오라클 timestamp 타입(milsec 까지) 으로 변경 

convert(varchar, datetime_column, 112) || str_replace( convert(varchar, datetime_column, 20),':',null) dt

=> yyyymmddhh24missff 형식으로 datetime 을 바꿔준다.



2. bcp out 으로 덤프 내리기

bcp owner..table_name out ./dat/TAB_NM.dat -c -t'|~#' -r'!@\r\n' -U계정 -P비번
-t : field terminator => '|' 한글자는 데이터에 포함될 가능성이 있고, '||' 두글자는 널 컬럼이 많을 경우 제대로 인식 못할 가능성. 안전하게 특수문자 2,3 개
-r : row terminator => 필드 하나의 값에 여러줄 데이터가 있을 경우 loader 가 row 를 잘 인식못한다.
'특수문자 + 개행' 조합 으로 한줄의 끝을 정하자.

SELECT 'BCP '||OWNER||'..'||TABLE_NAME||' OUT ./dat/'||table_name||'.dat -c -t'||''''||'|~#'||''''||' -r'||''''||'!@\r\n'||''''||' -Uxx -Pp'
FROM DBA_TABLES
WHERE OWNER='XXX'
ORDER BY TABLE_NAME
;

3. control 파일 만들기
이관 대상 테이블이 여러개일 경우, 한방 쿼리로 ctl 파일을 만들자.

========= mk_ctl.sql ===========
SET PAGESIZE 0
SET ECHO OFF
SET VERIFY OFF
SET FEEDBACK OFF

spool ./ctl/&&..ctl

SELECT 'LOAD DATA'||CHAR(10)
||'INFILE '||''''||'./dat/'||t.table_name||'.dat'||''''||' "str '||''''||'!@\r\n'||''''||'"'||CHR(10)
||'TRUNCATE '||CHR(10)
||'INTO TABLE '||OWNER||'.'||TABLE_NAME||CHR(10)
||'FIELDS TERMINATED BY '||''''||','||''''||CHR(10)
||'TRAILING NULLCOLS'||CHR(10)
||'('
FROM DBA_TABLES T
WHERE T.OWNER='AA'
AND T.TABLE_NAME LIKE '&&1'
UNION ALL
SELECT DECODE(COLUMN_ID,1,'',',')||COLUMN_NAME||
DECODE(DATA_TYPE,'VARCHAR2',' CHAR('||DATA_LENGTH||')',
'CHAR',' CHAR('||DATA_LENGTH||')',
'CLOB',' CHAR('||DATA_LENGTH||')',
'DATE',' DATE '||''''||'YYYYMMDDHH24MISS'||''''
)
FROM (
SELECT T.OWNER, T.TABLE_NAME, C.COLUMN_NAME, C.DATA_TYPE,
C.DATA_LENGTH, C.COLUMN_ID
FROM DBA_TABLES T, DBA_TAB_COLS C
WHERE T.OWNER='AA'
AND T.TABLE_NAME = C.TABLE_NAME
AND T.TABLE_NAME LIKE '&&1'
ORDER BY COLUMN_ID
)
UNION ALL
SELECT ')' FROM DUAL
;

spool off
exit;

** data_type = timestamp(6) => .ctl  timestamp missff

입력값 (테이블 이름) 을 받고 ctl 파일 만들기
========= mk_ctl.sh ===========

sqlplus -s lee/pwd @mk_ctl $1

========= run_mkctl.sh ===========

./mk_ctl.sh TAB_NM
./mk_ctl.sh TAB_NM

4. sql loader 실행
loader 스크립트 만들기
sqlldr userid=xxx/aaa control='./ctl/aaa.ctl' log='./log/aaa.log' bad='./bad/aaa.bad'

select 'sqlldr ....'
from dba_tables t
where t.owner='XXX'
order by table_name

반응형
Posted by 돌고래트레이너
생계/Oracle2021. 9. 15. 22:34

 oracle linux 에 oracle 19c 를 설치 해보자.

가상화머신은 oracle virtual box 를 사용하였다.  

아래 글에서 가상화머신을 다운 받을수 있다. 

 

https://riorio.tistory.com/403

 

가상머신 virtualbox mysql 설치 - 1. os 우분투 설치

가상머신에 mysql 을 설치해보자.. 예전에는 가상화머신을 vmware 를 많이 썼는데 유료로 바뀌기도 하고 크랙을 찾기도 쉽지않다. 반면 오라클 virtual box 는 언제 바뀔지 모르겠지만 아직까지는 무료

riorio.tistory.com


1. sw 다운로드

 - oracle linux

https://yum.oracle.com/oracle-linux-isos.html

위의 링크에서 full 로 다운을 받자.  

- oracle 19.3 

지금 21까지 나와있는데 19c 를 많이 사용하고 있으니 19c 를 다운받자. 

https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html


2. virtual box 리눅스 설치 

virtual box 실행 -> 머신 -> 새로만들기 

 

 메모리는 최소 1G 를 잡아줘야 에러없이 DB 설치를 무난하게 할수 있다. 

 


 

3. 오라클 설치 준비

yum -y install oracle-database-preinstall-19c


# vi /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500


# vi /etc/security/limits.d/oracle-database-preinstall-19c.conf
oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728


- 유저 및 그룹 수정

 # usermod -g dba -G dba oracle 

- selinux permissive 설정

# vi /etc/selinux/config
SELINUX=permissive


- 방화벽 해제
 
# systemctl stop firewalld
# systemctl disable firewalld
 

- 설치 경로 생성
 
mkdir -p /app/oracle/product/19.0.0/db_1/
mkdir -p /app/oradata
chown -R oracle:oinstall /app 
chmod -R 775 /app

## -p 옵션은 없는 경로를 만들어가면서 생성한다.  


- 서버에 Oracle Database 설치 미디어 업로드 후 권한 부여

 
# chown oracle:oinstall LINUX.X64_193000_db_home.zip
# ls -al /app/oracle/product/19.0.0/db_1/


- 오라클 계정 접속 후 .bash_profile 에 아래 내용 추가
  
# su - oracle
$ vi .bash_profile

---------------- .bash_profile -------------------------
# .bash_profile

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

export TMP=/tmp
export TMPDIR=$TMP

export LANG=C
export LC_ALL=C
export CV_ASSUME_DISTID=RHEL7.6

export ORACLE_HOSTNAME=oel.ora19
export ORACLE_UNQNAME=ora19
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1
export ORA_INVENTORY=/oraInventory
export ORACLE_SID=ora19
export DATA_DIR=/app/oradata
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


---------------- .bash_profile -------------------------

4. 오라클 설치 

runInstaller 실행 

DB 생성중에 실패했다면 나중에 디비만 다시 생성하자

=> dbca 

반응형

'생계 > Oracle' 카테고리의 다른 글

오라클 초기화 파라미터 파일  (0) 2021.09.20
sybase datetime view convert  (0) 2021.09.18
오라클 라이선스 lifetime support  (0) 2021.08.26
create view , any view 권한  (0) 2020.06.16
ORA-00942 에러 role 에 부여된 권한  (0) 2020.06.09
Posted by 돌고래트레이너
생계/Oracle2021. 8. 26. 19:00


오라클은 한번 라이센스를 구매하면 그걸로 끝이 아니다.
날짜가 지나감에 따라 제한된 support 만 제공된다.
오라클 공홈에 라이센스 정책에 대해서 잘 나와있다.
여기서는 간단하게만 정리하고, 자세한 내용은 글 가장 하단의 technical support policies
링크를 통해서 원문을 확인해보자.

- 오라클 lifetime support 종류
오라클의 새 버전이 출시되면 premier support 가 공급일로부터 5년간 가능.
이후, extended support 가 3년.
이후에도 새 버전으로 넘어가지 않으면 sustaining support 만이 유일한 선택지이다.
이 단계에서는 제한된 Software Update License & Support를 제공 받는다.


2021 년 현재는 많은 사이트에서 12.1 버전을 사용하고 있을거 같은데 extended support 가 얼마남지 않았다.


- 일부만 라이선스를 구매하는것
오라클을 한세트만이 아닌 여러세트를 사용하는 기업들이 많을 것이다.
비용을 줄이기 위해서 이 중 일부만 최신으로 유지하고 싶은 생각을 해볼수 있는데
문서에는 아래정도가 예외로 두는것 같다.


물론 이것은 공식적 입장이고 정확한 것은 오라클 영업담당에게 확인해보자

- oracle technical support policies
아래 링크에서 local language 를 선택하면 한글로 된 문서를 확인할수 있다.
https://www.oracle.com/support/policies.html

반응형
Posted by 돌고래트레이너
생계/MySQL2021. 8. 2. 15:14

mysql 에서는 테이블 조회할때 마다 read lock 을 잡고,

이경우 다른 세션에서 ddl 을 진행할수가 없다. 

 

sudo mysql -uroot -p

create database testdb;

create user 'test'@'%' identified by '1111';
grant all on testdb.* to 'test'@'%';

FLUSH PRIVILEGES;

use testdb

create table aaa ( a int);

insert into aaa values(1);
commit;

 

 터미널 하나를 열고 test 유저로 testdb 에 접속하자.

-- session A (test) 

sudo mysql -utest -p1111

use testdb


select * from aaa;

터미널 하나를 더 열고 ddl 을 진행해보자. 

-- session B (test2)

drop table aaa;

=> drop 이 진행되지 않고 대기상태에 빠짐. 

이 경우에는 

1. A세션 에서 commit;
2. A세션 에서 exit;

하는 식으로 lock 을 해소.

 

mysql 은 오토커밋이 디폴트로 되어있다.

오토커밋 환경에서는 위와 같은 조회만으로 다른 세션에서 ddl 대기가 생길일이 없다.

그러나 실제 운영환경에서는 아마도 오토커밋 안되게 하는 것이 대부분일 것인데  

여기에 익숙치 않으면 종종 이런 일들이 발생할수 있을것 같다. 

오토커밋을 안쓴다면 interactive_timeout 은 필히 바꿀 필요가 있다. 

반응형
Posted by 돌고래트레이너
생계/MySQL2021. 7. 31. 13:44

mysql 을 설치 직후 디폴트로 세팅된 변수 값들 중 무엇을 바꾸는게 좋을지 알아보자. 

여기에 나온 예시는 내가 경험해보니 바꿔야 함을 느낀 것들이다. 

사이트 환경은 저마다 다르니 그냥 참고해서 취할건 취한고 아니면 패스 하시길..

 

1. time out

 - interactive_timeout
  : 콘솔에서 mysqld와 Client의 connection 후 다음요청을 기다리는 시간

 - wait_timeout
  : 플러그인, API 등을 이용해 (PHP, JDBC) connection 후 다음요청을 기다리는 시간

   디폴트가 28880 인데 시간으로 환산하면 8시간이 넘는다.

  보통 운영을 이렇게 길게 설정할 필요는 없다.

  lock 을 잡고 sleep 에 빠지는 세션을 줄이기 위해서라도 조정은 필요하다. 

 

2. auto commit

 디폴트는 오토커밋이다. 

 오라클의 디폴트는 오토커밋을 하지 않는것이다.

여기에 익숙해져서 mysql 도 오토커밋을 안하는 것으로 변경을 고려해볼수 있다. 

 다만 mysql 은 select 후에 commit 을 하지 않으면 다른 세션에서 해당 테이블에 DDL 을 날리면 대기에 빠질수있다. 

 

3. 테이블 대소문자 구분 

lower_case_table_names 이라는 변수로 테이블명을 소문자로 바꾸는 것을 세팅할수 있다.

리눅스, 유닉스의 디폴트는 0 이고, 테이블명의 대소문자를 구분 하겠다는 뜻이다. 

Create table Abc ( a int);

Create table abc ( a int);

이런식으로 테이블 생성시 중복 에러 없이 생성이 된다.   

mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec)

lower_case_table_names = 0  :  테이블 생성 및 조회 시 대·소문자 구분한다.
lower_case_table_names = 1  :  테이블명이 모두 소문자로 변경된다. 
lower_case_table_names = 2  :  윈도우에서 대·소문자를 구분해서 테이블생성

윈도우는 1, 맥킨토시는 2 가 디폴트

 

대소문자를 구별했을때의 문제는 쿼리에서 table 이름을 대소문자 그대로 똑같이 입력해야 한다. 

그리고 윈도우에서 파일 시스템이 대소문자를 구분하지 않아서 문제가 발생할수 있다. 

## 이 설정과 상관없이 쿼리에서 alias 를 줄 경우, mysql 은 대문자면 대문자, 소문자면 소문자 그대로 써야 한다. 

select *  from abc A where A.col1 = '1'  (O)

select *  from abc A where a.col1 = '1'   (X)

 

4. isolation level 

디폴트는 repeatable read 이다. 

트랜잭션의 안정성과 동시성은 양립할수 없다. (lock 매커니즘을 사용한다면)

각 사이트 환경에 따라 적절한 트랜잭션 고립 레벨을 고려해볼수 있겠으나

보통 oracle 환경이 READ COMMITTED 였기 때문에 변경을 고려해볼수 있다. 

 

아래는 4가지 transaction isolation level 이다. 

1) read uncommitted 

   => dirty read 가능

2) read committed

   => non-repeatable read 가능

3) repeatable read

   => phantom read 가능 

4) serializable

 

반응형
Posted by 돌고래트레이너
생계/SQL2021. 7. 16. 16:42

트랜잭션 고립 수준에 대해서 알아보 ...기 전에

트랜잭션의 4 가지 속성에 대해서 알아보자

1. 트랜잭션의 ACID 속성

 - 원자성 ( Atomicity )
트랜잭션은 더 이상 쪼개질수 없는 최소한의 작업 단위.
부분적으로 성공하는 일이 없어야 함

 - 일관성 ( Consistency )
트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지해야한다

 - 격리성 ( Isolation )
트랜잭션끼리는 서로 영향을 주지 않고 독립적으로 실행되야함

 - 지속성 ( Durability )
커밋된 트랜잭션은 영원히 DB에 반영이 되어야 함

 

이 중 3번째 언급된 Isolation 의 level 에 대해서 정리할 것이다. 

 

2. 트랜잭션 격리 레벨

1) read uncommitted

  => 변경은 되었지만 아직 커밋이 되지 않은 레코드를 읽기 허용 (dirty read)

    완료되지 않은 작업이 롤백이 될 경우, 이를 읽고 있던 세션에서의 작업은 일관성의 문제가 발생

    대부분의 DBMS 는 디폴트로 허용하지 않음

 

2) read committed

  => 커밋이 완료된 레코드만 다른 세션에서 읽기가 허용됨. (oracle은 undo 를 통해 구현. DB2 등은 공유락으로 구현)

      1번 레벨에 비해서 일관성의 문제는 개선되었지만 non-repeatable read 문제 발생 

    * non-repeatable read

        한 트랜잭션 내에서 수행한 같은 쿼리가 중간에 들어온 쿼리 때문에 다른 결과를 리턴

     중간에 들어온 tx2 때문에 tx1 의 결과가 예상과 다른결과가 나오게 된다.   

 

3) repeatable read

      tx1 트랜잭션의  t1 시점의 쿼리에 for update 구문을 적용하면 중간에 들어온 tx2 는 대기를 하게 되고 

     tx1 은 일관성 있는 결과를 리턴하게 된다. 

    그런데 만약 update 가 아닌 중간에 insert 가 들어온다면 이것은 또 일관되지 않은 결과를 리턴하게 될 것이다.  

  * phantom read

  tx1 의 트랜잭션에서 상품의 합계가 t1 시점과 t4 시점이 서로 다른 일관성이 없는 결과를 리턴한다.

 

4) serializable

 중간에 삽입이되는 트랜잭션도 막아버리려면 고립 수준을 더 올려야 한다. 

set transaction isolation level serializable;

이것은 최고수준의 격리이며 일관성은 보장이 되지만 동시성은 상당히 떨어뜨리게 된다. 

 * oracle 은 scn 사용으로 lock 을 안쓰고도 일관성을 보장할수 있다. 

 

트랜잭션의 격리 레벨에 따라 일관성을 해치는 결과가 나올수있음을 인지하고 자신의 처한 환경에 따라 적절하게 대응해야 한다.

반응형
Posted by 돌고래트레이너
생계/MySQL2021. 6. 26. 16:52

 앞선 글에서 가상머신에 우분투를 설치하는 것을 알아보았다.

가상머신 virtualbox mysql 설치 - 1. os 우분투 설치

 

 이번 글에서는 본격적으로 mysql 을 설치해보자. 

 mysql 은 따로 다운 받아서 설치할수도 있지만 cmd 창에서 명령어 한줄이면 된다. 


1. mysql 설치 
 


sudo apt install git

sudo apt-get update
sudo apt-get install mysql-server


sudo systemctl start mysql
sudo systemctl enable mysql

sudo mysql -u root 

 

2. db client tool 설치

이제 디비에 접속하기 위한 툴을 설치해보자.

dbeaver 도 있고 oracle developer 도 있고 암꺼나 써도 되지만 여기서는 workbench 를 쓰겠다. 

workbench 는 아래 다운로드 링크를 따라가면 된다. 

 https://dev.mysql.com/downloads/file/?id=504530
 
c++ 이 필요하다. 아래 링크에서 다운받자.

 https://support.microsoft.com/ko-kr/topic/%EC%A7%80%EC%9B%90%EB%90%98%EB%8A%94-%EC%B5%9C%EC%8B%A0-visual-c-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-2647da03-1eea-4433-9aff-95f26a218cc0

 

지원되는 최신 Visual C++ 다운로드

시간을 최대한 활용하기 위한 구독

support.microsoft.com

 

 

3. db 접속 

 이제 workbench 에서 가상머신 mysql DB 에 접속해보자. 

- db에 외부 아이피 접속 허용

create user root@'%' identified by '1111';
grant all privileges on *.* to root@'%';
flush privileges;

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

my.cnf 수정 => bind-address = 0.0.0.0

- 방화벽 

sudo ufw allow out 3306/tcp
sudo ufw allow in 3306/tcp

 여기까지 했으면 mysql 을 재시작 해보자.

sudo service mysql restart

 
 - workbench 세팅 

 접속을 시도하면... 

 잘된다. 

 

### 에러메세지 별 접속 실패 시 조치 

 ssh 인증 실패 : 계정, 패스워드, 포트 확인해보자 

 

로컬pc 에서 cmd 창을 열어 key 를 다시 만들자

ssh-keygen -R 192.168.56.1

 

ssh 까진 된거다. mysql port 방화벽 확인해보자.

db 로그인 실패 : db계정, 암호, 외부접근 허용 확인 

반응형
Posted by 돌고래트레이너
생계/MySQL2021. 6. 26. 16:49

가상머신에 mysql 을 설치해보자..

예전에는 가상화머신을 vmware 를 많이 썼는데 유료로 바뀌기도 하고 크랙을 찾기도 쉽지않다. 

반면 오라클 virtual box 는 언제 바뀔지 모르겠지만 아직까지는 무료이다.

 

1. 다운로드

- virtual machine download

 https://www.virtualbox.org/wiki/Downloads
 => windows hosts

버추얼박스를 설치할 로컬pc 는 윈도우니까 windows hosts 를 선택 

  설치는 별거 없다. 그냥 next, next... 하면된다. 



- ubuntu linux download
 

  가상머신에는 리눅스를 설치할 예정이니 우분투 이미지를 받자 

 https://ubuntu.com/download
 Ubuntu 20.04.2.0 LTS =>  ubuntu-20.04.2.0-desktop-amd64.iso 



2. virtual machine, 우분투 설치

버추얼머신 에서 새로만들기 -> 버전 에서 64 bit ubuntu 선택 

 

메모리는 2G를, 디스크는 20G 를 할당하

# 리눅스에 64bit 가 안보인다면 bios 세팅 확인 : 가상화 enable

- 우분투 설치 

새로운 머신을 만들었으면 여기에 우분투를 설치하자

설정에서 저장소에서 아까 다운받은 우분투 이미지를 로드하자

 

한국어를 선택하고 설치를 하자. 

 

빠른설치를 위해 최소설치, 업데이트는 제외하자

mysql 을 사용할 user 를 생성

3. ssh client 설치 

가상머신에 리눅스 까지 설치했으면 로컬 터미널에서 ssh 로 붙어서 작업을 하자.

무료 ssh client 중에 putty 가 유명하지만 좀 구리다.

요즘은 mobaxterm 을 많이 쓰는것 같다. 

https://mobaxterm.mobatek.net/download.html
 

- 우분투에 ssh 설치

가상머신 우분투에는 ssh 가 설치되어있어야 한다. 

sudo apt-get install ssh

방화벽에 막혔다면 풀어주자

## sudo ufw allow ssh

- NAT rule

가상머신을 설치하고 ipconfig 명령어를 쳐보면 아래주소가 추가로 생긴다. 

로컬pc 는 가상머신을 저 ip 로 인식하는데 가상머신은 저 주소안에 

여러개의 게스트os 를 둘수가 있다. 

 

이제 가상머신의 ip 확인을 해야 하는데 그전에 아래 명령어를 먼저 쳐준다. 

sudo apt install net-tools

이제 ip 확인을 해보자. 

 

로컬pc 와 가상머신이 통신하려면 아래 같은 추가적인 작업을 해줘야 한다. 

버추얼머신의 설정 -> 네트워크 를 누른다 

 

이제 포트포워드 규칙에 따라서 로컬pc 에서 터미널로 접속할수 있다. 

 

여기까지 가상머신에 우분투 설치를 알아보았다. 

여기에 mysql 설치, 접속 하는 것 까지는 다음 글에서 알아보자. 

가상머신 virtualbox mysql 설치 - 2. mysql 설치 접속
 

 

반응형
Posted by 돌고래트레이너