Review Questions – Chapter 6
| 
1.  | 
Which of the following statements
  will succeed?  
 
using
  (select product_id, language_id 
             ,translated_name 
from
  products_for_2003) p2003 
where
  (p.product_id = p2003.product_id) 
when
  matched then update 
set
  p.language=p2003.language_id 
   ,p.translated_name = p2003.translated_name 
when
  not matched then insert 
   (p.product_id, p.language_id 
    ,p.translated_name) 
   values (p2003.product_id,p2003.language_id 
          ,p2003.translated_name); 
 
using
  (select product_id, language_id 
             ,translated_name 
from
  products_for_2003) p2003 
on
  (p.product_id = p2003.product_id) 
when
  matched then update 
set
  p.language=p2003.language_id 
   ,p.translated_name = p2003.translated_name 
when
  not matched then insert 
   (p.product_id, p.language_id 
    ,p.translated_name) 
   values (p2003.product_id,p2003.language_id 
          ,p2003.translated_name); 
 
using
  (select product_id, language_id 
             ,translated_name 
from
  products_for_2003) p2003 
join
  on (p.product_id = p2003.product_id) 
when
  matched then update 
set
  p.language=p2003.language_id 
   ,p.translated_name = p2003.translated_name 
when
  not matched then insert 
   (p.product_id, p.language_id 
    ,p.translated_name) 
   values (p2003.product_id,p2003.language_id 
          ,p2003.translated_name); 
A.    Statement 1 
B.    Statement 2 
C.    Statement 3 
D.   They all fail. | ||||||
| 
2.  | 
Which of the following statements
  will not implicitly begin a transaction?  
A.    INSERT  
B.    UPDATE  
C.    DELETE  
D.   SELECT FOR UPDATE
   
E.    None of the
  above; they all implicitly begin a transaction. | ||||||
| 
3.  | 
If Julio executes a LOCK TABLE IN
  SHARE ROW EXCLUSIVE MODE statement, with which of the following statements
  will Marisa not wait for Julio's commit or rollback?  
A.    INSERT  
B.    SELECT FOR UPDATE
   
C.    LOCK TABLE IN
  SHARE MODE  
D.   LOCK TABLE IN
  EXCLUSIVE MODE  
E.    None of the above;
  all will wait. | ||||||
| 
4.  | 
Which of the following statements
  does not end a transaction?  
A.    LOCK TABLE IN
  EXCLUSIVE MODE  
B.    COMMIT  
C.    ALTER USER  
D.   CREATE INDEX  | ||||||
| 
5.  | 
Choose the maximum number of tables
  into which rows can be inserted via a single INSERT statement.  
A.    1 
B.    2 
C.    No more than 16 
D.   Unlimited | ||||||
| 
6.  | 
Can you execute an ALTER INDEX
  REBUILD while there are uncommitted updates on a table?  
A.    No, it will
  always fail with a resource busy error. 
B.    Yes, but you must
  specify the keyword WAIT to wait for the commit or rollback. 
C.    Yes, the row
  exclusive locks from the UPDATE statements only block other changes to the
  same rows. 
D.   Yes, but only if
  the updates do not change the indexed columns. | ||||||
| 
7.  | 
Which of the following statements
  will begin a transaction using transaction-level read consistency?
   
A.    ALTER SESSION USE
  TRANSACTION CONSISTENCY;  
B.    BEGIN TRANSACTION
  USING TRANSACTION CONSISTENCY;  
C.    BEGIN
  SERIALIZABLE TRANSACTION;  
D.   SET TRANSACTION
  ISOLATION LEVEL SERIALIZABLE;  | ||||||
| 
8.  | 
Which of the following statements will
  improve the performance of a full-table scan on the PROCESS_ORDER_STAGE
  table?  
A.    DELETE FROM
  process_order_stages;  
B.    TRUNCATE TABLE
  process_order_stage;  
C.    CREATE INDEX
  ord_idx2 ON process_order_stage (customer_id);  
D.   ALTER SESSION SET
  hash_area_size 16613376;  | ||||||
| 
9.  | 
The following table shows two
  concurrent transactions. What happens at time point 9?  |  | |||||
| 
Session
  A
   | 
Time  | 
Session
  B
   |  | ||||
| 
UPDATE
  customers SET 
region='H'
  WHERE 
state='43'
  and 
county='046'; | 
6 |  | |||||
|  | 
7 | 
UPDATE
  customers 
SET
  mgr=4567 
WHERE
  state='47' and 
county='072'; | |||||
| 
UPDATE
  customers SET 
region='H'
  WHERE 
state='47'
  and 
county='072'; | 
8 |  | |||||
|  | 
9 | 
UPDATE
  customers 
