shared_pool_size 值太小了,至少200M
最好能讲一下你的应用情况

解决方案 »

  1.   

    java_pool_size 你用上了么?没有j2ee就不要设到32兆了。你说说干什么用得吧。
      

  2.   

    job_queue_processes = 10
    如果没有job或快照,这个值可以是0,否则也会占用系统资源
      

  3.   

    很多参数配置不是很合理:1. windows平台下,内存至少要留出20%以上给OS和其他程序,如果Oracle
       不会用到这么多内存,将db_cache_size的值调小一点?2. 能确定最多的并发session数吗? 假如是100,那么pga_aggregate_target 
       这个参数的值小了(每个session最少占用3M以上)3. 如果不使用JAVA,将JAVA_POOL_SIZE的值调小一点4. 最后一点,做个statspack report吧,看看你们的Oracle系统是不是
       真正需要用这么多内存? 
      

  4.   

    请问如何做statspack report?
      

  5.   

    1.创建表空间 PERFSTAT
        
    SQL> Create tablespace  PERFSTAT
     datafile ...
     size 100M
     autoextend on
     next 5M 
     maxsize 150M;
            
    SQL> alter tablespace PERFSTAT
         default storage(
         INITIAL 50K
         NEXT 50K
         MINEXTENTS 2
         MAXEXTENTS 50
         PCTINCREASE 0);如果出现下面的错误,请参考Action里面提供的解决方法        
    ORA-03232: unable to allocate an extent of 12 blocks from tablespace 3        
            
    Action: Increase the value of NEXT from the tablespace using 
            alter tablespace default storage  or decrease the value of
            HASH_MULTIBLOCK_IO_COUNT(0)
        
    2. 运行 spcreate.sql
            
    SQL> @ $ORACLE_HOME/rdbms/admin/spcreate.sql
            
        
    3. 如果不成功, 先运行 spdrop.sql 删除已建立的 PERFSTAT用户
       和该用户的对象,然后重新执行 spcreate.sql
           
        
    4. 测试是否安装成功   
           
    SQL>  Connect perfstat/perfstat;       
    SQL>  EXECUTE  statspack.snap;
          ...
    如果出现PL/SQL Procedure successfully completed,则说明安装成功
             
        
    5.  得到统计报告
        
    SQL>  @ $ORACLE_HOME/rdbms/admin/spreport.sql
            
    需要输入起止的快照ID 
                
    批命令方式:
                   
    SQL>Connect perfstat/perfstat;
        define begin_snap=1
        define end_snap=2
        define report_name=batch_run
        @ $ORACLE_HOME/rdbms/admin/spreport.sql执行完毕后,产生的报告文件名 batch_run.lst
               
         
    6.  具体应用
         
        UNIX:  Crontab
             
        Oracle:  JOB
             
        Example:         
              
         VARIABLE jobno number; 
         BEGIN           DBMS_JOBS.SUBMIT ( :jobno , 
               ' dbms_utility.analyze_schema ( "scott", "estimate", NULL, 20) ; ', 
                sysdate, 'sysdate+30'); 
              commit; 
         End; 
         /
             
         改变JOB执行的时间计划
              
         Execute DBMS_JOB.INTERVAL(1,'SYSDATE +(1/48)')  --每半小时执行一次
              
         查看当前用户的JOB
         select * from USER_JOBS;
               
         查看当前快照信息
         select name,snap_id, to_char(SNAP_TIME,'YYYY-MM-DD HH24:mi:ss') As snap_time
           from stats$snapshot,v$database
           order by snap_id;
               
         定期删除快照
           delete from stats$snapshot where snap_id <2;
                 
                  
    7. 改变Level和threshold
            
          level =0: 一般的统计信息
          level=5:  还包括sql语句搜集,  stats$sql_summary     
          level=10: 还包括子锁统计信息, stats$latch_children
          一般不采用level 10
            
         临时修改:  
         SQL> execute statspack.snap(i_snap_level=>0);
              
         永久修改:
            SQL> execute statspack.snap
               (i_snap_level=>10,i_modify_parameter=>'true');  
            
         change threshold:
                    
           desc stats$statspack_parameter;
             
           select executions_th,parse_calls_th,disk_reads_th,
            buffer_gets_th,sharable_mem_th,version_count_th 
            from stats$statspack_parameter
              
           parameters:
                
            EXECUTIONS_TH:  number of executions of the SQL statement (100)
                
            PARSE_CALLS_TH:  number of parse calls performed by the SQL 
              statement  (1000)
                
            DISK_READS_TH:   number of disk reads performed by the SQL 
              statement  (1000)
                
            BUFFER_GETS_TH:   number of buffer gets performed by the SQL 
              statement  (10000)
                
            SHARABLE_MEM_TH:  size of sharable memory used by the SQL 
              statement (1M)
                
            VERSION_COUNT_TH:   version count for the SQL statement
                
          如果SQL语句超出了上面列出的极限值,这条语句就会被记录到 
          stats$sql_summary,因此极限值设的比较低时,会加重系统的负担。
                
             
          修改极限值:
           execute statspack.modify_statspack_parameter
            (i_buffer_gets_th=>10000, i_disk_reads_th =>10000);
             
          清除不需要的历史快照
             
            SQL> @ $ORACLE_HOME/rdbms/admin/sppurge.sql
                     
          批模式
             SQL> connect  perfstat/perfstat;
                  define losnapid=1
                  define hisnapid=2
                  @ $ORACLE_HOME/rdbms/admin/sppurge