Archive for the ‘Oracle Internal’ Category

Code Description
10000 Control file debug event, name ‘control_file’
10001 Control file crash event1
10002 Control file crash event2
10003 Control file crash event3
10004 Control file crash event4
10005 Trace latch operations for debugging
10006 Testing – block recovery forced
10007 Log switch debug crash after new log select, thread %s
10008 Log switch debug crash after new log header write, thread %s
10009 Log switch debug crash after old log header write, thread %s
10010 Begin Transaction
10011 End Transaction
10012 Abort Transaction
10013 Instance Recovery
10014 Roll Back to Save Point
10015 Undo Segment Recovery
10016 Undo Segment extend
10017 Undo Segment Wrap
10018 Data Segment Create
10019 Data Segment Recovery
10020 Partial link restored to linked list (KSG)
10021 Latch cleanup for state objects (KSS)
10022 Trace ktsgsp
10023 Create Save Undo Segment
10024 Write to Save Undo
10025 Extend Save Undo Segment
10026 Apply Save Undo
10027 Latch cleanup for enqueue locks (KSQ)
10028 Latch cleanup for enqueue resources (KSQ)
10029 Session logon (KSU)
10030 Session logoff (KSU)
10031 Row source debug event (R*)
10032 Sort end (SOR*)
10035 Parse SQL statement (OPIPRS)
10036 Create remote row source (QKANET)
10037 Allocate remote row source (QKARWS)
10038 Dump row source tree (QBADRV)
10039 Type checking (OPITCA)
10040 Dirty cache list
10041 Dump undo records skipped
10042 Trap error during undo application
10044 Free list undo operations
10045 Free list update operations – ktsrsp, ktsunl
10046 Enable SQL statement timing
10047 Trace switching of sessions
10048 Undo segment shrink
10049 Protect library cache memory heaps
10050 Sniper trace
10051 Trace OPI calls
10052 Don’t clean up obj$
10053 CBO Enable optimizer trace
10054 Trace UNDO handling in MLS
10055 Trace UNDO handing
10056 Dump analyze stats (kdg)
10057 Suppress file names in error messages
10058 Use table scan cost in tab$.spare1
10060 CBO Enable predicate dump
10061 Disable SMON from cleaning temp segment
10062 Disable usage of OS Roles in osds
10063 Disable usage of DBA and OPER privileges in osds
10064 Thread enable debug crash level %s, thread %s
10065 Limit library cache dump information for state object dump
10066 Simulate failure to verify file
10067 Force redo log checksum errors – block number
10068 Force redo log checksum errors – file number
10069 Trusted Oracle test event
10070 Force datafile checksum errors – block number
10071 Force datafile checksum errors – file number
10072 Protect latch recovery memory
10073 Have PMON dump info before latch cleanup
10074 Default trace function mask for kst
10075 CBO Disable outer-join to regular join conversion
10076 CBO Enable cartesian product join costing
10077 CBO Disable view-merging optimization for outer-joins
10078 CBO Disable constant predicate elimination optimization
10080 Dump a block on a segment list which cannot be exchanged
10081 Segment High Water Mark has been advanced
10082 Free list head block is the same as the last block
10083 A brand new block has been requested from space management
10084 Free list becomes empty
10085 Free lists have been merged
10086 CBO Enable error if kko and qka disagree on oby sort
10087 Disable repair of media corrupt data blocks
10088 CBO Disable new NOT IN optimization
10089 CBO Disable index sorting
10090 Invoke other events before crash recovery
10091 CBO Disable constant predicate merging
10092 CBO Disable hash join
10093 CBO Enable force hash joins
10094 Before resizing a data file
10095 Dump debugger commands to trace file
10096 After the cross instance call when resizing a data file
10097 After generating redo when resizing a data file
10098 After the OS has increased the size of a data file
10099 After updating the file header with the new file size
10100 After the OS has decreased the size of a data file
10101 Atomic redo write recovery
10102 Switch off anti-joins
10103 CBO Disable hash join swapping
10104 Dump hash join statistics to trace file
10105 CBO Enable constant pred trans and MPs w WHERE-clause
10106 CBO Disable evaluating correlation pred last for NOT IN
10107 CBO Always use bitmap index
10108 CBO Don’t use bitmap index
10109 CBO Disable move of negated predicates
10110 CBO Try index rowid range scans
10111 Bitmap index creation switch
10112 Bitmap index creation switch
10113 Bitmap index creation switch
10114 Bitmap index creation switch
10115 CBO Bitmap optimization use maximal expression
10116 CBO Bitmap optimization switch
10117 CBO Disable new parallel cost model
10118 CBO Enable hash join costing
10119 QKA Disable GBY sort elimination
10120 CBO Disable index fast full scan
10121 CBO Don’t sort bitmap chains
10122 CBO disable count(col) = count(*) transformation
10123 QKA Disable Bitmap And-EQuals
10145 Test auditing network errors
10146 Enable Oracle TRACE collection
10200 Block cleanout
10201 Consistent read undo application
10202 Consistent read block header
10203 Consistent read buffer status
10204 Signal recursive extend
10205 Row cache debugging
10206 Transaction table consistent read
10207 Consistent read transactions’ status report
10208 Consistent read loop check
10209 Enable simulated error on control file
10210 Check data block integrity
10211 Check index block integrity
10212 Check cluster integrity
10213 Crash after control file write
10214 Simulate write errors on control file
10215 Simulate read errors on control file
10216 Dump control file header
10217 Debug sequence numbers
10218 Dump uba of applied undo
10219 Monitor multi-pass row locking
10220 Show updates to the transaction table
10221 Show changes done with undo
10222 Row cache
10223 Transaction layer – turn on verification codes
10226 Trace CR applications of undo for data operations
10227 Verify (multi-piece) row structure
10228 Trace application of redo by kcocbk
10230 Check redo generation by copying before applying
10231 Skip corrupted blocks on _table_scans_
10232 Dump corrupted blocks symbolically when kcbgotten
10233 Skip corrupted blocks on index operations
10234 Trigger event after calling kcrapc to do redo N times
10235 Check memory manager internal structures
10236 Library cache manager
10237 Simulate ^C (for testing purposes)
10238 Instantiation manager
10239 Multi-instance library cache manager
10240 Dump dba’s of blocks that we wait for
10241 Dump SQL generated for remote execution (OPIX)
10243 Simulated error for test %s of K2GTAB latch cleanup
10244 Make tranids in error msgs print as 0.0.0 (for testing)
10245 Simulate lock conflict error for testing PMON
10246 Print trace of PMON actions to trace file
10247 Turn on scgcmn tracing. (VMS ONLY)
10248 Turn on tracing for dispatchers
10249 Turn on tracing for multi-stated servers
10250 Trace all allocate and free calls to the topmost SGA heap
10251 Check consistency of transaction table and undo block
10252 Simulate write error to data file header
10253 Simulate write error to redo log
10254 Trace cross-instance calls
10256 Turn off multi-threaded server load balancing
10257 Trace multi-threaded server load balancing
10258 Force shared servers to be chosen round-robin
10259 Get error message text from remote using explicit call
10260 Trace calls to SMPRSET (VMS ONLY)
10261 Limit the size of the PGA heap
10262 Don’t check for memory leaks
10263 Don’t free empty PGA heap extents
10264 Collect statistics on context area usage (x$ksmcx)
10265 Keep random system generated output out of error messages
10266 Trace OSD stack usage
10267 Inhibit KSEDMP for testing
10268 Don’t do forward coalesce when deleting extents
10269 Don’t do coalesces of free space in SMON
10270 Debug shared cursors
10271 Distributed transaction after COLLECT
10272 Distributed transaction before PREPARE
10273 Distributed transaction after PREPARE
10274 Distributed transaction before COMMIT
10275 Distributed transaction after COMMIT
10276 Distributed transaction before FORGET
10277 Cursor sharing (or not) related event (used for testing)
10281 Maximum time to wait for process creation
10282 Inhibit signalling of other backgrounds when one dies
10286 Simulate control file open error
10287 Simulate archiver error
10288 Do not check block type in ktrget
10289 Do block dumps to trace file in hex rather than fromatted
10290 Kdnchk – checkvalid event – not for general purpose use.
10291 Die in dtsdrv to test controlfile undo”
10292 Dump uet entries on a 1561 from dtsdrv”
10293 Dump debugging information when doing block recovery”
10294 Enable PERSISTENT DLM operations on non-compliant systems”
10300 Disable undo compatibility check at database open
10301 Enable LCK timeout table consistency check”
10320 Enable data layer (kdtgrs) tracing of space management calls”
10352 Report direct path statistics
10353 Number of slots
10354 Turn on direct read path for parallel query
10355 Turn on direct read path for scans
10356 Turn on hint usage for direct read
10357 Turn on debug information for direct path
10374 Parallel query server interrupt (validate lock value)
10375 Turn on checks for statistics rollups
10376 Turn on table queue statistics
10377 Turn off load balancing
10379 Direct read for rowid range scans (unimplemented)
10380 Kxfp latch cleanup testing event
10381 Kxfp latch cleanup testing event
10382 Parallel query server interrupt (reset)
10383 Auto parallelization testing event
10384 Parallel dataflow scheduler tracing
10385 Parallel table scan range sampling method
10386 Parallel SQL hash and range statistics
10387 Parallel query server interrupt (normal)
10388 Parallel query server interrupt (failure)
10389 Parallel query server interrupt (cleanup)
10390 Trace parallel query slave execution
10391 Trace rowid range partitioning
10392 Parallel query debugging bits
10393 Print parallel query statistics
10394 Allow parallelization of small tables
10395 Adjust sample size for range table queues
10396 Circumvent range table queues for queries
10397 Suppress verbose parallel coordinator error reporting
10398 Enable timeouts in parallel query threads
10399 Use different internal maximum buffer size
10400 Turn on system state dumps for shutdown debugging
10500 Turn on traces for SMON
10510 Turn off SMON check to offline pending offline rollbacksegment
10511 Turn off SMON check to cleanup undo dictionary
10512 Turn off SMON check to shrink rollback segments
10600 Check cursor frame allocation
10602 Cause an access violation (for testing purposes)
10603 Cause an error to occur during truncate (for testing purposes)
10604 Trace parallel create index
10605 Enable parallel create index by default
10606 Trace parallel create index
10607 Trace index rowid partition scan
10608 Trace create bitmap index
10610 Trace create index pseudo optimizer
10666 Do not get database enqueue name
10667 Cause sppst to check for valid process ids
10690 Set shadow process core file dump type (Unix only)
10691 Set background process core file type (Unix only)
10700 Alter access violation exception handler
10701 Dump direct loader index keys
10702 Enable histogram data generation
10703 Simulate process death during enqueue get
10704 Print out information about what enqueues are being obtained
10706 Print out information about instance lock manipulation
10707 Simulate process death for instance registration
10708 Print out Tracing information for skxf multi instance comms
10709 Enable parallel instances in create index by default
10710 Trace bitmap index access
10711 Trace bitmap index merge
10712 Trace bitmap index or
10713 Trace bitmap index and
10714 Trace bitmap index minus
10715 Trace bitmap index conversion to rowids
10800 Disable Smart Disk scan
10801 Enable Smart Disk trace
10802 Reserved for Smart Disk
10803 Write timing statistics on OPS recovery scan
10804 Reserved for ksxb
10805 Reserved for row sort
10900 Extent manager fault insertion event #%s
10924 Import storage parse error ignore event
10925 Trace name context forever
10926 Trace name context forever
10927 trace name context forever
10928 trace name context forever
10999 do not get database enqueue name
convert this post to pdf.

This is one feature which i use very often.  Even after killing the session using alter system command, the oracle process still hangs in the os.  In such scenario without getting into oracle account we can kill the os process. Please note you need to sysdba privs.

sqlplus "/as sysdba"
oradebug setospid spid@v$process;
oradebug short_stack;
oradebug event immediate crash;
oradebug short_stack;
This will kill the associated os process. This is undocumented so all the warning holds good.
If you want to kill the current session which you have connected then, alter session set 'immediate crash'; Though not much use in real world scenario. convert this post to pdf.

ORA-00600: [ktsircinfo_num1],

In one of our DB, we drop and create a table during batch program. This program runs every day. Today we got a call from the user that they are encountering error

 ORA-00955: name is already used by an existing object

This error message was very clear. We immedately replied back saying that check the code, as it is trying to recreate the object which is already in the DB.

But actually it turned out to be a more interesting issue.

The table in question has been droped from the DB. When we query the dba_tables/obj$, this objects was not present.

However, when we try to give

    select count(*) from table_name;

We got a surprising


ERROR at line 1:
ORA-00600: internal error code, arguments: [ktsircinfo_num1], [21], [21], [2335770], [], [], [], []

We were initially puzzled why this error is coming from. Then we fixed this issue by flushing the shared pool.



Visitors Count


