File: aguide09.htm

package info (click to toggle)
solid-desktop 2.2-3
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 3,620 kB
  • ctags: 2,830
  • sloc: sh: 290; sql: 80; makefile: 64
file content (1164 lines) | stat: -rw-r--r-- 36,284 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
<HTML>
<HEAD>
<TITLE></TITLE>
<LINK REL="ToC" HREF="httoc.htm">
<LINK REL="Index" HREF="htindex.htm">
<LINK REL="Next" HREF="aguide10.htm">
<LINK REL="Previous" HREF="aguide08.htm"></HEAD>
<BODY BGCOLOR="#FFFFFF">
<P ALIGN=CENTER>
<A HREF="aguide08.htm" TARGET="_self"><IMG SRC="gaguide/graprev.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="Previous Page"></A>
<A HREF="httoc.htm" TARGET="_self"><IMG SRC="gaguide/gratop.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="TOC"></A>
<A HREF="htindex.htm" TARGET="_self"><IMG SRC="gaguide/graindex.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="Index"></A>
<A HREF="aguide10.htm" TARGET="_self"><IMG SRC="gaguide/granext.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="Next Page"></A>

<A NAME="E9E9"></A>
<H1>
<FONT FACE="Arial"><B>SOLID </B><B><I>S</I></B><B><I>erver</I></B><B> DIAGNOSTIC TOOLS</B><A NAME="I2"></A></FONT></H1>
<BR>
<BLOCKQUOTE>
<P>SOLID <I>Server</I> provides several diagnostic tools for observing performance. These tools, SQL info facility and the EXPLAIN PLAN statement, are helpful in tuning your application and identifying inefficient SQL statements in your application.
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>SOLID <I>Server</I> provides also tools for tracing the communication between client and server and locating problems that may slow down your application. The Network trace facility can be used in the server end and the Ping facility in the client end.
</BLOCKQUOTE>
<A NAME="E10E45"></A>
<P>
<FONT FACE="Arial"><B>Observing Performance</B></FONT>
<P>
<FONT FACE="Arial"><A NAME="I3"></A><A NAME="I4"></A><A NAME="I5"></A><A NAME="I6"></A><A NAME="I7"></A><A NAME="I8"></A><A NAME="I9"></A><A NAME="I10"></A><A NAME="I11"></A><A NAME="I12"></A><A NAME="I13"></A><A NAME="I14"></A><A NAME="I15"></A><A NAME="I16"></A><A NAME="I17"></A><A NAME="I18"></A><A NAME="I19"></A><A NAME="I20"></A>The SQL Info Facility<A NAME="I21"></A></FONT>
<BLOCKQUOTE>
<P>Run your application with the SQL Info facility enabled. The SQL Info facility generates information for each SQL statement processed by SOLID <I>Server</I>.
</BLOCKQUOTE>
<P>SQL Info levels</P>

<BLOCKQUOTE><TABLE>
<TR>
<TD WIDTH=240 VALIGN=top>
<P><B>Info value</B>
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E159"></A>
<P>Information</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>0
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E160"></A>
<P>no output</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>1
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E161"></A>
<P>table, index, and view info in SQL format</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>2
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E162"></A>
<P>SQL execution graphs</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>3
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E163"></A>
<P>some SQL estimate info, Solid selected key name</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>4
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E164"></A>
<P>all SQL estimate info, Solid selected key info</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>5
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E165"></A>
<P>Solid info also from discarded keys</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>6
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E166"></A>
<P>Solid table level info</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>7
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E167"></A>
<P>SQL info from every fetched row</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>8
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E168"></A>
<P>Solid info from every fetched row</TD></TR>
</TABLE></BLOCKQUOTE>

