Sie sind auf Seite 1von 14

1.What is an Oracle Instance?

2. What information is stored in Control File?


3. When you start an Oracle DB which file is accessed first?
4. What is the Job of SMON, PMON processes?
5. What is Instance Recovery?
6. What is written in Redo Log Files?
7. How do you control number of Datafiles one can have in an Oracle database?
8. How many Maximum Datafiles can there be in an Oracle Database?
9. What is a Tablespace?
10. What is the purpose of Redo Log files?
11. Which default Database roles are created when you create a Database?
12. What is a Checkpoint?
13. Which Process reads data from Datafiles?
14. Which Process writes data in Datafiles?
15. Can you make a Datafile auto extendible. If yes, how?
16. What is a Shared Pool?
17. What is kept in the Database Buffer Cache?
18. How many maximum Redo Logfiles one can have in a Database?
19. What is difference between PFile and SPFile?
20. What is PGA_AGGREGRATE_TARGET parameter?
21. Large Pool is used for what?
22. What is PCT Increase setting?
23. What is PCTFREE and PCTUSED Setting?
24. What is Row Migration and Row Chaining?
25. What is 01555 - Snapshot Too Old error and how do you avoid it?
26. What is a Locally Managed Tablespace?
27. Can you audit SELECT statements?
28. What does DBMS_FGA package do?
29. What is Cost Based Optimization?
30. How often you should collect statistics for a table?
31. How do you collect statistics for a table, schema and Database?
32. Can you make collection of Statistics for tables automatic?
33. On which columns you should create Indexes?
34. What type of Indexes are available in Oracle?
35. What is B-Tree Index?
36. A table is having few rows, should you create indexes on this table?
37. A Column is having many repeated values which type of index you should create on this column, if
you have to?
38. When should you rebuilt indexes?
39. Can you built indexes online?
40. Can you see Execution Plan of a statement.
41. A table is created with the following setting

storage (initial 200k


next 200k
minextents 2
maxextents 100
pctincrease 40)

What will be size of 4th extent?

42. What is DB Buffer Cache Advisor?

43. What is STATSPACK tool?

44. Can you change SHARED_POOL_SIZE online?

45. Can you Redefine a table Online?

46. Can you assign Priority to users?

47. You want users to change their passwords every 2 months. How do you enforce
this?

48. How do you delete duplicate rows in a table?

49. What is Automatic Management of Segment Space setting?

50. What is the difference between DELETE and TRUNCATE statements?

51. What is COMPRESS and CONSISTENT setting in EXPORT utility?

52. What is the difference between Direct Path and Convention Path loading?

53. Can you disable and enable Primary key?

54. What is an Index Organized Table?

55. What is a Global Index and Local Index?

56. What is the difference between Range Partitioning and Hash Partitioning?
57. What is difference between Multithreaded/Shared Server and Dedicated Server?

58. Can you import objects from Oracle ver. 7.3 to 9i?

59. How do you move tables from one tablespace to another tablespace?

60. How do see how much space is used and free in a tablespace?

UNIX INTERVIEW QUESTIONS


1. How do you see how many instances are running?
2. How do you automate starting and shutting down of databases in Unix?
3. You have written a script to take backups. How do you make it run automatically every week?
4. What is OERR utility?
5. How do you see Virtual Memory Statistics in Linux?
6. How do you see how much hard disk space is free in Linux?
7. What is SAR?
8. What is SHMMAX?
9. Swap partition must be how much the size of RAM?
10. What is DISM in Solaris?
11. How do you see how many memory segments are acquired by Oracle Instances?
12. How do you see which segment belongs to which database instances?
13. What is VMSTAT?
14. How do you set Kernel Parameters in Red Hat Linux, AIX and Solaris?
15. How do you remove Memory segments?
16. What is the difference between Soft Link and Hard Link?
17. What is stored in oratab file?
18. How do you see how many processes are running in Unix?
19. How do you kill a process in Unix?
20. Can you change priority of a Process in Unix?
Oracle database FAQ
Oracle database FAQ:

Contents

[hide]

• 1 How does one create a new database?

• 2 What database block size should I use?

• 3 What database aspects should be monitored?

• 4 How does one rename a database?

• 5 Can one rename a database user (schema)?

• 6 Can one rename a tablespace?

• 7 How does one see the uptime for a database?

• 8 Can one resize tablespaces and data files?

• 9 How do I find the overall database size?

• 10 How do I find the used space within the database size?

• 11 Where can one find the high water mark for a table?

• 12 How do I find used/free space in a TEMPORARY tablespace?

• 13 How can one see who is using a temporary segment?

• 14 Who is using which UNDO or TEMP segment?

• 15 How does one get the view definition of fixed views/tables?

• 16 How full is the current redo log file?

