SQL Task G
SQL Task G
SQL Task G
Institution’s Name
Course and Code ID
Tutor’s Name
The Date of Submission
1. SQL commands to ALTER a table, add a column, lengthen a column,
shorten a column,
change a data type for a column from NUMBER to CHAR and then
CHAR to NUMBER.
Alter Table
SQL> Alter table Student
2 Add ThirdName varchar 2(20);
Lengthen a column:
SQL> Alter table Student
2 Modify Second Name varchar 2(30) NOT NULL ;
Table altered
Shortena column :
SQL> Alter table Student
2 Modify Address varchar 2(15) NOT NULL ;
Table altered
Change data type : Char ¿ Number
SQL> Alter table Student
2 Modify Address Number (15)NOT NULL ;
Table altered
Change data type : Number ¿ Char
SQL> Alter table Student
2 Modify Age varchar 2(15) NOT NULL ;
Table altered
2.Commands to create another table like an existing one but without one
column. Then load the
data from the old to the new table. Then reestablish referential integrity. Then
drop the old table
and rename the new one.
UPDATE Student
SET new Student ID=¿ char (Student ID);
ALTERTABLE Student
DROP COLUMN Student ID ;
ALTERTABLE Student ;
RENAME COLUMN newStudentID ¿ StudentID ;
1. Another table created like the first one with the exception of the “Third Name” field.
The primary key name changed
SQL>create table STUDENT
2¿
3 FIRSTNAME VARCHAR 2(20),
4 LASTNAME VARCHAR 2 ( 20 ) ,
6AGE NUMBER (5)
5 ADDRESS VARCHAR 2(40) ,
6 ZIPCODE CHAR( 25) ,
7 constraint pk ¿ primarykey (STUDENTID )
$ AllArgs=@ ¿
' /quiet ' , /database2:model , /include:StaticData , /scriptfile:$MyBuildFile\$MyDatabase.sql ¿
if (Test−Path $MyBuildFile\$MyDatabase.sql){Remove−item $MyBuildFile\$MyDatabase.sql }
¿ $ SQLCompare $ AllArgs
if ($ ? ){' Script generated successfully ' }
else {we had an error! (code $LASTEXITCODE) }
testDate date,
testInteger ∫ ,
declare @testElapsedTime∫ ¿ 0
begin transaction
−−start the outer loop
while @testRun≤@numberOfTests
begin
set @iteration=1
set @testStartTime=getdate ()
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−¿
−−the command below is part of my test
−−end of code
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−¿
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−¿
−−the command below is part of my test
insert into dbo . testPerformance values(getdate( ), round(rand ( )∗1000,0),' testString ')
−−end of code
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−¿
−−commit after 1000 inserts ,this can be adjusted ¿ see how the performance is affected
if (@iteration % 1000=0)
begin
commit
begin transaction
end
end
set @testEndTime=getdate( )
select
@ overallStartTime as OverallStartTime ,
@ overallEndTime as OverallEndTime ,
datediff (ms , @overallStartTime ,@ overallEndTime) as OverallElapsedTime ,
@totalElapsedTime /cast (@numberOfTests as float )as AverageElapsedTime
go
6 . Scripts ¿ capture dynamic performance statistics.
7. A matrix with the results of the performance testing that was done as a
DBA.
select CheckDate , cntr value as PageLifeExpectancy
¿ CheckDate BETWEEN ' 2018−04−16 13 :10 :00 '∧' 2018−04−16 13 :33 :00 '
order by ID desc
select
CheckDate ,
REPLACE ¿
CONVERT (VARCHAR(100) , value¿ ),' . ' , ' , '
¿ as BatchRequestsPerSec
¿ dbo . BlitzFirstResults PerfmonStats
¿ CheckDate BETWEEN ' 2018−04−16 13 :10 :00 '∧' 2018−04−16 13 :33 :00 '
order by ID desc
select
CheckDate , instance name , valuedelta as AverageWaitTimeMs
¿ dbo . BlitzFirstResults PerfmonStats
where counter name=' Average Wait Time(ms) '
¿ instance name≠' Total '
¿ CheckDate BETWEEN ❑2 018−04−16 13: 10 :00 ' ∧❑' 2 018−04−16 13 :33: 00'
'
select
CheckDate , value delta as AverageWaitTimeMs
¿ dbo . BlitzFirstResults PerfmonStats
where counter name=' Average Wait Time(ms) '
¿ instance name=' Total '
¿ CheckDate BETWEEN ' 2018−04−16 13 :10 :00 '∧' 2018−04−16 13 :33 :00
8. A script to create a small table with 3 rows for recovery testing.
9. Backup and recovery commands for Recovery testing using export/import
and RMAN
utilities
backup database customer db ¿
disk=' E :¿ ¿ ¿ ¿ trn'
RMAN >run {
allocate channel disk 1 device type disk ;
backup database plus archivelog;
}
11. Include explanations for what happened during the recovery when
import vs. RMAN was
used.
13. Scripts that could be used to monitor the health of the database (status,
space, invalid
objects, and other statistics).
Check Status
¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿
¿ ckinstance . ksh ¿
¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿
ORATAB=¿ var /opt /oracle/ oratab
echo `date`
echo Oracle Database(s) Status `hostname` :\n
db= egrep−i:Y|:N $ ORATAB∨cut−d :−f 1∨grep−v \#∨grep−v \*
pslist=`ps -ef | grep pmon`
for i∈ $ db ; do
echo $pslist∨grep ora_pmon_$i>¿ dev /null 2> $ 1
if (( $ ?));then
echo Oracle Instance - $i: Down
else
echo Oracle Instance - $i: Up
fi
done
ˇ
Space
¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿
¿ ck tbsp . sh ¿
¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿
¿ ! /bin /ksh
sqlplus−s ≪!
oracle /$ 1 @ $ 2
set feed off
set linesize 100
set pagesize 200
spooltablespace . alert
SELECT F . TABLESPACENAME ,
¿CHAR ((T .TOTAL SPACE −F . FREE SPACE ), ' 999,999 ') USED (MB) ,
¿CHAR ( F . FREESPACE , ' 999,999 ' )FREE (MB) ,
¿CHAR (T . TOTAL SPACE , ' 999,999 ' )TOTAL (MB) ,
¿CHAR (( ROUND (( F . FREE SPACE /T . TOTALSPACE )∗100)), ' 999 ')∨¿' % ' PER FREE
¿¿
SELECT TABLESPACENAME ,
ROUND ¿
¿ V ¿ PARAMETER
WHERE NAME=' db¿
¿ FREE SPACE
¿ DBA ¿
GROUP BY TABLESPACE NAME
¿ F,
¿
SELECT TABLESPACE NAME ,
ROUND( ∑ ( BYTES /1048576))TOTAL SPACE
¿ DBA ¿
GROUP BY TABLESPACE NAME
¿T
WHERE F .TABLESPACE NAME=T . TABLESPACE NAME
¿( ROUND (( F . FREE SPACE /T . TOTAL SPACE )∗100))<10 ;
spool off
exit
!
if [ cat tablespace . alert ∨wc−l −¿ 0]
then
cat tablespace . alert −ltablespace . alert >tablespace . tmp
mailx −s TABLESPACE ALERT for $\{2\} $ DBALIST <tablespace . tmp
fi
Invalid objects
¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿
¿ invalid ¿ . sh ¿
¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿¿ ¿
¿ ! /bin/ksh
./ etc /oracle . profile
sqlplus−s ≪!
oracle /$ 1 @ $ 2
set feed off
set heading off
column object name format a 30
spoolinvalid object . alert
SELECT OWNER , OBJECT NAME ,OBJECT TYPE , STATUS
¿ DBA OBJECTS
WHERE STATUS=' INVALID '
ORDER BY OWNER ,OBJECT TYPE , OBJECT NAME ;
spool off
exit
!
if [ cat invalid object . alert ∨wc−l −¿ 0]
then
mailx−s INVALID OBJECTS for $\{2\} $ DBALIST <invalid object . alert
fi
$ cat invalid object . alert
14. Sample output from statistics queries.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
SYSTEM 2,047203 2,250 9 %
STBS 01302 25327 8 %
STBS 02241 11252 4 %
STBS 03233 19 252
16. Scripts used to create end-users. Including create, access, grant privileges.
sudo mysql
mysql -u root -p
18. Scripts used to query all_objects views for reverse engineering exercise.
Output from reverse
engineering queries.
SELECT
t . name ASTriggerName
, t . parent ¿
, t . type AS TrigerType
, t . create date AS TriggerCreateDate
, t . modifydate AS TriggerModifyDate
, t . isdisabled AS TriggerIsDisabled
, t . is¿ AS TriggerInsteadOfTrigger
, t . is¿ AS TriggerIsMSShipped
, t . is¿
, s . name AS SchenaName
, ob . name AS ObjectName
, ob . typedesc AS ObjectTypeDesc
, ob . type AS ObjectType
, sm .[ DEFINITION ] AS ' Trigger script '
¿ sys. triggers AS t−−sys. server triggers
SELECT
SCHEMA NAME (tab . schemaid ) AS [schemaname ]
, pk . [name ] AS pk name
, ic .index ¿ AS column id
¿ pk .is¿ =1
INNER JOIN sys .index columns AS ic
ON ic . object id =pk . object id
¿ ic .index id = pk .index id
, t .[name] AS[TypeName]
, col .[max length ] AS[TypeMaxLength]