Home
| | Sitemap
||Page
number : 4
- What are database files, control files and log files. How many of these files should a database have at least? Why?
Database Files
The database files hold the actual data and are typically the largest in
size. Depending on their sizes, the tables (and other objects) for all the
user accounts can go in one database file—but that's not an ideal
situation because it does not make the database structure very flexible
for controlling access to storage for different users, putting the database
on different disk drives, or backing up and restoring just part of the database.
You must have at least one database file but usually, more than one files
are used. In terms of accessing and using the data in the tables and other
objects, the number (or location) of the files is immaterial.
The database files are fixed in size and never grow bigger than the size
at which they were created
Control Files
The control files and redo logs support the rest of the architecture. Any
database must have at least one control file, although you typically have
more than one to guard against loss. The control file records the name of
the database, the date and time it was created, the location of the database
and redo logs, and the synchronization information to ensure that all three
sets of files are always in step. Every time you add a new database or redo
log file to the database, the information is recorded in the control files.
Redo Logs
Any database must have at least two redo logs. These are the journals for
the database; the redo logs record all changes to the user objects or system
objects. If any type of failure occurs, the changes recorded in the redo
logs can be used to bring the database to a consistent state without losing
any committed transactions. In the case of non-data loss failure, Oracle
can apply the information in the redo logs automatically without intervention
from the DBA.
The redo log files are fixed in size and never grow dynamically from the size at which they were created.
- What is ROWID?
The ROWID is a unique database-wide physical address for every
row on every table. Once assigned (when the row is first inserted into the
database), it never changes until the row is deleted or the table is dropped.
The ROWID consists of the following three components, the combination of which uniquely identifies the physical storage location of the row.
- Oracle database file number, which contains the block with the rows
- Oracle block address, which contains the row
- The row within the block (because each block can hold many rows)
The ROWID is used internally in indexes as a quick means of retrieving rows with a particular key value. Application developers also use it in SQL statements as a quick way to access a row once they know the ROWID
- What is Oracle Block? Can two Oracle Blocks have the same address?
Oracle "formats" the database files into a number of
Oracle blocks when they are first created—making it easier for the
RDBMS software to manage the files and easier to read data into the memory
areas.
The block size should be a multiple of the operating system block size.
Regardless of the block size, the entire block is not available for holding
data; Oracle takes up some space to manage the contents of the block. This
block header has a minimum size, but it can grow.
These Oracle blocks are the smallest unit of storage. Increasing the Oracle
block size can improve performance, but it should be done only when the
database is first created.
Each Oracle block is numbered sequentially for each database file starting at 1. Two blocks can have the same block address if they are in different database files.
- What is database Trigger?
A database trigger is a PL/SQL block that can defined to automatically execute for insert, update, and delete statements against a table. The trigger can e defined to execute once for the entire statement or once for every row that is inserted, updated, or deleted. For any one table, there are twelve events for which you can define database triggers. A database trigger can call database procedures that are also written in PL/SQL.
- Name two utilities that Oracle provides, which are use for backup and recovery.
Along with the RDBMS software, Oracle provides two utilities that
you can use to back up and restore the database. These utilities are Export
and Import.
The Export utility dumps the definitions and data for
the specified part of the database to an operating system binary file. The
Import utility reads the file produced by an export, recreates
the definitions of objects, and inserts the data
If Export and Import are used as a means of backing up and recovering the database, all the changes made to the database cannot be recovered since the export was performed. The best you can do is recover the database to the time when the export was last performed.
- What are stored-procedures? And what are the advantages of using them.
Stored procedures are database objects that perform a user defined operation. A stored procedure can have a set of compound SQL statements. A stored procedure executes the SQL commands and returns the result to the client. Stored procedures are used to reduce network traffic.
- How are exceptions handled in PL/SQL? Give some of the internal exceptions' name
PL/SQL exception handling is a mechanism for dealing with run-time
errors encountered during procedure execution. Use of this mechanism enables
execution to continue if the error is not severe enough to cause procedure
termination.
The exception handler must be defined within a subprogram specification.
Errors cause the program to raise an exception with a transfer of control
to the exception-handler block. After the exception handler executes, control
returns to the block in which the handler was defined. If there are no more
executable statements in the block, control returns to the caller.
User-Defined Exceptions
PL/SQL enables the user to define exception handlers in the declarations
area of subprogram specifications. User accomplishes this by naming an exception
as in the following example:
ot_failure EXCEPTION;
In this case, the exception name is ot_failure. Code associated
with this handler is written in the EXCEPTION specification area as follows:
EXCEPTION
when OT_FAILURE then
out_status_code := g_out_status_code;
out_msg
:= g_out_msg;
The following is an example of a subprogram exception:
EXCEPTION
when NO_DATA_FOUND then
g_out_status_code := 'FAIL';
RAISE ot_failure;
Within this exception is the RAISE statement that transfers control back
to the ot_failure exception handler. This technique of raising the exception
is used to invoke all user-defined exceptions.
System-Defined Exceptions
Exceptions internal to PL/SQL are raised automatically upon error. NO_DATA_FOUND is a system-defined exception. Table below gives a complete list of internal exceptions.
PL/SQL internal exceptions.
Exception Name |
Oracle Error |
CURSOR_ALREADY_OPEN |
ORA-06511 |
DUP_VAL_ON_INDEX |
ORA-00001 |
INVALID_CURSOR |
ORA-01001 |
INVALID_NUMBER |
ORA-01722 |
LOGIN_DENIED |
ORA-01017 |
NO_DATA_FOUND |
ORA-01403 |
NOT_LOGGED_ON |
ORA-01012 |
PROGRAM_ERROR |
ORA-06501 |
STORAGE_ERROR |
ORA-06500 |
TIMEOUT_ON_RESOURCE |
ORA-00051 |
TOO_MANY_ROWS |
ORA-01422 |
TRANSACTION_BACKED_OUT |
ORA-00061 |
VALUE_ERROR |
ORA-06502 |
ZERO_DIVIDE |
ORA-01476 |
In addition to this list of exceptions, there is a catch-all exception named OTHERS that traps all errors for which specific error handling has not been established.
- Does PL/SQL support "overloading"? Explain
The concept of overloading in PL/SQL relates to the idea
that you can define procedures and functions with the same name. PL/SQL
does not look only at the referenced name, however, to resolve a procedure
or function call. The count and data types of formal parameters are also
considered.
PL/SQL also attempts to resolve any procedure or function calls in locally defined packages before looking at globally defined packages or internal functions. To further ensure calling the proper procedure, you can use the dot notation. Prefacing a procedure or function name with the package name fully qualifies any procedure or function reference.
- Tables derived from the ERD
a) Are totally unnormalised
b) Are
always in 1NF
c) Can
be further denormalised
d) May have multi-valued attributes
(b) Are always in 1NF
- Spurious tuples may occur due to
i. Bad normalization
ii. Theta joins
iii. Updating tables from join
a) i
& ii
b) ii & iii
c) i & iii d) ii & iii
(a) i & iii because theta joins are joins made on keys that are not primary keys.