This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
เช้&นSQL> show parameter open_cursorsNAME TYPE VALUE------------------------------------ ----------- ------------------------------open_cursors integer 300
SQL> alter system set open_cursors=100 scope=MEMORY;System altered.
SQL> show parameter open_cursors;NAME TYPE VALUE------------------------------------ ----------- ------------------------------open_cursors integer 100
SQL> select sid, name, value from v$spparameter where name='open_cursors';SID NAME VALUE----- -------------------- ----------* open_cursors 300
SQL> alter system set open_cursors=200 scope=BOTH;System altered.
SQL> show parameter open_cursors;NAME TYPE VALUE------------------------------------ ----------- ------------------------------open_cursors integer 200
SQL> select sid, name, value from v$spparameter where name='open_cursors';SID NAME VALUE----- -------------------- ----------* open_cursors 200
SQL> alter system set open_cursors=300 scope=SPFILE;System altered.
SQL> show parameter open_cursors;NAME TYPE VALUE------------------------------------ ----------- ------------------------------open_cursors integer 200
SQL> select sid, name, value from v$spparameter where name='open_cursors';SID NAME VALUE----- -------------------- ----------* open_cursors 300
SQL> alter system set open_cursors=300 sid='TEST' scope=SPFILE;System altered.
SQL> select sid, name, value from v$spparameter where name='open_cursors';SID NAME VALUE----- -------------------- ----------* open_cursors 300TEST open_cursors 300
2
SQL> alter system reset open_cursors sid='TEST' scope=SPFILE;System altered.
SQL> select sid, name, value from v$spparameter where name='open_cursors';SID NAME VALUE----- -------------------- ----------* open_cursors 300
จากัต้�วอย&างข้�างบนย�งแสดูงให� เห(นว&าเรั้าย�งสามารั้ถใช้� SID='...' เป็�นอะไรั้กั(ไดู� และกัารั้ใช้� ALTER SYSTEM RESET
การตรวจสอบว�าใช็� spfile หร�อไมู� (อ�างอ�ง)SQL> show parameter spfileNAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string /oracle/11gR1/dbs/spfileorcl.ora
SQL> select isspecified, count(*) from v$spparameter group by isspecified;ISSPEC COUNT(*)------ ----------TRUE 23FALSE 267
หากต�อง การน�า SPFILE ออกมูาเป็�น text ไฟล! - ที่"าไดู�โดูยCREATE PFILE FROM SPFILEเช้&น
SQL> create pfile='/tmp/pfile' from spfile;File created.
ในม3มกัล�บกั�น หากัต้�องกัารั้เป็ล��ยนจากั pfile เป็�น spfileCREATE SPFILE FROM PFILE
เช้&นSQL> create spfile from pfile;
หรั้+อSQL> create spfile from pfile='/tmp/pfile';
จากั น��น stop/start ฐานข้�อม�ล
SQL> show parameter spfile;NAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string
SQL> create spfile from pfile;File created.
SQL> shutdown immediate;SQL> startup
SQL> show parameter spfile;NAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string /oracle/11gR1/dbs/spfileorcl.ora
3
หมูายเหต# เรั้าจะรั้� �ไดู�อย&างไรั้ว&า Initialization parameters ต้�วไหนที่��เรั้าสามารั้ถเป็ล��ยนแป็ลง (ALTER SYSTEM
SET) และม�ผู้ลในที่�นที่�SQL> select name, value from v$parameter where ISSYS_MODIFIABLE='IMMEDIATE';
2. Control files - Control file เกั(บข้�อม�ล - ช้+�อฐานข้�อม�ล, เวลาที่��ฐานข้�อม�ลถ�กัสรั้�าง, ช้+�อและที่��เกั(บข้อง datafile/redo log ไฟล. และอ+�นๆ ที่��จ"าเป็�นในฐานข้�อม�ล, และแนะน"าควรั้ม�อย&างน�อย 2 ไฟล. เกั(บบน physical disk
ที่��ต้&างกั�น พรั้�อมกั�บ backup
SQL> select status, name from v$controlfile;STATUS NAME------- -----------------------------------------------------------------/oracle/oradata/ORCL/controlfile/o1_mf_5twzvtgn_.ctl/oracle/flash_recovery_area/ORCL/controlfile/o1_mf_5twzvtoh_.ctl
Starting backup at 19-APR-10allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=141 device type=DISKchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00001 name=/oracle/oradata/ORCL/datafile/o1_mf_system_5twzp126_.dbfchannel ORA_DISK_1: starting piece 1 at 19-APR-10
channel ORA_DISK_1: finished piece 1 at 19-APR-10piece handle=/oracle/flash_recovery_area/ORCL/backupset/2010_04_19/o1_mf_nnndf_TAG20100419T231236_5ws07tyl_.bkp tag=TAG20100419T231236 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:02:38Finished backup at 19-APR-10
Starting Control File and SPFILE Autobackup at 19-APR-10 piece
4
handle=/oracle/flash_recovery_area/ORCL/autobackup/2010_04_19/o1_mf_s_716771721_5ws0f47f_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 19-APR-10
การ backup Control file:
- backup เป็�น binary file
ALTER DATABASE BACKUP CONTROLFILE TO '/oracle/backup/control.bkp';
- สรั้�าง SQL statement เพ+�อใช้� recreate control file
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/oracle/backup/control.sql';
จะเห(นว&า Control file เป็�นส��งที่��ส"าค�ญมากั จ1งจ"าเป็�นที่��จะต้�อง ต้รั้วจสอบและ BACKUP(เสมอ)
SQL> show parameter control_filesNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string +DATA/orcl/controlfile/current.277.741286407 SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.
RMAN> startup nomount;Oracle instance startedTotal System Global Area 626327552 bytesFixed Size 2229080 bytesVariable Size 390073512 bytesDatabase Buffers 226492416 bytesRedo Buffers 7532544 bytes
RMAN> restore controlfile to '+DATA' from '+DATA/orcl/controlfile/current.277.741286407';Starting restore at 25-APR-11using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=10 instance=orcl_2 device type=DISKchannel ORA_DISK_1: copied control file copyFinished restore at 25-APR-11
ASMCMD> ls +DATA/orcl/CONTROLFILE/Current.277.741286407current.285.749426511
5
SQL> alter system set control_files='+DATA/orcl/controlfile/current.277.741286407','+DATA/orcl/controlfile/current.285.749426511' scope=spfile;
System altered.
SQL> startup force;ORACLE instance started.
Total System Global Area 626327552 bytesFixed Size 2229080 bytesVariable Size 390073512 bytesDatabase Buffers 226492416 bytesRedo Buffers 7532544 bytesDatabase mounted.Database opened.
SQL> show parameter control_filesNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string +DATA/orcl/controlfile/current.277.741286407, +DATA/orcl/controlfile/current.285.749426511
Sat Apr 24 18:31:47 2010Errors in file /oracle/diag/rdbms/orcl/orcl/trace/orcl_arc2_2497.trc:ORA-00313: open failed for members of log group 3 of thread 1ORA-00312: online log 3 thread 1: '/oracle/oradata/ORCL/onlinelog/redo3b.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3ORA-00312: online log 3 thread 1: '/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_5x5m8zrk_.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3Errors in file /oracle/diag/rdbms/orcl/orcl/trace/orcl_arc2_2497.trc:ORA-00313: open failed for members of log group 3 of thread 1ORA-00312: online log 3 thread 1: '/oracle/oradata/ORCL/onlinelog/redo3b.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3ORA-00312: online log 3 thread 1: '/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_5x5m8zrk_.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3Sat Apr 24 18:31:48 2010Errors in file /oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_3908.trc:ORA-00313: open failed for members of log group 3 of thread 1ORA-00312: online log 3 thread 1: '/oracle/oradata/ORCL/onlinelog/redo3b.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3ORA-00312: online log 3 thread 1: '/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_5x5m8zrk_.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3
ต้รั้วจสอบ redolog group 3 และแกั�ป็8ญหาSQL> select group#, sequence#, bytes, members, status from v$log;GROUP# SEQUENCE# BYTES MEMBERS STATUS---------- ---------- ---------- ---------- ----------------1 28 52428800 2 CURRENT2 27 52428800 2 INACTIVE3 26 104857600 2 INACTIVE
SQL> alter database clear unarchived logfile group 3;Database altered.บน alert log file:Sat Apr 24 18:32:45 2010alter database clear unarchived logfile group 3WARNING! CLEARING REDO LOG WHICH HAS NOT BEEN ARCHIVED. BACKUPS TAKENBEFORE 04/24/2010 18:28:58 (CHANGE 1512349) CANNOT BE USED FOR RECOVERY.Clearing online log 3 of thread 1 sequence number 26Errors in file /oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3904.trc:ORA-00313: open failed for members of log group 3 of thread 1ORA-00312: online log 3 thread 1: '/oracle/oradata/ORCL/onlinelog/redo3b.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3ORA-00312: online log 3 thread 1:
9
'/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_5x5m8zrk_.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3Deleted Oracle managed file /oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_5x5m8zrk_.logSat Apr 24 18:32:49 2010Archiver process freed from errors. No longer stoppedSat Apr 24 18:32:56 2010Completed: alter database clear unarchived logfile group 3
จะเห(นว&า logfile group 3 ใช้�งานไดู�ป็กัต้� - ส&วนกัารั้แกั�ป็8ญหากั�บ redolog file กั(ข้1�นกั�บแต้&ละกัรั้ณ�ไป็
SQL> select NAME, CREATED, LOG_MODE, CHECKPOINT_CHANGE#,ARCHIVE_CHANGE# from V$DATABASE;NAME CREATED LOG_MODE CHECKPOINT_CHANGE# ARCHIVE_CHANGE#--------- --------- ------------ ------------------ ---------------ORCL 28-MAR-10 ARCHIVELOG 1663822 1619901*** กัรั้ณ� ข้อง RAC เรั้าต้�อง shutdown database (instance all nodes) -> startup mount (only one node) -> alter database archivelog -> alter database open -> startup instance other nodes.
กั&อน 10g หากัฐานข้�อม�ลเป็�น archive mode เรั้าควรั้ต้�องเป็:ดู automatic archiver process โดูยกัารั้เซึ่ต้ log_archive_start=TRUE แต้&จากั 10g "log_archive_start" ไม&จ"าเป็�นต้&อไป็ และอาจพบ Error เม+�อ startup ฐานข้�อม�ลORA-32006: LOG_ARCHIVE_START initialization parameter has been deprecated
กัารั้พ�จารั้ณา พ+�นที่�� disk ส"าหรั้�บ Archive Files [ID 122555.1] - ข้อเสนอ script พรั้�อมต้�วอย&างcolumn ord noprintcolumn date_ heading 'Date' format A15column no heading '#Arch files' format 9999999column no_size heading 'Size Mb' format 9999999compute avg of no on reportcompute avg of no_size on reportbreak on reportselect MAX(first_time) ord, to_char(first_time,'DD-MON-YYYY') date_,
11
count(recid) no, count(recid) * <REDO_SIZE_FILE_MB> no_sizefrom v$log_historygroup by to_char(first_time,'DD-MON-YYYY')order by ord/clear breaksclear computesclear columnsต'วอย�าง:SQL> select distinct (bytes)/1024/1024 from v$log;(BYTES)/1024/1024-----------------50
SQL> column ord noprintSQL> column date_ heading 'Date' format A15SQL> column no heading '#Arch files' format 9999999SQL> column no_size heading 'Size Mb' format 9999999SQL> compute avg of no on reportSQL> compute avg of no_size on reportSQL> break on report
SQL> select FILE_NAME, AUTOEXTENSIBLE, INCREMENT_BY from dba_data_files where tablespace_name='USERS';FILE_NAME AUT INCREMENT_BY------------------------------------------------------------ --- ------------/oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf YES 160
SQL> alter database datafile '/oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf' autoextend off;Database altered.
SQL> select FILE_NAME, AUTOEXTENSIBLE, INCREMENT_BY from dba_data_files where tablespace_name='USERS';FILE_NAME AUT INCREMENT_BY------------------------------------------------------------ --- ------------/oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf NO 0
SQL> alter database datafile '/oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf' autoextend on next 10M;Database altered.
SQL> select FILE_NAME, AUTOEXTENSIBLE, INCREMENT_BY from dba_data_files where tablespace_name='USERS';FILE_NAME AUT INCREMENT_BY
SQL> select file#,name, status from v$datafile;FILE# NAME STATUS---------- ------------------------------------------------------------ -------4 /oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf RECOVER
SQL> alter database rename file '/oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf' to '/oracle/oradata/ORCL/datafile_test/o1_mf_users_5twzp1c3_new.dbf';Database altered.
SQL> select file#,name, status from v$datafile;FILE# NAME STATUS---------- ---------------------------------------------------------------- -------4 /oracle/oradata/ORCL/datafile_test/o1_mf_users_5twzp1c3_new.dbf RECOVER
SQL> recover datafile 4;Media recovery complete.SQL> select file#,name, status from v$datafile;FILE# NAME STATUS---------- ---------------------------------------------------------------- -------4 /oracle/oradata/ORCL/datafile_test/o1_mf_users_5twzp1c3_new.dbf OFFLINE
SQL> alter database datafile 4 online ;Database altered.
SQL> select file#,name, status from v$datafile;FILE# NAME STATUS---------- ---------------------------------------------------------------- -------4 /oracle/oradata/ORCL/datafile_test/o1_mf_users_5twzp1c3_new.dbf ONLINE
SQL> alter tablespace users offline ;Tablespace altered.
SQL> select file#,name, status from v$datafile;FILE# NAME STATUS---------- ---------------------------------------------------------------- -------4 /oracle/oradata/ORCL/datafile_test/o1_mf_users_5twzp1c3_new.dbf OFFLINE
SQL> alter database rename file '/oracle/oradata/ORCL/datafile_test/o1_mf_users_5twzp1c3_new.dbf' to '/oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf';Database altered.
SQL> select file#,name, status from v$datafile;FILE# NAME STATUS---------- ---------------------------------------------------------------- -------4 /oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf OFFLINE
16
SQL> alter tablespace users online;Tablespace altered.
SQL> alter tablespace users read write;Tablespace altered.
SQL> select file#,name, status from v$datafile;FILE# NAME STATUS---------- ---------------------------------------------------------------- -------4 /oracle/oradata/ORCL/datafile/o1_mf_users_5twzp1c3_new.dbf ONLINEข้�างต้�นไดู�แสดูงต้�วอย&างกัารั้ย�าย datafile อย&างไรั้กั(ดู�เรั้าควรั้รั้� �และเข้�าใจ กัารั้ต้รั้วจเช้(ค และจ�ดูกัารั้กั�บ datafile (อ&าน เพ��มเต้�ม)
6. Tablespaces6.1 SYSTEM TablespaceUser objects ไม&ควรั้สรั้�างใน System tablespace เพ+�อช้&วยไม&ให�เกั�ดูป็8ญหาเรั้+�อง fragmentation และป็9องกั�นกัารั้ม�ข้นาดูใหญ&ข้อง system tablespace โดูยที่��ไม&จ"าเป็�นSQL> select owner, segment_name, segment_type from dba_segments where tablespace_name = 'SYSTEM' and owner not in ('SYS','SYSTEM');ต้รั้วจสอบ segment ที่��อย�&บน system tablspace และ เจ�าข้องไม&ใช้� SYS หรั้+อ SYSTEM
*ERROR at line 1:ORA-13509: error encountered during updates to a AWR tableORA-00376: file ORA-00376: file 2 cannot be read at this timeORA-01110: data file 2: '/oracle/oradata/ORCL/datafile/o1_mf_sysaux_5twzp15k_.dbf'cannot be read at this timeORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 14ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 37ORA-06512: at line 1
SQL> alter tablespace sysaux online;Tablespace altered.
6.4 Temporary Tablespaceจะถ�กัใช้�เพ+�อกัารั้ sort และกัารั้เกั(บ global temporary tables. เรั้าควรั้ต้�องแน&ใจว&า tablespace ส"าหรั้�บ temporary segments เป็�นป็รั้ะเภที่ TEMPORARYSQL> select tablespace_name, contents from dba_tablespaces;
TABLESPACE_NAME CONTENTS------------------------------ ---------SYSTEM PERMANENTSYSAUX PERMANENTTEMP TEMPORARYUSERS PERMANENTหรั้+อ แน&ใจว&า USER ถ�กัหนดูให�ใช้� temporary space เป็�นป็รั้ะเภที่ TEMPORARYSQL> select u.username, t.tablespace_name from dba_users u, dba_tablespaces t where u.temporary_tablespace = t.tablespace_name and t.contents <> 'TEMPORARY';ต้�วอย&างอ+�นๆกัารั้เป็ล��ยน temporary tablespace บน userSQL> alter user SYSTEM temporary tablespace User;กัารั้เป็ล��ยน default temporary tablespace บนฐานข้�อม�ลSQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;กัารั้ลดู ข้นาดู tempfile
กัารั้หาข้นาดูข้อง temporary tablespaceSQL> select tablespace_name, sum(bytes)/1024/1024 mb from dba_temp_files group by tablespace_name;
กัารั้ หา "high water mark" ข้อง temporary tablespace (max used at one time)SQL> select tablespace_name, sum(bytes_cached)/1024/1024 mb from v$temp_extent_pool group by tablespace_name;TABLESPACE_NAME MB------------------------------ ----------TEMP 27
กัารั้ หา current usageSQL> select ss.tablespace_name, sum((ss.used_blocks*ts.blocksize))/1024/1024 mb from gv$sort_segment ss, sys.ts$ ts where ss.tablespace_name = ts.name group by ss.tablespace_name;TABLESPACE_NAME MB------------------------------- ----------TEMP 1
20
หรั้+อSQL> SELECT A.tablespace_name tablespace, D.mb_total, SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free FROM v$sort_segment A,(SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total FROM v$tablespace B, v$tempfile C WHERE B.ts#= C.ts# GROUP BY B.name, C.block_size ) D WHERE A.tablespace_name = D.name GROUP by A.tablespace_name, D.mb_total;TABLESPACE MB_TOTAL MB_USED MB_FREE------------------------------- ---------- ---------- ----------TEMP 28 1 27
select owner, segment_type, segment_name, tablespace_name, count(blocks), SUM(bytes/1024) "BYTES K", SUM(blocks) from dba_extents where owner NOT IN ('SYS','SYSTEM') group by owner, segment_type, segment_name, tablespace_name having count(*) > &number_extents order by segment_type, segment_name;
SQL> alter table TB_TEST move tablespace TBS_EXT_10M;Table altered.
SQL> select blocks, bytes, tablespace_name from user_extents where segment_name='TB_TEST';BLOCKS BYTES TABLESPACE_NAME---------- ---------- ------------------------------1280 10485760 TBS_EXT_10Mจะเห(นว&า จ"านวนข้อง extent น�อยลง
7.2 Next extentSegment สามารั้ถที่��จะเต้�บโต้ไดู� จ1งต้�องม�กัารั้จ�ดูสรั้รั้ next extent เม+�อจ"าเป็�น ถ�าพ+�นที่��ว&างน��นไม&เพ�ยงพอใน tablespace จะส&งผู้ลให� next extent ไม&สามารั้ถจ�ดูสรั้รั้พ+�นที่�� และ object จะไม&เต้�บโต้ต้&อไป็เรั้าสามารั้ถเช้(ค segment ที่��ไม&สามารั้ถจ�ดูสรั้รั้ next extentselect s.owner, s.segment_name, s.segment_type, s.tablespace_name, s.next_extent from dba_segments s where s.next_extent > (select MAX(f.bytes) from dba_free_space f where f.tablespace_name = s.tablespace_name);แต้& ถ�าม� fragmentation มากัๆ ใน tablespace จะส&งผู้ลให�ผู้ลล�พที่.ที่��ไดู� แสดูงว&า object ว&าย�งสามารั้ถเต้�บโต้ไดู� ดู�งน��นเรั้าอาจจะดู�ดูแป็ลงโดูยกัารั้หา fragmentation ใน tablespace ไป็เป็รั้�ยบเที่�ยบกั�บ next extent ข้องแต้&ละ object
7.3 Indexesกัารั้ rebuild index เป็�นส��งที่��ดู� แต้&เรั้าย�งสามามารั้ถเล+อกัว�ธี�กัารั้อ+�น coalescing index
กัารั้ พ�จารั้ณา b-tree index กั&อน rebuild อาจใช้�หล�กัเกัณฑ์.- deleted entries represent 20% or more of the current entries.- the index depth is more then 4 levels.อ&านเพ��มเต้�ม Richard Foote
ต'วอย�าง: เช้(ค index_stats เม+�อม�กัารั้ update/index ข้�อม�ล และ rebuild index (tb_test = 50 rows)SQL> create index ind_test on tb_test(object_id);Index created.
SQL> analyze index IND_TEST validate structure;Index analyzed.
SQL> select lf_rows, lf_rows_len, del_lf_rows, del_lf_rows_len, used_space FROM index_stats WHERE name = 'IND_TEST';LF_ROWS LF_ROWS_LEN DEL_LF_ROWS DEL_LF_ROWS_LEN USED_SPACE---------- ----------- ----------- --------------- ----------50 800 0 0 800
SQL> update tb_test set object_id=1 where rownum <= 10; 10 rows updated.
SQL> commit;Commit complete.
SQL> analyze index IND_TEST validate structure;Index analyzed.
23
SQL> select lf_rows, lf_rows_len, del_lf_rows, del_lf_rows_len, used_space FROM index_stats WHERE name = 'IND_TEST';
query" ฟ2เจอรั้.SQL> show parameter UNDO_RETENTION;NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_retention integer 900
SQL> alter system set UNDO_RETENTION=3600;System altered.
SQL> show parameter UNDO_RETENTION;NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_retention integer 3600
บน Oracle 10g ค3ณอาจเล+อกัใช้� GUARANTEE เพ+�อให�แน&ใจว&า undo ข้�อม�ล ไม&ถ�กัข้�ยนที่�บกั&อน undo_retention ที่��กั"าหนดูSQL> show parameter undo_tablespace;NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_tablespace string UNDOTBS1
SQL> alter tablespace UNDOTBS1 retention GUARANTEE;Tablespace altered.
หรั้+อ ค"านวณจ"านวน Byte ที่��ต้�องกัารั้SQL> SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes" FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'),(SELECT (SUM(undoblks)/SUM(((end_time - begin_time)*86400))) AS UPS FROM v$undostat),(select block_size as DBS from dba_tablespaces where tablespace_name=(select upper(value) from v$parameter where name = 'undo_tablespace'));Bytes----------751016.081
SQL> show parameter UNDO_MANAGEMENTNAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string MANUAL
SQL> show parameter rollback_segmentsNAME TYPE VALUE------------------------------------ ----------- ------------------------------rollback_segments string RBS1
SQL> select d.segment_name, d.tablespace_name, s.waits, s.shrinks, s.wraps, s.status from v$rollstat s, dba_rollback_segs d where s.usn = d.segment_id order by 1;SEGMENT_NAME TABLESPACE_NAME WAITS SHRINKS WRAPS STATUS------------------------------ ------------------------------ ---------- ---------- ---------- ---------------RBS1 SYSTEM 0 0 10 ONLINESYSTEM SYSTEM 0 0 0 ONLINE
ถ�าไม&กั"าหนดู rollback_segments จะม� "SYSTEM" rollback segment เดู�ยวSQL> show parameter UNDO_MANAGEMENTNAME TYPE VALUE
SQL> show parameter rollback_segmentsNAME TYPE VALUE------------------------------------ ----------- ------------------------------rollback_segments string
SQL> select d.segment_name, d.tablespace_name, s.waits, s.shrinks, s.wraps, s.status from v$rollstat s, dba_rollback_segs d where s.usn = d.segment_id order by 1;SEGMENT_NAME TABLESPACE_NAME WAITS SHRINKS WRAPSSTATUS------------------------------ ------------------------------ ---------- ---------- ---------- ---------------SYSTEM SYSTEM 0 0 0 ONLINEจากัข้�างต้�น ข้อข้ยายความ MANUAL UNDO เพ�ยงครั้&าวๆ (more)
อย&าง ไรั้กั(ต้ามข้อแนะน"าให�ใช้� AUTO UNDO (อย&างกัรั้ณ�ฟ2เจอรั้. Total Recall กั(ต้�องกัารั้ AUTO UNDO)
ถ�าค&าน��น�อยเกั�นไป็ (pga_aggregate_target) บ&อยครั้��งที่��เรั้าจะพบ ORA-4030SQL> show parameter workarea_size_policyNAME TYPE VALUE------------------------------------ ----------- ------------------------------workarea_size_policy string AUTO
SQL> show parameter pga_aggregate_targetNAME TYPE VALUE------------------------------------ ----------- ------------------------------pga_aggregate_target big integer 500M
ถ�า workarea_size_policy เป็�น AUTO หน&วยความจ"าส"าหรั้�บ work area (sort area) จะถ�กัจ�ดูกัารั้อ�ต้โนม�ต้� จากัค&า pga_aggregate_target
ต้�วอย&าง work area:- Sort-based operators (ORDER BY, GROUP BY, ROLLUP, window functions)- Hash-join- Bitmap merge- Bitmap createอ�นไดู�แกั& พารั้าม�เต้อรั้. *area_sizeSQL> show parameter area_sizeNAME TYPE VALUE------------------------------------ ----------- ------------------------------bitmap_merge_area_size integer 1048576create_bitmap_area_size integer 8388608hash_area_size integer 131072sort_area_size integer 65536
ถ�า workarea_size_policy เป็�น MANUAL หน&วยความจ"าส"าหรั้�บ work area (sort area) จะไม&ใช้� pga_aggregate_target เรั้าต้�องม�กัารั้จ�ดูกัารั้กั�บพารั้าม�เต้อรั้. *area_size แต้&ละต้�วเองกัารั้ต้รั้วจสอบ PGA เช้&น ข้�อม�ลกัารั้ใช้�PGASELECT * FROM V$PGASTAT;หรั้+อ ค"าแนะน"าเพ+�อกัารั้ป็รั้�บค&าข้อง PGASELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,ESTD_OVERALLOC_COUNTFROM V$PGA_TARGET_ADVICE;หรั้+อ กัารั้ต้รั้วจสอบ PGA แต้&ละ sessionset pages500 lines110 trims onclear colcol name format a30col username format a20break on username nodup skip 1select vses.username||':'||vsst.sid||','||vses.serial# username, vstt.name, max(vsst.value) valuefrom v$sesstat vsst, v$statname vstt, v$session vseswhere vstt.statistic# = vsst.statistic# and vsst.sid = vses.sid and vstt.name in('session pga memory','session pga memory max','session uga memory','session uga memory max','session cursor cache count','session cursor cache hits','session stored procedure space','opened cursors current','opened cursors cumulative') and vses.username is not nullgroup by vses.username, vsst.sid, vses.serial#, vstt.name order by vses.username, vsst.sid, vses.serial#, vstt.name;
เม+�อ เรั้าเซึ่ต้ค&าส"าหรั้�บ SGA_TARGET, Oracle 10g จะกั"าหนดูข้นาดูส&วนป็รั้ะกัอบอ�นไดู�แกั&- Shared pool (SQL และ PL/SQL execution)- Java pool (Java execution state)- Large pool (large allocations เช้&น RMAN backup buffers)- Buffer cache- Streams poolSQL> show parameter sga_targetNAME TYPE VALUE------------------------------------ ----------- ------------------------------sga_target big integer 512M
กัารั้ต้รั้วจสอบข้�อม�ลกัารั้ใช้� SGAselect * from v$sgastat;select * from v$sgainfo;หรั้+อ ค"าแนะน"าเพ+�อกัารั้ป็รั้�บค&าข้อง SGAselect * from v$sga_target_advice order by sga_size;หรั้+อต้รั้วจสอบกัารั้เพ��ม ค&าหรั้+อลดูค&า ข้องส&วนป็รั้ะกัอบ SGAselect * from v$sga_dynamic_components;และALTER SESSION SET nls_date_format = 'DD/MM/YYYY:HH24:MI:SS';SET PAGESIZE 900SET LINESIZE 255COL COMPONENT FORMAT A25COL INITIAL_SIZE FORMAT A10COL TARGET_SIZE FORMAT A10COL FINAL_SIZE FORMAT A10COL OPER_TYPE FORMAT A10select START_TIME, component, oper_type, oper_mode,status, initial_size/1024/1024 "INITIAL", target_size/1024/1024 "TARGET", FINAL_SIZE/1024/1024 "FINAL", END_TIMEfrom v$sga_resize_opsorder by start_time, component;
9.4 Oracle 11gAutomatic Memory Management (AMM) ถ�กัแนะน"าใน Oracle เวอรั้.ช้�น 11g ช้&วยให�ป็รั้�บค&า PGA และ SGA โดูยอ�ต้โนม�ต้� กั�บค&าพารั้าม�เต้อรั้. MEMORY_MAX_TARGET และ MEMORY_TARGET SQL> show parameter MEMORY_MAX_TARGETNAME TYPE VALUE------------------------------------ ----------- ------------------------------memory_max_target big integer 800M
SQL> show parameter MEMORY_TARGETNAME TYPE VALUE------------------------------------ ----------- ------------------------------memory_target big integer 800M
กัารั้ต้รั้วจสอบองค.ป็รั้ะกัอบข้องหน&วย ความจ"าที่��ใช้� AMMselect * from V$MEMORY_DYNAMIC_COMPONENTS;ต้รั้วจสอบกัารั้เพ��มและลดูข้ององค. ป็รั้ะกัอบใน AMM ดู�วย V$MEMORY_RESIZE_OPS
หรั้+อ ค"าแนะน"าเพ+�อกัารั้ป็รั้�บค&าส"าหรั้�บ AMMselect * from v$memory_target_advice order by memory_size;
- Errors เกั��ยวกั�บ shared server และ dispatcher processes
- Errors ข้ณะที่�� materialized view (refresh)
กัารั้ที่�� เรั้าม� alert log ไฟล. ข้นาดูใหญ& จะเป็�นกัารั้ใช้�พ+�นที่��ข้อง Disk โดูยที่��ไม&จ"าเป็�น และส&งผู้ลต้&อป็รั้ะส�ที่ธี�ภาพในกัารั้เข้�ยนลง Disk ข้อง OS
ก�อน 11g:
SQL> show parameter background_dump_destNAME TYPE VALUE------------------------------------ ----------- ------------------------------background_dump_dest string /oracle/admin/orcl/bdump
11g ->: จะใช้� diagnostic_dest พารั้าม�เต้อรั้.SQL> show parameter background_dump_destNAME TYPE VALUE------------------------------------ ----------- ------------------------------background_dump_dest string /oracle/diag/rdbms/orcl/orcl/trace
SQL> show parameter diagnostic_destNAME TYPE VALUE
SQL> show parameter audit_file_destNAME TYPE VALUE------------------------------------ ----------- ------------------------------audit_file_dest string /oracle/admin/orcl/adump