Documente Academic
Documente Profesional
Documente Cultură
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
/software
- Oracle image
/data1
- Oracle data
40GB
/backup
100GB
Server 1
/data
/software
/backup
Server 2
/data
/software
/backup
Switch
SAN Storage
/data
/software
/backup
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,
# 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
john:stanly:britto
samson:prince:john
# more jeni.txt | grep e john -e jeni
john:stanly:britto
antony:jeni:jasmine
samson:prince:john
4
# wc w jeni.txt
# wc
-c jeni.txt
4
# more
jeni.txt | wc -l
4
# head
-2 jeni.txt
john:stanly:britto
antony:jeni:jasmine
# tail
-2 jeni.txt
samson:prince:john
arul:jeevan:vince
# head
-3
jeni.txt | tail -2
antony:jeni:jasmine
samson:prince:john
# more jeni.txt | cut -d : -f2
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
rm -fr arch1.arc
# ls
arch2.arc
arch3.arc
arch3.arc arch4.arc ..
# ls
# ls
-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
# 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
# ls
$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
-F_
-d _
$3 }
TESTDB02
ORABIT01
# ps
-ef | grep
-f3
TESTDB02
ORABIT01
# find /opt
-name
*. arc
# 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
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
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
192.168.1.101
Username :oracle
Password :oracle
ftp> prompt
ftp > bin
ftp > mput
arch1.arc
/opt/oracle/
/opt/oracle/backup.txt
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
soft
nproc
16384
oracle
hard
nproc
16384
oracle
soft
nofile
65536
oracle
hard
nofile
65536
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
/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
/mnt
# cd /mnt
# cp -r
# chown
-R
/software/Disk1
oracle:oinstall
/software
15
16
Screen 13 : Summary
Screen 14 : Install
17
18
19
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
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
23
24
25
26
27
28
29
o Rollback
o Savepoint
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
O H N
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;
v$instance;
eno number(4),
ename varchar2(10),
age number(2),
gender char,
salary number(7,2),
doj date ) ;
number(4)
Ename
varchar2(10)
Age
number(2)
Gender
char
Salary
number(7,2)
31
Doj
date
Enter ENAME
Enter AGE
Enter GENDER :
Enter SALARY
Enter DOJ
SQL > /
Enter ENO
Enter ENAME
Enter AGE
Enter GENDER :
Enter SALARY
Enter DOJ
Enter AGE
Enter SALARY
Enter AGE
Enter SALARY
ENAME
AGE
GENDER
101
john
30
SALARY
101
1234.40
DOJ
1234.40 13-May-09
SALARY
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
char (4)
Ename
varchar2 (10)
Age
number (2)
Gender
char
Salary
number (7, 2)
Doj
date
Number (4)
Ename
Varchar2 (15)
Age
Number (2)
Gender
Char
Salary
Doj
Number (7, 2)
Date
Phone
Number (10)
tablespace_name
maxbytes
used_bytes
Stanly
testtbs
10 M
9M
Stanly
tools
-1
20M
Temp_
Stanly
EMP
open
DATA T
AJK123K3 default
TYPE
sec_case_sensitive_logon
VALUE
boolean
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
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
{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}
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;
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(
FK_DNO_EMP
R_CONSTRAINT_NAME
STATUS
ENABLED
PK_DNO_DEPT
ENABLED
FROM USER_CONSTRAINTS
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
ORDER BY SHIP_ID;
LEFT OUTER JOIN:
SQL > SELECT SHIP_ID, SHIP_NAME, PORT_NAME
SHIP_NAME
PORT_NAME
Codd Crystal
Baltimore
Codd Elegance
Tampa
Codd Champion
Codd Victorious
Codd Grandeur
Tampa
Charleston
Codd Prince
Charleston
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
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
61771936 bytes
Fixed Size
73888 bytes
Variable Size
44249088 bytes
Database Buffers
16384000 bytes
Redo Buffers
1064960 bytes
TYPE
VALUE
sga_max_size
big integer
600M
VALUE
ISSYS_MODIFIABLE
600M
FALSE
47
where
Archive
Log
Files
TYPE
VALUE
sga_max_size
big integer
600M
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
Pinned Buffer
Free Buffer
LRU
Starting
Point
LRU
Ending
Point
Database
Buffer
Cache
Redo
Log
Buffer
Redo Data
Dirty
Buffer
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
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
>
>
>
>
(Tablespaces)
(Tablespaces)
DBWR
Data
Files
SQL> show parameter db_writer_processes;
NAME
TYPE
VALUE
db_writer_processes
integer
TYPE
VALUE
db_writer_processes
integer
LGWR
CKPT: Checkpoint
Database
Buffer
Cache
Redo log
files
Redo
Log
buffer
DBWR
Data
Files
LGWR
Control
Files
Redo log
files
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
tablespace
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
TYPE
VALUE
db_16k_cache_size
big integer
32M
TABLESPACE_NAME
8192
16384
USERS
TBS2
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
8K
8K
8K
8K
8K
8K
8K
54
pctfree 10;
1 to 16
17 to 63
64 to 120
>120
Extents
Extents
Extents
Extents
64K
1MB
8MB
64M
55
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
Max. Size
8GB
16GB
32GB
64GB
128GB
GROUP BY TABLESPACE_NAME;
GROUP BY TABLESPACE_NAME;
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
SYSAUX tablespace:
SQL > create tablespace sysaux
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
where a.segment_name =
b.table_name
and a.segment_name='EMP';
SEGMENT_NAME
BYTES
BLOCKS
COMPRESS
COMPRESS_FOR
EMP
1476395008
180224
DISABLED
datafile
'/u01/oracle/oradata/DET01/user_data_compressed.dbf '
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
NUMBER(10)
description
NOT NULL,
created_date DATE
NOT NULL
NUMBER(10)
description
NOT NULL,
created_date DATE
NOT NULL )
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
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
COMPRESS_FOR
ENABLED
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
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
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
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
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
NUMBER(9,2),
comm1
comm2
salary1
VARCHAR2(10),
NUMBER(3),
NUMBER(3),
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
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
71
from
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
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
/opt/oradata/control02.ctl
LGWR
Redo
Log
Files1
Redo
Log
Files2
Redo
Log
Files3
Archive
Log
Files
ARCH
MEMBER
STATUS
/opt/oradata/REDO01.LOG
/opt/oradata/REDO02.LOG
/opt/oradata/REDO03.LOG
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 ' ;
/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
NoArchivelog
Automatic archival
Disabled
Archive destination
/opt/oradata/arch
11
12
12
Archivelog
Automatic archival
Archive destination
/opt/oradata/arch
12
13
13
STATUS
DESTINATION
LOG_ARCHIVE_DEST_3
VALID
/disk3/arch
LOG_ARCHIVE_DEST_4
ALTERNATE
/disk4/arch
79
$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
Management
Options
81
Database
Credentials
Storage Options
Database File
Location
Recovery
Configuration
Database
Content
Installation
Parameters
Database
Storage
Creation Option
Configuration
82
83