Bo's Oracle Station

查看: 4009|回复: 0

课程第43/44/45次(2018-10-14星期日上下午,2018-10-15星期一)

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2018-10-14 09:39:08 | 显示全部楼层 |阅读模式
查看OMS的安装信息:
  1. /u01/app/oracle/product/middleware/oms/install/portlist.ini
复制代码
SYSTEM作为resource manager管理员的授权:

  1. BEGIN
  2. dbms_resource_manager_privs.grant_system_privilege(privilege_name=>'ADMINISTER_RESOURCE_MANAGER', grantee_name=>'SYSTEM', admin_option=>FALSE);
  3. END;
复制代码
CDB PLAN:
  1. DECLARE
  2. spfileValue VARCHAR2(1000);
  3. execText VARCHAR2(1000);
  4. scopeValue VARCHAR2(30) := 'MEMORY';
  5. planName VARCHAR2(100) :='DAYTIMEP';
  6. BEGIN
  7. dbms_resource_manager.clear_pending_area();
  8. dbms_resource_manager.create_pending_area();
  9. dbms_resource_manager.create_cdb_plan( plan => 'DAYTIMEP', comment => 'DAYTIMEP');
  10. dbms_resource_manager.create_cdb_plan_directive(
  11.     plan => 'DAYTIMEP',
  12.     pluggable_database => 'PDBPROD1',
  13.     comment => '',
  14.     shares => 6,
  15.     utilization_limit => 75,
  16.    parallel_server_limit => 50 );
  17. dbms_resource_manager.create_cdb_plan_directive(
  18.     plan => 'DAYTIMEP',
  19.     pluggable_database => 'PDBPROD2',
  20.     comment => '',
  21.     shares => 3,
  22.     utilization_limit => 75,
  23.    parallel_server_limit => 50 );
  24. dbms_resource_manager.create_cdb_plan_directive(
  25.     plan => 'DAYTIMEP',
  26.     pluggable_database => 'PDBPROD3',
  27.     comment => '',
  28.     shares => 1,
  29.     utilization_limit => 75,
  30.    parallel_server_limit => 50 );
  31. dbms_resource_manager.submit_pending_area();
  32. select value into spfileValue from v$parameter where name = 'spfile';
  33. IF spfileValue IS NOT NULL then
  34. EXECUTE IMMEDIATE 'alter system set resource_manager_plan = '||planName||' scope=BOTH';
  35. END IF;
  36. dbms_resource_manager.switch_plan( plan_name => 'DAYTIMEP' , sid => 'PRODCDB' );
  37. END;
复制代码
RESULT CACHE:
在PDBPROD1 数据库中,设置result cache size 15m,使用hr 登录,执行脚本8_1_1.sql,让脚本中的语句都可以使用result cache
  1. [oracle@host01 ~]$ export ORACLE_SID=PRODCDB
  2. [oracle@host01 ~]$ sqlplus / as sysdba

  3. SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 14 16:52:44 2016

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


  5. Connected to:
  6. Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
  7. With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics
  8. and Real Application Testing options

  9. SYS@PRODCDB> show pdbs

  10.     CON_ID CON_NAME                       OPEN MODE  RESTRICTED
  11. ---------- ------------------------------ ---------- ----------
  12.          2 PDB$SEED                       READ ONLY  NO
  13.          3 PDBPROD1                       READ WRITE NO
  14.          4 PDBPROD2                       MOUNTED
  15.          5 PDBPROD3                       READ WRITE NO
  16.          6 PDBPROD4                       MOUNTED
  17.          7 PDBPROD5                       MOUNTED
  18. SYS@PRODCDB>
  19. SYS@PRODCDB> show parameter result_cache_max_size

  20. NAME                                 TYPE        VALUE
  21. ------------------------------------ ----------- ----------------------------
  22. result_cache_max_size                big integer 2M
  23. SYS@PRODCDB>
  24. SYS@PRODCDB> alter system set result_cache_max_size=15m;

  25. System altered.

  26. SYS@PRODCDB> show parameter result_cache_max_size

  27. NAME                                 TYPE        VALUE
  28. ------------------------------------ ----------- ----------------------------
  29. result_cache_max_size                big integer 15M
  30. SYS@PRODCDB>
  31. SYS@PRODCDB> conn hr/hr@pdbprod1
  32. Connected.
  33. HR@pdbprod1> alter session set result_cache_mode=force;

  34. Session altered.

  35. HR@pdbprod1> @/home/oracle/scripts/8_1_1.sql

  36. DEPARTMENT_ID SUM(SALARY)
  37. ------------- -----------
  38.           100       51608
  39.            30       24900
  40.                      7000
  41.            20       19000
  42.            70       10000
  43.            90       58000
  44.           110       20308
  45.            50      156400
  46.            40        6500
  47.            80      304500
  48.            10        4400
  49.            60       28800

  50. 12 rows selected.

  51. 2 rows updated.

  52. Commit complete.

  53. DEPARTMENT_ID SUM(SALARY)
  54. ------------- -----------
  55.           100       51608
  56.            30       24900
  57.                      7000
  58.            20       19020
复制代码


登录PDBPROD1数据库的SH用户,运行脚本8_2_1.sql ,脚本中的查询,表customers的CUST_CITY,CUST_STATE_PROVINCE,COUNTRY_ID列经常一起使用。提高优化器对这些语句计算的可选择率。:
  1. select dbms_stats.create_extended_stats('SH','CUSTOMERS','(CUST_CITY,CUST_STATE_PROVINCE,COUNTRY_ID)')  
  2. from dual;
复制代码
  1. select dbms_stats.create_extended_stats('SH','CUSTOMERS','(CUST_CITY,CUST_STATE_PROVINCE,COUNTRY_ID)')  
  2. from dual;

  3. select  * from  cdb_tab_col_statistics where owner='SH' and table_name='CUSTOMERS';

  4. begin
  5.    dbms_stats.gather_table_stats('SH','CUSTOMERS',
  6.                                    estimate_percent=>100,
  7.                                    method_opt=>'for all columns size auto for columns size skewonly (CUST_CITY,CUST_STATE_PROVINCE,COUNTRY_ID)');
  8. end;


  9.   select  * from  cdb_tab_col_statistics where owner='SH' and table_name='CUSTOMERS';
复制代码
不执行SQL语句做基线:
如果一条SQL性能下降了,可以采用SPM,否则,可以使用SQL Tuning Advisor来完成性能的性能提升:
单独从SQL Tuningset中取一条语句做基线:
  1. SYS@pdbprod5>conn sys/oracle_4U@pdbprod1 as sysdba
  2. Connected.
  3. declare
  4. v_1 number;
  5. begin
  6. v_1 := dbms_spm.load_plans_from_sqlset(sqlset_name=>'STS1',basic_filter=>'sql_id=''9uwfmhuqp69up''');
  7.   5  end;
  8.   6  /

  9. PL/SQL procedure successfully completed.

  10. SYS@pdbprod1>
复制代码
执行SQL语句做基线:
Screenshot.png


索引可见鱼不可见:

  1. select table_name,column_name,index_name from user_ind_columns where table_name='PROD_INFO';
复制代码
  1. select table_name,index_name,visibility from user_indexes where table_name='PROD_INFO';
复制代码
  1. alter index IDX_PROD invisible;
复制代码
  1. create index PROD_IDX on SH.PROD_INFO(PRODUCT_ID) parallel 4 tablespace example global partition by hash(PRODUCT_ID) partitions 4;
复制代码
  1. select  *   from user_ind_columns c
  2.   where c.table_name='PRODUCTS';
  3.   
  4.   
  5. select * from user_indexes  i
  6.   where i.index_name='I1';
  7.   
  8.   alter index PRODUCTS_PROD_CAT_IX  invisible;
  9.   
  10. create index i1 on products(  PROD_CATEGORY)
  11.    parallel 4  global  partition by hash (PROD_CATEGORY)  (partition p1  tablespace users,
  12.       partition p2 tablespace example,
  13.       partition p3 tablespace users,
  14.       partition p4  tablespace example);
复制代码

要创建某个公共都能看的对象:

  1. SYS@pdbprod1> grant select on sh.sales to public;

  2. Grant succeeded.

  3. SYS@pdbprod1> create public synonym sales1 for sh.sales;
复制代码

创建物理备库:
1)    host01 主机中的PROD5 作为主库,SID 为PROD5,DB_UNIQUE_NAME 设置为PROD5H1
2)    host02 主机中的PROD5 作为备库,SID 为PROD5,DB_UNIQUE_NAME 设置为PROD5H2
3)    目录对象应该在主备库都存在
4)    可以使用如下方法连到备库,connect sys/oracle@PROD5H2 as sysdba,要dedicated 模式
5)    对主备库的全局临时表进行DML时,最小化Redo 的产生

  1. [oracle@station90 admin]$ sqlplus /nolog

  2. SQL*Plus: Release 12.1.0.2.0 Production on Sun Oct 14 16:30:45 2018

  3. Copyright (c) 1982, 2014, Oracle.  All rights reserved.

  4. @>conn / as sysdba
  5. Connected to an idle instance.
  6. SYS@PROD4>startup
  7. ORACLE instance started.

  8. Total System Global Area 1895825408 bytes
  9. Fixed Size                    2925744 bytes
  10. Variable Size                 1241516880 bytes
  11. Database Buffers          637534208 bytes
  12. Redo Buffers                   13848576 bytes
  13. Database mounted.
  14. Database opened.
  15. SYS@PROD4>archive log list
  16. Database log mode               No Archive Mode
  17. Automatic archival               Disabled
  18. Archive destination               USE_DB_RECOVERY_FILE_DEST
  19. Oldest online log sequence     17
  20. Current log sequence               19
  21. SYS@PROD4>shutdown immediate
  22. Database closed.
  23. Database dismounted.
  24. ORACLE instance shut down.
  25. SYS@PROD4>startup mount
  26. ORACLE instance started.

  27. Total System Global Area 1895825408 bytes
  28. Fixed Size                    2925744 bytes
  29. Variable Size                 1258294096 bytes
  30. Database Buffers          620756992 bytes
  31. Redo Buffers                   13848576 bytes
  32. Database mounted.
  33. SYS@PROD4>alter database archivelog ;

  34. Database altered.

  35. SYS@PROD4>show parameter temp

  36. NAME                                     TYPE         VALUE
  37. ------------------------------------ ----------- ------------------------------
  38. sec_max_failed_login_attempts             integer         3
  39. temp_undo_enabled                     boolean         FALSE
  40. SYS@PROD4>alter system set temp_undo_enabled=true;

  41. System altered.

  42. SYS@PROD4>show parameter db_name

  43. NAME                                     TYPE         VALUE
  44. ------------------------------------ ----------- ------------------------------
  45. db_name                              string         PROD4
  46. SYS@PROD4>alter system set db_name='PROD4H1';
  47. alter system set db_name='PROD4H1'
  48.                  *
  49. ERROR at line 1:
  50. ORA-02095: specified initialization parameter cannot be modified


  51. SYS@PROD4>alter system set db_name='PROD4H1' scope=spfile ;
  52. alter system set db_name='PROD4H1' scope=spfile
  53. *
  54. ERROR at line 1:
  55. ORA-32017: failure in updating SPFILE
  56. ORA-32016: parameter "db_name" cannot be updated in SPFILE


  57. SYS@PROD4>alter system set db_unique_name='PROD4H1' scope=spfile ;

  58. System altered.

  59. SYS@PROD4>alter system set db_unique_name='PROD4H1'  ;
  60. alter system set db_unique_name='PROD4H1'
  61.                  *
  62. ERROR at line 1:
  63. ORA-02095: specified initialization parameter cannot be modified


  64. SYS@PROD4>shutdown immediate
  65. ORA-01109: database not open


  66. Database dismounted.
  67. ORACLE instance shut down.
  68. SYS@PROD4>startup
  69. ORACLE instance started.

  70. Total System Global Area 1895825408 bytes
  71. Fixed Size                    2925744 bytes
  72. Variable Size                 1258294096 bytes
  73. Database Buffers          620756992 bytes
  74. Redo Buffers                   13848576 bytes
  75. Database mounted.
  76. Database opened.
  77. SYS@PROD4>alter user dbsnmp identified by oracle_4U;

  78. User altered.

  79. SYS@PROD4>alter user dbsnmp identified by oracle_4U account unlock ;

  80. User altered.

  81. SYS@PROD4>alter database force loggging;
  82. alter database force loggging
  83.                      *
  84. ERROR at line 1:
  85. ORA-02231: missing or invalid option to ALTER DATABASE


  86. SYS@PROD4>alter database force logging;

  87. Database altered.

  88. SYS@PROD4>
复制代码

Screenshot.png

1)    物理备用数据库确认收到重做,只有当它可以保证能够应用重做时:  指的是最大可用模式。

2)    当物理备用数据库接收重做超过30秒时,它应该发出告警,不论哪个数据库是备库。
3)    当redo尚未被物理备用数据库在45秒内应用,应该发出告警,无论哪个数据库是备库:
  1. DGMGRL> edit database 'PROD5H1' set property TransportLagThreshold=30;
  2. Property "transportlagthreshold" updated
  3. DGMGRL> edit database 'PROD5H2' set property TransportLagThreshold=30;
  4. Property "transportlagthreshold" updated
  5. DGMGRL>
  6. DGMGRL> edit database 'PROD5H2' set property ApplyLagThreshold=45;
  7. Property "applylagthreshold" updated
  8. DGMGRL> edit database 'PROD5H1' set property ApplyLagThreshold=45;
复制代码


创建一个序列SEQ2,用于全局临时表。它的值必须在会话级唯一,但不同会话中可以允许重复。

  1. create sequence seq2 start with 1 increment by 1 nomaxvalue session;
复制代码










回复

使用道具 举报

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

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-4-20 05:34 , Processed in 0.044648 second(s), 27 queries .

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