Bo's Oracle Station

查看: 3734|回复: 4

性能调优活动总结帖

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2017-12-28 19:32:20 | 显示全部楼层 |阅读模式
  1. select  substr(t.table_name,3,1),count(*)    from dba_tables t where  t.tablespace_name='SYSAUX'
  2.                              and t.table_name  like 'WR_$\_%' escape '\'
  3.                              group by substr(t.table_name,3,1);
复制代码
Screenshot.png

基线和自适应告警:

Screenshot-1.png

Screenshot-2.png


Screenshot-3.png

优化器统计信息:
  1. select  t.num_rows ,t.table_name
  2. from dba_tables t
  3. where t.owner='HR' and t.table_name  in ('T04209_UNAME','T_BIG');

  4. begin
  5.    dbms_stats.gather_table_stats(ownname => 'HR',
  6.    tabname => 'T04209_UNAME');
  7. end;

  8. select  t.num_rows ,t.table_name
  9. from dba_tables t
  10. where t.owner='HR' and t.table_name  in ('T04209_UNAME','T_BIG');

  11. begin
  12.    dbms_stats.gather_table_stats(ownname => 'HR',
  13.    tabname => 'T_BIG');
  14. end;


  15. select * from dba_tab_col_statistics tcs
  16.   where tcs.owner='HR' and tcs.table_name='T_BIG';
  17.   
  18.    begin
  19.    dbms_stats.gather_table_stats(ownname => 'HR',
  20.    tabname => 'T_BIG',
  21.    method_opt=>'for columns  type size 9  for all columns size auto');
  22. end;
  23.   
  24.   select * from dba_tab_col_statistics tcs
  25.   where tcs.owner='HR' and tcs.table_name='T_BIG';
  26.   
  27.   
  28.      begin
  29.    dbms_stats.gather_table_stats(ownname => 'HR',
  30.    tabname => 'T_BIG',
  31.    method_opt=>'for columns  type size 9  for all columns size auto',
  32.    estimate_percent=> dbms_stats.auto_sample_size);
  33. end;

  34.       begin
  35.    dbms_stats.gather_table_stats(ownname => 'HR',
  36.    tabname => 'T_BIG',
  37.    method_opt=>'for columns  type size 9  for all columns size auto',
  38.    estimate_percent=> 100);
  39. end;

  40. begin
  41.    dbms_stats.gather_table_stats(ownname => 'HR',
  42.    tabname => 'T_BIG',
  43.    method_opt=>'for all columns size auto',
  44.    estimate_percent=> 100);
  45. end;
复制代码

个性收集dbms_stats.gather_database_stats/dbms_stats.gather_schema_stats
  1. select dbms_stats.get_prefs(pname => 'STALE_PERCENT')
  2.   from dual;
  3.   
  4.   begin
  5.      dbms_stats.set_table_prefs(ownname => 'HR',tabname => 'T_BIG',
  6.      pname => 'STALE_PERCENT',pvalue => 13);
  7.    end;
  8.    
  9.    select dbms_stats.get_prefs(pname => 'STALE_PERCENT',ownname => 'HR',
  10.    tabname => 'T_BIG')
  11.   from dual;
  12.   
  13.   select  * from dba_tab_stat_prefs;
复制代码
设置pending stats:
  1. select dbms_stats.get_prefs(pname => 'PUBLISH')
  2.   from dual;
  3.   
  4.   select  * from dba_tab_pending_stats;
  5.   
  6.   begin
  7.      dbms_stats.set_table_prefs(ownname => 'HR',tabname => 'T_BIG',
  8.      pname => 'PUBLISH',pvalue => 'FALSE');
  9.    end;
  10.    
  11.      select dbms_stats.get_prefs(pname => 'PUBLISH',ownname => 'HR',
  12.    tabname => 'T_BIG')
  13.   from dual;
  14.   
  15.   select  * from dba_tab_stat_prefs;
  16.   
  17.   begin
  18.      dbms_Stats.gather_table_stats('HR','T_BIG');
  19.     end;
  20.    
  21.       select  * from dba_tab_pending_stats;
  22.       
  23.       begin
  24.          dbms_stats.publish_pending_stats(ownname => 'HR',
  25.          tabname => 'T_BIG');
  26.        end;