<BLOCKQUOTE>
<P>The SQL Info facility is turned on by setting a non-zero value to the Info parameter in the [SQL] section of the configuration file. The output is written to a file named soltrace.out in the SOLID directory.
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>Example:
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>[SQL]
<BR>info = 1</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>The SQL Info facility can also be turned on with the following SQL statement (this sets SQL Info on only for the client that executes the statement):
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>SET SQL INFO ON LEVEL <I>info-value</I> FILE <I>file-name</I></PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>and turned off with the following SQL statement:
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>SET SQL INFO OFF
Example:
SET SQL INFO ON LEVEL 1 FILE &#145;my_query.txt&#146;</PRE></BLOCKQUOTE>
<P>
<FONT FACE="Arial"><A NAME="I22"></A><A NAME="I23"></A><A NAME="I24"></A><A NAME="I25"></A><A NAME="I26"></A><A NAME="I27"></A><A NAME="I28"></A><A NAME="I29"></A><A NAME="I30"></A><A NAME="I31"></A><A NAME="I32"></A><A NAME="I33"></A><A NAME="I34"></A><A NAME="I35"></A><A NAME="I36"></A><A NAME="I37"></A><A NAME="I38"></A><A NAME="I39"></A>The EXPLAIN PLAN Statement<A NAME="I40"></A></FONT>
<BLOCKQUOTE>
<P>The EXPLAIN PLAN statement is used to show the execution plan that the SQL optimizer has selected for a given SQL statement. An execution plan is a series of primitive operations, and an ordering of these operations, that SOLID <I>Server</I> performs to execute the statement. Each operation in the execution plan is called a unit.
</BLOCKQUOTE>
<BLOCKQUOTE><TABLE>
<TR>
<TD WIDTH=240 VALIGN=top >
<P><B>Unit</B>
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E169"></A>
<P>Description</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>JOIN UNIT
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E170"></A>
<P>Join unit joins two or more tables. The join can be done by using loop join or merge join. Note that the join unit is generated also for queries that reference only a single table. In that case no join is executed in the join unit, the join unit just passes the rows without manipulating them.</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E171"></A>
<P>Table unit is used to fetch the data rows from a table. Table unit is always the last unit in the chain, since it is responsible for fetching the actual data from the index or table.</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>ORDER UNIT
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E172"></A>
<P>Order unit is used to order rows for grouping or to satisfy ORDER BY. The ordering can be done in memory or using an external disk sorter.</TD>
</TR>
<TR>
<TD WIDTH=240 VALIGN=top >
<P>GROUP UNIT
</TD><TD WIDTH=216 VALIGN=top >
<A NAME="E7E173"></A>
<P>Group unit is used to do grouping and aggregate calculation.</TD></TR></TABLE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>The syntax of the EXPLAIN PLAN statement is:
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>EXPLAIN PLAN FOR <I>sql-statement</I></PRE></BLOCKQUOTE>
<P>Explain Plan Table Columns
<BLOCKQUOTE>
<P>The table returned by the EXPLAIN PLAN statement contains the following columns.
</BLOCKQUOTE>
<BLOCKQUOTE><TABLE>
<TR>
<TD WIDTH=169 VALIGN=top >
<P><B>Column name</B>
</TD><TD WIDTH=286 VALIGN=top >
<A NAME="E7E174"></A>
<P>Description</TD>
</TR>
<TR>
<TD WIDTH=169 VALIGN=top >
<P>ID
</TD><TD WIDTH=286 VALIGN=top >
<A NAME="E7E175"></A>
<P>The output row number, used only to guarantee that the rows are unique.</TD>
</TR>
<TR>
<TD WIDTH=169 VALIGN=top >
<P>UNIT_ID
</TD><TD WIDTH=286 VALIGN=top >
<A NAME="E7E176"></A>
<P>This is the internal unit id in the SQL interpreter. Each unit has a different id. The unit id is a sparse sequence of numbers, because the SQL interpreter generates unit ids also for those units that are removed during the optimization phase. If more than one row has the same unit id it means that those rows belong to the same unit. For formatting reasons the info from one unit may be divided into several different rows.</TD>
</TR>
<TR>
<TD WIDTH=169 VALIGN=top >
<P>PAR_ID
</TD><TD WIDTH=286 VALIGN=top >
<A NAME="E7E177"></A>
<P>Parent unit id for the unit. The parent id number refers to the id in the UNIT_ID column.</TD>
</TR>
<TR>
<TD WIDTH=169 VALIGN=top >
<P>JOIN_PATH
</TD><TD WIDTH=286 VALIGN=top >
<A NAME="E7E178"></A>
<P>For join unit there is a join path which specifies which tables are joined in the join unit and the join order for tables. The join path number refers to the unit id in the UNIT_ID column. It means that the input to the join unit comes from that unit. The order in which the tables are joined is the order in which the join path is listed. The first listed table is the outermost table in a loop join.</TD>
</TR>
<TR>
<TD WIDTH=169 VALIGN=top >
<P>UNIT_TYPE
</TD><TD WIDTH=286 VALIGN=top >
<A NAME="E7E179"></A>
<P>Unit type is the execution graph unit type.</TD>
</TR>
<TR>
<TD WIDTH=169 VALIGN=top >
<P>INFO
</TD><TD WIDTH=286 VALIGN=top >
<A NAME="E7E180"></A>
<P>Info column gives additional info. It may contain e.g. index usage, the database table name and constraints used in the database engine to select rows. Note that the constraints listed here may not match those constraints given in the SQL statement. </TD></TR></TABLE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>The following texts may exist in the INFO column for different types of units.
</BLOCKQUOTE>
<BLOCKQUOTE><TABLE>
<TR>
<TD WIDTH=116 VALIGN=top >
<P><B>Unit type</B>
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E181"></A>
<P>Text in Info column
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E181"></A>
<P>Description</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E182"></A>
<P>&lt;tablename&gt;
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E182"></A>
<P>The table unit refers to table &lt;tablename&gt;.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E183"></A>
<P>&lt;constraints&gt;
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E183"></A>
<P>The constraints that are passed to the database engine are listed. If for example in joins the constraint value is not known in advance, the constraint value is displayed as NULL.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E184"></A>
<P>SCAN TABLE
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E184"></A>
<P>Full table scan is used to search for rows.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E185"></A>
<P>SCAN &lt;indexname&gt;
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E185"></A>
<P>Index &lt;indexname&gt; is used to search for rows. If all selected columns are found from an index, sometimes it is faster to scan the index instead of the clustering key because the index has fewer disk blocks.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E186"></A>
<P>PRIMARY KEY
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E186"></A>
<P>The primary key is used to search rows. This differs from SCAN in that the whole table is not scanned because there is a limiting constraint to the primary key attributes.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E187"></A>
<P>INDEX &lt;indexname&gt;
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E187"></A>
<P>Index &lt;indexname&gt; is used to search for rows. For every matching index row, the actual data row is fetched separately.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>TABLE UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E188"></A>
<P>INDEX ONLY &lt;indexname&gt;
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E188"></A>
<P>Index &lt;indexname&gt; is used to search for rows. All selected columns are found from the index, so the actual data rows are not fetched separately.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>JOIN UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E189"></A>
<P>MERGE JOIN
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E189"></A>
<P>Merge join is used to join the tables.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>JOIN UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E190"></A>
<P>LOOP JOIN
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E190"></A>
<P>Loop join is used to join the tables.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>ORDER UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E191"></A>
<P>NO ORDERING REQUIRED
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E191"></A>
<P>No ordering is required, the rows are retrieved in correct order from the database engine.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>ORDER UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E192"></A>
<P>EXTERNAL SORT
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E192"></A>
<P>External sorter is used to sort the rows. To enable external sorter, the temporary directory name must be specified in the Sorter section of the configuration file.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>ORDER UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E193"></A>
<P>FIELD &lt;n&gt; USED AS PARTIAL ORDER
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E193"></A>
<P>Internal sorter (in-memory sorter) is used for sorting and the rows retrieved from the database engine are partially sorted with column number &lt;n&gt;. The partial ordering helps the internal sorter to avoid multiple passes over the data.</TD>
</TR>
<TR>
<TD WIDTH=116 VALIGN=top >
<P>ORDER UNIT
</TD><TD WIDTH=183 VALIGN=top >
<A NAME="E7E194"></A>
<P>NO PARTIAL SORT
</TD><TD WIDTH=156 VALIGN=top >
<A NAME="E7E194"></A>
<P>Internal sorter is used for sorting and the rows retrieved in random order from the database engine.</TD></TR></TABLE></BLOCKQUOTE>
<P>Example 1
<BLOCKQUOTE>
<PRE>EXPLAIN PLAN FOR SELECT * FROM TENKTUP1 WHERE UNIQUE2_NI BETWEEN 0 AND 99;</PRE>
<BLOCKQUOTE><TABLE>
<TR>
<TD WIDTH=49 VALIGN=top >
<P><B>ID</B>
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E195"></A>
<P>UNIT_ID
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E195"></A>
<P>PAR_ID
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E195"></A>
<P>JOIN_
<BR><B>PATH</B>
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E196"></A>
<P>UNIT_
<BR><B>TYPE</B>
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E197"></A>
<P>INFO</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>1
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E198"></A>
<P>2
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E198"></A>
<P>1
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E198"></A>
<P>3
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E198"></A>
<P>JOIN UNIT
</TD><TD WIDTH=86 VALIGN=top ><BR></TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>2
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E199"></A>
<P>3
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E199"></A>
<P>2
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E199"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E199"></A>
<P>TABLE UNIT
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E199"></A>
<P>TENKTUP1</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>3
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E200"></A>
<P>3
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E200"></A>
<P>2
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E200"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E200"></A>
<P>FULL SCAN</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>4
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E201"></A>
<P>3
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E201"></A>
<P>2
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E201"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E201"></A>
<P>UNIQUE2_NI &lt;= 99</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>5
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E202"></A>
<P>3
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E202"></A>
<P>2
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E202"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E202"></A>
<P>UNIQUE2_NI &gt;= 0</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>6
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E203"></A>
<P>3
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E203"></A>
<P>2
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E203"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top ><BR></TD></TR>
</TABLE></BLOCKQUOTE>

