Oracle interview questions
Explain the difference between
trigger and stored procedure.
Trigger in
act which is performed automatically before or after a event occur
Stored
procedure is a set of functionality which is
executed when it is explicitly invoked.
Explain Row level and statement
level trigger.
Row-level: - They get fired once for each row in a table affected
by the statements.
Statement: - They get fired once for each triggering statement.
Advantage of a stored procedure
over a database trigger
Firing
of a stored procedure can be controlled whereas on the other hand trigger will
get fired whenever any modification takes place on the table.
What are cascading triggers?
A Trigger that contains
statements which cause invoking of other Triggers are known as cascading
triggers. Here’s the order of execution of statements in case of cascading
triggers:
·
Execute all BEFORE statement triggers that apply to the
current statement.
What is a JOIN? Explain types of JOIN in oracle.
A JOIN is used to
match/equate different fields from 2 or more tables using primary/foreign keys.
Output is based on type of Join and what is to be queries i.e. common data
between 2 tables, unique data, total data, or mutually exclusive data.
Types of JOINS:
JOIN Type
|
Example
|
Description
|
Simple
JOIN
|
SELECT p.last_name, t.deptName
FROM person p, dept t WHERE p.id = t.id; |
Find name and department name of students who have been allotted
a department
|
Inner/Equi/Natural
JOIN
|
SELECT * from Emp INNER JOIN Dept WHERE Emp.empid=Dept.empid
|
Extracts data that meets the JOIN conditions only. A JOIN is by
default INNER unless OUTER keyword is specified for an OUTER JOIN.
|
Outer
Join
|
SELECT distinct * from Emp LEFT OUTER JOIN Dept Where
Emp.empid=Dept.empid
|
It includes non matching rows also unlike Inner Join.
|
Self
JOIN
|
SELECT a.name,b.name from emp a, emp b WHERE a.id=b.rollNumber
|
Joining a Table to itself.
|
What is object data type in oracle?
New/User defined objects
can be created from any database built in types or by their combinations. It
makes it easier to work with complex data like images, media (audio/video). An
object types is just an abstraction of the real world entities. An object has:
·
Name
·
Attributes
·
Methods
Example:
Create type MyName as object (first varchar2(20), second
varchar2(20));
Now you can use this
datatype while defining a table below:
Create table Emp (empno number(5),Name MyName);
One can access the
Atributes as Emp.Name.First and Emp.Name.Second
What is composite data type?
Composite data types are
also known as Collections .i.e RECORD, TABLE, NESTED TABLE, VARRAY.
Composite data types are
of 2 types:
PL/SQL RECORDS
PL/SQL Collections-
Table, Varray, Nested Table
Differences between CHAR and NCHAR in Oracle
NCHAR allow storing of
Unicode data in the database. One can store Unicode characters regardless of
the setting of the database characterset
Differences between CHAR and VARCHAR2 in Oracle
CHAR is used to store
fixed length character strings where as Varchar2 can store variable length
character strings. However, for performance sake Char is quit faster than
Varchar2.
If we have char name[10]
and store “abcde”, then 5 bytes will be filled with null values, whereas in
case of varchar2 name[10] 5 bytes will be used and other 5 bytes will be freed.
Differences between DATE and TIMESTAMP in Oracle
Date is used to store date
and time values including month, day, year, century, hours, minutes and
seconds. It fails to provide granularity and order of execution when finding
difference between 2 instances (events) having a difference of less than a
second between them.
TimeStamp datatype
stores everything that Date stores and additionally stores fractional seconds.
Date: 16:05:14
Timestamp: 16:05:14:000
Define CLOB and NCLOB
datatypes.
CLOB: Character large object. It is 4GB in length.
NCLOB: National Character large object. It is CLOB datatype for
multiple character sets , upto 4GB in length.
What is the BFILE datatypes?
It refers to an external binary file and its size is limited by
the operating system.
What is Varrays?
Varrays
are one-dimensional, arrays. The maximum length is defined in the declaration
itself. These can be only used when you know in advance about the maximum
number of items to be stored.
For
example: One person can have multiple phone numbers. If we are storing this
data in the tables, then we can store multiple phone numbers corresponding to
single Name. If we know the maximum number of phone numbers, then we can use
Varrays, else we use nested tables.
What is a cursor? What are its
types?
Cursor is used to access the access the result set present in the
memory. This result set contains the records returned on execution of a query.
They are of 2 types:
1.
Explicit
2.
Implicit
Explain the attributes of
implicit cursor
- %FOUND
- True, if the SQL statement has changed any rows.
- %NOTFOUND
- True, if record was not fetched successfully.
- %ROWCOUNT
- The number of rows affected by the SQL statement.
- %ISOPEN
- True, if there is a SQL statement being associated to the cursor or the
cursor is open.
Explain the attributes of
explicit cursor.
- %FOUND
- True, if the SQL statement has changed any rows.
- %NOTFOUND
- True, if record was not fetched successfully.
- %ROWCOUNT
- The number of rows affected by the SQL statement.
- %ISOPEN
- True, if there is a SQL statement being associated to the cursor or the
cursor is open.
What is the ref cursor in Oracle?
REF_CURSOR allows
returning a recordset/cursor from a Stored procedure.
It is of 2 types:
Strong REF_CURSOR: Returning columns with datatype and length
need to be known at compile time.
Weak REF_CURSOR: Structured does not need to be known at
compile time.
Syntax till Oracle 9i
create or replace package REFCURSOR_PKG as
TYPE WEAK8i_REF_CURSOR IS REF CURSOR;
TYPE STRONG REF_CURSOR IS REF CURSOR RETURN EMP%ROWTYPE;
end REFCURSOR_PKG;
Procedure returning the
REF_CURSOR:
create or replace procedure test( p_deptno IN number , p_cursor OUT
REFCURSOR_PKG.WEAK8i_REF_CURSOR)
is
begin
open p_cursor FOR
select *
from emp
where deptno = p_deptno;
end test;
Since Oracle 9i we can use SYS_REFCURSOR
create or replace procedure test( p_deptno IN number,p_cursor OUT SYS_REFCURSOR)
is
begin
open p_cursor FOR
select *
from emp
where deptno = p_deptno;
end test;
For Strong
create or replace procedure test( p_deptno IN number,p_cursor OUT REFCURSOR_PKG.STRONG
REF_CURSOR)
is
begin
open p_cursor FOR
select *
from emp
where deptno = p_deptno;
end test;
What are the drawbacks of a cursor?
Cursors allow row by row
processing of recordset. For every row, a network roundtrip is made unlike in a
Select query where there is just one network roundtrip. Cursors need more I/O
and temp storage resources, thus it is slower.
What is a cursor variable?
In case of a cursor,
Oracle opens an anonymous work area that stores processing information. This
area can be accessed by cursor variable which points to this area. One must
define a REF CURSOR type, and then declare cursor variables of that type to do
so.
E.g.:
/* Create the cursor type. */
TYPE company_curtype IS REF CURSOR RETURN company%ROWTYPE;
/* Declare a cursor variable of that type. */
company_curvar company_curtype;
What is implicit cursor in Oracle?
PL/SQL creates an
implicit cursor whenever an SQL statement is executed through the code, unless
the code employs an explicit cursor. The developer does not explicitly declare
the cursor, thus, known as implicit cursor.
E.g.:
In the following
UPDATE statement, which gives everyone in the company a 20% raise, PL/SQL
creates an implicit cursor to identify the set of rows in the table which would
be affected.
UPDATE emp
SET salary = salary * 1.2;
Can you pass a parameter to a cursor? Explain
with an explain
Parameterized cursor:
/*Create a table*/
create
table Employee(
ID
VARCHAR2(4 BYTE)NOT NULL,
First_Name
VARCHAR2(10 BYTE)
);
/*Insert some data*/
Insert
into Employee (ID, First_Name)
values (‘01’,’Harry’);
/*create cursor*/
declare
cursor
c_emp(cin_No NUMBER)is select count(*) from employee where id=cin_No;
v_deptNo
employee.id%type:=10;
v_countEmp
NUMBER;
begin
open
c_emp (v_deptNo);
fetch
c_emp into v_countEmp;
close
c_emp;
end
;
/*Using cursor*/
Open c_emp (10);
What is a package cursor?
A Package that returns a
Cursor type is a package cursor.
Eg:
Create
or replace package pkg_Util
is
cursor
c_emp is select * from employee;
r_emp
c_emp%ROWTYPE;
end
;
/*Another package using this
package*/
Create
or replace package body pkg_aDifferentUtil
is
procedure
p_printEmps is
begin
open
pkg_Util.c_emp;
loop
fetch
pkg_Util.c_emp into pkg_Util.r_emp;
exit
when pkg_Util.c_emp%NOTFOUND;
DBMS_OUTPUT.put_line(pkg_Util.r_emp.first_Name);
end
loop;
close
pkg_Util.c_emp;
end;
end
;
Explain why cursor variables are easier to use
than cursors.
Cursor variables are
preferred over a cursor for following reasons:
A cursor variable is not tied to a
specific query.
One can open a cursor variable for
any query returning the right set of columns. Thus, more flexible than cursors.
A cursor variable can be passed as a
parameter.
A cursor variable can refer to
different work areas.
What is locking, advantages of
locking and types of locking in oracle?
Locking is a mechanism to ensure data integrity while allowing
maximum concurrent access to data. It is used to implement concurrency control
when multiple users access table to manipulate its data at the same time.
Advantages of locking:
a.
Avoids deadlock conditions
b.
Avoids clashes in capturing the
resources
Types of locks:
a.
Read Operations: Select
b.
Write Operations: Insert, Update and Delete
What are transaction isolation
levels supported by Oracle?
Oracle supports 3 transaction isolation levels:
a.
Read committed (default)
b.
Serializable transactions
c.
Read only
What is SQL*Loader?
SQL*Loader
is a loader utility used for moving data from external files into the Oracle database
in bulk. It is used for high performance data loads.
What is Program Global Area
(PGA)?
The
Program Global Area (PGA): stores data and control information for a server
process in the memory. The PGA consists of a private SQL area and the session
memory.
What is a shared pool?
The shared pool is a key component. The shared pool is like a
buffer for SQL statements. It is to store the SQL statements so that the
identical SQL statements do not have to be parsed each time they're
executed.
38. What is snapshot in oracle?
A snapshot is a recent copy of a table from db or in some cases, a
subset of rows/cols of a table. They are used to dynamically replicate the data
between distributed databases.
What is a synonym?
A synonym is an alternative name tables, views,
sequences and other database objects.
What is a schema?
A schema is
a collection of database objects. Schema objects are logical structures created
by users to contain data. Schema objects include structures like tables, views,
and indexes.
What are Schema Objects?
Schema object is a
logical data storage structure. Oracle stores a schema object logically within
a tablespace of the
database.
What is a sequence in oracle?
Is a column in a table that allows a faster retrieval of data from
the table because this column contains data which uniquely identifies a row. It
is the fastest way to fetch data through a select query. This column has
constraints to achieve this ability. The constraints are put on this column so
that the value corresponding to this column for any row cannot be left blank
and also that the value is unique and not duplicated with any other value in
that column for any row.
Difference between a hot backup
and a cold backup
Cold backup:
It is taken when the database is closed and not available to
users. All files of the
database are copied (image copy). The datafiles cannot be changed during
the backup as they are locked, so the database remains in sync upon restore.
Hot backup: While taking the backup, if the database remains open and available to users then this kind of back up is referred to as hot backup. Image copy is made for all the files. As, the database is in use the entire time, so there might be changes made when backup is taking place. These changes are available in log files so the database can be kept in sync
What are the purposes of Import
and Export utilities?
Export and Import are the utilities provided by oracle in order to
write data in a binary format from the db to OS files and to read them back.
These utilities are used:
·
To take backup/dump of data in
OS files.
·
Restore the data from the
binary files back to the database.
·
move data from one owner to
another
Difference between ARCHIVELOG
mode and NOARCHIVELOG mode
Archivelog mode is a mode in which backup is taken for all the
transactions that takes place so as to recover the database at any point of
time.
Noarichvelog mode is in
which the log files are not written. This mode has a disadvantage that the
database cannot be recovered when required. It has an advantage over archivelog
mode which is increase in performance.
What are the original Export
and Import Utilities?
SQL*Loader,
External Tables
What are data pump Export and
Import Modes?
It is used for fast and bulk data movement within oracle
databases. Data Pump utility is faster than the original import & export
utilities.
What are SQLCODE and SQLERRM
and why are they important for PL/SQL developers?
SQLCODE: It returns the error number for the last encountered error.
SQLERRM: It returns the actual error message of the last encountered
error.
Explain user defined exceptions
in oracle.
A User-defined exception has to be defined by the programmer.
User-defined exceptions are declared in the declaration section with their type
as exception. They must be raised
explicitly using RAISE statement, unlike pre-defined exceptions that are raised
implicitly. RAISE statement can also be used to raise internal exceptions.
Exception:
DECLARE
DECLARE
userdefined
EXCEPTION;
BEGIN
<Condition on which exception is to be
raised>
RAISE userdefined;
EXCEPTION
WHEN userdefined THEN
<task to perform when exception is raised>
END;
Explain the concepts of
Exception in Oracle. Explain its type.
Exception is the raised when an error occurs while program
execution. As soon as the error occurs, the program execution stops and the
control are then transferred to exception-handling part.
There are two types of exceptions:
1.
Predefined : These types of exceptions
are raised whenever something occurs beyond oracle rules. E.g. Zero_Divide
2.
User defined: The ones that occur based on
the condition specified by the user. They must be raised explicitly using RAISE statement, unlike
pre-defined exceptions that are raised implicitly.
How exceptions are raised in
oracle?
There are four ways that you or the PL/SQL runtime engine can
raise an exception:
·
Exceptions are raised automatically by the program.
·
The programmer
raises a user defined exceptions.
·
The programmer raises pre defined exceptions
explicitly.
What is tkprof and how is it
used?
tkprof
is used for diagnosing performance issues. It formats a trace file
into a more readable format for performance analysis. It is needed because
trace file is a very complicated file to be read as it contains minute details
of program execution.
What is Oracle Server
Autotrace?
It is a utility that provides instant feedback on successful
execution of any statement (select, update, insert, delete). It is the most basic utility to test the
performance issues.