convert this post to pdf.

ORA-00600 [qmtInit1]

A schedule export backup on one of our dev DB has failed due to below ora 600


ORA-00600: internal error code, arguments: [qmtInit1], [], [], [], [], [], [], []

As per metalink note:351650.1, they defined this as a bug and workaround is to restart the server.

I tried flushing the shared pool. It didn’t help.

There were some invalid objects, tried compiling but still didn’t help.

From the associated trace file of ora-600, this error was coming on the statement

Current SQL statement for this session:
SELECT URL, LOCAL, STRIPPED_VAL      FROM SYS.KU$_XMLSCHEMA_VIEW      WHERE OWNE
R_NAME = :OWNER

Though this object is valid, i tried recompiling it.

This worked. Our full export started working with out any issues.

This error comes while exporting cluster definitions. I was seeing some wait events like xdb initialization in the event@v$session.



Visitors Count


convert this post to pdf.

Posted by Borndba on April 4, 2009 at 12:28 am under Oracle, Oracle Internal.
Tags: ,
Comments Off.

TDE

Transparent Data Encryption, this a new feature introduced in 10gR2 in encrypting the sensitive column. I read something interesting on it's impact on performance and storage. Thought let me document it.

Overhead of encrypting or decrypting will be 5%. If a encrypted column is indexed, in the index the value is stored as cipher text. On storage front, the impact is huge, for every encrypted column there is additional overhead of 20bytes due to integrity check. TDE will pad encrypted value to 16 bytes also. Incase if the non-encrypted column requires 10 bytes, when you encrypt it will additionally take 6 bytes. If salt is specified when defining the column, it will additionally consume 16 bytes. 

