查询上次收集统计信息的时间:
SELECT last_analyzed FROM dba_tables;
如果时间间隔过久或者查询结果为NULL,则重新收集:
begin
for rs in (select 'sf_set_SESSION_para_value(''HAGR_HASH_SIZE'',(select cast(
case when max(table_rowcount(owner,table_name))<=(select max_value from v$dm_ini
where para_Name=''HAGR_HASH_SIZE'') and max(table_rowcount(owner,table_name))>=(
select min_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') then
max(table_rowcount(owner,table_name)) when max(table_rowcount(owner,table_name))<(
select min_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') then
(select min_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') else
(select max_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') end as bigint)
from dba_tables where owner='''||NAME||'''));'
sql1,'DBMS_STATS.GATHER_SCHEMA_STATS('''||NAME||''',100,TRUE,''FOR ALL COLUMNS SIZE AUTO'');'
sql2
from SYS.SYSOBJECTS where TYPE$='SCH' ) loop
execute immediate rs.sql1;
execute immediate rs.sql2;
end loop;
end;
/
收集完毕后即可。
先查询参数:
SELECT * FROM V$DM_INI WHERE PARA_NAME IN ('WORKER_THREADS','TASK_THREADS','IO_THR_GROUPS','MAX_OS_MEMORY','MEMORY_POOL','MEMORY_TARGET','BUFFER','BUFFER_POOLS','RECYCLE','RECYCLE_POOLS',
'HJ_BUF_GLOBAL_SIZE','HJ_BUF_SIZE','HAGR_BUF_GLOBAL_SIZE','HAGR_BUF_SIZE','SORT_FLAG','SORT_BLK_SIZE','SORT_BUF_SIZE', 'SORT_BUF_GLOBAL_SIZE',
'RLOG_POOL_SIZE','SESS_POOL_SIZE', 'CACHE_POOL_SIZE', 'DICT_BUF_SIZE', 'VM_POOL_TARGET','SESS_POOL_TARGET','USE_PLN_POOL','ENABLE_MONITOR',
'SVR_LOG', 'TEMP_SIZE','TEMP_SPACE_LIMIT', 'MAX_SESSIONS','MAX_SESSION_STATEMENT','PK_WITH_CLUSTER','ENABLE_ENCRYPT','OLAP_FLAG',
'VIEW_PULLUP_FLAG','OPTIMIZER_MODE','ADAPTIVE_NPLN_FLAG','TOP_DIS_HASH_FLAG','TOP_ORDER_OPT_FLAG','CLOB_LIKE_MAX_LEN');
查看PARA_VALUE和DEFAULT_VALUE的值是否一致,一致的话代表参数没有调整。
查询CPU核数和内存大小:
lscpu
free -g
在本地环境上运行自动参数优化脚本,将exec_mode
值设置为1,根据CPU核数和内存大小调整v_mem_mb
和v_cpus
的值,获得打印设置参数的语句。
在数据库软件安装目录/bin下,登录disql,执行设置参数的语句。
执行完毕后重启数据库服务,执行查询参数的部分进行检查。确认参数修改完成后即可。
文章
阅读量
获赞