Tuesday 16 September 2014

Difference between DDL, DML and DCL Commands



DDL (Data Definition Language)
Data Definition Language (DDL) statements are used to define the database structure or schema. 
  • CREATE - to create objects in the database
  • ALTER - alters the structure of the database
  • DROP - delete objects from the database
  • TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed
  • COMMENT - add comments to the data dictionary
  • RENAME - rename an object
DML (Data Manipulation Language)
Data Manipulation Language (DML) statements are used for managing data within schema objects.
  • SELECT - retrieve data from the a database
  • INSERT - insert data into a table
  • UPDATE - updates existing data within a table
  • DELETE - deletes all records from a table, the space for the records remain
  • MERGE - UPSERT operation (insert or update)
  • CALL - call a PL/SQL or Java subprogram
  • EXPLAIN PLAN - explain access path to data
  • LOCK TABLE - control concurrency
DCL (Data Control Language)
Data Control Language (DCL) statement.
  • GRANT - gives user's access privileges to database
  • DENY - to disallow specified users from performing specified tasks.
  • REVOKE - withdraw access privileges given with the GRANT command
TCL (Transaction Control Language)
Transaction Control (TCL) statements are used to manage the changes made by DML statements. It allows statements to be grouped together into logical transactions.
  • COMMIT - save work done
  • SAVEPOINT - identify a point in a transaction to which you can later roll back
  • ROLLBACK - restore database to original since the last COMMIT
  • SET TRANSACTION - Change transaction options like isolation level and what rollback segment to use.


I hope this article helped you. Your suggestions/feedback are most welcome.

Keep learning... Have a great day!!!




Monday 15 September 2014

Difference Between TRUNCATE, DELETE and DROP commands


1.DELETE
  • The DELETE command is used to remove rows from a table. 
  • A WHERE clause can be used to  remove some rows. 
  • If no WHERE condition is specified, all rows will be removed. 
  • After performing a DELETE operation you need to COMMIT or ROLLBACK the transaction to make the change permanent or to undo it.
  • Note that this operation will cause all DELETE triggers on the table to fire.
 
2.TRUNCATE
  • TRUNCATE removes all rows from a table. 
  • No triggers will be fired. 
  • Not able to perform ROLLBACK operation.
  • TRUNCATE is faster then DELETE and doesn't use as much undo space as a DELETE.

3.DROP
  • The DROP command removes a table from the database.
  •  All the tables' rows, indexes and privileges will also be removed. 
  • No DML triggers will be fired. 
  • Not able to perform ROLLBACK operation.

SOME MORE DIFFERENCES
  • DROP and TRUNCATE are DDL commands, whereas DELETE is a DML command. 
  • DELETE operations can be ROLLBACK (undone), while DROP and TRUNCATE operations cannot be ROLLBACK.
 

I hope this article helped you. Your suggestions/feedback are most welcome.

Keep learning... Have a great day!!!

Sunday 14 September 2014

HOW TO RENAME OR RELOCATE DATAFILE( non-system datafile)



STEPS TO RENAME OR RELOCATE DATAFILE(non-system datafile)
       

1.Determine in what tablespace this datafile is

2.Take tablespace offline for which we need to relocate datafile.

3.Move datafile to new location at the OS level.

4.Rename datafile at database level.

5.Take tablespace online.

6.Check tablespace detail.
STEP 1: CHECK IN WHAT TABLESPACE THIS DATAFILE IS
                SQL> select file_name,tablespace_name,status from dba_data_files;
                FILE_NAME                                                               TABLESPACE            STATUS
------------------------------------------------------- ---------- --------------------------
/u02/app/oracle/oradata/DEV/users01.dbf                 USERS                  AVAILABLE
/u02/app/oracle/oradata/DEV/undotbs01.dbf           UNDOTBS1        AVAILABLE
/u02/app/oracle/oradata/DEV/sysaux01.dbf              SYSAUX              AVAILABLE
/u02/app/oracle/oradata/DEV/system01.dbf             SYSTEM              AVAILABLE
/u02/app/oracle/oradata/DEV/testtbs.dbf                  TEST_TBS          AVAILABLE
STEP 2: TAKE TABLESPACE OFFLINE
SQL> alter tablespace TEST_TBS offline;
Tablespace altered.
STEP 3: MOVE DATAFILE TO NEW LOCATION AS OS LEVEL.
[oracle@dev DEV]$ mv /u02/app/oracle/oradata/DEV/testtbs.db  /u01/datafile/
STEP4: RENAME DATAFILE AT DATABASE LEVEL.
alter tablespace TEST_TBS rename datafile '/u02/app/oracle/oradata/DEV/testtbs.dbf' to '/u01/datafile/testtbs.dbf';
Tablespace altered.
STEP5: TAKE TABLESPACE ONLINE
SQL> alter tablespace TEST_TBS online;
Tablespace altered.
Step 6: CHECK TABLESPACE DETAIL.
                SQL> select tablespace_name, status from dba_tablespaces ;
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                        ONLINE
SYSAUX                        ONLINE
UNDOTBS1                  ONLINE
TEMP                            ONLINE
USERS                           ONLINE
TEST_TBS                     ONLINE

6 rows selected.
 

 


I hope this article helped you. Your suggestions/feedback are most welcome.

Keep learning... Have a great day!!!