Friday, February 18, 2011

Common Errors while performing DML Operations on a table.

Primary key  Constraints
Equivalent to a unique constraints, both sets of rules apply.
ORA-00001: unique constraint (SCOTT.PK_DEPT) violated


Foreign key Constraints
INSERT and UPDATE on the child table: the value must exist in the parent table.
ORA-02291: integrity constraint (SCOTT.FK_DEPTNO) violated - parent key not found
UPDATE and DELETE on the parent table,
there must be no dependent rows in the child table.
ORA-02292: integrity constraint (SCOTT.FK_DEPTNO) violated – child record found

Not null Constraints
INSERT and UPDATE: cannot insert without a value, or modify the value to null.
ORA-01400: cannot insert NULL into (“SCOTT”.“EMP”.“EMPNO”)

Unique Constraints
INSERT and UPDATE: cannot have any value that already exists in the table. 
Multiple nulls are permitted.
ORA-00001: unique constraint (SCOTT.PK_DEPT) violated

What is ACID Property?

ACID Property - Atomicity Consistency Isolation Durability

A for Atomicity
The principle of atomicity states that all parts of a transaction must complete or not.

C for Consistency
The principle of consistency states that the results of a query must be consistent with the state of the database at the time the query started. It requires that the database ensure that changed values are  not seen by the query. Through the use of undo segments Oracle guarantees that if a query succeeds, the result will be consistent to all else data shown from undo segments.

I for Isolation
The principle of isolation states that an incomplete i.e. uncommitted transaction must be invisible to all others. While the transaction is in progress, only the one session that is executing the transaction is allowed to see the changes, all other sessions must see the unchanged data, not the new values.

D for Durability
The principle of durability states that once a transaction completes with a COMMIT, it must be impossible for the database to lose it. During the time that the transaction is in progress, the principle of isolation requires that no one can see the changes it has made so far.

Monday, January 31, 2011

What are the File/Directory Permissions in Unix/Linux?

Every user on a Unix/Linux system has a unique username, and is a member of at least one group. This group information is held in the password file stored in /etc/passwd. A user can also be a member of one or more other groups, stored in /etc/group.  Only the administrator can create new groups or add/delete group members.


Every directory and file on the system has an owner, and also an associated group. It also has a set of permission flags which specify separate read, write and execute permissions for the owner, group and other.

ls -l command shows the permissions and group associated with files.
ls -g command shows the group information.

The permission flags are read as follows (left to right)
1
directory flag, 'd' if a directory, '-' if a normal file, something else occasionally may appear here for special devices.
2,3,4
read, write, execute permission for User (Owner) of file
5,6,7
read, write, execute permission for Group
8,9,10
read, write, execute permission for Other

-
in any position means that flag is not set
r
file is readable by owner, group or other
w
file is writeable. On a directory, write access means you can add or delete files
x
file is executable - only for programs and shell scripts.
Execute permission on a directory means you can list the files in that directory

Sunday, January 23, 2011

Please explain - rollforward & rollback.


  • Rollforward refers to the process Oracle goes through to apply changes contained in the redo log files (both online and archive). The database SCN is moved forward within the blocks of the datafile that are changed within the redo log vectors. Roll forward occurs during database tablespace or datafile recovery and during crash recovery.
  • Rollback is the process of undoing uncommitted database transactions. The blocks copied to the rollback segments during transactions as a copy of the block for other transaction to read.When the instance aborts the undo information in the redo log files must be applied to the database during the roll forward process of recovery. Therefore during recovery the database must roll forward and roll back.
  •  Roll forward is applied on Redo log files as Rollback is applied on undo log files.

Explain the Perfomance Tuning.


  • It is the Improved throughput in OLTP System or decrease response time in datawarehouse(DWH). It s like that how fast we get output of a query/transaction/page/form from one to another.
  • Tuning can be applied at
    Query level /Object level / Database level /Application level / System level
  • Tuning is mainly responsible for   
    Database designer, Database developer, Database administrator(DBA), Application developer, etc.

How to send email from 10g Oracle Database (UTL_MAIL)?

To enable mailing from database using below steps.
1. sqlplus ‘/ as sysdba’
2. @$ORACLE_HOME/rdbms/admin/utlmail.sql
3. @$ORACLE_HOME/rdbms/admin/prvtmail.plb
4. Set smtp_server information in init.ora or spfile.ora

alter system set smtp_out_server = ‘SMTP_SERVER_IP_ADDRESS:SMTP_PORT’ scope=both;

Use default SMTP Port as 25.
If database instance had been started with spfile

alter system set smtp_out_server = ’10.10.10.10:25′ scope=both;

If database instance had been started with pfile


alter system set smtp_out_server = ’10.10.10.10:25′;


Also make below entry in your initSID.ora 
smtp_out_server = ’10.10.10.10:25′

To enable other DB users to use this functionality, grant execute permission on UTL_MAIL package.

grant execute on utl_mail to USERS;

Now,database configuration finished.
To send email, use below code in your procedure/package,

exec utl_mail.send((sender => ‘abc@abc.com’, recipients => ‘xyz@xyz.com’, subject => ‘Testing UTL_MAIL Option’, message => ‘TESTMAIL USING  UTL_MAIL PACKAGE.’);
 
Check the inbox of the email id, to verify the email received or not.

How I can find a running Oracle database is started using PFILE or SPFILE?


You can check through following ways

Check in v$parameter view

Select * from v$parameter where  upper(name)  like ‘SPFILE’;                              
or
SHOW PARAMETER SPFILE. 


If you find any data in above query then it started using SPFILE else with PFILE.

Wednesday, January 19, 2011

What is Oracle Data Pump (impdp and expdp)?

  • Oracle Data Pump is a new feature of Oracle Database 10 g that provides high speed, parallel, bulk data and metadata movement of Oracle database contents.
  • DBMS_DATAPUMP package  provides a server-side infrastructure for fast data and metadata movement. expdp and impdp is used to import/export activites.
  • It vastly improved performance and greatly enhanced functionality, such as restartability, flexible object selection, and better monitoring and control of export and import jobs.
  • Data Pump is server-based, rather than client-based. Dump files, log files, and SQL files are accessed relative to server-based directory paths, so that appropriate file security can be enforced.
  • Data Pump requires you to specify directory paths as directory objects. A directory object maps a name to a directory name on the file system.
  • Before you can run Data Pump Export or Data Pump Import, a directory object must be created by a DBA or by any user with CREATE ANY DIRECTORY privilege. 

Friday, December 31, 2010

What is autonomous transaction in Oracle?

  • An autonomous transaction is an independent transaction that is initiated by another transaction (the parent transaction).
  • An autonomous transaction can modify data and commit or rollback independent of the state of the parent transaction. 
  • The autonomous transaction must commit or roll back before the autonomous transaction is ended and the parent transaction continues. 
  • An autonomous transactions is available from Oracle 8i. 
  • An autonomous transaction is defined in the declaration of a pl/sql block. This can be an anonymous block, function, procedure, object method or trigger.
  • This is done by adding the statement 'PRAGMA AUTONOMOUS_TRANSACTION;' anywhere in the declaration block. 
  • Autonomous transactions can be used for logging in the database independent of the rollback/commit of the parent transaction.
      CREATE OR REPLACE PROCEDURE test
      IS
             PRAGMA AUTONOMOUS_TRANSACTION;
      BEGIN
             insert ....
             commit;
      END;

What are ORACLE PRE-COMPILERS?

  • Using ORACLE PRE-COMPILERS, 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 ststements into calls to the precompiler runtime library.The output must be compiled and linked with this library to create an executable.