Ao provisionar um novo DB System, temos a opção de escolher o tipo de workload, entre Transaction processing e Data warehouse. Conceitualmente todos já tem uma ideia sobre as diferenças entre OLTP e OLAP e a própria interface da OCI apresenta um breve resumo para qual tipo de processamento cada opção é destinada.

Mas na prática, o que muda na configuração do DB System quando selecionamos cada uma dessas opções?

Esta é uma pergunta que geralmente as pessoas me fazem e que pretendo responder neste post, pois pode ser uma curiosidade que talvez muitos tenham a respeito sobre essa opção dos DB Systems.

Existe diferença na configuração ou layout de discos do ASM?

Não. Ambos são criados com 2 diskgroups (DATA e RECO), com a mesma distribuição de tamanho de discos e com os mesmos atributos nos diskgroups.

OLTP:

DW:

Ambos os DB Systems possuim o diskgroup DATA com 4 TB, sendo composto por 4 discos de 1 TB cada um:

Existe diferença do BlockSize ?

Não, ambos usam bloco de 8K.

Quais parâmetros de inicialização mudam?

Parâmetros do DBCS OLTP:

*._datafile_write_errors_crash_instance=false
*._db_writer_coalesce_area_size=16777216
*._disable_interface_checking=TRUE
*._enable_numa_support=FALSE
*._file_size_increase_increment=2143289344
*._fix_control='18960760:on'
*._gc_policy_time=20
*._gc_undo_affinity=TRUE
*.audit_file_dest='/u01/app/oracle/admin/oltp_gru1n5/adump'
*.audit_sys_operations=TRUE
*.audit_trail='db'
*.compatible='19.0.0.0'
*.control_files='+RECO/OLTP_GRU1N5/CONTROLFILE/current.256.1126132675'
*.control_management_pack_access='DIAGNOSTIC+TUNING'
*.cpu_count=0
*.cursor_sharing='EXACT'
*.db_block_checking='OFF'
*.db_block_checksum='TYPICAL'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_create_online_log_dest_1='+RECO'
*.db_domain='emdb.emcc.oraclevcn.com'
*.db_files=1024
*.db_lost_write_protect='TYPICAL'
*.db_name='oltp'
*.db_recovery_file_dest='+RECO'
*.db_recovery_file_dest_size=255g
*.db_unique_name='oltp_gru1n5'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oltpXDB)'
*.enable_ddl_logging=TRUE
*.enable_pluggable_database=true
*.encrypt_new_tablespaces='ALWAYS'
*.fast_start_mttr_target=300
*.filesystemio_options='setall'
*.global_names=TRUE
*.local_listener='LISTENER_OLTP'
*.log_archive_format='%t_%s_%r.dbf'
*.log_buffer=134217728
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=1000
*.os_authent_prefix='ops$'
*.parallel_execution_message_size=16384
*.parallel_threads_per_cpu=2
*.pga_aggregate_limit=7247757312
*.pga_aggregate_target=3623878656
*.processes=400
*.remote_login_passwordfile='EXCLUSIVE'
*.session_cached_cursors=100
*.sga_target=14495514624
*.spatial_vector_acceleration=TRUE
*.sql92_security=TRUE
*.tde_configuration='keystore_configuration=FILE'
*.undo_retention=900
*.undo_tablespace='UNDOTBS1'
*.use_large_pages='only'
*.wallet_root='/opt/oracle/dcs/commonstore/wallets/oltp_gru1n5'

Parâmetros do DBCS DW:

*._datafile_write_errors_crash_instance=false
*._db_writer_coalesce_area_size=16777216
*._disable_interface_checking=TRUE
*._enable_numa_support=FALSE
*._file_size_increase_increment=2143289344
*._fix_control='18960760:on'
*._gc_policy_time=20
*._gc_undo_affinity=TRUE
*.audit_file_dest='/u01/app/oracle/admin/dw_gru1tx/adump'
*.audit_sys_operations=TRUE
*.audit_trail='db'
*.compatible='19.0.0.0'
*.control_files='+RECO/DW_GRU1TX/CONTROLFILE/current.256.1126038033'
*.control_management_pack_access='DIAGNOSTIC+TUNING'
*.cpu_count=0
*.cursor_sharing='EXACT'
*.db_block_checking='OFF'
*.db_block_checksum='TYPICAL'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_create_online_log_dest_1='+RECO'
*.db_domain='emdb.emcc.oraclevcn.com'
*.db_files=1024
*.db_lost_write_protect='TYPICAL'
*.db_name='dw'
*.db_recovery_file_dest='+RECO'
*.db_recovery_file_dest_size=255g
*.db_unique_name='dw_gru1tx'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dwXDB)'
*.enable_ddl_logging=TRUE
*.enable_pluggable_database=true
*.encrypt_new_tablespaces='ALWAYS'
*.fast_start_mttr_target=300
*.filesystemio_options='setall'
*.global_names=TRUE
*.local_listener='LISTENER_DW'
*.log_archive_format='%t_%s_%r.dbf'
*.log_buffer=134217728
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=1000
*.os_authent_prefix='ops$'
*.parallel_execution_message_size=16384
*.parallel_threads_per_cpu=2
*.pga_aggregate_limit=13824m
*.pga_aggregate_target=6912m
*.processes=400
*.remote_login_passwordfile='EXCLUSIVE'
*.session_cached_cursors=100
*.sga_target=6912m
*.spatial_vector_acceleration=TRUE
*.sql92_security=TRUE
*.tde_configuration='keystore_configuration=FILE'
*.undo_retention=900
*.undo_tablespace='UNDOTBS1'
*.use_large_pages='only'
*.wallet_root='/opt/oracle/dcs/commonstore/wallets/dw_gru1tx'

