pdf 10 page
* DW ( Exadata의 시초 )
* HP V.x machine ( exadata 의 전신 )
* Exadata X machine 장점 >>> smart scan = cell offloading 2장만 알아도 된다 2장이 핵심
full rack 하루 운영중 올려놓고 사용하는 공간은 대략 100G
cell * 14 * 12 disk * 600G(HP<성능> or 1.2 HC<용량>) = 100T + FlashDisk 900G + DB * 8(최대)
half rack
cell * 7 (OEL5.x) * 12 disk + DB * 4 machine
quater rack
cell * 3 * 12 disk + DB * 2
cell디스크는 디스크대로 따로 DB는 DB디스크대로 따로 운영함
----------------
ODA(mini exa)
===========================================
pdf 11page
Exadata 영상내용
초기에는 DW에만 강점이 있었으나 플래시디스크를 장착하면서 DW뿐만 아니라 OLTP에서도 사용이 가능하다
세가지 컴포넌트가 있는데 첫째 데이터베이스 요소가 있는데 이것은 DB 영역
three component => DB Cell Network
머신이기에 하드웨어쪽 장비에 치중이 많이 됨 fan cpu memory power supply nic card
최근 장비에는 파워서플라이가 4개가 들어감 Redundancy 파워 서플라이(영상은 2개들어갔음)
db와 cell은 스위치장비로 연결되서 통신 인피니밴드방식이며 초당 40Gbps로 함
x-3부터는 초당 80Gbps로 나옴 Gb/s<bit> GB/S<byte>
11gR2 11.2.0.1에서만 exa 구동이 됨
db와 스토리지간의 데이터 전송 속도가 빨라야먄 퍼포먼스가 좋아짐 < 그래서 IORM이 존재 >
바닥에 스위치 장비가 있는데 이건 다른 lack과 연결할 때 사용되는 장비
인피니밴드 네트워크 L4스위치가 연결되는 것은 1 storage 2 Database
DB와 스토리지간의 데이터 전송 속도를 인피니밴드가 향상시킬 것이다
I/O Resource Manager IORM<기억할것> I/O에 대한 리소스 매니징
Exa cell의 구조
zeon Cpu 2개 4 flash card(disk) x-2 machine에서 96g x-3(400g),4(900g) 늘어남
pci카드에 플래시 메모리 반도체가 장착됨(DB머신이지만 H/W에 대한 이해가 없으면 다루기 힘듬)
Exa system network DB H/W 4개에 대한 개념이 잡히지 않으면 관리하기가 힘들다
Exa 장비자체를 관리하는 것은 EM을 통해 다루는게 제일 편리하다
보통 Exa장비의 최대관리 갯수는 linux OS 26개 이것을 통합하여 관리하려면
monitoring Tools인 12c cloud control을 사용해야 한다 <EM안의 기능>
cell의 장점 2장이 중요한 이유
smart scan intelligent exadata storage servers
hybrid(조합) columnar(컬럼지향적) compression /// bigdata의 하둡도 이 기법을 쓴다
EHCC 엑사 전용의 압축 기법 RDBMS의 OLTP basic 압축기법(row지향적)보다 더 뛰어나다
10:1 100g를 10g로 줄일 수 있다
EHCC에는 두가지 기법이 있음
Archive 15배 (historical data들 보관용 데이터들) 최대 50배까지 나옴 500g짜리가 10g가 됨
warehouse 10배
압축 기법은 다양한 용도로 사용이 가능하다
IORM
ERP, EDW, CRM, HR, Supply chain, Data Mart 이런 다양한 용도로 구성이 가능하다
Cell자체를 이런식으로 클러스터링 해서 구성할 수 있다
HA SAME 방식으로 구현되어 있다
preconfig pretest 즉 완제품이고 다 완성되서 나가는 제품이다.
-- virtual box 사용
환경설정>입력>호스트키>ctrl+art사용하면 간편
--제공한 virtual Box To Exadata image 계정 정보
DB server : root/welcome1, oracle/oracle 192.168.56.102
cell server : root/welcome1 56.101
celladmin/welcome 56.103
cellmonitor/welcome 56.104
cell01에서
[root@cell01 ~]# cd /opt/oracle/cell/cellsrv/deploy/config/
[root@cell01 config]# ls
alerts.xml cellinit.ora <핵심>
[root@cell01 config]# vi cellinit.ora
ipaddress1=192.168.56.101/21 체크
수정된 파라미터 파일을 받아서 기존건 모두 지우고 가져다 붙여넣기 하면 됨
ip는 해당 머신마다 바꿔서 넣는다
[root@cell01 config]# cellcli
CellCLI: Release 11.2.2.1.0 - Production on Sun Dec 06 17:46:30 PST 2015
Copyright (c) 2007, 2009, Oracle. All rights reserved.
Cell Efficiency Ratio: 54M
CellCLI> list cell;
cell01 online
파라미터 바꾼 후 (교수님께 받은 텍스트 파일을 기존 내용을 다 지우고 새로 붙여 넣는다)
[root@cell01 config]# cellcli
CellCLI: Release 11.2.2.1.0 - Production on Sun Dec 06 17:48:45 PST 2015
Copyright (c) 2007, 2009, Oracle. All rights reserved.
Cell Efficiency Ratio: 54M
CellCLI> alter cell restart services all;
Stopping the RS, CELLSRV, and MS services...
The SHUTDOWN of services was successful.
Starting the RS, CELLSRV, and MS services...
Getting the state of RS services...
running
Starting CELLSRV services...
The STARTUP of CELLSRV services was successful.
Starting MS services...
The STARTUP of MS services was successful.
[root@cell01 config]# vi /etc/hosts
127.0.0.1 cell01.example.com cell01 <-체크
192.168.56.101 cell01.example.com cell01
192.168.56.102 database.example.com database
192.168.56.103 cell02.example.com cell02
192.168.56.104 cell03.example.com cell03
DB쪽에서 인스턴스가 두개 있는데 orcl과 .asm
[oracle@database ~]$ env | grep ORACLE
[oracle@database ~]$ . oraenv
ORACLE_SID = [oracle] ? orcl
The Oracle base has been set to /etc/oracle
[oracle@database ~]$ env | grep ORACLE
ORACLE_SID=orcl
ORACLE_BASE=/etc/oracle
ORACLE_HOME=/etc/oracle/oracle
[oracle@database ~]$ vi /etc/oracle/oracle/sqlplus/admin/glogin.sql
define_editor='/bin/vi'
set sqlp '_connect_identifier@&_user> '
set timing on
set lines 200 pages 1000
set serveroutput on
[oracle@database ~]$ lsnrctl serv
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 06-DEC-2015 18:03:00
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: database.example.com, pid: 2647>
(ADDRESS=(PROTOCOL=tcp)(HOST=database.example.com)(PORT=9102))
The command completed successfully
[oracle@database ~]$ vi .bashrc
alias ss='sqlplus / as sysdba'
alias tns='cd $ORACLE_HOME/network/admin'
alias dbs='cd $ORACLE_HOME/dbs'
alias ta='tail -f /etc/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log'
alias tr='cd /etc/oracle/diag/rdbms/orcl/orcl/trace'
orcl@SYS> select host_name, instance_name, status, archiver
2 from v$instance;
HOST_NAME INSTANCE_NAME STATUS ARCHIVE
---------------------------------------------------------------- ---------------- ------------ -------
database.example.com orcl OPEN STOPPED
[oracle@database ~]$ . oraenv
ORACLE_SID = [orcl] ? +ASM
The Oracle base remains unchanged with value /etc/oracle
[oracle@database ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.2.0 Production on Sun Dec 6 18:12:46 2015
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Automatic Storage Management option
SQL>
12*3 36개 가지고 있는데 디스크 그룹이 셀 3개를
cd는 셀디스크 gd는 그리드 디스크
[oracle@database admin]$ cd /etc/oracle/grid/sqlplus/admin/
[oracle@database admin]$ ls
glogin.sql help libsqlplus.def plustrce.sql pupbld.sql
[oracle@database admin]$ vi glogin.sql
alias ss='sqlplus / as sysdba'
alias tns='cd $ORACLE_HOME/network/admin'
alias dbs='cd $ORACLE_HOME/dbs'
alias ta='tail -f /etc/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log'
alias tr='cd /etc/oracle/diag/rdbms/orcl/orcl/trace'
+ASM@SYS> select group_number, path, mount_status from v$asm_disk_stat;
72 rows selected.
Elapsed: 00:00:00.01
[oracle@database ~]$ asmcmd -p
ASMCMD [+] > lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 4096 4194304 8640 1616 2360 -372 0 N DATA/
MOUNTED NORMAL N 512 4096 4194304 7488 6564 680 2942 0 N RECO/
[oracle@database ~]$ ps -ef | grep dbw
oracle 2482 1 0 16:49 ? 00:00:00 asm_dbw0_+ASM
oracle 2629 1 0 16:50 ? 00:00:02 ora_dbw0_orcl
oracle 31348 3150 0 18:32 pts/1 00:00:00 grep dbw
현재 인스턴스가 2개 잘 올라가 있는걸 확인할 수 있다.
인지니어라면 작업 전 시나리오를 생각해보자
+DATA +RECO에서 RECO를 쪼개서 +DBFS공간을 만들것이다
1) 디스크 그룹을 깬다
2) 쪼개서 다시 붙이고 새로운 디스크그룹 DBFS를 만들어준다
이걸 따로 만들어서 사용하면 fuse <filesystem in userspace> S/W 속도가 최대 6Gbps
1 2 계층 이더넷 계층
08:00:27:C2:5E:3E
OUI S#
TCP는 대용량을 쪼개서 던지기에 불합리하다 그리하여 UDP를 사용함
RDS를 UDP에 붙였음 Exa의 속성을 부각하기 위해서 UDP보다 훨씬더 처리량이 크다
RDS는 zero loss를 추구한다
각가의 디스크 그룹은 그 위에 cellsrv가 달려있다
각각의 cellsrv에 data를 각기 나누는 IDB가 있고 cell의 언어로 쿼리를 바꾼다
cell이 각기 필요한 것만 걸러서 올린다 offload 즉 smartscan이고 IDB는 이걸 전달한다.
RDS는 OSI 7계층의 헤더 추가를 스킵해서 진행한다.(해당 단계의 정보를 다 가지고 있다)
rds image 추가
=================================================================
오후 2-7부터
복구시 서버의 USB 포트를 통해 복구
cell server 당 12개 disk
정식버전은 0~11까지 vm은 1~12
X2(세로) -> X3(가로)
ERP Disk group으로 따로 관리가 됨
Exa의 flash가 필요한 이유는 퍼포먼스 서비스 가용성의 증가
getconf WORD_BIT
getconf LONG_BIT
[oracle@database ~]$ skgxpinfo
udp
[root@cell01 config]# cd /etc/pam.d/
[root@cell01 pam.d]# vi su
su sudo sudo-i su-l
[root@cell01 pam.d]# vi su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
다 라이브러리로 구성되어 있다
[root@cell01 pam.d]# vi login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session include system-auth
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session optional pam_keyinit.so force revoke
pam_selinux.so 이게 라이브러리다
pam_access.so pam_keyinit.so pam_permit.so pam_tally2.so
pam_ccreds.so pam_krb5 pam_pkcs11.so pam_tally.so
pam_chroot.so pam_krb5afs.so pam_postgresok.so pam_time.so
pam_console.so pam_krb5.so pam_pwhistory.so pam_timestamp.so
pam_cracklib.so pam_lastlog.so pam_rhosts_auth.so pam_tty_audit.so
pam_debug.so pam_ldap.so pam_rhosts.so pam_umask.so
pam_deny.so pam_limits.so pam_rootok.so pam_unix_acct.so
pam_echo.so pam_listfile.so pam_rps.so pam_unix_auth.so
pam_env.so pam_localuser.so pam_securetty.so pam_unix_passwd.so
pam_exec.so pam_loginuid.so pam_selinux.so pam_unix_session.so
pam_faildelay.so pam_mail.so pam_shells.so pam_unix.so
pam_filter pam_mkhomedir.so pam_smb_auth.so pam_userdb.so
pam_filter.so pam_motd.so pam_smbpass.so pam_warn.so
pam_ftp.so pam_namespace.so pam_stack.so pam_wheel.so
pam_group.so pam_nologin.so pam_stress.so pam_winbind.so
pam_issue.so pam_passwdqc.so pam_succeed_if.so pam_xauth.so
[root@cell01 security]# pwd
/lib/security
이 라이브러리들을 커널이 사용한다
orcl@SYS> @?/sqlplus/admin/plustrce.sql
orcl@SYS>
orcl@SYS> drop role plustrace;
drop role plustrace
*
ERROR at line 1:
ORA-01919: role 'PLUSTRACE' does not exist
Elapsed: 00:00:00.21
orcl@SYS> create role plustrace;
Role created.
Elapsed: 00:00:00.08
orcl@SYS>
orcl@SYS> grant select on v_$sesstat to plustrace;
Grant succeeded.
Elapsed: 00:00:00.19
orcl@SYS> grant select on v_$statname to plustrace;
Grant succeeded.
Elapsed: 00:00:00.01
orcl@SYS> grant select on v_$mystat to plustrace;
Grant succeeded.
Elapsed: 00:00:00.01
orcl@SYS> grant plustrace to dba with admin option;
Grant succeeded.
Elapsed: 00:00:00.03
orcl@SYS>
orcl@SYS> set echo off
orcl@SYS> grant plustrace to sh, scott,hr, system;
Grant succeeded.
orcl@SYS> conn hr/hr
Connected.
orcl@HR> set autot trace exp
orcl@HR> select last_name from employees
2 where length(last_name)>5;
Elapsed: 00:00:00.08
Execution Plan
----------------------------------------------------------
Plan hash value: 2228653197
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5 | 40 | 1 (0)| 00:00:01 |
|* 1 | INDEX FULL SCAN | EMP_NAME_IX | 5 | 40 | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(LENGTH("LAST_NAME")>5)
인덱스도 cell에 있다 최적화는 full scan이지만 인덱스 역시 cell에서 가져온다
orcl@SYS> grant alter session to hr, sh, scott;
Grant succeeded.
orcl@SH> alter session set cell_offload_processing=false;
Session altered.
Elapsed: 00:00:00.13
orcl@SH> select count(cust_id) from mycustomers
2
orcl@SH> set autot trace exp
orcl@SH> select count(cust_id) from mycustomers;
Elapsed: 00:00:00.06
Execution Plan
----------------------------------------------------------
Plan hash value: 1658800864
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 4894 (1)| 00:00:59 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS STORAGE FULL| MYCUSTOMERS | 1239K| 4894 (1)| 00:00:59 |
----------------------------------------------------------------------------------
orcl@SYS> show parameter cell < 모두 알아야 함
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cell_offload_compaction string ADAPTIVE
cell_offload_decryption boolean TRUE < 복호화(false일 경우 DB가 다함)
cell_offload_parameters string
cell_offload_plan_display string AUTO
cell_offload_processing boolean TRUE
orcl@SH> set autot trace exp
orcl@SH> alter session force parallel query;
Session altered.
Elapsed: 00:00:00.00
orcl@SH> select avg(s.amount_sold) from customers cu, sales s
2 where cu.cust_id = s.cust_id
3 and cu.cust_credit_limit > 5000;
Elapsed: 00:00:00.33
Execution Plan
----------------------------------------------------------
Plan hash value: 2736956778
-----------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 19 | | 21508 (1)| 00:04:19 | | | | | |
| 1 | SORT AGGREGATE | | 1 | 19 | | | | | | | | |
| 2 | PX COORDINATOR | | | | | | | | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10002 | 1 | 19 | | | | | | Q1,02 | P->S | QC (RAND) |
| 4 | SORT AGGREGATE | | 1 | 19 | | | | | | Q1,02 | PCWP | |
|* 5 | HASH JOIN | | 9210K| 166M| 9872K| 21508 (1)| 00:04:19 | | | Q1,02 | PCWP | |
| 6 | JOIN FILTER CREATE | :BF0000 | 918K| 8969K| | 5678 (1)| 00:01:09 | | | Q1,02 | PCWP | |
| 7 | PX RECEIVE | | 918K| 8969K| | 5678 (1)| 00:01:09 | | | Q1,02 | PCWP | |
| 8 | PX SEND HASH | :TQ10000 | 918K| 8969K| | 5678 (1)| 00:01:09 | | | Q1,00 | P->P | HASH |
| 9 | PX BLOCK ITERATOR | | 918K| 8969K| | 5678 (1)| 00:01:09 | | | Q1,00 | PCWC | |
|* 10 | TABLE ACCESS STORAGE FULL| CUSTOMERS | 918K| 8969K| | 5678 (1)| 00:01:09 | | | Q1,00 | PCWP | |
| 11 | PX RECEIVE | | 12M| 106M| | 9140 (1)| 00:01:50 | | | Q1,02 | PCWP | |
| 12 | PX SEND HASH | :TQ10001 | 12M| 106M| | 9140 (1)| 00:01:50 | | | Q1,01 | P->P | HASH |
| 13 | JOIN FILTER USE | :BF0000 | 12M| 106M| | 9140 (1)| 00:01:50 | | | Q1,01 | PCWP | |
| 14 | PX BLOCK ITERATOR | | 12M| 106M| | 9140 (1)| 00:01:50 | 1 | 28 | Q1,01 | PCWC | |
|* 15 | TABLE ACCESS STORAGE FULL| SALES | 12M| 106M| | 9140 (1)| 00:01:50 | 1 | 28 | Q1,01 | PCWP | |
-----------------------------------------------------------------------------------------------------------------------------------------------------
<BF0000 블룸필터 PX COORDINATOR merge시킨다.
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("CU"."CUST_ID"="S"."CUST_ID")
10 - storage("CU"."CUST_CREDIT_LIMIT">5000)
filter("CU"."CUST_CREDIT_LIMIT">5000)
15 - storage(SYS_OP_BLOOM_FILTER(:BF0000,"S"."CUST_ID"))
filter(SYS_OP_BLOOM_FILTER(:BF0000,"S"."CUST_ID"))
parallell 쿼리를 쓸 때 등장하는 것이 블룸필터다
SPPINM KSPPSTVL
------------------------------ ------------------------------
_cell_fast_file_create TRUE
_cell_fast_file_restore TRUE
KSPPINM KSPPSTVL
------------------------------ ------------------------------
_disable_cell_optimized_backup FALSE
orcl@SYS> select name, value from v$sysstat
where name = 'cell physical IO bytes saved during optimized file creation';
NAME VALUE
---------------------------------------------------------------- ----------
cell physical IO bytes saved during optimized file creation 20971520
orcl@SYS> create tablespace exa_test1 datafile '+DATA' size 100m;
Tablespace created.
orcl@SYS> drop tablespace exa_test1 including contents and datafiles;
Tablespace dropped.
cd /mnt/
mkdir shared
mount -t vboxsf shared /mnt/shared/
cd shared/
rpm -Uvh sysstat-7.0.0-3.el5.i386.rpm
warning: sysstat-7.0.0-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing... ########################################### [100%]
1:sysstat ########################################### [100%]
[root@cell01 shared]# iostat
[root@cell01 shared]# vi /etc/fstab
vboxsf /mnt/shared ext3 defaults 0 0
- INCLUDING CONTENTS : TABLESPACE에 Data가 이미들어있을 경우 들어있는 내용을 포함해서 모두 삭제 합니다.
- CASECADE CONSTRAINTS : PRIMARY KEY가 설정되어 있는 경우에 child 의 FORIEGN KEY를 삭제하고 TABLESPACE를 삭제 합니다.
ASMCMD> ls
DATA/
RECO/
ASMCMD> cd DATA
ASMCMD> ls
ORCL/
ASMCMD> cd ORCL
ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
spfileorcl.ora
ASMCMD> cd DATAFILE/
ASMCMD> ls
EXAMPLE.265.831529823
SH.267.831532213
SYSAUX.257.831529211
SYSTEM.256.831529207
UNDOTBS1.258.831529213
USERS.259.831529213
orcl@SYS> show parameter cell
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cell_offload_compaction string ADAPTIVE
cell_offload_decryption boolean TRUE
cell_offload_parameters string
cell_offload_plan_display string AUTO
cell_offload_processing boolean TRUE < cell이 있고 없고의 차이
결국 cell도 파라미터 조정
power off할 때는 database부터 끄고
power on 할 때는 cell부터 킨다.
ETL이란?
ETL은 데이터를 추출 변환 적재한다는 의미로 동종 또는 이기종 데이터 소스로부터 데이터를 추출한 후 쿼리 또는 분석을 위해 적절한 포맷 / 프로그래밍의 변환 / 개발 규약을 정의한 후 최종 목표로 데이터 로드하는 것
'스터디북' 카테고리의 다른 글
Exadata Summary (0) | 2015.12.08 |
---|---|
<12/08> Passion (0) | 2015.12.08 |
<12/01> 살아봤으면 해 (0) | 2015.12.01 |
<11/30> Deeper Deeper (0) | 2015.11.30 |
<11/28> 너의 결혼식 (0) | 2015.11.28 |