<BLOCKQUOTE>
<P>Execution graph:
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>JOIN UNIT 2 gets input from TABLE UNIT 3
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>TABLE UNIT 3 for table TENKTUP1 does a full table scan with constraints UNIQUE2_NI &lt;= 99 and UNIQUE2_NI &gt;= 0
</BLOCKQUOTE>
<P>
<IMG SRC="gaguide/aguide17.gif" WIDTH = 106 HEIGHT = 158 ALT="Execution graph">
<P><I>Example 1. Execution graph</I>
</BLOCKQUOTE>
<P>Example 2
<BLOCKQUOTE>
<PRE>EXPLAIN PLAN FOR SELECT * FROM TENKTUP1, TENKTUP2 WHERE TENKTUP1.UNIQUE2 &gt; 4000 AND TENKTUP1.UNIQUE2 &lt; 4500 AND TENKTUP1.UNIQUE2 = TENKTUP2.UNIQUE2;</PRE>
<BLOCKQUOTE><TABLE>
<TR>
<TD WIDTH=49 VALIGN=top >
<P><B>ID</B>
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E204"></A>
<P>UNIT_ID
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E204"></A>
<P>PAR_ID
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E204"></A>
<P>JOIN_
<BR><B>PATH</B>
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E205"></A>
<P>UNIT_
<BR><B>TYPE</B>
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E206"></A>
<P>INFO</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>1
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E207"></A>
<P>6
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E207"></A>
<P>1
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E207"></A>
<P>9
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E207"></A>
<P>JOIN UNIT
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E207"></A>
<P>MERGE JOIN</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>2
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E208"></A>
<P>6
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E208"></A>
<P>1
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E208"></A>
<P>10
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top ><BR></TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>3
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E209"></A>
<P>9
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E209"></A>
<P>6
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E209"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E209"></A>
<P>ORDER UNIT
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E209"></A>
<P>NO ORDERING REQUIRED</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>4
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E210"></A>
<P>8
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E210"></A>
<P>9
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E210"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E210"></A>
<P>TABLE UNIT
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E210"></A>
<P>TENKTUP2</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>5
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E211"></A>
<P>8
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E211"></A>
<P>9
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E211"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E211"></A>
<P>PRIMARY KEY</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>6
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E212"></A>
<P>8
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E212"></A>
<P>9
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E212"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E212"></A>
<P>UNIQUE2 &lt; 4500</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>7
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E213"></A>
<P>8
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E213"></A>
<P>9
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E213"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E213"></A>
<P>UNIQUE2 &gt; 4000</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>8
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E214"></A>
<P>8
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E214"></A>
<P>9
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E214"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top ><BR></TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>9
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E215"></A>
<P>10
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E215"></A>
<P>6
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E215"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E215"></A>
<P>ORDER UNIT
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E215"></A>
<P>NO ORDERING REQUIRED</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>10
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E216"></A>
<P>7
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E216"></A>
<P>10
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E216"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top >
<A NAME="E7E216"></A>
<P>TABLE UNIT
</TD><TD WIDTH=86 VALIGN=top >
<A NAME="E7E216"></A>
<P>TENKTUP1</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>11
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E217"></A>
<P>7
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E217"></A>
<P>10
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E217"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E217"></A>
<P>PRIMARY KEY</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>12
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E218"></A>
<P>7
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E218"></A>
<P>10
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E218"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E218"></A>
<P>UNIQUE2 &lt; 4500</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>13
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E219"></A>
<P>7
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E219"></A>
<P>10
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E219"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top >
<A NAME="E7E219"></A>
<P>UNIQUE2 &gt; 4000</TD>
</TR>
<TR>
<TD WIDTH=49 VALIGN=top >
<P>14
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E220"></A>
<P>7
</TD><TD WIDTH=73 VALIGN=top >
<A NAME="E7E220"></A>
<P>10
</TD><TD WIDTH=66 VALIGN=top >
<A NAME="E7E220"></A>
<P>0
</TD><TD WIDTH=106 VALIGN=top ><BR></TD>
<TD WIDTH=86 VALIGN=top ><BR></TD></TR></TABLE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>Execution graph:
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>JOIN UNIT 6 the input from order units 9 and 10 are joined using merge join algorithm
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>ORDER UNIT 9 orders the input from TABLE UNIT 8. Since the data is retrieved in correct order, no real ordering is needed
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>ORDER UNIT 10 orders the input from TABLE UNIT 7. Since the data is retrieved in correct order, no real ordering is needed
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>TABLE UNIT 8: rows are fetched from table TENKTUP2 using primary key. Constraints UNIQUE2 &lt; 4500 and UNIQUE2 &gt; 4000 are used to select the rows
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>TABLE UNIT 7: rows are fetched from table TENKTUP1 using primary key. Constraints UNIQUE2 &lt; 4500 and UNIQUE2 &gt; 4000 are used to select the rows
</BLOCKQUOTE>
<P>
<IMG SRC="gaguide/aguide18.gif" WIDTH = 237 HEIGHT = 177 ALT="Undisplayed Graphic">
<P><I>Example 2. Execution graph</I>
</BLOCKQUOTE>

