반응형

V$SQLAREA 자료 사전

공유 - 폴 영역의 구문분석 결과를 제공

 ∙ 가장 많은 Disk-I/O가 발생한 SQL문을 제공

 ∙ 가장 많은 메모리를 사용한 SQL문을 제공

 ∙ 가장 많은 CPU 사용시간이 소요된 SQL문을 제공

 ∙ 사용자가 실행한 SQL문의 패턴 제공

 ∙ SORT 횟수, INVALIDATIONSQL문 제공

 

V$SQLAREA 결과 분석

SQL_TEXT

VERSION_COUNT

LOADS

INVALIDATIONS

PARSE_CALLS

SORT

SELECT * FROM DEPT

1

1

0

1

0

SELECT * FROM dept

1

1

1

1

0

SELECT * FROM DEPT ORDER BY 1

1

1

0

3

1

1) version_count : 같은 사용자가 실행하면 같은 version count 이지만 다른 사용자이면 count가 증가

2) load : Parsing SQL문이 library cache 영역에 저장된 횟수

3) invalidation : Parsing후 로더된 SQL문에서 참조된 테이블이 ALTER, DROP, ANALYZE되면

Parsing 정보를 재사용 할 수 없다

4) parse_call : 최초 Parsing후 재사용된 횟수

 

* 동일한 문장이 아닌 경우

1. 사용자 계정이 다르면 동일한 문장이 아님

2. SPACE의 개수가 틀리면 동일한 문장이 아님

3. 바인드 변수명 또는 변수의 데이터 타입이 틀려도 다른 문장

4. ,소문자가 틀려도 다른 문장

5. 라인, 들여쓰기 등이 틀려도 다른 문장

 

* 동일한 SQL문의 작성 지침

1. SQL문의 대문자 또는 소문자를 통일

2. 변수명은 SQL, 객체명, 변수명과 구분하기 위해 소문자로 작성

3. 다른 스키마의 테이블을 호출할 때는 "SCHEMA.테이블명작성

4. SQL문의 각 단어의 여백은 한 칸으로

5. SQL문의 내의 변수명은 변수 선언 기준 안에 따르며 해당 컬럼명을 접두어와 결합하여 사용

6. SQL문의 SELECT, FROM, WHERE절은 라인의 선두에 기술

'Study Note > Database' 카테고리의 다른 글

Index Organized Table (IOT)  (0) 2016.02.23
Index 생성 속도 향상 - parallel, nologging 옵션  (0) 2016.02.23
SQL*TRACE  (0) 2016.02.16
DBMS_XPLAN.DISPLAY 다량데이터 조회시 참고사항  (0) 2016.02.16
SQL TUNING - 기본  (0) 2016.02.15
반응형

SQL*TRACE

 

SQL*TRACE 기능

EXPLAIN PLAN 명령어와 함께 튜닝작업 시 자주 사용되는 기능

사용자가 실행한 SQL문에 대한 실행계획 만을 보여주는 EXPLAIN PLAN과는 달리 SQL*Trace 기능은

   SQL문의 실행계획과 더불어 실행 소요시간과 디스크 및 메모리부터 읽은 블록 수에 대한 정보도 포함

SQL*TRACE 기능에 의해 분석되는 결과는 운영체제 상에 생성

이 파일은 바이너리 형태이기 때문에 사용자가 직접 눈으로 확인할 수 없음

TKPROF 유틸리티를 사용하여 텍스트 파일형태로 변화하여 참조

init.ora 파일에 다음과 같은 파라미터 반드시 설정 필요

 

필요 파라미터

1) TIMED_STATISTICS : SQL문의 처리 시간 및 통계정보

2) SQL_TRACE : SQL문의 트레이스 기능을 사용 가능하게 해 주는 파라미터

3) USER_DUMP_DEST : SQL문의 분석된 결과가 저장될 경로를 지정하는 파라미터

4) MAX_DUMP_FILE_SIZE : 분석 결과가 저장될 트레이스 파일의 크기를 결정하는 파라미터

 

-- 파라미터 세팅

alter session set sql_trace=true;

 

-- sql 구문 실행

select * from dept;

 

--확인

select * from v$parameter

where name like 'user_dump%';

 

cd /oracle11/app/diag/rdbms/testdb/testdb/trace

 

$ls -rtl

 

 

가장 최신인 맨 아래 것

-rw-r----- 1 oracle oinstall 1761 Feb 16 14:36 testdb_ora_3913.trc

 

--분석

[oracle@localhost trace]$

tkprof testdb_ora_3913.trc T3913.tkf SYS=NO EXPLAIN=SYSTEM/MANAGER  

 

 

[oracle@localhost trace]$ cat T3913.tkf

 

SQL*TRACE 결과 분석

COUNT : SQL문이 처리될 때 분석, 실행, 인출을 각 몇 번씩 실행 했는지를 나타냄

CPU : SQL문의 처리 단계별로 CPU를 몇 초 사용했는지 나타냄

ELAPSED : SQL문의 처리 단계별로 처리된 소요시간

DISK : 테이블에 저장되어 있는 데이터 파일로부터 데이터를 읽어오기 위해 읽은 블록 수

CUTRRENT : 메모리에 저장된 데이터를 가져오기 위해 읽은 버퍼 블록 수

(현 세션에만 유효한 블록 수 ,주로 의 수행 시)

QUERY : 읽기 일관성을 만족하는 블록 수

 

'Study Note > Database' 카테고리의 다른 글

Index 생성 속도 향상 - parallel, nologging 옵션  (0) 2016.02.23
V$SQLAREA 자료 사전  (0) 2016.02.16
DBMS_XPLAN.DISPLAY 다량데이터 조회시 참고사항  (0) 2016.02.16
SQL TUNING - 기본  (0) 2016.02.15
DDL  (0) 2016.02.04
반응형

다량의 데이터를 조회하게 되면

select * from LARGE_EMP;

alter session set statistics_level=all;

select * from table(dbms_xplan.display_cursor(null,null, 'allstats last'));

 

 Orange Tool은

 

데이터의 일부만 표시하게 된다. 이때 Text Output을 확인하면 결과가 다 나오지 않고 나온 일부에 대해서만 분석한다. 

모든 작업의 계획을 보고싶다면  다음 작업을 수행하고 해야 한다.

 

'Study Note > Database' 카테고리의 다른 글

