Join on clustered tables shows greater cost than non-clustered tables? I have created a cluster and have two tables emp and sep on the cluster.

When I do the simple query...

explain plan select * from emp_cluster join dep_cluster using (dno)


the cost is 26.

I created two other tables on heap (emp_heap and dep_heap). When I do:

explain plan select * from emp_heap join dep_heap using (dno)


the cost is only 15, Which is less than that of the cluster. 

I have inserted 33,000 records in the emp tables and 99 records in the department tables. I know that in join cluster behaves well but in my case it the opposite is true?
Most likely using a cluster for this query won't be beneficial. 

A cluster in Oracle allows data from multiple tables to be stored physically close when they share a common key (here dno I suppose). This allows some query to perform better but a cluster will intrinsically consume more space than standard heap tables because for each key there will be some unused space. Insert-only heap tables on the other hand are one of the most efficient way to store data space-wise, since the rows fill all blocks nicely up to the HWM.

In your case since you don't have a filter so all rows will be read, producing a FULL SCAN of the data. Because the rows are stored in a more compact manner in heap tables, the cost will be less than the cost for the cluster.

The cluster, however, should have an edge when you look for a specific key, but this will also depend on the distribution of the data (number of rows per key), and on the length of the rows. You could build an example where the heap tables with regular B-Tree indexes will outperform a cluster for single-key queries.

In conclusion, clustering tables in Oracle will help for some queries, but will also be hurtful to others, it has restrictions and drawbacks, it is not a silver bullet for optimal performance. Heap tables are the default for a good reason: they have good performance for most queries.