sql for dbaspresentation

61
SQL For DBAs Developers and Users will learn something as well! Daniel W. Fink

Upload: oracle-documents

Post on 11-May-2015

753 views

Category:

Documents


0 download

DESCRIPTION

oracle foreign key primary key constraints performance tuning MTS IOT 9i block size backup rman corrupted column drop rename recovery controlfile backup clone architecture database archives export dump dmp duplicate rows extents segments fragmentation hot cold blobs migration tablespace locally managed redo undo new features rollback ora-1555 shrink free space user password link TNS tnsnames.ora listener java shutdown sequence

TRANSCRIPT

Page 1: Sql for dbaspresentation

SQL For DBAsDevelopers and Users will learn something as well!

Daniel W. Fink

Page 2: Sql for dbaspresentation

Overview♦ Where is the information

– Data Dictionary views & tables♦ How can I extract it?

– SQL, functions♦ How can I use it?

– SQL*Plus to build and execute the script

Page 3: Sql for dbaspresentation

Method♦ Build a script that generates the ‘create

tablespace’ commands for the database♦ Not all options considered

– AUTOEXTEND– MINEXTENT– ONLINE/OFFLINE– *I have to leave something for you to add…

♦ Not all tablespaces– Enough to demonstrate likely permutations

Page 4: Sql for dbaspresentation

Command♦ Rules

– Tablespace can be TEMPORARY– TEMPORARY tablespace can use DATA files

or TEMP files– A single tablespace can have multiple data files

♦ Command structureCREATE [TEMPORARY] TABLESPACE tablespacename

[TEMPORARY]

{DATAFILE|TEMPFILE} filename filesize

EXTENT MANAGEMENT [DICTIONARY|LOCAL

[{AUTOALLOCATE|UNIFORM} [size {K|M}]]}]

Page 5: Sql for dbaspresentation

Oracle’s Data Dictionary♦ Access via Views

– 1390 in 8i– 1820 in 9i

♦ DBA_ - Everything in database ♦ ALL_ - What you can see♦ USER_ What you own♦ Other – Miscellaneous views

Page 6: Sql for dbaspresentation

Where does it come from?♦ Views of underlying base objects♦ Provides level of abstraction

– Easy to understand– Hides translations and calculations– READ ONLY!

Page 7: Sql for dbaspresentation

View Textselect ts.name,

ts.blocksize * ts.dflinit,

decode(bitand(ts.flags, 3), 1, to_number(NULL),

ts.blocksize*ts.dflincr),

ts.dflminext,

decode(ts.contents$, 1, to_number(NULL), ts.dflmaxext),

decode(bitand(ts.flags, 3), 1, to_number(NULL),

ts.dflextpct),

ts.blocksize * ts.dflminlen,

decode(ts.online$,1,'ONLINE',2,'OFFLINE',

4,'READ ONLY','UNDEFINED'),

decode(ts.contents$, 0, 'PERMANENT', 1, 'TEMPORARY'),

decode(ts.dflogging, 0, 'NOLOGGING', 1, 'LOGGING'),

decode(ts.bitmapped, 0, 'DICTIONARY', 'LOCAL'),

decode(bitand(ts.flags,3),0,'USER',1,'SYSTEM',2,'UNIFORM',

'UNDEFINED'),

decode(ts.plugged, 0, 'NO', 'YES')

from sys.ts$ ts

where ts.online$ != 3

ColumnsTABLESPACE_NAME

INITIAL_EXTENT

NEXT_EXTENT

MIN_EXTENTS

MAX_EXTENTS

PCT_INCREASE

MIN_EXTLEN

STATUS

CONTENTS

LOGGING

EXTENT_MANAGEMENT

ALLOCATION_TYPE

PLUGGED_IN

Page 8: Sql for dbaspresentation

Where can I find more information?♦ Oracle Documentation – Server Reference

Guide♦ DBA_VIEWS

– text contains the actual text of the view– SET LONG 10000 in order to see all the text

♦ catalog.sql♦ sql.bsq

Page 9: Sql for dbaspresentation

Notes on Data Dictionary♦ ID

– COLUMN_ID starts at 1– EXTENT_ID starts at 0

♦ Not All DBA_* views have ALL_* and/or USER_* counterparts

♦ DBA_EXTENTS and USER_EXTENTS have different information– USER_EXTENTS does not contain file information

♦ DBA_TAB_COLUMNS– Not just table columns, also views, clusters

♦ DBA_IND_COLUMNS– Reverse Key Indexes have function name instead of table column

name for leading column

Page 10: Sql for dbaspresentation

Quick Tour of the Data Dictionary

Tables/ViewsDBA_TABLES

DBA_TAB_COLUMNS

DBA_TAB_COL_STATISTICS

DBA_TAB_HISTOGRAMS

DBA_PART_TABLES

DBA_TAB_PARTITIONS

DBA_TAB_SUBPARTITIONS

DBA_CONSTRAINTS

DBA_CONS_COLUMNS

DBA_VIEWS

StorageDBA_TABLESPACES

DBA_DATA_FILES

DBA_TEMP_FILES

DBA_SEGMENTS

DBA_EXTENTS

DBA_ROLLBACK_SEGS

DBA_FREE_SPACEUsersDBA_USERS

DBA_ROLES

DBA_ROLE_PRIVS

DBA_TAB_PRIVS

DBA_SYS_PRIVS

DBA_PROFILES

IndexesDBA_INDEXES

DBA_IND_COLUMNS

DBA_IND_PARTITIONS

DBA_IND_SUBPARTITIONS

DBA_PART_INDEXES

Page 11: Sql for dbaspresentation

Data Dictionary views for script♦ DBA_TABLESPACES

– All tablespaces in database♦ DBA_DATAFILES

– All DATAFILEs for all tablespaces♦ DBA_TEMPFILES

– *New in Oracle 8i– Identifies TEMPFILES created by command

“create temporary tablespace”

Page 12: Sql for dbaspresentation

Using SQL to Write SQL♦ Joins♦ Unions♦ Functions♦ Sorting

Page 13: Sql for dbaspresentation

Joins♦ A relationship using common data (natural or

derived) must exist♦ Inner

– If a related row exists, return both main and related row– If a related row does not exist, do not return the main

row

♦ Outer– If a related row exists, return both main and related row– If a related row does not exist, return main row and null

values for related row

Page 14: Sql for dbaspresentation

Joinselect t.tablespace_name,

d.file_name

from dba_tablespaces t,

dba_data_files d

where d.tablespace_name = t.tablespace_name;

TABLESPACE_NAME FILE_NAME

--------------- ---------------------------------

SYSTEM C:\ORADATA\ORA817\SYSTEM01.DBF

TOOLS C:\ORADATA\ORA817\TOOLS01.DBF

TOOLS C:\ORADATA\ORA817\TOOLS02.DBF

TEMP2 C:\ORADATA\ORA817\TEMP201.DBF

Page 15: Sql for dbaspresentation

Union♦ Set Operation♦ Used to combine sets of data

– Joins & Relationships are not used♦ Columns must be same number and datatype

– A literal expression can be used♦ Returns one row for each distinct set of values

– UNION ALL will return duplicates

select statement1

unionselect statement2

Page 16: Sql for dbaspresentation

File List♦ File names are listed in

– DBA_DATA_FILES (10 rows)– DBA_TEMP_FILES (1 row)

♦ Common Data?– Both contain tablespace_name…

Page 17: Sql for dbaspresentation

File Listselect d.file_name, t.file_name

from dba_data_files d,

dba_temp_files t

where d.tablespace_name = t.tablespace_name;

no rows selected

♦ Why?– Tablespaces use either data files or temp

files…not both– Even an outer join will miss rows

Page 18: Sql for dbaspresentation

File List

select file_name

from dba_data_files

union

select file_name

from dba_temp_files;

FILE_NAME

------------------------------

C:\ORADATA\ORA817\RBS01.DBF

C:\ORADATA\ORA817\SYSTEM01.DBF

C:\ORADATA\ORA817\TEMP01.DBF

C:\ORADATA\ORA817\TEMP201.DBF

C:\ORADATA\ORA817\TOOLS01.DBF

C:\ORADATA\ORA817\TOOLS02.DBF

Page 19: Sql for dbaspresentation

Tablespace/File List

select tablespace_name

from dba_tablespaces

union

select file_name

from dba_data_files

union

select file_name

from dba_temp_files;

TABLESPACE_NAME

------------------------------------

C:\ORADATA\ORA817\SYSTEM01.DBF

C:\ORADATA\ORA817\TEMP01.DBF

C:\ORADATA\ORA817\TEMP201.DBF

C:\ORADATA\ORA817\TOOLS01.DBF

C:\ORADATA\ORA817\TOOLS02.DBF

SYSTEM

TEMP

TEMP2

TOOLS

Page 20: Sql for dbaspresentation

Functions♦ Concatenation

– Combine 2 or more strings together♦ DECODE/CASE

– Conditional display/decision-making♦ TO_CHAR

– Converts a number or date to a character string♦ CHR

– Displays the ASCII character♦ ASCII

– Displays the ASCII number

Page 21: Sql for dbaspresentation

Concatenation♦ Combine two or more strings together

– Remember to add blanks♦ CREATE TABLESPACE <ts_name>

CONCAT(‘CREATE TABLESPACE ’,tablespace_name)

‘CREATE TABLESPACE ’||tablespace_name

Page 22: Sql for dbaspresentation

DECODE/CASE♦ Rudimentary decision making function♦ DECODE available in 7/8/9♦ CASE available from 8.1.6+♦ Use to determine

– Type of tablespace– Extent Management– Datafile separation

Page 23: Sql for dbaspresentation

DECODE♦ DECODE(expression,

comparison1, return1,comparison2, return2,…default)

♦ Can only use equality comparison

Page 24: Sql for dbaspresentation

DECODEIf DBA_TABLESPACES.CONTENTS = ‘TEMPORARY’ display

‘TEMPORARY’ELSE IF DBA_TABLESPACES.CONTENTS = ‘PERMANENT’ display NULLELSE display NULL

select ‘CREATE ‘||decode(contents,

‘TEMPORARY’,‘TEMPORARY ’,

‘PERMANENT’,NULL,NULL)||

‘TABLESPACE ‘||tablespace_name

from dba_tablespaces;

CREATE TABLESPACE SYSTEM

CREATE TEMPORARY TABLESPACE TEMP

CREATE TEMPORARY TABLESPACE TEMP2

CREATE TABLESPACE TOOLS

Page 25: Sql for dbaspresentation

CASE♦ Introduced in 8.1.6♦ Able to return based on variable conditions

CASE WHEN condition1 THEN result1WHEN condition2 THEN result2

…ELSE default

Page 26: Sql for dbaspresentation

CASEselect ‘CREATE ‘||

CASE WHEN contents=‘TEMPORARY’ THEN ‘TEMPORARY ’

WHEN contents=‘PERMANENT’ THEN NULL

ELSE NULL

END||’TABLESPACE ‘||tablespace_name

from dba_tablespaces;

CREATE TABLESPACE SYSTEM

CREATE TEMPORARY TABLESPACE TEMP

CREATE TEMPORARY TABLESPACE TEMP2

CREATE TABLESPACE TOOLS

♦ Permanent = NULL not currently needed, but included for example

Page 27: Sql for dbaspresentation

Character String Conversion♦ TO_CHAR([date|number]{,format string})

– Converts numbers or dates to character string– Uses format codes to change display

♦ TO_CHAR(number)– Does not require format string– Oracle will also convert numeric string to number– If you are not formatting, Oracle will automatically

convert to string…UNLESS it is used in a UNION

Page 28: Sql for dbaspresentation

Character String Conversionselect 12345||’ is a number’ from dual;

12334 is a number

select ‘12345’-10 from dual;

12335

select 12345 from dual

union

select ‘is a number’ from dual;

ORA-01790: expression must have same datatype ascorresponding expression

Page 29: Sql for dbaspresentation

CHR♦ CHR is used to ‘print’ special characters

– CHR(<ascii_number>)♦ ASCII can be used to determine the number

of the character– ASCII(‘<character>’)

Page 30: Sql for dbaspresentation

♦ Data files in statement must be enclosed in single tic (‘)– ‘ is a character and can be enclosed in ‘ as a character

string– but I can never remember how many I need

(I think it’s 4…or is it 3…What if I am using it to end a string?)

♦ CHR(39) prints a single ‘

Single Tic

Page 31: Sql for dbaspresentation

Single Tic

SQL> select ’’’’||file_name||’’’’2 from dba_data_files;

'C:\ORADATA\ORA817\SYSTEM01.DBF''C:\ORADATA\ORA817\TOOLS01.DBF'

SQL> select chr(39)||file_name||chr(39)

2 from dba_data_files;

'C:\ORADATA\ORA817\SYSTEM01.DBF'

'C:\ORADATA\ORA817\TOOLS01.DBF'

Page 32: Sql for dbaspresentation

New Line♦ CHR(10) ‘prints’ a newline character

– Able to output single row of data on multiple lines

select ‘Line 1’||chr(10)||’Line 2’

from dual;

Line 1

Line 2

Page 33: Sql for dbaspresentation

CREATE TABLESPACEselect ‘CREATE TABLESPACE ‘||

t.tablespace_name||chr(10)||

‘DATAFILE ‘||chr(39)||

d.file_name||chr(39)

from dba_tablespaces t,

dba_data_files d

where d.tablespace_name = t.tablespace_name;

Page 34: Sql for dbaspresentation

CREATE TABLESPACE ErrorCREATE TABLESPACE SYSTEM

DATAFILE 'C:\ORADATA\ORA817\SYSTEM01.DBF'

CREATE TABLESPACE TOOLS

DATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF'

CREATE TABLESPACE TOOLS

DATAFILE 'C:\ORADATA\ORA817\TOOLS02.DBF'

CREATE TABLESPACE TEMP2

DATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF‘

♦ 2nd ‘CREATE TABLESPACE TOOLS’ statement will fail…how do we work around?

Page 35: Sql for dbaspresentation

UNION♦ UNION of DBA_TABLESPACES,

DBA_DATA_FILES, DBA_TEMP_FILES♦ Each SQL statement is executed

independently, then the results are combined

♦ Output will be sorted, in column order♦ ORDER BY must be last line

Page 36: Sql for dbaspresentation

UNIONselect 'CREATE '||decode(contents, 'TEMPORARY', 'TEMPORARY ', NULL)||

’TABLESPACE ‘||tablespace_name

from dba_tablespacesunionselect 'DATAFILE '||chr(39)||file_name||chr(39)||' SIZE

'||to_char(bytes/1024)||'K'from dba_data_filesunionselect 'TEMPFILE '||chr(39)||file_name||chr(39)||' SIZE

'||to_char(bytes/1024)||'K'from dba_temp_files;

CREATE TABLESPACE SYSTEMCREATE TEMPORARY TABLESPACE TEMPCREATE TEMPORARY TABLESPACE TEMP2

CREATE TABLESPACE TOOLSDATAFILE 'C:\ORADATA\ORA817\SYSTEM01.DBF' SIZE 280576KDATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF' SIZE 102400KDATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF' SIZE 12288KDATAFILE 'C:\ORADATA\ORA817\TOOLS02.DBF' SIZE 102400KTEMPFILE 'C:\ORADATA\ORA817\TEMP01.DBF' SIZE 204800K

Page 37: Sql for dbaspresentation

Errata♦ Tablespace to File relationship correct, but not in

proper order for SQL statement– Proper order of lines in command is missing– We will use columns to sort…but suppress the printing

♦ Still missing storage/extent management clauses…– Later addition…don’t want to clutter up the statements

just yet

♦ Statement contains an error

Page 38: Sql for dbaspresentation

SQL*Plus Commands♦ COLUMN

– noprint♦ SET

– sqlprompt– pagesize– feedback

Page 39: Sql for dbaspresentation

COLUMN♦ The CREATE TABLESPACE line needs to

be associated with DATAFILE line♦ COLUMN command can be used to

suppress printing– COLUMN column_name NOPRINT– Size of column will be factored in to

LINESIZE

Page 40: Sql for dbaspresentation

COLUMNselect tablespace_name ts_name,'CREATE '||

decode(contents, 'TEMPORARY', 'TEMPORARY ',NULL)||’TABLESPACE ‘||tablespace_name

sql_commandfrom dba_tablespacesunionselect tablespace_name ts_name, 'DATAFILE '||chr(39)||

file_name||chr(39)||' SIZE '||to_char(bytes/1024)||'K' sql_command

from dba_data_filesunionselect tablespace_name ts_name,'TEMPFILE '||chr(39)||file_name

||chr(39)||' SIZE '||to_char(bytes/1024)||'K' sql_commandfrom dba_temp_files;

Page 41: Sql for dbaspresentation

COLUMN

TS_NAME SQL_COMMAND

------- -------------------------------------------------------

SYSTEM CREATE TABLESPACE SYSTEM

SYSTEM DATAFILE 'C:\ORADATA\ORA817\SYSTEM01.DBF' SIZE 280576K

TEMP CREATE TEMPORARY TABLESPACE TEMP

TEMP TEMPFILE 'C:\ORADATA\ORA817\TEMP01.DBF' SIZE 204800K

TEMP2 CREATE TEMPORARY TABLESPACE TEMP2

TEMP2 DATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF' SIZE 102400K

TOOLS CREATE TABLESPACE TOOLS

TOOLS DATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF' SIZE 12288K

TOOLS DATAFILE 'C:\ORADATA\ORA817\TOOLS02.DBF' SIZE 102400K

Page 42: Sql for dbaspresentation

COLUMN Formatting

SQL> COLUMN ts_name NOPRINT

SQL> /

SQL_COMMAND

-------------------------------------------------------

CREATE TABLESPACE SYSTEM

DATAFILE 'C:\ORADATA\ORA817\SYSTEM01.DBF' SIZE 280576K

CREATE TEMPORARY TABLESPACE TEMP

TEMPFILE 'C:\ORADATA\ORA817\TEMP01.DBF' SIZE 204800K

CREATE TEMPORARY TABLESPACE TEMP2

DATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF' SIZE 102400K

CREATE TABLESPACE TOOLS

DATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF' SIZE 12288K

DATAFILE 'C:\ORADATA\ORA817\TOOLS02.DBF' SIZE 102400K

Page 43: Sql for dbaspresentation

Formatting Output♦ Supress all non-sql statement strings♦ SET

– PAGESIZE 0 – suppress all breaks, headings, etc.

– FEEDBACK OFF – suppress ’10 Rows Returned’ message

– SQLPROMPT “” – removes SQL> prompt• Be careful…it may look like the command hangs

Page 44: Sql for dbaspresentation

Formatting Output

SQL> col ts_name noprintSQL> set pagesize 0 feedback off sqlprompt ""/CREATE TABLESPACE SYSTEMDATAFILE 'C:\ORADATA\ORA817\SYSTEM01.DBF' SIZE 280576KCREATE TEMPORARY TABLESPACE TEMPTEMPFILE 'C:\ORADATA\ORA817\TEMP01.DBF' SIZE 204800KCREATE TEMPORARY TABLESPACE TEMP2DATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF' SIZE 102400KCREATE TABLESPACE TOOLSDATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF' SIZE 12288KDATAFILE 'C:\ORADATA\ORA817\TOOLS02.DBF' SIZE 102400K

Page 45: Sql for dbaspresentation

OOPS♦ DBA_TABLESPACES.CONTENTS lists

contents, but not type of file…– Each command creates a TEMPORARY

tablespace, but the file specs are not the same!CREATE TABLESPACE TEMPORARY <name> TEMPFILE <name> <specs>

CREATE TABLESPACE <name> TEMPORARY DATAFILE <name> <specs>

♦ Multiple data or temp files must be separated by a comma

Page 46: Sql for dbaspresentation

Proper Syntax for TEMPORARYselect tablespace_name ts_name,

'CREATE TABLESPACE '||tablespace_name||

decode(contents,'TEMPORARY',' TEMPORARY',NULL) sql_commandfrom dba_tablespaceswhere tablespace_name in (select tablespace_name from dba_data_files)unionselect tablespace_name ts_name,

'CREATE '||decode(contents,'TEMPORARY','TEMPORARY ',NULL)||

’TABLESPACE ‘|| tablespace_name sql_commandfrom dba_tablespaceswhere tablespace_name in (select tablespace_name from dba_temp_files)unionselect tablespace_name ts_name,

'DATAFILE '||chr(39)||file_name||chr(39)||' SIZE '||

to_char(bytes/1024)||'K' sql_commandfrom dba_data_filesunionselect tablespace_name ts_name,

'TEMPFILE '||chr(39)||file_name||chr(39)||' SIZE '||to_char(bytes/1024)||'K' sql_command

from dba_temp_files

Page 47: Sql for dbaspresentation

Proper Syntax for TEMPORARYCREATE TABLESPACE SYSTEM

DATAFILE 'C:\ORADATA\ORA817\SYSTEM01.DBF' SIZE 280576K

CREATE TEMPORARY TABLESPACE TEMP

TEMPFILE 'C:\ORADATA\ORA817\TEMP01.DBF' SIZE 204800K

CREATE TABLESPACE TEMP2 TEMPORARY

DATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF' SIZE 102400K

CREATE TABLESPACE TOOLS

DATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF' SIZE 12288K

DATAFILE 'C:\ORADATA\ORA817\TOOLS02.DBF' SIZE 102400K

Page 48: Sql for dbaspresentation

Proper Syntax for Multiple FilesCREATE TABLESPACE <tsname>

DATAFILE <filename> <filespecs>,

<filename> <filespecs>

♦ Where can the comma go?– After the file specs OR– Before the next file name

• Logic easier for 2nd choice

♦ File order is not important– Each file has a numeric ID– Skip the file with the lowest ID

Page 49: Sql for dbaspresentation

Proper Syntax for Multiple Files

♦ Add file_id as a column and sort by it♦ While we are at it…add sql_sort column to

insure proper order of statements♦ Current Sort Order

– tablespace_name– ts_sort (each part of union has a new value)– sql_sort (file_id or derived value)

Page 50: Sql for dbaspresentation

Proper Syntax for Multiple Filesselect tablespace_name ts_name, 0 ts_sort, 0 sql_sort,

<create tablespace line>

union

select tablespace_name ts_name, 1 ts_sort, file_id sql_sort

<datafile line>

union

select tablespace_name ts_name, 1 ts_sort, file_id sql_sort

<tempfile line>

union

select tablespace_name ts_name, 2 ts_sort, 0 sql_sort

<storage line>

order by ts_name, ts_sort, sql_sort;

Page 51: Sql for dbaspresentation

Multiple Filesselect df.tablespace_name ts_name, 1 ts_sort, file_id

sql_sort,

decode(df.file_id,tfi.min_file_id,'DATAFILE ',

', ')||chr(39)||df.file_name||chr(39)||

' SIZE '||to_char(df.bytes/1024)||'K'sql_command

from dba_data_files df,

(select tablespace_name t_name, min(file_id)min_file_id

from dba_data_files

group by tablespace_name) tfi

where df.tablespace_name = tfi.t_name

and tablespace_name != 'SYSTEM'

♦ Because we are sorting on file_id, we know that the ‘first’ file will be the first displayed

Page 52: Sql for dbaspresentation

Proper Output (with columns)TS_NAME TS SQL SQL_COMMAND

------- ---- ----- ------------------------------------------------------------

TEMP 0 0 CREATE TEMPORARY TABLESPACE TEMP

TEMP 1 1 TEMPFILE 'C:\ORADATA\ORA817\TEMP01.DBF' SIZE 204800K

TEMP2 0 0 CREATE TABLESPACE TEMP2 TEMPORARY

TEMP2 1 4 DATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF' SIZE 102400K

TOOLS 0 0 CREATE TABLESPACE TOOLS

TOOLS 1 5 DATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF' SIZE 12288K

TOOLS 1 10 , 'C:\ORADATA\ORA817\TOOLS02.DBF' SIZE 102400K

Page 53: Sql for dbaspresentation

Proper Output (without columns)CREATE TEMPORARY TABLESPACE TEMP

TEMPFILE 'C:\ORADATA\ORA817\TEMP01.DBF' SIZE 204800K

CREATE TABLESPACE TEMP2 TEMPORARY

DATAFILE 'C:\ORADATA\ORA817\TEMP201.DBF' SIZE 102400K

CREATE TABLESPACE TOOLS

DATAFILE 'C:\ORADATA\ORA817\TOOLS01.DBF' SIZE 12288K

, 'C:\ORADATA\ORA817\TOOLS02.DBF' SIZE 102400K

Page 54: Sql for dbaspresentation

What’s Next?♦ Extent Management & Storage Clause

– Dictionary Extent Management is default, no need to specify

– DEFAULT STORAGE and LOCAL extent management are mutually exclusive

♦ Interesting notes…– Not all Tablespaces have NEXT defined– Not all Tablespaces have MAXEXTENTS defined– What else may be NULL?

Page 55: Sql for dbaspresentation

Extent Management & Storage

♦ Extent Management can be– LOCAL

• AUTOALLOCATE• UNIFORM SIZE

– DICTIONARY• default…no need to specify

Page 56: Sql for dbaspresentation

Dictionary Extent ManagementCASE WHEN ts.extent_management = 'DICTIONARY'

THEN 'DEFAULT STORAGE ('||

decode(ts.initial_extent, NULL, NULL,

' INITIAL '||to_char(ts.initial_extent/1024)||'K')||

decode(ts.next_extent, NULL, NULL,

' NEXT'||to_char(ts.next_extent/1024)||'K')||

decode(ts.min_extents, NULL, NULL,

' MINEXTENTS '||to_char(ts.min_extents))||

decode(ts.max_extents, NULL, NULL,

' MAXEXTENTS '||to_char(ts.max_extents))||

decode(ts.pct_increase, NULL, NULL,

' PCTINCREASE'||to_char(ts.pct_increase))||');‘

Page 57: Sql for dbaspresentation

Local Extent Management

♦ Allocation type and the command are not the same!

WHEN ts.extent_management = 'LOCAL'

THEN 'EXTENT MANAGEMENT LOCAL '||

CASE WHEN ts.allocation_type = 'SYSTEM'

THEN 'AUTOALLOCATE;'

WHEN ts.allocation_type = 'UNIFORM'

THEN 'UNIFORM SIZE '||

to_char(ts.initial_extent/1024)||'K;'

END

Page 58: Sql for dbaspresentation

Storage Clause/Extent ManagmentOEM_REPOSITORY EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

TEMP EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10240K;

TEMP2 DEFAULT STORAGE ( INITIAL 40K

NEXT 40K

MINEXTENTS 1

PCTINCREASE 50);

TOOLS DEFAULT STORAGE ( INITIAL 32K

NEXT 32K

MINEXTENTS 1

MAXEXTENTS 4096

PCTINCREASE 0);

Page 59: Sql for dbaspresentation

Spooling Output♦ SPOOL <filename>♦ SPOOL OFF♦ SPOOL command will overwrite the file if

is exists…and not even ask you “Are You Sure?”– be careful not to SPOOL

<sql_filename>…you’ll lose your work

Page 60: Sql for dbaspresentation

Complete Script

♦ Complete script is attached at the end♦ Has been tested in 8.1.7 and 9.0.1 on

Win2K♦ Still room for improvement and missing

clauses…– Same script was very simple in 7.3!

Page 61: Sql for dbaspresentation

Notes & Addendum♦ Formatting not always exact

– Especially Line Spacing♦ Verify all scripts with new versions and

features– Data Dictionary structure and data can change

between releases