您的位置:首页 > 其它

OCP 1Z0 052 3

2014-06-05 16:07 176 查看
3. While observing the index statistics, you find that an index is highly fragmented, thereby resulting in

poor database performance. Which option would you use to reduce fragmentation without affecting the

users who are currently using the index?

A.Validate the index structure using the ANALYZE...INDEX command.

B.Rebuild the index using the ALTER INDEX..REBUILD ONLINE command.

C.Change the block space utilization parameters using the ALTER INDEX command.

D.Deallocate the unused space in the index using the ALTER INDEX..DEALLOCATE UNUSED command.

Answer: B

A anylyze 是分析,不能减少碎片

B 重建索引如果不加online会要求表级锁

SQL> DROP TABLE TEST
2  /
Table dropped
Executed in 0.047 seconds
SQL> CREATE TABLE TEST AS SELECT * FROM Dba_Objects
2  /
Table created
Executed in 1.829 seconds
SQL> DECLARE
2    v_date    DATE := SYSDATE + 6 / 24 / 60 / 60;
3    v_seconds INT;
4  BEGIN
5    dbms_scheduler.create_job(job_name   => 'TEST_JOB',
6                              job_type   => 'PLSQL_BLOCK',
7                              job_action => 'DECLARE
8      V_DATE DATE := SYSDATE + 10 / 24 / 60 / 60;
9    BEGIN
10        UPDATE TEST SET created = created + 1 where rownum <= 1;
11      LOOP
12        EXIT WHEN SYSDATE >= V_DATE;
13      END LOOP;
14      COMMIT;
15    END;',
16                              start_date => SYSDATE,
17                              enabled    => TRUE,
18                              auto_drop  => TRUE);
19
20    LOOP
21      SELECT max(extract(SECOND FROM elapsed_time))
22        INTO v_seconds
23        FROM dba_scheduler_running_jobs
24       WHERE job_name = upper('TEST_JOB');
25      EXIT WHEN SYSDATE >= v_date OR v_seconds >= 2;
26    END LOOP;
27  END;
28  /
PL/SQL procedure successfully completed
Executed in 1.547 seconds
SQL> SELECT job_name
2    FROM dba_scheduler_running_jobs
3   WHERE job_name = upper('TEST_JOB')
4  /
JOB_NAME
------------------------------
TEST_JOB
1 row selected
Executed in 0.016 seconds
SQL> create index idx_test on test(object_id)
2  /
create index idx_test on test(object_id)
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired


SQL> DECLARE
2    v_date    DATE := SYSDATE + 6 / 24 / 60 / 60;
3    v_seconds INT;
4  BEGIN
5    dbms_scheduler.create_job(job_name   => 'TEST_JOB',
6                              job_type   => 'PLSQL_BLOCK',
7                              job_action => 'DECLARE
8      V_DATE DATE := SYSDATE + 10 / 24 / 60 / 60;
9    BEGIN
10        UPDATE TEST SET created = created + 1 where rownum <= 1;
11      LOOP
12        EXIT WHEN SYSDATE >= V_DATE;
13      END LOOP;
14      COMMIT;
15    END;',
16                              start_date => SYSDATE,
17                              enabled    => TRUE,
18                              auto_drop  => TRUE);
19
20    LOOP
21      SELECT max(extract(SECOND FROM elapsed_time))
22        INTO v_seconds
23        FROM dba_scheduler_running_jobs
24       WHERE job_name = upper('TEST_JOB');
25      EXIT WHEN SYSDATE >= v_date OR v_seconds >= 2;
26    END LOOP;
27  END;
28  /
PL/SQL procedure successfully completed
Executed in 1.532 seconds
SQL> SELECT job_name
2    FROM dba_scheduler_running_jobs
3   WHERE job_name = upper('TEST_JOB')
4  /
JOB_NAME
------------------------------
TEST_JOB
1 row selected
Executed in 0.031 seconds
SQL> create index idx_test on test(object_id) online
2  /
Index created
Executed in 8.078 seconds
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: