Anda di halaman 1dari 83

UNIX

UNIX Flavors:
Linux
CentOS
SUSE Linux
Redhat Linux
Oracle Enterprise Linux (OEL)
HP-UNIX
Sun Solaris
IBM AIX
Partitions:
/

- root partition

/boot

- Boot files

100MB

/tmp

- tempfile(log files)

600MB 4GB

Swap

6GB 10GB

- file system

2 X RAM

SIZE
/opt

- for Oracle binary

/software

- Oracle image

/data1

- Oracle data

40GB

/backup

- Oracle data backups

100GB

Server 1
/data
/software
/backup

Server 2
/data
/software
/backup

Switch

SAN Storage
/data
/software
/backup

Login as root user:


# root user
$ Other than root user
1

10GB
6GB

Server n
/data
/software
/backup

# date
Fri Mar 25 09:24:30 MST 2010
# whoami
root
# who
chope

pts/0

Apr 23 10:43

(shell.computerhope.com)

mrhope

pts/1

Apr 23 18:19

(shell.computerhope.com)

# who -b
# uptime
14:49:07 up 192 days,

4608:15hrs,

105 users, load average: 0.16

# pwd
/home/oracle
# ls
abc.txt
# ls

xyz

mail.doc

-l

drw_r_ _ r_ _

oracle

oinstall

512

Nov 2 19:51

oracle

oinstall

4096

Oct 18 23:09

oracle

oinstall

512

Nov 2 19:51

abc.txt
_rw_ r_ _r_ _
xyz
drw_r_ _ r_ _
mail.doc
rwx rwx rwx

- full permission

r - 4
w - 2
x-1
# chmod

765

abc.txt

# chmod

# chmod

755 xyz

765

mail.doc

# groupadd mca
# useradd

stanly

-g

mca

# chown

stanly:mca

# chown

stanly:mca abc.txt

# chown -R

xyz

stanly:mca mail.doc

# ls -l
2

drwxr-xr-x

oracle

dba

96

May 11 2010

-rw-r--r--

oracle

dba

10177

Jan 28 2009

-rw-r--r--

oracle

dba

17788

Jan 5 2009

dba

17790

Nov 12 2008

11m_logs
4682861.txt

5857345.txt
-rw-r--r-# ls

oracle

oracle

6844739.txt

-la

-rw-------

dba

50

Oct 4 16:16

831

Apr 20 2006

.cshrc
11m_logs

.Xauthority
-r--r--r--

drwxr-xr-x
-rw-r--r--

oracle
2

dba

oracle

dba

96

May 11 2010

oracle

dba

10177

Jan 28 2009

4682861.txt
# ls

-lt

drwxr-xr-x

oracle

dba

2048000

Dec 8 06:09

undo_stats
-rw-r--r--

oracle

dba

31006

Dec 8 06:06

dba

680778

Dec 4 2007

62225

Apr 18 2007

lpmon_flag.log
-rw-r--r--

oracle

A034_standards
-rw-r--r--

oracle

dba

orahot_parm_01
# ls -ltr
-rw-r--r--

oracle

dba

62225

Apr 18 2007

dba

680778

Dec 4 2007

dba

31844

Dec 8 06:16

dba

2048000

Dec 8 06:19

orahot_parm_01
-rw-r--r--

oracle

A034_standards
-rw-r--r--

oracle

lpmon_flag_.log
drwxr-xr-x
# man

oracle

ls

# pwd
/home/oracle
# cat

> jeni.txt
3

undo_stats

john:stanly:britto
antony:jeni:jasmine
samson:prince:john
ctrl+d
# cat

jeni.txt
john:stanly:britto
antony:jeni:jasmine
samson:prince:john

# more jeni.txt
john:stanly:britto
antony:jeni:jasmine
samson:prince:john
# cat >> jeni.txt
arul:jeevan:vince
ctrl + d
# more jeni.txt
john:stanly:britto
antony:jeni:jasmine
samson:prince:john
arul:jeevan:vince
# vi jeni.txt
john:stanly:britto
antony:jeni:jasmine
samson:prince:john
arul:jeevan:vince
~
~
# more

jeni.txt | grep john

john:stanly:britto
samson:prince:john
# more jeni.txt | grep e john -e jeni
john:stanly:britto
antony:jeni:jasmine
samson:prince:john
4

# more jeni.txt | grep v john


antony:jeni:jasmine
arul:jeevan:vince
# more jeni.txt
john:stanly:britto
antony:jeni:jasmine
samson:prince:john
arul:jeevan:vince
# wc -l jeni.txt

# wc w jeni.txt

# wc

-c jeni.txt
4
# more

jeni.txt | wc -l

4
# head

-2 jeni.txt

# more jeni.txt | head -2

john:stanly:britto
antony:jeni:jasmine
# tail

-2 jeni.txt

#more jeni.txt | tail -2

samson:prince:john
arul:jeevan:vince
# head

-3

jeni.txt | tail -2

# more jeni.txt | head -3 | tail -2

antony:jeni:jasmine
samson:prince:john
# more jeni.txt | cut -d : -f2

# cut -d : -f2 jeni.txt

stanly
jeni
prince
jeevan
# more jeni.txt | awk

-F: { print $2 }

stanly
jeni
prince
jeevan
# more jeni.txt | awk -F: {print Name :
Name : stanly
5

$2}

Name : jeni
Name : prince
Name : jeevan
# ls -l
drw_r_ _ r_ _

oracle

oinstall

512

Nov 2 19:51

oracle

oinstall

4096

Oct 18 23:09

oracle

oinstall

512

Nov 2 19:51

abc.txt
_rw_ r_ _r_ _
xyz
drw_r_ _ r_ _
mail.doc
# ls -l | awk { print $9 }
abc.txt
xyz
mail.doc
# ls l | grep Nov | awk

{ print $9 }

abc.txt
mail.doc
# rm -fr

abc.txt

# rm

-fr

/home/oracle/ *

# rm

-fr

# gzip

*.arc

abc.txt

# gzip

/home/oracle/ *

# gzip

*. arc

#gunzip *. gz
#zip

oracle.zip

/home/oracle/*

#unzip oracle.zip
# mv

abc.txt

# mv

xyz.txt

/home/oracle/ *

# mv

r /home/oracle/ *

# cd

/opt/arch

ls

/backup/
/backup/

*. arc | wc -l

10000
# rm -fr

*.arc

Too many arguments


6

rm -fr arch1.arc
# ls

arch2.arc

arch3.arc

arch3.arc arch4.arc ..

-l *. arc | awk { print $9 }


arch1.arc
arch2.arc
arch3.arc

# ls

# ls

-l *. arc | awk { print rm


rm

-fr arch1.arc

rm

-fr arch2.arc

rm

-fr arch3.arc

-l *. arc

-fr

awk { print rm

+ rm

-fr arch1.arc

+ rm

-fr arch2.arc

+ rm

-fr arch3.arc

# ls

-l *. arc

awk { print gzip

# ls

-l *. arc

awk { print mv

# ls

-l *. arc

$9 }

-fr

$9 }

$9 }
$9

sh

sh

-x

-x

/backup/arch/ }

grep Aug |

awk { print $9 }

grep Aug |

awk { print rm

sh

arch1.arc
arch2.arc
arch3.arc
# ls

-l *. arc
sh

$9 }

-fr arch1.arc

+ rm

-fr arch2.arc

+ rm

-fr arch3.arc

# ls

-l *. arc | grep Aug |

# ls

-l | grep Aug | awk { print mv

awk { print gzip


$9

$9 }

/etc/oratab
: /dboracle/orabase/product/10.1.0

:Y

TESTDB01

: /dboracle/orabase/product/10.1.0

:N

TESTDB02

: /dboracle/orabase/product/10.2.0

:N

# more

/var/opt/oracle/oratab
/etc/oratab | awk

-F:

'{print $1}'

ORBIT01
TESTDB01
7

sh

-x

/backup/arch/ } | sh

ORBIT01

# more

-x

+ rm

# more

-fr

-x

-x

TESTDB02
# more

/etc/oratab | cut

-d':'

-f1

ORBIT01
TESTDB01
TESTDB02
# ps

- ef

# ps

- ef | grep

pmon

oracle

1334

0 Nov 29 ?

0:43

ora_pmon_TESTDB02
oracle

6639

1 05:10:21

0:00

oracle

17841

0 Dec 7 ?

1:03

grep pmon

ora_pmon_ORBIT01
# ps

- ef | grep

-v

oracle

grep | grep

1334

pmon
0 Nov 29 ?

0:43

ora_pmon_TESTDB02
oracle

17841

0 Dec 7 ?

1:03

ora_pmon_ORBIT01
# ps

-ef | grep

-v grep | grep pmon | awk

-F_

{ print

-v grep | grep pmon | cut

-d _

$3 }

TESTDB02
ORABIT01
# ps

-ef | grep

-f3

TESTDB02
ORABIT01
# find /opt

-name

*. arc

-print

# find /opt

-name

*. arc

- exec

# find /opt

-name

*. trc

- atime

+7

- exec

gzip{ }

# find /opt

-name

*. arc

- atime

+7

- exec

rm{ }

# find /

-name

*.arc

- atime

gzip{ }

+7

- exec

gzip{ }

\;
+

# vi /home/oracle/hosue_keep.sh
find /

-name

*. arc

- atime

+7

- exec

gzip{ }

find /

-name

*. trc

- atime

+7

- exec

gzip{ }

find /

-name

*. arc.gz

- atime

+15

- exec

rm{ }

find /

-name

*. trc.gz

- atime

+15

- exec

rm{ }

# sh

/home/oracle/house_keep.sh

# which sh
/usr/bin/sh
Crontab Job schedule

Command
Weekdays

( 0 - 6 or 1 - 7 )

Months

( 1 12 )

Month date ( 1 31 )

30
}

Hours

( 0 23 )

Minutes

( 0 59 )

20

find /

-name

*.arc

- atime

+7

- exec

21

find /

-name

*.trc

- atime

+7

- exec

/usr/bin/sh

30

gzip{ }
30

20

/home/oracle/house_keep.sh

# crontab

-e

30

20

find /

-name

*.arc

- atime

+7

- exec

21

find /

-name

*.trc

- atime

+7

- exec

/usr/bin/sh

gzip{ }
30

20

# crontab
30
30

/home/oracle/house_keep.sh

-l

20

find /

-name

*.arc

- atime

+7

- exec

21

find /

-name

*.trc

- atime

+7

- exec

/usr/bin/sh

gzip{ }
30

gzip{

30

gzip{

20

/home/oracle/house_keep.sh
9

gzip{

# crontab

-r

# crontab

-l

No crontab job schedule


# cp

abc.txt

# cp

xyx.txt

/home/oracle/ *

# cp

-r

/home/oracle/ *

# mkdir -p
# cd

/backup/
/backup/

/opt/oracle/product/10.2.0/db_1

/software

# mkdir
# free

Disk1

Disk2

Disk3

Patch

-m

Mem

Total

Used

Free

4096

2048

2048

-/+ buffers/cache:
Swap

6144

256

3840

6144

# top
CPU

LOAD

0.63

21.6%

8.3%

70.0

0.58

38.3%

5.4%

56.3%

avg 0.61
Memory :
CPU

USER

SYS

30.0%

4616528K

IDLE

6.7%

63.3%

2383524K used

PID

USERNAME

11797840K free
TIME

%CPU

COMMAND
1

12584

oracle

0:21

30.79

oracleORBIT01
1

20500

oracle

4:10

11.01

oracleORBIT01
1

8921

oracle

0:52

2.42

oracleORBIT01
0

10952

oracle

51:35

0.61

asm_dia0_+ASM1
0

17845

oracle

8:57

ora_lmon_ORBIT01
10

0.53

# kill -9
# df

12584

-h

Filesystem

Size

Used

Avail

Use%

Mounted on
/dev/vzfs01

10G

5.5G

4.6G

55%

/
/dev/vzfs02

100M

49M

/dev/vzfs03

2G

1.2G

/dev/vzfs04

20G

51M

49%
800M

5.5G

/boot

69%

14.6G

/tmp
25%

/opt
/dev/vzfs05

200G

192G

8G

92%

/backup
# df

-m

# df

-k

# df
# cd

/backup

# ls l

# du

drwxr-xr-x

2 oracle

dba

4096

May 11 2010

test

drwxr-xr-x

1 oracle

dba

4096

Jan 28

prod

-h
25

# du

-m

# du

-k

# du

test

2009

test
test
test
test

FTP File Transfer protocols:


Windows

Linux

192.168.1.100

192.168.1.101
User: oracle
Pwd: oracle

Windows:
C:\oracle\ora92\arch1.arc

=============

C:\> cd oracle\ora92
11

/opt/oracle/backup.txt

C:\oracle\ora92 > ftp

192.168.1.101

Username :oracle
Password :oracle
ftp> prompt
ftp > bin
ftp > mput

arch1.arc

/opt/oracle/

ftp > mget

/opt/oracle/backup.txt

C:\oracle\ora92

ftp > bye


C:\oracle\ora92 >

Linux1

Linux2

192.168.1.100
User : stanly
Pwd: stanly

192.168.1.101
User: oracle
Pwd: oracle

/opt/oracle/arch1.arc

/backup/arch/arch2.arc

=================

Linux1
# scp

-r

/opt/oracle/arch1.arc

oracle@192.168.1.101:/backup/arch

Password : oracle
# scp - r oracle@192.168.1.101:/backup/arch/arch2.arc

/opt/oracle/

Password : oracle
Oracle Database 10g Installation on Red Hat Enterprise Linux 5
Login As root user
Set Kernel Parameters
# vi /etc/sysctl.conf
kernel.shmall

2097152

kernel.shmmax =

2147483648

kernel.shmmni =

4096

kernel.sem

250

fs.file-max

65536

32000

100

net.ipv4.ip_local_port_range

1024

net.core.rmem_default

262144

net.core.rmem_max
net.core.wmem_default

262144
=

262144

12

128

65000

net.core.wmem_max

262144

# sysctl p

Set Security Limits


# vi /etc/security/limits.conf
oracle

soft

nproc

16384

oracle

hard

nproc

16384

oracle

soft

nofile

65536

oracle

hard

nofile

65536

Set Remote Authentication


# vi /etc/pam.d/login
session

required

pam_limits.so

Disable SELINUX
# vi /etc/selinux/config
SELINUX=disabled
Check Existing Packages
# rpm -qa setarch-2*
# rpm -qa make-3*
# rpm -qa glibc-2*
# rpm -qa libaio-0*
# rpm -qa compat-libstdc++-33-3*
# rpm -qa compat-gcc-34-3*
# rpm -qa compat-gcc-34-c++-3*
# rpm -qa gcc-4*
# rpm -qa libXp-1*
# rpm -qa openmotif-2*
# rpm -qa compat-db-4*
# rpm -qa cpp*
# rpm -qa binutils*
Install Packages
13

From RedHat AS5 Disk 1


# mount /dev/cdrom

/mnt

# cd /mnt/Enterprise/Server
# rpm -Uvh setarch-2*
# rpm -Uvh make-3*
# rpm -Uvh glibc-2*
# rpm -Uvh libaio-0*
# cd /
# eject
From RedHat AS5 Disk 2
# mount /dev/cdrom /mnt
# cd /mnt/Enterprise/Server
# rpm -Uvh compat-libstdc++-33-3*
# rpm -Uvh compat-gcc-34-3*
# rpm -Uvh compat-gcc-34-c++-3*
# rpm -Uvh gcc-4*
# rpm -Uvh libXp-1*
# cd /
# eject
From RedHat AS5 Disk 3
# mount

/dev/cdrom

/mnt

# cd /mnt/Enterprise/Server
# rpm -Uvh openmotif-2*
# rpm -Uvh compat-db-4*
# cd /
# eject
# groupadd oinstall
# useradd oracle -g oinstall
# passwd oracle
# mkdir

-p

/opt/oracle/product/10.2.0/db_1

# chown

-R

oracle:oinstall

/opt

# vi /etc/redhat-release
redhat-4
# mkdir

/software/Disk1
14

Insert 10g Software CD to Drive:


# mount /dev/cdrom

/mnt

# cd /mnt
# cp -r
# chown

-R

/software/Disk1

oracle:oinstall

/software

Such user to Oracle:


# su - oracle
$ pwd
/home/oracle
$ vi .bash_profile
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=Jeni1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:
$ORACLE_HOME/rdbms/jlib
$ exit
# init 6
Login As "oracle" user
$ cd /software/Disk1/database/
$ ./runInstallar

15

Screen 1 : Select Installation Method

Screen 2 : Specify Inventory Directory and Credentials

Screen 3 : Select Installation Type

Screen 4 : Specify Home Details

Screen 5 : Product-Specific Prerequisite Checks

Screen 6 : Select Configuration Option

Screen 7 : Select Database Configuration

Screen 8 : Specify Database Configuration Options

Screen 9 : Select Database Management Option

16

Screen 10 : Specify Database Storage Option

Screen 11 : Specify Backup and Recovery Options

Screen 12 : Specify Database Schema Passwords

Screen 13 : Summary

Screen 14 : Install

Screen 15 : Configuration Assistants

17

Screen 16 : Database Configuration Assistant

Screen 17 : Database Configuration Assistant Password Management

Screen 18 : Execute Configuration Scripts

18

Screen 19: End Of Installation

19

Oracle 11g software installation on RHEL 5


Set Kernel Parameters
# vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
# sysctl -p
Set User Limits
# vi /etc/security/limits.conf
oracle

soft

oracle

hard

oracle

soft

oracle

hard

nproc
nproc

2047
16384

nofile 1024
nofile 65536

# vi /etc/pam.d/login
session

required

pam_limits.so

# vi /etc/selinux/config
SELINUX=disabled
Install OS Packages
# rpm -Uvh binutils-2.*
# rpm -Uvh compat-libstdc++-33*
# rpm -Uvh compat-libstdc++-33*.i386.rpm
# rpm -Uvh elfutils-libelf*

20

# rpm -Uvh gcc-4.*


# rpm -Uvh gcc-c++-4.*
# rpm -Uvh glibc-2.*
# rpm -Uvh glibc-common-2.*
# rpm -Uvh glibc-devel-2.*
# rpm -Uvh glibc-headers-2.*
# rpm -Uvh ksh*
# rpm -Uvh libaio-0.*
# rpm -Uvh libaio-devel-0.*
# rpm -Uvh libgomp-4.*
# rpm -Uvh libgcc-4.*
# rpm -Uvh libstdc++-4.*
# rpm -Uvh libstdc++-devel-4.*
# rpm -Uvh make-3.*
# rpm -Uvh sysstat-7.*
# rpm -Uvh unixODBC-2.*
# rpm -Uvh unixODBC-devel-2.*
# groupadd oinstall
# mkdir -p /u01/app/oracle/product/11.2.0/db_1
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01
# su

oracle

$ pwd
/home/oracle
$ vi .bash_profile
export ORACLE_UNQNAME=DB11G
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=DB11G;
export PATH=/usr/sbin:$PATH:$HOME/bin
21

export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH= $ORACLE_HOME/JRE: $ORACLE_HOME/jlib
:ORACLE_HOME/rdbms/jlib
$ exit
# mkdir /software/11gDatabase
Insert Oracle 11g Software Disk1
# mount /dev/cdrom

/mnt

# cp -r * /software/11gDatabase
# cd /
# eject
Insert Oracle 11g Software Disk2
# mount /dev/cdrom

/mnt

# cp -r * /software/11gDatabase
# cd /
# eject
# cd /software/11gDatabase
# unzip linux.x86_11gR2_database_1of2.zip
# unzip linux.x86_11gR2_database_2of2.zip
# chown -R oracle:oinstall /software
# chmod -R 755 /software
# init 6
Login as Oracle user
$ cp /software/11gDatabase/Disk1
$ ./runInstaller

22

1. Configure Security Updates Click Next

2. Select installation option Choose Create and configure a database then


click Next

23

3. System Class Choose Server Class then click Next

4. Node Selection Choose Single instance database installation then click


Next

24

5. Select Install Type Choose Typical install then click Next

6. Typical install configuration Click Next

25

7. Create Inventory Click Next

8. Perform Prerequisite Checks Click Next

26

9. Summary Click Next

10. Install Product

27

11. Database configuration Assistant click Ok

12. Execute configuration Scripts Click Ok

28

13. Finish click Close

SQL (Structured Query Language)


DDL - Data Definition Language
o Create
o Alter
o Truncate
o Drop
o Rename
DML - Data Manipulation Language
o Insert
o Select
o Update
o Delete
TCL - Transaction Control Language
o Commit

29

o Rollback
o Savepoint

DCL - Data Control Language


o Grant
o Revoke
ENO
101
102

ENAME
John
Stanly

AGE
24
30

GEND
M
M

Table Name
Column Name

SALARY

ER

12345.30
12342.50
:

DOJ
12-May-10
16-Nov-09

EMP

ENO
ENAME
AGE
GENDER
SALARY
DOJ

Data Types:
Number
Char
Varchar2
Date
Number:
Eno number
Eno number (4)
Age number (2)
Salary number(7)
Salary number (7, 2)
1

Char & Varchar2:


Ename char
Gender char
Ename varchar2
30

Ename varchar2 (10)


J

O H N

Ename char (10)


J
Date:
DOJ date
DD-Mon-YY

13-May-10

DD-Mon-YYYY

13-May-2010

$ export ORACLE_SID=prod
$ sqlplus / as sysdba
Connected to an idle instance
SQL > startup
Or
$ sqlplus / as sysdba
Connected to
SQL > select name, open_mode

from

v$database;

SQL > select instance_name, status from


SQL > create table emp (

v$instance;

eno number(4),
ename varchar2(10),
age number(2),
gender char,
salary number(7,2),
doj date ) ;

SQL > desc emp;


Eno

number(4)
Ename

varchar2(10)

Age

number(2)

Gender

char

Salary

number(7,2)
31

Doj

date

SQL > insert into emp values (101,john, 30,M, 1234.34,13-Nov-09);


SQL > insert into emp values (&eno,&ename,&age,&gender,&salary,&doj);
Enter ENO

Enter ENAME

Enter AGE

Enter GENDER :
Enter SALARY

Enter DOJ

SQL > /
Enter ENO

Enter ENAME

Enter AGE

Enter GENDER :
Enter SALARY

Enter DOJ

SQL > insert into emp values (&eno,NULL,&age,NULL,&salary,NULL);


Enter ENO

Enter AGE

Enter SALARY

SQL > insert into emp (eno,age,salary) values (&eno,&age,&salary);


Enter ENO

Enter AGE

Enter SALARY

SQL > select * from emp;


ENO

ENAME

AGE

GENDER

101

john

30

SALARY

101

1234.40

DOJ

1234.40 13-May-09

SQL > select eno, salay from emp;


ENO

SALARY

SQL > select * from emp where eno=101;


Relational Operators:
>, < , >=, <=, <>, =
32

SQL > select * from emp where salay > 4000;


SQL > select * from emp where salary >= 4000;
Logical Operators
AND
OR
NOT
AND
C1
T
T
F
F

C2
T
F
T
F

OR
R
T
F
F
F

C1
T
T
F
F

C2
T
F
T
F

NOT
R
T
F
F
F

C1
T
F

R
F
T

ENO
SALARY
GRADE
101
2000
A
102
4000
A
103
6000
B
104
3000
B
105
9000
A
106
7000
B
SQL > select * from emp where salary >= 4000 and salary <= 8000;
SQL > select * from emp where grade = B or salary >= 8000;
SQL > select * from emp where not (salary >= 4000 and salary <= 8000);
Other operators:
between
in / not in
like / not like
is null / is not null
SQL > select * from emp where salary between 4000 and 8000;
SQL > select * from emp where eno in (101,104,106);
SQL > select * from emp where eno not in (101,104,106);
SQL > select * from emp where ename in (John,Britto);
SQL > select * from emp where ename not in (John,Britto);
SQL > select * from emp where ename like A%;
SQL > select * from emp where ename like %n;
SQL > select * from emp where ename like A%n;

33

SQL > select * from emp where ename not like A%;
SQL > select * from emp where ename not like %n;
SQL > select * from emp where ename is null;
SQL > select * from emp where ename is not null;
SQL > select count(*) from emp;
SQL > select sum(salary) from emp;
SQL > select sum(salary) from emp group by grade;
SQL > select sum(salary) from emp where grade = A group by grade;
SQL > select min(salary), max(salary) from emp;
SQL > select min(salary), max(salary) from emp group by grade;
SQL > select * from emp order by eno;
SQL > select * from emp order by eno desc;
Data Dictionary Tables or objects:
SQL > select * from dba_tables;
SQL > desc dba_tables;
SQL > select owner, table_name from dba_tables where owner=STANLY;
SQL > SELECT TABLE_NAME FROM DICTIONARY ORDER BY TABLE_NAME;
SQL > SELECT COLUMN_NAME, COMMENTS FROM ALL_COL_COMMENTS
WHERE OWNER = 'STANLY' AND TABLE_NAME =
'EMP';
SQL > SELECT TABLE_NAME FROM USER_TAB_COLUMNS
WHERE COLUMN_NAME = 'EMPLOYEE_ID';
SQL > conn stanly/jeni123
SQL > select * from user_tables;
SQL > desc user_tables;
Update:
ENO=101, ENAME=John

, SALARY=2000

SQL > update emp set ename = Stanly where eno = 101;
SQL > update emp set ename = John, salary = (salary+(salary * 0.10))
where eno = 101;
SQL > update emp set salary = (salary + (salary * 0.10));
Delete:
TABLE= Description + Records (rows)
SQL > delete from emp;
34

SQL > delete from emp where eno = 101;


SQL > delete from emp where grade = A;
Alter:
SQL > desc emp;
Eno

char (4)
Ename

varchar2 (10)

Age

number (2)

Gender

char

Salary

number (7, 2)

Doj

date

SQL > alter table emp modify eno number (4);


SQL > alter table emp modify ename varchar2 (15);
SQL > alter table emp add ( phone number (10));
SQL > desc emp;
Eno

Number (4)
Ename

Varchar2 (15)

Age

Number (2)

Gender

Char

Salary
Doj

Number (7, 2)
Date

Phone

Number (10)

SQL > ALTER TABLE emp RENAME COLUMN eno TO empno;


SQL > ALTER TABLE emp DROP COLUMN phone;
SQL > ALTER TABLE emp DROP (phone);
SQL > ALTER TABLE emp DROP (phone, gender );
SQL> ALTER TABLE emp READ ONLY;
SQL > desc emp;
SQL > truncate table emp;
SQL > drop table emp;
SQL > alter table emp rename to employee;
EXTRACTING OBJECT DDL Statement:
SQL> SET LONG 100000
SQL> SELECT dbms_metadata.get_ddl('TABLE','EMPLOYEE') from dual;
35

Commit , rollback and Savepoint:


Example 1:
SQL > create table emp (eno number);
SQL > insert into emp values (101);
SQL > insert into emp values (102);
SQL > commit;
SQL > select count(*) from emp;
SQL > insert into emp values (103);
SQL > insert into emp values (104);
SQL > select count(*) from emp;
SQL > rollback;
SQL > select count(*) from emp;
Example 2:
SQL > create table emp (eno number);
SQL > insert into emp values (101);
SQL > insert into emp values (102);
SQL > create table dept (dno number);
SQL > insert into dept values (103);
SQL > insert into dept values (104);
SQL > select count(*) from emp;
SQL > select count(*) from dept;
SQL > rollback;
SQL > select count(*) from emp;
SQL > select count(*) from dept;
Example 3:
SQL > create table emp (eno number);
SQL > insert into emp values (101);
SQL > insert into emp values (102);
SQL > create table dept (dno number);
SQL > insert into dept values (103);
SQL > insert into dept values (104);
SQL > savepoint a1;
SQL > select count(*) from emp;
36

SQL > select count(*) from dept;


SQL > delete from emp;
SQL > delete from dept;
SQL > rollback to a1;
SQL > select count(*) from emp;
SQL > select count(*) from dept;
SQL > commit;
User Management
Method 1:
SQL > create user stanly identified by stanly123;
SQL > grant create session, create table to stanly;
SQL > conn stanly/stanly123
SQL > show user;
SQL > create table emp(eno number);
Method 2:
SQL > conn sys/sys as sysdba
SQL > create user stanly identified by stanly123
default tablespace data
temporary tablespace temp;
SQL > conn stanly/stanly123
SQL > create table dept (dno number);
SQL > create table abc (eno number) tablespace testtbs;
Method 3:
SQL > conn sys/sys as sysdba
SQL > create user stanly identified by stanly123
default tablespace data
temporary tablespace temp
quota 10M on testtbs
quota unlimited on tools
password expire;
SQL > conn stanly/stanly123
New Password :
Retype Password :
SQL > show user;
37

SQL > create table abc (eno number) tablespace testtbs;


SQL > create table xyz (eno number) tablespace tools;
SQL > conn sys/sys as sysdba
SQL > alter user stanly default tablespace data;
SQL > alter user stanly temporary tablespace temp;
SQL > select * from dba_ts_quotas;
Username

tablespace_name

maxbytes

used_bytes

Stanly

testtbs

10 M

9M

Stanly

tools

-1

20M

SQL > alter user stanly quota 50M on testtbs;


SQL > alter user stanly quota 0M on tools;
SQL > select * from dba_users;
Username D_tablespace

Temp_

Account_status Password Profile

Stanly

EMP

open

DATA T

AJK123K3 default

SQL > alter user stanly account unlock;


SQL > alter user stanly account lock;
SQL > alter user stanly identified by oracle123;
SQL > alter user stanly identified by ora123 account unlock;
SQL > select password from dba_users where username = STANLY;
PASSWORD
AJK123K3
SQL > alter user john identified by values AJK123K3;
SQL > drop user stanly cascade;
Case Sensitive Passwords in Oracle Database 11g
SQL> SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON
NAME

TYPE

sec_case_sensitive_logon

VALUE
boolean

SQL > ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE;


SQL > CREATE USER test2 IDENTIFIED BY Test2;
SQL > GRANT CONNECT TO test2;
SQL> CONN test2/Test2

38

FALSE

Connected.
SQL> CONN test2/test2
ORA-01017: invalid username/password; logon denied
SQL> CONN / AS SYSDBA
SQL > ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
SQL> CONN test2/Test2
Connected.
SQL> CONN test2/test2
Connected.
SQL> SELECT username, password_versions FROM dba_users;
USERNAME

PASSWORD

TEST2
TEST3

10G 11G
10G 11G

Privileges
System privileges
Object privileges
Roles
System Privileges:
Create session
Create table
SQL > grant create session , create table to stanly;
SQL > grant create session, create table to stanly with admin option;
SQL > revoke create session, create table from stanly;
SQL > select * from dba_sys_privs;
SQL > conn stanly/stanly
SQL > select * from user_sys_privs;
Object privileges:
SQL >conn stanly/stanly
SQL > grant select on emp to john;

39

SQL > grant select on emp to john with grant option;


SQL > conn john/john
SQL > select * from emp;
SQL > select * from stanly.emp;
SQL > grant select on stanly.emp to jeni;
SQL > select * from user_tab_privs;
SQL > conn stanly/stanly
SQL > revoke select on emp from john;
SQL > select * from user_tab_privs;
SQL > conn sys/sys as sysdba
SQL > select * from dba_tab_privs;
Roles:
DBA
Connect
resource
Imp_full_database
Exp_full_database
Select_any_catalog
Reovery_catalog_owner

System
Privilege
s

Object
Privilege
s

Role
Name
User
SQL > create role urole;
SQL > grant create session, create table, select on stanly.emp to urole;
SQL > grant urole to john;
SQL > grant urole to public;
SQL > revoke select on stanly.emp from urole;

40

SQL > drop role urole cascade;


SQL > select * from dba_roles;
SQL > select * from dba_role_privs;
SQL > conn stanly/stanly
SQL > select * from user_role_privs;
Profiles:
FAILED_LOGIN_ATTEMPTS

{unlimited | Values}

PASSWORD_LOCK_TIME

{unlimited | Values}

PASSWORD_LIFE_TIME

{unlimited | Values}

PASSWORD_GRACE_TIME

{unlimited | Values}

PASSWORD_REUSE_TIME

{unlimited | Values}

PASSWORD_REUSE_MAX

{unlimited | Values}

CONNECT_TIME

{unlimited | Values}

IDLE_TIME

{unlimited | Values}

LOGICAL_READS_PER_SESSION

{unlimited | Values}

CPU_PER_SESSION

{unlimited | Values}

SESSIONS_PER_USER

{unlimited | Values}

SQL > create profile uprof limit


FAILED_LOGIN_ATTEMPTS

PASSWORD_LOCK_TIME

PASSWORD_LIFE_TIME

60

PASSWORD_GRACE_TIME

PASSWORD_REUSE_TIME

10

PASSWORD_REUSE_MAX

unlimited

CONNECT_TIME

180

IDLE_TIME

15

LOGICAL_READS_PER_SESSION

2000

CPU_PER_SESSION

1080000

SESSIONS_PER_USER

3;

SQL > SELECT name, lcount FROM user$ WHERE lcount <> 0;
SQL > alter user stanly profile uprof;
SQL > show parameter resource_limit;
SQL > alter system set resource_limit = true;
SQL > alter profile uprof limit PASSWORD_LIFE_TIME
41

90;

SQL > drop profile uprof cascade;


SQL > select * from dba_profiles;
Constraints:
Not null
Unique key
Primary key
Foreign key
Check
SQL > create table emp ( eno number not null, Ename varchar2 (10));
SQL > create table emp ( eno number constraint nn not null,
Ename varchar2 (10));
SQL > create table emp (eno number, ename varchar2 (10));
SQL > alter table emp modify eno not null;
SQL > ALTER TABLE emp RENAME CONSTRAINT SYS_C0015489 TO NN_ENO;
SQL > alter table emp modify constraint nn not null (eno);
SQL > alter table emp drop constraint nn;
SQL > alter table emp drop not null (eno);
SQL > alter table emp disable constraint nn;
SQL > alter table emp disable not null (eno);
Constraint states:
Enable validate
Enable novalidate
Disable validate
Disable novalidate
SQL > alter table emp diable novalidate constraint nn;
SQL > insert into emp values(NULL,John);
SQL > alter table emp enable novalidate constraint nn;
Foreign Key:
DEPT
DNO
DNAME
1
Admin
2
Sales
3
HR

ENO
101
102
103

42

EMP
ENAME
JOHN
STANLY
ANTONY

DNO
1
3
4

SQL > create table dept ( dno number constraint pk_dno_dept primary key,
Dname varchar2(10) constraint nn not null);
SQL > create table emp ( eno number constraint pk1_eno primary key,
Ename varchar2(10),
Dno number);
SQL > alter table emp add constraint fk_dno_emp foreign key (dno)
references dept (dno);
DEFERRABLE and DEFERRED Constraints:
SQL > ALTER TABLE emp DROP CONSTRAINT FK_DNO_EMP ;
SQL > ALTER TABLE emp ADD CONSTRAINT FK_DNO_EMP
FOREIGN KEY (dno) REFERENCES dept (dno) DEFERRABLE;
SQL > SET CONSTRAINT FK_DNO_EMP DEFERRED;
SQL > SET CONSTRAINT ALL DEFERRED;
SQL > SET CONSTRAINT FK_DNO_EMP IMMEDIATE;
SQL > SET CONSTRAINT ALL IMMEDIATE;
Check:
SQL > create table emp(

eno number primary key,

Ename varchar2(10) not null,


Age number(2) Constraint ck_age check (age>=18),
Salary number Constraint ck_salary check (salary >= 7500));
SQL > select * from dba_constraints;
SQL > select * from dba_cons_columns;
SQL > conn stanly/stanly;
SQL > select * from user_constraints;
SQL > SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, R_CONSTRAINT_NAME,
STATUS FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'EMP';
CONSTRAINT_NAME CONSTRAINT_TYPE
PK1_ENO

FK_DNO_EMP

SQL > SELECT SEARCH_CONDITION

R_CONSTRAINT_NAME

STATUS
ENABLED

PK_DNO_DEPT

ENABLED

FROM USER_CONSTRAINTS

WHERE CONSTRAINT_NAME = 'CK_AGE' AND CONSTRAINT_TYPE = 'C';


SEARCH_CONDITION
43

AGE>18
SQL > select * from user_cons_columns;
INDEXES
Btree index
Bitmap index
Function based index
Reverse key index
SQL > create index ind_eno on emp( eno);
SQL > create index ind_eno_phone on emp(eno,phone);
SQL > create bitmap index ind_gender on emp(gender);
SQL > create bitmap index ind_sal_dno on emp(salary,dno);
SQL > create index ind_ename on emp(UPPER(ename));
SQL > create index ind_comm on emp(salary * 0.10);
SQL > create index ind_eno_rev on emp(eno) reverse;
SQL > alter index ind_eno monitoring usage;
SQL > select * from v$object_usage;
SQL > alter index ind_eno nomonitoring usage;
SQL > select * from dba_indexes;
SQL > select * from dba_ind_columns;
SQL > conn stanly/stanly
SQL > select * from user_indexes;
SQL > select * from user_ind_columns;
Oracle Joins:
1. Inner Joins:
PORT Table
PORT_NA
PORT_ID
ME
1
Baltimore
Charlesto
2
n
3

Tampa

Miami

SHIPS Table
SHIP_I
D
SHIP_NAME
1 Codd Crystal
2 Codd Elegance
Codd
3 Champion
Codd
4 Victorious
5 Codd Grandeur
6 Codd Prince

44

HOME_PORT_ID
1
3

3
2
2

SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME FROM SHIPS INNER JOIN PORTS
ON HOME_PORT_ID = PORT_ID ORDER BY SHIP_ID;
SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME FROM SHIPS JOIN PORTS
ON HOME_PORT_ID = PORT_ID ORDER BY SHIP_ID;
SHIP_ID

SHIP_NAME

PORT_NAME

Codd Crystal

Baltimore

Codd Elegance

Tampa

Codd Victorious

Codd Grandeur

Codd Prince

Tampa
Charleston
Charleston

SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME FROM SHIPS INNER JOIN PORTS
ON HOME_PORT_ID = PORT_ID

WHERE PORT_NAME = 'Charleston'

ORDER BY SHIP_ID;
LEFT OUTER JOIN:
SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME

FROM SHIPS LEFT OUTER JOIN

PORTS ON HOME_PORT_ID = PORT_ID ORDER BY SHIP_ID;


SHIP_ID

SHIP_NAME

PORT_NAME

Codd Crystal

Baltimore

Codd Elegance

Tampa

Codd Champion

Codd Victorious

Codd Grandeur

Tampa
Charleston

Codd Prince

Charleston

SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME

FROM SHIPS LEFT JOIN PORTS

ON HOME_PORT_ID = PORT_ID ORDER BY SHIP_ID;


RIGHT OUTER JOIN
SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME FROM SHIPS RIGHT OUTER JOIN
PORTS ON HOME_PORT_ID = PORT_ID ORDER BY SHIP_ID;
SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME FROM SHIPS RIGHT JOIN PORTS
ON HOME_PORT_ID = PORT_ID ORDER BY SHIP_ID;

45

SHIP_ID

SHIP_NAME

PORT_NAME

Codd Crystal

Baltimore

Codd Elegance

Tampa

Codd Victorious

Codd Grandeur

Charleston

Codd Prince

Charleston

Tampa

Miami
FULL OUTER JOIN
SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME FROM SHIPS FULL OUTER JOIN
PORTS ON HOME_PORT_ID = PORT_ID ORDER BY SHIP_ID;
SHIP_ID

SHIP_NAME

PORT_NAME

Codd Crystal

Baltimore

Codd Elegance

Tampa

Codd Champion

Codd Victorious

Codd Grandeur

Codd Prince

Tampa
Charleston
Charleston
Miami

46

Oracle Database Architecture


Instance
USER

SGA

Database
Buffer
Cache

PGA

Password
File

SMON

Redo
Log
Buffer

DBWR

Parameter
File

Shared
Pool

Large
Pool

Streams
Pool

Java
Pool

LGWR

CKPT

PMON

Database
Data
Files

Control
Files

Redo
Log
Files

ARCH

SQL> show sga;


Total System Global Area

61771936 bytes

Fixed Size

73888 bytes

Variable Size

44249088 bytes

Database Buffers

16384000 bytes

Redo Buffers

1064960 bytes

SQL> show parameter sga_max_size;


NAME

TYPE

VALUE

sga_max_size

big integer

600M

SQL> select name,value issys_modifiable from v$parameter


name='sga_max_size';
NAME
sga_max_size

VALUE

ISSYS_MODIFIABLE

600M

FALSE

47

where

Archive
Log
Files

SQL> alter system set sga_max_size=956m scope=spfile;


SQL> show parameter sga_max_size;
NAME

TYPE

VALUE

sga_max_size

big integer

600M

SQL > shutdown immediate;


SQL> startup
ORACLE instance started.
Total System Global Area

1000189952 bytes

Fixed Size

1337492 bytes

Variable Size

624953196 bytes

Database Buffers

369098752 bytes

Redo Buffers

4800512 bytes

Database mounted.
Database opened.
SQL> show parameter sga_max_size
NAME

TYPE

VALUE

sga_max_size

big integer

956M

Shared Pool
Library
Cache
Data
Dictionary
Cache
SQL > show parameter shared_pool_size;
SQL > alter system set shared_pool_size=-----------M;
Database Buffer Cache

DEFAULT
Buffer

KEEP
Buffer

RECYCLE
Buffer

48

SQL > show parameter db_cache_size;


SQL > show parameter db_keep_cache_size;
SQL> show parameter db_recycle_cache_size;
SQL > alter system set db_cache_size =-----------M;
SQL > alter system set db_keep_cache_size =------------M;
SQL> alter system set db_keep_cache_size = -------------M;
Database buffer cache stages:
Pinned Buffer
Dirty Buffer

Pinned Buffer

Free Buffer

LRU
Starting
Point

LRU
Ending
Point

Redo Log Buffer:

Database
Buffer
Cache

Redo
Log
Buffer

Redo Data

Dirty
Buffer

SQL > show parameter log_buffer ;


SQL > alter system set log_buffer = 10485760 scope=spfile;
Large Pool :

Large Pool
If large pool is configured then

UGA

UGA stored in
Else
UGA stored in

Shared Pool
Library
Cache
Data
Dictionary
Cache
49
UGA

10MB

SQL > show parameter large_pool_size;


SQL > alter system set large_pool_size = -------------M;
Java Pool:
SQL > show parameter java_pool_size;
SQL > alter system set java_pool_size = ----------M scope=spfile;
Streams Pool:
Mumba
i
Master
Slave
DB

Delhi
Master
Slave
DB

Maste
r
DB

Chenna
Calcutt
i
a
Master
Master
Slave
Slave
DBshow parameter streams_pool_size;DB
SQL >
SQL > show parameter streams_pool_size = -----------M scope=spfile;
Background Processes:
SMON
DBWR
LGWR
CKPT
PMON
SMON: System Monitor
1. Recovery instance failure

50

Roll
Forwar
d
Use
Online
Redo
Log
files

SQL > create table emp (eno


number);
SQL > insert into emp values (101);
SQL
SQL
SQL
SQL

>
>
>
>

insert into emp values (102);


commit;
insert into emp values(103);
Roll
select count(*) from emp;
Backwar
d
SQL > delete from emp;
Use
SQL > select count(*) from emp;
Undo
Segmen
ts

2. Coalesce free space

(Tablespaces)

(Tablespaces)

3. De-allocate temporary segment or tablespace


DBWR: Database Writer:
Database
Buffer
Cache

DBWR

Data
Files
SQL> show parameter db_writer_processes;
NAME

TYPE

VALUE

db_writer_processes

integer

SQL> alter system set db_writer_processes=2 scope=spfile;


SQL> shutdown immediate;
SQL> Startup
51

SQL> show parameter db_writer_processes;


NAME

TYPE

VALUE

db_writer_processes

integer

LGWR: Log Writer


Redo
Log
buffer

LGWR
CKPT: Checkpoint
Database
Buffer
Cache

Redo log
files

Redo
Log
buffer

DBWR

Data
Files

LGWR

Control
Files

Redo log
files

PMON: Process Monitor


Database

Logical Structure

Physical
Structure

1. Tablespaces
2. Segments

1. Datafiles

3. Extents

2. Control files

4. Blocks

3. Archive log
files
4. Redo log files
5. Password file
52

6. Parameter files

CKPT

SQL > create

tablespace

datatbs Datafile /opt/oradata/data01.dbf size

10M;
SQL> create table emp (eno number,ename varchar2(10)) tablespace datatbs;
Blocks:
SQL> show parameter db_block_size
NAME
db_block_size

TYPE

VALUE

integer

8192

Block size 2k, 4k, 8k, 16k, 32k


Types of Block
o Standard block (db_block_size)
o Non standard block (db_nk_cache_size)
SQL> alter system set db_16k_cache_size=32m;
SQL> show parameter db_16k_cache_size;
NAME

TYPE

VALUE

db_16k_cache_size

big integer

32M

SQL> create tablespace tbs2 datafile '/u02/prod/tbs2.dbf' size 100m blocksize


16k;
SQL> select block_size,tablespace_name from dba_tablespaces;
BLOCK_SIZE

TABLESPACE_NAME

8192
16384

USERS
TBS2

Block Utilization parameters:


INITRANS
MAXTRANS
PCTUSED
PCTFREE
Block Header
PCTFREE

PCTUSED

53

SQL> create table test (no number) tablespace datatbs initrans 10 maxtrans 255
pctused 89
Rowid Format :
SQL> SELECT ROWID FROM employees WHERE employee_id = 100;
ROWID
AAAPecAAFAAAABSAAA

Block level problems


Row Chaining
Row Migration
High Water Mark (HWM)
Oracle Extents:
8K

8K

8K

8K

8K

8K

8K

8K

Default storage parameters


initial
next
minextents
maxextens
pctincrease
Two types of tablespace based on Extents
LMT tablespace
DMT tablespace
LMT Tablespace two methods:
1. Autoallocate

54

pctfree 10;

1 to 16
17 to 63
64 to 120
>120

Extents
Extents
Extents
Extents

64K
1MB
8MB
64M

SQL > CREATE TABLESPACE test DATAFILE '/opt/oradata/test1.dbf' SIZE 50M


2. Uniform size
SQL > CREATE TABLESPACE test1
DATAFILE '/opt/oradata/test2.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;
SQL> exec dbms_space_admin.Tablespace_Migrate_TO_Local(' ts1 ' );
DMT tablespace:
SQL> CREATE TABLESPACE dmttbs
DATAFILE '/opt/oradata/ts1_01.dbf' SIZE 50M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (INITIAL 50K NEXT 50K MINEXTENTS 2
MAXEXTENTS 50 PCTINCREASE 0);
SQL> exec dbms_space_admin.Tablespace_Migrate_FROM_Local('ts2');
DEFERRED SEGMENT CREATION:
SQL> create table f_regs (reg_id number, reg_name varchar2(200));
SQL> select count(*) from dba_segments where segment_name='F_REGS';
COUNT(*)
0
SQL> select count(*) from dba_extents where segment_name='F_REGS';
COUNT(*)
0

55

SQL> insert into f_regs values(1,'BRDSTN');


SQL>> select count(*) from user_segments where segment_name='F_REGS';
COUNT(*)
1
SQL> select count(*) from user_extents where segment_name='F_REGS';
COUNT(*)
1
SQL > create table f_regs(reg_id number,reg_name varchar2(2000))
segment creation immediate;
SQL > show parameter DEFERRED_SEGMENT_CREATION;
SQL > alter system set DEFERRED_SEGMENT_CREATION =False;
Extent Deallocation:
SQL > TRUNCATE TABLE table_name DROP STORAGE;
SQL> ALTER TABLE table_name DEALLOCATE UNUSED;
Oracle segments:
Data Segment
Index Segment
Rollback Segment
Temporary Segment

56

Tablespaces:
1. Bigfile tablespace
2. Small file tablespace
Bigfile tablespace:
Block size
2K
4k
8K
16K
32K

Max. Size
8TB
16TB
32TB
64TB
128TB

SQL > CREATE BIGFILE TABLESPACE bigtbs


DATAFILE '/u02/oracle/data/bigtbs01.dbf' SIZE 50G ;
SQL > ALTER TABLESPACE bigtbs RESIZE 80G;
SQL > ALTER TABLESPACE bigtbs AUTOEXTEND ON;
SQL > ALTER TABLESPACE bigtbs AUTOEXTEND ON MAXSIZE 200G;
SQL > ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;
SQL > SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';
SQL > ALTER DATABASE SET DEFAULT SMALLFILE TABLESPACE;
57

SQL > select tablespace_name, block_size, Extent_management, Bigfile from


dba_tablespaces;
Smallfile tablespace:
Block size
2K
4k
8K
16K
32K

Max. Size
8GB
16GB
32GB
64GB
128GB

SQL > CREATE TABLESPACE test1 DATAFILE '/opt/oradata/test2.dbf' SIZE 50M;


SQL > ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;
SQL > SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';
SQL > CREATE SMALLFILE TABLESPACE test1
DATAFILE '/opt/oradata/test2.dbf' SIZE 50M;

Tablespace Growth Checking:


SQL > SELECT TABLESPACE_NAME, SUM (BYTES)/1024/1024
FROM DBA_DATA_FILES

GROUP BY TABLESPACE_NAME;

SQL > SELECT TABLESPACE_NAME, SUM (BYTES)/1024/1024


FROM DBA_SEGMENTS

GROUP BY TABLESPACE_NAME;

SQL > SELECT TABLESPACE_NAME, SUM (BYTES)/1024/1024


FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;
DATA /opt/oradata/data01.dbf 100M
58

SQL > ALTER TABLESPACE DATA

ADD DATAFILE /opt/oradata/data02.dbf SIZE

100M;
SQL > ALTER DATABASE DATAFILE /opt/oradata/data01.dbf RESIZE 200M;
SQL > ALTER DATABASE DATAFILE /opt/oradata/data01.dbf AUTOEXTEND ON;
SQL > ALTER DATABASE DATAFILE /opt/oradata/data01.dbf AUTOEXTEND ON
MAXSIZE 2G;
Tablespace Status:
Read only
Read write

Offline

Read only
Read write

online

SQL > alter tablespace data offline;


SQL > alter tablespace data online;
SQL> alter tablespace data read only;
SQL> alter tablespace data read write;
SQL > alter database datafile /opt/oradata/data01.dbf offline drop;
SQL > alter database datafile /opt/oradata/data01.dbf online;
Rename tablespace:
SQL > ALTER TABLESPACE users RENAME TO usersts;
Rename or relocate Datafile:
SQL > select file_name from dba_data_files where tablespace_name=DATATBS ;
FILE_NAME
/opt/oradata/data01.dbf
SQL > alter tablespace datatbs offline;
SQL > ! cp /opt/oradata/data01.dbf /u01/oradata/data01.dbf
59

SQL > alter tablespace data rename datafile


/opt/oradata/data01.dbf to /u01/oradata/data01.dbf ;
SQL > alter tablespace datatbs online;
SQL > select file_name from dba_data_files where tablespace_name= DATATBS
;
FILE_NAME
/u01/oradata/data01.dbf
SQL > ! rm fr /opt/oradata/data01.dbf
Drop tablespace:

(DATA /u01/oradata/data01.dbf emp,dept,jobs)

SQL > drop tablespace data;


SQL > drop tablespace data including contents;
SQL > drop tablespace data including contents and datafiles;
Dropping Datafiles:
ALTER TABLESPACE example DROP DATAFILE '+DGROUP1/example_df3.f';
ALTER TABLESPACE lmtemp DROP TEMPFILE '/u02/oracle/data/lmtemp02.dbf';
Permanent Tablespace:
SQL > ALTER DATABASE DEFAULT TABLESPACE data;
SQL > select property_value from database_properties
where property_name=
DEFAULT_PERMANENT_TABLESPACE;

SYSAUX tablespace:
SQL > create tablespace sysaux

datafile /opt/oradata/sysaux01.dbf size 500M

extent management local


segment space management auto
60

online;
SQL> SELECT occupant_name, move_procedure, space_usage_kbytes FROM
v$sysaux_occupants;
OCCUPANT_NAME

MOVE_PROCEDURE

SPACE_USAGE_KBYTES
LOGMNR

SYS.DBMS_LOGMNR_D.SET_TABLESPACE

608000
SQL > exec sys.dbms_logmnr_d.set_tablespace(USERS);
SQL> SELECT occupant_name, move_procedure, space_usage_kbytes FROM
v$sysaux_occupants;
OCCUPANT_NAME

MOVE_PROCEDURE

SPACE_USAGE_KBYTES
LOGMNR

SYS.DBMS_LOGMNR_D.SET_TABLESPACE

SQL > select * from v$tablespace;


SQL > select * from dba_tablespaces;
SQL > select * from v$datafile;
SQL > select * from dba_data_files;
Tablespace Compression or Data Block Compression :
SQL> select segment_name, bytes, a.blocks, compression, compress_for
from dba_segments a, dba_tables b

where a.segment_name =

b.table_name
and a.segment_name='EMP';
SEGMENT_NAME

BYTES

BLOCKS

COMPRESS

COMPRESS_FOR
EMP

1476395008

180224

DISABLED

SQL> create tablespace USER_DATA_COMPRESSED default compress for OLTP


61

datafile

'/u01/oracle/oradata/DET01/user_data_compressed.dbf '

size 10M autoextend on;


SQL> create table emp_compressed tablespace USER_DATA_COMPRESSED as
Select * from emp;
SQL> select a.segment_name, a.bytes, a.blocks, b.compression, b.compress_for
from dba_segments a, dba_tables b

where a.segment_name =

b.table_name
and a.segment_name in ('EMP','EMP_COMPRESSED');
SEGMENT_NAME

BYTES

BLOCKS

COMPRESS

612368384

74752

ENABLED OLTP

COMPRESS_FOR
EMP_COMPRESSED
EMP

1476395008

180224

DISABLED

Table Compression Enhancements in Oracle Database 11g


SQL > CREATE TABLE test_tab_1 ( id

NUMBER(10)

description

NOT NULL,

VARCHAR2(50) NOT NULL,

created_date DATE

NOT NULL

) COMPRESS FOR ALL OPERATIONS;


SQL > CREATE TABLE test_tab_2 ( id

NUMBER(10)

description

NOT NULL,

VARCHAR2(50) NOT NULL,

created_date DATE

NOT NULL )

PARTITION BY RANGE (created_date) (


PARTITION test_tab_q1 VALUES LESS THAN (TO_DATE('01/01/2012',
'DD/MM/YYYY'))
COMPRESS,
PARTITION test_tab_q2 VALUES LESS THAN (TO_DATE('01/04/2013',
'DD/MM/YYYY'))
62

COMPRESS FOR DIRECT_LOAD OPERATIONS,


PARTITION test_tab_q3 VALUES LESS THAN (TO_DATE('01/07/2012',
'DD/MM/YYYY'))
COMPRESS FOR ALL OPERATIONS,
PARTITION test_tab_q4 VALUES LESS THAN (MAXVALUE) NOCOMPRESS
);
SQL > SELECT table_name, compression, compress_for FROM user_tables;
TABLE_NAME
TEST_TAB_1

COMPRESS

COMPRESS_FOR

ENABLED FOR

ALL OPERATIONS

TEST_TAB_2
SQL > SELECT table_name, partition_name, compression, compress_for FROM
user_tab_partitions;
TABLE_NAME

PARTITION_NAME

COMPRESS

COMPRESS_FOR
TEST_TAB_2

TEST_TAB_Q1

ENABLED

DIRECT LOAD ONLY

TEST_TAB_2

TEST_TAB_Q2

ENABLED

DIRECT LOAD

TEST_TAB_Q3

ENABLED

FOR ALL

TEST_TAB_Q4

DISABLED

ONLY
TEST_TAB_2
OPERATIONS
TEST_TAB_2

SQL > ALTER TABLE test_tab_1 NOCOMPRESS;


SQL > ALTER TABLE test_tab_2 MODIFY PARTITION
test_tab_q4 COMPRESS FOR ALL
OPERATIONS;
SQL > CREATE TABLESPACE test_ts
DATAFILE '/u01/app/oracle/oradata/DB11G/test_ts01.dbf' SIZE 10M
63

DEFAULT COMPRESS FOR ALL OPERATIONS;


SQL > SELECT def_tab_compression, compress_for FROM dba_tablespaces
WHERE tablespace_name = 'TEST_TS';
DEF_TAB_COMPRESSION

COMPRESS_FOR

ENABLED

FOR ALL OPERATIONS

SQL > ALTER TABLESPACE test_ts DEFAULT NOCOMPRESS;


SQL > SELECT def_tab_compression, compress_for FROM dba_tablespaces
WHERE tablespace_name = 'TEST_TS';
DEF_TAB_COMPRESSION

COMPRESS_FOR

DISABLED
Tablespace Encryption:
ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=/u01/app/oracle/admin/prod/wallet)))
SQL> ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY stanly;
SQL> ! ls /u01/app/oracle/admin/prod/wallet
ewallet.p12
SQL> ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY stanly;
ORA-28354: wallet already open
SQL> create tablespace encrypt_data
datafile /u03/oradata/leven202/encrypt_data01.dbf size 100m
ENCRYPTION USING AES256 DEFAULT STORAGE (ENCRYPT);
SQL> alter user scott quota unlimited on encrypt_data;
SQL> conn scott/tiger
SQL> create table TEST_ENCRYPTION (col_a VARCHAR2(20))
encrypt_data;
64

tablespace

SQL> insert into TEST_ENCRYPTION values (SECURE DATA!);


SQL> commit;
SQL> create tablespace noencrypt_data
datafile

/u03/oradata/leven202/noencrypt_data01.dbf size 20M;

SQL> alter user scott quota unlimited on noencrypt_data;


SQL> conn scott/tiger
SQL> create table TEST_NOENCRYPTION (col_a VARCHAR2(20)) tablespace
noencrypt_data ;
SQL> insert into TEST_NOENCRYPTION values(UNSECURE DATA);
SQL> commit;
SQL> conn / as sysdba
SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
SQL> /
When the file is opened using a HEX editor (like UltraEdit) only nonprintable characters are present. The 'This is a secret!' string is not visible
in the table or index data within the encrypted tablespace.

SQL> SELECT t.name, e.encryptionalg algorithm FROM v$tablespace t,


v$encrypted_tablespaces e WHERE t.ts# = e.ts#;
NAME
ENCRYPT_DATA

ALGORITHM
AES256

Temporary tablespace:
SQL > select * from dba_temp_files;
SQL > select * from v$tempfile;
SQL > create temporary tablespace temp1
size 100M;
65

tempfile /opt/oradata/temp_01.dbf

SQL > alter database default temporary tablespace temp1;


SQL > select property_value from database_properties
where property_name= DEFAULT_TEMP_TABLESPACE;
SQL > show parameter db_block_size;
SQL > select tablespace_name, (total_blocks*8)/1024, (used_blocks*8)/1024,
(free_blocks*8)/1024
from v$sort_segment;
SQL > select username,tablespace,blocks from v$sort_usage where
contents=TEMPORARY;
Temporary Tablespace Group:
SQL > create temporary tablespace temp2
tempfile /opt/oradata/temp02.dbf size 10m tablespace group tempgrp;
SQL > alter tablespace temp tablespace group tempgrp;
SQL > alter database default temporary tablespace tempgrp;
SQL > alter tablespace temp tablespace group

SQL > select * from dba_tablespace_groups;


Temporary Tablespace Enhancements in Oracle Database 11g
SQL> SELECT * FROM dba_temp_free_space;
TABLESPACE_NAME

TABLESPAC_SIZE

ALLOCAT_SPACE

FREE_SPACE
TEMP

56623104

56623104

55574528
SQL> ALTER TABLESPACE temp SHRINK SPACE KEEP 40M;
SQL> SELECT * FROM dba_temp_free_space;
TABLESPACE_NAME

TABLESPAC_SIZE

FREE_SPACE
66

ALLOCAT_SPACE

TEMP

42991616

1048576

41943040
SQL> ALTER TABLESPACE temp SHRINK
TEMPFILE '/u01/app/oracle/oradata/DB11G/temp01.dbf' KEEP 30M;
SQL> SELECT * FROM dba_temp_free_space;
TABLESPACE_NAME

TABLESPAC_SIZE

ALLOCAT_SPACE

FREE_SPACE
TEMP

31522816

65536

31457280
SQL> ALTER TABLESPACE temp SHRINK SPACE;
SQL> SELECT * FROM dba_temp_free_space;
TABLESPACE_NAME

TABLESPAC_SIZE

ALLOCAT_SPACE

FREE_SPACE
TEMP

1114112

65536

1048576
UNDO tablespace:
SQL > update emp set salary=6000 where eno=101;
SQL > select salary from emp where eno=101;
SALARY
6000
SQL > rollback;
SQL > select salary from emp where eno=101;
SALARY
4000
undo_retention = < no. of seconds >
undo_tablespace = < unto tablespace name >
67

undo_management = { auto | manual }


SQL > show parameter undo_retention;
SQL > show parameter undo_tablespace;
SQL > show parameter undo_management;
SQL > create undo tablespace undotbs2 Datafile /opt/oradata/undo02.dbf size
100M;
SQL > alter system set undo_tablespace=undotbs2 scope=spfile;
UNDO_RETENTION = UNDO_SIZE/(DB_BLOCK_SIZE*UNDO_BLOCK_PER_SEC)
SQL > select sum(bytes) "UNDO_SIZE" from dba_data_files where
tablespace_name=
(select tablespace_name from dba_tablespaces where
contents='UNDO')
group by tablespace_name;
SQL> select max(undoblks)/600 " UNDO_BLOCK_PER_SEC" from v$undostat;
SQL > show parameter db_block_size;
SQL > alter system set undo_retention = 900;
SQL > alter system set undo_management=AUTO scope=spfile;
SQL > shutdown immediate;
SQL > startup
SQL > select segment_name, status

from dba_undo_extents where

tablespace_name=UNDOTBS1;
SQL > drop tablespace undotbs1 including contents and datafiles;
Undo_size=(undo_retention*db_block_size*max_undo_blocks)
SQL > select max (UNDOBLKS)/600 from v$undostat;
SQL > alter tablespace undotbs2 retention guarantee;
SQL > alter tablespace undotbs2 retention noguarantee;
68

Oracle Managed Files:


DB_CREATE_FILE_DEST = '/u01/app/oracle/oradata'
DB_CREATE_ONLINE_LOG_DEST_1 = '/u02/oradata'
DB_CREATE_ONLINE_LOG_DEST_2 = '/u03/oradata'

OMF File Type

Naming Convention

Datafile

ora_%t_%u.dbf

Example

ora_data_Y2ZV8P00.dbf
Temp file

ora_%t_%u.tmp

ora_temp_Y2ZWGD00.tmp
Online redo log file
Control file

ora_%g_%u.log
ora_%u.ctl

ora_4_Y2ZSQK00.log
ora_Y2ZROW00.ctl

SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata';


SQL> CREATE TABLESPACE tbs_1;
SQL> CREATE TABLESPACE tbs_2 DATAFILE SIZE 400M;
SQL> CREATE TABLESPACE tbs_3 DATAFILE AUTOEXTEND ON MAXSIZE 800M;
SQL> CREATE TABLESPACE tbs_4 DATAFILE SIZE 200M, SIZE 200M;
SQL> ALTER TABLESPACE tbs_1 ADD DATAFILE AUTOEXTEND ON MAXSIZE 800M;
SQL> CREATE UNDO TABLESPACE undotbs_1;
SQL> CREATE TEMPORARY TABLESPACE temptbs_1;
SQL> ALTER TABLESPACE TBS_1 ADD TEMPFILE;
SQL> ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1 = '/u01/oradata';
SQL> ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_2 = '/u02/oradata';
SQL> ALTER DATABASE ADD LOGFILE;
Virtual Columns in Oracle Database 11g Release
69

column_name [datatype] [GENERATED ALWAYS] AS (expression) [VIRTUAL]


SQL > CREATE TABLE employees ( id NUMBER CONSTRAINT employees_pk
PRIMARY KEY (id),
first_name VARCHAR2(10),
last_name
salary

NUMBER(9,2),

comm1
comm2
salary1

VARCHAR2(10),

NUMBER(3),
NUMBER(3),

NUMBER GENERATED ALWAYS AS (ROUND(salary*(1+comm2/100),2))

VIRTUAL );
SQL > INSERT INTO employees (id, first_name, last_name, salary, comm1,
comm2)
VALUES (1, 'JOHN', 'DOE', 100, 5, 10);
SQL > INSERT INTO employees (id, first_name, last_name, salary, comm1,
comm2)
VALUES (2, 'JAYNE', 'DOE', 200, 10, 20);
SQL > COMMIT;
SQL >SELECT * FROM employees;
ID

FIRST_NAME

SALARY

COMM1

COMM2

SALARY1

10

105

SALARY2
1

JOHN

100

110
2

JAYNE

220

200

10

240

SQL > SELECT column_name, data_default FROM


WHERE table_name = 'EMPLOYEES';
70

user_tab_columns

20

COLUMN_NAME

DATA_DEFAULT

ID
FIRST_NAME
LAST_NAME
SALARY
COMM1
COMM2
SALARY1

ROUND("SALARY"*(1+"COMM2"/100),2)

Parameter Files
pfile
spfile
Windows : %ORACLE_HOME%\database
UNIX : $ORACLE_HOME/dbs
Spfile
Pfile

spfile<SID>.ora

spfileprod.ora

init<SID>.ora

initprod.ora

SQL > show parameter spfile;


SQL> select count(*) from v$spparameter where value is not null;
SQL > select name,value from v$parameter;
SQL > startup pfile=/u01/oradata/initprod.ora
SQL > create spfile from pfile;
SQL > create spfile=/u01/oradata/spfileprod.ora from pfile;
SQL > create spfile from pfile=/u01/oradata/initprod.ora;
SQL > create spfile=/u01/oradata/spfileprod.ora
pfile=/u01/oradata/initprod.ora;
SQL > alter system set db_cache_size=100M;

71

from

SQL > alter system set db_16K_cache_size=16K scope=spfile;


SQL > shutdown immediate;
SQL > startup
SQL > create pfile from spfile;
SQL > create pfile=/u01/oradata/initprod.ora from spfile;
SQL> create pfile from memory;
SQL> create spfile from memory;
Parameter lists:
$ vi $ORACLE_HOME/dbs/initprod.ora
db_unique_name = prod
db_name = prod
db_block_size = 8192
db_writer_processes = 8
control_files = '/u01/oradata/control.ctl'
resource_limit = true
nls_date_format = DD-MON-YYYY
log_archive_dest = /u01/oradata/arch
log_archive_max_processes = 4
audit_file_dest = /u01/admin/prod/adump
background_dump_dest = /u01/admin/prod/bdump
core_dump_dest = /u01/admin/prod/cdump
user_dump_dest = /u01/admin/prod/udump
db_files = 512
sga_max_size = 800M
sga_target=600M
db_cache_size = 100M
shared_pool_size = 150M
log_buffer = 4194304
java_pool_size = 150M
large_pool_size = 500M
pga_aggregate_target = 1024M
streams_pool_size = 10M
72

undo_retention = 28000
undo_management = 'auto'
undo_tablespace = 'undotbs1'
compatible = 11.2.0.0.0
Startup Options:
Startup nomount
Startup mount
Startup normal
Startup force
Startup restrict
Startup migrate
Startup upgrade
o ALTER SYSTEM enable restricted session;
o ALTER SYSTEM SET _system_trig_enabled=FALSE SCOPE=MEMORY;
o ALTER SYSTEM SET _undo_autotune=FALSE SCOPE=MEMORY;
o ALTER SYSTEM SET undo_retention=900 SCOPE=MEMORY;
o ALTER SYSTEM SET aq_tm_processes=0 SCOPE=MEMORY;
o ALTER SYSTEM SET resource_manager_plan='' SCOPE=MEMORY;
o Completed: ALTER DATABASE OPEN MIGRATE
Startup downgrade
STARTUP OPEN RECOVER

SQL > ALTER SYSTEM DISABLE RESTRICTED SESSION;


SQL > ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL > select instance_name, status, logins from v$instance;
SQL > startup nomount;
SQL > alter database mount;
SQL > alter database open;
SQL > alter database open read only;
Suspending and Resuming a Database:
73

SQL> ALTER SYSTEM SUSPEND;


SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;
DATABASE_STATUS
SUSPENDED
SQL> ALTER SYSTEM RESUME;
SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;
DATABASE_STATUS
ACTIVE
Shutdown options:
Shutdown
Shutdown
Shutdown
Shutdown

abort
immediate
transactional
normal

PS

CU

Control Files:
SQL> SELECT NAME FROM V$CONTROLFILE;
NAME
/opt/oradata/control01.ctl
SQL > show parameter control_files;
/opt/oradata/control01.ctl
Multiplexing using SPFILE
SQL> SELECT NAME FROM V$CONTROLFILE;
/opt/oradata/control01.ctl

74

TC

SC

NU

SQL > alter system set control_files= /opt/oradata/control01.ctl ,


/opt/oradata/control02.ctl
scope=spfil
e;
SQL> SELECT NAME FROM V$CONTROLFILE;
/opt/oradata/control01.ctl
SQL > shutdown immediate;
SQL > !cp /opt/oradata/control01.ctl

/opt/oradata/control02.ctl

SQL > startup


SQL> SELECT NAME FROM V$CONTROLFILE;
/opt/oradata/control01.ctl
/opt/oradata/control02.ctl
SQL > create pfile from spfile;
Multiplexing using PFILE:
SQL > shutdown immediate;
SQL > quit;
$ vi $ORACLE_HOME/dbs/initprod.ora
Control_files= ( /opt/oradata/control01.ctl ,/opt/oradata/control02.ctl,
/opt/oradata/control03.ctl )
$ sqlplus / as sysdba
SQL > startup pfile=$ORACLE_HOME/dbs/initprod.ora
SQL > SELECT NAME FROM V$CONTROLFILE;
/opt/oradata/control01.ctl
/opt/oradata/control02.ctl
/opt/oradata/control02.ctl
SQL > create spfile from pfile;
75

SQL > shutdown immediate;


SQL > startup;
Controlfile Growthing Parameter:
MAXLOGFILES
MAXLOGMEMBERS
MAXLOGHISTORY
MAXDATAFILES
MAXINSTANCES
SQL > select type, records_total, records_used from v$controlfile_record_section;
Redo Log Files:
Redo
Log
Buffer

LGWR

Redo
Log
Files1

Redo
Log
Files2

Redo
Log
Files3

Archive
Log
Files

ARCH

SQL > SELECT * FROM V$LOGFILE;


GROUP#

MEMBER

STATUS

/opt/oradata/REDO01.LOG

/opt/oradata/REDO02.LOG

/opt/oradata/REDO03.LOG

SQL > SELECT * FROM V$LOG;


GROUP#

BYTES

MEMBERS

76

ARC

STATUS

1048576

YES

ACTIVE

1048576

NO

CURRENT

1048576

YES

INACTIVE

SQL > ALTER DATABASE ADD LOGFILE MEMBER ' /opt/oradata/redo3a.log '
TO GROUP 3;
SQL > ALTER DATABASE ADD LOGFILE GROUP 4
('/opt/oradata/redo4a.log', '/opt/oradata/redo4b.log') SIZE
50M;
SQL > ALTER DATABASE CLEAR LOGFILE GROUP 3;
SQL > ALTER DATABASE CLEAR LOGFILE

/opt/oradata/redo3a.log ' ;

SQL > ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;


SQL > ALTER DATABASE DROP LOGFILE GROUP 3;
SQL > > ALTER DATABASE DROP LOGFILE

/opt/oradata/redo3a.log ' ;

SQL > ALTER SYSTEM SWITCH LOGFILE;


Rename or relocate redolog files:
SQL > SELECT * FROM V$LOGFILE;
SQL > SELECT * FROM V$LOG;
SQL > shutdown immediate;
SQL > exit;
$ cp /opt/oradata/redo3a.log

/u01/oradata/redo3a.log

$ sqlplus / as sysdba
SQL> startup mount
SQL > ALTER DATABASE RENAME FILE
/opt/oradata/redo3a.log TO /u01/oradata/redo3a.log
SQL > ALTER DATABSAE OPEN;
SQL > SELECT * FROM V$LOGFILE;
SQL > ! rm fr /opt/oradata/redo3a.log
Archive log files:
Archive log mode
NoArchive log mode

77

SQL> SELECT LOG_MODE FROM V$DATABASE;


LOG_MODE
NOARCHIVELOG
SQL> ARCHIVE LOG LIST;
Database log mode

NoArchivelog

Automatic archival

Disabled

Archive destination

/opt/oradata/arch

Oldest online log sequence

11

Next log sequence to archive

12

Current log sequence

12

Database log mode

Archivelog

Automatic archival

SQL > shutdown immediate;


SQL > startup mount
SQL > alter database archivelog;
SQL > alter database noarchivelog;
SQL> alter database open;

SQL > ARCHIVE LOG LIST;


Enabled
78

Archive destination

/opt/oradata/arch

Oldest online log sequence

12

Next log sequence to archive

13

Current log sequence

13

SQL > show parameter log_archive_dest;


SQL > alter system set log_archive_dest=/u01/oracle/arch ;
SQL > alter system set LOG_ARCHIVE_DUPLEX_DEST = '/disk2/archive'
Log_archive_dest_1 =
:
Log_archive_dest_10 =
SQL > alter system set log_archive_dest_1=LOCATION=/opt/arch;
Specifying Alternate Destinations
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = 'LOCATION=/disk4/arch';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = 'LOCATION=/disk3/arch
ALTERNATE=LOG_ARCHIVE_DEST_4';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_3=ENABLE;
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_4=ALTERNATE;
SQL> SELECT dest_name, status, destination FROM v$archive_dest;
DEST_NAME

STATUS

DESTINATION

LOG_ARCHIVE_DEST_3

VALID

/disk3/arch

LOG_ARCHIVE_DEST_4

ALTERNATE

/disk4/arch

SQL > show parameter log_archive_format;


SQL > alter system set log_archive_format=arch_%t_%s_%r.arc;
Example:
/opt/oradata/arch/arch_1_100_509210197.arc
/opt/oradata/arch/arch_1_101_509210197.arc
SQL > show parameter log_archive_max_processes;
SQL > ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;
SQL > select * from v$archived_log;

79

Manual Database Creation:

$ORACLE_BASE
( /opt/oracle )

admin

oradata

prod

pfile

bdump

prod

udump

cdump

adump

create

$ mkdir $ORACLE_BASE/admin/prod
$ cd $ORACLE_BASE/admin/prod
$ mkdir pfile bdump udump cdump adump create
$ mkdir $ORACLE_BASE/oradata/prod
$ export ORACLE_SID=prod
$ orapwd file=$ORACLE_HOME/dbs/orapwprod

password=sys

$ sqlplus / as sysdba
SQL > startup pfile=$ORACLE_BASE/admin/prod/pfile/initprod.ora nomount
SQL > create database prod
Datafile
Sysaux datafile
Logfile

/opt/oracle/oradata/prod/system01.dbf size 500M


/opt/oracle/oradata/prod/sysaux01.dbf size 500M
/opt/oracle/oradata/prod/redo1.log size 50M ,
/opt/oracle/oradata/prod/redo1.log size 50M

Undo tablespace undotbs1


Datafile

/opt/oracle/oradata/prod/undo01.dbf size 100M


80

Default temporary tablespace temp


Tempfile

/opt/oracle/oradata/prod/temp01.dbf size 100M ;

SQL > @?/rdbms/admin/catalog.sql


SQL > @?/rdbms/admin/catproc.sql
SQL > create spfile from pfile=/opt/oracle/admin/prod/pfile/initprod.ora;
SQL > shutdown immediate;
SQL > startup
SQL > select instance_name, status from v$instance;
SQL > select name, open_mode from v$database;
$ dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname
ora11g
-sid ora11g -responseFile NO_VALUE -characterSet AL32UTF8
-memoryPercentage 30 -EmConfiguration LOCAL
Enter SYSTEM user password:
password
Enter SYS user password:
password
Copying database files
1% complete
...
100% complete
$ dbca &
welcome
Operation
Database
Templates
Database
Identification

Management
Options

81

Database
Credentials

Storage Options

Database File
Location

Recovery
Configuration
Database
Content
Installation
Parameters
Database
Storage
Creation Option
Configuration

82

83

Anda mungkin juga menyukai