seminář: Administrace Oracle (NDBI013) LS2017/18 RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague
CREATE USER jmeno IDENTIFIED BY {heslo EXTERNALY} DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp [QUOTA {10[{K M G}] UNLIMITED} ON ts1] [QUOTA {10[{K M G}] UNLIMITED} ON ts2] [PROFILE jmeno_profilu]; M. Kopecký NDBI013 2
ALTER USER jmeno IDENTIFIED BY {heslo EXTERNALY} DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp [QUOTA {10[{K M G}] UNLIMITED} ON ts1] [QUOTA {10[{K M G}] UNLIMITED} ON ts2] [PROFILE jmeno_profilu]; M. Kopecký NDBI013 3
ALTER USER jmeno ACCOUNT {LOCK UNLOCK}; M. Kopecký NDBI013 4
Množina omezení pro přidělení zdrojů DBMS Uživatel s přiřazeným profilem nemůže omezení překročit Uživatel bez explicitně přiřazeného profilu má profil DEFAULT ten má standardně neomezené množství zdrojů, ale je možné jej změnit M. Kopecký NDBI013 5
Aktivace ALTER SYSTÉM SET RESOURCE_LIMIT = TRUE; Deaktivace ALTER SYSTÉM SET RESOURCE_LIMIT = FALSE; M. Kopecký NDBI013 6
CREATE PROFILE profile LIMIT { resource_parameters password_parameters } ; ALTER PROFILE profile LIMIT { resource_parameters password_parameters } ; M. Kopecký NDBI013 7
CREATE PROFILE app_user LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIM E 10; M. Kopecký NDBI013 8
CREATE PROFILE app_user2 LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL 3000 CONNECT_TIME 45 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 15K M. Kopecký NDBI013 9
CREATE USER u PROFILE profile_name ; ALTER USER u PROFILE profile_name ; M. Kopecký NDBI013 10
Měří se v tzv. service units ALTER RESOURCE COST CPU_PER_SESSION n, CONNECT_TIME n, LOGICAL_READS_PER _SESSION n, PRIVATE_SGA n; M. Kopecký NDBI013 11
M. Kopecký NDBI013 12
OS Resource Manager Nadměrný overhead Neefektivní plánování Nevhodné přidělování zdrojů všechny session rovnocenné DB specifické zdroje M. Kopecký NDBI013 13
Sessions Session pools Idle sessions CPU Time Paralelismus Dlouhé transakce Specifická schémata pro RM Balík DBMS RESOURCE_MANAGER M. Kopecký NDBI013 14
Kolekce sessions Základní skupiny SYS_GROUP DEFAULT_CONSUMER_GROUP OTHER_GROUPS Round robin scheduling Další skupiny vytvořené dle potřeby M. Kopecký NDBI013 15
Konkrétní plány přidělení zdrojů Typy Jednoduché plány Komplexní plány Podplány M. Kopecký NDBI013 16
Jednoduché plány pro jednoduché operace Pouze CPU Max. 8 consumer groups CPU pouze na úrovni 2 Level 1: 100 % SYS_GROUP Level 3: 100 % OTHER_GROUPS (Skupina OTHER_GROUPS musí být přítomná v každém plánu) M. Kopecký NDBI013 17
Přiřazení zdrojů konkrétnímu plánu Alokační metody CPU Active session pool Degree of parallelism Automatic consumer group switching Canceling SQL and terminating sessions Execution time limit Undo pool Idle time limit M. Kopecký NDBI013 18
BEGIN DBMS_RESOURCE_MANA GER.CREATE_SIMPLE_PLAN( SIMPLE_PLAN => 'DAYTIME', CONSUMER_GROUP1 => 'OLTP', GROUP1 _PERCENT => 75, CONSUMER_GROUP2 => 'REPORTING', GROUP2_PERCENT => 15, CONSUMER_GROUP3 => 'OTHER_GROUPS', GROUP3_PERCENT => 10 ); END; M. Kopecký NDBI013 19
Vytvoření tzv. Pending Area BEGIN DBMS_RESOURCE_MANA GER.CREATE_PENDING_AREA(); END; Vytvoření consumer groups BEGIN DBMS_RESOURCE_MANA GER.CREATE_CONSUMER_GROUP ( CONSUMER_GROUP => 'OLTP', COMMENT => 'OLTP applications'); END; M. Kopecký NDBI013 20
Vytvoření Resource plan BEGIN DBMS_RESOURCE_MANA GER.CREATE_PLAN( PLAN => 'DAYTIME', COMMENT => 'More resources for OLTP applications'); END; M. Kopecký NDBI013 21
Vytvoření Resource plan directives BEGIN DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE ( PLAN => 'DAYTIME', GROUP_OR_SUBPLAN => 'OLTP', COMMENT => 'OLTP group', MGMT_P1 => 75); END; BEGIN DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE ( PLAN => 'DAYTIME', GROUP_OR_SUBPLAN => 'REPORTING', COMMENT => 'Reporting group', MGMT_P1 => 15, PARALLEL_DEGREE_LIMIT_P1 => 8, ACTIVE_SESS_POOL_P1 => 4); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE ( PLAN => 'DAYTIME', GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => 'This one is required', MGMT_P1 => 10); END; M. Kopecký NDBI013 22
Validace Pending Area BEGIN DBMS_RESOURCE_MANA GER.VALIDATE_PENDING_AREA(); END; Potvrzení Pending Area BEGIN DBMS_RESOURCE_MANA GER.SUBMIT_PENDING_AREA(); END; Vyčištění Pending Area BEGIN DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA(); END; M. Kopecký NDBI013 23
Mapovací pravidla pro přidělení session do správné Consumer group Initial resource consumer group Při loginu Dynamické přepínání consumer group Při výskytu nějaké předem definované události M. Kopecký NDBI013 24
Vytvoření mapovacího pravidla ORACLE_USER (login) SERVICE_NAME (login) MODULE_NAME (runtime) SERVICE_MODULE (runtime) BEGIN DBMS_RESOURCE_MANA GER.SET_CONSUMER_GROUP_MAPPING( DBMS_RESOURCE_MANA GER.ORACLE_USER, 'SCOTT', 'DEV_GROUP ); END; M. Kopecký NDBI013 25
Priorita vyhodnocení mapovacího pravidla BEGIN DBMS_RESOURCE_MANA GER.SET_CONSUMER_GROUP_MAPPING_PRI( EXPLICIT => 1, SERVICE_MODULE_ACTION => 2, SERVICE_MODULE => 3, MODULE_NAME_ACTION => 4, MODULE_NAME => 5, SERVICE_NAME => 6, ORACLE_USER => 7, CLIENT_PROGRAM => 8, CLIENT_OS_USER => 9, CLIENT_MACHINE => 10 ); END; M. Kopecký NDBI013 26
Priorita vyhodnocení mapovacího pravidla BEGIN DBMS_RESOURCE_MANA GER.SET_CONSUMER_GROUP_MAPPING( DBMS_RESOURCE_MANA GER.MODULE_NAME, 'BACKUP', 'LOW PRIORITY ); END; M. Kopecký NDBI013 27
Manuální přepínaní BEGIN DBMS_RESOURCE_MANA GER.SWITCH_CONSUMER_GROUP_FOR_SESS ('17', '12345','HIGH_PRIORITY'); END; BEGIN DBMS_RESOURCE_MANA GER.SWITCH_CONSUMER_GROUP_FOR_USER ('SCOTT', 'LOW_GROUP ); END; M. Kopecký NDBI013 28
Automatické přepínání Na základě mapovacích pravidel Na základě zdrojů BEGIN DBMS_RESOURCE_MANA GER.CREATE_PLAN_DIRECTIVE ( PLAN => 'DAYTIME', GROUP_OR_SUBPLAN => 'OLTP', COMMENT => 'OLTP group', MGMT_P1 => 75, SWITCH_GROUP => 'LOW_GROUP', SWITCH_TIME => 5 ); END; M. Kopecký NDBI013 29
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'mydb_plan'; ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = ''; M. Kopecký NDBI013 30
M. Kopecký NDBI013 31