Error:- ORA-01795: maximum number of expression in a list is 1000

Hi All,
we are using database 11g.
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
i am getting one error while selecting the data from table.
SELECT interco_type, entity, chapter_entity, tran_currency, source_id_entity,
tran_id_entity, mirror_id, gaap_type, counterpart
FROM t_gri_reconid_dtl_agg_gcr;
or
select * from t_gri_reconid_dtl_agg_gcr where rownum = 1 ;
Error:- ORA-01795: maximum number of expression in a list is 1000 ( error is same in both the case )
Please help me if any body got to this situaltion.
regards
shyam~

Hi,
thanks for your response.
i dont have VPD and FGAC installed in my desktop.
select * from all_objects where object_name=upper('t_gri_reconid_dtl_agg_gcr');
here is the few rows from the above query as there are lot of rows. Please let me know if you need more rows.
PUBLIC     T_GRI_RECONID_DTL_AGG_GCR          10114957          SYNONYM     26-NOV-12     26-NOV-12     2012-11-26:22:09:41     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1     10114668     10320109     TABLE PARTITION     26-NOV-12     28-JAN-13     2012-11-26:22:02:14     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_10     10159558     10320125     TABLE PARTITION     12-DEC-12     28-JAN-13     2012-12-12:16:51:49     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1003     10255173     10322000     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:00:02:58     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1004     10255219     10322002     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:00:05:29     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1005     10255263     10322004     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:00:09:36     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1006     10255311     10322006     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:00:12:40     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1007     10256040     10322008     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:06:41:32     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1008     10256200     10322010     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:03:39     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1009     10256241     10322012     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:08:42     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1010     10256294     10322014     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:17:15     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1011     10256337     10322016     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:20:12     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1012     10256393     10322018     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:25:29     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1013     10256434     10322020     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:28:25     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1014     10256475     10322022     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:32:11     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1015     10256516     10322024     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:37:25     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1016     10256557     10322026     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:39:29     VALID     N     N     N     1     
GCRGRIT$OWNER     T_GRI_RECONID_DTL_AGG_GCR     GRI_1017     10256607     10322028     TABLE PARTITION     15-JAN-13     28-JAN-13     2013-01-15:08:43:24     VALID     N     N     N     1     
regards
shyam~

