Sunday, January 27, 2013

Performance Tuning & Recoverability Notes


  • Set the SQLNET.ORA (as described) on the server and client 
  • Set the LISTENER send/receive buffers to the max size i.e. 65535 
  • alter system set SHARED_SERVERS=0 scope=both; -- (do NOT use shared servers if you want max performance) 
  • alter system reset DISPATCHERS scope=spfile sid='*'; -- (needed to disable use of shared servers; restart db instance for this to take effect) 
  • alter system set CURSOR_SHARING='FORCE' scope=both; -- (force cursor re-use wherever possible) 
  • For production systems, take no chances with block corruptions, enable the following: 
    • alter system set db_block_checksum=FULL scope=both;  
    • alter system set db_block_checking=FULL scope=both;  
  • Check for bad blocks by using RMAN: 
    • backup check logical validate database; -- doesn't actually do a backup 
    • select * from v$DATABASE_BLOCK_CORRUPTION; 
  • Store the database files separate from the redo logs. If possible, store the archive logs separate from the redo logs as well. Consider using a SSD volume for redo logs. If an SSD volume isn't forthcoming, use a RAID 10 volume with a thin-stripe of 128k. 
  • Store the database files on an ASM volume. Create the ASM volume from at least two RAID 1 volumes. ASM will create a 1 MB coarse stripe across all volumes, giving excellent storage performance. 
  • For max recoverability: 
    • store the control files, online redo logs, archive logs, incremental backups and a database image copy on an NTFS volume (with a 64k cluster size for max performance). 
    • Follow Oracle Suggested Backup strategy. 
  • Guy Harrison also says that the TEMP tablespace could be located away from the other files since it is used for sorting, etc. which could impact performance. In reality, this is probably not necessary. 

No comments:

Post a Comment