V$SQLAREA 자료 사전  (0) 2016.02.16
SQL*TRACE  (0) 2016.02.16
SQL TUNING - 기본  (0) 2016.02.15
DDL  (0) 2016.02.04
DML  (0) 2016.02.04
반응형
KBA_9032

구글 딥마인드(Google DeepMind) 인공지능(AI, Artificial Intelligence) 알파고(AlphaGo)와 한국 프로바둑기사 이세돌 9단과 대국이 확정됐다.

구글의 인공지능 자회사 구글 딥마인드(Google DeepMind) CEO 데미스 하사비스(Demis Hassabis)는 2016년 3월 9일 자사의 인공지능 바둑 프로그램 알파고(AlphaGo)가 한국 프로 바둑기사 이세돌 9단과 서울에서 바둑 대국을 펼친다고 밝혔다. 

1997년 IBM의 슈퍼컴퓨터 딥블루(Deep Blue)가 세계 체스 챔피언 게리 카스파로프(Garry Kasparov)를 꺾었지만, 바둑은 여전히 컴퓨터가 사람을 이길 수 없는 영역으로 통해왔다는 점에서 알파고의 승리 여부가 주목 받고 있다. 

알파고는 바둑을 마스터한 최초의 인공지능 프로그램으로, 딥러닝 신경망을 통하여 마치 인간처럼 게임을 배우며, 그 사용이 단순히 바둑에만 국한되는 것이 아니라 모바일 애플리케이션과 무인자동차, 로봇 등에 활용될 가능성이 높다. 

알파고와 이세돌 9단의 대국은 12억원의 상금을 놓고 2016년 3월 9일에 시작해 10일, 12일, 13일, 15일 다섯 차례 진행되며, 모든 대국이 유튜브(YouTube)를 통해 실시간 생중계될 예정이다. 다만, 대국 장소와 방식, 방송을 통한 중계 등 세부 사항은 2016년 2월 중 추가 발표하기로 했다. 
 
알파고는 이세돌 9단과의 대결에 앞서 중국 출신 유럽 바둑 챔피언 판후이(Fan Hui) 2단을 5:0으로 5전 전승을 거둔 바 있다. 

알파고의 딥러닝 알고리즘은 2016년 1월 28일자의 네이처(Nature)지에 논문으로 발표됐다. 알파고가 사용한 것은 바둑판의 위치를 판단하는 가치 네트워크(Value networks)와 어디를 두어야 할지를 선택하는 폴리쉬 네트워크(Policy networks)로 구성된 딥뉴럴네트워크(DNN, Deep Neural Networks)이다. 이 DNN을 학습시키는 방법에는 사람에 의한 지도학습(Supervised learning)과 데이터 기반의 비지도학습(Unsupervised learning)이 있다. 

그런데 이번에 알파고의 DNN은 전문 바둑기사들(human expert games)에 의한 지도학습과 스스로 바둑 게임(self-play)을 하면서 배우는 강화 학습(reinforcement learning)이라는 새로운 콤비(a novel combination)라는 방식으로 학습했다. 

DeepMind CEO DemisHassabis-01-300dpi

▲ 구글 딥마인드(DeepMind) CEO 데미스 하사비스(Demis Hassabis)

결국 사람에 의한 지도학습의 폴리쉬 네트워크(SL. policy network)로 먼저 학습을 하고 그 이후에 스스로 하는 강화학습 폴리쉬 네트워크(RL. policy network)를 통해 폴리쉬 네트워크(Policy networks)와 가치 네트워크(Value networks)를 구성한 것이다. 

그 결과 이 DNN은 스스로 바둑 게임을 하면서 수천 건의 게임을 시뮬레이션하는 몬테칼로 나무 서치 프로그램(Monte Carlo tree search programs)의 수준에 올랐다.

또한 몬테칼로 시뮬레이션과 가치 네트워크와 폴리쉬 네트워크를 합쳐 새로운 서치 알고리즘(algorithm)도 개발했다. 이 새로운 서치 알고리즘을 이용해, 알파고의 DNN은 다른 유사한 인공바둑프로램들을 대상으로 게임한 결과 승률이 99.8%에 달했으며, 결국 유럽 챔피언인 판후이(Fan Hui) 2단을 5:0으로 이길 수 있었다.

데미스 하사비스(Demis Hassabis) CEO는 "규칙은 간단할지 몰라도 사실 바둑은 굉장히 복잡한 게임이다. 돌을 놓는 위치에 있어 경우의 수가 우주에 있는 원자의 수보다 많으며, 체스와 비교할 때 경우의 수가 10의 100제곱 이상 많다"라며, “이러한 복잡성은 컴퓨터가 바둑을 두는 것을 아주 어렵게 만들었으며, 따라서 바둑을 인공지능을 연구하는 사람들에게 아주 매력적인 도전과제로 만들었다”고 말했다. 

http://www.itnews.or.kr/?p=17528

반응형

Shell Script

쉘 실행 b.sh

1) . ./b.sh -> login sh로 실행(bash)

2) ./test.sh -> test.sh에 명시된 sh로 실행 -> 실행권한 필요!!

3) sh test.sh ->본쉘(sh)로 실행

4) bash test.sh - >bash로 실행

5) ksh test.sh - > ksh로 실행

 

변수의 기본

변수를 사용하기 전에 미리 선언하지 않으며, 변수에 처음 값이 할당되면서 자동으로 변수가 생성

모든 변수는 문자열(String)’로 취급

변수 이름은 대소문자를 구분

변수를 대입할 때 ‘=’ 좌우에는 공백이 없어야 함

 

※ 변수의 입력과 출력

‘$’문자가 들어간 글자를 출력하려면 ‘’로 묶어주거나 앞에 ‘\’를 붙임

“”로 변수를 묶어줘도 된다.

 

(expr은 띄어쓰기 잘해야함 let은 띄어쓰기 상관없음) b.sh 참고

 

※ 파라미터(Parameter) 변수

파라미터 변수는 $0, $1, $2...의 형태를 가짐

전체 파라미터는 $*로 표현

)

명령어

yum

-y

install

gttp

파라미터 변수

$0

$1

$2

$3

 

기본 if

 형식

if [ 조건 ]

then

참일 경우 실행

fi

[조건에 문장이 올 때는 대괄호 x]

 

 

조건 문에 들어가는 비교 연산자

문자열비교

결과

문자열1”=“문자열2”

두 문자열이 같으면 참

문자열1”!=“문자열2”