• 17 Tired of typing sqlplus '/as sysdba' every time you want to do something?

• 18 What patches are installed within an Oracle Home?


• 19 How does one give developers access to trace files (required as input to

tkprof)?

[edit]How does one create a new database?

One can create and modify Oracle databases using the Oracle DBCA (Database Configuration Assistant) utility. The dbca utility is located in the

$ORACLE_HOME/bin directory. The Oracle Universal Installer (oui) normally starts it after installing the database server software to create the starter database.

One can also create databases manually using scripts. This option, however, is falling out of fashion as it is quite involved and error prone. Look at this example

for creating an Oracle 9i or higher database:

CONNECT SYS AS SYSDBA


ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/oradata/';
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1='/u02/oradata/';
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_2='/u03/oradata/';
CREATE DATABASE;

Also see Creating a New Database.

[edit]What database block size should I use?

Oracle recommends that your database block size match, or be multiples of your operating system block size. One can use smaller block sizes, but the

performance cost is significant. Your choice should depend on the type of application you are running. If you have many small transactions as with OLTP, use a

smaller block size. With fewer but larger transactions, as with a DSS application, use a larger block size.

If you are using a volume manager, consider your "operating system block size" to be 8K. This is because volume manager products use 8K blocks (and this is not

configurable).

[edit]What database aspects should be monitored?

One should implement a monitoring system to constantly monitor the following aspects of a database. This can be achieved by writing custom scripts,

implementing Oracle's Enterprise Manager, or buying a third-party monitoring product. If an alarm is triggered, the system should automatically notify the DBA (e-

mail, text, etc.) to take appropriate action.

Infrastructure availability:

 Is the database up and responding to requests

 Are the listeners up and responding to requests

 Are the Oracle Names and LDAP Servers up and responding to requests

 Are the Application Servers up and responding to requests

 Etc.
Things that can cause service outages:

 Is the archive log destination filling up?

 Objects getting close to their max extents

 Tablespaces running low on free space/ Objects what would not be able to extend

 User and process limits reached

 Etc.

[edit]How does one rename a database?

Follow these steps to rename a database:

 Start by making a full database backup of your database (in case you need to restore if this procedure is not working).

 Execute this command from sqlplus while connected to 'SYS AS SYSDBA':

ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;

 Locate the latest dump file in your USER_DUMP_DEST directory (show parameter USER_DUMP_DEST) - rename it to something like dbrename.sql.

 Edit dbrename.sql, remove all headers and comments, and change the database's name. Also change "CREATE CONTROLFILE REUSE ..." to "CREATE

CONTROLFILE SET ...".

 Shutdown the database (use SHUTDOWN NORMAL or IMMEDIATE, don't ABORT!) and run dbrename.sql.

 Rename the database's global name:

ALTER DATABASE RENAME GLOBAL_NAME TO new_db_name;

[edit]Can one rename a database user (schema)?

No, this is listed as Enhancement Request 158508. Workaround:

 Do a user-level export of user A

 create new user B

 import system/manager fromuser=A touser=B

 drop user A

[edit]Can one rename a tablespace?

From Oracle 10g Release 1, users can rename tablespaces. Example:

ALTER TABLESPACE ts1 RENAME TO ts2;


However, you must adhere to the following restrictions:

 COMPATIBILITY must be set to at least 10.0.1

 Cannot rename SYSTEM or SYSAUX

 Cannot rename an offline tablespace

 Cannot rename a tablespace that contains offline datafiles

For older releases, use the following workaround:

 Export all of the objects from the tablespace

 Drop the tablespace including contents

 Recreate the tablespace

 Import the objects

[edit]How does one see the uptime for a database?

Look at the following SQL query:

SELECT to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') "DB Startup Time"


FROM sys.v_$instance;

[edit]Can one resize tablespaces and data files?

Add more files to tablespaces

To add more space to a tablespace, one can simply add another file to it. Example:

ALTER TABLESPACE USERS ADD DATAFILE '/oradata/orcl/users1.dbf' SIZE 100M;

Resize datafiles

One can manually increase or decrease the size of a datafile from Oracle 7.2 using the following command:

ALTER DATABASE DATAFILE 'filename2' RESIZE 100M;

Because you can change the sizes of datafiles, you can add more space to your database without adding more datafiles. This is beneficial if you are concerned

about reaching the maximum number of datafiles allowed in your database.

Manually reducing the sizes of datafiles allows you to reclaim unused space in the database. This is useful for correcting errors in estimations of space

requirements.

Extend datafiles
Also, datafiles can be allowed to automatically extend if more space is required. Look at the following commands:

CREATE TABLESPACE pcs_data_ts


DATAFILE 'c:ora_appspcspcsdata1.dbf' SIZE 3M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
DEFAULT STORAGE ( INITIAL 10240
NEXT 10240
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0)
ONLINE
PERMANENT;
ALTER DATABASE DATAFILE 1 AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;

[edit]How do I find the overall database size?

The biggest portion of a database's size comes from the datafiles. To find out how many megabytes are allocated to ALL datafiles:

select sum(bytes)/1024/1024 "Meg" from dba_data_files;

To get the size of all TEMP files:

select nvl(sum(bytes),0)/1024/1024 "Meg" from dba_temp_files;

To get the size of the on-line redo-logs:

select sum(bytes)/1024/1024 "Meg" from sys.v_$log;

Putting it all together into a single query:

select a.data_size+b.temp_size+c.redo_size "total_size"


from ( select sum(bytes) data_size
from dba_data_files ) a,
( select nvl(sum(bytes),0) temp_size
from dba_temp_files ) b,
( select sum(bytes) redo_size
from sys.v_$log ) c;

Another query ("Free space" reports data files free space):

col "Database Size" format a20


col "Free space" format a20
select round(sum(used.bytes) / 1024 / 1024 ) || ' MB' "Database Size"
, round(free.p / 1024 / 1024) || ' MB' "Free space"
from (select bytes from v$datafile
union all
select bytes from v$tempfile
union all
select bytes from v$log) used
, (select sum(bytes) as p from dba_free_space) free
group by free.p
/

[edit]How do I find the used space within the database size?

Select from the DBA_SEGMENTS or DBA_EXTENTS views to find the used space of a database. Example:

SELECT SUM(bytes)/1024/1024 "Meg" FROM dba_segments;

[edit]Where can one find the high water mark for a table?

There is no single system table which contains the high water mark (HWM) for a table. A table's HWM can be calculated using the results from the following SQL

statements:

SELECT BLOCKS
FROM DBA_SEGMENTS
WHERE OWNER=UPPER(owner) AND SEGMENT_NAME = UPPER(table);

ANALYZE TABLE owner.table ESTIMATE STATISTICS;

SELECT EMPTY_BLOCKS
FROM DBA_TABLES
WHERE OWNER=UPPER(owner) AND TABLE_NAME = UPPER(table);

Thus, the tables' HWM = (query result 1) - (query result 2) - 1

NOTE: You can also use the DBMS_SPACE package and calculate the HWM = TOTAL_BLOCKS - UNUSED_BLOCKS - 1.

[edit]How do I find used/free space in a TEMPORARY tablespace?

Unlike normal tablespaces, true temporary tablespace information is not listed in DBA_FREE_SPACE. Instead use the V$TEMP_SPACE_HEADER view:

SELECT tablespace_name, SUM(bytes_used), SUM(bytes_free)


FROM V$temp_space_header
GROUP BY tablespace_name;
To report true free space within the used portion of the TEMPFILE:

SELECT A.tablespace_name tablespace, D.mb_total,


SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024
mb_free
FROM v$sort_segment A,
(
SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024
mb_total
FROM v$tablespace B, v$tempfile C
WHERE B.ts#= C.ts#
GROUP BY B.name, C.block_size
) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;

[edit]How can one see who is using a temporary segment?

For every user using temporary space, there is an entry in SYS.V$_LOCK with type 'TS'.

All temporary segments are named 'ffff.bbbb' where 'ffff' is the file it is in and 'bbbb' is first block of the segment.

If your temporary tablespace is set to TEMPORARY, all sorts are done in one large temporary segment. For usage stats, see SYS.V_$SORT_SEGMENT

From Oracle 8, one can just query SYS.v$sort_usage. Look at these examples:

select s.username, u."USER", u.tablespace, u.contents, u.extents,


u.blocks
from sys.v_$session s, sys.v_$sort_usage u
where s.saddr = u.session_addr
/

select s.osuser, s.process, s.username, s.serial#,


sum(u.blocks)*vp.value/1024 sort_size
from sys.v_$session s, sys.v_$sort_usage u, sys.v_$parameter vp
where s.saddr = u.session_addr
and vp.name = 'db_block_size'
and s.osuser like '&1'
group by s.osuser, s.process, s.username, s.serial#, vp.value
/

[edit]Who is using which UNDO or TEMP segment?

Execute the following query to determine who is using a particular UNDO or Rollback Segment:
SQL> SELECT TO_CHAR(s.sid)||','||TO_CHAR(s.serial#) sid_serial,
2 NVL(s.username, 'None') orauser,
3 s.program,
4 r.name undoseg,
5 t.used_ublk * TO_NUMBER(x.value)/1024||'K' "Undo"
6 FROM sys.v_$rollname r,
7 sys.v_$session s,
8 sys.v_$transaction t,
9 sys.v_$parameter x
10 WHERE s.taddr = t.addr
11 AND r.usn = t.xidusn(+)
12 AND x.name = 'db_block_size'

SID_SERIAL ORAUSER PROGRAM UNDOSEG Undo


---------- ---------- ------------------------------ ---------------
-------
260,7 SCOTT sqlplus@localhost.localdomain _SYSSMU4$ 8K
(TNS V1-V3)

Execute the following query to determine who is using a TEMP Segment:

SQL> SELECT b.tablespace,


2 ROUND(((b.blocks*p.value)/1024/1024),2)||'M' "SIZE",
3 a.sid||','||a.serial# SID_SERIAL,
4 a.username,
5 a.program
6 FROM sys.v_$session a,
7 sys.v_$sort_usage b,
8 sys.v_$parameter p
9 WHERE p.name = 'db_block_size'
10 AND a.saddr = b.session_addr
11 ORDER BY b.tablespace, b.blocks;

TABLESPACE SIZE SID_SERIAL USERNAME PROGRAM


---------- ------- ---------- -------- ------------------------------
TEMP 24M 260,7 SCOTT sqlplus@localhost.localdomain
(TNS V1-V3)

[edit]How does one get the view definition of fixed views/tables?

Query v$fixed_view_definition. Example:

SELECT * FROM v$fixed_view_definition WHERE view_name='V$SESSION';

[edit]How full is the current redo log file?


Here is a query that can tell you how full the current redo log file is. Handy for when you need to predict when the next log file will be archived out.

SQL> SELECT le.leseq "Current log sequence No",


2 100*cp.cpodr_bno/le.lesiz "Percent Full",
3 cp.cpodr_bno "Current Block No",
4 le.lesiz "Size of Log in Blocks"
5 FROM x$kcccp cp, x$kccle le
6 WHERE le.leseq =CP.cpodr_seq
7 AND bitand(le.leflg,24) = 8
8 /
Current log sequence No Percent Full Current Block No Size of Log in
Blocks
----------------------- ------------ ----------------
---------------------
416 48.6669922 49835
102400

[edit]Tired of typing sqlplus '/as sysdba' every time you want to do something?

If you are tired of typing sqlplus "/as sysdba" every time you want to perform some DBA task, implement the following shortcut:

On Unix/Linux systems:

Add the following alias to your .profile or .bash_profile file:

alias sss='sqlplus "/as sysdba"'

On Windows systems:

Create a batch file, sss.bat, add the command to it, and place it somewhere in your PATH. Whenever you now want to start sqlplus as sysdba, just type "sss".

Much less typing for ya lazy DBA's.

Note: From Oracle 10g you don't need to put the "/AS SYSDBA" in quotes anymore.

[edit]What patches are installed within an Oracle Home?

DBA's often do not document the patches they install. This may lead to situations where a feature works on machine X, but not on machine Y. This FAQ will show

how you can list and compare the patches installed within your Oracle Homes.

All patches that are installed with Oracle's OPatch Utility (Oracle's Interim Patch Installer) can be listed by invoking the opatch command with

the lsinventory option. Here is an example:

$ cd $ORACLE_HOME/OPatch

$ opatch lsinventory
Invoking OPatch 10.2.0.1.0

Oracle interim Patch Installer version 10.2.0.1.0


Copyright (c) 2005, Oracle Corporation. All rights reserved..
...
Installed Top-level Products (1):

Oracle Database 10g 10.2.0.1.0


There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.

OPatch succeeded.

NOTE: If OPatch is not installed into your Oracle Home ($ORACLE_HOME/OPatch), you may need to download it from Metalink and install it yourself.

[edit]How does one give developers access to trace files (required as input to tkprof)?

The alter session set sql_trace=true command generates trace files in USER_DUMP_DEST that can be used by developers as input to tkprof. On Unix the default

file mask for these files are "rwx r-- ---".

There is an undocumented INIT.ORA parameter that will allow everyone to read (rwx r-- r--) these trace files:

_trace_files_public = true

Include this in your INIT.ORA file and bounce your database for it to take effect.

FAQ contributed by Erlie Flynn

Category: Frequently Asked Questions

• page

• discussion

• edit

• history

• Log in
site navigation

 Wiki Home

 Forum Home

 Blogger Home

site highlights
 Blog Aggregator

 FAQ's

 Mailing Lists

 Usenet News

 RSS Feeds

wiki navigation

 Categories

 Recent changes

 Random page

 Help

search
Top of Form

Go Search

Bottom of Form
toolbox

 What links here

 Related changes

 Upload file

 Special pages

 Printable version

 Permanent link

 This page was last modified on 14 June 2010, at 15:07.

.:: Wiki Home :: Blogger Home :: Forum Home :: Contact :: Privacy ::.

vv

Das könnte Ihnen auch gefallen