1.在Oracle中实现分布式快速存取和充实内存是很重要的。 要不惜任何代价避免页面调度和交换﹐每次都必须把系统全局区(SGA)放到内存。 将SGA放到内存中﹐在INIT.ORA中设置参数 PRE_PAGE_SGA
PRE_PAGE_SGA=YES 2.回卷段的竟争会降低系统的性能。 SELECT GETS,WAITS FROM V$ROLLSTAT; GETS代表回卷段被访问的次数 WAITS代表进程等待回卷段中哪个进程的次数 假如GETS与WAITS的比大于2%表示存在竟争问题 解决办法是创建更多的回卷段。 有两种类型的锁存竟争会产生严重的后果﹕立即锁存(IMMEDIATE)和等待(WAIT)锁存。 等待锁存的计算公式﹕ WAIT CONTENTION=(MISSES/(GETS+MISSES))*100 立即锁存的计算公式﹕ IMMEDIATE CONNECTION=(IMMEDIATE_MISSES/(IMMEDIATE_GETS+IMMEDIATE_MISSES))*100 假如任何一个值>0则就存在对锁存的竟争 假如发生恢复分配锁存的竟争﹐可以减小INIT.ORA中的LOG_SMALL_ENTRY_MAX_SIZE的参数值。假如发生恢复复制竟争﹐可以增大INIT.ORA中的LOG_SIMULATANOUS_COPIES的参数值。 任何回卷段的OPTIMAL参数的设置不能太小﹐假如OPTIMAL SELECT CLASS,COUNT FROM V$WAITSTAT WHERE UPPER(CLASS) IN ('SYSTEM UNDO HEADER)','SYSTEM UNDO BLOCK', 'UNDO HEADER','UNDO BLOCK'); SELECT SUM(VALUE) FROM V$SYSSTAT WHERE UPPER(NAME) IN ('DB BLOCK GETS','CONSISTENT GETS'); 第一条查询中的每一类与第二条查询中的比率最好<0.01 3.提高缓冲区的效率。 SELECT RELOADS,PINS FROM V$LIBRARYCACHE; RELOADS存入SQL命令被加载和分解的次数 PINS存入数据库对SQL高速缓冲区查找一条语句的次数 假如RELOADS与PINS的比率大于1%则应增加INIT.ORA中的SHARED_POOL_SIZE的参数值。 SELECT GETMISSES,GETS FROM V$ROWCACHE; 假如RELOADS与PINS的比率大于10%则应增加INIT.ORA中的 SHARED_POOL_SIZE的参数值。 4.用户任何时点拥有的打开光标的最大数 修改INIT.ORA中的OPEN_CURSORS的参数值。 与高速缓存有关的是游标在会话中的缓存方式。 在INIT.ORA中增加 SESSION_CACHED_CURSORS=100 5.SELECT SUM(GETS),SUM(GETMISSES) FROM V$ROWCACHE; 必须使GETMISSES比率接近0, 为了优化性能﹐可以增加INIT.ORA中的参数SHARED_POLL_SIZE和DB_BLOCK_BUFFERS的值。 6.SELECT NAME,VALUE FROM V$SYSSTAT WHERE UPPER(NAME) IN ('SORTS(MEMORY)','SORTS(DISK)'); 假如用于磁盘上的排序量较高﹐可以增加INIT.ORA中的SORT_AREA_SIZE的值。 7.LGWR的日志文件假如切换太快会影响数据库的活动﹐导致性能的下将。 在INIT.ORA 中 CHECKPOINT_PROCESS=TRUE LOG_CHECKPOINT_INTERVAL=10000 LOG_CHECKPOINT_TIMEOUT=1800 8.多线程服务器(MTS)的配置 1> MTS_SERVICE 这是调度程序用来向SQL*NET监听器注册服务的服务名。 最好取和SID相同的名称。 2>MTS_DISPATCHERS 配置调度进程的数目。 3>MTS_MAX_DISPATCHERS 配置调度进程的最大数目。 4>MTS_SERCERS 启动共享服务器的最初数目。 5>MTS_MAX_SERVERS 设置共享服务器的最大数目。
6>MTS_LISTENTER_ADDRESS 这是调度程序用来向SQL*NET监听器注册服务的服务名的地址。 一个MTS的配置例子: 在INIT.ORA中 mts_listener_address='(ADDRESS=(PROTOCOL=TCP)(KEY=MYDB))' mts_dispatchers='tcp,10' mts_dispatchers='ipx,2' mts_max_dispatchers=10 mts_max_servers=10 mts_servers=2 在LISTENER.ORA中应包括下类似的内容: LISTENER= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=IPX) (KEY=MYDB) ) (ADDRESS= (PROTOCOL=TCP) (HOST=OURHOST) (PORT=1521 ) STARTUP_WAIT_TIME_LISTENER=0 CONNECT_TIMEOUT_LISTENER=10 TRACE_LEVEL_LISTENER=ADMIN SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=MYDB) ) ) 添加MTS参数之后要重新启动数据库。 在SQL*PLUS下用PS命令检查共享服务器和调度程序是否存在。 ? PS -EFGREP FOXMOLD; 具有ORA_SNNN_SID和ORA_DNNN_SID名称的进程分别是共享服务器和调度进程。 SELECT USERNAME,PROGRAM,SERVER FROM V$SESSION WHERE AUDSID=USERENV('SESSIONID'); 在SERVER列中返回的值应该是SHARED,假如是DEDICATED,就说明没有正确配置MTS. 用LSNRCTL SERVICES命令来检查调度程序是否向监听器登记了服务。 8.移动数据库文件 第一种方法﹕(ALTER DATABASE) 关闭数据库-移动数据文件-装载并改名-启动 1>SVRMGRL 2>CONNECT INTERNAL 3>SHUTDOWN 4>EXIT 5>MV /U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF /DB3/ORADATA 6>SVRMGRL 7>CONNECT INTERNAL 8>STARTUP MOUNT FOXMOLD 9>ALTER DATABASE RENAME FILE '/U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF' TO '/DB3/ORADATA/USER01.DBF' 10> ALTER DATABASE OPEN 第二种方法﹕(ALTER TABLESPACE) 关闭数据库-移动数据文件-装载并改名-启动 1>SVRMGRL 2>CONNECT INTERNAL 3>SHUTDOWN 4>EXIT 5>MV /U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF /DB3/ORADATA 6>SVRMGRL 7>CONNECT INTERNAL 8>ALTER TABLESPACE DATA RENAME DATAFILE '/U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF' TO '/DB3/ORADATA/USER01.DBF' 9> ALTER DATABASE OPEN 9. 统计分析 SPOOL C:\ANALYZE.SQL SELECT 'ANALYZE TABLE 'TRIM(OBJECT_NAME)' COMPUTE STATISTICS; ' FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' 然后运行analyze.sql文件即可 最后,对TABLESPACE碎片进行清理. SELECT TABLESPACE_NAME, PERCENT_BLOCKS_COALESCED FROM DBA_FREE_SPACE_COALESCED 去看那一个TABLESPACE对应的值不是100的就运行如下命令: ALTER TABLESPACE TABLESPACE_NAME COALESCE 注重:假如TABLESPACE的值为100就没有必要作此命令. 10.移动TABLE INDEX 到另一个TABLESPACE 1>SPOOL C:\MV_INDEX.SQL 2>SELECT 'ALTER INDEX 'TRIM(OBJECT_NAME)' REBUILD TABLESPACE FOXMOLD1;
' FROM USER_OBJECTS WHERE OBJECT_TYPE='INDEX' 3>将此命令生成MV_INDEX.SQL文件 4>@C:\MV_INDEX.SQL 11.MAINTAINING THE CONTROLFILE 1>SVRMGRL 2>CONNECT INTERNAL 3>SHUTDOWN 4>EXIT 5>CP /U/PRODUCT/ORADATA/FOXMOLD/CONTROL01.CTL /DB4/ORADATA/CONTROL01.CTL 6>CHMOD 660 /DB4/ORADATA/CONTROL01.CTL 7>修改INIT.ORA CONTROL_FILES=…… 8>STARTUP MOUNT FOXMOLD 12.MAINTAINING REDO LOG FILE 1>SHUTDOWN 2>EXIT 3>CP /DISK1/*.RDO /DISK4/*.RDO 4>CHMOD 660 /DISK4/*.RDO 5>STARTUP MOUNT FOXMOLD 13.RECOVER SYNTAX A.RECOVER A CLOSED DATABASE 1>RECOVER DATABASE 2>RECOVER DATAFILE '/DISK1/DF2.DBF' 3>ALTER DATABASE RECOVER DATABASE B.RECOVER AN OPEN DATABASE 1>RECOVER TABLESPACE USER_DATA 2>RECOVER DATAFILE 2 3>ALTE
|