复制代码

Screenshot.png

SQL Access Advisor快速调优通道:
  1. SQL> conn / as sysdba
  2. Connected.
  3. SQL> select  type , count(*)  from hr.t_big
  4.   2  group by  type;

  5. TYPE               COUNT(*)
  6. ------------ ----------
  7. PROCEDURE          10151
  8. PACKAGE          228607
  9. PACKAGE BODY         344031
  10. LIBRARY             189
  11. TYPE BODY           3903
  12. TRIGGER           18708
  13. FUNCTION           1955
  14. JAVA SOURCE             68
  15. TYPE                  25575

  16. 9 rows selected.

  17. SQL>
复制代码
  1. select  * from dba_indexes i
  2. where i.table_owner='HR' and i.table_name='T_BIG';

  3. select   t.num_rows ,t.last_analyzed  from dba_tables t
  4. where t.owner='HR' and t.table_name='T_BIG';

  5. begin
  6.    dbms_advisor.quick_tune(advisor_name => 'SQL Access Advisor',
  7.    task_name => 'MYQ1',attr1 => 'select  type , count(*)  from hr.t_big group by  type',
  8.    template => 'SQLACCESS_OLTP');
  9. end;
  10.   

  11. begin
  12.    dbms_advisor.quick_tune(advisor_name => 'SQL Access Advisor',
  13.    task_name => 'MYQ2',attr1 => 'select  type , count(*)  from hr.t_big group by  type',
  14.    template => 'SQLACCESS_WAREHOUSE');
  15. end;
复制代码

Screenshot.png

  1. select  * from dba_Tables t
  2. where t.tablespace_name='TBSUTF8_11G';

  3. insert into hr.TUTF8_11G  select  * from hr.TUTF8_11G  where rownum < 100000;

  4. select  count(*) from  hr.TUTF8_11G;

  5. select  * from dba_outstanding_alerts;

  6. select  * from dba_alert_history  ah
  7.   order by ah.time_suggested desc;
  8.   
  9.   truncate table hr.tutf8_11g;
复制代码
  1. declare
  2.   v1  number;
  3. begin
  4. dbms_application_info.set_module(module_name=>'AP',action_name=>'APACTION');
  5. select  count(*)  into v1 from t_big a , t_big b;
  6. end;
  7. /
复制代码

Screenshot.png


  1. select  s.HASH_VALUE , s.ADDRESS    from v_$sql  s ;

  2. begin
  3.     dbms_shared_pool.keep('00000001D1E4D160,70647824','C');
  4.   end;
复制代码

Screenshot.png

PGA使用直方图(0趟,1趟,多趟)
  1. select  * from V$PGA_TARGET_ADVICE_HISTOGRAM;
复制代码

  1. select * from V$SYS_TIME_MODEL;

  2. select  * from V$SYSTEM_WAIT_CLASS;
复制代码

图形界面上的快照在哪里?
  1. select  * from dba_hist_ash_snapshot;

  2. select * from dba_hist_snapshot;
复制代码
  1. [root@station90 ~]# su - oracle
  2. [oracle@station90 ~]$ sqlplus /nolog

  3. SQL*Plus: Release 11.2.0.1.0 Production on Sat May 30 15:13:48 2015

  4. Copyright (c) 1982, 2009, Oracle.  All rights reserved.

  5. SQL> conn hr/oracle_4U
  6. ERROR:
  7. ORA-28002: the password will expire within 5 days


  8. Connected.
  9. SQL> create table t05318_chain(a varchar2(2000), b varchar2(2000), c varchar2(2000), d varchar2(2000));

  10. Table created.

  11. SQL> insert into t05318_chain(a) values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');

  12. 1 row created.

  13. SQL> commit;

  14. Commit complete.

  15. SQL> update t05318_chain  set b='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';

  16. 1 row updated.

  17. SQL> commit;

  18. Commit complete.

  19. SQL> update t05318_chain set c='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';

  20. 1 row updated.

  21. SQL> commit;

  22. Commit complete.

  23. SQL> select dbms_rowid.rowid_block_number ( rowid ) from t05318_chain;

  24. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
  25. ------------------------------------
  26.                                  559

  27. SQL> select  * from CHAINED_ROWS;
  28. select        * from CHAINED_ROWS
  29.                *
  30. ERROR at line 1:
  31. ORA-00942: table or view does not exist


  32. SQL> @?/rdbms/admin/utlchain.sql

  33. Table created.

  34. SQL> set linesize 1000
  35. SQL> select  * from CHAINED_ROWS;

  36. no rows selected

  37. SQL> analyze table t05318_chain list chained rows;

  38. Table analyzed.

  39. SQL> select  * from CHAINED_ROWS;

  40. no rows selected

  41. SQL> update t05318_chain set d='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';

  42. 1 row updated.

  43. SQL> commit;

  44. Commit complete.

  45. SQL> select dbms_rowid.rowid_block_number ( rowid ) from t05318_chain;

  46. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
  47. ------------------------------------
  48.                                  559

  49. SQL> analyze table t05318_chain list chained rows;

  50. Table analyzed.

  51. SQL> select  * from CHAINED_ROWS;

  52. OWNER_NAME                       TABLE_NAME                      CLUSTER_NAME                     PARTITION_NAME                    SUBPARTITION_NAME                   HEAD_ROWID              ANALYZE_TIMESTAMP
  53. ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------ ------------------
  54. HR                               T05318_CHAIN                                                                                    N/A                            AAASOPAAEAAAAIvAAA 30-MAY-15

  55. SQL> truncate table CHAINED_ROWS;

  56. Table truncated.

  57. SQL> select  * from CHAINED_ROWS;

  58. no rows selected

  59. SQL> analyze table t05318_chain list chained rows;

  60. Table analyzed.

  61. SQL> select  * from CHAINED_ROWS;

  62. OWNER_NAME                       TABLE_NAME                      CLUSTER_NAME                     PARTITION_NAME                    SUBPARTITION_NAME                   HEAD_ROWID              ANALYZE_TIMESTAMP
  63. ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------ ------------------
  64. HR                               T05318_CHAIN                                                                                    N/A                            AAASOPAAEAAAAIvAAA 30-MAY-15

  65. SQL> truncate table CHAINED_ROWS;

  66. Table truncated.

  67. SQL> select  * from CHAINED_ROWS;

  68. no rows selected

  69. SQL> alter table t05318_chain  move tablspace tbs16k;
  70. alter table t05318_chain  move tablspace tbs16k
  71.                                *
  72. ERROR at line 1:
  73. ORA-14133: ALTER TABLE MOVE cannot be combined with other operations


  74. SQL> alter table t05318_chain  move tablespace tbs16k;

  75. Table altered.

  76. SQL> analyze table t05318_chain list chained rows;

  77. Table analyzed.

  78. SQL> select  * from CHAINED_ROWS;

  79. no rows selected

  80. SQL> create table t05318_migrate( a varchar2(2000))  pctfree 0;

  81. Table created.

  82. SQL> show user
  83. USER is "HR"
  84. begin
  85.    for i in 1..733
  86.    loop
  87.       insert into  t05318_migrate values('A');
  88.     end loop;
  89.     commit;
  90.   7  end;
  91.   8  /

  92. PL/SQL procedure successfully completed.

  93. SQL> select  dbms_rowid.rowid_block_number(rowid) , count(*)  from t05318_migrate
  94.   2   group by dbms_rowid.rowid_block_number(rowid);

  95. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
  96. ------------------------------------ ----------
  97.                                  559            733

  98. SQL> begin
  99.   2    for i in 1..100
  100.   3    loop
  101.   4      insert into  t05318_migrate values('B');
  102.   5    end loop;
  103.   6    commit;
  104.   7  end;
  105.   8  /

  106. PL/SQL procedure successfully completed.

  107. SQL> select  dbms_rowid.rowid_block_number(rowid) , count(*)  from t05318_migrate
  108.   2    group by dbms_rowid.rowid_block_number(rowid);

  109. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
  110. ------------------------------------ ----------
  111.                                  555            100
  112.                                  559            733

  113. SQL> delete from t05318_migrate where A='B';

  114. 100 rows deleted.

  115. SQL> commit;

  116. Commit complete.

  117. SQL> select  dbms_rowid.rowid_block_number(rowid) , count(*)  from t05318_migrate
  118.   2    group by dbms_rowid.rowid_block_number(rowid);

  119. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
  120. ------------------------------------ ----------
  121.                                  559            733

  122. SQL> analyze table t05318_migrate  list chained rows;

  123. Table analyzed.

  124. SQL> select  * from chained_rows;

  125. no rows selected

  126. SQL> update t05318_migrate set a=''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
  127. ERROR:
  128. ORA-00972: identifier is too long


  129. SQL> update t05318_migrate set a='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' where rownum=1;

  130. 1 row updated.

  131. SQL> commit;

  132. Commit complete.

  133. SQL> analyze table t05318_migrate  list chained rows;

  134. Table analyzed.

  135. SQL> select  * from chained_rows;

  136. OWNER_NAME                       TABLE_NAME                      CLUSTER_NAME                     PARTITION_NAME                    SUBPARTITION_NAME                   HEAD_ROWID              ANALYZE_TIMESTAMP
  137. ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------ ------------------
  138. HR                               T05318_MIGRATE                                                                                    N/A                            AAASOUAAEAAAAIvAAA 30-MAY-15

  139. SQL> select  dbms_rowid.rowid_block_number(rowid) , count(*)  from t05318_migrate
  140.   2   group by dbms_rowid.rowid_block_number(rowid);

  141. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
  142. ------------------------------------ ----------
  143.                                  559            733

  144. SQL> alter table T05318_MIGRATE move tablespace users;

  145. Table altered.

  146. SQL> select  dbms_rowid.rowid_block_number(rowid) , count(*)  from t05318_migrate
  147.   2   group by dbms_rowid.rowid_block_number(rowid);

  148. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
  149. ------------------------------------ ----------
  150.                                  588            185
  151.                                  587            548

  152. SQL> alter table T05318_MIGRATE  pctfree 20;

  153. Table altered.

  154. SQL>  alter table T05318_MIGRATE move tablespace users;

  155. Table altered.

  156. SQL> select  dbms_rowid.rowid_block_number(rowid) , count(*)  from t05318_migrate
  157.   2   group by dbms_rowid.rowid_block_number(rowid);

  158. DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
  159. ------------------------------------ ----------
  160.                                  555            402
  161.                                  556            331

  162. SQL> truncate table chained_rows;

  163. Table truncated.

  164. SQL> analyze table T05318_MIGRATE list chained rows;

  165. Table analyzed.

  166. SQL> select  * from chained_rows;

  167. no rows selected

  168. SQL>

复制代码
  1. Oracle11gR2的表压缩特性通过压缩表中的数据以减少对空间的占用。Oracle11gR2支持三种不同的压缩方式:
  2. ·        支持直接路径加载的Basic压缩方式(10x)
  3. ·        支持针对所有DML操作的OLTP压缩方式(2-4x)
  4. ·        Exadata专属的Hybrid columnar compression压缩方式

  5.     Oracle公司建议我们采用以上三种不同的压缩方式,针对特定的应用场合来进行表压缩。如果该表包含大量冗长的和重复的值,通过被压缩可以减少该表对磁盘空间的占用和对SGA中数据库缓冲区缓存的占用。
  6. 先从图形界面入手,我们发现在新建表空间时Oracle11gR2的界面出现压缩选项:
  7. 在 下面各个部分所有的实验中我们都创建两个表:一个表在TBS_NOCOMPRESSION表空间,另一个表在有对应默认压缩选项的表空间。最后我们把在 TBS_NOCOMPRESSION表空间上的那个表转换成对应压缩选项表。通过对比实验来弄清Oracle11gR2这方面的新特性。
  8. --sys--
  9. create tablespace tbs_nocompression datafile size 10M autoextend on;
  10. create tablespace tbs_basic datafile size 10M autoextend on default compress basic;
  11. create tablespace tbs_oltp datafile size 10M autoextend on default compress for oltp;
  12. create tablespace tbs_query datafile size 10M autoextend on default compress for query;
  13. create tablespace tbs_archive datafile size 10M autoextend on default compress for archive;
  14. select  t.tablespace_name, t.def_tab_compression, t.compress_for  from dba_tablespaces t
  15. where t.tablespace_name in ('TBS_NOCOMPRESSION',
  16.                                                   'TBS_BASIC', 'TBS_OLTP',
  17.                                                    'TBS_QUERY',
  18.                                                    'TBS_ARCHIVE');
  19. --hr--                                                   
  20. create table t_nocompression (a varchar2(200)) tablespace tbs_nocompression;
  21. create table t_basic (a varchar2(200)) tablespace tbs_basic;
  22. create table t_oltp (a varchar2(200)) tablespace tbs_oltp;
  23. --hr-error--
  24. create table t_query (a varchar2(200)) tablespace tbs_query;
  25. create table t_archive (a varchar2(200)) tablespace tbs_archive;  
  26. --hr--
  27. begin
  28.    for i in 1..400
  29.    loop
  30.       insert into t_nocompression values('AAAAAAAAAAAAAAAAAAAA');
  31.    end loop;
  32.    commit;
  33. end;
  34. --hr--
  35. begin
  36.    for i in 1..400
  37.    loop
  38.       insert into t_basic values('AAAAAAAAAAAAAAAAAAAA');
  39.    end loop;
  40.    commit;
  41. end;
  42. --hr--
  43. begin
  44.    for i in 1..400
  45.    loop
  46.       insert into t_oltp values('AAAAAAAAAAAAAAAAAAAA');
  47.    end loop;
  48.    commit;
  49. end;  
  50. --hr--
  51. select  t.TABLE_NAME, t.PCT_FREE , t.COMPRESSION , t.COMPRESS_FOR, t.TABLESPACE_NAME
  52. from user_tables t where t.TABLE_NAME   in ('T_NOCOMPRESSION','T_BASIC','T_OLTP');
  53. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_nocompression  group by  substr(rowid, 10, 6 );
  54. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_basic  group by  substr(rowid, 10, 6 );      
  55. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_oltp  group by  substr(rowid, 10, 6 );  
  56. --sys--
  57. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid)
  58.       from hr.T_NOCOMPRESSION  group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid);
  59. --sys--
  60. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC',row_id => rowid)
  61.       from hr.T_BASIC group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC',row_id => rowid);
  62. --sys--      
  63. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_OLTP',row_id => rowid)
  64.       from hr.T_OLTP group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_OLTP',row_id => rowid);
  65. --hr--      
  66. create table t_basic2 (a varchar2(200)) tablespace tbs_nocompression compress;
  67. create table t_oltp2 (a varchar2(200)) tablespace tbs_nocompression compress for oltp;
  68. --hr-error--
  69. create table t_query2 (a varchar2(200)) tablespace tbs_nocompression compress for query;
  70. create table t_archive2 (a varchar2(200)) tablespace tbs_nocompression compress for archive;     
  71. --hr--
  72. select  t.TABLE_NAME, t.PCT_FREE , t.COMPRESSION , t.COMPRESS_FOR, t.TABLESPACE_NAME
  73. from user_tables t where t.TABLE_NAME   in ('T_NOCOMPRESSION','T_BASIC','T_OLTP',  'T_BASIC2','T_OLTP2' );
  74. --hr--
  75. begin
  76.    for i in 1..400
  77.    loop
  78.       insert into t_basic2 values('AAAAAAAAAAAAAAAAAAAA');
  79.    end loop;
  80.    commit;
  81. end;
  82. --hr--
  83. begin
  84.    for i in 1..400
  85.    loop
  86.       insert into t_oltp2 values('AAAAAAAAAAAAAAAAAAAA');
  87.    end loop;
  88.    commit;
  89. end;
  90. --hr--
  91. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_basic2  group by  substr(rowid, 10, 6 );
  92. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_oltp2  group by  substr(rowid, 10, 6 );
  93. --sys--
  94. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC2',row_id => rowid)
  95.       from hr.T_BASIC2 group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC2',row_id => rowid);
  96. --sys--      
  97. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_OLTP2',row_id => rowid)
  98.       from hr.T_OLTP2 group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_OLTP2',row_id => rowid);
  99. --hr--
  100. alter table t_nocompression compress for oltp;
  101. select  t.TABLE_NAME, t.PCT_FREE , t.COMPRESSION , t.COMPRESS_FOR, t.TABLESPACE_NAME
  102. from user_tables t where t.TABLE_NAME   in ('T_NOCOMPRESSION','T_BASIC','T_OLTP',  'T_BASIC2','T_OLTP2' );
  103. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_nocompression  group by  substr(rowid, 10, 6 );     
  104. --sys--
  105. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid)
  106.    from hr.T_NOCOMPRESSION  group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid);   
  107. --hr--
  108. begin
  109.    for i in 1..400
  110.    loop
  111.       insert into t_nocompression values('AAAAAAAAAAAAAAAAAAAA');
  112.    end loop;
  113.    commit;
  114. end;
  115. --hr--
  116. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_nocompression  group by  substr(rowid, 10, 6 );
  117. --sys--
  118. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid)
  119.       from hr.T_NOCOMPRESSION  group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid);
  120. --hr--
  121. alter table t_nocompression move tablespace tbs_nocompression;
  122. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_nocompression  group by  substr(rowid, 10, 6 );   
  123. --sys--
  124. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid)
  125.       from hr.T_NOCOMPRESSION  group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_NOCOMPRESSION',row_id => rowid);
  126. --hr--
  127. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_basic  group by  substr(rowid, 10, 6 );  
  128. insert /*+ append */ into t_basic select  * from  t_basic;
  129. commit;
  130. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_basic  group by  substr(rowid, 10, 6 );
  131. --sys--
  132. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC',row_id => rowid)
  133.       from hr.T_BASIC group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC',row_id => rowid);
  134. --hr--
  135. alter table t_basic move tablespace  TBS_NOCOMPRESSION;
  136. select  count(*)  , substr(rowid, 10, 6 ) from hr.t_basic  group by  substr(rowid, 10, 6 );      
  137. --sys--
  138. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC',row_id => rowid)
  139.       from hr.T_BASIC group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC',row_id => rowid);
  140. --sys-evolution--
  141. drop table hr.t_basic_big;
  142. create table hr.t_basic_big compress as select  * from dba_source;
  143. --sys-advisor--
  144. declare
  145.   v_blkcnt_cmp number;
  146.   v_blkcnt_uncmp  number;
  147.   v_row_cmp number;
  148.   v_row_uncmp number;
  149.   v_cmp_ratio number;
  150.   v_comptype_str  varchar2(200);
  151. BEGIN
  152. DBMS_COMPRESSION.GET_COMPRESSION_RATIO(scratchtbsname => 'USERS',
  153.                                                                                              ownname =>'HR',
  154.                                                                                              tabname =>'T_BASIC_BIG',
  155.                                                                                              partname =>null,
  156.                                                                                              comptype => 2,
  157.                                                                                              blkcnt_cmp => v_blkcnt_cmp,
  158.                                                                                              blkcnt_uncmp =>  v_blkcnt_uncmp,
  159.                                                                                              row_cmp =>v_row_cmp,
  160.                                                                                              row_uncmp => v_row_uncmp,
  161.                                                                                              cmp_ratio =>  v_cmp_ratio,
  162.                                                                                              comptype_str =>v_comptype_str);                                                  
  163. DBMS_OUTPUT.PUT_LINE('Blk count compressed = ' || v_blkcnt_cmp);
  164. DBMS_OUTPUT.PUT_LINE('Blk count uncompressed = ' || v_blkcnt_uncmp);
  165. DBMS_OUTPUT.PUT_LINE('Row count per block compressed = ' || v_row_cmp);
  166. DBMS_OUTPUT.PUT_LINE('Row count per block uncompressed = ' || v_row_uncmp);
  167. DBMS_OUTPUT.PUT_LINE('ratio: '||v_cmp_ratio);
  168. DBMS_OUTPUT.PUT_LINE('Compression type = ' || v_comptype_str);
  169. end;
  170. --输出--
  171. Blk count compressed = 1785
  172. Blk count uncompressed = 2340
  173. Row count per block compressed = 68
  174. Row count per block uncompressed = 51
  175. ratio: 1.31092436974789915966386554621848739496
  176. Compression type = "Compress For OLTP"
  177. --OLTP压缩一下表--
  178. 验证表大小

  179. --sys--
  180. select   count(*)  ,    dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC_BIG',row_id => rowid)
  181.       from hr.T_BASIC_BIG group by     dbms_compression.get_compression_type(ownname => 'HR',tabname => 'T_BASIC_BIG',row_id => rowid);  
  182. --hr--
  183. create table t_basic_col( a  number , b varchar2(20))  compress ;
  184. insert into t_basic_col values ( 1,'A') ;
  185. commit;
  186. create table t_oltp_col( a  number , b varchar2(20))  compress  for oltp;
  187. insert into t_oltp_col values ( 1,'A') ;
  188. commit;
  189. select  * from  t_basic_col;
  190. select  * from t_oltp_col;
  191. alter table  t_basic_col drop column b;
  192. alter table  t_basic_col drop ( b);
  193. alter table t_oltp_col drop column b;
  194. select  * from t_oltp_col;

