Tuesday, May 26, 2009

Oracle Interview Questions

1. What are the components of physical database structure of Oracle database?
Oracle database is comprised of three types of files. One or more datafiles, two are more
redo log files, and one or more control files.
2. What are the components of logical database structure of Oracle database?
There are tablespaces and database's schema objects.
3. What is a tablespace?
A database is divided into Logical Storage Unit called tablespaces. A tablespace is used to
grouped related logical structures together.
4. What is SYSTEM tablespace and when is it created?
Every Oracle database contains a tablespace named SYSTEM, which is automatically
created when the database is created. The SYSTEM tablespace always contains the data
dictionary tables for the entire database.
5. Explain the relationship among database, tablespace and data file.
Each databases logically divided into one or more tablespaces one or more data files are
explicitly created for each tablespace.
6. What is schema?
A schema is collection of database objects of a user.
7. What are Schema Objects?
Schema objects are the logical structures that directly refer to the database's data. Schema
objects include tables, views, sequences, synonyms, indexes, clusters, database triggers,
procedures, functions packages and database links.
8. Can objects of the same schema reside in different tablespaces?
Yes.
9. Can a tablespace hold objects from different schemes?
Yes.
10. What is Oracle table?
A table is the basic unit of data storage in an Oracle database. The tables of a database
hold all of the user accessible data. Table data is stored in rows and columns.
11. What is an Oracle view?
A view is a virtual table. Every view has a query attached to it. (The query is a SELECT
statement that identifies the columns and rows of the table(s) the view uses.)
12. Do a view contain data?
Views do not contain or store data.
13. Can a view based on another view?
Yes.
14. What are the advantages of views?
- Provide an additional level of table security, by restricting access to a predetermined set
of rows and columns of a table.
- Hide data complexity.
- Simplify commands for the user.
- Present the data in a different perspective from that of the base table.
- Store complex queries.
15. What is an Oracle sequence?
A sequence generates a serial list of unique numbers for numerical columns of a
database's tables.
16. What is a synonym?
A synonym is an alias for a table, view, sequence or program unit.
17. What are the types of synonyms?
There are two types of synonyms private and public.
18. What is a private synonym?
Only its owner can access a private synonym.
19. What is a public synonym?
Any database user can access a public synonym.
20. What are synonyms used for?
- Mask the real name and owner of an object.
- Provide public access to an object
- Provide location transparency for tables, views or program units of a remote database.
- Simplify the SQL statements for database users.
21. What is an Oracle index?
An index is an optional structure associated with a table to have direct access to rows,
which can be created to increase the performance of data retrieval. Index can be created
on one or more columns of a table.
22. How are the index updates?
Indexes are automatically maintained and used by Oracle. Changes to table data are
automatically incorporated into all relevant indexes.
23. What are clusters?
Clusters are groups of one or more tables physically stores together to share common
columns and are often used together.
24. What is cluster key?
The related columns of the tables in a cluster are called the cluster key.
25. What is index cluster?
A cluster with an index on the cluster key.
26. What is hash cluster?
A row is stored in a hash cluster based on the result of applying a hash function to the
row's cluster key value. All rows with the same hash key value are stores together on
disk.
27. When can hash cluster used?
Hash clusters are better choice when a table is often queried with equality queries. For
such queries the specified cluster key value is hashed. The resulting hash key value points
directly to the area on disk that stores the specified rows.
28. What is database link?
A database link is a named object that describes a "path" from one database to another.
29. What are the types of database links?
Private database link, public database link & network database link.
30. What is private database link?
Private database link is created on behalf of a specific user. A private database link can be
used only when the owner of the link specifies a global object name in a SQL statement
or in the definition of the owner's views or procedures.
31. What is public database link?
Public database link is created for the special user group PUBLIC. A public database link
can be used when any user in the associated database specifies a global object name in a
SQL statement or object definition.
32. What is network database link?
Network database link is created and managed by a network domain service. A network
database link can be used when any user of any database in the network specifies a global
object name in a SQL statement or object definition.
33. What is data block?
Oracle database's data is stored in data blocks. One data block corresponds to a specific
number of bytes of physical database space on disk.
34. How to define data block size?
A data block size is specified for each Oracle database when the database is created. A
database users and allocated free database space in Oracle data blocks. Block size is
specified in init.ora file and cannot be changed latter.
35. What is row chaining?
In circumstances, all of the data for a row in a table may not be able to fit in the same
data block. When this occurs, the data for the row is stored in a chain of data block (one
or more) reserved for that segment.
36. What is an extent?
An extent is a specific number of contiguous data blocks, obtained in a single allocation
and used to store a specific type of information.
37. What is a segment?
A segment is a set of extents allocated for a certain logical structure.
38. What are the different types of segments?
Data segment, index segment, rollback segment and temporary segment.
39. What is a data segment?
Each non-clustered table has a data segment. All of the table's data is stored in the extents
of its data segment. Each cluster has a data segment. The data of every table in the cluster
is stored in the cluster's data segment.
40. What is an index segment?
Each index has an index segment that stores all of its data.
41. What is rollback segment?
A database contains one or more rollback segments to temporarily store "undo"
information.
42. What are the uses of rollback segment?
To generate read-consistent database information during database recovery and to
rollback uncommitted transactions by the users.
43. What is a temporary segment?
Temporary segments are created by Oracle when a SQL statement needs a temporary
work area to complete execution. When the statement finishes execution, the temporary
segment extents are released to the system for future use.
44. What is a datafile?
Every Oracle database has one or more physical data files. A database's data files contain
all the database data. The data of logical database structures such as tables and indexes is
physically stored in the data files allocated for a database.
45. What are the characteristics of data files?
A data file can be associated with only one database. Once created a data file can't change
size. One or more data files form a logical unit of database storage called a tablespace.
46. What is a redo log?
The set of redo log files for a database is collectively known as the database redo log.
47. What is the function of redo log?
The primary function of the redo log is to record all changes made to data.
48. What is the use of redo log information?
The information in a redo log file is used only to recover the database from a system or
media failure prevents database data from being written to a database's data files.
49. What does a control file contains?
- Database name
- Names and locations of a database's files and redolog files.
- Time stamp of database creation.
50. What is the use of control file?
When an instance of an Oracle database is started, its control file is used to identify the
database and redo log files that must be opened for database operation to proceed. It is
also used in database recovery.

Anatomy of oracle reverse key index

“A REVERSE index can quite happily be used by the CBO to perform index range scans within an execution plan”.

Reverse Key Indexes are designed to resolve a specific issue, that being index block contention. Many indexes in busy database environments with lots of concurrent inserts (and in some scenarios updates and deletes as well) can suffer from index block contention (as highlighted by high levels of “buffer busy waits” and “read by other session” wait events for the index segments). Monotonically increasing indexes, such as Primary Keys generated by a sequence, are especially prone to contention as all inserts need to access the maximum “right-most” leaf block. This is of particular concern in RAC environments, where this “hot” index block needs to be accessed by all the instances and is being bounced around the various SGAs causing expensive block transfers between instances.

A solution is make the index a Reverse Key Index.

CREATE INDEX bowie_reverse_idx ON bowie(id) REVERSE;

A Reverse Key Index simply takes the index column values and reverses them before inserting into the index. “Conceptually”, say the next generated ID is 123456, Oracle will reverse it to 654321 before inserting into the index. It will then take the next generated ID 123457 and reverse it to 754321 and insert it into the index and so on. By doing this, inserts are spread across the whole index structure, ensuring the right most block is no longer the only index leaf block being hammered. Index contention is dramatically reduced or eliminated entirely.

Reverse Key Indexes address a specific problem but may in turn introduce a number of problems themselves.

One problem is the simple fact index entries are no longer sorted in their natural order. Value 123456 is no longer adjacent to value 123457 in the index structure, they’re likely to be found in completely different leaf blocks. Therefore a range predicate (such as BETWEEN 123450 and 123460) can no longer be found by a single index probe, Oracle would be forced to search for each specific index value separately as each value in the range is likely to be in differing leaf blocks.