두 문자열이 같지 않으면 참

-n "문자열

문자열이 null(빈 문자열)이 아니면 참

-z "문자열

문자열이 null(빈 문자열)이면 참

산술 비교

결과

수식1 -eq 수식2

두 수식 또는 변수가 같으면 참

수식1 -ne 수식2

두 수식 또는 변수가 같지 않으면 참

수식1 -gt 수식2

수식1이 크다면 참

수식1 -ge 수식2

수식1이 크거나 같으면 참

수식1 -lt 수식2

수식1이 작으면 참

수식1 -le 수식2

수식1이 작거나 같으면 참

!수식

수식이 거짓이라면 참

 

elif


 형식

if [조건]

then

참일 경우 실행

 

elif [조건]

then 참일 경우 실행

else 거짓일 경우 실행

fi

 

 형식

if [조건]

then

참일 경우 실행

else

 

if [ 조건 ]

then 참일 경우 실행

else 거짓일 경우 실행

fi

fi


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

※ 파일과 관련된 조건

파일 조건

결과

-d 파일이름

파일이 디렉터리면 참

-e 파일이름

파일이 존재하면 참

-f 파일이름

파일이 일반 파일이면 참

-g 파일이름

파일이 set-group-id가 설정되면 참

-r 파일이름

파일이 읽기 가능이면 참

-s 파일이름

파일 크기가 0이 아니면 참

-u 파일이름

파일에 set-user-id가 설정되면 참

-w 파일이름

파일이 쓰기 가능 상태이면 참

-x 파일이름

파일이 실행 가능 상태이면 참

- 만 자주 씀 알아둘 것

 

case~esac (1)

if문은 참과 거짓의 두 경우만 사용 (2중분기)

여러 가지 경우의 수가 있다면 case(다중분기)

ex)

#!/bin/sh

case "$1" in

start|START|Start) &&&&& Yes|Y|Yes|YES)

echo "시작~~“;; &&&&& [nN]*) : n,N으로 시작하는 모든 문자

stop)

echo "중지~~“;;

restart)

echo "다시시작~~“;;

*)

echo "뭔지 모름~~“;;

esac

 

 

※ AND,OR 관계 연산자

and ‘-a' 또는 ’&&‘를 사용

or‘-o' 또는 ’||‘를 사용

 

ex )

#!/bin/sh

echo "보고 싶은 파일명을 입력하세요.“

read fname

if [ -f $fname && -s $fname ] <=> [ -f $fname -a -s $fname ] : 차이점 -a는 두구문에서만 사용

then

head -5 $fname

else

echo "파일이 없거나, 크기가 0입니다.“

fi

 

 

반복분 -for(1)

 

 형식

for 변수 in 1 2 3....

do

반복할 문장

done

 

ex)

#!/bin/sh

for pal in Tom Dick Harry Joe

do

echo "Hi $pal"

done

echo "Out of File"

 

반복문 -for(2)

현재 디렉터리에 있는 셸 스크립트 파일(*.sh)의 파일명과 앞 3줄을 출력하는 프로그램

 

ex)

#!/bin/sh

for fname in $(ls *.sh)

do

cat $fname >>

done

 

반복문 -while(1)

조건 식이 참인 동안 계속 반복

 

#!/bin/sh

while [ 1 ]

do

echo "CentOS 7"

done

 

반복문 -while(2)

비밀번호를 입력받고, 비밀번호가 맞을 때 까지 계속 입력받는 스크립트

 

#!/bin/sh

echo "비밀번호를 입력하세요.“

read mypass

while [ $mypass != "1234 ]

do

echo "틀렸음. 다시 입력하세요.“

read mypass

done

echo "통과~~“

 

until

while 문과 용도가 거의 같지만, until문은 조건식이 참일 때 까지 (=거짓인 동안) 계속 반복한다.

위 예 4행을 until [ $mypass = "1234" ]

 

사용자 정의 함수

 

 형식

함수이름 () {

-- 함수를 정의 내용들

}

 

함수이름 --함수를 호출

 

ex) #!/bin/sh

myFunction(){

echo "함수 안으로 들어 왔음

returu

}

echo "프로그램을 시작합니다.“

myFunction

echo "프로그램을 종료합니다.“

 

함수 파라미터 사용

 

ex) 

#!/bin/sh

hap(){

echo `expr $1 + $2`

}

echo "10더하기 20을 실행합니다

hap 10 20

 

eval

문자열을 명령문으로 인식하고 실행

 

#!/bin/sh

str="ls -l anaconda-ks.cfg"

echo $str

eval $str

 

set$(명령어)

리눅스 명령어를 결과로 사용하기 위해서는 $(명령어) 형식을 사용

결과를 위치변수로 사용하고자 할 때는 set과 함께 사용

 

#!/bin/sh

echo "오늘 날짜는 $(date)입니다,“

set $(date)

echo "오늘은 $4 요일 입니다.“

 

cut 명령어

cut 명령어는 텍스트 파일 내용 중 부분을 지정하여 출력하는 명령어이다.

옵션

-b : byte, 특정 자리만 출력

-c : character(자리수)로 구분하여 출력

-d : 인자로 받은 문자열을 기준으로 필드를 구분함

-f : -d 옵션과 함께 사용되며, 구분된 필드를 출력

 

-b옵션 사용방법

형식

의미

N

N자리

-b1

N,M,C

N자리,M자리,O자리

-b1,3,5

N-

N자리부터 마지막까지

-b10-

N-M

N자리부터 M자리까지

-b5-10

-M

처음부터 M자리까지

-b-10

 

tr 명령어

표준 입력을 표준 출력으로 내보낼 때, 선택한 문자들에 대해서 치환이나 삭제를 수행함

 

 형식

tr 'String1' 'String2' < filename

 

옵션

-d : 제거

-s : 반복된 문자에 대해서 한 번 치환 (반복된 문자를 하나의 문자로 인식)

 

tee 명령어

명령어의 결과를 화면과 파일로 동시에 출력하는 명령어

 

 문법

명령어 | tee [옵션] 파일명

옵션

-a : 파일에 내용 이어 쓰기

-i : interrupt 무시

ex)

#who | tee -a test.out

 

awk 명령어

자료 처리 및 리포트 생성에 사용하는 프로그래밍 언어

 

 문법

awk [옵션] [‘[‘/찾을문자열/’] { 명령어 }‘] 파일명 

 

필드값 변수

$0 -> 모든 필드 (행의 값 그대로)

$1 -> 첫 번째 필드

$2 -> 두 번째 필드...

$(NF-1) -> 마지막 전 필드

$NF -> 마지막 필드

 

산술연산

echo | awk '{print 3+2}'

 

grep과 같이 패턴 검색 (행 단위)

cat /etc/passwd | grep apache

cat /etc/passwd | awl /apache/

awk /apache/ /etc/passwd

 

마지막 필드의 출력

ls -l test.out | awk '{print $NF}'

 

구분자의 사용

문법

awk -F 구분자 ‘{print $위치순번}’ 파일

예제

find ~ -name "*.sh"|awk -F/'{print $NF}'

 

grepcut의 결합 사용

awk -F : '/user1/{print "username is " $1}' /etc/passwd

 

sed 명령어

비대화형 편집기

명령 행에서 직접 편집 명령어와 파일을 지정하여 작업한 후 결과를 화면으로 확인

원본을 손상하지 않는다.

 

 문법

sed [옵션] ‘명령어파일명

옵션

n : 해당 패턴 or 실행 결과만을 출력

(기본적으로 출력되는 모든 행을 막음)

명령어

p : print 명령 사용자가 지정한 행을 출력

 

ex) '1,3p' -> 1행부터 3행까지 출력

ex) '/yang/p' -> yang이 포함된 행 출력

d : delete명령 사용자가 지정한 행을 삭제

ex) ‘3d' -> 3번째 행을 삭제

ex) '3,$d' -> 3번째 행부터 마지막까지 삭제

r : read 명령 사용자가 지정한 행을 읽어온다

ex) '3r 읽어들일파일‘ [입력할파일]

---> 입력할파일의 3번째 행에 읽어들일 파일의 내용을 읽어와 출력

a\ : append 명령 검색된 패턴 아래 행에 내용을 덧붙인다.

ex) '/패턴/a\내용‘[파일명]

--> 패턴에 일치하는 행의 다음에 내용을 삽입하여 출력

i\ : insert명령 검색된 패턴 위에 내용을 덧붙인다. a\와 사용법은 동일

s : 검색패턴을 치환함

ex) 's/string1/string2/g' 파일명

유용한 표현식

sed '10,$s/^/#/' 파일명 : 10~마지막 줄 모두 주석처리

sed '/^#/d' 파일명 : 주석처리 줄 모두 삭제

sed 's/^/ /' 파일명 : 모든 라인에 1칸 들여쓰기

sed 'a\\' 파일명 : 모든 줄마다 공백라인 추가

sed '/^$/d' 파일명 : 공백라인 제거

 

배열

1차원 배열에 최대 1024개의 요소를 가질 수 있다.

배열의 요소에는 단어나 정수를 지정할 수 있다

배열 첨자는 0부터 시작한다

 

공통 쉘 배열선언

array[0]=tom

array[1]=dan

array[2]=bill

 

배열 호출

# echo ${array[0]}

tom

# echo ${array[*]}

tom dan bill

# echo ${#array[*]}

3

du :

 

※ 이외 유용한 명령어...

sort -k -n -r 5 : 5번째 열 정렬,숫자로인식,reverse

 

echo $? - > 이전 명령 오류가 없을시 0값 리턴 *********************

 

split -l 1000 test1.txt test1_ : 라인별로 나누기

-b 100m test1.txt test1_ : 용량별로 나누기

"   -d : 숫자로 구분 (파일명)

“ -d -a[n] : n자리 수로 파일명 숫자 구분

 

head -n : n만큼 앞에서 잘라서 출력

 

tail -n : n만큼 뒤에서 잘라서 출력

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15
[Linux] 기본 명령어  (0) 2016.02.15
반응형

Shell & Shell 내장 명령어

 

chsh [옵션] [사용자명] : 기본 셸 바꾸기

-s shell : 지정하는 셸(절대 경로)로 로그인 셸을 바꾼다

-l : /etc/shells 파일에 지정된 셸을 출력

 

셸 내장 명령

echo [-n] [문자열...] : 화면에 한 줄의 문자열을 출력

-n : 마지막에 줄 바꿈을 하지 않는다.

 

[특수문자 *]

ls * : 현재 디렉토리의 모든 파일과 서브 디렉토리를 나열. 서브 디렉토리의 내용도 출력

cp * /tmp : 현재 디렉토리의 모든 파일을 /tmp 디렉토리 아래로 복사

ls -F t* : t, tmp, temp와 같이 파일명이 t로 시작하는 모든 파일의 이름과 종류를 출력

cp *.txt ../ch3 : 확장자가 txt인 모든 파일을 상위 디렉토리 밑의 ch3 디렉토리로 복사

ls -l h*d : 파일명이 h로 시작하고 d로 끝나는 모든 파일의 상세 정보를 출력

 

[ 특수문자 ?[] ]

ls t?.txt : t 다음에 임의의 한 문자가 오고 파일확장자가 txt인 모든 파일 이름 출력

ls -l tmp[135].txt : tmp1.txt, tmp3.txt, tmp5.txt 출력

ls -l tmp[1-3].txt : tmp1.txt, tmp2.txt, tmp3.txt 출력

ls [0-9]* : 파일명이 숫자로 시작하는 모든 파일 목록

ls [A-Zaz]*[0-9] : 영문으로 시작하고 숫자로 끝나는 모든 파일 목록 출력

 

[ 특수문자 ~- ]

~ : 홈 디렉토리

- : 이전 디렉토리

 

[특수문자 ; | ]

; : 왼쪽부터 차례대로 ;로 실행

| : 동시에 실행

 

[특수문자 ‘’“”]

echo '$SHELL' : $SHELL 문자열이 출력

echo "$SHELL" : 환경변수 출력

 

[특수문자 ``]

echo "Today is `date`" : date 명령어는 실행 됨

 

 

배시 셸 환경 설정

 

set : 셸 변수와 환경 변수 모두 출력

env : 환경변수만 출력

export [-n] [셸 변수] : 환경 변수 설정하기

-n : 환경 변수를 셸 변수로 바꿈

ex ) export SOME=test

unset 변수 : 지정된 변수 해제

 

에일리어스와 히스토리

alias 이름 =‘명령’ ex ) alias rm = 'rm -r '

 

unalias 에일리어스 : 에일리어스 삭제

 

history : 명령 입력 기록

 