Diferença entre os dois arquivos de parâmetros:

maicon@CPX-R5RNZ2UDH7E:~/lab_oci$ diff oltp.txt dw.txt
9c9
< *.audit_file_dest='/u01/app/oracle/admin/oltp_gru1n5/adump'
---
> *.audit_file_dest='/u01/app/oracle/admin/dw_gru1tx/adump'
13c13
< *.control_files='+RECO/OLTP_GRU1N5/CONTROLFILE/current.256.1126132675'
---
> *.control_files='+RECO/DW_GRU1TX/CONTROLFILE/current.256.1126038033'
25c25
< *.db_name='oltp'
---
> *.db_name='dw'
28c28
< *.db_unique_name='oltp_gru1n5'
---
> *.db_unique_name='dw_gru1tx'
30c30
< *.dispatchers='(PROTOCOL=TCP) (SERVICE=oltpXDB)'
---
> *.dispatchers='(PROTOCOL=TCP) (SERVICE=dwXDB)'
37c37
< *.local_listener='LISTENER_OLTP'
---
> *.local_listener='LISTENER_DW'
46,47c46,47
< *.pga_aggregate_limit=7247757312
< *.pga_aggregate_target=3623878656
---
> *.pga_aggregate_limit=13824m
> *.pga_aggregate_target=6912m
51c51
< *.sga_target=14495514624
---
> *.sga_target=6912m
58c58
< *.wallet_root='/opt/oracle/dcs/commonstore/wallets/oltp_gru1n5'
---
> *.wallet_root='/opt/oracle/dcs/commonstore/wallets/dw_gru1tx'

Desconsiderando os parâmetros que são específicos de cada ambiente (como o exemplo de audit_file_dest), na prática só temos diferença nos parâmetros de SGA e PGA, onde no modelo OLTP tem mais SGA do que PGA, e o modelo DW tem uma distribuição equilibrada entre esses dois parâmetros.

Neste exemplo temos 2 DB Systems com o mesmo shape para comparação:

VM.Standard2.2 (INTEL) com 2 OCPU e 30 GB de RAM.

A tabela abaixo tem o resumo de quai os valores a OCI colocou automaticamente nos parâmetros de SGA e PGA:

ParâmetroOLTPDW
SGA Target13,5 GB6,75 GB
PGA Target3,37 GB6,75 GB
PGA Limit6,75 GB13,5 GB

Em resumo, o OLTP tem uma distribuição 80/20 (80% SGA + 20% PGA), e o DW tem uma distribuição 50/50 (50% SGA + 50% PGA). No mais, ambos tem configurações identificas em ASM, Sistema Operacional e demais parâmetros de inicialização no SPFILE (Com exceção do número de Hugepages no Linux que acompanha o tamanho da SGA da instãncia Oracle)

Então se você está na dúvida sobre qual tipo de workload selecionar na criação de um novo DB System, basicamente você precisa levar em consideração qual será a distribuição de SGA e PGA que você deseja. Se não há essa definição ainda, o modelo OLTP acaba sendo o mais adequado para a maioria dos casos, uma vez que a maioria dos bancos de dados tem workload transacional ou misto (um pouco dos dois).

2 thoughts on “OCI VM DB Systems: Transaction processing vs Data warehouse – Qual a diferença?”
  1. Obrigado pela contribuição, Tanaka!

    Um ponto interessante é que no ExaCS, uma vez ajustado o HugePages manualmente, ele se man´tem estático dali pra frente. No caso do DBCS (VM) ele é controlado pelo processo de Scale-UP/Down do shape (assim como a SGA e PGA).

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading