database creation
DESCRIPTION
Database creation. Using a script: Connect internal as sysdba; create database NAME….; Using the OEM GUI Parameters stored in a small DB Access to other utility pgms – eg: RMAN Can accommodate several DBAs Key decisions on sizing Eg: assign a block size – once and for all. Block size. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/1.jpg)
Database creation
• Using a script:Connect internal as sysdba;create database NAME….;
• Using the OEM GUI– Parameters stored in a small DB– Access to other utility pgms – eg: RMAN– Can accommodate several DBAs
• Key decisions on sizing– Eg: assign a block size – once and for all
![Page 2: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/2.jpg)
Block size• Smallest unit of storage in oracle DB• Critical perf. Factor as inefficient space use leads to
increase I/O activity• Block overhead
– Integrity section (90 bytes)– Runtime overhead (136 bytes)– Transactional header (24 bytes and growing)– Directory section (Pointers…)– And then………..data
• Big is beautiful? Percentage of overhead decreases when block size increases, but no right answer here
}Approx. 256 b
![Page 3: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/3.jpg)
2 K, 4K, 8K or 16K?
• OLTP prefer smaller – small granularity increase likelihood that data is in buffer (indexed access)
• DW or DSS prefer larger – physically close data used together + less movement
• In practice constraint on memory will also dictate• Buffer size + now split in 3 areas:
– KEEP pool– RECYCLE pool– DEFAULT pool
![Page 4: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/4.jpg)
Block size and row size
• Table with average row length = 2236 b (10m records)
• Block size 4k = 4006 b => one row per block
• 8 k => 3 rows per block
![Page 5: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/5.jpg)
Opening and closing the DB
Startup open NAME;
Or
Startup mount NAME;
Alter database open;
Shutdown;
Else – use OEM menus
![Page 6: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/6.jpg)
When DB is started
1. System Global Area (SGA) created:a) Data block buffer cache created
• Size is key for performance of DB
• fraction of whole DB
• DB_BLOCK_BUFFERS / DB_BLOCK_SIZE
• Least Recently Used (LRU) method
• Too small means fight for space between objects => increase in misses => increase in I/O
• Too big = crippling for other operations
page846
![Page 7: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/7.jpg)
When DB created (2)
b) Shared SQL Pool created:• Stores DD cache: info about data structure
• Stores library cache: info about SQL statements run
• LRU algorithm
• Too small => no re-use and low performance
• SHARED_POOL_SIZE in init.ora
![Page 8: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/8.jpg)
Parameter files: INIT.ORA
• Initialisation file for each DB
• MYDB = > initmydb.ora
• Contains sizing of SGA and number of parameters, DB name and block size
• Read at startup means changes only implemented at next startup
![Page 9: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/9.jpg)
The control file
• Each DB also has a control file• Contains Dbname, name and location of
files and redo logs, timestamp of DB creation
• Can be mirrored for added security• Identifies all files that must be opened when
Db is loaded• Also used in DB recovery
![Page 10: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/10.jpg)
Data hierarchy in Oracle• Data hierarchy in Oracle is specific (and demented!)• Normally, unit of storage is file…
– Managed by OS– Can grow / shrink– Physical sections logically connected by OS
• In Oracle a DB = one or more tablespaces– One or more objects, indexes, clusters…– Fixed size – gets full– Extended by DBA only– One file can support only ONE tablespace
See figure 3.1
![Page 11: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/11.jpg)
About tablespaces
• Kind of partitioning– Except fixed size
• Extended by dba
– Oracle very strong at TS level
• Optimal seems to be around 2GB• Strategy = isolate aged data into one
tablespace => can be made read-only• Should store similar objects together
![Page 12: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/12.jpg)
Reasoning behind TS creation
• Business relevance
• Size of objects
• Type of activity
• Volume of activity
• Backup
• Transportability
• Time-based changes in activity
![Page 13: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/13.jpg)
Reasoning behind TS creation
• Business relevance
• Size of objects
• Type of activity
• Volume of activity
• Backup
• Transportability
• Time-based changes in activity
e.g. modular design / keep data togegther
Object of similar sizes – reuse of space
e.g. index VS table / full scan VS rowID
Low I/O VS high I/O objects
TS is smallest unit for Bcup and restore
Cloning copy is done by TS as well
DW env. Aged archived system better – access time relatedBias towards more rather than less = > compromiseAlso perf reading
P 148
![Page 14: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/14.jpg)
Create a tablespace• Create tablespace FREDDY datafile
‘path\freddy.dbf’ size 1000K
Default storage (initial 10K next 10K
Minextent 1 maxextents 100
Pctincrease 0)
Permanent;10 10 10 10 10 10 10 10 10
1010 20 30 40 50 60 70 80 90
100
10 10 12 14.4 17.2 20.7 25 30 3642.3
10 20 32 46.4 63.6 84.3 109.3 139.3 175.3218.5
![Page 15: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/15.jpg)
• Tables = one physical space on disk [segment] – same for any object
• Each segment = space set out in tablespace [initial extent]
• When table grows allocate next extent – set of adjacent blocks
• Until tablespace is full• see figure 20.3
Object creation
![Page 16: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/16.jpg)
What a segment looks like
• Each segment contains a header block• Space directory for other blocks• Properly sized tables = few extents (low
fragmentation)• Additional extents are never lost until drop
or delete commands are used• Can also adjust pctfree value (to fill a Null
value column)
![Page 17: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/17.jpg)
Sizing extents
• Try to match the max capacity of your storage device to limit I/O operations
• For single objects, It is beneficial to keep extents of same size (deletion)
• Try to limit the number of extents below 50 (measure of the growth of the object)
• If too many, rebuild object with larger size extents
![Page 18: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/18.jpg)
Oracle “space allocation”
• DBA allocates space for table after 2 days of hard thinking
• Oracle ignores it blatantly as follows:
Table name initial size next extent oracle sizing next extent
Smalltab 7K 7K 20K 20KMediumtab 103K 103K 120K 120K
Total size after growth smalltab = 40K instead of 14Kmediumtab = 206K instead of 240K
![Page 19: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/19.jpg)
Creating and using tables
• Table creation with CREATE TABLE statement• Syntax:
Create table NAME (
field1 datatype special constraint
field2 datatype etc…
);• Special constraint: e.g. NOT NULL or PRIMARY
KEY or CHECK
![Page 20: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/20.jpg)
Constraints
• Candidate key:
Create table fred (
name varchar2(10) NOT NULL
firstname varchar2(10) NOT NULL
age number
Constraint FRED_UQ unique (name, firstname)
);
![Page 21: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/21.jpg)
Primary KeyCreate table fred (
name varchar2(10)firstname varchar2(10)age numberConstraint FRED_PK Primary Key (name, firstname));
• Same apart: always NOT NULL + can only have one of them in a table
• If only one field just list primary key as special constraint
![Page 22: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/22.jpg)
Foreign key – aka referential integrity constraint
Create table fred (ID number NOT NULLname varchar2(10) firstname varchar2(10) age numberConstraint FRED_PK Primary Key (ID), foreign key (age) references OTHERTAB(age));
• Use ON DELETE CASCADE to maintain constraint
![Page 23: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/23.jpg)
Check constraint
Create table fred (
ID number NOT NULL
name varchar2(10)
firstname varchar2(10)
age number CHECK (age between 18 and 65)
);
![Page 24: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/24.jpg)
Deleting data
• Drop table statement – remove table• Or truncate table statement – empty it
• Warning: neither can be rolled back• Otherwise:Alter table NAME Add (…)Alter table NAME modify (…)
drop column fieldname• See rules on handout
![Page 25: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/25.jpg)
Now what? Clusters
• To store different tables in physically close areas on disk
• Create a cluster to store both objects• Cluster key is any useful field that links the tables• Can keep name of field or pick new one
– e.g. Create cluster fred (name datatype)
– then assign tables: create table…cluster fred (name)
![Page 26: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/26.jpg)
What this cluster looks like
12 Cork fred adam French13 Midleton Bob Fitz Irish14 Bally… Brian O’reilly English
Cluster Key
Table 1
Table 2
![Page 27: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/27.jpg)
Finally…
• Users can have different logical views on a database
• These views are called…..?• They allow for a re-organisation of physical
DB objects for each users• Each ? can contain elements from different
tablespaces• Has limited size allocated to each user
![Page 28: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/28.jpg)
Summary: storage in Oracle • Keywords: tablespace / datafiles / database objects /
segments / extents• When you create an object:
– Specify size / tablespace info = storage clause– Otherwise: default values
• Pctincrease should be used with care (affects re-usability of reclaimed space – i.e. extents)
• Wise use of tablespace eases admin (like partitioning)– sizing follows sizing of device – e.g. 2GB– Many utilities to work with tablespaces– Isolate processes – e.g. a report running inside a TS– Also for archiving
![Page 29: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/29.jpg)
Performance issues
• Extent sizing a key• Oracle has 2 ways to read data:
– By rowID – typically thru an index– Full table scan
• In second case, oracle reads several blocks at a time– Set with DB_FILE_MULTIBLOCK_READ_COUNT– Limited only by I/O device buffer capacity– E.g. block = 4K, I/O buffer = 64K => ?????– Extent size should be multiple of 64K
![Page 30: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/30.jpg)
example
• Table with 10 extents 64 K each• I/O device buffer = 64K => 10 reads• If extent = 640K => ???? Reads• If 8 extents 80K each => ??? Reads
– Reads cannot span extents => 16 reads or an increase of 60% in I/O operations
• Cl: either use extents much larger than buffer or use multiple of buffer size
![Page 31: Database creation](https://reader035.vdocument.in/reader035/viewer/2022062322/568145ef550346895db2f22d/html5/thumbnails/31.jpg)
And for roll back segments
• Should be kept small enough• Current wisdom is to ensure TS for rollback is
normally 50% free• Not always possible to use only one RB size
– For different types of processes – e.g. TPS
– Use two different TB to isolate activites
– Easier trouble shooting
• Discarded rollback segments go into the log file