Question

In: Computer Science

Simulate a problem with undo. You will need to be connected as user SYSTEM or some...

Simulate a problem with undo. You will need to be connected as user

SYSTEM or some other user to whom you have granted the DBA role.

.

Create an undo tablespace with a single datafile of only 200 KB. Do not set the file to autoextend.

.

Set the database to use this small undo tablespace. Confirm that an undo

segment has been created in this tablespace and that it is online by querying

the views DBA_ROLLBACK_SEGS and V$ROLLSTAT.

Why do you think that only one undo segment was created?

.

Create an empty table based on the ALL OBJECTS view with this statement:

create table undotest as select * from all_objects where 1=2;

.

Populate this table with the contents of the ALL OBJECTS view:

insert into undotest select * from all_objects ;

.

The statement will fail with an error "ORA-30036: unable to extend segment by 8 in undo tablespace."

Query the new table, and you will find that it is still empty. Why is this?

.

Adjust the undo tablespace's datafile to autoextend, and attempt to insert the contents of the ALL_OBJECTS view into the new table. This time, the insertion will succeed. Find out how many blocks of undo are needed to support the transaction so far by querying V$TRANSACTION as well as how big the new datafile is by querying V$DATAFILE.

.

Delete every row in the new table and then repeat the queries against V$TRANSACTION and V$DATAFILE.

You will see that the deletion generated many more blocks of undo and required a much larger extension of the undo

datafile than the insertion. Why is this?

.

Tidy up by switching back to the original undo tablespace and then dropping the test table and tablespace

.

(3) Include in the assignments all queries and their results that you execute in this part. Also include your answers to the questions written in italic thought the exercise.

Solutions

Expert Solution

1- creating undo table space- (I am taking random name- UNDO_TEST)-

create undo tablespace UNDO_TEST datafile '/path/to/your/dbf/file/xyz.dbf' size 200K;

Now, you can be use autoextend off manually to be reassured about it-

ALTER DATABASE DATAFILE /path/to/your/dbf/file/xyz.dbf' AUTOEXTEND OFF;

2- Now, let us set our new undo tablespace to use by database, we can switch between undo tablesspaces because this is a dynamic variable. Use below query to do this-

ALTER SYSTEM SET UNDO_TABLESPACE = UNDO_TEST;

Now, you can query DBA_ROLLBACK_SEGS to know about your rollback segments-

select segment_name, segment_id,status from DBA_ROLLBACK_SEGS;

3- Query-

create table undotest as select * from all_objects where 1=2;

4- insert into undotest select * from all_objects ;

5- This query will fail because we have set autoextend to off. If we set it on or we increase size then our query will run fine as it will get proper space to insert logs.

6- write a simple select query against both view to see the desired output-

select file,blocks,checkpoint_time,status from V$DATAFILE;

7- deletion will take more blocks than insertion for sure. Because if you want to insert something then undo action would be deletion, for that you only need to store rowid of record. But if you want to perform deletion then undo action will be insertion again, for that we need whole record. Hence deletion generates more number of blocks.

8- Use below command to switch back to original table space. After firing below command, wait until everything rollbacks properly. (note originalTS is just a reference, you can give from your database.)

Alter System SET Undo_Tablespace=originalTS;

drop table undotest; //to drop table

drop tablespace UNDO_TEST; //to delete table space


Related Solutions

For the following commands you must be logged in as user “system”. You will need to...
For the following commands you must be logged in as user “system”. You will need to do some research on the commands CREATE USER; GRANT CREATE SESSION; GRANT CREATE…..; GRANT ALTER …., GRANT SELECT….; REVOKE ……; and EXECUTE ….. 5. Create two database users:  The first is a concatenation of your first and last name (e.g. johndoe).  The second is a concatenation of your instructors first and last name (e.g. sallysmith) 6. Assign the two users privileges to...
Define a java problem with user input, user output, Do While Statement and some mathematical computation....
Define a java problem with user input, user output, Do While Statement and some mathematical computation. Write the pseudocode, code and display output.
This is in java, thank you! Problem2: In this problem you ask the user for a...
This is in java, thank you! Problem2: In this problem you ask the user for a month and day. You will then calculate the season based on the month and day. Create a class named Problem2 Create two integer instance variables, month and day. Create a constructor to initialize the both variables. The constructor should accept two arguments as parameters, m and d. Initialize the instance variables with these two values. Create a method called calcSeason. It should not have...
// JavaLanguage . You need to write a program that asks the user for an array...
// JavaLanguage . You need to write a program that asks the user for an array size, and then asks the user to enter that many integers. Your program will then print out the sum , average, largest and smallest of the values in the array.
Problem 1: Simulating Blackjack In this problem we will use classes and functions to simulate a...
Problem 1: Simulating Blackjack In this problem we will use classes and functions to simulate a simplified game of Blackjack (21). The game begins with a standard deck of 52 playing cards (no jokers). Each player is dealt two cards to start with. The winner of a hand of Blackjack is the player whose hand has the highest value without going over 21. When calculating the value of a hand, we add up the rank of each card in the...
n this assignment, you will need to code a Web page that will allow a user...
n this assignment, you will need to code a Web page that will allow a user to enter their first and last names and indicate how many pets they have, if any. If they have pets, the user will be able to list up to three of their names. You will code validations on some of the fields and display error messages on the page when a field does not pass the validation test. If all the data entered is...
Coding in C++: For this verse, you need to write a program that asks the user...
Coding in C++: For this verse, you need to write a program that asks the user to input the inventory id number (integer) and the price (float) for 5 inventory items. Once the 5 inventory items are input from the user, output the results to the screen. Please ensure you use meaningful names for your variables. If your variables are not named meaningfully, points will be deducted.
Simulate using MATLAB and compare the BER of a 64-PSK system and a 64-QAM system with...
Simulate using MATLAB and compare the BER of a 64-PSK system and a 64-QAM system with Grey coding and Eb/No = 0, 2, 4, 6, 8, 10 dB. Must provide MATLAB code.
I need some assistance with the following assignment: Cron is a system daemon running in the...
I need some assistance with the following assignment: Cron is a system daemon running in the background helping you schedule and execute tasks such as system backups. In this lab you will learn how to schedule backups with user and system cron tables. Submit a report that lists the commands that you would use to accomplish the following tasks: Check the status of a cron daemon Stop and terminate a cron daemon Start and run a cron daemon Restart a...
Create a system to simulate vehicles at an intersection. Assume that there is one lane going...
Create a system to simulate vehicles at an intersection. Assume that there is one lane going in each of four directions, with stoplights facing each direction. Vary the arrival average of vehicles in each direction and the frequency of the light changes to view the “behavior” of the intersection.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT