Oracle DBA Interview Questions and Answers

Q : List four possible ways (direct or indirect) to execute an SQL query against an Oracle Database?
A :

  1. Using the SQL*Plus command line tool. With this tool, you can directly execute SQL commands.
  2. Using a GUI (Graphical User Interface) tool like SQL Developer. You can directly execute SQL commands with such tools.
  3. Using Oracle Enterprise Manager. This is an indirect way of executing an SQL query. When you perform certain operations with Oracle Enterprise Manager, they are converted to SQL queries implicitly and these SQL queries are executed against the database.
  4. Writing your own program. This is not a conventional way of executing your queries but actually it is widely used. Any web or windows program that uses Oracle database at backend, executes SQL queries. These programs are written using a programming language like .NET or JAVA and they use a driver to connect to database.

Q : A user is logged on to a Linux server as root where Oracle database is running. The Oracle is installed at “/uo 1/app/oracle/product/11.2.0.4/dbhome” and the name of the SID is “ORCL”. The user wants to connect to the database locally using operating system authentication with SYSDBA privileges. Show the command that the user has to execute.
A :

  • First he needs to switch to “oracle” user:# su – oracle
  • Later he needs to set required environment variables:
    • $ export ORACLE_SID=ORCL
    • $ export
    • ORACLE_HOME=/uo1/app/oracle/product/11.2.0.4/dbhome
  • Finally he needs to execute the following command to connect to database:
    • $/uol/app/oracle/product/11.2.0.4/dbhome/bin/sqlplus/ as sysdba

Q : What is SQL*Plus? How can one acquire it and what kind of operations can be performed with it?
A :

  • SQL*Plus is a command line tool developed by Oracle Corporation.
  • It is freely distributed. It is shipped with Oracle client installations or Oracle database installations as a default. So, if Oracle client or Oracle database software is installed on a computer, you can find it under “$ORACLE_HOME/bin/” directory. The name of the executable is “sqlplus” on Linux systems and “sqlplus.exe” on Microsoft Window Systems.
  • You can connect to an Oracle database with it. Once connected, you can execute Oracle commands or SQL queries against the connected database. SQL*Plus has also its own commands for formatting the output so that you can display the results in a meat way.

Q : In our organization, we’re using an Oracle database whose version is 11.2.0.4. Explain what each digit shows.
A :

“11”: This first digit shows the major database version. Oracle usually publishes a major release once a 4 year. This digit is usually followed by a character describing the nature of the release. For example: 9i (internet), 10g (grid), 11g (grid), 12c (cloud).

“2”: This second digit shows the maintenance release number of the software. Oracle publishes the major release as maintenance release 1 and then usually publishes a second maintenance release during the lifetime of the software. New features are added to database Software with maintenance releases.

“o”: This third digit is Fusion Middleware Number. This will be o for database software.

“4”: This fourth digit is called Component-Specific Release Number and it shows the path set update that was applied to the software. Patch set updates are published 4 times a yearby Oracle and as you apply them to your database software, this fourth digit advances.

Q : You’re at a client’s office and you are expected to solve a problem in their database. The client is not sure about their database version and you want to find out the version of their existing database. Describe three different methods you can use to find the version of database software.
A :

  • You can find the version by connecting to the database with SQL*Plus. SQL*Plus will print the name and the version of the database software once you’re connected to the database. A sample output will look like below:

“Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options”

  • You can find the version by querying the “vsversion” view. You can execute the SQL query below to find the version of the database:

SQL: SELECT * FROM v$version;
A sample output would look like below:
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – Production
PL/SQL Release 11.2.0.4.0 – Production
CORE 11.2.o.4.o Production
TNS for Linux: Version 11.2.0.4.0 – Production
NLSRTLVersion 11.2.0.4.0 – Production

  • You can find the version from Enterprise Manager. If you logon to Oracle Enterprise Manager, the version of the database software will be listed at the home page under “General” web part.

Q : What is a password file and why is it needed?
A : Passwords for database users are stored in the data dictionary of the database. When a user wants to log into the database, the username and password provided by the user is checked against the values stored in the database. If the username and password match, the user is granted access to database. The data dictionary is part of the database and it will be accessible as long as the database is open. The passwords for administrators are stored in the dictionary as well.
When the database is closed, the data dictionary will be inaccessible. There needs to be a mechanism for administrators to logon to database even when it is closed, because it is one of the administrator’s tasks to start up a down database. A password file is a separate operating system file that is stored on disk outside of the database. The username and password for the users who have SYSDBA or SYSOPER privileges are stored in it. Administrators who have those privileges are authenticated using this password file even when the database is down.

Q : Your client said that he forgot the password for “SYSTEM” user of his database and he no longer could connect. How would you recover this admin password?
A :

  • If there are other users who have “DBA” privileges, you can connect with those users and change the password for “SYSTEM” user. The users who have DBA privileges have the privileges to change any user’s password. This option is the easiest method but this may not be the case in all scenarios.
  • If there are no other users with “DBA” privileges then the only way to connect to the database isto connect using operating system privileges. The oracle software runs under a specific user at operating system. This user is usually named “oracle”. Also, there needs to be a user group that “oracle” user belongs. This user group is usually named “dba”. The operating system users who belong to “dba” group can connect to database with “SYSDBA” privileges. So, you need to ask the system administrator to logon to server as “oracle” user or any user who belongs to this “dba” group. Once logged on to operating system, you can connect to database locally using operating system authentication with SYSDBA privileges. After connecting to the database, you can change the reset the password for this system user.

Q : You want to find out how many users are defined in the password file and what privileges those user have. How would you accomplish this?
A : You need to query the “v$pwfile_users” view to get information about the existing users in the password file. Execute the SQL query below:
Sql>SELECT * FROM v$pwfile_users;
The query above will return four columns for each user in the password file. The column names are USERNAME, SYSDBA, SYSOPER and SYSASM.

  1. The USERNAME column shows the username of the user in the password file.
  2. The SYSDBA column shows whether the user has SYSDBA privileges or not.
  3. The SYSOPER column shows whether the user has SYSOPER privileges or not.
  4. The SYSASM column shows whether the user has SYSASM privileges or not.

Q : How does an Oracle DBA role differ from an Oracle Developer role in an organization? Are there any similarities between these too?
A : An Oracle developer is mainly responsible for developing backend applications. They do data modelling according to business rules. They design tables, create indexes and other types of constraints. They are expected to know SQL and PL/SQL. The develop procedures using these languages. However, the Oracle developers are not expected to administer the database software itself.
On the other side, an Oracle DBA’s main duty is to administer the database which involves tasks like doing maintenance to keep the databases up and running, taking backups, enforcing security policies etc. DBAs are not primarily assigned to develop code. DBAs are supposed to have a good knowledge of SQL and PL/SQL like a developer as these are also required for administering the database.
According to the structure of the organization, DBAs might also be assigned development tasks or at least assist the developers where necessary.

Q : What would be the main responsibilities of an Oracle DBA in an organization?
A : The main duty of an Oracle DBA isto keep the Oracle Databases of the organization up and running. This may involve installing and configuring a database from scratch.
On a running system, the DBA will be the only privileged person who can shut down and start up the database.
The DBA will create new users and manage the privileges of each user.
He will take regular backups to ensure that data is safe. In case of a disaster, he will be responsible of restoring the database from backups. He will have to do monitor the space usage and do capacity planning for the database.
He will be responsible for enforcing security policies. He will have to monitor database activities. He will have to tune the database so that it works at an acceptable speed.
He is expected to follow the latest patches and apply them when applicable.

Q : There are 10 identical servers and you want to install Oracle Database on each of them. What would you use to automate the installation process?
A : If you are going to do batch installations, it is best to do it with Oracle Universal Installer in silent mode. For single installations.it is best to start installer in “interactive mode”and set installation options at each window. However in batch installations, this will take long. You need to do the installations in “silent” mode with a “response file”. In silent installation, you start the Oracle Universal Installer from a command prompt and specify the location of the “response file”.
The installation files and the response file can be shared among the servers via NFS so that you won’t have to copy the setup files to each server.

Q : You want to create a response file to speed up the installation of databases. How would you prepare a response file?
A : A response file is a plain text file, where options to create a database are stored. It is possible to create it manually from scratch but that would take long and would be erroneous.
Installation media comes with a template response file. It is rather easier to customize it manually. This file also contains notes about the parameters.
However the easiest and most reliable way to create a response file is using Oracle Universal Installer. If you start the installer in “record” mode, every option you choose at each step is automatically recorded in a response file in correct format. After the installer completes in “record” mode, you’ll have a complete response file with all the options set in it.

Q : What makes up an Oracle Instance?
A : An instance is made up of a shared memory region on RAM called System Global Area (SGA) and background processes.
The system global area is a shared memory, which means it can be accessed by multiple processes. This are holds data which is required by the instance to operate.
The background processes are operating system processes and each process has a specific responsibility in the instance.
The System Global Area and background processes are created when the instance is “started”. When the instance is “shut down”, the processes are killed and the shared memory region is “released” back to operating system.

Q : When creating a database with SQL script, what would you specify in the script?
A : It is also possible to create a database via an SQL script. In this script I would specify:

  1. Name of the database
  2. Password of the SYS user
  3. Password of the SYSTEM user
  4. At least three online redolog groups. I would also specify at least two members for each redolog group.
  5. Character set and the national character set of the database.
  6. Location and size of the SYSTEM and SYSAUXtablespace. These tablespaces will be used for holding system data.
  7. I would specify a normal tablespace to use as the default tablespace of the database.
  8. I would specify a temporary tablespace to use as the default temporary tablespace of the database.
  9. I would specify an undo tablespace.

Q : What constitutes an Oracle Database?
A : An Oracle database is resides on disk and this is permanent. It is composed of files that are stored on disk. These files can be categorized into three types:

  1. DataFiles: These files hold “user” data or “system” data. Any data that belongs to an application is an example of “user” data. The “data dictionary” of the database is an example of “system” data.
  2. OnlineRedo Log Files: These files hold the “change” records. Any change, which will be made to a data file, is first written to online redo log files.
  3. ControlFiles: These files are relatively small but they are essential for a database. They hold information about the physical structure of the database like location of data files, online redo log files etc.

Q : Which tools can you use to start up an Oracle database?
A : You can start up a database with three tools.

  1. SQL*Plus: This is the most widely used option. You first connect to an idle instance with SQL*Plus and then startup the instance with “startup” command.
  2. Oracle Enterprise Manager: This is another way of starting up a database. You can logon to Oracle Enterprise Manager even if the database is stopped. OEM will detect the status of the down database and will present you “Startup” button. You can startup the database by clicking this button.
  3. RMAN: This is rather a less used tool for starting up a database but it is possible to startup a database from Recovery Manager command line.

Q : During startup of a database, at which order does Oracle software search a parameter file?
A : A parameter file holds instance parameters which govern how an instance operates. In order to startup an instance, Oracle needs to locate this file.
The search order is as below: /dbs/spfile.ora – This is an server parameter file and this is the first place that oracle will look for. SID- is the service identifier of the instance.
<$ORACLE_HOME-/dbs/spfile.ora -If Oracle cannot find the file in the first location, it will search this file. This is again a server parameter file.
/dbs/init.ora – This is a parameter file and it is plain text. If Oracle cannot find the two file listed above, it will search for this file. This is the last location to search.

Q : You want to do maintenance on your database but during the maintenance period, you don’t want any user to be able to connect to the database. How would you accomplish this?
A : When a database is open, any user with “CREATE SESSION” privilege can make a connection. However it is possible to open the database in “restricted” mode. When a database is open in restricted mode, only users with “RESTRICTED SESSION” privilege can make a connection to the database. By default, only DBAs have “RESTRICTED SESSION” privilege and it should not be granted to regular users.
Opening a database in “restricted” mode is a good way to prevent regular users from accessing the database during maintenance.

Q : At what stages does an instance pass while starting up?
A : You can startup a database with the modes below:

  1. NOMOUNT: This is the first stage. At this mode the instance is started.
  2. MOUNT: This is the second stage. At this mode, the instance is started and the database is mounted. However, the database is not open so you cannot still access data. However you can perform several maintenance tasks at this stage.
  3. OPEN: This is the final stage. The database is open and all the data is accessible. The default open mode is “read/write” which means you can read data or write to it. However, it is also possible to open itin “read only” mode where you can only read data but cannot change it.

Q : Your database is open. You don’t want to interrupt currently connected users but you want to temporarily disable further logons. What would you do to achieve this and how would you revert the database back to normal state after that?

A : I would put the database in “restricted mode”. While in restricted mode, only users with “RESTRICTED SESSION” privilege can make a connection. I would run the below command to put database in restricted mode:
Sql> alter system enable restricted session;
After executing this command regular users won’t be able to logon to the database. Once I want to revert the database to normal, I execute this command:
Sql>alter system disable restricted session;

Q : What are the types of shutdown modes of an Oracle database?
A :

  1. Normal: In this mode, no new connections are allowed and the database is closed after all the sessions disconnect themselves.
  2. Immediate: No new connections are allowed and the existing active transactions are rolled back. Changes made by an active transaction are lost in this option.
  3. Transactional: No new connections are allowed and Oracle waits until all active transactions are completed.
  4. Abort: This happens immediately however the database is not shutdown cleanly. Database will have to perform instance recovery next time it is started. This option should not be used in regular activities.

Q : The data files of your database reside on a storage system. You want to take a snapshot of the storage so that you can use it backup purposes. You also want to ensure that no data is written to data files while the snapshot is being taken. Is it possible to accomplish this while the database is open?
A : Yes, it is possible to stop all I/O activity while the database is open. Normally, when a database is open, there will be constant I/O to online redolog files or data files. Even if the database is idle, there is no guarantee that database will not write anything to files during snapshot.

However, if you “suspend” the database, Oracle will halt I/O operations to these datafiles until it is reverted back to normal mode. So, you should “suspend” the database, take the snapshot of the disk and then put the database back in normal mode immediately after that.

Q : You want your database to start automatically, after a reboot of the server. How would you do that?
A : In default configuration, Oracle database will not automatically start after the server reboots. You’ll have to start it manually after each reboot. You’ll usually want it to start automatically. There are two methods to accomplish this:

  • Using Oracle Restart: “Oracle Restart” is a feature of Oracle High Availability Service (OHAS). You need to install “Grid Infrastructure” to enable “Oracle Restart” feature. Using “Oracle Restart” is the recommended way.
  • Using Your Own Script: It is also possible for you to write your own “bash” script to start the database and place that script in the startup of the operating system.

Q : What kind of information can be given while creating a sequence?
A :

  1. Sequence Name: This is the name of the sequence. It should be unique inside the schema.
  2. Start With: This is the number that the sequence will start from.
  3. Increment By: This number shows how much the sequence will increment at each move.
  4. Nocycle: This determines whether the sequence will start from the beginning once it reaches the end.
  5. Nocache: This determines how much next sequence number willbe cached in SGA. Nocache means no next sequence will be cached.

Q : Which components of your database environment can be protected by an “Oracle Restart” configuration?
A :

  • Database Instances and Automatic Storage Management (ASM): Database instances and ASM instances will be restarted if they crash somehow.
  • Oracle NET Listener: Oracle NET Listener will be started if it crashes and stops listening for incoming connection.
  • ASM Disk Groups: Oracle Restart will mount ASM Disk groups if they are dismounted.
  • Database Services: Non-default database services will be started by Oracle Restart feature.
  • Oracle Notification Services (ONS): This is another Oracle component that can be protected by Oracle Restart.

Q : Explain the difference between “shared server” architecture and “dedicated server” architecture?
A : When a user connects to a database, he sends SQL queries to the database to execute. These SQL queries are executed by a “server process” and the result is returned back to the user. In “dedicated server” architecture, the instance will create one server process for each connected user.
That process will be “dedicated” to that user and will only serve that client.
However in “shared server” architecture, a single server process will serve multiple clients. In shared server architecture, the total memory consumption will be less. However, certain operations like DBA activities can only be performed in dedicated server.

Q : What are the instance parameters that are used for configuring shared server architecture?
A :

  • DISPATCHERS: Astring value which is used to configure dispatchers.
  • SHARED_SERVERS: Minimum number of shared server processes that will be present in the server. Also, this number of shared servers is created during startup.
  • MAX SHARED_SERVERS: This parameter determines the maximum number of shared server processes that can run at the same time.
  • SHARED_SERVER SESSIONS: This parameter specifies the maximum number of sessions that can exist at the same time using shared server connection.
  • CIRCUITS: This parameter determines the maximum number of virtual circuits that can exist in the system.

Q : Explain how “shared server” architecture works.
A : In shared server architecture, the clients connect to a “dispatcher” process. This dispatcher is responsible for delivering the SQL requests to the “request queue”.

The shared server process monitors the request queue. When they find an incoming request, they execute this SQL query and place the results in the response queue. The request queue and the response queue reside in the system global area.
The dispatcher processes also monitor response queue. When it receives a result, they deliver the result to the relevant client.
In this architecture, there will be multiple shared server processes and dispatcher processes.

Q : Explain how the “Database Writer” process works.
A : There can be multiple database background processes. They are named as “DBWn” at operating system. This process is responsible for writing “dirty” buffers to disk. When a server process wants to update a data block, it reads the block from disk to buffer cache if the block is not already in the cache and then updates the copy in the cache. The modified database block in the buffer cache is called a “dirty” block.

Q : Oracle DBA Vs Oracle Developer
A :

Feature Oracle DBA Oracle Developer
Key Roles Managing Databases Development(Coding)
Type of Tasks Streamlined Wide Range
Work Environment Database maintenance Database development
Area of work Backend database management Front-end development
Few other tasks Backup, recovery, server connectivity, etc Coding, designing UI, etc