复制代码


  1. create or replace trigger trgocp11_limit
  2. after suspend
  3. on database
  4.   declare
  5.   v_size number;
  6.    pragma AUTONOMOUS_TRANSACTION;
  7. begin
  8.   select  BYTES into v_size from dba_data_files where FILE_ID=10;
  9.   execute immediate 'alter database datafile 10 resize '||to_char(v_size+10485760);
  10.   commit;
  11. end;
复制代码

回复

使用道具 举报

9

主题

40

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2018-1-3 15:30:59 | 显示全部楼层
我们的活动圆满结束啦。

老师辛苦了。。。
回复 支持 反对

使用道具 举报

5

主题

7

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2018-1-4 11:42:45 | 显示全部楼层
老师辛苦啦
回复 支持 反对

使用道具 举报

9

主题

40

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2018-1-8 09:15:09 | 显示全部楼层
老师,dual这个表到底是做啥用的呀,貌似你上课初始阶段的时候,有简单说一下,太久不接触,忘记了。

昨天碰到一个序列号的问题,又遇到了这个表。
回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
 楼主| 发表于 2018-1-9 12:05:28 来自手机 | 显示全部楼层
测函数用的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-3-29 05:44 , Processed in 0.044102 second(s), 27 queries .

快速回复 返回顶部 返回列表