<A NAME="E10E46"></A>
<P>
<FONT FACE="Arial"><B>Tracing Communication between Client and Server</B><A NAME="I41"></A><A NAME="I42"></A></FONT>
<BLOCKQUOTE>
<P>SOLID <I>Server</I> provides following tools for observing the communication between client and server:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>the Network Trace facility
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>the Ping facility
</BLOCKQUOTE></UL>
<BLOCKQUOTE>
<P>You can use these tools to analyze the functionality of the networking between client and server. The network trace facility should be used when you want to know why a connection is not established to the server. The ping facility is used to determine how fast packets are transferred between the client and server.
</BLOCKQUOTE>
<P>
<FONT FACE="Arial"><A NAME="I43"></A><A NAME="I44"></A><A NAME="I45"></A><A NAME="I46"></A><A NAME="I47"></A><A NAME="I48"></A><A NAME="I49"></A><A NAME="I50"></A><A NAME="I51"></A><A NAME="I52"></A><A NAME="I53"></A><A NAME="I54"></A><A NAME="I55"></A><A NAME="I56"></A><A NAME="I57"></A><A NAME="I58"></A><A NAME="I59"></A><A NAME="I60"></A>The Network Trace Facility<A NAME="I61"></A></FONT>
<BLOCKQUOTE>
<P>Network tracing can be done on the server, on the client or on both computers concurrently. The trace information is written to the default trace file or file specified in the TraceFile parameter. 
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>The default name of the output file is SOLTRACE.OUT. This file will be written to the current working directory of the server or client depending on which end the tracing is started.
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>The file contains information about:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>loaded DLLs
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>network addresses
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>possible errors
</BLOCKQUOTE></UL>
<BLOCKQUOTE>
<P>The Network Trace facility is turned on by editing the configuration file
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>[Com]
<BR>Trace ={Yes|No}
<BR>; default No
<BR>TraceFile = <I>file-name</I>
<BR>; default soltrace.out</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>or by using the environment variables SOLTRACE and SOLTRACEFILE to override the definitions in the configuration file. Setting of SOLTRACE and SOLTRACEFILE environment variables have the same effect as the parameters Trace and TraceFile in the configuration file. 
</BLOCKQUOTE>
<BLOCKQUOTE>
<HR ALIGN=CENTER>
<P>NOTE. Defining the TraceFile configuration parameter or the SOLTRACEFILE environment variable automatically turns on the Network trace facility.
<HR ALIGN=CENTER>
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>A third alternative to turn on the Network trace facility is to use the option -t and/or -o<I>filename</I> as a part of the network name. The option 
<BR>-t turns on the Network trace facility. The option -o turns on the facility and defines the name of the trace output file. 
</BLOCKQUOTE>
<BLOCKQUOTE>
<H4>
<FONT FACE="Arial"><B>Example 1. Defining Parameter Trace in the Configuration File</B></FONT></H4>
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>[Com]
<BR>Connect = nmp SOLID
<BR>Listen = nmp SOLID
<BR>Trace = Yes</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<H4>
<FONT FACE="Arial"><B>Example 2. Defining Environment Variables</B></FONT></H4>
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>set SOLTRACE = Yes</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>or 
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>set SOLTRACEFILE = trace.out</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<H4>
<FONT FACE="Arial"><B>Example 3. Using Network Name Options</B></FONT></H4>
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>[Com]
<BR>Connect  = nmp -t solid
<BR>Listen = nmp -t solid</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>or
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>[Com]
<BR>Connect = nmp -oclient.out solid
<BR>Listen = nmp -oserver.out solid</PRE></BLOCKQUOTE>
<P>
<FONT FACE="Arial"><A NAME="I62"></A><A NAME="I63"></A><A NAME="I64"></A><A NAME="I65"></A><A NAME="I66"></A><A NAME="I67"></A><A NAME="I68"></A><A NAME="I69"></A><A NAME="I70"></A><A NAME="I71"></A><A NAME="I72"></A><A NAME="I73"></A><A NAME="I74"></A><A NAME="I75"></A><A NAME="I76"></A><A NAME="I77"></A><A NAME="I78"></A><A NAME="I79"></A>The Ping Facility<A NAME="I80"></A></FONT>
<BLOCKQUOTE>
<P>The Ping facility can be used to test the performance and functionality of the networking. The Ping facility is built in all SOLID clients and is turned on with the network name option -p<I>level</I>. 
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>The output file will be written to the current working directory of the computer where the parameter is given. The default name of the output file is SOLTRACE.OUT.
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>Clients can always use the Ping facility at level 1. Levels 2, 3, 4 or 5 may only be used if the server is set to use the Ping facility at least at the same level. 
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>The Ping facility levels are:
</BLOCKQUOTE>
<BLOCKQUOTE><TABLE>
<TR>
<TD WIDTH=160 VALIGN=top >
<P><B>Setting</B>
</TD><TD WIDTH=160 VALIGN=top >
<A NAME="E7E221"></A>
<P>Function
</TD><TD WIDTH=136 VALIGN=top >
<A NAME="E7E221"></A>
<P>Description</TD>
</TR>
<TR>
<TD WIDTH=160 VALIGN=top >
<P>0
</TD><TD WIDTH=160 VALIGN=top >
<A NAME="E7E222"></A>
<P>no operation
</TD><TD WIDTH=136 VALIGN=top >
<A NAME="E7E222"></A>
<P>do nothing, default</TD>
</TR>
<TR>
<TD WIDTH=160 VALIGN=top >
<P>1
</TD><TD WIDTH=160 VALIGN=top >
<A NAME="E7E223"></A>
<P>check that server is alive
</TD><TD WIDTH=136 VALIGN=top >
<A NAME="E7E223"></A>
<P>exchange one 100 byte message </TD>
</TR>
<TR>
<TD WIDTH=160 VALIGN=top >
<P>2
</TD><TD WIDTH=160 VALIGN=top >
<A NAME="E7E224"></A>
<P>basic functional test
</TD><TD WIDTH=136 VALIGN=top >
<A NAME="E7E224"></A>
<P>exchange messages of sizes 0.1K, 1K, 2K..30K, increment 1K</TD>
</TR>
<TR>
<TD WIDTH=160 VALIGN=top >
<P>3
</TD><TD WIDTH=160 VALIGN=top >
<A NAME="E7E225"></A>
<P>basic speed test
</TD><TD WIDTH=136 VALIGN=top >
<A NAME="E7E225"></A>
<P>exchange 100 messages of sizes 0.1K, 1K, 8K and display each sub-result and total time</TD>
</TR>
<TR>
<TD WIDTH=160 VALIGN=top >
<P>4
</TD><TD WIDTH=160 VALIGN=top >
<A NAME="E7E226"></A>
<P>heavy speed test
</TD><TD WIDTH=136 VALIGN=top >
<A NAME="E7E226"></A>
<P>exchange 100 messages of sizes 0.1K, 1K, 2K, 4K, 8K, 16K and display each sub-result and total time</TD>
</TR>
<TR>
<TD WIDTH=160 VALIGN=top >
<P>5
</TD><TD WIDTH=160 VALIGN=top >
<A NAME="E7E227"></A>
<P>heavy functional test 
</TD><TD WIDTH=136 VALIGN=top >
<A NAME="E7E227"></A>
<P>exchange messages of sizes 1..30K, increment 1 byte</TD></TR></TABLE></BLOCKQUOTE>
<BLOCKQUOTE>
<H4>
<FONT FACE="Arial"><B>Example 1</B></FONT></H4>
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>The client turns on the Ping facility by using the following network name:
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>nmp -p1 -oping.out SOLID</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>This runs the Ping facility at the level 1 into a file named SOLTRACE.OUT. This test checks if the server is alive and exchanges one 100 byte message to the server.
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>After the Ping facility has been run, the client exits with the following message:
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>SOLID Communication return code xxx: Ping test successful/failed, results are in file FFF.XX</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<H4>
<FONT FACE="Arial"><B>Example 2</B></FONT></H4>
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>If the server is using the following listen parameter
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>[Com]
<BR>Listen = nmp -p3 SOLID</PRE></BLOCKQUOTE>
<BLOCKQUOTE>
<P>clients can run the Ping facility at levels 1, 2 and 3, but not 4 and 5.
</BLOCKQUOTE>
<BLOCKQUOTE>
<HR ALIGN=CENTER>
<P>NOTE. Ping clients running at level greater than 3 may cause heavy network traffic and may cause slowness of application using the network. They will also slow down ordinary SQL clients connected to the same SOLID <I>Server</I>.
<HR ALIGN=CENTER>
</BLOCKQUOTE>
<A NAME="E7E228"></A>
<P><B>PROBLEM REPORTING</B>
<BLOCKQUOTE>
<P>SOLID <I>Server</I> offers sophisticated diagnostic tools and methods for producing high quality problem reports with very limited effort. Use the diagnostic tools to capture all the relevant information about the problem.
</BLOCKQUOTE>
<BLOCKQUOTE>
<P>All problem reports should contain the following files and information:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>solid.ini
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>license number
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>solmsg.out
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>solerror.out
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>soltrace.out
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>problem description
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>steps to reproduce the problem
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>all error messages and codes
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>contact information, preferably email address of the contact person
</BLOCKQUOTE></UL>
<A NAME="E10E47"></A>
<P>
<FONT FACE="Arial"><B>Problem Categories</B></FONT>
<BLOCKQUOTE>
<P>Most problems can be divided into the following categories:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>SOLID SQL API
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>SOLID ODBC Driver
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>UNIFACE driver for SOLID <I>Server</I>
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>communication problems between client and server
</BLOCKQUOTE></UL>
<BLOCKQUOTE>
<P>The following pages include a detailed instructions to produce proper problem report for each problem type. Please follow the guidelines carefully.
</BLOCKQUOTE>
<A NAME="E10E48"></A>
<P>
<FONT FACE="Arial"><B>SOLID SQL API</B><B> Problems</B></FONT>
<BLOCKQUOTE>
<P>If the problem concerns the performance of SOLID SQL API or a specific SQL statement, you should run SQL info facility at level 4 and include the generated soltrace.out file into your problem report. This file contains the following information:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>create table statements
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>create view statements
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>create index statements
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>SQL statement(s)
</BLOCKQUOTE></UL>
<A NAME="E10E49"></A>
<P>
<FONT FACE="Arial"><B>SOLID ODBC Driver</B><B> Problems</B></FONT>
<BLOCKQUOTE>
<P>If the problem concerns the performance of SOLID ODBC Driver, please include the following information:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>SOLID ODBC Driver name, version, and size
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>ODBC Driver Manager version and size
</BLOCKQUOTE></UL>
<BLOCKQUOTE>
<P>If the problem concerns the cooperation of SOLID <I>Server</I> and any third party standard software package, please include the following information:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>full name of the software
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>version and language
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>manufacturer
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>error messages from the third party software package
</BLOCKQUOTE></UL>
<BLOCKQUOTE>
<P>Use ODBC trace option to get a log of the ODBC statements and include it to your problem report.
</BLOCKQUOTE>
<A NAME="E10E50"></A>
<P>
<FONT FACE="Arial"><B>UNIFACE Driver for SOLID </B><B><I>Server</I></B><B> Problems</B></FONT>
<BLOCKQUOTE>
<P>If the problem concerns the performance of for SOLID UNIFACE Driver, please include following information:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>SOLID UNIFACE Driver version and size
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>UNIFACE version and platform
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>Contents of the UNIFACE message frame
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>Error codes from the driver, $STATUS, $ERROR
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>all necessary files to reproduce the problem (TRXs, SQL scripts, USYS.ASN etc.)
</BLOCKQUOTE></UL>
<A NAME="E10E51"></A>
<P>
<FONT FACE="Arial"><B>Communication between Client and Server</B></FONT>
<BLOCKQUOTE>
<P>If the problem concerns the performance of the communication between client and server use the Network trace facility and include the generated trace files into your problem report. Please include the following information:
</BLOCKQUOTE>
<UL>
<BLOCKQUOTE>
<LI>SOLID communication DLLs used: version and size
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>other communication DLLs used: version and size
</BLOCKQUOTE>
<BLOCKQUOTE>
<LI>description of the network configuration
</BLOCKQUOTE></UL><P ALIGN=CENTER>
<A HREF="aguide08.htm" TARGET="_self"><IMG SRC="gaguide/graprev.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="Previous Page"></A>
<A HREF="httoc.htm" TARGET="_self"><IMG SRC="gaguide/gratop.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="TOC"></A>
<A HREF="htindex.htm" TARGET="_self"><IMG SRC="gaguide/graindex.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="Index"></A>
<A HREF="aguide10.htm" TARGET="_self"><IMG SRC="gaguide/granext.gif" WIDTH = 32 HEIGHT = 32 BORDER = 0 ALT="Next Page"></A>

<center><p><font SIZE=-2>Copyright &copy; 1992-1997 Solid Information Technology Ltd All rights reserved.</font></p></center>
</BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>