명령 재실행하기 : !

!! : 바로 직전에 실행한 명령 재실행

!번호 : 히스토리에서 해당 번호의 명령 재실행

!문자열 : 히스토리에서 해당 문자열로 시작하는 마지막 명령 재실행

 

배시 셸 시스템 환경 설정 파일 

시스템 환경 설정 파일

파일

기능

/etc/profile

본 셸이나 본 셸과 호환되는 모든 셸에 공통으로 적용되는 .profile 파일

배시 셸의 경우 /etc/bash.bashrc 파일을 실행

배시 셸이 아닌 경우 프롬프트를 #(root 사용자)$(일반 사용자)로 설정한다

/etc/profile/*.sh파일을 실행

/etc/bash.bashrc

시스템 공통으로 적용되는 .bashrc 파일이다

기본 프롬프트를 설정

sudo 명령과 관련된 힌트를 설정

/etc/profile.d/*.sh

언어나 명령별로 각각 필요한 환경을 설정

필요시 설정 파일을 추가

 

사용자 환경 설정 파일

파일

기능

~/.profile

경로 추가 등 사용자가 정의하는 환경 설정

.bashrc 파일 있을시 실행

~/.bashrc

히스토리의 크기 설정

기본 에일리어스나 함수 등 설정

~/.bash_aliases

사용자가 정의한 에일리어스를 별도 파일로 저장

~/.bash_logout

로그아웃 시 실행할 필요가 있는 함수 등을 설정

 

file [파일명] : 파일의 종류를 알려줌

 

groups [사용자명] : 사용자가 속한 그룹을 알려줌

 

권한

파일

디렉터리

읽기

파일을 읽거나 복사할 수 있다

ls 명령으로 디렉토리 목록을 볼 수 있다

쓰기

파일을 수정, 이동, 삭제할 수 있다(디렉터리에 쓰기 권한있어야함)

파일을 생성하거나 삭제 가능

실행

파일을 실행할 수 있다 (셸 스크립트나 실행파일의 경우)

cd 명령을 사용할 수 있다. 파일을 디렉터리로 이동하거나 복사 가능

 

 

접근 권한 변경 명령

chmod [옵션] 파일 또는 디렉토리 : 파일이나 디렉터리의 접근 권한을 변경

-R : 하위 디렉터리까지 모두 변경 가능

   

기본 접근 권한 확인하고 변경 

umask [옵션] [마스크 값] : 기본 접근 권한을 출력하거나 변경

-S : 마스크 값을 문자로 출력

 

※ 프로세스 관련 명령어

ps [옵션] : 현재 실행 중인 프로세스의 정보를 출력

-e : 시스템에서 실행중인 모든 프로세스 정보 출력

-f : 프로세스의 자세한 정보 출력

-u uid : 특정 사용자에 대한 모든 프로세스 정보 출력

-p pid : pid로 지정된 특정 프로세스의 정보를 출력

 

pgrep [옵션] [패턴] : 지정한 패턴과 일치하는 프로세스의 정보를 출력

-x : 패턴과 정확히 일치하는 프로세스 정보 출력

-n : 패턴을 포함하고 있는 가장 최근 프로세스 정보 출력

-u : 사용자 이름 : 특정 사용자에 대한 모든 프로세스 출력

-l : PID와 프로세스의 이름 출력

-t term : 특정 단말기와 관련된 프로세스의 정보 출력

 

kill [시그널] PID ... : 지정한 시그널을 프로세스에 보낸다

-2 : 인터럽트 시그널을 보낸다 (ctrl+c)

-9 : 프로세스 강제 종료한다

-15 : 프로세스가 관련된 파일을 정리하고 프로세스를 종료. 종료가 안될 수도 있음

 

pkill 명령을 이용해 프로세스 종료 

명령이름으로 찾아 종료하므로 같은 명령이 여러개 검색될 경우 한 번에 모두 종료

ex) ps - fp $(pgrep -x man)

 

포그라운드 작업과 백그라운드 작업

sleep 100 -> 포그라운드 작업

-> sleep 명령이 끝날때까지 기다림

 

백그라운드 작업

sleep 100& -> 백그라운드 작업

[1] 6852

$ -> 프롬프트가 바로 나와 다른 명령을 실행할 수 있다.

 

jobs [%작업 번호] : 백그라운드 작업을 모두 보여준다. 특정 작업 번호를 지정하면 해당 작업의 정보만 보여줌

 

작업 전환 명령

명령

의미

ctrl + z stop [%작업번호]

포그라운드 작업을 일시중지

bg [%작업번호]

작업번호가 지시하는 작업을 백그라운드 작업으로 전환

fg [%작업번호]

작업번호가 지시하는 작업을 포그라운드 작업으로 전환

ctrl + c

작업 종료하기

 

nohup [명령]& : 로그아웃한 뒤에도 백그라운드 작업을 계속 실행

 

정해진 시간에 반복 실행

crontab [-u 사용자 ID] [옵션] [파일 이름] : 사용자의 crontab 파일을 관리

-e : 사용자의 crontab 파일을 편집

-l : crontab 파일의 목록을 출력

-r : crontab 파일을 삭제

 

00 10 * * * /bin/ls -l > /home/yang/crontab : 10시 정각에 모든날에 crontab 폴더에 저 명령해서 나오는 값을 저장

 
※ 압축, 압축해제 명령어

tar 명령[옵션] [아카이브 파일] 파일 이름 : 파일과 디렉터리를 묶어 하나의 아카이브 파일 생성

-cvf : 아카이브생성

-tvf : 아카이브 내용보기

-xvf : 아카이브 압축 해제

-uvf : 아카이브 업데이트

-rvf : 아카이브에 파일 추가

 

gzip [옵션] 파일 이름 : 파일을 압축함

-d : 압축 해제

-l : 압축된 파일의 정보를 보여줌

-r : 하위 디렉토리를 이동하여 파일 압축

 

gunzip 파일 이름 : gz로 압축된 파일의 압축을 푼다.

 

 

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15
[Linux] 기본 명령어  (0) 2016.02.15
반응형

Vi 에디터

 

[입력모드]

i : 현재 커서 앞에 입력

a : 현재 커서 뒤에 입력

o : 커서가 위치한 다음 행 입력

I : 커서가 위치한 행의 첫 칼럼 이동 입력

A : 커서가 위치한 행의 마지막 칼럼 이동 입력

O : 커서가 위치한 행의 앞에 입력

 

[파일 저장, 종료]

:q : 그냥 종료

:q! : 강제 종료

:w [파일명] : 작업 내용 저장 (파일 명 지정 시 새 파일로 저장)

:wq,:wq!,(명령모드에서) ZZ : 작업한 내용 저장하고 vi 종료

 

[커서 이동 명령]

h, j, k, l : , 아래, ,

^,0 : 현재행의 처음

$ : 현재 행의 마지막

- : 커서를 앞 행의 처음

+,Enter : 커서를 다음 행의 처음

H : 커서를 화면 맨 위로 이동

M : 커서를 화면 중간 행으로 이동

L : 커서를 화면의 맨 아랫 행 이동

w : 다음 단어 첫 글자로 이동

b : 앞 단어 첫 글자로 이동

e : 단어의 마지막 글자로 이동

 

[화면 이동 명령]

^u(ctrl+u) : 반 화면 위로 이동

^d(ctrl+d) : 반 화면 아래로 이동

^b(ctrl+b) : 한 화면 위로 이동

^f(ctrl+f) : 한 화면 아래로 이동

^y(ctrl+y) : 화면을 한 행만 위로 이동

^e(ctrl+e) : 화면을 한 행만 아래로 이동

 

[특정 행 바로 이동]

G(shift+g) : 파일 마지막 행으로 이동

행 번호G : 지정한 행 번호로 이동

:행 번호 : 지정한 행 번호로 이동 (마지막 행 모드)

:$ : 파일의 마지막 행으로 이동(마지막 행 모드)

 

[내용 수정하기]

r : 커서가 위치한 글자를 다른 글자로 수정

cw,#cw : 커서 위치부터 현재 단어의 끝가지 수정 #에는 수정할 단어의 수를 지정 ex)3cw

s,#s : 커서 위치부터 esc 키 입력까지 수정 #에는 수정할 글자 수

cc : 커서가 위치한 행 내용 모두 수정

C : 커서 위치부터 행의 끝까지 수정

 

[내용 삭제하기]

x,#x : 커서 위치의 글자 삭제. #에는 삭제할 글자 수 지정

dw, #dw : 커서 위치의 단어 삭제 , #에는 삭제할 단어 수 지정

dd, #dd : 커서 위치의 행 삭제, #에는 삭제할 행의 수 지정

D : 커서 위치부터 행의 끝까지 삭제

 

[명령 취소하기]

u : 명령 취소

U : 해당 행에서 한 모든 명령 취소

:e! : 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업

 

[복사하기,잘라내기,붙이기]

yy, #yy : 커서가 위치한 행 복사. #에는 복사할 행 수 지정

p : 커서가 위치한 행 아래쪽에 붙임

P : 커서가 위치한 행 위쪽에 붙임

dd,#dd : 삭제와 같은 기능이지만 잘라내는 기능 포함

 

[범위 지정 명령]

1,$,% : 1행부터 마지막 행 까지 지정

1, . : 1행부터 커서가 있는 행까지 지정

., $ : 커서가 있는 행부터 마지막 행까지 지정

,-3 : 현재 행과 이전 세 번째 행까지 ( 총 네 행) 지정

10,20 : 10행부터 20행까지 지정

 

[마지막 행 모드에서 복사,잘라내기,붙이기]

:#y : #으로 지정한 행을 복사 ex) 3y3행을 복사

:<범위>y : 범위로 지정한 행을 복사 ex)2,4y2~4행을 복사

:#d : #으로 지정한 행을 잘라냄(삭제) ex) 3d3행을 잘라냄

:<범위>d : 범위로 지정한 행을 잘라냄(삭제) ex) 1,4d1~4행을 잘라냄

:pu : 현재 행 다음에 버퍼의 내용을 붙임

:#pu : #으로 지정한 다음의 버퍼 내용을 붙임 ex) 4pu

 

[검색하기]

/문자열 : 문자열 아래 방향으로 검색

?문자열 : 문자열을 위 방향으로 검색

n : 찾던 방향으로 다음 문자열 검색

N : 역방향으로 다음 문자열을 검색

 

[바꾸기]

:s/문자열1/문자열2/ : 커서가 위치한 행에서 첫 번째로 나오는 문자열1을 문자열2로 바꾼다

:s%/문자열1/문자열2/g : 파일 전체에서 모든 문자열1을 문자열2로 바꾼다

:<범위>s/문자열1/문자열2/ : 범위 내 모든 행의 각 행에서 첫 번째로 나오는 문자열1을 문자열2로 바꿈

:<범위>s/문자열1/문자열2/g : 범위 내 모든 행에서 문자열1을 문자열2로 바꾼다

:<범위>s/문자열1/문자열2/gc : 범위 내 모든 행에서 문자열1을 문자열2로 바꿀 때 수정할지 여부를 묻는다.

 

[파일 관련 명령]

:r 파일명 : 지정한 파일을 읽어들여 현재 커서 위치에 삽입

:e 파일명 : 지정한 파일로 전환 (기존 파일을 :w 로 저장한 뒤에 실행)

:n : vi 시작 시 여러 파일을 지정했을 경우 다음 파일로 작업 이동

:! [셸 명령] : vi 작업을 잠시 중단하고 셸 명령 실행 (enter키를 입력해야 함)

:sh : vi를 잠시 빠져나가 셸 명령을 실행한다 (vi로 돌아오려면 exit 명령을 입력해야 한다)

 

 

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] 기본 명령어  (0) 2016.02.15
반응형

date : 날짜와 시간을 출력

 

clear : 화면을 지운다

 

man 명령어 : 명령 사용법을 화면에 출력

 

passwd : 사용자 계정의 비밀번호 변경

 

exit : 터미널 종료

 

cd [디렉토리명] : 디렉토리 이동

[기준]

/home/user1에서 /etc/passwd 이동

상대경로 : 현재위치를 기준으로 명시

ex) cd ./../../etc/passwd

절대경로 : 루트를 기준으로 명시

ex) cd /etc/passwd

 

 

pwd : 현재 위치 확인 (절대경로출력)

 

ls [옵션] 파일 또는 디렉토리 : 디렉토리 내용 출력

-a : 숨김 파일 출력

-d : 지정 디렉토리 자체 정보 출력

-i : inode 출력

-l : 파일 상세 정보 출력 (파일 종류 - : 일반 파일, d : 디렉토리 파일, l : 심벌릭링크)

-A : .(마침표)..를 제외한 모든 파일 목록 추가

-F : 파일 종류 표시 ( * : 실행파일, / : 디렉토리, @ : 심볼릭 링크 )

-L : 심볼릭 링크 파일 일 때 원본 파일 정보 출력

-R : 하위 디렉토리 목록까지 출력

-r : 최신이 맨아래 (DESC)

-t : 수정 시간

 

mkdir [옵션] 디렉토리명1, 디렉토리명2, ... : 디렉토리 생성

-p : 하위 디렉토리까지 한번에 생성

 

cat [옵션] 파일명... : 파일 내용 출력

-n : 행 번호 출력

 

more [옵션] 파일명 : 파일 내용을 화면 단위로 출력 (space bar: 다음화면 출력, Enter : 한줄 씩 스크롤)

+행 번호 : 출력 시작할 행번호

 

less 파일명 : 파일 내용을 화면 단위로 출력

( j :한줄 씩 다음 행, k : 한줄 씩 이전 행, ctrl + f : 다음 화면 이동, ctrl +b : 이전 화면 이동)

 

tail [옵션] 파일명 : 파일의 뒷부분 몇 행을 출력

+행 번호 : 지정한 행부터 끝까지 출력

-숫자 : 화면에 출력할 행의 수

-f : 파일 출력이 종료되지 않고 주기적으로 출력

 

 

cp [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2 : 파일이나 디렉토리 복사

-i : 파일명 2가 존재하면 덮어 쓸 것 인지 물어봄

-r : 디렉토리를 복사할 때 지정

* 이름이 존재 시 덮어씀

 

mv [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2 : 파일을 이동

-i : 파일명2/데릭토리명2 존재시 덮을 것인지 물어봄

* 이름 존재시 이름명 변경

 

rm [옵션] 파일명/디렉토리명 : 파일을 삭제

-i : 지정한 파일을 삭제할지 물어봄

-r : 지정한 디렉토리를 삭제

 

ln [옵션] 원본파일명 링크파일명 : 파일 링크 생성

-s : 심벌릭 링크 파일 생성

* 하드링크는 링크는 되있어 하나수정시 같이 바뀌지만 원본을 삭제해도 그대로 남아있음

심볼릭 링크는 주소값만 가져와 용량차지를 하지 않으며 원본 삭제 시 사용 불가능함

 

touch [옵션] 파일명 : 빈 파일 생성

-a : 접근 시간 변경

-m : 수정 시간 변경

-t : [[CC]YY]MMDDhhmm[.ss] : 시간 직접 입력 ( 오래되었을시는 시간표시 안됨 )

 

grep [옵션] 패턴 [파일명] : 지정한 패턴을 포함하는 행을 찾음 ex ) grep root /etc/passwd

-i : 대문자, 소문자 모두 검색

-l : 해당패턴 포함 파일 이름 출력

-n : 행 번호 출력

 

find 경로 검색 조건 [동작] : 조건에 맞는 파일을 지정한 위치에서 찾음

옵션 -name filename : 파일 이름으로 검색

-type 파일 종류 : 파일 종류로 검색

-user loginID : 지정한 사용자가 소유한 모든 파일 검색

-perm 접근 권한 : 지정한 사용 권한과 일치하는 파일 검색

동작 -exec 명령 {} \; : 검색된 파일에 명령을 실행

-ok 명령 {} \; : 사용자의 확인을 받아서 명령을 실행

 

whereis [옵션] 명령 : 지정된 경로에서 명령의 바이너리 파일이나 매뉴얼 파일의 위치를 찾음

-b : 바이너리 파일만 검색

-m : 매뉴얼 파일만 검색

-s : 소스 파일만 검색

 

which [명령어] : 명령어 파일의 위치를 찾아 경로나 에일리어스 출력

 

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15
반응형

-- 튜닝 수업 환경 설정

(대소문자 구분을 끄기위해서 설정)

alter system set sec_case_sensitive_logon=FALSE;

 

ALTER USER SYSTEM IDENTIFIED BY MANAGER;

DROP USER SCOTT CASCADE;

 

CREATE USER SCOTT IDENTIFIED BY TIGER

 

GRANT CONNECT,RESOURCE,DBA TO SCOTT;

 ( pfile일 경우 spfile로 변경 )

 

1. 대용량 샘플 dmp 파일 imp 수행

 

[oracle@localhost ~]$ imp system/MANAGER full=y file=NEW_SCOTT_10.DMP;

 

-- imp 확인 (20table)

SELECT * FROM DBA_TABLES

WHERE OWNER='SCOTT';

 

20 rows selected.

 

-- public synonym 제공

select 'create public synonym '||TABLE_NAME||' for '||OWNER||'.'||TABLE_NAME||';'

from dba_tables

where owner='SCOTT';

 

EXPLAIN PLAN 명령어

 

SQL문의 실행계획과 상태 값을 제공하는 명령어

 

1) 옵티마이저의 유형 (공식기반 또는 비용기반)

2) 옵티마이저에 의해 결정된 실행 계획

3) 실행 계획의 선택 기준(비용계싼 결과 등)

4) SQL문을 실행하면서 사용한 DB구조의 상태 값

- 사용된 데이터버퍼 캐시 블록 수

- 데이터 파일로부터 읽은 블록 수

- 네트워크를 통해 전송된 데이터의 바이트 수

- Sorting 작업 발생 시 사용된 메모리 블록 수

- 처리된 데이터 량

 

SET AUTOTRACE 명령어

 

PLAN_TABLE을 생성 후 한번만 설정해주면 SQL문이 실행될 때 마다 실행계획을 한 화면에 출력

 

 문법

SET AUTOTRACE [ ON | OFF | TRACE | TRACEONLY ]

- ON : SQL문의 실행 결과와 실행계획 그리고 통계정보를 보여주는 옵션

- OFF : 어떤 결과도 보여 주지 않음

- TRACEONLY : 실행계획과 통계정보 만을 보여줌

 

* 켜놨다면 사용후 OFF로 반드시 바꿔줘야함 (조회할때마다 뜨기때문에)

 

SQL> SET AUTOTRACE TRACEONLY;

SQL> SELECT * FROM DEPT;

*

아래부터 올라감

sorts (momory) : PGA ( PGA 사용하다 모자라면 TEMP로 넘어감 )

sorts (disk) : TEMP

 

V$SQL_PLAN

이미 실행된 SQL에 대한 실행계획을 참조할 경우 사용

Shared pool 영역에서 직접 추출된 실행 정보

영원히 보관할 수는 없음

SQL문의 HASH_VALUEADDRESS값을 알아야 함

   => V$SQL, V$SQLAREA에서 참조

-- hash_value, address 찾기

select sql_text

, hash_value

, address

from v$sqlarea

where upper(sql_text) like '%DEPT%'

 

 

 

 select id

, lpad ('', depth) || operation operation

, options

, object_name

, optimizer

, cost

from v$sql_plan

where hash_value = &1

and address = '&2'

start with id = 0

connect by ( prior id = parent_id

and prior hash_value = hash_value

and prior child_number = child_number )

order siblings by id, position;

 

 

결과 분석 (Execution Plan)

SQL> set autotrace traceonly

SQL> select empno, ename, job, sal, dname

from emp, dept

where emp.deptno = dept.deptno;

 

 

SQL> CREATE INDEX DEPTNO_IDX ON EMP(DEPTNO);

= > 다시조회 해도 full scan

* 인덱스를 만들어도 데이터량이 적어서 풀스캔하게됨

 

-- INDEX를 타도록 Hint 설정

select /*+index(emp DEPTNO_IDX) */

