Information in trace file
Hi All,
I would like to know if I could find something in Oracle documentation or somewhere else, the meaning of some key words containt in trace file?
For example:
kspdmphblk: fh->kccfhfsz = 11, fh->kccfhbsz = 512
kspdmphblk: hblk->offset_ksphblk = 512, hblk->amount_ksphblk = 2394
kspdmphblk: phyblksize = 512, hdrblksize = 1023, format = 2
kspdmphblk: hdrblku = 11501be0, hdrblk = 11501c00
kspdmphblk: fh->kccfhfsz = 11, fh->kccfhbsz = 512
kspdmphblk: hblk->offset_ksphblk = 512, hblk->amount_ksphblk = 2394
kspdmphblk: phyblksize = 512, hdrblksize = 0, format = 2
kspdmphblk: hdrblku = 0, hdrblk = 11501c00
error 27072 detected in background process
ORA-27072: File I/O error
IBM AIX RISC System/6000 Error: 9: Bad file number
Additional information: 7
Additional information: 7
Additional information: -1
kjzduptcctx: Notifying DIAG for crash eventWhat does fh->kccfhfsz mean? What does 11 and 512 refer to?
Thank you,
Felix
Hi Karthick,
Thank you very the query.
The SCN and Sequence is the same for all datafiles.
But there most be something with one of the datafile that cause the database to crash...
I forgot the end of the trace file in my OP:
System name: AIX
Node name: server_name
Release: 1
Version: 6
Machine: 000E36BAD400
Instance name: instance_name
Redo thread mounted by this instance: 1
Oracle process number: 10
Unix process pid: 6393936, image: oracle@server_name(DBW0)
*** 2012-01-04 22:01:54.729
*** SESSION ID:(571.1) 2012-01-04 22:01:54.729
*** CLIENT ID:() 2012-01-04 22:01:54.729
*** SERVICE NAME:(SYS$BACKGROUND) 2012-01-04 22:01:54.729
*** MODULE NAME:() 2012-01-04 22:01:54.729
*** ACTION NAME:() 2012-01-04 22:01:54.729
kspdmphblk: fh->kccfhfsz = 11, fh->kccfhbsz = 512
kspdmphblk: hblk->offset_ksphblk = 512, hblk->amount_ksphblk = 2394
kspdmphblk: phyblksize = 512, hdrblksize = 1023, format = 2
kspdmphblk: hdrblku = 11501be0, hdrblk = 11501c00
kspdmphblk: fh->kccfhfsz = 11, fh->kccfhbsz = 512
kspdmphblk: hblk->offset_ksphblk = 512, hblk->amount_ksphblk = 2394
kspdmphblk: phyblksize = 512, hdrblksize = 0, format = 2
kspdmphblk: hdrblku = 0, hdrblk = 11501c00
error 27072 detected in background process
ORA-27072: File I/O error
IBM AIX RISC System/6000 Error: 9: Bad file number
Additional information: 7
Additional information: 7
Additional information: -1
kjzduptcctx: Notifying DIAG for crash event
----- Abridged Call Stack Trace -----
ksedsts()+644<-kjzdssdmp()+444<-kjzduptcctx()+272<-kjzdicrshnfy()+96<-ksuitm()+1284<-ksbrdp()+4508<-opirip()+1216<-opidrv()+1156<-sou2o()+192<-opimai_real()+308<-ssthrdmain()+340<-main()+216<-__start()+112
----- End of Abridged Call Stack Trace -----
*** 2012-01-04 22:01:54.748
DBW0 (ospid: 6393936): terminating the instance due to error 27072
ksuitm: waiting up to [5] seconds before killing DIAG(6914200)Thank you,
Felix
Edited by: Nayas on Jan 5, 2012 7:58 AM
Similar Messages
-
How to know date and time information from Trace File defaultTrace.X.trc?
Hi, all.
i'm using EP 6.0 SP9 patch 1.
As you know, default trace is written in the <SID>\JC00\j2ee\cluster\server0\log\defaultTrace.X.trc.
By using the default trace formatter, it shows like the following sample messages.
#1.5#0011110E7B2000590000000100000A100003EC71562E6EBC#1104396451585#com.sap.jms.server.ServerClientAdapter##com.sap.jms.server.ServerClientAdapter#Guest#18####716257115a3f11d9b73b0011110e7b20#SAPEngine_Application_Thread[impl:3]_23##0#0#Error#1#/Applications/JMS#Plain###JMS internal error at ServerClientAdapter! JMS Service is not started!#
My questions are
1. how do we retrieve the date and time information from the above message? It seems that this message has date and time info because LogViewer shows the date and time based on the above message.
2. how do we change the above date format to easier one
like "YYYY:MM:DD:hh:mm:ss"? i know that it can be configured from the Visual Admin --> Services --> Log Configurator but i don't know the exact place for the trace file.
Thanks.Hi Sejoon,
I use the standalone Logviewer to read the log files. Works great.
"If you have an SAP Web Application Server Java 6.20 or below you may also get a standalone_logviewer.zip file at the SAP Service Marketplace at service.sap.com/download → SAP NetWeaver → Release 04. In this case JDK version 1.3 or higher must be installed on the system. The java version must be same on the server and the client.
In the SAP Web AS Java 6.30 installation a folder named logviewer_standalone can be found under: <path Of J2EE installation>/<SysID>/JC<nr>/j2ee/admin/logviewer_standalone. Verify that the batch file logviewer.bat is installed in the directory logviewer-standalone.
(source -> http://help.sap.com/saphelp_nw04/helpdata/en/e4/540c404a435509e10000000a1550b0/frameset.htm)
Best wishes,
Noel -
No wait events info in trace file?
A very good day to all experts,
I am tracing a session using the below procedure.
dbms_system.set_ev(12,13,EV=>10046,LE=>12,NM=>'');
I am just displaying the following information in trace file.Trace file is not displaying any wait events even when i am doing level 12 tracing.How i can see the wait event information in trace files?
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.01 0.01 0 0 0 0
Fetch 2 0.00 0.05 2 2 0 1
total 4 0.01 0.07 2 2 0 1
Misses in library cache during parse: 1
Optimizer mode: CHOOSE
Parsing user id: 55
Rows Row Source Operation
1 TABLE ACCESS BY INDEX ROWID aaa_USERS (cr=2 pr=2 pw=0 time=58806 us)
1 INDEX UNIQUE SCAN SYS_C004271 (cr=1 pr=1 pw=0 time=42773 us)(object id 47506)
Thank you....Your post is without version information up to 4 digits.
You post tkprof output.
Not all version of Oracle have tkprof post wait event info.
IIRC. this started in Oracle 9iR2.
You would need to look in the raw trace file to find out whether this information is actually available. You will find it is.
This could likely being caused by using 8i, which doesn't have this facility.
But as you don't post a version, your question can not be answered.
Sybrand Bakker
Senior Oracle DBA -
Time stamp information in default trace file
How to check the time stamp in defaulttrace.trc or application.trc files for logs in XI server.
I have seen following timestamp in above mentioned trace files. But seem to me, during the shutdown time of server, system put the timestamp in trace file.
ERROR gateway shutdown
TIME Fri Jun 20 11:01:08 2008
Except for shutdown time, how the system put the timestamp for other activity of system in the default trace and application trace file??
Sometime, i need to check the timestamp to get some specific information in default trace file for some system activities.
is timestamp mentioned in coded form as per following log:
#1.#36CC34C00F02009B000001B400001FF40004510B33EAB6D3#1215008464352#com.sap.engine.services.rfcengine##com.sap.engine.services.rfcengine.RFCDefaultRequestHand
ler.handleRequest()#J2EE_GUEST#0##XQA#SAPSYS #4869A1FC78690A8DE10000000A2C0AC7#SAPEngine_Application_Thread[impl:3]_51##0#0#Error##P
lain###java.lang.reflect.InvocationTargetException#
#1.#36CC34C00F02009B000001B500001FF40004510B33EAB76C#1215008464352#com.sap.engine.services.rfcengine##com.sap.engine.services.rfcengine.RFCDefaultRequestHand
ler.handleRequest()#J2EE_GUEST#0##XQA#SAPSYS #4869A1FC78690A8DE10000000A2C0AC7#SAPEngine_Application_Thread[impl:3]_51##0#0#Error##P
lain###java.lang.reflect.InvocationTargetException
Thanks
AmarHi Amarjit
The timestamp is noted in unix epoch time (java does use this as well). It is this field:
#1.#36CC34C00F02009B000001B400001FF40004510B33EAB6D3# 1215008464352 #com.sap.engine.services.rfcengine##com.sap.engine.services.rfcengine.RFCDefaultRequestHand
ler.handleRequest()#J2EE_GUEST#0##XQA#SAPSYS
The first 10 digits are seconds since epoch. The last 3 digits are milisecondes. Converted in human readable format: 07/02/2008 16:21:04.352
[Unix Time|http://en.wikipedia.org/wiki/Unix_time]
Damn, i remeber having answered this already here in the forums, but i cannot find the thread anymore myself :-(((
Best regards
Michael -
The informations of LRU in trace file are inconsistent!
I dump the buffers and want to check the information of LRU list.
alter system set events 'immediate trace name buffers level 4';
then , I find the information below in the trace file:
CHAIN: 4331 LOC: c0000000164484c0 HEAD: [c000000015febee8,c000000015febee8]
BH (c000000015febee8) file#: 4 rdba: 0x01000430 (4/1072) class: 1 ba: c000000015dcc000
set: 12 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 0
dbwrid: 1 obj: 19576 objn: 19486 tsn: 4 afn: 4
hash: [c0000000164484c0,c0000000164484c0] lru: [c000000015fec060,c000000015febe70]
lru-flags:
ckptq: [NULL] fileq: [NULL] objq: [c0000000d4c3ee78,c000000015fec1c0]
st: XCURRENT md: NULL tch: 4
flags: only_sequential_access
LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
buffer tsn: 4 rdba: 0x01000430 (4/1072)
scn: 0x0000.0054cfb3 seq: 0x01 flg: 0x04 tail: 0xcfb30601
frmt: 0x02 chkval: 0x511e type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Please watch:
*lru: [c000000015fec060,c000000015febe70]*
that means the next_lru buffer is : c000000015fec060 and the previous_lru buffer is c000000015febe70.
However, I find the lru list in the same trace file :
MAIN RPL_LST Queue header (NEXT_DIRECTION)[c000000015fe96b8,c0000000163fbb48]
c000000015febcf8=>c000000015febdf0=>c000000015febee8=>c000000015febfe0=>c000000015fec0d8=>c000000015fec1d0
c000000015fec2c8=>c000000015fec3c0=>c000000015fec4b8=>c000000015fec5b0=>c000000015fec6a8=>c000000015fec7a0=>
Please watch carefully:
c000000015febdf0=>c000000015febee8=>c000000015febfe0=>
that means the next_lru buffer is : c000000015febfe0 and the previous_lru buffer is c000000015febdf0.
1:Which one is correct and why these 2 informations are inconsistent?Hi Sowmya,
when you refer to my Excel Export tutorial on SDN: <a href="https://wiki.sdn.sap.com/wiki/x/0mQ">Exporting Table Data Using On-Demand Streams - SAP NetWeaver 7.0</a>:
use <b>LinkedHashMap</b> instead of <i>HashMap</i>:
private Map getProductColumnInfos() {
Map columnInfosMap = new LinkedHashMap();
columnInfosMap.put(IPrivateTableCompBasketView.IProductsElement.QUANTITY, "Quantity");
columnInfosMap.put(IPrivateTableCompBasketView.IProductsElement.ARTICLE, "Article");
columnInfosMap.put(IPrivateTableCompBasketView.IProductsElement.COLOR, "Color");
columnInfosMap.put(IPrivateTableCompBasketView.IProductsElement.PRICE, "Price in EURO");
columnInfosMap.put(
IPrivateTableCompBasketView.IProductsElement.TOTAL__PER__ARTICLE,
"Total Per Article In Euro");
return columnInfosMap;
This keeps the order of key-displaytext-pairs passed by the client (table component) to the service (excel export component) stable.
Regards, Bertram -
How to get the real table information of a structure from the trace file?
I user the ST05 to trace a program to find the real table information of a structure in this program. But I found so many sql trace information in the trace file. So how can I find which information is useful for me to find the real table of a structure?
Hi!
If you don't recognize some tables, because they belong to same application, then it's difficult.
Try to change interesting value. Afterwards you can search for 'INSERT', 'UPDATE' (and 'MODIFY'?) - that will leave only a small number of lines, which have to be analyzed in detail (e.g. have a look at them with SE16).
Regards,
Christian -
How to use trace file information?
Hello.
I got trace files in $O_H/network/trace/ listener.trc and in
$O_H/rdbms/log/ora_orcl_22846.trc and others in the same dir. SO
how can I get any understandable form? ( All this numbers and
letters say nothing to me :((. Maybe I should read some manual?)
Thank You.
nullANdrey (guest) wrote:
: Hello.
: I got trace files in $O_H/network/trace/ listener.trc and in
: $O_H/rdbms/log/ora_orcl_22846.trc and others in the same dir.
SO
: how can I get any understandable form? ( All this numbers and
: letters say nothing to me :((. Maybe I should read some
manual?)
: Thank You.
Listener trace should be humanly readable by itself and
oracle trace files should be processed by using tkprof.
null -
Need information from the Trace file.
Hi
I have enabled the trace file for the query and found that the below contents in top of the query in trace file .Could you please explain what are the below values and need explanation.
**PARSING IN CURSOR #2 len=82 dep=1 uid=0 oct=3 lid=0 tim=52772641300291 hv=3873422482 ad='3a40cc8c8' sqlid='0k8522rmdzg4k'**
Note : Please provide the notes if have any.
Thanks
LioThis is of course right but TKPROF has also some limitations: for example TKPROF does not report values for bind variables but you can find them in raw trace file.
-
Following is getting created in D:\Oracle\Ora81\DATABASE folder once or twice a month. I do not see any error entries in db1alrt.log. Please help to find out the problem.
Thanks,
Anil
Dump file .\ORA05244.TRC
Sun May 01 21:30:07 2005
ORACLE V8.1.5.0.0 - Production vsnsta=0
vsnsql=d vsnxtr=3
Windows NT V5.2, OS V14.206, CPU type 586
Oracle8i Release 8.1.5.0.0 - Production
With the Java option
PL/SQL Release 8.1.5.0.0 - Production
Windows NT V5.2, OS V14.206, CPU type 586
Instance name: db1
Redo thread mounted by this instance: 0 <none>
Oracle process number: 0
5244
*** 2005.05.01.21.30.07.127
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [508], [163], [0], [1413697536], [1], [0], [], []
Current SQL information unavailable - no session.
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
ksedmp+a5 CALLrel ksedst+0
75BE3F8
ksfdmp+e CALLrel ksedmp+0 3
_kgeriv+95 CALLreg 00000000
ED16A08
3
kgeasi+67 CALLrel kgeriv+0
1E440
0 1FC
5
675BE570
kslwte+11a CALLrel kgeasi+0
ED16A08
0 1FC
2 5 0
A3 0
0 0
54435000
0 1 0
0
opikndf2+537 CALLrel kslwte+0 A3
54435000
1 0
_opitsk+3da CALLreg 00000000
ED193E4
2
675BF544
1 0
opiino+50c CALLrel opitsk+0 0
_opiodr+4ce CALLreg 00000000 3C 4
675BFBF8
opidrv+380 CALLrel opiodr+0 3C 4
675BFBF8
0
sou2o+19 CALLrel opidrv+0
opimai+110 CALLrel sou2o+0
OracleThreadStart@4+48c CALLrel opimai+0 2
675BFE78
77E4A98D CALLreg 00000000
----- Argument/Register Address Dump -----
Argument/Register addr=675be3f8. Dump of memory from 0x675BE3B8 to 0x675BE4F8
675BE3A0 00000000 00000003
675BE3C0 E8D60800 6552211C 00000033 00000000 FFFFFFFD 00000048 00000000 00000000
675BE3E0 00000000 00000000 0000001D 2ED16888 675BE408 00418404 00C936B4 00C936B4
675BE400 00C936D4 00C936B4 00C936B4 00C936B4 00C936BC 00C936B4 00C936BC 00C936B4
675BE420 00C936B4 00C936B4 00C936B4 00C936BC 675BE4E0 004191E0 675BE444 0000001C
675BE440 00000000 2A2A2A0A 30303220 35302E35 2E31302E 332E3132 37302E30 32332D25
675BE460 2D252073 25207338 7332332D 675F0020 00000000 00000001 000007D5 35373620
675BE480 37454642 25200038 7332332D 342D2520 00000A73 00000003 65522178 00000033
675BE4A0 00000000 2ED16888 01218A97 00000000 00000000 00000000 675BFFEC 00000000
675BE4C0 675BFE78 00000000 00000001 00000001 00000000 675BDDD0 00000009 675BE504
*** Trace file full ***you have what one session wants the other session has what you want; neither will give it up and so Oracle detects this and kicks one out. If you trace your SQL and COMMIT logic you will find the problem
-
Hi!
The problem is appearence of pl/sql code in trace file instead of separate cursors of SQL statements. So, I can't get information about each SQL statement separatelly. What's wrong? How to separate SQL statements?
NosorogAs Satish indicated, the "SQL*Net message from client" wait is an event which indicates that the database server was waiting for the next request from the client computer, and not an indication that the query needs to be tuned. Manually review the trace file. At one point in the trace file, you will see this wait event with an ela= value which begins with 14142 - please post to this thread that line from the trace file along with the 20 lines before that line and the 20 lines after that line. You may just have a long wait on this event at the beginning, and another long wait on this event at the end of the query.
Charles Hooper
IT Manager/Oracle DBA
K&M Machine-Fabricating, Inc. -
Different Deadlock trace files
Hello,
In our application we use to have deadlock issues and i need to analyze that
trace file.Some time i use to have trace files which is having current session and
waiting session information and with modules and queries they are executing in top section
of trace file only , no need to read below data in trace file . But some times the
trace files are different..all update or select for update queries are spread
across the file and very difficult to understand which was locking what. Is that in rac or 11g environment
deadlock trace file is having different structure,?
One more question regarding deadlock ...many time we found that the current
query is updating on table A and waiting query updating on table B .. Is it possible
to have deadlock scenario when queries are working on different tables ? or
many be it is happening only if tables are in relation like parent and child ?hi,
Are you referring to .trm extention trace files which youare unable to read?
Here is good explanation of reading deadlock trace files
ORA-00060 Deadlock trace files.. how to read?
Thanks,
Ajay More
http://www.moreajays.com -
How to find username from trace file for deadlock due to user
This is the info from the trace file.
*** 2003-08-18 08:07:40.590
*** SESSION ID:(560.60728) 2003-08-18 08:07:40.560
DEADLOCK DETECTED
Current SQL statement for this session:
SELECT S.AVAILABLE,GET_AVAIL(S.PRODUCT_ID),S.ON_HAND,S.W_PL,S.PRODUCT_GROUP,S.SIZE_ID,S.COLOR_ID,S.ONEZ,S.COST,IS_IT_KIT(:b1),
NVL(PR.R_AVAIL,0),NVL(PR.R_SOLD,0),NVL(PR.UNIT_OF_MEASURE,'QTY'),NVL(DECODE(PR.AV_CT,0,1,PR.AV_CT),1) FROM ACNTV.SKU S,ACNTV
.PRERED_QUANTITIES PR WHERE S.PRODUCT_ID = PR.PRODUCT_ID (+) AND S.PRODUCT_ID = :b1 FOR UPDATE OF S.ON_HAND,
S.W_PL,PR.R_AVAIL
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-0021004b-000125d8 366 560 X 329 135 X
TX-0008003b-000125fc 329 135 X 366 560 X
session 560: DID 0001-016E-00000002 session 135: DID 0001-0149-00000002
session 135: DID 0001-0149-00000002 session 560: DID 0001-016E-00000002
Rows waited on:
Session 135: obj - rowid = 00017FAC - AAAX+sAAPAAAS9/AAP
Session 560: obj - rowid = 0001586C - AAAVhsABXAAAAIRAAN
We know the objects ,but how to find out the username ?
ThanksHi;
Please see:
How To Check If a Profile Option Is Set In Oracle Application [ID 470102.1]
How to list E-Business Suite Profile Option values for all levels using SQLPlus [ID 201945.1]
How to Search all of the Profile Options for a Specific Value [ID 282382.1]
Regard
Helios -
Moving Default Trace File in SQL Server
How can I move the default trace file in SQL server?
SQL Server 2012?
Thanks in advance
ebroPlease have a look at these links:
Change path for default SQL Server trace
Steps to change the default location of SQL Server /SQL Server Agent - Error log files
DETERMINING DEFAULT TRACE LOCATION
Collecting the Information in the Default Trace
T-SQL Articles
T-SQL e-book by TechNet Wiki Community
T-SQL blog -
Unable to generate SQL trace file in shared mode ??
Hello,
I have a 10.2.0.1.0 database on Win2003 server 64 bits, with several instances.
On instances in dedicated mode, I can create trace files by using dbms_system.set_sql_trace_in_session, but on instances in shared mode nothing happens : no file is created in the udump directory.
This doesn't make any sense to me o_O
The shared parameters are the following :
dispatchers=(protocol=TCP)
shared_servers=1
I've checked all the necessary parameters to create a trace file (user_dump_dest, timed_statistics, max_dump_file_size...) and everything is fine.
I really don't understand why I can't create trace files when the instance is in shared mdoe...
Can anyone help about this weird issue ?
thank you !
regards,
AntoineRemember also that in Shared Server mode the trace information is not written to a single file but is written to the Shared Server trace file. Before Oracle 10g there was no way to pull all the trace information for a single user session together out of the trace files. There is a tool for doing so with 10g.
HTH -- Mark D Powell -- -
Where is the user trace file?
I have issued the statement below to enable sql trace in session 260 ,and it execute successfully.but i can not find where the trace file in directory $ORACLE_BASE/admin/testcs/udump (testcs is my database name).
SQL> execute dbms_system.set_sql_trace_in_session(260,34880,true);
PL/SQL procedure successfully completed.
where is the trace file?
By the way,how can i find the information about the package DBMS_SYSTEM which is not in ORACLE references?Did you issue some queries after turning tracing on? The trace file might not be created until there is some activity in the session.
I know that DBMS_SYSTEM is documented in the O'Reilly Press book "Oracle Built-in Packages" by Feuerstein, Dye & Beresniewicz.
However for tracing I think that Oracle expects you to use the dbms_support package:
execute sys.dbms_support.start_trace_in_session -
(sid => &sid, serial => &serial, waits => true, binds => true)Or for Oracle 7.3.4 or 8.0 you can use oradebug. Example:
select pid, spid, username from v$process;
PID SPID USERNAME
8 25807 oracle
SVRMGR> oradebug setorapid 8
-- or -
SVRMGR> oradebug setospid 25807
-- turn on
SVRMGR> oradebug event 10046 trace name context forever, level 12
-- turn off
SVRMGR> oradebug event 10046 trace name context off
Maybe you are looking for
-
DVI to S-Video not full screen!
I recently bought an Apple DVI to S-Video adapter and hooked it up to my 60" Hitachi 60SDX88AB rear projection TV. The picture looks fine, colorwise and all, but the picture does not take up the whole screen- there are 2 inch black bars on 3 sides of
-
Hi everone just wanted to let you know my expierence with ordering the 3GS. So like most of you I was excited to hear about the new iPhone and jumped at the opportunity to have one in my hands come 6/19. My husband and I were upgrading from the origi
-
Vendor master creation using RFBIKR00 program
hi friends can any body help what is the structure and file format i have to give when i run RFBIKR00 program to create vendor master data ... thanx in advance .. by leee
-
Slow to see tree in Win98 using 3.40 client
I see other posts here mentioning not being able to see the tree using the NetWare 3.4 client with Windows 98. Unfortunately, I seem to have a different problem. At first I cannot see the tree, but if I wait a few minutes (without doing anything), I
-
Flash builder and php session management/login
I've secured pages with cflogin using coldfusion but is there a comparible function in PHP? I'm able to connect to a php/mysql DB but how do I lock those functions down with a login/password style security? Thanks