Similar Messages

  • ORA-01795:maximum number of expressions in a list is 1000

    Hi,
    JDev 11.1.1.5.0
    I've a usecase, where i need to pass more than 1000 values for IN clause.
    I found that, there is some restriction in number of values for IN clause to 1000.
    I got following reference on this issue
    ORA-01795:maximum number of expressions in a list is 1000. Any work around?
    Conclusion:
    there are two options to fix this issue
    Fix 1:
    You can have any number of tuples, not just 1000, in an IN-list like this:
    (id, 0) IN ( (1,0), (2,0), (3,0), (5,0), (8,0), ... )
    Fix 2:
    Use global temporary table to populate values and then use the temp table
    select * from table A1 where A1.ID in (Select ID from temp_table)
    Please suggest the best option to fix our issue.
    As of now, i am applying IN clause as
    inClause = (1,2,3,4,5...)
    criteriaRow.setAttribute("id", inClause);
    I can prepare inClause as per Fix 1. But iam concern about setting attribute as (id,0)
    can you suggest a way to apply as (id,0) IN (...)
    Thanks in advance,
    Samba.

    I would suggest fix nr 2. Since it's more flexible (for example when the list of items changes then you don't want to change every IN clause).

  • ORA-01795: maximum number of expressions in a list is 1000 error

    Hi
    when ever values specified for 'IN' operator in select statement exceeds 1000 then I am getting this error.
    How to over come this problem?
    my query is like.....
    select itemid from item where itemid in (1,2,3,...........) which is executing fine in Sqlserver 2005.
    thanks,
    harry

    Here is my query which consists 3325 item id's for 'IN' operator
    SELECT ITEMID, Item_NAME
    FROM ITEM
    WHERE ITEMID IN
    (SELECT * FROM table(sys.odcinumberlist(17755, 18047, 18080, 18556, 17754, 10419, 656, 668, 10525, 18509, 657, 658, 620, 623, 7783, 748, 747, 621, 624, 622, 625, 18558, 311, 312, 630, 548, 561, 813, 7223, 7221, 799, 10524, 549, 562, 575, 68, 10087, 814, 800, 550, 563, 74, 760, 69, 10088, 815, 794, 795, 796, 797, 798, 789, 790, 791, 792, 793, 801, 551, 564, 18482, 18543, 10089, 821, 552, 587, 565, 779, 823, 51, 816, 784, 785, 786, 787, 788, 780, 781, 782, 783, 421, 553, 566, 7562, 573, 576, 579, 582, 583, 554, 567, 18552, 18553, 18557, 39, 644, 647, 648, 649, 10520, 3851, 817, 3849, 803, 804, 580, 555, 568, 808, 807, 577, 581, 584, 556, 569, 818, 3850, 809, 805, 578, 585, 557, 570, 7257, 7259, 4529, 18054, 18055, 76, 558, 571, 819, 8631, 810, 806, 559, 560, 7331, 7329, 7325, 7323, 7241, 7239, 7247, 7245, 10527, 10291, 10172, 10171, 632, 7962, 10544, 7961, 10588, 7960, 7959, 10170, 631, 10522, 633, 10250, 10459, 653, 10223, 654, 629, 10458, 651, 1430, 7727, 7788, 10098, 10099, 7728, 7739, 7729, 7740
    , 7741, 7742, 7743, 10505, 7761, 7730, 7744, 7745, 7746, 7747, 7763, 7732, 10568, 7748, 7749, 7750, 7751, 7764, 9538, 7731, 9541, 7752, 7753, 7754, 7755, 7765, 7733, 7756, 7757, 7758, 7759, 7766, 9539, 9542, 9540, 9543, 7734, 7735, 10543, 7736, 7737, 7738, 10506, 7760, 7769, 7771, 7773, 7774, 1280, 1424, 7726, 1219, 1230, 1245, 1256, 1265, 1281, 1216, 1220, 1247, 1257, 1266, 1427, 1198, 1213, 1217, 1221, 1232, 1248, 1258, 1267, 1273, 1304, 1214, 1218, 1222, 1249, 1259, 1268, 1432, 1199, 1215, 1433, 1223, 1234, 1250, 1260, 1269, 1274, 1200, 1299, 1292, 1224, 1251, 1261, 1270, 1201, 1225, 1236, 1252, 1262, 1271, 1300, 1226, 1253, 1202, 1435, 1434, 1227, 1238, 1254, 1263, 1272, 1276, 1203, 1204, 1519, 1305, 1229, 1243, 1297, 1264, 1306, 1160, 1172, 1177, 1161, 1298, 1162, 1173, 1178, 1163, 1155, 1164, 1174, 1179, 1165, 1156, 1166, 1175, 1180, 1167, 1157, 1168, 1176, 1181, 1169, 1279, 1170, 1182, 1171, 1183, 7767, 1158, 8230, 8229, 1159, 7776, 7777, 7778, 1205, 1207, 1209, 48, 18510,
    7772, 1525, 1246, 1228, 1231, 1233, 1235, 1237, 1244, 1154, 1277, 1431, 1278, 1186, 1526, 1241, 7721, 1558, 9823, 1559, 9833, 1560, 9712, 8733, 8745, 8760, 1561, 9855, 9728, 1562, 9919, 1563, 9873, 1564, 9891, 1565, 9906, 17923, 18132, 1557, 9807, 7502, 9847, 9856, 9920, 9874, 9892, 9907, 18133, 7559, 9875, 8746, 8761, 7560, 7506, 7503, 7504, 7505, 17931, 1567, 9824, 1568, 9834, 1569, 9843, 9724, 8734, 9718, 8747, 8762, 1570, 9857, 9729, 1571, 9921, 9719, 1572, 9876, 1573, 9893, 1574, 9908, 17924, 18134, 1566, 9808, 9877, 9848, 9858, 9922, 9878, 9894, 9909, 18135, 1575, 8748, 8763, 7507, 7511, 7508, 7509, 7510, 17932, 9809, 1577, 9825, 1578, 9835, 1579, 9714, 8735, 8749, 8764, 1580, 9859, 9730, 1581, 9923, 1582, 9879, 1583, 9895, 1584, 9910, 17925, 18136, 1576, 9810, 9849, 9860, 9924, 9880, 9896, 9911, 18137, 7512, 8750, 8765, 7513, 7517, 7514, 7515, 7516, 17933, 1586, 9826, 1587, 9836, 1588, 9716, 8736, 9720, 8751, 8766, 1589, 9861, 9731, 9717, 9925, 9721, 1590, 9881, 1591, 9897
    , 1592, 9912, 18138, 1585, 9811, 9882, 9850, 9862, 9926, 9883, 9898, 9913, 18139, 1594, 9827, 1595, 9837, 1596, 8737, 9722, 8752, 8767, 1597, 9863, 9732, 1598, 7518, 9723, 1599, 9884, 7519, 1600, 9899, 1601, 9914, 17926, 18140, 1593, 9812, 1603, 9828, 1604, 9838, 1605, 8738, 8753, 8768, 1606, 9864, 9733, 9927, 1607, 9885, 1608, 9900, 1609, 9915, 18141, 1602, 9813, 1611, 9829, 1612, 9839, 1613, 8739, 8754, 8769, 1614, 9865, 9734, 1615, 1616, 9886, 7520, 1617, 9901, 1618, 9916, 17927, 1610, 9814, 9830, 9840, 9842, 9851, 9866, 9928, 9887, 9902, 9917, 18142, 9815, 1619, 9816, 1620, 9817, 1621, 9818, 1622, 9819, 1527, 8729, 8740, 8755, 1528, 9725, 1529, 1530, 1531, 1532, 9867, 9841, 9844, 9852, 9868, 9888, 9903, 1534, 1535, 1536, 8730, 8741, 8756, 1537, 9726, 7492, 1538, 1539, 1540, 17928, 1533, 7493, 1541, 1542, 10117, 10118, 9845, 7495, 1543, 8728, 8731, 8742, 8757, 1544, 7496, 1545, 1546, 1547, 17929, 7494, 9869, 10115, 10116, 1549, 9820, 9821, 1550, 9831, 1551, 8732, 8743, 8758,
    1552, 9853, 9727, 1553, 1554, 9870, 1555, 9889, 1556, 9904, 17922, 18130, 1548, 9805, 9871, 9822, 9832, 9846, 9854, 9918, 9872, 9890, 9905, 18131, 9806, 8744, 8759, 7497, 7501, 7498, 7499, 7500, 17930, 1750, 9941, 1751, 9951, 1752, 9759, 8775, 1753, 9972, 7527, 9775, 1754, 1755, 9992, 1756, 10010, 1757, 10025, 1749, 10039, 9973, 9993, 10011, 10026, 9994, 8776, 7528, 7529, 7530, 7531, 1759, 9942, 1760, 9952, 1761, 9959, 9771, 9765, 8777, 1762, 9974, 9776, 1763, 9766, 1764, 9995, 1765, 10012, 1766, 10027, 1758, 10040, 9996, 9965, 9975, 9997, 10013, 10028, 8778, 7532, 1767, 7533, 7534, 7535, 10041, 1769, 9943, 1770, 9953, 1771, 9761, 8779, 1772, 9976, 9777, 1773, 1774, 9998, 1775, 10014, 1776, 10029, 1768, 10042, 9966, 9977, 9999, 10015, 10030, 8780, 7536, 7537, 7538, 7539, 1778, 9944, 1779, 9954, 1780, 9763, 9767, 8781, 1781, 9978, 9778, 9764, 9768, 1782, 10000, 1783, 10016, 1784, 10031, 1777, 9929, 10001, 9967, 9979, 10002, 10017, 10032, 1786, 9945, 1787, 9955, 1788, 9769, 8782,
    1789, 9980, 9779, 1790, 9770, 1791, 1792, 10018, 1793, 10033, 1785, 9930, 1795, 9946, 1796, 9956, 1797, 8783, 1798, 9981, 9780, 1799, 10004, 1800, 10019, 1801, 10034, 1794, 9931, 1803, 9947, 1804, 9957, 1805, 8784, 1806, 9781, 1807, 1808, 10005, 1809, 10020, 1810, 10035, 1802, 9932, 9948, 9958, 9968, 9983, 10006, 10021, 10036, 9933, 1811, 9934, 1812, 9935, 1813, 9936, 1814, 9937, 1719, 8770, 1720, 9772, 1721, 1722, 1723, 1724, 9986, 9961, 9969, 9987, 10007, 10022, 1726, 1727, 1728, 8771, 1729, 9773, 1730, 1731, 1732, 1725, 9960, 1733, 9985, 1734, 10119, 10120, 9962, 7522, 1735, 8772, 1736, 1737, 1738, 1739, 7521, 9988, 10113, 10114, 1741, 9938, 9939, 1742, 9949, 1743, 8773, 1744, 9970, 9774, 1745, 1746, 9989, 1747, 10008, 1748, 10023, 1740, 10037, 9990, 9940, 9950, 9963, 9971, 9991, 10009, 10024, 10038, 8774, 7523, 7524, 7525, 7526, 1, 2, 4, 5, 7, 8, 7903, 17508, 3, 6, 9, 7283, 7281, 17753, 771, 300, 7177, 586, 811, 7229, 7227, 75, 7209, 7207, 1464, 1465, 9689, 1466, 1467, 9705,
    9690, 1468, 1469, 1470, 1462, 1463, 7476, 7477, 7478, 7479, 1473, 1474, 9701, 9695, 1475, 9706, 9696, 1476, 1477, 1478, 1471, 1472, 7480, 7481, 7482, 7483, 1481, 1482, 9691, 1483, 9707, 9692, 1484, 1485, 1486, 1479, 1480, 7484, 7485, 7486, 7487, 1489, 1490, 9693, 9697, 1491, 9708, 9694, 9698, 1492, 1493, 1494, 1487, 1488, 1497, 1498, 9699, 1499, 9709, 9700, 1500, 1501, 1502, 1495, 1496, 1505, 1506, 1507, 9710, 1508, 1509, 1510, 1503, 1504, 1513, 1514, 1515, 9711, 1516, 1517, 1518, 1511, 1512, 7488, 7489, 7490, 7491, 7465, 7466, 9702, 7467, 7468, 3692, 7469, 1441, 1442, 1443, 9703, 1444, 1445, 1446, 1439, 1440, 1447, 1448, 10123, 10124, 1449, 1450, 1451, 1452, 1453, 7470, 7471, 1456, 1457, 1458, 9704, 1459, 1460, 1461, 1454, 1455, 7472, 7473, 7474, 7475, 770, 766, 7963, 10536, 4352, 4354, 4356, 4358, 4360, 4362, 4364, 4366, 4368, 4370, 4372, 4374, 4376, 4378, 4380, 4382, 4384, 4386, 4388, 4390, 4392, 4394, 4396, 4398, 4400, 4402, 4404, 4406, 4408, 4410, 4412, 4414, 4416, 4418,
    4420, 4422, 4424, 4426, 4428, 4430, 4432, 4434, 4436, 4438, 4440, 4442, 4444, 4446, 4448, 4450, 4452, 4454, 4456, 4458, 4460, 4462, 4464, 4466, 4468, 4470, 4472, 4474, 4476, 4478, 4480, 4482, 4484, 4486, 4488, 4490, 4492, 4494, 4496, 4498, 4500, 4502, 4504, 4506, 4508, 4510, 4512, 4514, 4516, 4518, 4520, 4522, 4526, 4528, 4595, 504, 3852, 73, 4536, 4538, 4540, 4542, 4544, 4546, 4548, 4550, 4552, 4554, 4556, 4558, 4560, 8651, 8652, 4563, 4565, 4567, 4569, 4571, 4573, 4575, 4577, 4579, 4581, 4583, 4585, 4587, 4589, 220, 221, 64, 18038, 758, 3565, 10456, 99, 212, 213, 225, 224, 761, 762, 92, 759, 18032, 94, 18599, 769, 18551, 102, 10442, 96, 43, 491, 440, 426, 470, 433, 477, 463, 456, 448, 18565, 172, 164, 492, 441, 471, 478, 464, 457, 449, 162, 170, 18566, 18567, 493, 442, 472, 479, 465, 458, 450, 165, 173, 146, 154, 169, 177, 7929, 7928, 18547, 208, 209, 18561, 4621, 4628, 4639, 4646, 4716, 4723, 4735, 4742, 4783, 4790, 4801, 4808, 4854, 4861, 4872, 4879, 4916, 4923, 4936, 4943,
    4956, 4963, 5006, 5013, 5024, 5031, 5042, 5049, 5104, 5111, 5124, 5131, 5162, 5169, 5182, 5189, 5242, 5249, 8653, 8654, 5296, 5303, 5314, 5321, 5334, 5341, 5378, 5385, 5398, 5405, 5418, 5425, 5620, 5627, 5640, 5647, 7785, 103, 10443, 1017, 7876, 1018, 1033, 1042, 8638, 1019, 1043, 7877, 7883, 1289, 1020, 1035, 1044, 8639, 1021, 7875, 7878, 7884, 1290, 1022, 1037, 1046, 1023, 9061, 9062, 9063, 7879, 7885, 1429, 1024, 1039, 1047, 1025, 7880, 8025, 1026, 1040, 1048, 7881, 1028, 1049, 1520, 1030, 1050, 7882, 1032, 1051, 1066, 7873, 1015, 1016, 8227, 8226, 5828, 5830, 5832, 5834, 5836, 5838, 5840, 5842, 5844, 5846, 5848, 5850, 5852, 5854, 5856, 5858, 5860, 5862, 5864, 18576, 21, 9086, 10225, 5877, 5879, 5883, 5885, 5889, 5891, 5895, 5897, 5901, 5903, 5907, 5909, 5913, 5915, 5919, 5921, 5925, 5927, 5931, 5933, 5943, 5945, 5955, 5957, 5961, 5963, 5967, 5969, 5973, 5975, 5979, 5981, 5991, 5993, 5997, 5999, 6003, 6005, 6015, 6017, 6021, 6023, 6027, 6029, 6073, 6075, 6079, 6081, 6085, 6087
    , 6091, 6093, 6109, 6111, 6115, 6117, 6127, 6129, 6133, 6135, 6139, 6141, 6145, 6147, 6157, 6159, 6163, 6165, 6169, 6171, 6181, 6183, 6187, 6189, 6193, 6195, 6199, 6201, 6205, 6207, 6211, 6213, 6217, 6219, 6229, 6231, 6235, 6237, 6247, 6249, 6253, 6255, 6265, 6267, 6271, 6273, 6283, 6285, 6289, 6291, 6295, 6297, 6301, 6303, 6307, 6309, 6313, 6315, 6319, 6321, 6331, 6333, 6337, 6339, 6343, 6345, 6349, 6351, 6355, 6357, 6361, 6363, 6367, 6369, 6373, 6375, 6379, 6381, 6391, 6393, 6397, 6399, 6403, 6405, 6409, 6411, 6415, 6417, 6421, 6423, 6427, 6429, 6433, 6435, 6475, 6477, 6481, 6483, 6499, 6501, 6505, 6507, 6511, 6513, 6517, 6519, 6523, 6525, 6529, 6531, 6535, 6537, 6553, 6555, 6559, 6561, 6565, 6567, 6571, 6573, 755, 40, 41, 7720, 192, 193, 194, 195, 217, 216, 70, 19, 20, 7923, 10226, 9085, 6590, 6593, 6597, 6600, 6610, 6613, 6617, 6620, 6624, 6627, 6631, 6634, 6644, 6647, 6651, 6654, 6668, 6671, 6675, 6678, 6682, 6685, 6689, 6692, 757, 3564, 91, 10427, 302, 7920, 93, 7967, 18481
    , 7927, 6700, 6705, 6712, 6717, 6724, 6729, 6736, 6741, 6760, 6765, 6748, 6753, 6784, 6789, 6772, 6777, 6795, 6801, 6808, 6813, 6820, 6825, 6832, 6837, 6843, 6850, 6855, 6862, 6867, 6874, 6879, 6886, 6891, 6898, 6903, 6910, 6915, 6934, 6939, 98, 764, 18353, 10425, 777, 767, 18550, 97, 3859, 18511, 1286, 1077, 1091, 1291, 1107, 1138, 1126, 7924, 285, 18075, 18076, 286, 18492, 18073, 18074, 756, 7922, 1342, 1343, 1344, 9666, 1350, 1345, 9682, 1420, 1346, 1347, 1348, 1349, 1339, 1340, 1341, 3689, 7444, 10593, 7445, 7449, 7446, 7447, 7448, 17919, 1352, 1353, 1354, 9678, 1360, 1355, 9683, 1426, 9673, 1356, 1357, 1358, 1359, 1351, 7450, 7451, 7455, 7452, 7453, 7454, 17920, 1364, 1365, 1366, 9668, 1372, 1367, 9684, 1421, 1368, 1369, 1370, 1371, 1361, 1362, 1363, 7456, 7457, 7461, 7458, 7459, 7460, 17921, 1374, 1375, 1376, 9670, 1381, 1377, 9685, 9671, 9675, 1378, 1379, 1380, 1373, 1385, 1386, 1387, 10592, 1393, 1388, 9686, 1422, 7462, 9677, 1389, 7464, 1390, 1391, 1392, 1382, 1383, 1384
    , 1395, 1396, 1397, 1402, 1398, 9687, 1399, 1400, 1401, 1394, 1405, 1406, 1407, 1408, 9688, 1423, 3690, 1409, 7463, 1410, 1411, 1412, 1403, 1404, 1413, 1414, 1416, 1417, 1418, 1419, 1307, 1308, 9679, 1309, 1310, 1311, 1312, 1315, 1316, 1317, 1318, 9680, 7434, 1319, 1320, 1321, 17916, 1313, 1314, 7435, 1322, 1323, 10121, 10122, 7437, 1324, 8727, 1325, 7438, 1326, 1327, 1328, 17917, 7436, 1330, 1331, 1332, 1338, 1333, 9681, 1425, 1334, 1335, 1336, 1337, 1329, 7439, 7443, 7440, 7441, 7442, 17918, 778, 768, 494, 443, 473, 480, 466, 459, 451, 18568, 167, 175, 18512, 763, 9084, 772, 6948, 6953, 6960, 6965, 6972, 6977, 6983, 6990, 6995, 7002, 7007, 7014, 7019, 7026, 7031, 7050, 7055, 188, 189, 3860, 495, 444, 430, 474, 437, 481, 467, 460, 452, 145, 153, 176, 18564, 168, 496, 431, 475, 438, 482, 468, 461, 18562, 446, 454, 171, 163, 18018, 17506, 17507, 301, 7921, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 776, 775, 7786, 3562, 7176, 7098, 7100, 7102, 7104, 7106, 7108, 7112, 7114,
    7116, 7118, 7122, 7124, 7126, 7128, 7130, 7134, 7136, 7138, 7140, 18560, 10476, 10477, 10478, 31, 30, 7919, 226, 7722, 227, 228, 229, 7723, 230, 231, 10457, 18156, 17936, 18513, 18555, 282, 275, 86, 18113, 65, 7945, 10545, 537, 533, 535, 536, 534, 78, 273, 359, 298, 291, 63, 774, 62, 350, 18048, 7939, 270, 271, 295, 294, 293, 292, 7937, 7982, 18100, 10451, 10332, 349, 18526, 10452, 77, 10446, 10447, 10453, 10448, 10449, 10450, 10455, 17505, 10400, 7909, 7917, 351, 258, 7977, 7913, 305, 8133, 8131, 8132, 8124, 8122, 8123, 8157, 8154, 8156, 8151, 8148, 8150, 8145, 8142, 8144, 259, 7978, 7976, 10454, 17895, 362, 8121, 8119, 8120, 8016, 8017, 8018, 8011, 8012, 8014, 8015, 8136, 8134, 8135, 289, 290, 49, 314, 87, 313, 8076, 8082, 50, 8073, 297, 7940, 296, 529, 18469, 8155, 8152, 8153, 8149, 8146, 8147, 8143, 8140, 8141, 8127, 8125, 8126, 254, 8019, 8020, 8021, 8106, 8104, 8105, 338, 10083, 7985, 525, 7951, 250, 251, 252, 253, 7944, 7718, 7987, 240, 241, 242, 243, 239, 18527, 249, 246,
    247, 248, 244, 8130, 8128, 8129, 277, 276, 279, 7725, 8802, 8812, 8823, 9782, 8912, 8924, 8939, 8836, 9798, 8900, 8854, 8871, 8886, 8788, 8855, 8925, 8940, 8837, 8901, 8856, 8872, 8887, 8803, 8813, 8824, 9794, 8913, 9788, 8926, 8941, 8838, 9799, 8902, 9789, 8857, 8873, 8888, 8789, 8927, 8942, 8839, 8903, 8858, 8874, 8889, 8804, 8814, 8825, 9784, 8914, 8928, 8943, 8840, 9800, 8904, 8859, 8875, 8890, 8790, 8860, 8929, 8944, 8841, 8905, 8861, 8876, 8891, 8805, 8815, 8826, 9786, 8915, 9790, 8930, 8945, 8842, 9801, 9787, 9791, 8862, 8877, 8892, 8791, 8806, 8816, 8827, 8916, 9792, 8931, 8946, 8843, 9802, 8906, 9793, 8863, 8878, 8893, 8792, 8807, 8817, 8828, 8917, 8932, 8947, 8844, 9803, 8864, 8879, 8894, 8793, 8808, 8818, 8829, 8918, 8933, 8948, 8845, 9804, 8907, 8865, 8880, 8895, 8794, 8795, 8796, 8797, 8798, 8819, 8908, 8919, 8934, 8831, 9795, 8847, 8866, 8881, 8848, 8799, 8809, 8820, 8909, 8920, 8935, 8832, 9796, 8896, 8849, 8867, 8882, 8785, 8830, 8846, 8850, 10125, 10126, 8800,
    8810, 8821, 8910, 8921, 8936, 8833, 8897, 8851, 8868, 8883, 8786, 8801, 8811, 8822, 8911, 8922, 8937, 8834, 9797, 8898, 8852, 8869, 8884, 8787, 8923, 8938, 8835, 8899, 8853, 8870, 8885, 8966, 8976, 9735, 9736, 9049, 8988, 8998, 9752, 9737, 9004, 9019, 9034, 8952, 9050, 8989, 9005, 9020, 9035, 8967, 8977, 9748, 9742, 9051, 8990, 9753, 9743, 9006, 9021, 9036, 8953, 9052, 8991, 9007, 9022, 9037, 8968, 8978, 9738, 9053, 8992, 9754, 9739, 9008, 9023, 9038, 8954, 9054, 8993, 9009, 9024, 9039, 8969, 8979, 9740, 9744, 9055, 8994, 9755, 9741, 9745, 9010, 9025, 9040, 8955, 8970, 8980, 9746, 9056, 8995, 9756, 9747, 9011, 9026, 9041, 8956, 8971, 8981, 9057, 8996, 9757, 9012, 9027, 9042, 8957, 8972, 8982, 9058, 8997, 9758, 9013, 9028, 9043, 8958, 8959, 8960, 8961, 8962, 9044, 8983, 9749, 8999, 9014, 9029, 8963, 8973, 9045, 8984, 9750, 9000, 9015, 9030, 8949, 10131, 10127, 10128, 8964, 8974, 9046, 8985, 9001, 9016, 9031, 8950, 8965, 8975, 9047, 8986, 9751, 9002, 9017, 9032, 8951, 9048, 8987,
    9003, 9018, 9033, 7724, 233, 8023, 8024, 8022, 8079, 18489, 18488, 335, 337, 10232, 336, 339, 18490, 342, 346, 345, 7981, 10084, 10246, 278, 7938, 255, 18115, 18114, 18023, 10363, 10401, 10364, 10402, 7979, 283, 281, 17722, 17721, 10245, 284, 18016, 7932, 280, 82, 18381, 304, 137, 18522, 7916, 18059, 309, 236, 321, 322, 7942, 17768, 17769, 17770, 17771, 17772, 17773, 382, 18003, 17774, 17775, 17776, 17777, 17778, 17779, 17780, 17781, 17782, 17783, 17784, 17785, 316, 306, 38, 42, 7914, 10373, 7912, 10533, 7918, 378, 7973, 514, 10241, 358, 7910, 111, 18358, 8547, 8546, 8499, 8549, 8550, 8548, 8551, 10108, 10109, 8614, 8536, 8475, 8479, 8489, 8500, 8510, 8520, 10511, 8570, 8571, 8589, 8572, 8490, 8552, 8553, 8537, 8595, 8573, 8574, 8575, 8576, 8596, 8590, 8554, 8555, 8476, 8480, 8491, 8501, 8511, 8521, 8530, 8557, 8466, 8473, 8477, 8481, 9570, 9571, 8492, 8556, 9574, 8502, 8512, 8522, 8534, 10564, 8577, 8578, 8579, 8580, 8597, 8558, 8581, 8582, 8583, 8584, 8598, 8467, 8474, 8539,
    8482, 8493, 8503, 8513, 8523, 8543, 8559, 8468, 8531, 8544, 8483, 9572, 8494, 9575, 8504, 8514, 8524, 8528, 8585, 8586, 8587, 8588, 8599, 10493, 8469, 8538, 8545, 8484, 9573, 8495, 9576, 8505, 8515, 8525, 8470, 8566, 8567, 8485, 10540, 8496, 8506, 8516, 8526, 8535, 10489, 8560, 8561, 8568, 8486, 8497, 8507, 8517, 8562, 8471, 8563, 8569, 8487, 8498, 8508, 8518, 8527, 8529, 8591, 10512, 8592, 8593, 8594, 8564, 8478, 8488, 8565, 8509, 8519, 7974, 17997, 17786, 17787, 17788, 17789, 17790, 17791, 366, 17792, 7968, 17793, 17794, 17795, 17796, 17797, 7926, 7969, 17798, 17801, 17802, 17803, 17804, 17807, 17808, 17809, 17810, 17811, 17812, 17813, 17814, 17815, 18022, 10416, 523, 10365, 10403, 10339, 10335, 10342, 10344, 10345, 10347, 10349, 10352, 10354, 10356, 10355, 10343, 10346, 10348, 10350, 10351, 10353, 10357, 10358, 10359, 10360, 10361, 10362, 10313, 10327, 18598, 17816, 17817, 17818, 17819, 17820, 17821, 18004, 17822, 17823, 17824, 17825, 17826, 17827, 54, 10366, 180, 157, 178,
    155, 181, 158, 185, 10404, 10367, 10405, 10406, 334, 325, 328, 10287, 88, 89, 17828, 17829, 17830, 17831, 17832, 17833, 9094, 10322, 10407, 121, 117, 113, 115, 119, 118, 120, 124, 123, 10325, 10368, 8008, 8009, 10235, 17834, 17837, 17838, 17839, 17840, 17841, 17842, 17843, 17844, 17845, 9095, 101, 79, 532, 377, 7971, 7991, 7992, 7994, 7993, 7965, 373, 17846, 17847, 17848, 17849, 17850, 17851, 320, 333, 18015, 57, 58, 138, 18111, 509, 10328, 10553, 519, 28, 7972, 520, 327, 367, 237, 107, 368, 7970, 81, 18041, 7984, 528, 527, 10460, 10314, 18001, 17852, 17853, 17854, 17855, 17856, 17857, 376, 17858, 17859, 17860, 17861, 17862, 17863, 18002, 17864, 17865, 17866, 17867, 17868, 17869, 521, 329, 18101, 318, 315, 379, 17870, 17871, 17872, 17873, 17874, 17875, 7966, 183, 160, 10369, 18478, 516, 515, 512, 128, 131, 129, 133, 130, 127, 8620, 10097, 8623, 256, 257, 18051, 232, 238, 7925, 29, 10233, 10370, 10408, 330, 8688, 15777, 18062, 7792, 2016, 7793, 18602, 8236, 2017, 2018, 2019, 2020,
    2021, 2022, 2023, 2024, 10507, 2025, 2026, 2027, 2028, 9099, 2029, 2030, 2031, 2032, 2015, 2034, 10106, 10107, 7795, 7796, 18603, 7801, 2035, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 9100, 2037, 2039, 2047, 2048, 2049, 2050, 2052, 2053, 7798, 7799, 18604, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 9564, 9565, 9567, 18605, 10566, 2073, 2077, 2078, 2079, 2080, 2081, 2082, 2074, 9101, 2075, 2076, 2083, 2084, 2085, 2086, 2087, 2090, 2091, 18606, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 9096, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 9566, 9568, 18607, 9102, 10495, 2111, 2112, 2113, 2114, 8659, 2115, 2116, 9569, 2117, 2118, 2119, 18608, 2120, 2121, 2122, 2123, 2124, 10538, 2125, 2126, 9097, 2127, 2128, 2129, 2130, 18609, 10491, 2131, 9103, 2134, 2132, 2133, 2135, 2136, 2137, 2138, 2139, 7800, 18610, 2140, 2141, 2142, 2143, 2144, 9098, 2145, 2146, 2147, 2148, 7797, 18611, 2149, 10508, 2150,
    2151, 2152, 18600, 2153, 2154, 2155, 2156, 2157, 7791, 7794, 18601, 2159, 2160, 2161, 2162, 2163, 10318, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 8645, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 10469, 2198, 2199, 2200, 2201, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2211, 2213, 2214, 8234, 8235, 17888, 2202, 2210, 2212, 17889, 17890, 10323, 184, 161, 7915, 10371, 363, 179, 156, 10372, 18049, 10382, 10388, 17750, 10374, 10380, 10384, 10392, 10423, 10378, 10546, 10412, 10413, 10409, 10411, 10548, 10549, 10389, 10398, 10414, 10547, 18069, 10550, 10394, 10397, 10375, 10410, 10285, 10424, 55, 18559, 7911, 7950, 287, 85, 18017, 7948, 17876, 17877, 17878, 17879, 17880, 17881, 526, 517, 510, 109, 112, 110, 108, 10239, 67, 361, 10247, 106, 126, 135, 134, 132, 136, 332, 524, 18021, 83, 522, 17882, 17883, 17884, 17885, 17886, 17887, 18013, 18386, 18011, 18012, 33, 308,
    326, 319, 18385, 10096, 317, 18563, 18061, 18384)
    ))

  • Maximum number of expressions in a list is 1000

    Hi
    I am new to this forum. This is my first Query .
    I am useing delete query with in (......) having greater than 1000 expression but it show exception like maximum number of expressions in a list is 1000 .
    I there any way to tackle this situation .or how should i query

    You can break it into multiple IN list:
    delete
      from t
    where id in (1, ..., 1000)
          or id in (1001, ..., 1200);Or use a collection (array) to hold all the values:
    Re: DYNAMIC WHERE CLAUSE in PROCEDURE

  • I am unable to connect database this error  ORA-00020: maximum number of

    i issuing this command / as sysdba .getting this error
    Enter user-name: / as sysdba
    ERROR:
    ORA-00020: maximum number of processes (300) exceeded
    how to resolve this problem.it is verry verry urgent.

    Hi
    "Maximum number of processes exceeded" will be alerted when your database has received a request for connection from a process which is beyond the number of processes your database can allow for.
    Please check your database parameters
    show parameters processes
    Couple of options:
    a) If your database has been running for a while and if it's the first time you are recieving this error, please check why all of a sudden more and more processes have been created. You may want to investigate your application, users, etc
    b) If it's a valid request and if it's the case that you haven't really configured enough processes, you will have to increase the PROCESSES parameter in your init file and restart the database. It's not a dynamic parameter. Also, make sure you increase the sessions parameter as well along with the processes.
    Before you do this, you will also have to check if your OS has been configured for increasing the number of processes. Think it's semmsl in Unix.

  • Maximum number of expressions in a list (oracle 8.0.5)

    Hi. everyone.
    I would like to know how many expressions in a list ( oracle 8.0.5)
    is possible?
    For example,
    select *
    from ........
    where a in ( c1, c2, ...........................cn)
    In this case, what is the maximum number of n under oracle 8.0.5?
    1000 of c in a list did work, but 1001 of c did not.
    I've got the message of ORA-01795.
    " the maximum number of expressions in a list is 254."
    However, 1000 of c did work.
    Is this a bug in oracle with regard to ora error message?
    Every response will be greatly appreciated.
    Thanks in advance.
    Ho
    Message was edited by:
    user507290

    to ALO
    I agree with your opinion, but I have too many number of sites (db instance)
    to create a temporary table for that.
    In addition, it is not a periodic job.
    Thanks for your reply.
    Have a nice day,
    Ho.
    to Mariano
    Thanks for your reply. I think it's one of bugs of oracle8.0.5.
    Have a nice day.
    Ho

  • Xs:group refs and "ORA-30936: Maximum number (1) of XML nodes exceeded'

    We registered a subset of the IBM DITA schemas in Oracle XDB. These schemas contain a lot of xs:group definitions where references to these groups contain "minOccurs" and "maxOccurs" atttributes, for instance:
    <xs:group name="category">
    <xs:sequence>
    <xs:element ref="category"/>
    </xs:sequence>
    </xs:group>
    <xs:complexType name="metadata.class">
    <xs:sequence>
    <xs:group ref="audience" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="category" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="keywords" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="prodinfo" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="othermeta" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="mapkeyref" type="xs:string"/>
    <xs:attributeGroup ref="global-atts"/>
    <xs:attribute ref="class" default="- topic/metadata "/>
    </xs:complexType>
    When we create an instance document that contains more than one "category" element under the element "metadata" element, like:
    <metadata>
    <audience type="purchaser" othertype="" job="using" otherjob="" experiencelevel="general"/>
    <category/>
    <category/>
    </metadata>
    we get the error: ORA-30936: Maximum number (1) of 'category' XML node elements exceeded
    This error is not consistent with the schema and XML parsers like Xerces and the Oracle "XDK parser" think the instance is fine.
    When we skip the reference to the group and reference the element definition "category" directly the problem is gone:
    <xs:complexType name="metadata.class">
    <xs:sequence>
    <xs:group ref="audience" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element ref="category" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="keywords" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="prodinfo" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="othermeta" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="mapkeyref" type="xs:string"/>
    <xs:attributeGroup ref="global-atts"/>
    <xs:attribute ref="class" default="- topic/metadata "/>
    </xs:complexType>
    In this case the problems for the other group references like "audience" remain.
    It looks like Oracle XDB doesn't honor the cardinality attributes "minOccurs" and "maxOccurs" on xs:group elements that are references. Does anyone experienced similar problems?
    Thanks,
    Maarten

    This sounds like bug 5204107. You'll need to open a tar with Oracle Support if you need a fix for this..
    It happens when a group is used once without a maxOccurs and then later with a maxOccurs.
    The workaround is 'in-line' the group before registering the XML Schema. This can be done as follows (assuming the group definition and reference are in the same XML Schema)..
    procedure expandGroup(xmlschema in out xmltype, groupName varchar2,xsdDirectory varchar2)
    is
      xsdSchemaPath varchar2(512);
      groupModel xmltype;
      sequenceModel xmlType := xmlType('<xsd:sequence ' || xdb_namespaces.XMLSCHEMA_PREFIX_XSD || '><xsd:sequence/></xsd:sequence>');
      maxOccursValue binary_integer;
    begin
      -- FInd the Group Definition
      if xmlSchema.existsNode('/xsd:schema//xsd:group[@ref="' || groupName || '"]',NAMESPACES) = 1 then
        if xmlSchema.existsNode('/xsd:schema/xsd:group[@name="' || groupName || '"]',NAMESPACES) = 1 then
          select extract
                   xmlSchema,
                   '/xsd:schema/xsd:group[@name="' || groupName || '"]',
                   NAMESPACES
            into groupModel
            from dual; 
        else
          dbms_output.put_line('xsdDirectory = ' || xsdDirectory);
          select PATH,
                 extract
                   CONTENTS,
                   '/xsd:schema/xsd:group[@name="' || groupName || '"]',
                   NAMESPACES
            into xsdSchemaPath, groupModel
            from (
                   select PATH, xdburitype(path).getXML() CONTENTS
                     from PATH_VIEW
                    where under_path(res,xsdDirectory) = 1
           where existsNode
                   CONTENTS,
                   '/xsd:schema/xsd:group[@name="' || groupName || '"]',
                   NAMESPACES
                 ) = 1;
           dbms_output.put_line('Resolved ' || groupModel.extract('/xsd:group/@name',NAMESPACES).getStringVal() || ' in Schema ' || xsdSchemaPath);
        end if;
        if groupModel.existsNode('/xsd:group/xsd:annotation',NAMESPACES) = 1 then
          select deleteXML
                   groupModel,
                   '/xsd:group/xsd:annotation',
                   NAMESPACES
            into groupModel
            from dual;
        end if;
        -- create a sequence that can be placed in-line in the XML Schema to replace the <group ref=""/>
        groupModel := groupModel.extract('/xsd:group/*',NAMESPACES);
        select updateXML
                 sequenceModel,
                 '/xsd:sequence/xsd:sequence',
                groupModel,
                 NAMESPACES
          into sequenceModel
          from dual;
        if xmlSchema.existsNode('/xsd:schema//xsd:group[@ref="' || groupName || '" and not(@maxOccurs)]',NAMESPACES) = 1 then
          select updateXML
                   xmlSchema,
                   '/xsd:schema//xsd:group[@ref="' || groupName || '" and not(@maxOccurs)]',
                  sequenceModel,
                   NAMESPACES
            into xmlSchema
            from dual;
        end if;
        select insertChildXML
                 sequenceModel,
                 '/xsd:sequence',
                 '@maxOccurs',
                 'unbounded',
                 NAMESPACES
          into sequenceModel
          from dual;
        if xmlSchema.existsNode('/xsd:schema//xsd:group[@ref="' || groupName || '" and @maxOccurs="unbounded"]',NAMESPACES) = 1 then
          select updateXML
                   xmlSchema,
                   '/xsd:schema//xsd:group[@ref="' || groupName || '" and @maxOccurs="unbounded"]',
                   sequenceModel,
                   NAMESPACES
            into xmlSchema
            from dual;
        end if;
        while xmlschema.existsNode('/xsd:schema//xsd:group[@ref="' || groupName || '"]',NAMESPACES) = 1 loop
          maxOccursValue := xmlSchema.extract('/xsd:schema//xsd:group[@ref="' || groupName || '"]/@maxOccurs').getNumberVal();
          select updateXML
                   sequenceModel,
                  '/xsd:sequence/@maxOccurs',
                   maxOccursValue,
                   NAMESPACES
            into sequenceModel
            from dual;
          select updateXML
                   xmlSchema,
                   '/xsd:schema//xsd:group[@ref="' || groupName || '" and @maxOccurs="' || maxOccursValue || '"]',
                   sequenceModel,
                   NAMESPACES
            into xmlSchema
            from dual;
        end loop;
      end if;
    end;
    --

  • Registerschema gives ORA-01792: maximum number of columns...

    Hi,
    DB: Oracle9i Enterprise Edition Release 9.2.0.6.0
    Opp Sys: HP-UX
    I've just increased the size of an XSD we have loaded in a customers database and attempting to reload using dbms_xmlschema.registerschema gives the following error:
    ORA-31084: error while creating table "SOLO"."LetterRoot5799_TAB" for element "LetterRoot"
    ORA-01792: maximum number of columns in a table or view is 1000
    ORA-02310: exceeded maximum number of allowable columns in table
    ORA-06512: at "XDB.DBMS_XMLSCHEMA_INT", line 0
    ORA-06512: at "XDB.DBMS_XMLSCHEMA", line 26
    ORA-06512: at "SOLO.WORK_TEST_LETTERS_XSD", line 23
    ORA-06512: at line 2
    Is there a work around for this?
    Thanks,
    Mike Moore

    Hi! I faced the same problem as author of a thread. At first it was just the same and I used solution that was offered - add attribute xdb:SQLInline="false".
    But now this error (ORA-01792: maximum number of columns in a table or view is 1000) became to rise on element that doesn't have a lot of attributes or subelements that coul exceed limit of 1000! Moreover it is based on complex type that already exists! It was created during another schema registration, which is included in schema that I'm trying to register now!
    Does anyone challenged this problem?
    I use Oracle9i Enterprise Edition Release 9.2.0.5.0

  • ORA-00020: maximum number of processes 1000 exceeded

    Hello,
    Oracle 10.2.0.4.0
    O/S: Windows Server 2003-64 bits
    RAM: 32Gb
    Instance: opext
    show SGA
    Total System Global Area 10284433408 bytes
    Fixed Size 2180960 bytes
    Variable Size 1574353056 bytes
    Database Buffers 8690597888 bytes
    Redo Buffers 17301504 bytes
    Today at 8:01 am we've got this error:
    ORA-00020: maximum number of processes 1000 exceeded
    That incident was reported in a trace file (opext_ora_8240.trc):
    Dump file c:\oracle\product\10.2.0\admin\opext\bdump\opext_ora_8240.trc
    Tue Jul 31 08:01:03 2012
    ORACLE V10.2.0.4.0 - 64bit Production vsnsta=0
    vsnsql=14 vsnxtr=3
    Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
    Windows NT Version V5.2 Service Pack 2
    CPU : 8 - type 8664, 1 Physical Cores
    Process Affinity : 0x0000000000000000
    Memory (Avail/Total): Ph:18773M/32767M, Ph+PgF:66964M/80966M
    Instance name: opext
    Redo thread mounted by this instance: 1
    Oracle process number: 0
    Windows thread id: 8240, image: ORACLE.EXE
    ORA-00020: maximum number of processes 1000 exceeded
    Died during process startup with error 20 (seq=212441)
    OPIRIP: Uncaught error 20. Error stack:
    ORA-00020: maximum number of processes (1000) exceededThis was the first time in three years that happened an incident like this. Due my Windows server allows me to setup processes and sessions with a very high value, I did it when configuring this database for the first time.
    select resource_name,initial_allocation, limit_value from V$RESOURCE_LIMIT;
    RESOURCE_NAME     INITIAL_ALLOCATION     LIMIT_VALUE
    processes     1000     1000
    sessions     1105     1105
    transactions     1215     UNLIMITEDI would like to know what application or process made that my database exceeds 1000 processes. I read that one possiblity is that there's a web app that open many connections to database and doesn't close them.
    In my listener.log, I got this at 08:05 am:
    31-JUL-2012 08:05:41 * service_update * opext * 0
    31-JUL-2012 08:05:47 * (CONNECT_DATA=(SERVICE_NAME=opext)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVXXX)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=36578)) * establish * opext * 0
    31-JUL-2012 08:05:47 * service_update * opext * 0
    31-JUL-2012 08:05:47 * (CONNECT_DATA=(SERVICE_NAME=opext)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVXXX)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=36579)) * establish * opext * 0
    31-JUL-2012 08:05:47 * (CONNECT_DATA=(SERVICE_NAME=opext)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVXXX)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=36580)) * establish * opext * 0
    31-JUL-2012 08:05:47 * (CONNECT_DATA=(SERVICE_NAME=opext)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVXXX)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=36581)) * establish * opext * 0
    31-JUL-2012 08:05:47 * (CONNECT_DATA=(SERVICE_NAME=opext)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVXXX)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=36582)) * establish * opext * 0
    31-JUL-2012 08:05:47 * (CONNECT_DATA=(SERVICE_NAME=opext)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVXXX)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=36583)) * establish * opext * 0
    31-JUL-2012 08:05:47 * (CONNECT_DATA=(SERVICE_NAME=opext)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVXXX)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=36584)) * establish * opext * 12518
    TNS-12518: TNS:listener could not hand off client connection
    TNS-12560: TNS:protocol adapter error
    Host SRVXXX is a server where a web app is and 192.168.1.1 is our firewall. May I think that this server was the one that made so many connections?
    I checked alert.log, trc file and listener.log. What else can I check to determine what was the cause of this incident?

    user521219 wrote:
    Host SRVXXX is a server where a web app is and 192.168.1.1 is our firewall. May I think that this server was the one that made so many connections?
    I checked alert.log, trc file and listener.log. What else can I check to determine what was the cause of this incident?check IIS logs
    It could result from Denial of Service attack or trojan or virus infecting webserver

  • ORA-00018 maximum number of session

    Hello:
    We have a strange problem with a sql statement that when is invoked inside a php or asp program generates the following error:
    ORA-00018 maximum number of session
    We are using Oracle 9i installed over Red Hat with IIS 5.0. This query works fine in sqlplus. The query is:
    select * from vnoticias_p WHERE contains(titulo, '" . $nom . "') &gt; 0
    titulo is a context type index formed with two concatenated fields.
    The problem had caused serious problems for us, because hangs our server every time the script is being executed.
    We ran this script only with one user connected, and we don´t understand how this query generates too many sessions?
    Appreciate your help
    Thanks

    Thanks for update.
    It is supposed that PROCESSES is the default value during installation. I don't know what is the default PROCESSES value of Oracle 11g in Solaris 10. Can you tell me so that I can correct SESSIONS?
    During Oracle 11g installation on Solaris 10, why did I get the following errors?
    ORA-12801: error signaled in parallel query server P072
    ORA-00018: maximum number of sessions exceeded
    ORA-06512: at "SYS.UTL_RECOMP", line 629
    ORA-06512: at "SYS.UTL_RECOMP", line 671
    ORA-06512: at line 1
    What is the best method to solve the above problem for Oracle 11g installation?
    SPFILE can not be modified manually. "ALTER SYSTEM " is one way. When I create another new Oracle instance, new Oralce instance uses the default PREOCESSES value or new PROCESSES value which I changed by "alter system"?
    Thanks,
    Jerry

  • ORA-00020: maximum number of processes (500) exceeded

    Problem Details:
    In our Database we are getting huge number of open connection from remote system.
    Let say, our application A and remote application name is B.
    Some common users of application A are USER0, USER1, USER2.
    Remote Application B uses USER0 to create views on application A's table through Database Link.
    Those views (nearly 100) are accessed in application B at several places from the Java code.
    Since those views are getting called almost all the times from the application B's code, DB link is in use almost all the time - holding many number of connections (check the first row of the query output).
    Many times the open connections remaining high and any other application, users trying to connect to application A,
    getting the ORA-00020 error.
    Note :
    1. Application B is very old application and does not use open DB link or close DB link.
    2. Application B tried with "alter session close Database link xxx", it decrease the number of open connection but its degrading the performance of application B at large scale.
    3. To cope up with this problem Application A recently incraesed the parameter process=500, but not sure if this limit can also be broken through Application B
    Questions/Doubts:
    1) What is best approach to handle this problem??
    'alter session close database link xxx' is the only option from application B's point ??
    What other approach can be taken??
    2) We are not sure the risk associated with increasing the process parameter value ??
    Appreciate your suggestion !!
    SQL>conn / as sysdba
    SQL> select substr(username,1,8),
           substr(machine,1,11),
           substr(module,1,40),
           substr(osuser,1,7),
           status,
           count(1)
      from v$session
      group by username, machine, module, osuser, status;
    USERNAME MACHINE     STATUS                        OSUSER     COUNT(1)
    USER0    remotedb9      INACTIVE                              oracle        450
    USER1    app_dev        INACTIVE                              beaadmin        1
    USER0    svr01test      ACTIVE                                bdgp_dev        1
    USER1    app_test       INACTIVE                              bbk09           2
    USER0    app_dev        ACTIVE                                dj0494          1
    USER1    app_test       INACTIVE                              pd0269          2
    USER2    app_test       INACTIVE                              oracle         12
    USER0    app_dev        ACTIVE                                oracle          2
    USER2    app_test       INACTIVE                              www             8
    USER2    dbr9db01       ACTIVE                                oracle          2
    USER2    svr01dv        INACTIVE                              bdgp_dev        1
    USER0    app_dev        INACTIVE                              scott           3
    USER2    app_test       INACTIVE                              clerk           2
    USER2    moose          ACTIVE                                john            2
    USER2    titan.homer    INACTIVE                              voipdu          1
    NEWUSER  floradbdv1     INACTIVE                              oracle          8
    SYS      app_test       ACTIVE                                oracle          1
    20 rows selected.
    SQL>conn USER0@csmip_st
    Enter password:
    ERROR:
    ORA-00020: maximum number of processes (500) exceeded
    Warning: You are no longer connected to ORACLE.

    semmsl in Linux tells what the max number of processes are. You have to make sure this is equal to the process parameter of all instances plus 10.
    It is usually in /etc/sysctl.conf
    kernel.sem = 250 32000 100 128
    SEMMSL
    The SEMMSL kernel parameter is used to control the maximum number of semaphores per semaphore set.
    Oracle recommends setting SEMMSL to the largest PROCESS instance parameter setting in the init.ora file for all databases hosted on the Linux system plus 10. Also, Oracle recommends setting the SEMMSL to a value of no less than 100.
    SEMMNI
    The SEMMNI kernel parameter is used to control the maximum number of semaphore sets on the entire Linux system.
    Oracle recommends setting the SEMMNI to a value of no less than 100.
    SEMMNS
    The SEMMNS kernel parameter is used to control the maximum number of semaphores (not semaphore sets) on the entire Linux system.
    Oracle recommends setting the SEMMNS to the sum of the PROCESSES instance parameter setting for each database on the system, adding the largest PROCESSES twice, and then finally adding 10 for each Oracle database on the system. To summarize:
    SEMMNS = sum of PROCESSES setting for each database on the system
    + ( 2 * [largest PROCESSES setting])
    + (10 * [number of databases on system]
    To determine the maximum number of semaphores that can be allocated on a Linux system, use the following calculation. It will be the lesser of:
    SEMMNS -or- (SEMMSL * SEMMNI)
    SEMOPM
    The SEMOPM kernel parameter is used to control the number of semaphore operations that can be performed per semop system call.
    The semop system call (function) provides the ability to do operations for multiple semaphores with one semop system call. A semaphore set can have the maximum number of SEMMSL semaphores per semaphore set and is therefore recommended to set SEMOPM equal to SEMMSL.
    Oracle recommends setting the SEMOPM to a value of no less than 100.
    App B could try using connection pooling or something to reduce the number of connections to the DB.

  • ORA-00020: maximum number of processes (25) exceeded ... uh?

    Hello,
    I'm trying to run a distributed simulation (13 programs x host,
    16 hosts) that uses oracle (normally in an HP) against oracle on
    linux.
    I can't start all the programs, after about 20 clients (+-) no
    other program will come up, and if i try to log to oracle with
    sqlplus i get:
    ERROR:
    ORA-00020: maximum number of processes (25) exceeded
    Is this a static limit imposed in the version oracle is
    distributing for testing purposes?
    Also, i notice that one server process is started for each client
    program. So the distributed version doesn't support multithreaded
    servers? Or may be i configured it wrong?
    -cristian
    null

    Cristian Ferretti (guest) wrote:
    : Oleg (guest) wrote:
    : : : ORA-00020: maximum number of processes (25) exceeded
    : : ------>Check PROCESSES= line in you init<SID>.ora file. After
    : you
    : : change it, you have to restart database.
    : : : Also, i notice that one server process is started for each
    : : client
    : : : program.
    : : -----> Check the following parameters in the same file:
    : : mts_dispatchers, mts_max_dispatchers, mts_servers,
    : : mts_max_servers, mts_multiple_listeners, mts_listener_address
    : processes=400
    : mts_dispatchers="tcp,16"
    : mts_dispatchers="ipc,1"
    : mts_max_dispatchers=32
    : mts_servers=16
    : mts_max_servers=32
    : mts_service=oralinux
    : sessions=384
    : Copyed them from the hp oracle config.
    : but:
    : [oralinux@toaster dbs]$ svrmgrl
    : Oracle Server Manager Release 3.0.5.0.0 - Production
    : (c) Copyright 1997, Oracle Corporation. All Rights Reserved.
    : Oracle8 Release 8.0.5.0.0 - Production
    : PL/SQL Release 8.0.5.0.0 - Production
    : SVRMGR> connect internal
    : Connected.
    : SVRMGR> startup
    : ORA-00101: invalid specification for system parameter
    : MTS_DISPATCHERS
    : ORA-00102: network protocol
    (ADDRESS=(PARTIAL=YES)(PROTOCOL=tcp))
    : cannot be used by dispatchers
    : SVRMGR>
    Erase all MTS_%
    parameters from your init.ora files and try only with
    processes=xxx
    null

  • Db server doesn't start. Error message: ORA-00020: maximum number of proces

    After I changed the parameter from archive log mode. My db server is having problems.
    I can't log in as sys using sqlplus. when I log in through sqlplus /nolog, and tried to shut down, here is the error message:
    $ sqlplus /nolog
    SQL*Plus: Release 10.1.0.3.0 - Production on Mon Apr 23 11:43:07 2007
    Copyright (c) 1982, 2004, Oracle. All rights reserved.
    SQL> connect / as sysdba
    Connected to an idle instance.
    SQL> shutdown immediate
    ORA-24324: service handle not initialized
    ORA-24323: value not allowed
    ORA-00020: maximum number of processes (%s) exceeded
    SQL>
    I am stuck on this. i have changed the value of processes in init.ora, but this error still exists. i think I need to do: create spfile from pfile='init.ora', but I need to log in to do, but I can't log in sys.
    Please help.
    Thanks.

    i forgot shutdown abort. used that, created spfile from pfile, and it works ok now.

  • ASM issue ORA-00020: maximum number of processes (%s) exceeded (DBD ERROR)

    Hi All,
    i am running 10.2.0.3 with ASM (10.2.0.3) on SunOS (solaris 5.9)
    +ASM1> ps -ef | grep pmon
    oraunity  6174     1   0   Jan 01 ?         298:37 ora_pmon_UNITYQ1
    oraunity  6480     1   0   Dec 31 ?          84:21 asm_pmon_+ASM1
    oraunity  6085     1   0   Mar 09 ?         127:05 ora_pmon_UNIINFQ1
    oraunity 11442     1   0   Jan 01 ?         253:54 ora_pmon_UNIDWHQ1One of rdbms instanace UNIINFQ1 got some failuer due to archival error 'ORA-00257:Archiver error:connect internal only:until freed.'
    To drill down that, i tried to log in to +ASM1 instance to see space utilization under ARCH destination
    SQL> show parameter db_name
    NAME                                 TYPE        VALUE
    db_name                              string      UNIINFQ1
    log_archive_dest                     string      +UNITY_DG1/UNIINFQ1/archi tried following to log in to +ASM1
    UNITYQ1> export ORACLE_SID=+ASM1
    +ASM1> echo $ORACLE_SID
    +ASM1
    +ASM1> export ORACLE_HOME=/unity-rc001-q/ora01/app/oracle/product/10.2.0/asm10g
    +ASM1> echo $ORACLE_HOME
    /unity-rc001-q/ora01/app/oracle/product/10.2.0/asm10g
    +ASM1> sqlplus / as sysdba
    SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jun 10 00:44:35 2009
    Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
    Connected.
    SQL> select * from v$instance;
    select * from v$instance
    ERROR at line 1:
    ORA-01012: not logged onthen i did following
    +ASM1> asmcmd
    ORA-00020: maximum number of processes (%s) exceeded (DBD ERROR: OCISessionBegin)
    [oraunity] mhs-clust5-qa:/unity-rc001-q/ora01/app/oracle/admin/UNIINFQ1/bdump:i have also noticed high number of BEQUETH connections to +ASM1 instance
    +ASM1> ps -ef | grep +ASM1
    oraunity  6486     1   0   Dec 31 ?         193:20 asm_lmon_+ASM1
    oraunity  6533     1   0   Dec 31 ?          11:49 asm_ckpt_+ASM1
    oraunity  6482     1   0   Dec 31 ?         108:29 asm_diag_+ASM1
    oraunity  6527     1   0   Dec 31 ?           9:28 asm_mman_+ASM1
    oraunity  6210     1   0   Mar 09 ?           8:03 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  6484     1   0   Dec 31 ?           7:40 asm_psp0_+ASM1
    oraunity  6488     1   0   Dec 31 ?         221:17 asm_lmd0_+ASM1
    oraunity  6480     1   0   Dec 31 ?          84:21 asm_pmon_+ASM1
    oraunity  6529     1   0   Dec 31 ?           8:42 asm_dbw0_+ASM1
    oraunity  6535     1   0   Dec 31 ?           6:45 asm_smon_+ASM1
    oraunity  6523     1   0   Dec 31 ?         241:24 asm_lms0_+ASM1
    oraunity  6531     1   0   Dec 31 ?           9:22 asm_lgwr_+ASM1
    oraunity  6537     1   0   Dec 31 ?           9:03 asm_rbal_+ASM1
    oraunity  6539     1   0   Dec 31 ?          14:36 asm_gmon_+ASM1
    oraunity  6575     1   0   Dec 31 ?          45:59 asm_lck0_+ASM1
    oraunity  6328     1   0   Jan 01 ?          15:08 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  7866     1   0 16:09:10 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  6941     1   0 16:24:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 11553     1   0   Jan 01 ?          42:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  5010     1   0 16:23:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  1171     1   0 16:21:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 26147     1   0 16:18:49 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 17948     1   0 16:14:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 16097     1   0 16:13:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 19867     1   0 16:15:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 14221     1   0 16:12:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 25640  4784   0 02:36:15 pts/4       0:00 grep +ASM1
    oraunity  8513     1   0 16:09:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 23732     1   0 16:17:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  7864     1   0 16:09:09 ?           0:19 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  3109     1   0 16:22:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 27439     1   0 16:19:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 10400     1   0 16:10:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity  5588     1   0 16:23:49 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 16667     1   0 16:13:48 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 21832     1   0 16:16:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 12308     1   0 16:11:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 29330     1   0 16:20:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oraunity 25581     1   0 16:18:30 ?           0:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))Can anyone help me to solve this issue without shutting down +ASM1. (this instance is used by rest 3 databases as well..so down time is not feasible)
    Regards,
    Bhavik Desai

    You should check alert log file on database like Alex told you.
    And please post Error ;)
    But If You can access +ASM, Or ...by the way... if you stop database ... try to check ASM diskgroup.
    $ export ORACLE_SID=+ASM1
    $ sqlplus / as sysdba
    SQL> set lines 130
    SQL> set pages 10000
    SQL> select NAME, TOTAL_MB, FREE_MB from v$asm_diskgroup;
    If your DISKGROUPs for archivelog on DB full... backup or delete them
    (please start database mount mode)
    $ export ORACLE_SID=DB1
    $ sqlplus / as sysdba
    SQL> startup mount;
    SQL> show parameter log_archive_dest
    backup archivelog
    $ rman target /
    RMAN> backup ARCHIVELOG ALL DELETE INPUT format 'ARCH_%d_%U' ;
    or delete
    $ rman target /
    RMAN> delete ARCHIVELOG ALL ;
    After that ...
    $ sqlplus / as sysdba
    SQL> alter database open
    This justs my suggestion, if your database has the problem with ASM diskgroup full ... because archvielog...
    By the way... please post your result from ASM query and alert log file
    Good Luck

  • ORA 01792 maximum number of columns in a table or view is 1000

    Hello every1, I wish to register a large xmlschema doc, I am using the command
    begin
    dbms_xmlschema.registerschema(
    schemaurl=>'xxxx',
    schemadoc=>bfilename('XMLDIR','xxxxxx.xsd'),
    csid=>nls_charset_id('AL32UTF8'));
    end;
    But the schema file exists 1000 col and it gives me the error msg of
    ORA-01792: maximum number of columns in a table or view is 1000
    is there anyway to solve the problems without edit the original schema document?
    Thanks for your help

    First create this package
    create or replace package XDB_ANALYZE_XMLSCHEMA_10200
    authid CURRENT_USER
    as
      function analyzeStorageModel(P_COMPLEX_TYPE_NAME VARCHAR2) return XMLTYPE;
      function analyzeComplexType(COMPLEX_TYPE VARCHAR2) return XMLTYPE;
      procedure renameCollectionTable (XMLTABLE varchar2, XPATH varchar2, COLLECTION_TABLE_PREFIX varchar2);
      function printNestedTables(XML_TABLE varchar2) return XMLType;
      function getComplexTypeElementList(P_SQLTYPE VARCHAR2, P_SQLSCHEMA VARCHAR2) return XDB.XDB$XMLTYPE_REF_LIST_T;
      procedure scopeXMLReferences;
      procedure indexXMLReferences(INDEX_NAME VARCHAR2);
      function generateSchemaFromTable(P_TABLE_NAME varchar2, P_OWNER varchar2 default USER) return XMLTYPE;
      function showSQLTypes(schemaFolder varchar2) return XMLType;
      function generateCreateTableStatement(XML_TABLE_NAME varchar2, NEW_TABLE_NAME varchar2) return CLOB;
    end XDB_ANALYZE_XMLSCHEMA_10200;
    show errors
    create or replace package body XDB_ANALYZE_XMLSCHEMA_10200
    as
    G_DEPTH_COUNT NUMBER(2) := 0;
    TYPE BASETYPE_T is RECORD  
      SUBTYPE               varchar2(128),
      SUBTYPE_OWNER         varchar2(32),
      BASETYPE              varchar2(128),
      BASETYPE_OWNER        varchar2(32)
    TYPE BASETYPE_LIST_T IS TABLE OF BASETYPE_T;
    BASETYPE_LIST            BASETYPE_LIST_T := BASETYPE_LIST_T();
    function findStorageModel(P_TYPE_NAME VARCHAR2, P_TYPE_OWNER VARCHAR2,  P_INCLUDE_SUBTYPES VARCHAR2 DEFAULT 'YES') return XMLType;
    function getLocalAttributes(P_TYPE_NAME varchar2, P_TYPE_OWNER VARCHAR2) return XMLType;
    function makeElement(P_NAME varchar2)
    return xmltype
    as
      V_NAME varchar2(4000) := P_NAME;
    begin
      -- -- dbms_output.put_line('Processing : ' || P_NAME);
      if (P_NAME LIKE '%$') then
        V_NAME := SUBSTR(V_NAME,1,LENGTH(V_NAME) - 1);
      end if;
      if (P_NAME LIKE '%$%') then
        V_NAME := REPLACE(V_NAME,'$','_0x22_');
      end if;
      return XMLTYPE( '<' || V_NAME || '/>');
    end;
    function getPathToRoot(SUBTYPE VARCHAR2, SUBTYPE_OWNER VARCHAR2)
    return varchar2
    as
      TYPE_HIERARCHY varchar2(4000);
    begin
       SELECT sys_connect_by_path( OWNER || '.' || TYPE_NAME , '/')
         INTO TYPE_HIERARCHY
         FROM ALL_TYPES
        WHERE TYPE_NAME = SUBTYPE
          AND OWNER = SUBTYPE_OWNER
              CONNECT BY SUPERTYPE_NAME = PRIOR TYPE_NAME
                     AND SUPERTYPE_OWNER = PRIOR OWNER
              START WITH SUPERTYPE_NAME IS NULL
                     AND SUPERTYPE_OWNER IS NULL;
       return TYPE_HIERARCHY;
    end;
    function expandSQLType(ATTR_NAME VARCHAR2, SUBTYPE VARCHAR2, SUBTYPE_OWNER VARCHAR2)
    return XMLType
    as
      STORAGE_MODEL       XMLTYPE;
      ATTRIBUTES          XMLTYPE;
      EXTENDED_TYPE       XMLTYPE;
      ATTR_COUNT          NUMBER := 0;
      CURSOR FIND_EXTENDED_TYPES
      is
      select TYPE_NAME, OWNER
        from ALL_TYPES
       where SUPERTYPE_NAME  = SUBTYPE
         and SUPERTYPE_OWNER = SUBTYPE_OWNER;
    begin
      -- dbms_output.put_line('Processing SQLType  : "' || SUBTYPE_OWNER || '.' || SUBTYPE || '".' );
      STORAGE_MODEL := makeElement(ATTR_NAME);
      select insertChildXML(STORAGE_MODEL,'/' || STORAGE_MODEL.getRootElement(),'@type',SUBTYPE)
        into STORAGE_MODEL
        from dual;
      select insertChildXML(STORAGE_MODEL,'/' || STORAGE_MODEL.getRootElement(),'@typeOwner',SUBTYPE_OWNER)
        into STORAGE_MODEL
        from dual;
      ATTRIBUTES := getLocalAttributes(SUBTYPE, SUBTYPE_OWNER);         
      ATTR_COUNT := ATTR_COUNT + ATTRIBUTES.extract('/' || ATTRIBUTES.getRootElement() || '/@columns').getNumberVal();
      select appendChildXML(STORAGE_MODEL,'/' || STORAGE_MODEL.getRootElement(),ATTRIBUTES)
        into STORAGE_MODEL        
        from DUAL;
      for t in FIND_EXTENDED_TYPES loop
         EXTENDED_TYPE := expandSQLType('ExtendedType',T.TYPE_NAME,T.OWNER);
         ATTR_COUNT := ATTR_COUNT + EXTENDED_TYPE.extract('/' || EXTENDED_TYPE.getRootElement() || '/@columns').getNumberVal();
         select appendChildXML(STORAGE_MODEL,'/' || STORAGE_MODEL.getRootElement(),EXTENDED_TYPE)
           into STORAGE_MODEL
           from DUAL;   
      end loop;
      select insertChildXML(STORAGE_MODEL,'/' || STORAGE_MODEL.getRootElement(),'@columns',ATTR_COUNT)
        into STORAGE_MODEL
        from dual;
      return STORAGE_MODEL;
    end;
    function getLocalAttributes(P_TYPE_NAME varchar2, P_TYPE_OWNER VARCHAR2)
    return XMLType
    as
      V_ATTRIBUTE_COUNT     NUMBER := 0;
      V_TOTAL_ATTRIBUTES    NUMBER := 0;
      V_TEMP_RESULT         NUMBER;
      V_COLLECTION_TYPE     varchar2(32);
      V_COLLECTION_OWNER    varchar2(32);
      CURSOR FIND_CHILD_ATTRS
      is
      select ATTR_NAME, ATTR_TYPE_OWNER, ATTR_TYPE_NAME, INHERITED
        from ALL_TYPE_ATTRS
       where TYPE_NAME = P_TYPE_NAME
         and OWNER = P_TYPE_OWNER
         and INHERITED = 'NO'
       order by ATTR_NO;       
      V_ATTR                    DBMS_XMLDOM.DOMATTR;
      V_ATTRIBUTE_LIST      XMLTYPE;
      V_ATTRIBUTE_LIST_DOCUMENT DBMS_XMLDOM.DOMDOCUMENT;
      V_ATTRIBUTE_LIST_ROOT     DBMS_XMLDOM.DOMELEMENT;
      V_ATTRIBUTE           XMLTYPE;
      V_ATTRIBUTE_DOCUMENT                DBMS_XMLDOM.DOMDOCUMENT;
      V_ATTRIBUTE_ROOT                    DBMS_XMLDOM.DOMELEMENT;
      V_TYPE_DEFINITION     XMLTYPE;
      V_TYPE_DEFINITION_DOCUMENT  DBMS_XMLDOM.DOMDOCUMENT;
      V_TYPE_DEFINITION_ROOT      DBMS_XMLDOM.DOMELEMENT;
    begin    
      V_ATTRIBUTE_LIST          := makeElement('Attributes');
      V_ATTRIBUTE_LIST_DOCUMENT := DBMS_XMLDOM.NEWDOMDOCUMENT(V_ATTRIBUTE_LIST);
      V_ATTRIBUTE_LIST_ROOT     := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_ATTRIBUTE_LIST_DOCUMENT);
      for ATTR in FIND_CHILD_ATTRS loop
        -- Finding Element / Attribute Name could be tricky. Use SQLName
        V_ATTRIBUTE          := makeElement(ATTR.ATTR_NAME);
        V_ATTRIBUTE_DOCUMENT := DBMS_XMLDOM.NEWDOMDOCUMENT(V_ATTRIBUTE);
        V_ATTRIBUTE_ROOT     := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_ATTRIBUTE_DOCUMENT);
        begin
          -- Check for Attributes based on collection types, With Nested Table storage each Collection will cost 2 columns.
          select ELEM_TYPE_NAME, ELEM_TYPE_OWNER
            into V_COLLECTION_TYPE, V_COLLECTION_OWNER
            from ALL_COLL_TYPES
           where TYPE_NAME = ATTR.ATTR_TYPE_NAME
             and OWNER = ATTR.ATTR_TYPE_OWNER;
          -- -- dbms_output.put_line('Adding "' || ATTR.ATTR_NAME || '". Collection of "' || ATTR.ATTR_TYPE_OWNER || '"."' || ATTR.ATTR_TYPE_NAME || '".');
          -- Attribute is a Collection Type.
          -- Collection will be managed as a NESTED TABLE
          -- Each Collection cost 2 columns.
          -- May want to count the number of columns in the NESTED_TABLE at a later date.
          V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'SQLCollType');
                         DBMS_XMLDOM.SETVALUE(V_ATTR,ATTR.ATTR_TYPE_NAME);
          V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
          V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'SQLCollTypeOwner');
                         DBMS_XMLDOM.SETVALUE(V_ATTR,ATTR.ATTR_TYPE_OWNER);
          V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
          V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'SQLType');
                         DBMS_XMLDOM.SETVALUE(V_ATTR,V_COLLECTION_TYPE);
          V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
          V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'SQLTypeOwner');
                         DBMS_XMLDOM.SETVALUE(V_ATTR,V_COLLECTION_OWNER);
          V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
          V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'columns');
                         DBMS_XMLDOM.SETVALUE(V_ATTR,2);
          V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
        exception
          when no_data_found then
            -- Attribute is not a collection type.
            begin
              -- Check for Attributes based on non-scalar types.
              select 1
                into V_TEMP_RESULT
                from ALL_TYPES
               where TYPE_NAME = ATTR.ATTR_TYPE_NAME
                 and OWNER = ATTR.ATTR_TYPE_OWNER;
              -- Attribute is based on a non-scalar type. Find the Storage Model for this type.
              V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'SQLType');
                             DBMS_XMLDOM.SETVALUE(V_ATTR,ATTR.ATTR_TYPE_NAME);
              V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
              V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'SQLTypeOwner');
                             DBMS_XMLDOM.SETVALUE(V_ATTR,ATTR.ATTR_TYPE_OWNER);
              V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
              V_TYPE_DEFINITION            := findStorageModel(ATTR.ATTR_TYPE_NAME, ATTR.ATTR_TYPE_OWNER, 'YES');   
              V_TYPE_DEFINITION_DOCUMENT   := DBMS_XMLDOM.NEWDOMDOCUMENT(V_TYPE_DEFINITION);
              V_TYPE_DEFINITION_ROOT       := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_TYPE_DEFINITION_DOCUMENT);
              V_ATTRIBUTE_COUNT            := DBMS_XMLDOM.GETATTRIBUTE(V_TYPE_DEFINITION_ROOT,'columns');
              V_TYPE_DEFINITION_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_ATTRIBUTE_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION_ROOT),TRUE));
              V_TYPE_DEFINITION_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_ROOT),DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION_ROOT)));
              DBMS_XMLDOM.FREEDOCUMENT(V_TYPE_DEFINITION_DOCUMENT);
              if (ATTR.ATTR_TYPE_NAME = 'XDB$ENUM_T' and ATTR.ATTR_TYPE_OWNER = 'XDB') then
                -- The cost of a XDB$ENUM_T is 2 columns
                V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'columns');
                               DBMS_XMLDOM.SETVALUE(V_ATTR,2);
                V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
              else
                -- The cost of a non scalar Type is the number of attributes plus one for Type and one for the TYPEID.
                V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'columns');
                               DBMS_XMLDOM.SETVALUE(V_ATTR,V_ATTRIBUTE_COUNT + 2);
                V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
              end if;
            exception
              when no_data_found then
                 -- Attribute is based on a scalar type
                 V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'SQLType');
                                DBMS_XMLDOM.SETVALUE(V_ATTR,ATTR.ATTR_TYPE_NAME);
                 V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
                 V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_DOCUMENT,'columns');
                                DBMS_XMLDOM.SETVALUE(V_ATTR,1);
                 V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_ROOT,V_ATTR);
            end;
        end;
        V_TOTAL_ATTRIBUTES     := V_TOTAL_ATTRIBUTES + DBMS_XMLDOM.GETATTRIBUTE(V_ATTRIBUTE_ROOT,'columns');
        V_ATTRIBUTE_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_ATTRIBUTE_LIST_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_ROOT),TRUE));
        V_ATTRIBUTE_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_LIST_ROOT),DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_ROOT)));
        DBMS_XMLDOM.FREEDOCUMENT(V_ATTRIBUTE_DOCUMENT);
        if (V_TOTAL_ATTRIBUTES > 25000) then
          exit;
        end if;
      end loop;
      V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_ATTRIBUTE_LIST_DOCUMENT,'columns');
                     DBMS_XMLDOM.SETVALUE(V_ATTR,V_TOTAL_ATTRIBUTES);
      V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ATTRIBUTE_LIST_ROOT,V_ATTR);
      return V_ATTRIBUTE_LIST;
    end;
    function getSubTypes(P_TYPE_NAME VARCHAR2, P_TYPE_OWNER VARCHAR2)
    return XMLType
    as
      CURSOR FIND_SUBTYPES
      is
      select TYPE_NAME, OWNER
        from ALL_TYPES
       where SUPERTYPE_NAME  = P_TYPE_NAME
         and SUPERTYPE_OWNER = P_TYPE_OWNER; 
      CURSOR FIND_SUBTYPE_HEIRARCHY
      is
      select LEVEL, TYPE_NAME, OWNER
        from ALL_TYPES
       where TYPE_NAME <> P_TYPE_NAME
         and OWNER <> P_TYPE_OWNER
             connect by SUPERTYPE_NAME = PRIOR TYPE_NAME
                    and SUPERTYPE_OWNER = PRIOR OWNER
             start with TYPE_NAME = P_TYPE_NAME
                    and OWNER = P_TYPE_OWNER;
      V_SUBTYPE_LIST                 XMLType;
      V_SUBTYPE_LIST_DOCUMENT        DBMS_XMLDOM.DOMDOCUMENT;
      V_SUBTYPE_LIST_ROOT            DBMS_XMLDOM.DOMELEMENT;
      V_TYPE_DEFINITION              XMLType;
      V_TYPE_DEFINITION_DOCUMENT     DBMS_XMLDOM.DOMDOCUMENT;
      V_TYPE_DEFINITION_ROOT         DBMS_XMLDOM.DOMELEMENT;
      V_SUBTYPE_DEFINITIONS          XMLType;
      V_SUBTYPE_DEFINITIONS_DOCUMENT DBMS_XMLDOM.DOMDOCUMENT;
      V_SUBTYPE_DEFINITIONS_ROOT     DBMS_XMLDOM.DOMELEMENT;
      V_ATTRIBUTE_LIST               XMLType;
      V_ATTRIBUTE_LIST_DOCUMENT      DBMS_XMLDOM.DOMDOCUMENT;
      V_ATTRIBUTE_LIST_ROOT          DBMS_XMLDOM.DOMELEMENT;
      V_SUBTYPES_EXIST               BOOLEAN := FALSE;
      V_TOTAL_columns                number;
      V_ATTRIBUTE_COUNT              number;
      V_ATTR                         DBMS_XMLDOM.DOMATTR;
      V_COMPLEX_TYPE                 VARCHAR2(256);
    begin
      V_SUBTYPE_LIST          := makeElement('SubTypeDefinitions');
      V_SUBTYPE_LIST_DOCUMENT := DBMS_XMLDOM.NEWDOMDOCUMENT(V_SUBTYPE_LIST);
      V_SUBTYPE_LIST_ROOT     := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_SUBTYPE_LIST_DOCUMENT);
      V_TOTAL_columns := 0;
      for t in FIND_SUBTYPES() loop
        V_SUBTYPES_EXIST  := TRUE;
        V_TYPE_DEFINITION            := makeElement(t.TYPE_NAME);
        V_TYPE_DEFINITION_DOCUMENT   := DBMS_XMLDOM.NEWDOMDOCUMENT(V_TYPE_DEFINITION);
        V_TYPE_DEFINITION_ROOT       := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_TYPE_DEFINITION_DOCUMENT);
        V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_TYPE_DEFINITION_DOCUMENT,'SQLTypeOwner');
                       DBMS_XMLDOM.SETVALUE(V_ATTR,t.OWNER);
        V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_TYPE_DEFINITION_ROOT,V_ATTR);
        begin
          select x.XMLDATA.NAME
            into V_COMPLEX_TYPE
            from XDB.XDB$COMPLEX_TYPE x
           where x.XMLDATA.SQLTYPE = t.TYPE_NAME
             and x.XMLDATA.SQLSCHEMA = t.OWNER;
          V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_TYPE_DEFINITION_DOCUMENT,'type');
                         DBMS_XMLDOM.SETVALUE(V_ATTR,V_COMPLEX_TYPE);
          V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_TYPE_DEFINITION_ROOT,V_ATTR);
          -- Consider adding Schema URL Attribute
        exception
          when no_data_found then
            null;
          when others then
            raise;
        end;
        V_ATTRIBUTE_LIST            := getLocalAttributes(t.TYPE_NAME, t.OWNER);  
        V_ATTRIBUTE_LIST_DOCUMENT   := DBMS_XMLDOM.NEWDOMDOCUMENT(V_ATTRIBUTE_LIST);
        V_ATTRIBUTE_LIST_ROOT       := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_ATTRIBUTE_LIST_DOCUMENT);
        V_ATTRIBUTE_COUNT           := DBMS_XMLDOM.GETATTRIBUTE(V_ATTRIBUTE_LIST_ROOT,'columns');
        V_ATTRIBUTE_LIST_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_TYPE_DEFINITION_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_LIST_ROOT),TRUE));
        V_ATTRIBUTE_LIST_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION_ROOT),DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_LIST_ROOT)));
        DBMS_XMLDOM.FREEDOCUMENT(V_ATTRIBUTE_LIST_DOCUMENT);
        V_SUBTYPE_DEFINITIONS       := getSubTypes(t.TYPE_NAME,t.OWNER);
        if (V_SUBTYPE_DEFINITIONS is not NULL) then
          V_SUBTYPE_DEFINITIONS_DOCUMENT   := DBMS_XMLDOM.NEWDOMDOCUMENT(V_SUBTYPE_DEFINITIONS);
          V_SUBTYPE_DEFINITIONS_ROOT       := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_SUBTYPE_DEFINITIONS_DOCUMENT);
          V_ATTRIBUTE_COUNT                := V_ATTRIBUTE_COUNT + DBMS_XMLDOM.GETATTRIBUTE(V_SUBTYPE_DEFINITIONS_ROOT,'columns');
          V_SUBTYPE_DEFINITIONS_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_TYPE_DEFINITION_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_SUBTYPE_DEFINITIONS_ROOT),TRUE));
          V_SUBTYPE_DEFINITIONS_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION_ROOT),DBMS_XMLDOM.MAKENODE(V_SUBTYPE_DEFINITIONS_ROOT)));
        end if;
        V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_TYPE_DEFINITION_DOCUMENT,'columns');
                       DBMS_XMLDOM.SETVALUE(V_ATTR,V_ATTRIBUTE_COUNT);
        V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_TYPE_DEFINITION_ROOT,V_ATTR);
        V_TYPE_DEFINITION_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_SUBTYPE_LIST_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION_ROOT),TRUE));
        V_TYPE_DEFINITION_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_SUBTYPE_LIST_ROOT),DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION_ROOT)));
        V_TOTAL_columns := V_TOTAL_columns + V_ATTRIBUTE_COUNT;
      end loop;
      if (V_SUBTYPES_EXIST) then
        V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_SUBTYPE_LIST_DOCUMENT,'columns');
                       DBMS_XMLDOM.SETVALUE(V_ATTR,V_TOTAL_columns);
        V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_SUBTYPE_LIST_ROOT,V_ATTR);
        return V_SUBTYPE_LIST;
      else
        return NULL;
      end if;
    end;
    function findSuperTypeModel(P_TYPE_NAME VARCHAR2, P_TYPE_OWNER VARCHAR2)
    return XMLType
    as
    begin
      -- dbms_output.put_line('Processing Super Type : "' || P_TYPE_OWNER || '"."' || P_TYPE_NAME || '"');
      return findStorageModel(P_TYPE_NAME, P_TYPE_OWNER,'NO');
    end;
    function getStorageModel(P_TYPE_NAME VARCHAR2, P_TYPE_OWNER VARCHAR2, P_INCLUDE_SUBTYPES VARCHAR2 DEFAULT 'YES')
    return XMLType
    as
      V_TYPE_DEFINITION      XMLTYPE;
      V_ATTRIBUTE_COUNT      NUMBER := 0;
      SUBTYPE_STORAGE_MODEL  XMLTYPE;
      V_SUPERTYPE_DEFINITION XMLTYPE;
      V_SUPERTYPE_DOCUMENT   DBMS_XMLDOM.DOMDOCUMENT;
      V_SUPERTYPE_ROOT       DBMS_XMLDOM.DOMELEMENT;
      V_SUBTYPE_DEFINITION XMLTYPE;
      V_SUBTYPE_DOCUMENT   DBMS_XMLDOM.DOMDOCUMENT;
      V_SUBTYPE_ROOT       DBMS_XMLDOM.DOMELEMENT;
      V_ATTRIBUTE_LIST          XMLTYPE;
      V_ATTRIBUTE_LIST_DOCUMENT DBMS_XMLDOM.DOMDOCUMENT;
      V_ATTRIBUTE_LIST_ROOT     DBMS_XMLDOM.DOMELEMENT;
      cursor FIND_SUPERTYPE_HEIRARCHY
      is
      select TYPE_NAME, OWNER
        from ALL_TYPES
       where TYPE_NAME <> P_TYPE_NAME
         and OWNER <> P_TYPE_OWNER
             connect by TYPE_NAME = PRIOR SUPERTYPE_NAME
                    and OWNER = PRIOR SUPERTYPE_OWNER
             start with TYPE_NAME = P_TYPE_NAME
                    and OWNER = P_TYPE_OWNER
       order by LEVEL;
      V_COMPLEX_TYPE        varchar2(256);
      V_SUPERTYPE_NAME      varchar2(256);
      v_SUPERTYPE_OWNER     varchar2(256);
      V_DOCUMENT            DBMS_XMLDOM.DOMDOCUMENT;
      V_ROOT                DBMS_XMLDOM.DOMELEMENT;
      V_ATTR                DBMS_XMLDOM.DOMATTR;
    begin
      -- dbms_output.put_line('Generating Storage Model for : "' || P_TYPE_OWNER || '"."' || P_TYPE_NAME || '"');
      V_TYPE_DEFINITION := makeElement(P_TYPE_NAME);
      V_DOCUMENT  := DBMS_XMLDOM.NEWDOMDOCUMENT(V_TYPE_DEFINITION);
      V_ROOT      := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_DOCUMENT);
      V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'SQLTypeOwner');
                     DBMS_XMLDOM.SETVALUE(V_ATTR,P_TYPE_OWNER);
      V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
      begin
        select x.XMLDATA.NAME
          into V_COMPLEX_TYPE
          from XDB.XDB$COMPLEX_TYPE x
         where x.XMLDATA.SQLTYPE = P_TYPE_NAME
           and x.XMLDATA.SQLSCHEMA = P_TYPE_OWNER;
        V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'type');
                       DBMS_XMLDOM.SETVALUE(V_ATTR,V_COMPLEX_TYPE);
        V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
        -- Consider adding Schema URL Attribute
      exception
        when no_data_found then
          null;
        when others then
          raise;
      end;
      select SUPERTYPE_NAME, SUPERTYPE_OWNER
        into V_SUPERTYPE_NAME, V_SUPERTYPE_OWNER
        from ALL_TYPES
       where TYPE_NAME = P_TYPE_NAME
         and OWNER = P_TYPE_OWNER;
      -- Process SuperType. 
      if (V_SUPERTYPE_NAME is not null) then
        V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'SQLParentType');
                       DBMS_XMLDOM.SETVALUE(V_ATTR,V_SUPERTYPE_NAME);
        V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
        V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'SQLParentTypeOwner');
                       DBMS_XMLDOM.SETVALUE(V_ATTR,V_SUPERTYPE_OWNER);
        V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
        -- Find the Definition for the super type. Do not include the definition of it's subtypes.
        V_SUPERTYPE_DEFINITION := findSuperTypeModel(V_SUPERTYPE_NAME, V_SUPERTYPE_OWNER);
        -- -- dbms_output.put_line(dbms_lob.substr(V_SUPERTYPE_DEFINITION.getClobVal(),1000,1));
        V_SUPERTYPE_DOCUMENT   := DBMS_XMLDOM.NEWDOMDOCUMENT(V_SUPERTYPE_DEFINITION);
        V_SUPERTYPE_ROOT       := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_SUPERTYPE_DOCUMENT);
        V_ATTRIBUTE_COUNT      := V_ATTRIBUTE_COUNT + DBMS_XMLDOM.GETATTRIBUTE(V_SUPERTYPE_ROOT,'columns');
        V_SUPERTYPE_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_SUPERTYPE_ROOT),TRUE));
        V_SUPERTYPE_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_ROOT),DBMS_XMLDOM.MAKENODE(V_SUPERTYPE_ROOT)));
        DBMS_XMLDOM.FREEDOCUMENT(V_SUPERTYPE_DOCUMENT);
      end if;
      -- Process Attributes defined directly by the Type.
      V_ATTRIBUTE_LIST            := getLocalAttributes(P_TYPE_NAME, P_TYPE_OWNER);  
      V_ATTRIBUTE_LIST_DOCUMENT   := DBMS_XMLDOM.NEWDOMDOCUMENT(V_ATTRIBUTE_LIST);
      V_ATTRIBUTE_LIST_ROOT       := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_ATTRIBUTE_LIST_DOCUMENT);
      V_ATTRIBUTE_COUNT           := V_ATTRIBUTE_COUNT + DBMS_XMLDOM.GETATTRIBUTE(V_ATTRIBUTE_LIST_ROOT,'columns');
      V_ATTRIBUTE_LIST_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_LIST_ROOT),TRUE));
      V_ATTRIBUTE_LIST_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_ROOT),DBMS_XMLDOM.MAKENODE(V_ATTRIBUTE_LIST_ROOT)));
      DBMS_XMLDOM.FREEDOCUMENT(V_ATTRIBUTE_LIST_DOCUMENT);
      if (P_INCLUDE_SUBTYPES = 'YES') then
        -- Process any Sub-Types...
        V_SUBTYPE_DEFINITION := getSubTypes(P_TYPE_NAME, P_TYPE_OWNER);
        if (V_SUBTYPE_DEFINITION is not null) then
          V_SUBTYPE_DOCUMENT   := DBMS_XMLDOM.NEWDOMDOCUMENT(V_SUBTYPE_DEFINITION);
          V_SUBTYPE_ROOT       := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_SUBTYPE_DOCUMENT);
          V_ATTRIBUTE_COUNT    := V_ATTRIBUTE_COUNT + DBMS_XMLDOM.GETATTRIBUTE(V_SUBTYPE_ROOT,'columns');
          V_SUBTYPE_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_SUBTYPE_ROOT),TRUE));
          V_SUBTYPE_ROOT       := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_ROOT),DBMS_XMLDOM.MAKENODE(V_SUBTYPE_ROOT)));   
          DBMS_XMLDOM.FREEDOCUMENT(V_SUBTYPE_DOCUMENT);
        end if;
      end if;
      V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'columns');
                     DBMS_XMLDOM.SETVALUE(V_ATTR,V_ATTRIBUTE_COUNT);
      V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
      -- Cache the type definition.
      -- dbms_output.put_line('Cached Storage Model for "' || P_TYPE_OWNER || '.' || P_TYPE_NAME || '".');
      insert into XDBPM.XDBPM_STORAGE_MODEL_CACHE (TYPE_NAME, TYPE_OWNER, EXTENDED_DEFINITION, STORAGE_MODEL) VALUES (P_TYPE_NAME, P_TYPE_OWNER, P_INCLUDE_SUBTYPES, V_TYPE_DEFINITION);
      return V_TYPE_DEFINITION;
    end;
    function findStorageModel(P_TYPE_NAME VARCHAR2, P_TYPE_OWNER VARCHAR2, P_INCLUDE_SUBTYPES VARCHAR2 DEFAULT 'YES')
    -- Find the Storage Model for the Base Type.
    -- If the type is derived from another type we need the storage model of the Base Type
    -- As storage models are calculated they are cached in the global temporary table XDBPM_STORAGE_MODEL_CACHE. This makes
    -- the process much more efficient. A global temporary table is used to minimize memory usage.
    return XMLType
    as
      V_STORAGE_MODEL          XMLType;
      V_STORAGE_MODEL_DOCUMENT DBMS_XMLDOM.DOMDOCUMENT;
      V_STORAGE_MODEL_ROOT     DBMS_XMLDOM.DOMELEMENT;
      V_ATTRIBUTE_COUNT        VARCHAR2(10);
    begin
      dbms_output.put_line('findStorageModel(' || G_DEPTH_COUNT || ') : Processing "' || P_TYPE_OWNER || '"."' || P_TYPE_NAME || '".' );
      begin
        SELECT STORAGE_MODEL
          into V_STORAGE_MODEL
          from XDBPM.XDBPM_STORAGE_MODEL_CACHE
         where TYPE_NAME = P_TYPE_NAME
           and TYPE_OWNER = P_TYPE_OWNER
           and EXTENDED_DEFINITION = P_INCLUDE_SUBTYPES;
         -- dbms_output.put_line('Resolved Storage Model from cache.');
      exception
        when no_data_found then
          G_DEPTH_COUNT := G_DEPTH_COUNT + 1;
          V_STORAGE_MODEL := getStorageModel(P_TYPE_NAME,P_TYPE_OWNER, P_INCLUDE_SUBTYPES);
          G_DEPTH_COUNT := G_DEPTH_COUNT - 1; 
        when others then
          raise;
      end;
      V_STORAGE_MODEL_DOCUMENT := DBMS_XMLDOM.NEWDOMDOCUMENT(V_STORAGE_MODEL);
      V_STORAGE_MODEL_ROOT     := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_STORAGE_MODEL_DOCUMENT);
      V_ATTRIBUTE_COUNT          := DBMS_XMLDOM.GETATTRIBUTE(V_STORAGE_MODEL_ROOT,'columns');
      dbms_output.put_line('findStorageModel : Attribute Count for "' || P_TYPE_OWNER || '"."' || P_TYPE_NAME || '" = ' || V_ATTRIBUTE_COUNT || '.' );
      return V_STORAGE_MODEL;
    end;
    function analyzeStorageModel(P_COMPLEX_TYPE_NAME VARCHAR2, P_TYPE_NAME VARCHAR2, P_TYPE_OWNER VARCHAR2)
    -- Generate a map showing the number of columns required to persist an instance of the SQL type.
    return XMLType
    as
      V_STORAGE_MODEL       XMLTYPE;
      V_COUNT               NUMBER := 0;
      V_DOCUMENT            DBMS_XMLDOM.DOMDOCUMENT;
      V_ROOT                DBMS_XMLDOM.DOMELEMENT;
      V_ATTR                DBMS_XMLDOM.DOMATTR;
      V_MODEL               DBMS_XMLDOM.DOMELEMENT;
      V_TYPE_DEFINITION     DBMS_XMLDOM.DOMELEMENT;
    begin
      V_STORAGE_MODEL := makeElement(P_COMPLEX_TYPE_NAME);
      V_DOCUMENT  := DBMS_XMLDOM.NEWDOMDOCUMENT(V_STORAGE_MODEL);
      V_ROOT      := DBMS_XMLDOM.GETDOCUMENTELEMENT(V_DOCUMENT);
      V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'SQLType');
                     DBMS_XMLDOM.SETVALUE(V_ATTR,P_TYPE_NAME);
      V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
      V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'SQLTypeOwner');
                     DBMS_XMLDOM.SETVALUE(V_ATTR,P_TYPE_OWNER);
      V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
      V_TYPE_DEFINITION   := DBMS_XMLDOM.GETDOCUMENTELEMENT(DBMS_XMLDOM.NEWDOMDOCUMENT(findStorageModel(P_TYPE_NAME, P_TYPE_OWNER, 'YES')));
      V_TYPE_DEFINITION   := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.IMPORTNODE(V_DOCUMENT,DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION),TRUE));
      V_TYPE_DEFINITION   := DBMS_XMLDOM.MAKEELEMENT(DBMS_XMLDOM.APPENDCHILD(DBMS_XMLDOM.MAKENODE(V_ROOT),DBMS_XMLDOM.MAKENODE(V_TYPE_DEFINITION)));
      V_ATTR      := DBMS_XMLDOM.CREATEATTRIBUTE(V_DOCUMENT,'columns');
                     DBMS_XMLDOM.SETVALUE(V_ATTR,DBMS_XMLDOM.GETATTRIBUTE(V_TYPE_DEFINITION,'columns'));
      V_ATTR      := DBMS_XMLDOM.SETATTRIBUTENODE(V_ROOT,V_ATTR);
      return  V_STORAGE_MODEL;
    end;
    function analyzeStorageModel(P_COMPLEX_TYPE_NAME VARCHAR2)
    return XMLTYPE
    -- Generate a map showing the number of columns required to persist an instance of the complex type.
    as
      pragma autonomous_transaction;
      V_SQLTYPE           VARCHAR2(128);
      V_SQLSCHEMA         VARCHAR2(32);
      V_RESULT            XMLType;
    begin
    G_DEPTH_COUNT := 0;
    select ct.XMLDATA.SQLTYPE, ct.XMLDATA.SQLSCHEMA
        into V_SQLTYPE, V_SQLSCHEMA
        from XDB.XDB$COMPLEX_TYPE ct, XDB.XDB$SCHEMA s
       where ct.XMLDATA.NAME = P_COMPLEX_TYPE_NAME
         and ref(s) = ct.XMLDATA.PARENT_SCHEMA
         and s.XMLDATA.SCHEMA_OWNER = USER;
      delete from XDBPM.XDBPM_STORAGE_MODEL_CACHE;
      -- delete from XDBPM.XDBPM_STORAGE_MODEL;
      V_RESULT := analyzeStorageModel(P_COMPLEX_TYPE_NAME,V_SQLTYPE,V_SQLSCHEMA);
      COMMIT;
      return V_RESULT;
    exception
      when no_data_found then
        -- dbms_output.put_line('Unable to find SQLType mapping for complexType : "' || USER || '"."' || P_COMPLEX_TYPE_NAME || '".' );
        return null;
      when others then
        raise;
    end;
    function analyzeSQLType(ATTR_NAME VARCHAR2, TARGET_TYPE_NAME VARCHAR2, TARGET_TYPE_OWNER VARCHAR2)
    return XMLType
    as
       ROOT_NODE_NAME   VARCHAR2(128);
       ATTR_DETAIL      XMLTYPE;
       XPATH_EXPRESSION VARCHAR2(129);
       CURSOR FIND_CHILD_ATTRS is
         select ATTR_NAME, ATTR_TYPE_OWNER, ATTR_TYPE_NAME, INHERITED
           from ALL_TYPE_ATTRS
          where OWNER = TARGET_TYPE_OWNER
            and TYPE_NAME = TARGET_TYPE_NAME
          order by ATTR_NO;       
       CHILD_ATTR  XMLTYPE;
       ATTR_COUNT NUMBER := 0;
       TEMP number;
       COLLECTION_TYPE_NAME  varchar2(256);
       COLLECTION_TYPE_OWNER varchar2(256);
    begin
      -- -- dbms_output.put_line('Processing Attribute ' || ATTR_NAME || ' of ' || TARGET_TYPE_OWNER || '.' || TARGET_TYPE_NAME );
      ATTR_DETAIL := makeElement(ATTR_NAME);
      XPATH_EXPRESSION := '/' || ATTR_DETAIL.GETROOTELEMENT();
      for ATTR in FIND_CHILD_ATTRS loop
        begin
          select ELEM_TYPE_NAME, ELEM_TYPE_OWNER
            into COLLECTION_TYPE_NAME, COLLECTION_TYPE_OWNER
            from ALL_COLL_TYPES
           where TYPE_NAME = ATTR.ATTR_TYPE_NAME
             and OWNER = ATTR.ATTR_TYPE_OWNER;
          CHILD_ATTR := analyzeSQLType(ATTR.ATTR_NAME, COLLECTION_TYPE_NAME, COLLECTION_TYPE_OWNER );
          ATTR_COUNT := ATTR_COUNT + CHILD_ATTR.extract('/' || CHILD_ATTR.GETROOTELEMENT()  || '/@sqlAttrs').getNumberVal();
          select appendChildXML(ATTR_DETAIL,XPATH_EXPRESSION,CHILD_ATTR)
            into ATTR_DETAIL
            from DUAL;
        exception
          when no_data_found then
            begin
              select 1
                into TEMP
                from ALL_TYPES
               where TYPE_NAME = ATTR.ATTR_TYPE_NAME
                and OWNER = ATTR.ATTR_TYPE_OWNER;
              CHILD_ATTR := analyzeSQLType(ATTR.ATTR_NAME, ATTR.ATTR_TYPE_NAME, ATTR.ATTR_TYPE_OWNER );
              ATTR_COUNT := ATTR_COUNT + CHILD_ATTR.extract('/' || CHILD_ATTR.GETROOTELEMENT() || '/@sqlAttrs').getNumberVal();
              select appendChildXML(ATTR_DETAIL,XPATH_EXPRESSION,CHILD_ATTR)
                into ATTR_DETAIL
                from DUAL;
            exception
             when no_data_found then
               ATTR_COUNT := ATTR_COUNT + 1;
            end;
        end;
      end loop;
      select insertChildXML(ATTR_DETAIL,XPATH_EXPRESSION,'@sqlAttrs',ATTR_COUNT)
        into ATTR_DETAIL
        from dual;
      return ATTR_DETAIL;
    end;
    function analyzeComplexType(COMPLEX_TYPE VARCHAR2)
    return XMLType
    as
      RESULT           xmltype;
      SQLTYPE          varchar2(128);
      SQLTYPE_OWNER    varchar2(32);
    begin
      select SQLTYPE, SQLTYPE_OWNER
        into SQLTYPE, SQLTYPE_OWNER
        from USER_XML_SCHEMAS,
             xmlTable
                xmlnamespaces
                  'http://www.w3.org/2001/XMLSchema' as "xsd",
                  'http://xmlns.oracle.com/xdb' as "xdb"
                '/xsd:schema/xsd:complexType'
                passing Schema
                columns
                COMPLEX_TYPE_NAME varchar2(4000) path '@name',
                SQLTYPE           varchar2(128)  path '@xdb:SQLType',
                SQLTYPE_OWNER     varchar2(32)   path '@xdb:SQLSchema'
       where COMPLEX_TYPE_NAME = COMPLEX_TYPE;
      result := analyzeSQLType(COMPLEX_TYPE,SQLTYPE,SQLTYPE_OWNER);
      select insertChildXML(RESULT,'/' || COMPLEX_TYPE,'@SQLType',SQLTYPE)
        into result
        from dual;
      return result;
    end;
    function showSQLTypes(schemaFolder varchar2) return XMLType
    is
      xmlSchema XMLTYPE;
    begin
      select xmlElement                                 
               "TypeList",                              
               xmlAgg                                   
                  xmlElement                             
                    "Schema",                            
                    xmlElement
                      "ResourceName",
                      extractValue(res,'/Resource/DisplayName')
                    xmlElement                         
                      "complexTypes",                  
                        select xmlAgg                               
                                 xmlElement              
                                   "complexType",        
                                   xmlElement           
                                     "name",             
                                     extractValue(value(XML),'/xsd:complexType/@name',XDB_NAMESPACES.XDBSCHEMA_PREFIXES)                          
                                   xmlElement            
                                     "SQLType",          
                                     extractValue(value(XML),'/xsd:complexType/@xdb:SQLType',XDB_NAMESPACES.XDBSCHEMA_PREFIXES)                            
                          from table                   
                                 xmlsequence           
                                   extract             
                                     xdburitype(p.path).getXML(),
                                     '/xsd:schema/xsd:complexType',
                                     XDB_NAMESPACES.XDBSCHEMA_PREFIXES
                               ) xml
                          -- order by extractValue(value(XML),'/xsd:complexType/@name',XDB_NAMESPACES.XDBSCHEMA_PREFIXES)
              ).extract('/*')                            
         into xmlSchema
         from path_view p                                
        where under_path(res,schemaFolder) = 1      
        order by extractValue(res,'/Resource/DisplayName');
      return xmlSchema;
    end;
    procedure renameCollectionTable (XMLTABLE varchar2, XPATH varchar2, COLLECTION_TABLE_PREFIX varchar2)
    as
       SYSTEM_GENERATED_NAME varchar2(256);
       COLLECTION_TABLE_NAME varchar2(256);
       CLUSTERED_INDEX_NAME  varchar2(256);
       PARENT_INDEX_NAME     varchar2(256);
       RENAME_STATEMENT varchar2(4000);
    begin
       COLLECTION_TABLE_NAME := COLLECTION_TABLE_PREFIX || '_TABLE';
       CLUSTERED_INDEX_NAME := COLLECTION_TABLE_PREFIX || '_DATA';
       PARENT_INDEX_NAME := COLLECTION_TABLE_PREFIX || '_LIST';
       select TABLE_NAME
         into SYSTEM_GENERATED_NAME
         from ALL_NESTED_TABLES
        where PARENT_TABLE_NAME = XMLTABLE
          and PARENT_TABLE_COLUMN = XPATH
          and OWNER = USER;
       RENAME_STATEMENT := 'alter table ' || USER || '."' || SYSTEM_GENERATED_NAME || '" rename to "' ||COLLECTION_TABLE_NAME || '"';
       -- -- dbms_output.put_line(RENAME_STATEMENT);
       execute immediate RENAME_STATEMENT;
       begin
         select INDEX_NAME
           into SYSTEM_GENERATED_NAME
           from ALL_INDEXES
          where TABLE_NAME = COLLECTION_TABLE_NAME
            and INDEX_TYPE = 'IOT - TOP'
            and OWNER = USER;
         RENAME_STATEMENT := 'alter index ' || USER || '."' || SYSTEM_GENERATED_NAME || '" rename to "' || CLUSTERED_INDEX_NAME || '"';
         -- -- dbms_output.put_line(RENAME_STATEMENT);
         execute immediate RENAME_STATEMENT;
       exception
         when NO_DATA_FOUND then
           null;
       end;
       begin
         select INDEX_NAME
           into SYSTEM_GENERATED_NAME
           from ALL_IND_columns
          where COLUMN_NAME = XPATH
            and TABLE_NAME =  XMLTABLE
            and TABLE_OWNER = USER;
         RENAME_STATEMENT := 'alter index ' || USER || '."' || SYSTEM_GENERATED_NAME || '" rename to "' || PARENT_INDEX_NAME || '"';
         -- -- dbms_output.put_line(RENAME_STATEMENT);
         execute immediate RENAME_STATEMENT;
       exception
         when NO_DATA_FOUND then
           null;
       end;
    end;
    function processNestedTable(currentLevel in out number, currentNode in out XMLType, query SYS_REFCURSOR)
    return XMLType
    is
      thisLevel  number;
      thisNode   xmlType;
      result xmlType;
    begin
      thisLevel := currentLevel;
      thisNode := currentNode;
      fetch query into currentLevel, currentNode;
      if (query%NOTFOUND) then
        currentLevel := -1;
      end if;
      while (currentLevel >= thisLevel) loop
        -- Next Node is a decendant of sibling of this Node.
        if (currentLevel > thisLevel) then
          -- Next Node is a decendant of this Node.
          result := processNestedTable(currentLevel, currentNode, query);
          select xmlElement
                    "Collection",
                    extract(thisNode,'/Collection/*'),
                    xmlElement
                      "NestedCollections",
                      result
             into thisNode
             from dual;
        else
          -- Next node is a sibling of this Node.
          result := processNestedTable(currentLevel, currentNode, query);
          select xmlconcat(thisNode,result) into thisNode from dual;
        end if;
      end loop;
      -- Next Node is a sibling of some ancestor of this node.
      return thisNode;
    end;
    function printNestedTables(XML_TABLE varchar2)
    return XMLType
    is
       query SYS_REFCURSOR;
       result XMLType;
       rootLevel number := 0;
       rootNode xmlType;
    begin
       open query for
            select level, xmlElement
                            "Collection",
                            xmlElement
                              "CollectionId",
                              PARENT_TABLE_COLUMN
                          ) as XML
              from USER_NESTED_TABLES
           connect by PRIOR TABLE_NAME = PARENT_TABLE_NAME
                   start with PARENT_TABLE_NAME = XML_TABLE;
        fetch query into rootLevel, rootNode;
        result := processNestedTable(rootLevel, rootNode, query);
        select xmlElement
                  "NestedTableStructure",
                  result
          into result
          from dual;
        return result;
    end;
    function generateSchemaFromTable(P_TABLE_NAME varchar2, P_OWNER varchar2 default USER)
    return XMLTYPE
    as
      xmlSchema XMLTYPE;
    begin
      select xmlElement
               "xsd:schema",
               xmlAttributes
                 'http://www.w3.org/2001/XMLSchema' as "xmlns:xsd",
                 'http://xmlns.oracle.com/xdb' as "xmlns:xdb"
               xmlElement
                 "xsd:element",
                 xmlAttributes
                   'ROWSET' as "name",
                   'rowset' as "type"
               xmlElement
                 "xsd:complexType",
                 xmlAttributes
                   'rowset' as "name"
                 xmlElement
                   "xsd:sequence",
                   xmlElement
                      "xsd:element",
                      xmlAttributes
                        'ROW' as "name",
                        table_name || '_T' as "type",
                        'unbounded' as "maxOccurs"
               xmlElement
                 "xsd:complexType",
                 xmlAttributes
                   table_name || '_T' as "name"
                 xmlElement
                   "xsd:sequence",
                     xmlAgg(ELEMENT order by INTERNAL_COLUMN_ID)
        into xmlSchema
        from (select TABLE_NAME, INTERNAL_COLUMN_ID,
                     case
                       when DATA_TYPE in ('VARCHAR2','CHAR') then
                         xmlElement
                           "xsd:element",
                           xmlattributes
                             column_name as "name",
                             decode(NULLABLE, 'Y', 0, 1) as "minOccurs",
                             column_name as "xdb:SQLName",
                             DATA_TYPE as "xdb:SQLType"
                           xmlElement
                             "xsd:simpleType",
                             xmlElement
                               "xsd:restriction",
                               xmlAttributes
                                 'xsd:string' as "base"
                               xmlElement
                                 "xsd:maxLength",
                                 xmlAttributes
                                   DATA_LENGTH  as "value"
                       when DATA_TYPE = 'NUMBER' then
                         xmlElement
                           "xsd:element",
                           xmlattributes
                             column_name as "name",
                             decode(NULLABLE, 'Y', 0, 1) as "minOccurs",
                             column_name as "xdb:SQLName",
                             DATA_TYPE as "xdb:SQLType"
                           xmlElement
                             "xsd:simpleType",
                             xmlElement
                               "xsd:restriction",
                               xmlAttributes
                                  decode(DATA_SCALE, 0, 'xsd:integer', 'xsd:double') as "base"
                               xmlElement
                                 "xsd:totalDigits",
                                 xmlAttributes
                                   DATA_PRECISION  as "value"
                       when DATA_TYPE = 'DATE' then
                         xmlElement
                           "xsd:element",
                           xmlattributes
                             column_name as "name",
                             decode(NULLABLE, 'Y', 0, 1) as "minOccurs",
                             'xsd:date' as "type",
                             column_name as "xdb:SQLName",
                             DATA_TYPE as "xdb:SQLType"
                       when DATA_TYPE like 'TIMESTAMP%WITH TIME ZONE' then
                         xmlElement
                           "xsd:element",
                           xmlattributes
                             column_name as "name",
                             decode(NULLABLE, 'Y', 0, 1) as "minOccurs",
                             'xsd:dateTime' as "type",
                             column_name as "xdb:SQLName",
                             DATA_TYPE as "xdb:SQLType"
                       else
                         xmlElement
                           "xsd:element",
                           xmlattributes
                             column_name as "name",
                             decode(NULLABLE, 'Y', 0, 1) as "minOccurs",
                             'xsd:anySimpleType' as "type",
                             column_name as "xdb:SQLName",
                             DATA_TYPE as "xdb:SQLType"
                     end ELEMENT
                from all_tab_cols c
               where c.TABLE_NAME = P_TABLE_NAME
                 and c.OWNER = P_OWNER
        group by TABLE_NAME;
      return xmlSchema;
    end;
    function appendElementList(V_ELEMENT_LIST IN OUT XDB.XDB$XMLTYPE_REF_LIST_T, V_CHILD_ELEMENT_LIST XDB.XDB$XMLTYPE_REF_LIST_T) return XDB.XDB$XMLTYPE_REF_LIST_T;
    function expandModel(P_MODEL XDB.XDB$MODEL_T) return XDB.XDB$XMLTYPE_REF_LIST_T;
    function expandChoiceList(P_CHOICE_LIST XDB.XDB$XMLTYPE_REF_LIST_T) return XDB.XDB$XMLTYPE_REF_LIST_T;
    function expandSequenceList(P_SEQUENCE_LIST XDB.XDB$XMLTYPE_REF_LIST_T) return XDB.XDB$XMLTYPE_REF_LIST_T;
    function expandGroupList(P_GROUP_LIST XDB.XDB$XMLTYPE_REF_LIST_T) return XDB.XDB$XMLTYPE_REF_LIST_T;
    function appendElementList(V_ELEMENT_LIST IN OUT XDB.XDB$XMLTYPE_REF_LIST_T, V_CHILD_ELEMENT_LIST XDB.XDB$XMLTYPE_REF_LIST_T)
    return XDB.XDB$XMLTYPE_REF_LIST_T
    as
    begin
      SELECT CAST
               SET
                 CAST(V_ELEMENT_LIST as XDBPM.XMLTYPE_REF_TABLE_T)
                 MULTISET UNION
                 CAST(V_CHILD_ELEMENT_LIST as XDBPM.XMLTYPE_REF_TABLE_T)
               as XDB.XDB$XMLTYPE_REF_LIST_T
        into V_ELEMENT_LIST
        from DUAL;
        return V_ELEMENT_LIST;     
    end;
    function expandModel(P_MODEL XDB.XDB$MODEL_T)
    return XDB.XDB$XMLTYPE_REF_LIST_T
    as
      V_ELEMENT_LIST       XDB.XDB$XMLTYPE_REF_LIST_T;
      V_CHILD_ELEMENT_LIST XDB.XDB$XMLTYPE_REF_LIST_T;
    begin
      V_ELEMENT_LIST := XDB.XDB$XMLTYPE_REF_LIST_T();
      if P_MODEL.ELEMENTS is not null then
        V_ELEMENT_LIST := P_MODEL.ELEMENTS;
      end if;
      if (P_MODEL.CHOICE_KIDS is not NULL) then
        V_CHILD_ELEMENT_LIST := expandChoiceList(P_MODEL.CHOICE_KIDS);
        V_ELEMENT_LIST := appendElementList(V_ELEMENT_LIST,V_CHILD_ELEMENT_LIST);
      end if;
      if (P_MODEL.SEQUENCE_KIDS is not NULL) then
        V_CHILD_ELEMENT_LIST := expandSequenceList(P_MODEL.SEQUENCE_KIDS);
        V_ELEMENT_LIST := appendElementList(V_ELEMENT_LIST,V_CHILD_ELEMENT_LIST);
      end if;
      -- Process ANYS
      if (P_MODEL.GROUPS is not NULL) then
        V_CHILD_ELEMENT_LIST := expandGroupList(P_MODEL.GROUPS);
        V_ELEMENT_LIST := appendElementList(V_ELEMENT_LIST,V_CHILD_ELEMENT_LIST);
      end if;
      return V_ELEMENT_LIST;
    end;
    function expandChoiceList(P_CHOICE_LIST XDB.XDB$XMLTYPE_REF_LIST_T)
    return XDB.XDB$XMLTYPE_REF_LIST_T
    as
      V_ELEMENT_LIST       XDB.XDB$XMLTYPE_REF_LIST_T;
      V_CHILD_ELEMENT_LIST XDB.XDB$XMLTYPE_REF_LIST_T;
      cursor getChoices is
      select c.XMLDATA MODEL
        from XDB.XDB$CHOICE_MODEL c, TABLE(P_CHOICE_LIST) cl
       where ref(c) = value(cl);
    begin
      V_ELEMENT_LIST := XDB.XDB$XMLTYPE_REF_LIST_T();
      for c in getChoices loop
        V_CHILD_ELEMENT_LIST := expandModel(c.MODEL);
        V_ELEMENT_LIST := appendElementList(V_ELEMENT_LIST,V_CHILD_ELEMENT_LIST);
      end loop;
      return V_ELEMENT_LIST;
    end;
    function expandSequenceList(P_SEQUENCE_LIST XDB.XDB$XMLTYPE_REF_LIST_T)
    return XDB.XDB$XMLTYPE_REF_LIST_T
    as
      V_ELEMENT_LIST       XDB.XDB$XMLTYPE_REF_LIST_T;
      V_CHILD_ELEMENT_LIST XDB.XDB$XMLTYPE_REF_LIST_T;
      cursor getSequences is
      select s.XMLDATA MODEL
        from XDB.XDB$SEQUENCE_MODEL s, TABLE(P_SEQUENCE_LIST) sl
       where ref(s) = value(sl);
    begin
      V_ELEMENT_LIST := XDB.XDB$XMLTYPE_REF_LIST_T();
      for s in getSequences loop
        V_CHILD_ELEMENT_LIST := expandModel(s.MODEL);
        V_ELEMENT_LIST := appendElementList(V_ELEMENT_LIST,V_CHILD_ELEMENT_LIST);
      end loop;
      return V_ELEMENT_LIST;
    end;
    function expandGroupList(P_GROUP_LIST XDB.XDB$XMLTYPE_REF_LIST_T)
    return XDB.XDB$XMLTYPE_REF_LIST_T
    as
      V_ELEMENT_LIST       XDB.XDB$XMLTYPE_REF_LIST_T;
      V_CHILD_ELEMENT_LIST XDB.XDB$XMLTYPE_REF_LIST_T;  V_MODEL  XDB.XDB$MODEL_T;
      cursor getGroups is
      SELECT CASE
               -- Return The MODEL Definition for the CHOICE, ALL or SEQUENCE
               WHEN gd.XMLDATA.ALL_KID is not NULL
                 THEN ( SELECT a.XMLDATA  from XDB.XDB$ALL_MODEL a where ref(a) = gd.XMLDATA.ALL_KID)
               WHEN gd.XMLDATA.SEQUENCE_KID is not NULL
                 THEN ( SELECT s.XMLDATA  from XDB.XDB$SEQUENCE_MODEL s where ref(s) = gd.XMLDATA.SEQUENCE_KID)
               WHEN gd.XMLDATA.CHOICE_KID is not NULL
                 THEN ( SELECT c.XMLDATA  from XDB.XDB$CHOICE_MODEL c where ref(c) = gd.XMLDATA.CHOICE_KID)
              END MODEL
         FROM XDB.XDB$GROUP_DEF gd, XDB.XDB$GROUP_REF gr, TABLE(P_GROUP_LIST) gl
        WHERE ref(gd) = gr.XMLDATA.GROUPREF_REF
          and ref(gr) = value(gl);
    begin
      V_ELEMENT_LIST := XDB.XDB$XMLTYPE_REF_LIST_T();
      for g in getGroups loop
        V_CHILD_ELEMENT_LIST := expandModel(g.MODEL);
        V_ELEMENT_LIST := appendElementList(V_ELEMENT_LIST,V_CHILD_ELEMENT_LIST);
      end loop;
      return V_ELEMENT_LIST;
    end;
    function getComplexTypeElementList(P_COMPLEX_TYPE_REF REF XMLTYPE)
    return XDB.XDB$XMLTYPE_REF_LIST_T
    as
      V_MODEL        XDB.XDB$MODEL_T;
      V_BASE_TYPE    REF XMLTYPE;
      V_ELEMENT_LIST XDB.XDB$XMLTYPE_REF_LIST_T := XDB.XDB$XMLTYPE_REF_LIST_T();
    begin
      SELECT ct.XMLDATA.BASE_TYPE,
             CASE
               -- Return The MODEL Definition for the CHOICE, ALL or SEQUENCE
               WHEN ct.XMLDATA.ALL_KID is not NULL
                 THEN ( SELECT a.XMLDATA  from XDB.XDB$ALL_MODEL a where ref(a) = ct.XMLDATA.ALL_KID)
               WHEN ct.XMLDATA.SEQUENCE_KID is not NULL
                 THEN ( SELECT s.XMLDATA  from XDB.XDB$SEQUENCE_MODEL s where ref(s) = ct.XMLDATA.SEQUENCE_KID)
               WHEN ct.XMLDATA.CHOICE_KID is not NULL
                 THEN ( SELECT c.XMLDATA  from XDB.XDB$CHOICE_MODEL c where ref(c) = ct.XMLDATA.CHOICE_KID)
               WHEN ct.XMLDATA.GROUP_KID is not NULL
                 -- COMPLEXTYPE is based on a GROUP.
                 THEN (
                         -- RETURN The CHOICE, ALL or SEQUENCE for GROUP
                         SELECT CASE
                                  WHEN gd.XMLDATA.ALL_KID is not NULL
                                    THEN ( SELECT a.XMLDATA  from XDB.XDB$ALL_MODEL a where ref(a) = gd.XMLDATA.ALL_KID)
                                  WHEN gd.XMLDATA.SEQUENCE_KID is not NULL
                                    THEN ( SELECT s.XMLDATA  from XDB.XDB$SEQUENCE_MODEL s where ref(s) = gd.XMLDATA.SEQUENCE_KID)
                                  WHEN gd.XMLDATA.CHOICE_KID is not NULL
                                    THEN ( SELECT c.XMLDATA  from XDB.XDB$CHOICE_MODEL c where ref(c) = gd.XMLDATA.CHOICE_KID)
                                  END
                             FROM XDB.XDB$GROUP_DEF gd, xdb.xdb$GROUP_REF gr
                            WHERE ref(gd) = gr.XMLDATA.GROUPREF_REF
                              and ref(gr) = ct.XMLDATA.GROUP_KID
    --           WHEN ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.ALL_KID is not NULL
    --             THEN ( SELECT a.XMLDATA  from XDB.XDB$ALL_MODEL a where ref(a) = ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.ALL_KID)
    --           WHEN ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.SEQUENCE_KID is not NULL
    --            THEN ( SELECT s.XMLDATA  from XDB.XDB$SEQUENCE_MODEL s where ref(s) = ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.SEQUENCE_KID)
    --           WHEN ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.CHOICE_KID is not NULL
    --             THEN ( SELECT c.XMLDATA  from XDB.XDB$CHOICE_MODEL c where ref(c) = ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.CHOICE_KID)
    --           WHEN ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.GROUP_KID is not NULL
    --             -- COMPLEXTYPE is based on a GROUP.
    --             THEN (
    --                     -- RETURN The CHOICE, ALL or SEQUENCE for GROUP
    --                     SELECT CASE
    --                              WHEN gd.XMLDATA.ALL_KID is not NULL
    --                                THEN ( SELECT a.XMLDATA  from XDB.XDB$ALL_MODEL a where ref(a) = gd.XMLDATA.ALL_KID)
    --                              WHEN gd.XMLDATA.SEQUENCE_KID is not NULL
    --                                THEN ( SELECT s.XMLDATA  from XDB.XDB$SEQUENCE_MODEL s where ref(s) = gd.XMLDATA.SEQUENCE_KID)
    --                              WHEN gd.XMLDATA.CHOICE_KID is not NULL
    --                                THEN ( SELECT c.XMLDATA  from XDB.XDB$CHOICE_MODEL c where ref(c) = gd.XMLDATA.CHOICE_KID)
    --                              END
    --                         FROM XDB.XDB$GROUP_DEF gd, xdb.xdb$GROUP_REF gr
    --                       WHERE ref(gd) = gr.XMLDATA.GROUPREF_REF
    --                          and ref(gr) = ct.XMLDATA.COMPLEXCONTENT.RESTRICTION.GROUP_KID
               WHEN ct.XMLDATA.COMPLEXCONTENT.EXTENSION.ALL_KID is not NULL
                 THEN ( SELECT a.XMLDATA  from XDB.XDB$ALL_MODEL a where ref(a) = ct.XMLDATA.COMPLEXCONTENT.EXTENSION.ALL_KID)
               WHEN ct.XMLDATA.COMPLEXCONTENT.EXTENSION.SEQUENCE_KID is not NULL
                 THEN ( SELECT s.XMLDATA  from XDB.XDB$SEQUENCE_MODEL s where ref(s) = ct.XMLDATA.COMPLEXCONTENT.EXTENSION.SEQUENCE_KID)
               WHEN ct.XMLDATA.COMPLEXCONTENT.EXTENSION.CHOICE_KID is not NULL
                 THEN ( SELECT c.XMLDATA  from XDB.XDB$CHOICE_MODEL c where ref(c) = ct.XMLDATA.COMPLEXCONTENT.EXTENSION.CHOICE_KID)
               WHEN ct.XMLDATA.COMPLEXCONTENT.EXTENSION.GROUP_KID is not NULL
                 -- COMPLEXTYPE is based on a GROUP.
                 THEN (
                         -- RETURN The CHOICE, ALL or SEQUENCE for GROUP
                         SELECT CASE
                                  WHEN gd.XMLDATA.ALL_KID is not NULL
                                    THEN ( SELECT a.XMLDATA  from XDB.XDB$ALL_MODEL a where ref(a) = gd.XMLDATA.ALL_KID)
                    

Maybe you are looking for

  • I have just attempted to update my daughters iphone 4 to ois7 all I get on itunes is Restore error 3194. Help please

    I have just attempted to update an iphone 4 to ois 7. All I get on itunes is restore error 3194. Can anyone explain what is going wrong with my attempt to upgrade?

  • Button On Top Of Drop Zone

    i am building an menu in DVDSP, and im creating drop zones, but i want the outside to be highlighted around it. as in, i want the outer edge ring of the video to change colors as selected. so i created the button, and created the drop zone in front o

  • Animating within another Animation

    I am new to Flash, but I cannot find a simple answer to my problem in any threads or in any tutorials. I am attempting to make a map of the US zoom in and move across the screen while various things pop up on the map (eventually I will have a car tra

  • Slow update of Shared Variables on FP-2015

    My application consists of a VI running on an FP-2015 which collects and transmits data from/to various I/O modules (DI-301, aI-111,Do-401 etc.) and passes this data to a Host PC using Shared Variables.  It runs embedded on the FP-2015 so that it can

  • Nokia Suite notes synchronization.

    I've synched my phone's notes (the ones you create with the "Notes" default app) on Nokia Suite and I want to retrive them, with the original date they were made. Is that possible?