This makes it all just too difficult and troublesome for the Cost Based Optimizer (CBO). As a result, the CBO totally ignores Reverse Key Indexes when processing Range Predicates (eg. BETWEEN, <, >, <=, >=, LIKE etc.). Even innocent looking range predicates such as “BETWEEN 123456 and 123457″, with just the 2 values of interest are ignored by the CBO. A 10053 trace shows how the CBO totally ignores Reverse Key Indexes and doesn’t even bother to cost such accesses when processing Range Predicate conditions.

In the above example and in scenarios where it’s possible and practical to convert range predicates, use an IN clause instead, e.g. “IN (123456, 123457)” as Oracle will convert this into an OR clause with each equality condition usable with the Reverse Key Index.

Oracle is also clever enough to identify equality conditions that may be written as a range scan (e.g. BETWEEN 123456 and 123456) and use a Reverse Key Index accordingly.

Hints won’t work either. You may be able to force Oracle into performing a Full Index Scan but it will not perform an Index Range Scan with a Range Predicate.

But doesn’t all this mean I’m wrong when I suggested a Reverse Key Index can be used by the CBO to use Index Range Scans.

No :)

I’ve only described how Oracle ignores the use of a Reverse Key Index for Range Predicates, however Index Range Scans are quite possible.

Remember, a Reverse Key Index will reverse all values and if two values happen to have the same value or two index entries happen to have the same leading column, then all such values are indeed stored together and are logically adjacent to one another.

For example, if the Reverse Key Index is Non-Unique, Oracle must perform an Index Range Scan, even for equality predicates. I discussed this in some detail when discussing the differences between a Unique and a Non-Unique Index. Even if the column or columns have a PK or a Unique Key Constraint, Oracle will still check the next index entry “just in case” there are indeed duplicate values. Also, although usually used for monotonically index columns, there’s nothing preventing you from creating a Reverse Key Index on a Non-Unique column and all duplicate values must reside together in the index structure. Therefore an equality search that uses any Non-Unique Reverse Key Index will generate an Index Range Scan access

But even Unique indexes can be used to perform an Index Range Scan.

If you have a multi-column Unique Index but not all columns are being searched (although the leading column must be known), then again, all index values with the same leading column (or columns) must be stored together in the Reverse Key Index and an Index range Scan can be performed for such equality conditions.


Saturday, May 23, 2009

The problem which is saved my job and got appreciation for the solution...

3 months time....2 resources...i am the responsible person...already 2 clients failed to solve....everybody(Clients,PL,Colleague) thought that is cannot be done in specified time...finally it had come to me to solve it....That is 'Facility Obligor Relationship Problem'...

Initially i am also frustrated when it comes to me....but i took it as a challenge to solve it....First 5 days i did not do any thing even i did not code a single line....but my inner feeling says that there could be some simple solution ...next is week end..so i am planning to go to my friend's marriage...Friday night started and got into the bus...thinking about the problem whole night...at 5 o'clock suddenly i got a thought....but i cannot test it...but i am very much eager to test since my life is depend on that problem...in my return journey also i didn't get sleep bcoz very much eager to test the solution to such a gr8 problem.

Monday morning .....early get into the office bus .... on that day i am the first person to the office...Immediately logon to the system and checked the solution.....my face is glowing like a sun ...expected solution got it....i am very happy....immediately sent a mail to my onsite coordinator to confirm the solution....he confirmed immediately...Implemented the solution within next 5 days...remaining 80 days enjoyed with newly joined employee..Stayed in office hardly 5 hours ...finally got appreciation...delivered on time...entire team has got appreciation from clients....

Problem description
===============




The above relationship data is available in the Facility_obligor relation ship table in the following way.

Facility obligor

F1 O1

F2 O1

F2 O2

F3 O2

F4 O2

F4 O3

F4 O4

F5 O5

F6 O6

If I give input to the query either one F1 or F2 or F3 or F4, then I should get the all the related facilities and obligors which are in the above relational form.

Solution which i have given
=================

with graph as (
select facility as node_from,obligor as node_to from facility_obligor
union all
select obligor,facility from facility_obligor
)
select distinct node_from from graph connect by nocycle prior node_from = node_to start with node_from = 'F4' ;

I hope this is very much useful to everyone.