So altogether if a column is encrypted it will require 33 and 48bytes of additional storage per rows.

So, to get encryption enabled, need to sacrifies a lot of performance and storage front.



Visitors Count





Visitors Count


convert this post to pdf.

Posted by Borndba on April 4, 2009 at 12:26 am under Oracle, Oracle Internal.
Tags: ,
Comments Off.

_Spin_Count

Earlier to 9iR2, if you change the _spin_count it will affect the spinning of all the latches. This affects the CPU resource in particular. From 9iR2, you can assign a latch to classes, and each class can have different _spin_count. Let us assume that library cache latch is having high SLEEPS and if you like to tune only this latch you can assign library cache latch to a class. There are totally 8 classes. The X$KSLLCLASS (Kernel service lock latch class) view contains information about these classes.

sys@10.2.0.2.0> select indx,spin,yield,waittime from x$ksllclass;

      INDX       SPIN      YIELD   WAITTIME
---------- ---------- ---------- ----------
         0      16000          0          1
         1      16000          0          1
         2      16000          0          1
         3      16000          0          1
         4      16000          0          1
         5      16000          0          1
         6      16000          0          1
         7      16000          0          1

8 rows selected.

From above output, note INDX=1 and the corresponding spin. We will be assigning this class to library cache and change the spin count to 20000 from 16000.

sys@10.2.0.2.0> select latch#,name from v$latchname where name='library cache';

    LATCH# NAME
---------- --------------------------------------------------
       214 library cache

Latch number of "library cache" is 214.

sys@10.2.0.2.0> alter system set "_latch_class_1"=20000 scope=spfile;

System altered.

Assigning class_1 with 20000.

sys@10.2.0.2.0> alter system set "_latch_classes"="214:1" scope=spfile;

System altered.

Assigning the latch to class 1.

sys@10.2.0.2.0>

sys@10.2.0.2.0> shutdown abort
ORACLE instance shut down.
sys@10.2.0.2.0> startup
ORACLE instance started.

Total System Global Area   71303168 bytes
Fixed Size                  1287836 bytes
Variable Size              62916964 bytes
Database Buffers            4194304 bytes
Redo Buffers                2904064 bytes
Database mounted.
Database opened.

Bouncing the instance to make the changes effective.

sys@10.2.0.2.0> select indx,spin,yield,waittime from x$ksllclass;

      INDX       SPIN      YIELD   WAITTIME
---------- ---------- ---------- ----------
         0      16000          0          1
         1      20000          0          1
         2      16000          0          1
         3      16000          0          1
         4      16000          0          1
         5      16000          0          1
         6      16000          0          1
         7      16000          0          1

8 rows selected.

Please note the INDX=1, now the spin count=20000

sys@10.2.0.2.0> select a.kslldnam, b.kslltnum, b.class_ksllt
  2  from   x$kslld a, x$ksllt b
  3  where  a.kslldadr = b.addr
  4  and    b.class_ksllt > 0;

KSLLDNAM                                             KSLLTNUM CLASS_KSLLT
-------------------------------------------------- ---------- -----------
process allocation                                          3           2
library cache                                             214           1

The above query gives the output of to which class number the latch is assigned.



Visitors Count


convert this post to pdf.

Posted by Borndba on April 4, 2009 at 12:25 am under Oracle, Oracle Internal.
Tags: ,
Comments Off.

Freelists Management

Freelists is list of blocks which can be used by segment on shortage of space. When delete occurs and freespace within the block goes below pctused, this block will be put in freelist. The block which is added last will be released first. Like B3 is added to freelist, then after a while B1 gets added then the chain looks like.

FL: B3
FL: B1 ==> B3.
On shortage of space B1 will be released before B3.

Type of Freelists:
Txfl  ==>  Transaction Freelist
Prfl  ==>  Process Freelist
Sgfl  ==>   Segment Freelist
Msfl  ==>  Master Freelist
Infl  ==> Instance Freelist

Txfl:
Each segment will have in minimum 16 Txfl, it grows as needed. During a transaction if space is required then oracle will first look into the txfl. At the same time if it wants to release the space it will give it to txfl.
Prfl:
Freelist allocated to a process. A process will not scan prfl allocated to other process.
Sgfl:
Synonym for Prfl.
Msfl:
It is introduced in later part of V6. It is preallocated Prfl which all processes can access known as Master Freeist.
Infl:
No idea on this.

Please note the algorithm when a transaction faces space issue,
• Search the space in it’s own Txfl. If it exist it will use otherwise
• Search the space in Prfl, it it doesn’t find then
• Search the space in Msfl. If it finds one it will copy the chunk to Prfl and use it otherwise
• Search the commited Txfl. If it finds one it will copy the chunk to Msfl from there it will be copied to Prfl. If if doesn’t find one
• Checks whether it can bump the high water mark level. It will bump 5 blocks at a time or defined by _bump_high_water_mark parameter. The added values will be passed to Prfl and used. If not
• Goes to fet$ and allocate a segment. Even if there is no space
• Errors out with unable to extent tablespace error.