SET
  mgr=4567 
WHERE
  state='43' and 
county='046'; | |||||
| 
A.    Session B will
  wait for session A to commit or roll back. 
B.    Session A will
  wait for session B to commit or roll back. 
C.    A deadlock will
  occur, and both sessions will hang until the DBA kills one or until one of
  the users cancels their statement. 
D.   A deadlock will
  occur, and Oracle will cancel one of the statements. 
E.    Both sessions are
  not updating the same column, so no waiting or deadlocks will occur. |  | ||||||
| 
10.  | 
The following table shows two
  concurrent transactions. Which statement about the result returned in session
  A at time point 16 is most true?  | ||||||
| 
Session
  A
   | 
Time  | 
Session
  B
   | |||||
| 
SELECT
  SUM(deposit_amt) 
FROM
  transaction_log 
WHERE
  deposit_date > 
TRUNC(SYSDATE); | 
12 |  | |||||
|  | 
13 | 
INSERT
  INTO transaction_log 
(deposit_date,
  deposit_amt) 
VALUES
  (SYSDATE, 6247.00); | |||||
|  | 
14 | 
COMMIT;  | |||||
| 
Table scan for
  the active SELECT reaches the data block where session B's row was inserted. | 
15 |  | |||||
| 
Table scan
  complete results returned. | 
16 |  | |||||
| 
A.    The results would
  include the changes committed by transaction B at time point 14. 
B.    The results would
  not include the changes committed by transaction B at time point 14. 
C.    The results would
  include the changes committed by transaction B at time point 14 if the two
  sessions were connected to the database as the same user. 
D.   Session A would
  raise a "snapshot too old" exception. | |||||||
| 
11.  | 
The following table shows two
  concurrent transactions. Which statement about the results returned in
  session A at time points 16 and 18 is most true?  | ||||||
| 
Session
  A
   | 
Time  | 
Session
  B
   | |||||
| 
SET
  TRANSACTION ISOLATION 
LEVEL
  READ CONSISTENT; | 
11 |  | |||||
| 
SELECT
  SUM(deposit_amt) 
FROM
  transaction_log 
WHERE
  deposit_date > 
TRUNC(SYSDATE); | 
12 |  | |||||
|  | 
13 | 
INSERT
  INTO transaction_log 
(deposit_date,
  deposit_amt) 
VALUES
  (SYSDATE, 6247.00); | |||||
|  | 
14 | 
COMMIT;  | |||||
| 
Table scan for
  the active SELECT reaches the data block where session B's row was inserted. | 
15 |  | |||||
| 
Table scan
  complete, results returned. | 
16 |  | |||||
| 
SELECT
  SUM(deposit_amt) 
FROM
  transaction_log 
WHERE
  deposit_date > 
TRUNC(SYSDATE); | 
17 |  | |||||
| 
Table scan complete,
  results returned. | 
18 |  | |||||
| 
A.    The results would
  be identical. 
B.    The results would
  be different. 
C.    The results would
  be identical only if the two sessions were connected to the database as the
  same user. 
D.   Both statements
  would include the data committed by transaction B at time point 14. | |||||||
| 
12.  | 
The following table shows two
  concurrent transactions. Which statement about the results returned in
  session A at time point 16 and 18 is most true?  | ||||||
| 
Session
  A
   | 
Time  | 
Session
  B
   | |||||
| 
SET
  TRANSACTION ISOLATION 
LEVEL
  SERIALIZABLE; | 
11 |  | |||||
| 
SELECT
  SUM(deposit_amt) 
FROM
  transaction_log 
WHERE
  deposit_date > 
TRUNC(SYSDATE); | 
12 |  | |||||
|  | 
13 | 
INSERT
  INTO transaction_log 
(deposit_date,
  deposit_amt) 
VALUES
  (SYSDATE, 6247.00); | |||||
|  | 
14 | 
COMMIT;  | |||||
| 
Table scan for
  the active SELECT reaches the data block where session B's row was inserted. | 
15 |  | |||||
| 
Table scan
  complete results returned. | 
16 |  | |||||
| 
SELECT
  SUM(deposit_amt) 
FROM
  transaction_log 
WHERE
  deposit_date > 
TRUNC(SYSDATE); | 
17 |  | |||||
| 
Table scan complete
  results returned. | 
18 |  | |||||
| 
A.    The results would
  be identical. 
B.    The results would
  be different. 
C.    The results would
  be identical only if the two sessions were connected to the database as the
  same user. 
D.   Both statements
  would include the data committed by transaction B at time point 14. | |||||||
| 
13.  | 
You have a DELETE statement that
  will generate a large amount of undo. One rollback segment, named RB_LARGE,
  is larger than the others. How would you force the use of this rollback
  segment for the DELETE operation?  
A.    ALTER SESSION USE
  ROLLBACK SEGMENT rb_large;  
B.    SET TRANSACTION
  USE ROLLBACK SEGMENT rb_large;  
C.    BEGIN WORK USING
  ROLLBACK SEGMENT rb_large  
D.   You cannot force
  the use of a specific rollback segment. | ||||||
| 
14.  | 
The following table describes the
  DEPARTMENTS table.  | ||||||
| 
Column
  Name
   | 
dept_id | 
dept_name | 
mgr_id | 
location_id | |||
| 
Key Type  | 
pk |  |  |  | |||
| 
NULLs/Unique  | 
NN |  |  |  | |||
| 
FK Table  |  |  |  |  | |||
| 
Datatype  | 
NUMBER | 
VARCHAR2 | 
NUMBER | 
NUMBER | |||
| 
Length  | 
4 | 
30 | 
6 | 
4 | |||
| 
Default Value  | 
None | 
None | 
None | 
None | |||
| 
Which of the
  following INSERT statements will raise an exception? 
 
id) 
VALUES(280,'Security',1700); 
 
VALUES(280,'Security',1700); 
 
VALUES(280,'Corporate
  Giving',266,1700); 
D.   None of these
  statements will raise an exception. | |||||||
| 
15.  | 
The SALES table contains the
  following data:  
SELECT
  channel_id, COUNT(*) 
FROM
  sales 
WHERE
  channel_id IN ('T','I') 
GROUP
  BY channel_id; 
C   COUNT(*) 
-
  ---------- 
T     12000 
I     24000 
How many rows
  will be inserted into the NEW_CHANNEL_SALES table with the following SQL
  statement? 
INSERT
  FIRST 
 WHEN channel_id ='C' THEN 
   INTO
  catalog_sales (prod_id,time_id,promo_id 
                       ,amount_sold) 
       VALUES
  (prod_id,time_id,promo_id,amount_sold) 
 WHEN channel_id ='I' THEN 
   INTO internet_sales
  (prod_id,time_id,promo_id 
                        ,amount_sold) 
       VALUES
  (prod_id,time_id,promo_id,amount_sold) 
 WHEN 
  channel_id IN ('I','T') THEN 
   INTO new_channel_sales
  (prod_id,time_id,promo_id 
                           ,amount_sold) 
       VALUES
  (prod_id,time_id,promo_id,amount_sold) 
SELECT
  channel_id,prod_id,time_id,promo_id,amount_sold 
FROM
  sales; 
A.    0 
B.    12,000 
C.    24,000 
D.   36,000 | ||||||
| 
16.  | 
How many rows will be counted in
  the last SQL statement that follows?  
SELECT
  COUNT(*) FROM emp; 
  120 returned 
INSERT
  INTO emp (emp_id) 
   VALUES (140); 
SAVEPOINT
  emp140; 
INSERT
  INTO emp (emp_id) 
   VALUES (141); 
INSERT
  INTO emp (emp_id) 
   VALUES (142); 
INSERT
  INTO emp (emp_id) 
   VALUES (143); 
TRUNCATE
  TABLE emp; 
INSERT
  INTO emp (emp_id) 
   VALUES (144); 
ROLLBACK; 
SELECT
  COUNT(*) FROM emp; 
A.    121 
B.    1 
C.    0 
D.   143 | ||||||
| 
17.  | 
Which of the following statements
  will raise an exception in a transaction that starts with SET TRANSACTION
  READ ONLY?  
A.    ALTER SYSTEM  
B.    SELECT  
C.    ALTER USER  
D.   SET ROLE  | ||||||
| 
18.  | 
Which of the following statements
  will raise an exception?  
A.    LOCK TABLE SALES
  IN EXCLUSIVE MODE;  
B.    LOCK TABLE SALES
  IN ROW SHARE EXCLUSIVE MODE;  
C.    LOCK TABLE SALES
  IN SHARE ROW EXCLUSIVE MODE;  
D.   LOCK TABLE SALES
  IN ROW EXCLUSIVE MODE;  | ||||||
| 
19.  | 
Which of the following INSERT
  statements will raise an exception?  
 
EMP
  SELECT * FROM NEW_EMP; 
 
SELECT
  * FROM NEW_EMP; 
 
SELECT
  * FROM NEW_EMP; | ||||||
| 
20.  | 
What will the salary of employee
  Arsinoe be at the completion of the following SQL statements?  
UPDATE
  emp 
  SET salary = 1000 
  WHERE name = 'Arsinoe'; 
SAVEPOINT
  Point_A 
UPDATE
  emp 
  SET salary = salary * 1.1 
  WHERE name = 'Arsinoe'; 
SAVEPOINT
  Point_B; 
UPDATE
  emp 
  SET salary = salary * 1.1 
  WHERE name = 'Berenike'; 
SAVEPOINT
  point_C; 
ROLLBACK
  TO SAVEPOINT point_b; 
COMMIT; 
UPDATE
  emp 
  SET salary = 1500 
  WHERE name = 'Arsinoe'; 
SAVEPOINT
  point_d; 
ROLLBACK
  TO point_d; 
COMMIT; 
A.    1000 
B.    1100 
C.    1111 
D.   1500 | ||||||
Answers
| 
1.  | 
B. The correct syntax uses an ON
  clause as in option B. The WHERE in option A and the JOIN ON clause in option
  C are not valid.  | 
| 
2.  | 
E. If a transaction is not
  currently open, any INSERT, UPDATE, MERGE, DELETE, SELECT FOR UPDATE, or LOCK
  statement will implicitly begin a transaction.  | 
| 
3.  | 
B. The row share exclusive mode
  will block other share, exclusive, and row exclusive locks, but not row share
  locks.  | 
| 
4.  | 
A. COMMIT, ROLLBACK, and any DDL
  statement ends a transaction—DDL is automatically committed. LOCK TABLE is
  DML, like INSERT, UPDATE, DELETE, or MERGE, and requires a commit or
  rollback.  | 
| 
5.  | 
D. A single INSERT statement can
  insert data into an unlimited number of tables. This multiple-table insert
  capability is new in Oracle9i.  | 
| 
6.  | 
A. The row exclusive locks from the
  update will block all DDL, including DDL on the indexes—it does not matter
  which columns the index is on. You cannot specify WAIT on DDL.  | 
| 
7.  | 
D. Transaction-level consistency is
  obtained with a serializable isolation level. An isolation level of read
  committed identifies statement-level read consistency.  | 
| 
8.  | 
B. A TRUNCATE operation will reset
  the high-water mark on a table, so when a full-table scan (that scans to the
  high-water mark) is executed against the table, it will run very fast. Delete
  operations do not affect the high-water mark or full-scan performance.
  Indexes and hash_area_size do not affect full-scan performance.  | 
| 
9.  | 
D. At time point 8, session A will
  wait for session B. At time point 9, a deadlock will occur; Oracle will
  recognize it and cancel one of the statements. Oracle locks to the
  granularity of a row, so even though the columns are different, the locks
  will still block each other.  | 
| 
10.  | 
B. Statement-level read consistency
  would ensure that the data visible to each statement does not change while
  the statement is executing. The "snapshot too old" exception might
  be raised if there were a lot of other transactions committing to the
  database between time points 12 and 16, but if this exception were raised,
  the table scan would neither complete nor return results.  | 
| 
11.  | 
B. The read-consistent isolation
  level is statement-level read consistency, so each statement sees the
  committed data that existed at the beginning of the statement. The committed
  data at time point 17 includes session B's commit at time point 14.
   | 
| 
12.  | 
A. The serializable isolation level
  is transaction-level read-consistency, so both of session A's SELECT
  statements see the same data image. Neither would include the changes
  committed at time point 14.  | 
| 
13.  | 
B. The SET TRANSACTION statement
  can be used to force the use of a specific rollback segment, provided that
  the SET TRANSACTION statement begins the transaction.  | 
| 
14.  | 
B. Option B will raise an exception
  because there are not enough column values for the implicit column list (all
  columns).  | 
| 
15.  | 
A. The FIRST clause tells Oracle to
  execute only the first WHEN clause that evaluates to TRUE. This statement
  will insert 24,000 rows into the INTERNET_SALES table and 0 rows into the
  NEW_CHANNEL_ SALES table. If the ALL clause were used, 36,000 rows would be
  inserted into the NEW_CHANNEL_SALES table.  | 
| 
16.  | 
C. The TRUNCATE statement is DDL
  and performs an implicit commit. After the TRUNCATE statement, there are 0
  rows in the table. The one row that was inserted was removed when the
  ROLLBACK statement was executed.  | 
| 
17.  | 
C. A read-only transaction will
  raise an exception if data is changed. Altering a user will change data.
   | 
| 
18.  | 
B. There are five types of table
  locks: row share, row exclusive, share, share row exclusive, and exclusive.
  Row share exclusive mode does not exist.  | 
| 
19.  | 
B. The keywords INSERT INTO are
  required in single-table INSERT statements, but are not valid in
  multiple-table INSERT statements.  | 
| 
20.  | 
D. The final rollback (to point_d)
  will roll the changes back to just after setting the salary to 1500.
   | 
 
No comments:
Post a Comment