You are on page 1of 9

COMMIT, ROLLBACK and SAVEPOINT

SQL*PLUS has a facility to automatically commit all the work, without explicitly issuing the
commit command i.e. SET AUTOCOMMIT ON -- Enables autocommit feature.

SET AUTOCOMMIT OFF -- Is the default and disables the automatic committing

Note: Certain actions automatically force a commit. DDL Commands CREATE, DROP,
ALTER and DCL commands EXIT, GRANT, REVOKE, CONNECT, DISCONNECT, AUDIT and
NOAUDIT are example for this. (i.e. the work done by these commands can not be taken
back by ROLLBACK command).

SAVEPOINT: This statement is used to mark a point in the transaction to which you can
later ROLLBACK. (i.e. Undo the changes made to the database till that point)

Following screen shots explain the usage of SAVEPOINT and ROLLBACK commands
RENAME COMMAND: This Command is used to change the name of a table.

SQL > RENAME STUD TO STUDENT;

LOCK TABLE : The LOCK TABLE command is used to prevent concurrent processes from
changing a table or from using it.
The two Locking modes are
1)IN SHARE MODE: In which concurrent processes are allowed to perform only read-only
operations.
2)IN EXCLUSIVE MODE:Prevents concurrent processes from performing any operation the
table.

Only the Owner of the table, DBA, or a user having ALTER, DELETE, INSERT, SELECT,
UPDATE can lock a table. A table can have multiple SHARE LOCKS but only one EXCLUSIVE
LOCK

Example: For obtaining EXCLUSIVE LOCK we write.

SQL> LOCK TABLE STUD in EXCLUSIVE MODE;

SQL> LOCK TABLE STUD in EXCLUSIVE MODE NOWAIT;

If we try to obtain a lock using the first statement then Oracle waits if the table is not
available for locking. In second statement it returns immediately.
SQL> LOCK TABLE STUD in SHARE MODE; --- to obtain shared mode lock

MORE DATABASE OBJECTS: A schema is a collection of components and database


objects under the control of a given database user. Database Objects in Oracle are
SEQUENCE, SYNONYM, and INDEX etc.

SEQUENCE: A sequence is an object in oracle, which is used to generate a series of


numbers. It can generate unique sequential numbers for using in a primary key column of
a table.
CURRVAL and NEXTVAL are called pseudo columns. CURRVAL returns the current value
of a sequence. NEXTVAL increments the sequence and then returns the next value. A
sequence can be modified using ALTER statement.

SQL> ALTER SEQUENCE SS

MAXVALUE 99999;

SQL> DROP SEQUENCE SS;

SYNONYM: A synonym is an alternative name given to the table, sequence etc in oracle.
There are two types public Synonym and Private Synonym.
1) Public Synonym: A public synonym is accessible to all the users.

Example:

SQL> SELECT * FROM DICT;

DICT is a public Synonym for table DICTIONARY. To create a public synonym we need to
login as user SYSTEM (i.e. DBA) and then type the following

SQL> CREATE SYNONYM EMPLOYEE FOR SCOTT.EMP;


In the above statement you have created synonym EMPLOYEE for EMP. Now you need to
grant permissions to all the users over this synonym. The synonym for can be used to
perform all DML operations (SELECT, UPDATE, INSERT and DELETE) over the table. We
cannot ALTER the table using its SYNONYM.

2) Private Synonym: To create a private synonym we write.

SQL> CREATE SYNONYM EMPLOYEE FOR EMP;


SQL> DROP SYNONYM EMPLOYEE; -------- Will remove the Synonym.

INDEX: Indexes will make data access faster. This index tells where a certain row in the
table is stored. It is more like an index in the book. When we create an index on a column
it is stored separately in the database. A query on any table initially searches for an Index
on that table.

SQL> CREATE INDEX EMP_IDX ON EMP(EMPNO);

SQL> DROP INDEX EMP_IDX;

Creating new user account : To create a new user account one need to logon to the
database as a DBA as shown above. Then execute syntax similar to the one shown below.
In the above example we have created 2 user accounts by names U1 and U2. Let us say
U1 owns a table by name ORDERS which U2 want to use. This is possible only when U1 has
given permission to U2. Privileges can be given using GRANT and taken back by using
REVOKE command

Below given screen shots explain these commands.


As U2 when we tried to access data from ORDERS of U1 we failed, as there were no
sufficient privileges. Later we could access because U1 granted permission to do so.

To take back the privileges we write

SQL> REVOKE SELECT ON ORDERS FROM U2; ---- For doing this You have to login as U1.
SQL> GRANT SELECT, UPDATE ON ORDERS TO U2;

SQL> REVOKE SELECT, UPDATE ON ORDERS FROM U2;

SQL> GRANT ALL ON ORDERS TO U2; --- To give SELECT, UPDATE, INSERT and DELETE
privileges in a single command

SQL> REVOKE ALL ON ORDERS FROM U2;

SQL> GRANT SELECT ON ORDERS TO U2 WITH GRANT OPTION;

Above command authorizes U2 to transfer the same privilege to others on behalf of U1.