1.
What is bulk collect?
Bulk collect is part of PLSQL collection
where data is stored/ poped up into a variable.
Example:
Declare
Type sal_rec is table of number;
v_sal sal_rec;
Begin
select sal bulk collect into v_sal from
emp;
for r in 1.. v_sal.count loop
dbms_output.put_line(v_sal(r));
End loop;
End;
2. What is instead trigger?
Instead triggers are used for views.
3.
What is the difference between Oracle table & PL/SQL table?
Table is logical entity which holds the
data in dat file permanently. Where as scope of plsql table is limited to
the particular block / procedure. Refer above example sal_rec table
will hold data only till program is reaching to end;
4. What R built in Packages in Oracle?
There R more then 1000 oracle builtin
packges like:
Dbms_output,
dbms_utility dbms_pipe .............
5. What
is the difference between row migration & row changing?
Migration: The data is stored in blocks which use Pctfree 40%
and pctused 60% (normally). The 40% space is used for update and deletes statements.
When a condition may arise that update/delete statement takes more then pctfree
then it takes the space from anther block. This is called migration.
Row Chaining: while inserting the data if data of one row takes
more then one block then this row is stored in two blocks and rows are chained.
Oracle
Interview Questions
1. Explain the difference between a hot
backup and a cold backup and the benefits associated with each.
A
hot backup is basically taking a backup of the database while it is still up
and running and it must be in archive log mode. A cold backup is taking a
backup of the database while it is shut down and does not require being in
archive log mode. The benefit of taking a hot backup is that the database is
still available for use while the backup is occurring and you can recover the
database to any point in time. The benefit of taking a cold backup is that it
is typically easier to administer the backup and recovery process. In addition,
since you are taking cold backups the database does not require being in
archive log mode and thus there will be a slight performance gain as the
database is not cutting archive logs to disk.
2. You have just had to restore from
backup and do not have any control files. How would you go about bringing up
this database?
I
would create a text based backup control file, stipulating where on disk all
the data files were and then issue the recover command with the using backup
control file clause.
3. How do you switch from an init.ora
file to a spfile?
Issue
the create spfile from pfile command.
4. Explain the difference between a
data block, an extent and a segment.
A
data block is the smallest unit of logical storage for a database object. As
objects grow they take chunks of additional storage that are composed of
contiguous data blocks. These groupings of contiguous data blocks are called
extents. All the extents that an object takes when grouped together are
considered the segment of the database object.
5. Give two examples of how you might
determine the structure of the table DEPT.
Use
the describe command or use the dbms_metadata.get_ddl package.
6. Where would you look for errors from
the database engine?
In
the alert log.
7. Compare and contrast TRUNCATE and
DELETE for a table.
Both
the truncate and delete command have the desired outcome of getting rid of all
the rows in a table. The difference between the two is that the truncate
command is a DDL operation and just moves the high water mark and produces few
rollback data. The delete command, on the other hand, is a DML operation, which
will produce rollback data and thus take longer to complete.
8. Give the reasoning behind using an
index.
Faster
access to data blocks in a table.
9. Give the two types of tables
involved in producing a star schema and the type of data they hold.
Fact
tables and dimension tables. A fact table contains measurements while dimension
tables will contain data that will help describe the fact tables.
10. What type of index should you use
on a fact table?
11. Give some examples of the types of
database constraints you may find in Oracle and indicate their purpose.
·
A Primary or
Unique Key can be used to enforce uniqueness on one or more columns.
·
A Referential
Integrity Constraint can be used to enforce a Foreign Key relationship between
two tables.
·
A Not Null
constraint - to ensure a value is entered in a column
·
A Value
Constraint - to check a column value against a specific set of values.
12. A table is classified as a parent
table and you want to drop and re-create it. How would you do this without
affecting the children tables?
Disable
the foreign key constraint to the parent, drop the table, re-create the table, and
enable the foreign key constraint.
13. Explain the difference between
ARCHIVELOG mode and NOARCHIVELOG mode and the benefits and disadvantages to
each.
ARCHIVELOG
mode is a mode that you can put the database in for creating a backup of all
transactions that have occurred in the database so that you can recover to any
point in time. NOARCHIVELOG mode is basically the absence of ARCHIVELOG mode
and has the disadvantage of not being able to recover to any point in time.
NOARCHIVELOG mode does have the advantage of not having to write transactions
to an archive log and thus increases the performance of the database slightly.
14. What command would you use to
create a backup control file?
Alter
database backup control file to trace.
15. Give the stages of instance startup
to a usable state where normal users may access it.
STARTUP
NOMOUNT - Instance startup
STARTUP
MOUNT - The database is mounted
STARTUP
OPEN - The database is opened
16. What column differentiates the V$
views to the GV$ views and how?
The
INST_ID column which indicates the instance in a RAC environment the
information came from.
17. How would you go about generating
an EXPLAIN plan?
Create
a plan table with utlxplan.sql.
Use
the explain plan set statement_id = 'tst1' into plan_table for a SQL statement
Look
at the explain plan with utlxplp.sql or utlxpls.sql
18. How would you go about increasing
the buffer cache hit ratio?
Use
the buffer cache advisory over a given workload and then query the
v$db_cache_advice table. If a change was necessary then I would use the alter
system set db_cache_size command.
19. Explain an ORA-01555.
You
get this error when you get a snapshot too old within rollback. It can usually
be solved by increasing the undo retention or increasing the size of rollbacks.
You should also look at the logic involved in the application getting the error
message.
20. Explain the difference between
$ORACLE_HOME and $ORACLE_BASE.
ORACLE_BASE
is the root directory for oracle. ORACLE_HOME located beneath ORACLE_BASE is where
the oracle products reside.
Oracle
Interview Questions
1. How would you determine the time
zone under which a database was operating?
SELECT
dbtimezone FROM DUAL;
2. Explain the use of setting
GLOBAL_NAMES equal to TRUE.
It
ensures the use of consistent naming conventions for databases and links in a
networked environment.
3. What command would you use to
encrypt a PL/SQL application?
WRAP
4. Explain the difference between a
FUNCTION, PROCEDURE and PACKAGE.
They
are all named PL/SQL blocks.
Function
must return a value. Can be called inside a query.
Procedure
may or may not return value.
Package
is the collection of functions, procedures, variables which can be logically
grouped together.
5. Explain the use of table functions.
6. Name three advisory statistics you
can collect.
7. Where in the Oracle directory tree
structure are audit traces placed?
8. Explain materialized views and how
they are used.
9. When a user process fails, what
background process cleans up after it?
PMON
10. What background process refreshes
materialized views?
Job
Queue Process (CJQ)
11. How would you determine what
sessions are connected and what resources they are waiting for?
v$session,
v$session_wait
12. Describe what redo logs are.
13. How would you force a log switch?
Alter
system switch logfile;
14. Give two methods you could use to
determine what DDL changes have been made.
15. What does coalescing a tablespace
do?
Coalesce
simply takes contiguous free extents and makes them into a single bigger free
extent.
16. What is the difference between a
TEMPORARY tablespace and a PERMANENT tablespace?
TEMP
tablespace gets cleared once the transaction is done where as PERMANENT
tablespace retails the data.
17. Name a tablespace automatically
created when you create a database.
SYSTEM
18. When creating a user, what
permissions must you grant to allow them to connect to the database?
Grant
create session to username;
19. How do you add a data file to a
tablespace?
Alter
tablespace USERS add datafile '/ora01/oradata/users02.dbf' size 50M;
20. How do you resize a data file?
Alter
database datafile '/ora01/oradata/users02.dbf' resize 100M;
21. What view would you use to look at
the size of a data file?
dba_data_files
22. What view would you use to determine
free space in a tablespace?
dba_free_space
23. How would you determine who has
added a row to a table?
By
implementing an INSERT trigger for logging details during each INSERT operation
on the table
24. How can you rebuild an index?
ALTER
INDEX index_name REBUILD;
25. Explain what partitioning is and
what its benefit is.
A
table partition is also a table segment, and by using partitioning technique we
can enhance performance of table access.
26. You have just compiled a PL/SQL
package but got errors, how would you view the errors?
show
errors
27. How can you gather statistics on a
table?
Exec
dbms_stats.gather_table_stats
Also,
remember to analyze all associated indexes on that table using
dbms_stats.gather_index_stats
28. How can you enable a trace for a
session?
Alter
session set sql_trace='TRUE';
29. What is the difference between the
SQL*Loader and IMPORT utilities?
SQL*LOADER
loads external data which is in OS files to oracle database tables while IMPORT
utility imports data only which is exported by EXPORT utility of oracle
database.
30. Name two files used for network
connection to a database.
TNSNAMES.ORA
and SQLNET.ORA
Oracle
Interview Questions
1. Describe the difference between a
procedure, function and anonymous pl/sql block. Candidate should mention use of DECLARE statement,
a function must return a value while a procedure doesn't have to.
2. What is a mutating table error and how can you get around it?
This happens with triggers. It occurs
because the trigger is trying to update a row it is currently using. The usual
fix involves either use of views or temporary tables so the database is
selecting from one while updating the other.
3. Describe the use of %ROWTYPE and %TYPE in PL/SQL
Expected answer: %ROWTYPE allows you
to associate a variable with an entire table row. The %TYPE associates a
variable with a single column type.
4. What packages (if any) has Oracle provided for use by developers?
Expected answer: Oracle provides the DBMS_
series of packages. There are many which developers should be aware of such as
DBMS_SQL, DBMS_PIPE, DBMS_TRANSACTION, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT,
DBMS_JOB, DBMS_UTILITY, DBMS_DDL, UTL_FILE. If they can mention a few of these
and describe how they used them, even better. If they include the SQL routines
provided by Oracle, great, but not really what was asked.
5. Describe the use of PL/SQL tables
Expected answer: PL/SQL tables are scalar
arrays that can be referenced by a binary integer. They can be used to hold
values for use in later queries or calculations. In Oracle 8 they will be able
to be of the %ROWTYPE designation, or RECORD.
6. When is a declare statement needed?
The DECLARE statement is used in PL/SQL
anonymous blocks such as with stand alone, non-stored PL/SQL procedures. It
must come first in a PL/SQL stand alone file if it is used.
7. In what order should a open/fetch/loop set of commands in a PL/SQL block
be implemented if you use the %NOTFOUND cursor variable in the exit when
statement? Why?
Expected answer: OPEN then FETCH then LOOP
followed by the exit when. If not specified in this order will result in the
final return being done twice because of the way the %NOTFOUND is handled
by PL/SQL.
8. What are SQLCODE and SQLERRM and why are they important for PL/SQL
developers?
Expected answer: SQLCODE returns the value of
the error number for the last error encountered. The SQLERRM returns the actual
error message for the last error encountered. They can be used in exception
handling to report, or, store in an error log table, the error that occurred in
the code. These are especially useful for the WHEN OTHERS exception.
9. How can you find within a PL/SQL block, if a cursor is open?
Expected answer: Use the %ISOPEN
cursor status variable.
10. How can you generate debugging output from PL/SQL?
Expected answer: Use the DBMS_OUTPUT package.
Another possible method is to just use the SHOW ERROR command, but this only
shows errors. The DBMS_OUTPUT package can be used to show intermediate results
from loops and the status of variables as the procedure is executed. The new
package UTL_FILE can also be used.
11. What are the types of triggers?
Expected Answer: There are 12 types of
triggers in PL/SQL that consist of combinations of the BEFORE, AFTER, ROW, TABLE,
INSERT, UPDATE, DELETE and ALL key words: BEFORE ALL ROW INSERT AFTER ALL ROW
INSERT BEFORE INSERT AFTER INSERT etc.
Oracle
Interview Questions
1.
A tablespace has a table with 30 extents in it. Is this bad? Why or why not.
Multiple extents in and of themselves
aren’t bad. However if you also have chained rows this can hurt performance.
2. How do you set up tablespaces during
an Oracle installation?
You should always attempt to use the
Oracle Flexible Architecture standard or another partitioning scheme to ensure
proper separation of SYSTEM, ROLLBACK, REDO LOG, DATA, TEMPORARY and INDEX
segments.
3. you see multiple fragments in the
SYSTEM tablespace, what should you check first?
Ensure that users don?t have the SYSTEM
tablespace as their TEMPORARY or DEFAULT tablespace assignment by checking the
DBA_USERS view.
4. What are some indications that you
need to increase the SHARED_POOL_SIZE parameter?
Poor data dictionary or library cache hit
ratios, getting error ORA-04031. Another indication is steadily decreasing
performance with all other tuning parameters the same.
5. What is the general guideline for
sizing db_block_size and db_multi_block_read for an application that does many
full table scans?
Oracle almost always reads in 64k chunks.
The two should have a product equal to 64 or a multiple of 64.
6. What is the fastest query method for
a table?
Fetch by rowid
7. Explain the use of TKPROF? What
initialization parameter should be turned on to get full TKPROF output?
The tkprof tool is a tuning tool used to
determine cpu and execution times for SQL statements. You use it by first
setting timed_statistics to true in the initialization file and then turning on
tracing for either the entire database via the sql_trace parameter or for the session
using the ALTER SESSION command. Once the trace file is generated you run the
tkprof tool against the trace file and then look at the output from the tkprof
tool. This can also be used to generate explain plan output.
8. When looking at v$sysstat you see
that sorts (disk) is high. Is this bad or good? If bad -How do you correct it?
If you get excessive disk sorts this is
bad. This indicates you need to tune the sort area parameters in the
initialization files. The major sorts are parameter is the SORT_AREA_SIZe
parameter.
9. When should you increase copy
latches? What parameters control copy latches
When you get excessive contention for the
copy latches as shown by the "redo copy" latch hit ratio. You can
increase copy latches via the initialization parameter LOG_SIMULTANEOUS_COPIES
to twice the number of CPUs on your system.
10. Where can you get a list of all
initialization parameters for your instance? How about an indication if they
are default settings or have been changed
You can look in the init.ora file for an
indication of manually set parameters. For all parameters, their value and
whether or not the current value is the default value, look in the v$parameter
view.
11. Describe hit ratio as it pertains to
the database buffers. What is the difference between instantaneous and
cumulative hit ratio and which should be used for tuning?
The hit ratio is a measure of how many
times the database was able to read a value from the buffers verses how many
times it had to re-read a data value from the disks. A value greater than
80-90% is good, less could indicate problems. If you simply take the ratio of
existing parameters this will be a cumulative value since the database started.
If you do a comparison between pairs of readings based on some arbitrary time
span, this is the instantaneous ratio for that time span. Generally speaking an
instantaneous reading gives more valuable data since it will tell you what your
instance is doing for the time it was generated over.
12. Discuss row chaining, how does it
happen? How can you reduce it? How do you correct it?
Row chaining occurs when a VARCHAR2 value
is updated and the length of the new value is longer than the old value and won’t
fit in the remaining block space. This results in the row chaining to another
block. It can be reduced by setting the storage parameters on the table to
appropriate values. It can be corrected by export and import of the effected
table.
Oracle
Interview Questions
1.
Give one method for transferring a table from one schema to another:
There are several possible methods,
export-import, CREATE TABLE... AS SELECT, or COPY.
2. What is the purpose of the IMPORT
option IGNORE? What is its default setting?
The IMPORT IGNORE option tells import to
ignore "already exists" errors. If it is not specified the tables
that already exist will be skipped. If it is specified, the error is ignored
and the table’s data will be inserted. The default value is N.
3. You have a rollback segment in a
version 7.2 database that has expanded beyond optimal, how can it be restored
to optimal
Use the ALTER TABLESPACE ..... SHRINK
command.
4. If the DEFAULT and TEMPORARY
tablespace clauses are left out of a CREATE USER command what happens? Is this
bad or good? Why
The user is assigned the SYSTEM tablespace
as a default and temporary tablespace. This is bad because it causes user
objects and temporary segments to be placed into the SYSTEM tablespace
resulting in fragmentation and improper table placement (only data dictionary
objects and the system rollback segment should be in SYSTEM).
5. What are some of the Oracle provided
packages that DBAs should be aware of
Oracle provides a number of packages in
the form of the DBMS_ packages owned by the SYS user. The packages used by DBAs
may include: DBMS_SHARED_POOL, DBMS_UTILITY, DBMS_SQL, DBMS_DDL, DBMS_SESSION,
DBMS_OUTPUT and DBMS_SNAPSHOT. They may also try to answer with the UTL*.SQL or
CAT*.SQL series of SQL procedures. These can be viewed as extra credit but aren’t
part of the answer.
6. What happens if the constraint name
is left out of a constraint clause?
The Oracle system will use the default
name of SYS_Cxxxx where xxxx is a system generated number. This is bad since it
makes tracking which table the constraint belongs to or what the constraint
does harder.
7.
What happens if a tablespace clause is left off of a primary key constraint clause?
These results in the index that is
automatically generated being placed in then users default tablespace. Since
this will usually be the same tablespace as the table is being created in, this
can cause serious performance problems.
8.
What is the proper method for disabling and re-enabling a primary key constraint?
You use the ALTER TABLE command for both.
However, for the enable clause you must specify the USING INDEX and TABLESPACE
clause for primary keys.
9.
What happens if a primary key constraint is disabled and then enabled without
fully specifying the index clause?
The index is created in the user’s default
tablespace and all sizing information is lost. Oracle doesn’t store this
information as a part of the constraint definition, but only as part of the
index definition, when the constraint was disabled the index was dropped and
the information is gone.
10.
(On UNIX) when should more than one DB writer process be used? How many should
be used
If the UNIX system being used is capable
of asynchronous IO then only one is required, if the system is not capable of
asynchronous IO then up to twice the number of disks used by Oracle number of
DB writers should be specified by use of the db_writers initialization
parameter.
11.
You are using hot backup without being in archive log mode, can you recover in
the event of a failure? Why or why not
You can’t use hot backup without being in
archivelog mode. So no, you couldn’t recover.
12.
What causes the "snapshot too old" error? How can this be prevented
or mitigated
This is caused by large or long running
transactions that have either wrapped onto their own rollback space or have had
another transaction write on part of their rollback space. This can be
prevented or mitigated by breaking the transaction into a set of smaller
transactions or increasing the size of the rollback segments and their extents.
13. How can you tell if a database object
is invalid By checking the status column of the DBA_, ALL_ or USER_OBJECTS
views, depending upon whether you own or only have permission on the view or
are using a DBA account.
13.
A user is getting an ORA-00942 error yet you know you have granted them
permission on the table, what else should you check
You need to check that the user has
specified the full name of the object (select empid from scott.emp; instead of
select empid from emp;) or has a synonym that balls to the object (create
synonym emp for scott.emp;)
14.
A developer is trying to create a view and the database won’t let him. He has
the "DEVELOPER" role which has the "CREATE VIEW" system
privilege and SELECT grants on the tables he is using, what is the problem
You need to verify the developer has
direct grants on all tables used in the view. You can’t create a stored object
with grants given through views.
15.
If you have an example table, what is the best way to get sizing data for the
production table implementation?
The best way is to analyze the table and
then use the data provided in the DBA_TABLES view to get the average row length
and other pertinent data for the calculation. The quick and dirty way is to
look at the number of blocks the table is actually using and ratio the number
of rows in the table to its number of blocks against the number of expected
rows.
16.
How can you find out how many users are currently logged into the database? How
can you find their operating system id?
There are several ways. One is to look at
the v$session or v$process views. Another way is to check the current_logins
parameter in the v$sysstat view. Another if you are on UNIX is to do a "ps
-ef|grep oracle|wc –l” command, but this only works against a single instance
installation.
17.
a user selects from a sequence and gets back two values, his select is: SELECT
pk_seq.nextval FROM dual; What is the problem Somehow two values have been
inserted into the dual table.
This table is a single row, single column
table that should only have one value in it.
18. How can you determine if an index
needs to be dropped and rebuilt?
Run the ANALYZE INDEX command on the index
to validate its structure and then calculate the ratio of
LF_BLK_LEN/LF_BLK_LEN+BR_BLK_LEN and if it isn?t near 1.0 (i.e. greater than
0.7 or so) then the index should be rebuilt. Or if the ratio BR_BLK_LEN/
LF_BLK_LEN+BR_BLK_LEN is nearing 0.3.
Oracle
Interview Questions
1.
How can variables are passed to a SQL routine
By use of the & symbol. For passing in
variables the numbers 1-8 can be used (&1, &2,...,&8) to pass the
values after the command into the SQLPLUS session. To be prompted for a
specific variable, place the ampersanded variable in the code itself:
"select * from dba_tables where owner=&owner_name;”. Use of double
ampersands tells SQLPLUS to resubstitute the value for each subsequent use of
the variable, a single ampersand will cause a reprompt for the value unless an
ACCEPT statement is used to get the value from the user.
2.
You want to include a carriage return/linefeed in your output from a SQL
script, how can you do this
The best method is to use the CHR()
function (CHR(10) is a return/linefeed) and the concatenation function
"||". Another method, although it is hard to document and isn?t
always portable is to use the return/linefeed as a part of a quoted string.
3.
How can you call a PL/SQL procedure from SQL?
By use of the EXECUTE (short form EXEC)
command.
4.
How do you execute a host operating system command from within SQL?
By use of the exclamation ball "!"
(in UNIX and some other OS) or the HOST (HO) command.
5.
You want to use SQL to build SQL, what is this called and give an example
This is called dynamic SQL. An example
would be: set lines 90 pages 0 termout off feedback off verify off spool
drop_all.sql select ?drop user ?||username||? cascade;? from
dba_users where username not in ("SYS?,?SYSTEM?); spool off Essentially
you are looking to see that they know to include a command (in this case DROP
USER...CASCADE;) and that you need to concatenate using the ?||? the
values selected from the database.
6.
What SQLPlus command is used to format output from a select?
This is best done with the COLUMN command.
7.
You want to group the following set of select returns, what you can group on
Max(sum_of_cost), min(sum_of_cost),
count(item_no), item_no The only column that can be grouped on is the
"item_no" column, the rest have aggregate functions associated with
them.
8.
What special Oracle feature allows you to specify how the cost based system
treats a SQL STATEMENT?
The COST based system allows the use of Hints
to control the optimizer path selection. If they can give some example hints
such as FIRST ROWS, ALL ROWS, USING INDEX, STAR, even better.
9.
You want to determine the location of identical rows in a table before
attempting to place a unique index on the table, how can this be done?
Oracle tables always have one guaranteed
unique column, the rowid column. If you use a min/max function against your
rowid and then select against the proposed primary key you can squeeze out the
rowids of the duplicate rows pretty quick. For example: select rowid from emp e
where e.rowid > (select min(x.rowid) from emp x where x.emp_no = e.emp_no);
In the situation where multiple columns make up the proposed key, they must all
be used in the where clause.
10.
What is a Cartesian product?
A Cartesian product is the result of an
unrestricted join of two or more tables. The result set of a three table
Cartesian product will have x * y * z number of rows where x, y, z correspond
to the number of rows in each table involved in the join.
11. You are joining a local and a remote
table, the network manager complains about the traffic involved, how can you
reduce the network traffic Push the processing of the remote data to the remote
instance by using a view to pre-select the information for the join. This will
result in only the data required for the join being sent across.
11. What is the default ordering of an
ORDER BY clause in a SELECT statement
Ascending
12.
What is tkprof and how is it used?
The tkprof tool is a tuning tool used to
determine cpu and execution times for SQL statements. You use it by first
setting timed_statistics to true in the initialization file and then turning on
tracing for either the entire database via the sql_trace parameter or for the
session using the ALTER SESSION command. Once the trace file is generated you
run the tkprof tool against the trace file and then look at the output from the
tkprof tool. This can also be used to generate explain plan output.
13.
What is explain plan and how is it used
The EXPLAIN PLAN command is a tool to tune
SQL statements. To use it you must have an explain_table generated in the user
you are running the explain plan for. This is created using the utlxplan.sql
script. Once the explain plan table exists you run the explain plan command
giving as its argument the SQL statement to be explained. The explain_plan
table is then queried to see the execution plan of the statement. Explain plans
can also be run using tkprof.
14.
How do you set the number of lines on a page of output? The width
The SET command in SQLPLUS is used to
control the number of lines generated per page and the width of those lines,
for example SET PAGESIZE 60 LINESIZE 80 will generate reports that are 60 lines
long with a line width of 80 characters. The PAGESIZE and LINESIZE options can
be shortened to PAGES and LINES.
15.
How do you prevent output from coming to the screen?
The SET option TERMOUT controls output to
the screen. Setting TERMOUT OFF turns off screen output. This option can be
shortened to TERM.
16.
How do you prevent Oracle from giving you informational messages during and
after a SQL statement execution?
The SET options FEEDBACK and VERIFY can be
set to OFF.
17.
How do you generate file output from SQL?
By use of the SPOOL comm.
Oracle
Interview Questions
1.
What is a CO-RELATED SUBQUERY?
A CO-RELATED SUBQUERY is one that has a
correlation name as table or view designator in the FROM clause of the outer
query and the same correlation name as a qualifier of a search condition in the
WHERE clause of the sub query.
E.g.
SELECT
field1 from table1 X
WHERE field2>(select avg(field2) from table1 Y
where
field1=X.field1);
(The sub query in a correlated sub query is revaluated for every row of the
table or view named in the outer query.)
2.
What are various joins used while writing SUBQUERIES
Self join - It’s a join foreign key of a
table references the same table.
Outer Join -- It’s a join condition used
where one can query all the rows of one of the tables in the join condition
even though they don't satisfy the join condition.
Equi-join -- It’s a join condition that
retrieves rows from one or more tables in which one or more columns in one
table are equal to one or more columns in the second table.
3.
What are various constraints used in SQL
NULL NOT NULL CHECK DEFAULT
4.
What are different Oracle database objects?
TABLES VIEWS INDEXES SYNONYMS SEQUENCES
TABLESPACES etc
5.
What is difference between Rename and Alias?
Rename is a permanent name given to a
table or column whereas Alias is a temporary name given to a table or columns
which do not exist once the SQL statement is executed.
6.
What is a view?
A view is stored procedure based on one or
more tables, it’s a virtual table.
7.
What are various privileges that a user can grant to another user?
SELECT CONNECT RESOURCE
8.
What is difference between UNIQUE and PRIMARY KEY CONSTRAINTS?
A table can have only one PRIMARY KEY
whereas there can be any number of UNIQUE keys. The columns that compose PK are
automatically define NOT NULL, whereas a column that compose a UNIQUE is not
automatically defined to be mandatory must also specify the column is NOT NULL.
9.
Can a primary key contain more than one column?
Yes
10.
How you will avoid duplicating records in a query
By using DISTINCT
11.
What is difference between SQL and SQL*PLUS
SQL*PLUS is a command line tool where as
SQL and PL/SQL language interface and reporting tool. It’s a command line tool
that allows user to type SQL commands to be executed directly against an Oracle
database. SQL is a language used to query the relational database (DML, DCL,
and DDL). SQL*PLUS commands are used to format query result, Set options, Edit
SQL commands and PL/SQL.
12.
Which data type is used for storing graphics and images?
LONG RAW data type is used for storing
BLOB's (binary large objects).
13.
How will you delete duplicating rows from a base table?
DELETE FROM table_name A WHERE
rowid>(SELECT min(rowid) from table_name B where B.table_no=A.table_no);
CREATE TABLE new_table AS SELECT DISTINCT * FROM old_table;
DROP old_table RENAME new_table TO
old_table DELETE FROM table_name A WHERE rowid NOT IN (SELECT MAX(ROWID) FROM
table_name GROUP BY column_name)
14. What is difference between SUBSTR
and INSTR?
SUBSTR returns a specified portion of a
string
E.g. SUBSTR('BCDEF',4) output BCDE INSTR
provides character position in which a pattern is found in a string.
E.g. INSTR('ABC-DC-F','-',2) output 7 (2nd
occurrence of '-')
15.
There is a string '120000 12 0 .125’, how you will find the position of the
decimal place
INSTR('120000 12 0 .125','.',1) output 13
16.
There is a '%' sign in one field of a column. What will be the query to find
it.
'\' should be used before '%'.
17.
When you use WHERE clause and when you use HAVING clause
HAVING clause is used when you want to
specify a condition for a group function and it is written after GROUP BY
clause The WHERE clause is used when you want to specify a condition for
columns, single row functions except group functions and it is written before
GROUP BY clause if it is used.
18.
Which is more faster - IN or EXISTS
EXISTS is faster than IN because EXISTS
returns a Boolean value whereas IN returns a value.
Appropriate answer will be....
Result of the sub query is small then
"IN" is typically more appropriate. And Result of the sub query is
big/large/long then "EXIST" is more appropriate.
19.
What is an OUTER JOIN?
Outer Join--It’s a join condition used
where you can query all the rows of one of the tables in the join condition
even though they don’t satisfy the join condition.
20.
How you will avoid your query from using indexes
SELECT * FROM emp Where emp_no+' '=12345;
i.e you have to concatenate the column
name with space within codes in the where condition.
SELECT /*+ FULL(a) */ ename, emp_no from
emp where emp_no=1234;
i.e using HINTS
Oracle
Interview Questions
1.
What is a pseudo column? Give some examples
It is a column that is not an actual
column in the table.
eg USER, UID, SYSDATE, ROWNUM, ROWID,
NULL, AND LEVEL.
Suppose customer table is there having
different columns like customer no, payments. What will be the query to select
top three max payments?
2.
What is the purpose of a cluster?
Oracle does not allow a user to
specifically locate tables, since that is a part of the function of the RDBMS.
However, for the purpose of increasing performance, oracle allows a developer
to create a CLUSTER. A CLUSTER provides a means for storing data from different
tables together for faster retrieval than if the table placement were left to
the RDBMS.
3.
What is a cursor?
Oracle uses work area to execute SQL
statements and store processing information PL/SQL construct called a cursor
lets you name a work area and access its stored information A cursor is a
mechanism used to fetch more than one row in a Pl/SQl block.
4.
Difference between an implicit & an explicit cursor.
PL/SQL declares a cursor implicitly for
all SQL data manipulation statements, including queries that return only one
row. However, queries that return more than one row you must declare an
explicit cursor or use a cursor FOR loop.
Explicit cursor is a cursor in which the
cursor name is explicitly assigned to a SELECT statement via the CURSOR...IS
statement. An implicit cursor is used for all SQL statements Declare, Open,
Fetch, Close. An explicit cursors are used to process multi row SELECT
statements an implicit cursor is used to process INSERT, UPDATE, DELETE and
single row SELECT. .INTO statements.
5.
What are cursor attributes?
%ROWCOUNT %NOTFOUND %FOUND %ISOPEN
6.
What is a cursor for loop?
Cursor For Loop is a loop where oracle
implicitly declares a loop variable, the loop index that of the same record
type as the cursor's record.
7.
Difference between NO DATA FOUND and %NOTFOUND
NO DATA FOUND is an exception raised only
for the SELECT....INTO statements when the where clause of the query does not
match any rows. When the where clause of the explicit cursor does not match any
rows the %NOTFOUND attribute is set to TRUE instead.
8.
What a SELECT FOR UPDATE cursor represent.
SELECT......FROM......FOR......UPDATE [OF
column-reference] [NOWAIT] the processing done in a fetch loop modifies the
rows that have been retrieved by the cursor. A convenient way of modifying the
rows is done by a method with two parts: the FOR UPDATE clause in the cursor
declaration, WHERE CURRENT OF CLAUSE in an UPDATE or declaration statement.
9.
What 'WHERE CURRENT OF ' clause does in a cursor?
LOOP
SELECT num_credits INTO v_numcredits FROM classes
WHERE dept=123 and course=101;
UPDATE students
SET current_credits=current_credits+v_numcredits
WHERE CURRENT OF X;
END LOOP
COMMIT;
END;
10. What is use of a cursor variable? How
it is defined.
A cursor variable is associated with
different statements at run time, which can hold different values at run time.
Static cursors can only be associated with one run time query. A cursor
variable is reference type(like a pointer in C). Declaring a cursor variable:
TYPE type_name IS REF CURSOR RETURN return_type type_name is the name of the
reference type,return_type is a record type indicating the types of the select
list that will eventually be returned by the cursor variable.
11.
What should be the return type for a cursor variable? Can we use a scalar data
type as return type?
The return type for a cursor must be a
record type. It can be declared explicitly as a user-defined or %ROWTYPE
can be used.
E.g.
TYPE t_studentsref IS REF CURSOR RETURN students%ROWTYPE
12.
How you open and close a cursor variable. Why it is required.
OPEN cursor variable FOR
SELECT...Statement CLOSE cursor variable In order to associate a cursor
variable with a particular SELECT statement OPEN syntax is used. In order to
free the resources used for the query CLOSE statement is used.
13.
How you were passing cursor variables in PL/SQL 2.2.
In PL/SQL 2.2 cursor variables cannot be
declared in a package. This is because the storage for a cursor variable has to
be allocated using Pro*C or OCI with version 2.2,the only means of passing a
cursor variable to a PL/SQL block is via bind variable or a procedure
parameter.
14.
Can cursor variables be stored in PL/SQL tables? If yes how? If not why
No, a cursor variable points a row which
cannot be stored in a two-dimensional PL/SQL table.
15.
Difference between procedure and function.
Functions are named PL/SQL blocks that
return a value and can be called with arguments procedure a named block that
can be called with parameter. A procedure all is a PL/SQL statement by itself,
while a Function call is called as part of an expression.
16.
What are different modes of parameters used in functions and procedures?
IN OUT INOUT
17.
What is difference between a formal and an actual parameter?
The variables declared in the procedure
and which are passed, as arguments are called actual, the parameters in the
procedure declaration. Actual parameters contain the values that are passed to
a procedure and receive results. Formal parameters are the placeholders for the
values of actual parameters
18.
Can the default values be assigned to actual parameters?
Yes
19.
Can a function take OUT parameters? If not why
Yes. A function returns a value, but can
also have one or more OUT parameters. it is best practice, however to use a
procedure rather than a function if you have multiple values to return.
20.
What is syntax for dropping a procedure and a function .Are these operations possible?
Drop Procedure procedure_name
Drop Function function_name
21. What are ORACLE PRECOMPILERS?
Using ORACLE PRECOMPILERS ,SQL statements
and PL/SQL blocks can be contained inside 3GL programs written in
C,C++,COBOL,PASCAL, FORTRAN,PL/1 AND ADA. The Precompilers are known as
Pro*C,Pro*Cobol,... This form of PL/SQL is known as embedded pl/sql,the
language in which pl/sql is embedded is known as the host language. The pre-compiler
translates the embedded SQL and pl/sql statements into calls to the pre-compiler
runtime library. The output must be compiled and linked with this library to creator
an executable.
22.
What is OCI? What are its uses?
Oracle Call Interface is a method of accessing
database from a 3GL program. Uses--No precompiler is required, PL/SQL blocks
are executed like other DML statements.
The OCI library provides
-functions to parse SQL statements
-bind input variables
-bind output variables
-execute statements
-fetch the results
23. Difference between database triggers
and form triggers.
a) Data base trigger (DBT) fires when a
DML operation is performed on a data base table. Form trigger (FT) Fires when
user presses a key or navigates between fields on the screen b) can be row
level or statement levels No distinction between row level and statement level.
c) Can manipulate data stored in Oracle tables via SQL Can manipulate data in
Oracle tables as well as variables in forms. d) Can be fired from any session
executing the triggering DML statements. Can be fired only from the form that
defines the trigger. e) Can cause other database triggers to fire. Can cause
other database triggers to fire, but not other form triggers.
24.
What is an UTL_FILE? What are different procedures and functions associated with it?
UTL_FILE is a package that adds the
ability to read and write to operating system files Procedures associated with
it are FCLOSE, FCLOSE_ALL and 5 procedures to output data to a file PUT,
PUT_LINE, NEW_LINE, PUTF, FFLUSH.PUT, FFLUSH.PUT_LINE,FFLUSH.NEW_LINE.
Functions associated with it are FOPEN, ISOPEN.
25.
Can you use a commit statement within a database trigger?
No
26.
What is the maximum buffer size that can be specified using the
DBMS_OUTPUT.ENABLE function?
1,000,000
Oracle
Interview Questions
1.
When looking at the estate events report you see that you are getting busy
buffer waits. Is this bad? How can you find what is causing it
Buffer busy waits could indicate contention
in redo, rollback or data blocks. You need to check the v$waitstat view to see
what areas are causing the problem. The value of the "count" column
tells where the problem is, the "class" column tells you with what.
UNDO is rollback segments, DATA is data base buffers.
2. If you see contention for library
caches how you can fix it
Increase the size of the shared pool.
3. If you see statistics that deal with
"undo" what are they really talking about?
Rollback segments and associated
structures.
4. If a tablespace has a default pct increase
of zero what will this cause (in relationship to the smon process)
The SMON process won’t automatically
coalesce its free space fragments.
5. If a tablespace shows excessive fragmentation what are some methods to
defragment the tablespace? (7.1,7.2 and 7.3 only)
In Oracle 7.0 to 7.2 The use of the 'alter
session set events 'immediate trace name coalesce level ts#';? command is the
easiest way to defragment contiguous free space fragmentation. The ts#
parameter corresponds to the ts# value found in the ts$ SYS table. In version
7.3 the ?alter tablespace coalesce;? is best. If the free space isn?t
contiguous then export, drop and import of the tablespace contents may be the
only way to reclaim non-contiguous free space.
6.
How can you tell if a tablespace has excessive fragmentation?
If a select against the dba_free_space
table shows that the count of tablespaces extents is greater than the count of
its data files, then it is fragmented.
7.
You see the following on a status report: redo log space requests 23 redo log
space wait time 0 Is this something to worry about? What if redo log space wait
time is high? How can you fix this
since the wait time is zero, no. If the wait time was high it might indicate a
need for more or larger redo logs.
8.
What can cause a high value for recursive calls? How can this are fixed
A high value for recursive calls is cause
by improper cursor usage, excessive dynamic space management actions, and or
excessive statement re-parses. You need to determine the cause and correct it by
either relinking applications to hold cursors, use proper space management
techniques (proper storage and sizing) or ensure repeat queries are placed in
packages for proper reuse.
9.
If you see a pin hit ratio of less than 0.8 in the estat library cache report
is this a problem? If so, how do you fix it
This indicates that the shared pool may be
too small. Increase the shared pool size.
10.
If you see the value for reloads is high in the estat library cache report is
this a matter for concern
Yes, you should strive for zero reloads if
possible. If you see excessive reloads then increase the size of the shared
pool.
11. You look at the dba_rollback_segs
view and see that there is a large number of shrinks and they are of relatively
small size, is this a problem? How can it be fixed if it is a problem?
A large number of small shrinks indicates
a need to increase the size of the rollback segment extents. Ideally you should
have no shrinks or a small number of large shrinks. To fix this just increase
the size of the extents and adjust optimal accordingly.
12. You look at the dba_rollback_segs
view and see that you have a large number of wraps is this a problem
A large number of wraps indicates that
your extent size for your rollback segments are probably too small. Increase
the size of your extents to reduce the number of wraps. You can look at the
average transaction size in the same view to get the information on transaction
size.
Oracle
Interview Questions
1.
You have just started a new instance with a large SGA on a busy existing
server. Performance is terrible, what should you check for
The first thing to check with a large SGA
is that it isn’t being swapped out.
2.
What OS user should be used for the first part of an Oracle installation (on
UNIX)
You must use root first.
3.
When should the default values for Oracle initialization parameters be used as
is
Never
4.
How many control files should you have? Where should they be located?
At least 2 on separate disk spindles. Be
sure they say on separate disks, not just file systems.
5.
How many redo logs should you have and how should they be configured for
maximum recoverability
You should have at least three groups of
two redo logs with the two logs each on a separate disk spindle (mirrored by
Oracle). The redo logs should not be on raw devices on UNIX if it can be
avoided.
6.
You have a simple application with no "hot" tables (i.e. uniform IO
and access requirements). How many disks should you have assuming standard
layout for SYSTEM, USER, TEMP and ROLLBACK tablespaces
At least 7, see disk configuration answer
above.
7.
Describe third normal form
Something like: In third normal form all
attributes in an entity are related to the primary key and only to the primary
key
8.
Is the following statement true or false?
"All relational databases must be in
third normal form" False. While 3NF is good for logical design most
databases, if they have more than just a few tables, will not perform well using
full 3NF. Usually some entities will be de-normalized in the logical to
physical transfer process.
9.
What is an ERD?
An ERD is an Entity-Relationship-Diagram.
It is used to show the entities and relationships for a database logical model.
10.
Why are recursive relationships bad? How do you resolve them?
A recursive relationship (one where a
table relates to itself) is bad when it is a hard relationship (i.e. neither
side is a "may" both are "must") as this can result in it
not being possible to put in a top or perhaps a bottom of the table (for
example in the EMPLOYEE table you couldn’t put in the PRESIDENT of the company
because he has no boss, or the junior janitor because he has no subordinates).
These types of relationships are usually resolved by adding a small
intersection entity.
11.
What does a hard one-to-one relationship mean (one where the relationship on
both ends is "must")
Expected answer: This means the two
entities should probably be made into one entity.
12.
How should a many-to-many relationship be handled
By adding an intersection entity table
13.
What is an artificial (derived) primary key? When an artificial (or derived)
primary key should be used
A derived key comes from a sequence.
Usually it is used when a concatenated key becomes too cumbersome to use as a
foreign key.
Oracle
Interview Questions
1.
When should you consider de-normalization?
Whenever performance analysis indicates it
would be beneficial to do so without compromising data integrity.
2.
How can you determine if an Oracle instance is up from the operating system level?
There are several base Oracle processes
that will be running on multi-user operating systems, these will be smon, pmon,
dbwr and lgwr. Any answer that has them using their operating system process
showing feature to check for these is acceptable. For example, on UNIX a ps
-ef|grep dbwr will show what instances are up.
3.
Users from the PC clients are getting messages indicating : ORA-06114:
(Cnct err, can't get err txt. See Servr Msgs & Codes Manual)
What could the problem be the instance
name is probably incorrect in their connection string.
4.
Users from the PC clients are getting the following error stack: ERROR:
ORA-01034: ORACLE not available ORA-07318: smsget: open error when opening
sgadef.dbf file. HP-UX Error: 2: No such file or directory
What is the probable cause The Oracle instance is shutdown that they are trying
to access, restart the instance.
5.
How can you determine if the SQLNET process is running for SQLNET V1? How about
V2
For SQLNET V1 check for the existence of
the orasrv process. You can use the command "tcpctl status" to get a
full status of the V1 TCPIP server, other protocols have similar command
formats. For SQLNET V2 check for the presence of the LISTENER process(s) or you
can issue the command "lsnrctl status".
6.
What file will give you Oracle instance status information? Where is it located
The alert.ora log. It is located in the
directory specified by the background_dump_dest parameter in the v$parameter
table.
7. Users aren’t being allowed on the
system. The following message is received: ORA-00257 archiver is stuck. Connect
internal only, until freed what is the problem
The archive destination is probably full,
backup the archive logs and remove them and the archiver will re-start.
8. Where would you look to find out if a
redo log was corrupted assuming you are using Oracle mirrored redo logs
There is no message that comes to the
SQLDBA or SRVMGR programs during startup in this situation, you must check the
alert.log file for this information.
9. You attempt to add a datafile and
get: ORA-01118: cannot add anymore datafiles: limit of 40 exceeded what is the
problem and how you can fix it When the database was created the db_files
parameter in the initialization file was set to 40. You can shutdown and reset
this to a higher value, up to the value of MAX_DATAFILES as specified at
database creation. If the MAX_DATAFILES is set to low, you will have to rebuild
the control file to increase it before proceeding.
10.
You look at your fragmentation report and see that smon hasn?t coalesced any of
you tablespaces, even though you know several have large chunks of contiguous
free extents. What is the problem?
Check the dba_tablespaces view for the value of pct_increase for the
tablespaces. If pct_increase is zero, smon will not coalesce their free space.
11. Your users get the following error:
ORA-00055 maximum number of DML locks exceeded What is the problem and how do
you fix it
The number of DML Locks is set by the
initialization parameter DML_LOCKS. If this value is set to low (which it is by
default) you will get this error. Increase the value of DML_LOCKS. If you are
sure that this is just a temporary problem, you can have them wait and then try
again later and the error should clear.
12.
You get a call from you backup DBA while you are on vacation. He has corrupted
all of the control files while playing with the ALTER DATABASE BACKUP
CONTROLFILE command. What do you do?
As long as all datafiles are safe and he
was successful with the BACKUP control file command you can do the following:
CONNECT INTERNAL STARTUP MOUNT (Take any read-only tablespaces offline before
next step ALTER DATABASE DATAFILE .... OFFLINE;) RECOVER DATABASE USING BACKUP
CONTROLFILE ALTER DATABASE OPEN RESETLOGS; (bring read-only tablespaces back
online) Shutdown and backup the system, then restart If they have a recent
output file from the ALTER DATABASE BACKUP CONTROL FILE TO TRACE; command, they
can use that to recover as well. If no backup of the control file is available
then the following will be required: CONNECT INTERNAL STARTUP NOMOUNT CREATE
CONTROL FILE .....; However, they will need to know all of the data files, log
files, and settings for MAXLOGFILES, MAXLOGMEMBERS, MAXLOGHISTORY, MAXDATAFILES
for the database to use the command.
Oracle
Interview Questions
1.
In a system with an average of 40 concurrent users you get the following from a
query on rollback extents:
ROLLBACK CUR EXTENTS
--------------------------
R01 11 R02 8 R03 12 R04 9 SYSTEM 4
2.
You have room for each to grow by 20 more extents each. Is there a problem?
Should you take any action?
No there is not a problem. You have 40
extents showing and an average of 40 concurrent users. Since there is plenty of
room to grow no action is needed.
3.
You see multiple extents in the temporary tablespace. Is this a problem?
As long as they are all the same size this
isn’t a problem. In fact, it can even improve performance since Oracle won’t
have to create a new extent when a user needs one.
4.
Define OFA.
OFA stands for Optimal Flexible
Architecture. It is a method of placing directories and files in an Oracle
system so that you get the maximum flexibility for future tuning and file
placement.
5.
How do you set up your tablespace on installation?
The answer here should show an
understanding of separation of redo and rollback, data and indexes and
isolation os SYSTEM tables from other tables. An example would be to specify
that at least 7 disks should be used for an Oracle installation so that you can
place SYSTEM tablespace on one, redo logs on two (mirrored redo logs) the
TEMPORARY tablespace on another, ROLLBACK tablespace on another and still have
two for DATA and INDEXES. They should indicate how they will handle archive
logs and exports as well. As long as they have a logical plan for combining or
further separation more or less disks can be specified.
6.
What should be done prior to installing Oracle (for the OS and the disks?)
Adjust kernel parameters or OS tuning
parameters in accordance with installation guide. Be sure enough contiguous
disk space is available.
7.
You have installed Oracle and you are now setting up the actual instance. You
have been waiting an hour for the initialization script to finish, what should
you check first to determine if there is a problem
Check to make sure that the archiver isn’t
stuck. If archive logging is turned on during install a large number of logs
will be created. This can fill up your archive log destination causing Oracle
to stop to wait for more space.
8.
When configuring SQLNET on the server what files must be set up
INITIALIZATION file, TNSNAMES.ORA file,
SQLNET.ORA file
9.
When configuring SQLNET on the client what files need to be set up
SQLNET.ORA, TNSNAMES.ORA
10.
What must be installed with ODBC on the client in order for it to work with Oracle?
SQLNET and PROTOCOL (for example: TCPIP
adapter) layers of the transport programs.
Questions/Answers
PL/SQL
Questions
1. Describe the difference between a
procedure, function and anonymous pl/sql block.
Level: Low
Expected answer : Candidate should mention use of DECLARE statement, a
function must return a value while a procedure doesn't have to. Also one can
use function in Select Sql statement but not procedure.
2. What is a mutating table error and
how can you get around it?
Level: Intermediate
Expected answer: This happens with triggers. It occurs because the trigger
is trying to update a row it is currently using. The usual fix involves either
use of views or temporary tables so the database is selecting from one while
updating the other.
3. Describe the use of %ROWTYPE and
%TYPE in PL/SQL
Level: Low
Expected answer: %ROWTYPE allows you to associate a variable with an entire
table row. The %TYPE associates a variable with a single column type.
4. What packages (if any) has Oracle
provided for use by developers?
Level: Intermediate to high
Expected answer: Oracle provides the DBMS_ series of packages. There are
many which developers should be aware of such as DBMS_SQL, DBMS_PIPE,
DBMS_TRANSACTION, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY,
DBMS_DDL, UTL_FILE. If they can mention a few of these and describe how they
used them, even better. If they include the SQL routines provided by Oracle,
great, but not really what was asked.
5. Describe the use of PL/SQL tables
Level: Intermediate
Expected answer: PL/SQL tables are scalar arrays that can be referenced by a
binary integer. They can be used to hold values for use in later queries or
calculations. In Oracle they will be able to be of the %ROWTYPE designation, or
RECORD.
6. When is a declare statement needed?
Level: Low
The DECLARE statement is used in PL/SQL anonymous blocks such as with stand
alone, non-stored PL/SQL procedures. It must come first in a PL/SQL stand alone
file if it is used.
7. In what order should a
open/fetch/loop set of commands in a PL/SQL block be implemented if you use the
%NOTFOUND cursor variable in the exit when statement? Why?
Level: Intermediate
Expected answer: OPEN then FETCH then LOOP followed by the exit when. If not
specified in this order will result in the final return being done twice
because of the way the %NOTFOUND is handled by PL/SQL.
8. What are SQLCODE and SQLERRM and
why are they important for PL/SQL developers?
Level: Intermediate
Expected answer: SQLCODE returns the value of the error number for the last
error encountered. The SQLERRM returns the actual error message for the last
error encountered. They can be used in exception handling to report, or, store
in an error log table, the error that occurred in the code. These are
especially useful for the WHEN OTHERS exception.
9. How can you find within a PL/SQL
block, if a cursor is open?
Level: Low
Expected answer: Use the %ISOPEN cursor status variable.
10. How can you generate debugging
output from PL/SQL?
Level: Intermediate to high
Expected answer: Use the DBMS_OUTPUT package. The DBMS_OUTPUT package can be
used to show intermediate results from loops and the status of variables as the
procedure is executed, however output only occurs after processing is finished,
which might not be useful if processing takes a long time. The package UTL_FILE
can be used to write to a file, but one must have write access to the output directory.
A third possibility is to create a log table and have the procedure write to
the table. This will give you debugging information in real time.
11. What are the types of triggers?
Level: Intermediate to high
Expected Answer: There are 12 types of triggers in PL/SQL that consist of
combinations of the BEFORE, AFTER, ROW, TABLE, INSERT, UPDATE, DELETE and ALL
key words: BEFORE ALL ROW INSERT AFTER ALL ROW INSERT BEFORE INSERT AFTER
INSERT etc.
DBA
1. Give one method for transferring a
table from one schema to another:
Level: Intermediate
Expected Answer: There are several possible methods, export-import, CREATE
TABLE... AS SELECT, or COPY.
2. What is the purpose of the IMPORT
option IGNORE? What is its default setting?
Level: Low
Expected Answer: The IMPORT IGNORE option tells import to ignore
"already exists" errors. If it is not specified the tables that
already exist will be skipped. If it is specified, the error is ignored and the
tables data will be inserted. The default value is N.
3. You have a rollback segment in a
version 7.2 database that has expanded beyond optimal, how can it be restored
to optimal?
Level: Low
Expected answer: Use the ALTER TABLESPACE..... SHRINK command.
4. If the DEFAULT and TEMPORARY
tablespace clauses are left out of a CREATE USER command what happens? Is this
bad or good? Why?
Level: Low
Expected answer: The user is assigned the SYSTEM tablespace as a default and
temporary tablespace. This is bad because it causes user objects and temporary
segments to be placed into the SYSTEM tablespace resulting in fragmentation and
improper table placement (only data dictionary objects and the system rollback
segment should be in SYSTEM).
5. What are some of the Oracle
provided packages that DBA’s should be aware of?
Level: Intermediate to High
Expected answer: Oracle provides a number of packages in the form of the
DBMS_ packages owned by the SYS user. The packages used by DBA’s may include:
DBMS_SHARED_POOL, DBMS_UTILITY, DBMS_SQL, DBMS_DDL, DBMS_SESSION, DBMS_OUTPUT
and DBMS_SNAPSHOT. They may also try to answer with the UTL*.SQL or CAT*.SQL
series of SQL procedures. These can be viewed as extra credit but aren?t part
of the answer.
6. What happens if the constraint
name is left out of a constraint clause?
Level: Low
Expected answer: The Oracle system will use the default name of SYS_Cxxxx
where xxxx is a system generated number. This is bad since it makes tracking
which table the constraint belongs to or what the constraint does harder.
7. What happens if a tablespace
clause is left off of a primary key constraint clause?
Level: Low
Expected answer: This results in the index that is automatically generated
being placed in then users default tablespace. Since this will usually be the
same tablespace as the table is being created in, this can cause serious
performance problems.
8. What is the proper method for
disabling and re-enabling a primary key constraint?
Level: Intermediate
Expected answer: You use the ALTER TABLE command for both. However, for the
enable clause you must specify the USING INDEX and TABLESPACE clause for
primary keys.
9. What happens if a primary key
constraint is disabled and then enabled without fully specifying the index
clause?
Level: Intermediate
Expected answer: The index is created in the user?s default tablespace and
all sizing information is lost. Oracle doesn?t store this information as a part
of the constraint definition, but only as part of the index definition, when
the constraint was disabled the index was dropped and the information is gone.
10. (On UNIX) When should more than
one DB writer process be used? How many should be used?
Level: High
Expected answer: If the UNIX system being used is capable of asynchronous IO
then only one is required, if the system is not capable of asynchronous IO then
up to twice the number of disks used by Oracle number of DB writers should be
specified by use of the db_writers initialization parameter.
11. You are using hot backup without
being in archivelog mode, can you recover in the event of a failure? Why or why
not?
Level: High
Expected answer: You can't use hot backup without being in archivelog mode.
So no, you couldn't recover.
12. What causes the "snapshot
too old" error? How can this be prevented or mitigated?
Level: Intermediate
Expected answer: This is caused by large or long running transactions that
have either wrapped onto their own rollback space or have had another
transaction write on part of their rollback space. This can be prevented or
mitigated by breaking the transaction into a set of smaller transactions or
increasing the size of the rollback segments and their extents.
13. How can you tell if a database
object is invalid?
Level: Low
Expected answer: By checking the STATUS column of the DBA_, ALL_ or
USER_OBJECTS views, depending upon whether you own or only have permission on
the view or are using a DBA account.
14. A user is getting an ORA-00942
error yet you know you have granted them permission on the table, what else
should you check?
Level: Low
Expected answer: You need to check that the user has specified the full name
of the object (SELECT empid FROM scott.emp; instead of SELECT empid FROM emp;)
or has a synonym that points to the object (CREATE SYNONYM emp FOR scott.emp;)
15. A developer is trying to create a
view and the database won?t let him. He has the "DEVELOPER" role
which has the "CREATE VIEW" system privilege and SELECT grants on the
tables he is using, what is the problem?
Level: Intermediate Expected answer:
You need to verify the developer has direct grants on all tables used in the
view. You can't create a stored object with grants given through a role.
16. If you have an example table,
what is the best way to get sizing data for the production table
implementation?
Level: Intermediate
Expected answer: The best way is to analyze the table and then use the data
provided in the DBA_TABLES view to get the average row length and other
pertinent data for the calculation. The quick and dirty way is to look at the
number of blocks the table is actually using and ratio the number of rows in
the table to its number of blocks against the number of expected rows.
17. How can you find out how many
users are currently logged into the database? How can you find their operating
system id?
Level: high Expected answer: There are several ways. One is to look at the
v$session or v$process views. Another way is to check the current_logins
parameter in the v$sysstat view. Another if you are on UNIX is to do a "ps
-ef|grep oracle|wc -l? command, but this only works against a single instance
installation.
18. A user selects from a sequence
and gets back two values, his select is:
SELECT pk_seq.nextval FROM dual; What
is the problem?
Level: Intermediate
Expected answer: Somehow two values have been inserted into the dual table.
This table is a single row, single column table that should only have one value
in it.
19. How can you determine if an index
needs to be dropped and rebuilt?
Level: Intermediate
Expected answer: Run the ANALYZE INDEX command on the index to validate its
structure and then calculate the ratio of LF_BLK_LEN/LF_BLK_LEN+BR_BLK_LEN and
if it isn’t near 1.0 (i.e. greater than 0.7 or so) then the index should be
rebuilt. Or if the ratio BR_BLK_LEN/ LF_BLK_LEN+BR_BLK_LEN is nearing 0.3.
SQL/ SQLPlus
1. How can variables be passed to a
SQL routine? Level: Low
Expected answer: By use of the & symbol. For passing in variables the
numbers 1-8 can be used (&1, &2,...,&8) to pass the values after
the command into the SQLPLUS session. To be prompted for a specific variable,
place the ampersanded variable in the code itself: "select * from
dba_tables where owner=&owner_name;" . Use of double ampersands tells
SQLPLUS to resubstitute the value for each subsequent use of the variable, a
single ampersand will cause a reprompt for the value unless an ACCEPT statement
is used to get the value from the user.
2. You want to include a carriage
return/linefeed in your output from a SQL script, how can you do this?
Level: Intermediate to high
Expected answer: The best method is to use the CHR() function (CHR(10) is a
return/linefeed) and the concatenation function "||". Another method,
although it is hard to document and isn’t always portable is to use the
return/linefeed as a part of a quoted string.
3. How can you call a PL/SQL
procedure from SQL?
Level: Intermediate
Expected answer: By use of the EXECUTE (short form EXEC) command.
4. How do you execute a host
operating system command from within SQL?
Level: Low
Expected answer: By use of the exclamation point "!" (in UNIX and
some other OS) or the HOST (HO) command.
5. You want to use SQL to build SQL,
what is this called and give an example
Level: Intermediate to high
Expected answer: This is called dynamic SQL. An example would be: set lines
90 pages 0 termout off feedback off verify off spool drop_all.sql
select ?drop user ?||username||? cascade;? from dba_users where
username not in ('SYS','SYSTEM'); spool off Essentially you are looking to see
that they know to include a command (in this case DROP USER...CASCADE;) and
that you need to concatenate using the ?||? the values selected from the
database.
Alternately, if you are using PL/SQL, you can do ls_sql_string :=
'CREATE TABLE FRED AS SELECT SYSDATE A_DATE FROM DUAL'; EXECUTE IMMEDIATE
ls_sql_string;
6. What SQLPlus command is used to
format output from a select?
Level: low Expected answer: This is best done with the COLUMN command.
7. You want to group the following
set of select returns, what can you group on? Max(sum_of_cost), min(sum_of_cost),
count(item_no), item_no Level: Intermediate Expected answer: The only column
that can be grouped on is the "item_no" column, the rest have
aggregate functions associated with them.
8. What special Oracle feature allows
you to specify how the cost based system treats a SQL statement?
Level: Intermediate to high Expected answer: The COST based system allows
the use of HINTs to control the optimizer path selection. If they can give some
example hints such as FIRST ROWS, ALL ROWS, USING INDEX, STAR, even better.
9. You want to determine the location
of identical rows in a table before attempting to place a unique index on the
table, how can this be done?
Level: High
Expected answer: Oracle tables always have one guaranteed unique column, the
rowid column. If you use a min/max function against your rowid and then select
against the proposed primary key you can squeeze out the rowids of the
duplicate rows pretty quick. For example: select rowid from emp e where e.rowid
> (select min(x.rowid) from emp x where x.emp_no = e.emp_no); In the
situation where multiple columns make up the proposed key, they must all be
used in the where clause.
10. What is a Cartesian product?
Level: Low
Expected answer: A Cartesian product is the result of an unrestricted join
of two or more tables. The result set of a three table Cartesian product will
have x * y * z number of rows where x, y, z correspond to the number of rows in
each table involved in the join.
11. You are joining a local and a
remote table, the network manager complains about the traffic involved, how can
you reduce the network traffic?
Level: High
Expected answer: Push the processing of the remote data to the remote
instance by using a view to pre-select the information for the join. This will
result in only the data required for the join being sent across.
12. What is the default ordering of
an ORDER BY clause in a SELECT statement?
Level: Low
Expected answer: Ascending
13. What is tkprof and how is it
used?
Level: Intermediate to high Expected answer: The tkprof tool is a tuning
tool used to determine cpu and execution times for SQL statements. You use it
by first setting timed_statistics to true in the initialization file and then
turning on tracing for either the entire database via the sql_trace parameter
or for the session using the ALTER SESSION command. Once the trace file is
generated you run the tkprof tool against the trace file and then look at the
output from the tkprof tool. This can also be used to generate explain plan
output.
14. What is explain plan and how is
it used?
Level: Intermediate to high
Expected answer: The EXPLAIN PLAN command is a tool to tune SQL statements.
To use it you must have an explain_table generated in the user you are running
the explain plan for. This is created using the utlxplan.sql script. Once the
explain plan table exists you run the explain plan command giving as its
argument the SQL statement to be explained. The explain_plan table is then
queried to see the execution plan of the statement. Explain plans can also be
run using tkprof.
15. How do you set the number of
lines on a page of output? The width
Level: Low
Expected answer: The SET command in SQLPLUS is used to control the number of
lines generated per page and the width of those lines, for example SET PAGESIZE
60 LINESIZE 80 will generate reports that are 60 lines long with a line width
of 80 characters. The PAGESIZE and LINESIZE options can be shortened to PAGES
and LINES.
16. How do you prevent output from
coming to the screen?
Level: Low
Expected answer: The SET option TERMOUT controls output to the screen.
Setting TERMOUT OFF turns off screen output. This option can be shortened to
TERM.
17. How do you prevent Oracle from
giving you informational messages during and after a SQL statement execution?
Level: Low
Expected answer: The SET options FEEDBACK and VERIFY can be set to OFF.
18. How do you generate file output
from SQL?
Level: Low
Expected answer: By use of the SPOOL command
Tuning
Questions
1. A tablespace has a table with 30 extents
in it. Is this bad? Why or why not.
Level: Intermediate
Expected answer: Multiple extents in and of themselves aren?t bad. However
if you also have chained rows this can hurt performance.
2. How do you set up tablespaces
during an Oracle installation?
Level: Low
Expected answer: You should always attempt to use the Oracle Flexible
Architecture standard or another partitioning scheme to ensure proper
separation of SYSTEM, ROLLBACK, REDO LOG, DATA, TEMPORARY and INDEX segments.
3. you see multiple fragments in the
SYSTEM tablespace, what should you check first?
Level: Low
Expected answer: Ensure that users don’t have the SYSTEM tablespace as their
TEMPORARY or DEFAULT tablespace assignment by checking the DBA_USERS view.
4. What are some indications that you
need to increase the SHARED_POOL_SIZE parameter?
Level: Intermediate
Expected answer: Poor data dictionary or library cache hit ratios, getting
error ORA-04031. Another indication is steadily decreasing performance with all
other tuning parameters the same.
5. What is the general guideline for
sizing db_block_size and db_multi_block_read for an application that does many
full table scans?
Level: High
Expected answer: Oracle almost always reads in 64k chunks. The two should
have a product equal to 64 or a multiple of 64.
6. What is the fastest query method
for a table?
Level: Intermediate Expected answer: Fetch by rowid
7. Explain the use of TKPROF? What
initialization parameter should be turned on to get full TKPROF output?
Level: High
Expected answer: The tkprof tool is a tuning tool used to determine cpu and
execution times for SQL statements. You use it by first setting
timed_statistics to true in the initialization file and then turning on tracing
for either the entire database via the sql_trace parameter or for the session
using the ALTER SESSION command. Once the trace file is generated you run the
tkprof tool against the trace file and then look at the output from the tkprof
tool. This can also be used to generate explain plan output.
8. When looking at v$sysstat you see
that sorts (disk) is high. Is this bad or good? If bad -How do you correct it?
Level: Intermediate
Expected answer: If you get excessive disk sorts this is bad. This indicates
you need to tune the sort area parameters in the initialization files. The
major sort are parameter is the SORT_AREA_SIZe parameter.
9. When should you increase copy
latches? What parameters control copy latches?
Level: high Expected answer: When you get excessive contention for the copy
latches as shown by the "redo copy" latch hit ratio. You can increase
copy latches via the initialization parameter LOG_SIMULTANEOUS_COPIES to twice
the number of CPUs on your system.
10. Where can you get a list of all
initialization parameters for your instance? How about an indication if they
are default settings or have been changed?
Level: Low
Expected answer: You can look in the init.ora file for an indication of
manually set parameters. For all parameters, their value and whether or not the
current value is the default value, look in the v$parameter view.
11. Describe hit ratio as it pertains
to the database buffers. What is the difference between instantaneous and
cumulative hit ratio and which should be used for tuning?
Level: Intermediate
Expected answer: The hit ratio is a measure of how many times the database
was able to read a value from the buffers verses how many times it had to
re-read a data value from the disks. A value greater than 80-90% is good, less
could indicate problems. If you simply take the ratio of existing parameters
this will be a cumulative value since the database started. If you do a
comparison between pairs of readings based on some arbitrary time span, this is
the instantaneous ratio for that time span. Generally speaking an instantaneous
reading gives more valuable data since it will tell you what your instance is
doing for the time it was generated over.
12. Discuss row chaining, how does it
happen? How can you reduce it? How do you correct it?
Level: high
Expected answer: Row chaining occurs when a VARCHAR2 value is updated and
the length of the new value is longer than the old value and won?t fit in the
remaining block space. This results in the row chaining to another block. It
can be reduced by setting the storage parameters on the table to appropriate
values. It can be corrected by export and import of the effected table.
13. When looking at the estat events
report you see that you are getting busy buffer waits. Is this bad? How can you
find what is causing it?
Level: high
Expected answer: Buffer busy waits could indicate contention in redo,
rollback or data blocks. You need to check the v$waitstat view to see what
areas are causing the problem. The value of the "count" column tells
where the problem is, the "class" column tells you with what. UNDO is
rollback segments, DATA is data base buffers.
14. If you see contention for library
caches how can you fix it?
Level: Intermediate
Expected answer: Increase the size of the shared pool.
15. If you see statistics that deal
with "undo" what are they really talking about?
Level: Intermediate
Expected answer: Rollback segments and associated structures.
16. If a tablespace has a default
pctincrease of zero what will this cause (in relationship to the smon process)?
Level: High
Expected answer: The SMON process won?t automatically coalesce its free
space fragments.
17. If a tablespace shows excessive
fragmentation what are some methods to defragment the tablespace? (7.1, 7.2 and
7.3 only)
Level: High
Expected answer: In Oracle 7.0 to 7.2 The use of the 'alter session set
events 'immediate trace name coalesce level ts#';? Command is the easiest way
to defragment contiguous free space fragmentation. The ts# parameter
corresponds to the ts# value found in the ts$ SYS table. In version 7.3
the ?alter tablespace coalesce;? is best. If the free space isn’t
contiguous then export, drop and import of the tablespace contents may be the
only way to reclaim non-contiguous free space.
18. How can you tell if a tablespace
has excessive fragmentation?
Level: Intermediate
If a select against the dba_free_space table shows that the count of a
tablespaces extent is greater than the count of its data files, then it is
fragmented.
19. You see the following on a status
report: redo log space requests 23 redo log space wait time 0 Is this something
to worry about? What if redo log space wait time is high? How can you fix this?
Level: Intermediate
Expected answer: Since the wait time is zero, no. If the wait time was high
it might indicate a need for more or larger redo logs.
20. What can cause a high value for
recursive calls? How can this be fixed?
Level: High
Expected answer: A high value for recursive calls is cause by improper
cursor usage, excessive dynamic space management actions, and or excessive
statement re-parses. You need to determine the cause and correct it By either
relinking applications to hold cursors, use proper space management techniques
(proper storage and sizing) or ensure repeat queries are placed in packages for
proper reuse.
21. If you see a pin hit ratio of
less than 0.8 in the estat library cache report is this a problem? If so, how
do you fix it?
Level: Intermediate
Expected answer: This indicate that the shared pool may be too small.
Increase the shared pool size.
22. If you see the value for reloads
is high in the estat library cache report is this a matter for concern?
Level: Intermediate
Expected answer: Yes, you should strive for zero reloads if possible. If you
see excessive reloads then increase the size of the shared pool.
23. You look at the dba_rollback_segs
view and see that there is a large number of shrinks and they are of relatively
small size, is this a problem? How can it be fixed if it is a problem?
Level: High
Expected answer: A large number of small shrinks indicates a need to
increase the size of the rollback segment extents. Ideally you should have no
shrinks or a small number of large shrinks. To fix this just increase the size
of the extents and adjust optimal accordingly.
24. You look at the dba_rollback_segs
view and see that you have a large number of wraps is this a problem?
Level: High
Expected answer: A large number of wraps indicates that your extent size for
your rollback segments are probably too small. Increase the size of your
extents to reduce the number of wraps. You can look at the average transaction
size in the same view to get the information on transaction size.
25. In a system with an average of 40
concurrent users you get the following from a query on rollback extents:
ROLLBACK CUR EXTENTS
--------------------------
R01 11 R02 8 R03 12 R04 9 SYSTEM 4 You have room for each to grow by 20 more
extents each. Is there a problem? Should you take any action?
Level: Intermediate
Expected answer: No there is not a problem. You have 40 extents showing and
an average of 40 concurrent users. Since there is plenty of room to grow no
action is needed.
26. You see multiple extents in the
temporary tablespace. Is this a problem?
Level: Intermediate
Expected answer: As long as they are all the same size this isn’t a problem.
In fact, it can even improve performance since Oracle won’t have to create a
new extent when a user needs one.
Installation/Configuration
1. Define OFA.
Level: Low
Expected answer: OFA stands for Optimal Flexible Architecture. It is a
method of placing directories and files in an Oracle system so that you get the
maximum flexibility for future tuning and file placement.
2. How do you set up your tablespace
on installation? Level: Low
Expected answer: The answer here should show an understanding of separation
of redo and rollback, data and indexes and isolation os SYSTEM tables from
other tables. An example would be to specify that at least 7 disks should be
used for an Oracle installation so that you can place SYSTEM tablespace on one,
redo logs on two (mirrored redo logs) the TEMPORARY tablespace on another,
ROLLBACK tablespace on another and still have two for DATA and INDEXES. They
should indicate how they will handle archive logs and exports as well. As long
as they have a logical plan for combining or further separation more or less
disks can be specified.
3. What should be done prior to
installing Oracle (for the OS and the disks)?
Level: Low
Expected Answer: Adjust kernel parameters or OS tuning parameters in
accordance with installation guide. Be sure enough contiguous disk space is
available.
4. You have installed Oracle and you
are now setting up the actual instance. You have been waiting an hour for the
initialization script to finish, what should you check first to determine if
there is a problem?
Level: Intermediate to high
Expected Answer: Check to make sure that the archiver isn’t stuck. If
archive logging is turned on during install a large number of logs will be created.
This can fill up your archive log destination causing Oracle to stop to wait
for more space.
5. When configuring SQLNET on the
server what files must be set up?
Level: Intermediate
Expected answer: INITIALIZATION file, TNSNAMES.ORA file, SQLNET.ORA file
6. When configuring SQLNET on the
client what files need to be set up?
Level: Intermediate
Expected answer: SQLNET.ORA, TNSNAMES.ORA
7. What must be installed with ODBC
on the client in order for it to work with Oracle?
Level: Intermediate
Expected answer: SQLNET and PROTOCOL (for example: TCPIP adapter) layers of
the transport programs.
8. You have just started a new
instance with a large SGA on a busy existing server. Performance is terrible,
what should you check for?
Level: Intermediate
Expected answer: The first thing to check with a large SGA is that it isn’t
being swapped out.
9. What OS user should be used for
the first part of an Oracle installation (on UNIX)?
Level: low
Expected answer: You must use root first.
10. When should the default values
for Oracle initialization parameters be used as is?
Level: Low
Expected answer: Never
11. How many control files should you
have? Where should they be located?
Level: Low
Expected answer: At least 2 on separate disk spindles. Be sure they say on
separate disks, not just file systems.
12. How many redo logs should you
have and how should they be configured for maximum recoverability?
Level: Intermediate
Expected answer: You should have at least three groups of two redo logs with
the two logs each on a separate disk spindle (mirrored by Oracle). The redo
logs should not be on raw devices on UNIX if it can be avoided.
13. You have a simple application
with no "hot" tables (i.e. uniform IO and access requirements). How
many disks should you have assuming standard layout for SYSTEM, USER, TEMP and
ROLLBACK tablespaces?
Expected answer: At least 7 see disk configuration answer above.
Data Modeler
1. Describe third normal form?
Level: Low Expected answer: Something like: In third normal form all
attributes in an entity are related to the primary key and only to the primary
key
2. Is the following statement true or
false: "All relational databases must be in third normal form" Why or
why not?
Level: Intermediate Expected answer: False. While 3NF is good for logical
design most databases, if they have more than just a few tables, will not
perform well using full 3NF. Usually some entities will be de-normalized in the
logical to physical transfer process.
3. What is an ERD?
Level: Low Expected answer: An ERD is an Entity-Relationship-Diagram. It is
used to show the entities and relationships for a database logical model.
4. Why are recursive relationships
bad? How do you resolve them?
Level: Intermediate A recursive relationship (one where a table relates to
itself) is bad when it is a hard relationship (i.e. neither side is a
"may" both are "must") as this can result in it not being
possible to put in a top or perhaps a bottom of the table (for example in the
EMPLOYEE table you couldn’t put in the PRESIDENT of the company because he has
no boss, or the junior janitor because he has no subordinates). These type of
relationships are usually resolved by adding a small intersection entity.
5. What does a hard one-to-one
relationship mean (one where the relationship on both ends is
"must")?
Level: Low to intermediate Expected answer: This means the two entities
should probably be made into one entity.
6. How should a many-to-many
relationship be handled?
Level: Intermediate Expected answer: By adding an intersection entity table
7. What is an artificial (derived)
primary key? When should an artificial (or derived) primary key be used?
Level: Intermediate Expected answer: A derived key comes from a sequence.
Usually it is used when a concatenated key becomes too cumbersome to use as a
foreign key.
8. When should you consider de-normalization?
Level: Intermediate Expected answer: Whenever performance analysis indicates
it would be beneficial to do so without compromising data integrity.
UNIX
1. How can you determine the space
left in a file system?
Level: Low Expected answer: There are several commands to do this: du, df,
or bdf
2. How can you determine the number
of SQLNET users logged in to the UNIX system?
Level: Intermediate Expected answer: SQLNET users will show up with a
process unique name that begins with oracle, if you do a ps -ef| grep oracle| wc
-l you can get a count of the number of users.
3. What command is used to type files
to the screen?
Level: Low Expected answer: cat, more, pg
4. What command is used to remove a
file?
Level: Low Expected answer: rm
5. Can you remove an open file under
UNIX?
Level: Low Expected answer: yes
6. How do you create a decision tree
in a shell script?
Level: intermediate Expected answer: depending on shell, usually a case-esac
or an if-endif or fi structure
7. What is the purpose of the grep
command?
Level: Low Expected answer: grep is a string search command that parses the
specified string from the specified file or files
8. the system has a program that
always includes the word nocomp in its name, how can you determine the number
of processes that are using this program?
Level: intermediate Expected answer: ps -ef|grep *nocomp*|wc -l
9. What is an inode?
Level: Intermediate Expected answer:
an inode is a file status indicator. It is stored in both disk and memory and
tracts file status. There is one inode for each file on the system.
10. The system administrator tells
you that the system hasn’t been rebooted in 6 months, should he be proud of
this?
Level: High Expected answer: Maybe. Some UNIX systems don?t clean up well
after themselves. Inode problems and dead user processes can accumulate causing
possible performance and corruption problems. Most UNIX systems should have a scheduled
periodic reboot so file systems can be checked and cleaned and dead or zombie
processes cleared out.
11. What is redirection and how is it
used?
Level: Intermediate Expected answer: redirection is the process by which
input or output to or from a process is redirected to another process. This can
be done using the pipe symbol "|", the greater than symbol
">" or the "tee" command. This is one of the strengths
of UNIX allowing the output from one command to be redirected directly into the
input of another command.
12. How can you find dead processes?
Level: Intermediate Expected answer: ps -ef|grep zombie -- or -- who -d
depending on the system.
13. How can you find all the
processes on your system?
Level: Low Expected answer: Use the ps command
14. How can you find your id on a
system?
Level: Low Expected answer: Use the "who am i" command.
15. What is the finger command?
Level: Low Expected answer: The
finger command uses data in the passwd file to give information on system
users.
16. What is the easiest method to
create a file on UNIX?
Level: Low Expected answer: Use the touch command
17. What does >> do?
Level: Intermediate Expected answer: The ">>" redirection
symbol appends the output from the command specified into the file specified.
The file must already have been created.
18. If you aren’t sure what command
does a particular UNIX function what is the best way to determine the command?
Expected answer: The UNIX man -k
command will search the man pages for the value specified. Review the results
from the command to find the command of interest.
Oracle
Troubleshooting
1. How can you determine if an Oracle
instance is up from the operating system level?
Level: Low Expected answer: There are several base Oracle processes that
will be running on multi-user operating systems, these will be smon, pmon, dbwr
and lgwr. Any answer that has them using their operating system process showing
feature to check for these is acceptable. For example, on UNIX a ps -ef|grep
pmon will show what instances are up.
2. Users from the PC clients are
getting messages indicating: Level: Low ORA-06114: (Cnct err, can't get err
txt. See Servr Msgs & Codes Manual) what could the problem be? Expected
answer: The instance name is probably incorrect in their connection string.
3. Users from the PC clients are
getting the following error stack: Level: Low ERROR: ORA-01034: ORACLE not
available ORA-07318: smsget: open error when opening sgadef.dbf file. HP-UX
Error: 2: No such file or directory What is the probable cause?
Expected answer: The Oracle instance is shutdown that they are trying to
access, restart the instance.
4. How can you determine if the
SQLNET process is running for SQLNET V1? How about V2?
Level: Low Expected answer: For SQLNET V1 check for the existence of the
orasrv process. You can use the command "tcpctl status" to get a full
status of the V1 TCPIP server, other protocols have similar command formats.
For SQLNET V2 check for the presence of the LISTENER process(s) or you can issue
the command "lsnrctl status".
5. What file will give you Oracle
instance status information? Where is it located?
Level: Low Expected answer: The alert.ora log. It is located in the
directory specified by the background_dump_dest parameter in the v$parameter
table.
6. Users aren’t being allowed on the
system. The following message is received: Level: Intermediate ORA-00257 archives
is stuck. Connect internal only, until freed What is the problem?
Expected answer: The archive destination is probably full, backup the archive
logs and removes them and the archiver will re-start.
7. Where would you look to find out
if a redo log was corrupted assuming you are using Oracle mirrored redo logs?
Level: Intermediate Expected answer: There is no message that comes to the SQLDBA
or SRVMGR programs during startup in this situation; you must check the alert. log
file for this information.
8. You attempt to add a data file and
get: Level: Intermediate ORA-01118: cannot add anymore data files: limit of 40
exceeded what is the problem and how can you fix it?
Expected answer: When the database was created the db_files parameter in the
initialization file was set to 40. You can shutdown and reset this to a higher
value, up to the value of MAX_DATAFILES as specified at database creation. If
the MAX_DATAFILES is set to low, you will have to rebuild the control file to
increase it before proceeding.
9. You look at your fragmentation
report and see that smon hasn’t coalesced any of you tablespaces, even though
you know several have large chunks of contiguous free extents. What is the
problem?
Level: High Expected answer: Check the dba_tablespaces view for the value of
pct_increase for the tablespaces. If pct_increase is zero, smon will not
coalesce their free space.
10. Your users get the following
error: Level: Intermediate ORA-00055 maximum number of DML locks exceeded what
is the problem and how do you fix it?
Expected answer: The number of DML Locks is set by the initialization
parameter DML_LOCKS. If this value is set to low (which it is by default) you
will get this error. Increase the value of DML_LOCKS. If you are sure that this
is just a temporary problem, you can have them wait and then try again later
and the error should clear.
11. You get a call from you backup
DBA while you are on vacation. He has corrupted all of the control files while
playing with the ALTER DATABASE BACKUP CONTROLFILE command. What do you do?
Level: High Expected answer: As long as all data files are safe and he was
successful with the BACKUP controlfile command you can do the following:
CONNECT INTERNAL STARTUP MOUNT (Take any read-only tablespaces offline before
next step ALTER DATABASE DATAFILE .... OFFLINE;) RECOVER DATABASE USING BACKUP
CONTROLFILE ALTER DATABASE OPEN RESETLOGS; (bring read-only tablespaces back
online) Shutdown and backup the system, then restart If they have a recent
output file from the ALTER DATABASE BACKUP CONTROL FILE TO TRACE; command, they
can use that to recover as well. If no backup of the control file is available
then the following will be required: CONNECT INTERNAL STARTUP NOMOUNT CREATE
CONTROL FILE .....; However, they will need to know all of the datafiles,
logfiles, and settings for MAXLOGFILES, MAXLOGMEMBERS, MAXLOGHISTORY,
MAXDATAFILES for the database to use the command.
Questions
and Answers
What is an User Exits?
A user exit is a subroutine which are written in programming languages using
pro*C pro *Cobol , etc., that link into the SQL * forms executable.
What is a Trigger?
A piece of logic that is executed at or triggered by a SQL *forms event.
What is a Package Procedure?
A Package procedure is built in PL/SQL procedure.
What is the maximum size of a form?
255 character width and 255 characters Length.
What is the difference between
system.current_field and system.cursor_field ?
1. System.current_field gives name of the field.
2. System.cursor_field gives name of the field with block name.
List the system variables related in
Block and Field?
1. System.block_status
2. System.current_block
3. System.current_field
4. System.current_value
5. System.cursor_block
6. System.cursor_field
7. System.field_status.
What are the different types of Package
Procedure?
1. Restricted package procedure.
2. Unrestricted package procedure.
What are the types of TRIGGERS?
1. Navigational Triggers.
2. Transaction Triggers.
Identify package function from the following?
1. Error-Code
2. Break
3. Call
4. Error-text
5. Form-failure
6. Form-fatal
7. Execute-query
8. Anchor View
9. Message_code?
1. Error_Code
2. Error_Text
3. Form_Failure
4. Form_Fatal
5. Message_Code
Can you attach an lov to a field at
run-time? if yes, give the build-in name.?
Yes. Set_item_proprety
Is it possible to attach same library to
more than one form?
Yes
Can you attach an lov to a field at
design time?
Yes
List the windows event triggers
available in Forms 4.0?
When-window-activated,
when-window-closed,
when-window-deactivated,
when-window-resized
What are the triggers associated with
the image item?
When-Image-activated(Fires when the operator double clicks on an image
Items)
When-image-pressed(fires when the operator selects or deselects the image item)
What is a visual attribute?
Visual Attributes are the font, color and pattern characteristics of
objects that operators see and intract with in our application.
How many maximum number of radio buttons
can you assign to a radio group?
Unlimited no of radio buttons can be assigned to a radio group
what is a Lov?
A list of values is a single or multi column selection list displayed in a
pop-up window
what is a record Group?
A record group is an internal oracle forms data structure that has a
similar column/row frame work to a database table
Give built-in routine related to a
record groups?
Create_group (Function)
Create_group_from_query(Function)
Delete_group(Procedure)
Add_group_column(Function)
Add_group_row(Procedure)
Delete_group_row(Procedure)
Populate_group(Function)
Populate_group_with_query(Function)
Set_group_Char_cell(procedure)
List the built-in routines for the
controlling canvas views during run-time?
Find_canvas
Get-Canvas_property
Get_view_property
Hide_View
Replace_content_view
Scroll_view
Set_canvas_property
Set_view_property
Show_view
Alert
System.effective_date system variable is
read only True/False?
False
what are the built_in used to trapping
errors in forms 4?
Error_type return character
Error_code return number
Error_text return char
Dbms_error_code return no.
Dbms_error_text return char
Use the following query to determine if
MuliOrg is installed:
select multi_org_flag from fnd_product_groups;
What is the difference between Fields
and FlexFields? (For DBA)
A field is a position on a form that one uses to enter, view, update, or
delete information. A field prompt describes each field by telling what kind of
information appears in the field, or alternatively, what kind of information
should be entered in the field.
A flexfield is an Oracle Applications field made up of segments. Each segment
has an assigned name and a set of valid values. Oracle Applications uses
flexfields to capture information about your organization. There are two types
of flexfields: key flexfields and descriptive flexfields.
Explain types of Block in forms4.0?
Base table Blocks.
Control Blocks.
1. A base table block is one that is associated with a specific database table
or view.
2. A control block is a block that is not associated with a database table.
ITEMS
what is an Alert?
An alert is a modal window that displays a message notifies the operator of
some application condition
What are the built-in routines is
available in forms 4.0 to create and manipulate a parameter list?
Add_parameter
Create_Parameter_list
Delete_parameter
Destroy_parameter_list
Get_parameter_attr
Get_parameter_list
set_parameter_attr
what is a record Group?
A record group is an internal oracle forms data structure that has a
similar column/row frame work to a database table
what is a Navigable item?
A navigable item is one that operators can navigate to with the keyboard
during default navigation, or that Oracle forms can navigate to by executing a
navigational built-in procedure.
What is a library in Forms 4.0?
A library is a collection of Pl/SQL program units, including user named
procedures, functions & packages
how image_items can be populate to field
in forms 4.0?
A fetch from a long raw database column PL/Sql assignment to executing the read_image_file
built_in procedure to get an image from the file system.
What is the content view and stacked
view?
A content view is the "Base" view that occupies the entire
content pane of the window in which it is displayed. A stacked view differs
from a content canvas view in that it is not the base view for the window to
which it is assigned
what is a Check Box?
A Check Box is a two state control that indicates whether a certain condition
or value is on or off, true or false. The display state of a check box is
always either "checked" or "unchecked".
What is a canvas-view?
A canvas-view is the background object on which you layout the interface
items (text-items, check boxes, radio groups, and so on.) and boilerplate
objects that operators see and interact with as they run your form. At
run-time, operators can see only those items that have been assigned to a
specific canvas. Each canvas, in term, must be displayed in a specific window.
Explain the following file extension
related to library?
.pll,.lib,.pld
The library pll files is a portable design file comparable to an fmb form file
The library lib file is a plat form specific, generated library file comparable
to a fmx form file
The pld file is Txt format file and can be used for source controlling your
library files Parameter
Explain the usage of WHERE CURRENT OF
clause in cursors ?
WHERE CURRENT OF clause in an UPDATE, DELETE statement refers to the latest
row fetched from a cursor. Database Triggers
Name the tables where characteristics of
Package, procedure and functions are stored?
User_objects, User_Source and User_error.
Explain the two type of Cursors?
There are two types of cursors, Implicit Cursor and Explicit Cursor. PL/SQL
uses Implicit Cursors for queries. User defined cursors are called Explicit
Cursors. They can be declared and used.
What are two parts of package?
The two parts of package are PACKAGE SPECIFICATION & PACKAGE BODY.
Package Specification contains declarations that are global to the packages and
local to the schema. Package Body contains actual procedures and local
declaration of the procedures and cursor declarations.
What are two virtual tables available
during database trigger execution?
The table columns are referred as OLD.column_name and NEW.column_name.
For triggers related to INSERT only NEW.column_name values only available.
For triggers related to UPDATE only OLD.column_name NEW.column_name values only
available.
For triggers related to DELETE only OLD.column_name values only available.
What is Fine Grained Auditing? (For DBA)
Fine Grained Auditing (DBMS_FGA) allows auditing records to be generated
when certain rows are selected from a table. A list of defined policies can be
obtained from DBA_AUDIT_POLICIES. Audit records are stored in
DBA_FGA_AUDIT_TRAIL. Look at this example:
o Add policy on table with autiting condition...
execute dbms_fga.add_policy('HR', 'EMP', 'policy1', 'deptno > 10');
o Must ANALYZE, this feature works with CBO (Cost Based Optimizer)
analyze table EMP compute statistics;
select * from EMP where c1 = 11; -- Will trigger auditing
select * from EMP where c1 = 09; -- No auditing
o Now we can see the statments that triggered the auditing condition...
select sqltext from sys.fga_log$;
delete from sys.fga_log$;
What is a package ? What are the
advantages of packages? What is Pragma EXECPTION_INIT?
Explain the usage?
The PRAGMA EXECPTION_INIT tells the complier to associate an exception with
an oracle error. To get an error message of a specific oracle error. E.g.
PRAGMA EXCEPTION_INIT (exception name, oracle error number)
What is a Virtual Private Database? (For
DBA)
Oracle 8i introduced the notion of a Virtual Private Database (VPD). A VPD
offers Fine-Grained Access Control (FGAC) for secure separation of data. This
ensures that users only have access to data that pertains to them. Using this
option, one could even store multiple companies' data within the same schema,
without them knowing about it. VPD configuration is done via the DBMS_RLS (Row
Level Security) package. Select from SYS.V$VPD_POLICY to see existing VPD
configuration.
What is Raise_application_error?
Raise_application_error is a procedure of package DBMS_STANDARD which
allows to issue an user_defined error messages from stored sub-program or
database trigger.
What is Oracle Label Security? (For DBA)
Oracle Label Security (formerly called Trusted Oracle MLS RDBMS) uses the
VPD (Virtual Private Database) feature of Oracle8i to implement row level
security. Accesses to rows are restricted according to a user's security
sensitivity tag or label. Oracle Label Security is configured, controlled and
managed from the Policy Manager, an Enterprise Manager-based GUI utility.
Give the structure of the procedure?
PROCEDURE name (parameter list.....)
is
local variable declarations
BEGIN
Executable statements.
Exception.
exception handlers
end;
What is OEM (Oracle Enterprise Manager)?
(for DBA)
OEM is a set of systems management tools provided by Oracle Corporation for
managing the Oracle environment. It provides tools to monitor the Oracle
environment and automate tasks (both one-time and repetitive in nature) to take
database administration a step closer to "Lights Out" management.
Question what is PL/SQL?
PL/SQL is a procedural language that has both interactive SQL and
procedural programming language constructs such as iteration, conditional
branching.
What are the components of OEM? (for
DBA)
Oracle Enterprise Manager (OEM) has the following components:
. Management Server (OMS): Middle tier server that handles communication with
the intelligent agents. The OEM Console connects to the management server to
monitor and configure the Oracle enterprise.
. Console: This is a graphical interface from where one can schedule jobs,
events, and monitor the database. The console can be opened from a Windows
workstation, Unix XTerm (oemapp command) or Web browser session (oem_webstage).
. Intelligent Agent (OIA): The OIA runs on the target database and takes care
of the execution of jobs and events scheduled through the Console.
What happens if a procedure that updates
a column of table X is called in a database trigger of the same table ?
Mutation of table occurs.
Is it possible to use Transaction
control Statements such a ROLLBACK or COMMIT in Database Trigger? Why?
It is not possible. As triggers are defined for each table, if you use
COMMIT of ROLLBACK in a trigger, it affects logical transaction processing.
How many types of database triggers can
be specified on a table? What are they?
Insert Update Delete
Before Row o.k. o.k. o.k.
After Row o.k. o.k. o.k.
Before Statement o.k. o.k. o.k.
After Statement o.k. o.k. o.k.
If FOR EACH ROW clause is specified, then the trigger for each Row affected by
the statement.
If WHEN clause is specified, the trigger fires according to the returned
Boolean value.
What are the modes of parameters that
can be passed to a procedure?
IN,OUT, IN-OUT parameters.
Where the Pre_defined_exceptions are
stored?
In the standard package.
Procedures, Functions & Packages ;
Write the order of precedence for
validation of a column in a table ?
I. done using Database triggers.
ii. Done using Integrity Constraints.?
I & ii.
Give the structure of the function?
FUNCTION name (argument list .....) Return datatype is
local variable declarations
Begin
executable statements
Exception
execution handlers
End;
Explain how procedures and functions are
called in a PL/SQL block ?
Function is called as part of an expression.
sal := calculate_sal ('a822');
procedure is called as a PL/SQL statement
calculate_bonus ('A822');
What are advantages of Stored
Procedures?
Extensibility, Modularity, Reusability, Maintainability and one time
compilation.
What is an Exception? What are types of
Exception?
Exception is the error handling part of PL/SQL block. The types are
Predefined and user defined. Some of Predefined exceptions are.
CURSOR_ALREADY_OPEN
DUP_VAL_ON_INDEX
NO_DATA_FOUND
TOO_MANY_ROWS
INVALID_CURSOR
INVALID_NUMBER
LOGON_DENIED
NOT_LOGGED_ON
PROGRAM-ERROR
STORAGE_ERROR
TIMEOUT_ON_RESOURCE
VALUE_ERROR
ZERO_DIVIDE
OTHERS.
What are the PL/SQL Statements used in
cursor processing?
DECLARE CURSOR name, OPEN cursor name, FETCH cursor name INTO or Record
types, CLOSE cursor name.
What are the components of a PL/SQL
Block?
Declarative part, Executable part and Exception part.
Data types PL/SQL
what is a database trigger? Name some
usages of database trigger?
Database trigger is stored PL/SQL program unit associated with a specific
database table. Usages are Audit data modifications, Log events transparently,
Enforce complex business rules Derive column values automatically, Implement
complex security authorizations. Maintain replicate tables.
What is a cursor? Why Cursor is required?
Cursor is a named private SQL area from where information can be accessed.
Cursors are required to process rows individually for queries returning
multiple rows.
What is a cursor for loop?
Cursor for loop implicitly declares %ROWTYPE as loop index, opens a cursor,
fetches rows of values from active set into fields in the record and closes
when all the records have been processed.
e.g.. FOR emp_rec IN C1 LOOP
salary_total := salary_total +emp_rec sal;
END LOOP;
What will happen after commit statement
?
Cursor C1 is
Select empno,
ename from emp;
Begin
open C1; loop
Fetch C1 into
eno.ename;
Exit When
C1 %notfound;-----
commit;
end loop;
end;
The cursor having query as SELECT .... FOR UPDATE gets closed after
COMMIT/ROLLBACK.
The cursor having query as SELECT.... does not get closed even after
COMMIT/ROLLBACK.
How packaged procedures and functions
are called from the following?
a. Stored procedure or anonymous block
b. an application program such a PRC *C, PRO* COBOL
c. SQL *PLUS?
a. PACKAGE NAME.PROCEDURE NAME (parameters);
variable := PACKAGE NAME.FUNCTION NAME (arguments);
EXEC SQL EXECUTE
b. BEGIN
PACKAGE NAME.PROCEDURE NAME (parameters)
variable := PACKAGE NAME.FUNCTION NAME (arguments);
END;
END EXEC;
c. EXECUTE PACKAGE NAME.PROCEDURE if the procedures does not have any
out/in-out parameters. A function can not be called.
What is a stored procedure?
A stored procedure is a sequence of statements that perform specific
function.
What are the components of a PL/SQL
block?
A set of related declarations and procedural statements is called block.
What is difference between a PROCEDURE
& FUNCTION?
A FUNCTION is always returns a value using the return statement.
A PROCEDURE may return one or more values through parameters or may not return
at all.
What is difference between a Cursor declared
in a procedure and Cursor declared in a package specification?
A cursor declared in a package specification is global and can be accessed
by other procedures or procedures in a package.
A cursor declared in a procedure is local to the procedure that can not be
accessed by other procedures.
What are the cursor attributes used in
PL/SQL?
%ISOPEN - to check whether cursor is open or not
% ROWCOUNT - number of rows fetched/updated/deleted.
% FOUND - to check whether cursor has fetched any row. True if rows are
fetched.
% NOT FOUND - to check whether cursor has fetched any row. True if no rows are fetched.
These attributes are proceeded with SQL for Implicit Cursors and with Cursor
name for Explicit Cursors.
What are % TYPE and % ROWTYPE ? What are
the advantages of using these over data types?
% TYPE provides the data type of a variable or a database column to that
variable.
% ROWTYPE provides the record type that represents a entire row of a table or
view or columns selected in the cursor.
The advantages are:
I. Need not know about variable's data type
ii. If the database definition of a column in a table changes, the data type of
a variable changes accordingly.
What is difference between % ROWTYPE and
TYPE RECORD?
% ROWTYPE is to be used whenever query returns a entire row of a table or
view.
TYPE rec RECORD is to be used whenever query returns columns of different table
or views and variables.
E.g. TYPE r_emp is RECORD (eno emp.empno% type,ename emp ename %type );
e_rec emp% ROWTYPE
cursor c1 is select empno,deptno from emp;
e_rec c1 %ROWTYPE.