Also note index block will be put to freelist only if the block is completely empty.
Event 10044 is used for tracing Freelist Undo operation and event 10045 for tracing freelist update operation -ktsrsp,ktsunl



Visitors Count


convert this post to pdf.

Posted by Borndba on April 4, 2009 at 12:24 am under Oracle, Oracle Internal.
Tags: ,
Comments Off.

Type of Events

Type of Event:
There are 4 types of events.
1. Immediate Dump Events
2. Error Stack Event
3. Change Behavior Event
4. Process Event

Immediate Dump Events:
This event generate trace file immediately in the udump area. These parameters cannot be issued in Parameter file. Some of the event involved are Trace_Buffer_On/Off,Hanganalyze,Latches,Processstate,SystemState,Instantiationstate,Refresh_Os_Stats,Crossic,ContextArea,Headdump,shared_server_state,Drop_Segments library_cache,full_dumps, granulelist, dump_all_comp_granule_addrs, buffers.
Error Stack Events:
If you need to capture the processes throwing out ORA error, you can use this event. This is very useful in diagnosing 4031, 942, 4020, 1555 etc., errors.
Change Behavior Event:
You need to be very careful before setting this event. This event can change the behaviors of oracle kernel and may render your db unsupported if used without approval of oracle support. There are n-number of events fails under this category. These events _generally_ doesn’t have levels associated with it. To name few are 10512 (disabling rollback shrinking by smon), 10170 changes the costing algorithm etc.,
Process Trace Events:
This is less/no harm events. This event is helpful in diagnosing behaviors of the process. Some of the events are 10046, 10053, 10032, 10033 etc.,

If you set an event, event information is stored in the PGA. Since it is stored in the PGA which is private to a session, you can’t find out event set in the other sessions. In case if you want to find out the events set in the current session, you can use below block.

set serveroutput on
declare
  event_level number;
 begin
  for i in 10000..10999 loop
     sys.dbms_system.read_ev(i,event_level);
     if (event_level > 0) then
        dbms_output.put_line('Event '||to_char(i)||' set at level '||
                             to_char(event_level));
     end if;
  end loop;
 end;
/



Visitors Count


convert this post to pdf.

Posted by Borndba on April 4, 2009 at 12:21 am under Oracle, Oracle Internal.
Tags: ,
Comments Off.

Excluding few tables while exporting

Excluding few tables while exporting or importing can be done by changing definition of export related dictionary tables. In 10g, expdp/impdp has got the feature to do so. Changing the dictionary definition is not supported by oracle.

There will be a view called exu10tab in catexp.sql. This sql file will be available in $ORACLE_HOME/rdbms/admin folder. Search for the view name “exu10tab”. The definition of view will be like below,

CREATE OR REPLACE VIEW exu10tab AS
SELECT *
FROM sys.exu10tabs t$
WHERE t$.secondaryobj = 0 ;

If you want to exclude Table “T” from the export add a where condition like below,

CREATE OR REPLACE VIEW exu10tab AS
SELECT *
FROM sys.exu10tabs t$
WHERE t$.secondaryobj = 0
and NAME NOT IN (‘T’);

Once export is completed, revert make to older setting.

If you have in pre 10g version, you have similar table like exu9tab or exu8tab.



Visitors Count





Visitors Count


convert this post to pdf.

Posted by Borndba on April 4, 2009 at 12:15 am under Oracle, Oracle Internal.
Tags: ,
Comments Off.

dbms_system.kcfrms

If you execute dbms_system.kcfrms, it will reset max_wait_time of sessions events, system events and file statistics. For system events it will reset max_wait_time of underlying x$table.



Visitors Count


convert this post to pdf.

Posted by Borndba on April 3, 2009 at 11:41 pm under Oracle, Oracle Internal.
Tags: ,
Comments Off.