Skip to main content

DB - Degree Of Parallelism



Neste post escrevo sobre gestao manual do do DOP ( Degree of Parallelism). A gestao do paralelismo pode ser feita manualmente de 3 formas : 

1 - Paralelismo ao nivel da Sessao 

ALTER SESSION ENABLE | DISABLE | FORCE Parallel QUERY | DML | DDL 

2 - Paralelismo ao nivel do Objecto


create table my_tab(i number) parallel 5 ;
alter table  my_tab parallel 10 ;

select table_name, degree  from dba_tables where table_name = 'INDX_P_5';

-- tabelas particionadas  - -- aplica- se ano nivel da tabelas  nao das particoes 

--  Table IOT 
create table my_iot_tab( i parallel key ) organization index parallel;

-- index
create index indx_p_5 on Tabela (i) Parallel 5 ;
alter index indx_p_5 Parallel 10 ;

select index_name, degree  from dba_indexes where index_name = 'INDX_P_5';

3 - Paralelismo Hints

* tem precedencia sobre todos as outras opcoes (MANUAL ou AUTO)

3.1 - Nivel da sentenca

/*+ parallel (Manual) | NO_PARALLEL */
/*+ parallel (N) */ 

eg: select /*+ parallel (3) */ * from my_tab;

3.2 - Nivel do objecto 

/*+ parallel (my_tab,5) */ - DOP 5 
/*+ parallel (my_tab) */ - DOP - decoration 
/*+ parallel_index (my_tab, indx_p_5, 2 ) */
/*+ parallel_index (my_tab, indx_p_5) */

-- objecto na sentenca 
parallel (a,3)  - DOP 3 
parallel (b) - DOP - decoration 

select /*+ parallel (a,3) parallel (b) */ * 
from my_tab_1 a , my_tab_2 b
where a.id=b.id ;


Obrigado pela leitura.
Espero que este post o tenha ajudado.


This post is about manual management of DOP ( Degree of Parallelism), that could be done within 3 ways : 

1 - Session Level 

ALTER SESSION ENABLE | DISABLE | FORCE Parallel QUERY | DML | DDL 

2 - Object Level


create table my_tab(i number) parallel 5 ;
alter table  my_tab parallel 10 ;

select table_name, degree  from dba_tables where table_name = 'INDX_P_5';

-- tabelas particionadas  - -- aplica- se ano nivel da tabelas  nao das particoes 

--  Table IOT 
create table my_iot_tab( i parallel key ) organization index parallel;

-- index
create index indx_p_5 on Tabela (i) Parallel 5 ;
alter index indx_p_5 Parallel 10 ;

select index_name, degree  from dba_indexes where index_name = 'INDX_P_5';

3 - Hints

Note : Hints overwrite all other methods  including MANUAL or  AUTO

3.1 - Statement 

/*+ parallel (Manual) | NO_PARALLEL */
/*+ parallel (N) */ 

eg: select /*+ parallel (3) */ * from my_tab;

3.2 - Object in the Statement 

/*+ parallel (my_tab,5) */ - DOP 5 
/*+ parallel (my_tab) */ - DOP - decoration 
/*+ parallel_index (my_tab, indx_p_5, 2 ) */
/*+ parallel_index (my_tab, indx_p_5) */

SQL> select /*+ parallel (a,3) parallel (b) */ * 
from my_tab_1 a , my_tab_2 b
where a.id=b.id ;


Thank you for reading.
hope this post was helpful.

Comments

Popular posts from this blog

DB - How to monitor Oracle datapump jobs

These days there is lot of work around database migrations not only but mainly to cloud providers. One of the ways to migrate Oracle databases is using data pump (expdp/impdp). In general works fine, it allows an easy way to bring the database even different OS. It is always good to monitor the progress, to know where we are and estimate how long we are from the end. In this post, I am sharing some queries to help with database monitoring progress. The queries can be easily tailed to various scenarios. Starting with a simple one - the track the number of objects loaded during an import operation. When there is a massive amount of errors during the import. Drop and run the import again. The bellow query can be useful also to monitor the number of objects if we are dropping the users. Here, I’m making the assumption there were no other database activity in progress on the last 24 hours. select owner, count(0) from dba_objects where owner in ( select username from dba_users where created...

VM - Partilhar Pastas Windows - Linux

Neste post escrevo como partilhar pastas entre Windows (Host) e uma VM Guest, neste caso Linux. Ha algumas formas de fazer isto, esta parece me a mais facil. Seleccionar a Pasta Windows Na consola Virtual Box > Devices > Shared Folder Seleccionar a pasta windows para partilhar no Linux   O   Montar a pasta Windows na VM Ha duas opcoes : 1) Reiniciar a VM (Auto-mount) 2) Linha de comando [root@host ~]# mkdir -p /u01/stage/win_ebs_sw [root@host ~]# chmod 777 /u01/stage/win_ebs_sw [root@host ~]# mount -t vboxsf Oracle_EBS /u01/stage/win_ebs_sw/ [root@host ~]# ls /u01/stage/win_ebs_sw ebs_weblogic_webtier [root@host ~]# df -h /u01/stage/win_ebs_sw Filesystem Size Used Avail Use% Mounted on Oracle_EBS 895G 494G 401G 56% /u01/stage/win_ebs_sw Guardar a Configuracao no /etc/fstab para tornar as alteracoes permanentes. [root@host ~]# echo "Oracle_EBS /u01/stage/win_ebs_sw vboxsf defaults 0 0" >> /etc/fstab [root@host ~]# cat /etc/fstab # /etc/...

DB – How to monitor Oracle database long ops ?

As DBAs, some questions we are often asked and to be fair we ask ourselfs when we are doing massive operations, are : Is the database doing something? How long the database takes to complete the task? There a data dictionary view, GV$SESSION_LONGOPS whom is really usefull for monitoring and to provide estimated time to get the task done. Starting with a first example, a query for general propose . set lines 240 col message form a100 col opname form a50 select * from ( select round(l.sofar/l.totalwork*100,2) as complete, --l.* l.sid, --l.opname, l.message, l.start_time, l.time_remaining/60 "minuts remaining", l.elapsed_seconds from gv$session_longops l where totalwork !=0 ) where complete < 100; The view is also usefull on specific operations such as Oracle Recovery Manager (RMAN) jobs monitoring, this query returns information about backup,restore and recovery. select sid, serial#,opname, context, sofar, totalwork, round(sofar/totalwork*100,2) "%_complet...