empno, ename, job, sal, dname

from emp, dept

where emp.deptno=dept.deptno;

 

 

 

 

 

1) Parsing 단계에서 Data Dictionary로 부터 얻는 테이블의 상태정보 및 통계정보를 참조하기 위해 읽는 블록 수

* 다시 조회하면 줄어듬

2) DML 문이 실행될 때 발생하는 변경 전 데이터를 잠시 저장하기 위한 임시공간

3) SQL문이 실행될 때 디스크 상에 존재하는 테이블 및 인덱스를 저장하기 위한 메모리공간

* 가장 눈여겨 봐야할 튜닝 Point!

4) 데이터가 실제로 존재하는 디스크 상의 데이터 파일로부터 읽혀진 데이터 블록 수

* 다시 조회하면 줄어듬

5) DML문을 실행했을 때 변경 전 데이터와 변경 후 데이터를 로그버퍼 영역에 백업하기 위한 블록 수

6) 클라이언트와 서버 간의 전송된 데이터를 나타냄

* 튜닝 Point가 아님

7) sorting 작업을 위해 사용한 PGA 공간

* sorts (momory) : PGA ( PGA 사용하다 모자라면 TEMP로 넘어감 )

8) sorting 작업을 위해 사용한 TEMP 사용 공간

* sorts (disk) : TEMP

