Postado por Alex Zaballa no GPOImaginem um cenario onde e necessario alterar o valor de um parametro de uma sessao que ja esta aberta no banco de dados e sem uma interface SQL para realizar um ALTER SESSION.Para resolver este problema, podemos utilizar as procedures SET_INT_PARAM_IN_SESSION e SET_BOOL_PARAM_IN_SESSION da package DBMS_SYSTEM.dbms_system.set_bool_param_in_session(sid IN NUMBER,serial# IN NUMBER,parnam IN VARCHAR2,bval IN BOOLEAN);dbms_system.set_int_param_in_session(sid IN NUMBER,serial# IN NUMBER,parnam IN VARCHAR2,intval IN BINARY_INTEGER);Neste exemplo, vamos alterar o parametro sort_area_size da sessao abaixo:[oracle@oracle01 ~]$ sqlplus scott/tigerSQL*Plus: Release 12.1.0.2.0 Production on Thu Nov 20 11:08:29 2014Copyright (c) 1982, 2014, Oracle. All rights reserved.Last Successful login time: Thu Nov 20 2014 11:07:59 +01:00Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, Automatic Storage Management, OLAP, Advanced Analyticsand Real Application Testing optionsSQL> show parameter sort_areaNAME TYPE VALUE------------------------------------ ----------- ------------------------------sort_area_size integer 65536Buscando as informacoes e alterando o valor do parametro SORT_AREA_SIZE da sessao do usuario SCOTT:[oracle@oracle01 ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Nov 20 11:13:08 2014Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, Automatic Storage Management, OLAP, Advanced Analyticsand Real Application Testing optionsSQL> select sid,serial# from v$session where username='SCOTT'; SID SERIAL#---------- ---------- 237 49369SQL> exec dbms_system.SET_INT_PARAM_IN_SESSION(237, 49369, 'SORT_AREA_SIZE',131072);PL/SQL procedure successfully completed.Verificando o novo valor do parametro SORT_AREA_SIZE na sessao do usuario SCOTT:SQL> select name, value from V$SES_OPTIMIZER_ENV where sid=237 and name='sort_area_size';NAME VALUE---------------------------------------- -------------------------sort_area_size 131072 Esse teste e muito legal, pois ajuda quando o usuario relata problemas de gravacao em diretorios no oracle.O DIRECTORY do exemplo se chama test_dir e fica no /home/oracleEsse e o resultado finalE foi assim que fiz, minto, copiei de algum indiano!!!create directory test_dir as '/home/oracle/'/grant read, write on directory test_dir to public/create or replace procedure test_write (dir in varchar2,filename in varchar2,firstline in varchar2, secondline in varchar2)isoutput_file utl_file.file_type;begin output_file := utl_file.fopen (dir,filename, 'W'); utl_file.put_line (output_file, firstline); utl_file.put_line (output_file, secondline); utl_file.fclose(output_file);end;/exec test_write('TEST_DIR', 'Teste_Hello_World.txt', 'hello', 'world')/Vlw DECLARE RET_VAL VARCHAR2(4000);BEGIN RET_VAL := DBMS_SQLTUNE.CREATE_TUNING_TASK(SQL_ID => '4wfdvbuf06c2t', SCOPE => DBMS_SQLTUNE.SCOPE_COMPREHENSIVE, TIME_LIMIT => 10000, TASK_NAME => '4wfdvbuf06c2t', DESCRIPTION => '4wfdvbuf06c2t');END;/4wfdvbuf06c2tEXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK('4wfdvbuf06c2t');SET linesize 200SET LONG 5005009SET pages 1000SET longchunksize 20000SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('4wfdvbuf06c2t') RECOMMENTATION FROM DUAL;SET linesize 200SET LONG 5005009SET pages 1000SET longchunksize 20000SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK('4wfdvbuf06c2t') RECOMMENTATION FROM DUAL;EXEC DBMS_SQLTUNE.DROP_TUNING_TASK('4wfdvbuf06c2t'); Apos 5 anos, criei vergonha na cara e atualizei a certificacao. Tenho um conceito sobre isso, onde ter nao siginifica saber, mas como o mercado exige, vamos la e tiramos ela!!Foi em fevereiro de 2016, agora em 2017 devem vir mais, evoluir e preciso.Menino "bunito"Vlw Relatorio AWR de todas as instances do clusterFontes de pesquisa:http://www.bobbydurrettdba.com/2012/08/10/awrgrpt-sql-awr-report-for-rac-and-exadata/http://www.databaseskill.com/2176443/spawrrac.sqlawrgrpt.sql Bom artigohttp://www.3consult.com.br/index.php/12-artigos/14-o-que-e-rpo-e-rto O sql_tunning_task ajuda muito, abaixo o que uso:Encontre o sql_id da query que voce quer melhorar--Crie a taskDECLARE RET_VAL VARCHAR2(4000); BEGIN RET_VAL := DBMS_SQLTUNE.CREATE_TUNING_TASK(SQL_ID => '0cy3wcc00qxf9', SCOPE => DBMS_SQLTUNE.SCOPE_COMPREHENSIVE, TIME_LIMIT => 10000, TASK_NAME => '0cy3wcc00qxf9', DESCRIPTION => '0cy3wcc00qxf9'); END; / --Execute a taskEXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK('0cy3wcc00qxf9'); --Veja as recomendacoesset long 999999999SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('0cy3wcc00qxf9') RECOMMENTATION FROM DUAL; --Gere os comandos para aplicar as recomendacoesSELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK('0cy3wcc00qxf9') RECOMMENTATION FROM DUAL; Use com moderacao, nem sempre a recomendacao vai melhorar.Abraco Dicas exadatahttp://www.pythian.com/blog/exadata-join-offloading-in-action/ Esta Postagem e do site Baixaki, e os mais baixados:1 - MSN Messenger 2009A ultima versao do sucessor