==> 7,8 번이 둘다 많을시 시스템 튜닝을 고려

9) SQL문이 실행된 후 조건을 만족하는 행의 수

* 튜닝 Point가 아님

 

 

 

 

 

※ Update문 기본 튜닝

-- BIG_EMP에도 있는 사원은 COMMSAL에 더해서 LARGE_EMPSALUPDATE 하려고 한다.

-- (SQL구문을 튜닝해서 더 효과적으로 만들기)

 

(튜닝 전)

update large_emp a

set a.sal = ( select b.comm + a.sal

from big_emp b

where b.empno=a.empno);

(튜닝 후)

update large_emp a

set a.sal = a.sal + (select b.comm

from big_emp b

where b.empno=a.empno);

 

 

* consistent gets 천만건 정도 차이나는걸 볼 수 있다

 더 좋은 효과를 위해선 index를 걸어주면 1/4로 주는 걸 볼 수 있다.

'Study Note > Database' 카테고리의 다른 글

SQL*TRACE  (0) 2016.02.16
DBMS_XPLAN.DISPLAY 다량데이터 조회시 참고사항  (0) 2016.02.16
DDL  (0) 2016.02.04
DML  (0) 2016.02.04
[Tool] Orange Character Set 설정하기  (0) 2016.02.04
반응형
구글

구글이 현재 인공지능 구글 챗봇(Google chatbot)이 탑재된 모바일 메신저를 개발 중이라는 보도가 나왔다. 이 모바일 메신저는 애플의 시리처럼 챗봇과 대화로 필요한 정보를 검색하거나 음식 또는 물건을 주문하는 개인비서 역할을 하면서 메신저까지 겸하는 기능이다.

외신들에 따르면 구글은 이번 모바일 메신저 개발을 위해 적어도 1년 전부터 개발하고 있는 것으로 알려졌는데, 구글의 새로운 모바일 메신저 서비스 출시 시기는 아직 공표된 바가 없다.

구글은 모바일 메신저의 성능은 아직까지 알려진 바 없지만, 이 서비스가 현실에 실제로 적용된다면, 기상관련 정보나 레스토랑의 자세한 정보까지 모바일 메신저를 통해서 얻을 수 있을 것으로 예상된다. 월스트리트저널(WSJ)은 향후 인공지능 기술로 사용자의 취향이나 기호를 저장해 반영하는 맞춤형 서비스를 제공할 계획도 가지고 있다고 전했다. 

그렇다면 구글이 모바일 메신저를 개발하는 의도는 무엇일까? 업계에서는 구글은 현재 행아웃을 서비스 하고 있지만 페이스북은 물론 중국 텐센트의 위챗, 왓츠앱, 네이버의 라인 등에 뒤져 있는 모바일 메신저 시장에서 새로운 기회를 노리기 위해 인공지능 기반 모바일 메신저 서비스를 개발 중이라는 분석이다.  

특히, 구글의 검색서비스에서 고객들의 이탈을 방지할 수가 있다. 현재 페이스북은 메신저를 통해 검색서비스를 제공하고 있다. 페이스북 사용들이 메신저를 통해 검색서비스를 활용하다 보면 자연스럽게 구글 검색서비스와 멀어지기 때문이다. 이러한 부분을 구글이 우려한 것으로 분석된다. 

결국 모바일 메신저 시장에선 그렇다 할 성공작이 없는 구글로서는 모바일 메신저 개발로 페이스북의 전략인 메신저 플랫폼을 구축하려는 의도로 보인다. 페이스북은 현재 인공지능 ‘M’ 탑재를 내부적으로 시험하고 있다. 

또 다른 기회를 노리는 구글의 전략이 모바일 메신저 시장에서 어떤 결과가 나올지 이목이 집중되고 있다.

 

URL : http://www.itnews.or.kr/?p=17085

 

+ Recent posts