日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OCP读书笔记(16) - 管理资源

發(fā)布時(shí)間:2025/3/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OCP读书笔记(16) - 管理资源 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用者組

創(chuàng)建資源用戶組OLTP_GRP,將用戶HR,OE加入此組:

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.create_consumer_group(
    consumer_group => 'OLTP_GRP',
    comment => '',      
    cpu_mth => 'ROUND-ROBIN'
  );
  dbms_resource_manager.submit_pending_area();
  BEGIN
    dbms_resource_manager_privs.grant_switch_consumer_group('HR', 'OLTP_GRP', false);
    dbms_resource_manager_privs.grant_switch_consumer_group('OE', 'OLTP_GRP', false);
  END;
END;

創(chuàng)建資源用戶組BATH_GRP,將用戶BI,SH加入此組:

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.create_consumer_group(
    consumer_group => 'BATH_GRP',
    comment => '',
    cpu_mth => 'ROUND-ROBIN'
  );
  dbms_resource_manager.submit_pending_area();
  BEGIN
    dbms_resource_manager_privs.grant_switch_consumer_group('BI', 'BATH_GRP', false);
    dbms_resource_manager_privs.grant_switch_consumer_group('SH', 'BATH_GRP', false);
  END;
END;

將HR,OE的初始化用戶組制定為OLTP_GRP

BEGIN
  dbms_resource_manager.set_initial_consumer_group(
    user => 'HR',
    consumer_group => 'OLTP_GRP'
  );
END;

BEGIN
  dbms_resource_manager.set_initial_consumer_group(
    user => 'OE',
    consumer_group => 'OLTP_GRP'
  );
END;

將BI,SH的初始化用戶組制定為BATH_GRP

BEGIN
  dbms_resource_manager.set_initial_consumer_group(
    user => 'BI',
    consumer_group => 'BATH_GRP'
  );
END;

BEGIN
  dbms_resource_manager.set_initial_consumer_group(
    user => 'SH',
    consumer_group => 'BATH_GRP'
  );
END;

創(chuàng)建一個(gè)資源計(jì)劃“MY_DAY_PLAN”,并對CPU進(jìn)行資源分配:

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.create_plan( 'MY_DAY_PLAN', '');
  dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'BATH_GRP',
    comment => '',
    cpu_p1 => NULL, cpu_p2 => 20, cpu_p3 => NULL, cpu_p4 => NULL,
    cpu_p5 => NULL, cpu_p6 => NULL, cpu_p7 => NULL, cpu_p8 => NULL,
    parallel_degree_limit_p1 => NULL,
    active_sess_pool_p1 => NULL,
    queueing_p1 => NULL,
    switch_group => '',
    switch_time => NULL,
    switch_estimate => false,
    max_est_exec_time => NULL,
    undo_pool => NULL,
    max_idle_time => NULL,
    max_idle_blocker_time => NULL,
    switch_time_in_call => NULL
  );
  dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OLTP_GRP',
    comment => '',
    cpu_p1 => NULL, cpu_p2 => 80, cpu_p3 => NULL, cpu_p4 => NULL,
    cpu_p5 => NULL, cpu_p6 => NULL, cpu_p7 => NULL, cpu_p8 => NULL,
    parallel_degree_limit_p1 => NULL,
    active_sess_pool_p1 => NULL,
    queueing_p1 => NULL,
    switch_group => '',
    switch_time => NULL,
    switch_estimate => false,
    max_est_exec_time => NULL,
    undo_pool => NULL,
    max_idle_time => NULL,
    max_idle_blocker_time => NULL,
    switch_time_in_call => NULL
  );
  dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OTHER_GROUPS',
    comment => '',
    cpu_p1 => NULL, cpu_p2 => NULL, cpu_p3 => 100, cpu_p4 => NULL,
    cpu_p5 => NULL, cpu_p6 => NULL, cpu_p7 => NULL, cpu_p8 => NULL,
    parallel_degree_limit_p1 => NULL,
    active_sess_pool_p1 => NULL,
    queueing_p1 => NULL,
    switch_group => '',
    switch_time => NULL,
    switch_estimate => false,
    max_est_exec_time => NULL,
    undo_pool => NULL,
    max_idle_time => NULL,
    max_idle_blocker_time => NULL,
    switch_time_in_call => NULL
  );
  dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'SYS_GROUP',
    comment => '',
    cpu_p1 => 100, cpu_p2 => NULL, cpu_p3 => NULL, cpu_p4 => NULL,
    cpu_p5 => NULL, cpu_p6 => NULL, cpu_p7 => NULL, cpu_p8 => NULL,
    parallel_degree_limit_p1 => NULL,
    active_sess_pool_p1 => NULL,
    queueing_p1 => NULL,
    switch_group => '',
    switch_time => NULL,
    switch_estimate => false,
    max_est_exec_time => NULL,
    undo_pool => NULL,
    max_idle_time => NULL,
    max_idle_blocker_time => NULL,
    switch_time_in_call => NULL
  );
  dbms_resource_manager.submit_pending_area();
  dbms_resource_manager.switch_plan( plan_name => 'MY_DAY_PLAN', sid => 'orcl' );
END;

確認(rèn)用戶的初始化用戶組:

conn /as sysdba
alter user hr account unlock identified by hr;
alter user oe account unlock identified by oe;
alter user bi account unlock identified by bi;
alter user sh account unlock identified by sh;

grant select on v_$session to hr,oe,bi,sh;
grant select on v_$mystat to hr,oe,bi,sh;

conn hr/hr
select resource_consumer_group from v$session where sid=(select sid from v$mystat where rownum=1);

conn bi/bi
select resource_consumer_group from v$session where sid=(select sid from v$mystat where rownum=1);

我們不僅可以通過指定用戶與資源用戶組的映射關(guān)系,從而指定用戶所產(chǎn)生的session所屬的用戶組,我們還可以通過其他映射關(guān)系來指定session屬于哪個(gè)用戶組

資源管理器提供了很多種映射用戶組的方法,比如我們可以指定某個(gè)特定的客戶端計(jì)算機(jī)名稱登錄到數(shù)據(jù)庫產(chǎn)生的session屬于某個(gè)用戶組,也可以指定通過某個(gè)特定的應(yīng)用程序登錄到數(shù)據(jù)庫所產(chǎn)生的session屬于某個(gè)用戶組等

由于我們可以設(shè)置登錄到操作系統(tǒng)的用戶所對應(yīng)的用戶組(比如oracle對應(yīng)os_grp組),同時(shí)設(shè)置登錄數(shù)據(jù)庫用戶所對應(yīng)的用戶組(比如用戶HR對應(yīng)OLTP_GRP),因此就存在一個(gè)問題,當(dāng)這兩種設(shè)置存在矛盾時(shí),應(yīng)該怎么辦?比如,我們以oracle用戶登錄操作系統(tǒng),然后以HR用戶登錄到數(shù)據(jù)庫,這時(shí)產(chǎn)生的session到底屬于哪個(gè)用戶組呢?
通過設(shè)定這些映射的優(yōu)先級來解決這個(gè)問題,默認(rèn)情況下,操作系統(tǒng)用戶映射關(guān)系的優(yōu)先級比數(shù)據(jù)庫用戶映射關(guān)系低

測試對CPU的限制
在hr和bi下分別運(yùn)行死循環(huán):
conn hr/hr
declare
  i number;
  j number;
begin
  i := 0;
  loop
    j := sqrt(i);
    i := i + 1;
  end loop;
end;
conn bi/bi
declare
  i number;
  j number;
begin
  i := 0;
  loop
    j := sqrt(i);
    i := i + 1;
  end loop;
end;

對并行度的限定

在沒有對BATH_GRP進(jìn)行限定之前:

conn sh/sh

select sid from v$mystat where rownum=1;

select /*+parallel(sales,6)*/ * from sales;

conn /as sysdba

select sid, qcsid, degree from v$px_session where qcsid=159;

對其限定后:

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.update_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'BATH_GRP',
    new_comment => '',
    new_parallel_degree_limit_p1 => 3
  );
  dbms_resource_manager.submit_pending_area();
END;

conn sh/sh

select sid from v$mystat where rownum=1;

select /*+parallel(sales,6)*/ * from sales;

conn /as sysdba

select sid, qcsid, degree from v$px_session where qcsid=140;

可以看到,雖然只指定了并行度為6,但是使用資源管理器對其限定后,只產(chǎn)生3個(gè)從屬進(jìn)程

設(shè)置活動(dòng)的會(huì)話數(shù)(session個(gè)數(shù))

當(dāng)用戶組里某個(gè)用戶所產(chǎn)生的會(huì)話數(shù)超過了session數(shù)的限定值時(shí),如果還要再產(chǎn)生session,則會(huì)將session放入隊(duì)列,直到當(dāng)前正在活動(dòng)的session變?yōu)椴换顒?dòng)時(shí),等待活動(dòng)的session才開始活動(dòng),該隊(duì)列為先進(jìn)先出的規(guī)則,注意,并行執(zhí)行時(shí)產(chǎn)生的從屬進(jìn)程不算作活動(dòng)的session,我們可以控制試圖活動(dòng)的session在隊(duì)列里存放的時(shí)間長度,這叫超時(shí)。如果在隊(duì)列里的session等待時(shí)間超過指定的時(shí)間,則該session被切斷。

對OLTP_GRP進(jìn)行限定

conn /as sysdba

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.update_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'BATH_GRP',
    new_comment => '',
    new_active_sess_pool_p1 => 2,
    new_queueing_p1 => 5
  );
  dbms_resource_manager.submit_pending_area();
END;

以bi用戶連入數(shù)據(jù)庫,開兩個(gè)會(huì)話,并運(yùn)行死循環(huán)

conn bi/bi

declare
  i number;
  j number;
begin
  i := 0;
  loop
    j := sqrt(i);
    i := i + 1;
  end loop;
end;

conn bi/bi

declare
  i number;
  j number;
begin
  i := 0;
  loop
    j := sqrt(i);
    i := i + 1;
  end loop;
end;

開第三個(gè)session

conn bi/bi

ERROR:
ORA-07454: queue timeout, 5 second(s), exceeded

select sysdate from dual;
select sysdate from dual
*
ERROR at line 1:
ORA-07454: queue timeout, 5 second(s), exceeded

將其中一個(gè)session,kill掉

select sysdate from dual;

產(chǎn)生UNDO的數(shù)量

conn /as sysdba
grant select on dba_objects to hr;

conn hr/hr
create table test as select * from dba_objects;

conn /as sysdba

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.update_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OLTP_GRP',
    new_comment => '',
    new_undo_pool => 1
  );
  dbms_resource_manager.submit_pending_area();
END;

超出了限制,報(bào)錯(cuò)。

update test set OBJECT_NAME=lpad('abc',100);
update test set OBJECT_NAME=lpad('abc',100)
*
ERROR at line 1:
ORA-30027: Undo quota violation - failed to get 60 (bytes)

估計(jì)執(zhí)行時(shí)間的上限

當(dāng)session還沒開始較長時(shí)間的操作之前就被終止

conn hr/hr
create table test as select * from dba_objects;

conn /as sysdba

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.update_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OLTP_GRP',
    new_comment => '',
    new_max_est_exec_time => 1
  );
  dbms_resource_manager.submit_pending_area();
END;

conn hr/hr

select count(*) from test;

ERROR at line 1:
ORA-07455: estimated execution time (2 secs), exceeds limit (1 secs)

使用者組切換

當(dāng)session執(zhí)行時(shí)間的上限超過了指定的值后,切換到另一個(gè)組

conn /as sysdba

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.update_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OLTP_GRP',
    new_comment => '',
    new_switch_group => 'BATH_GRP',
    new_switch_time => 10
  );
  dbms_resource_manager.submit_pending_area();
END;

以HR用戶打開一個(gè)session,執(zhí)行死循環(huán)

conn hr/hr

declare
  i number;
  j number;
begin
  i := 0;
  loop
    j := sqrt(i);
    i := i + 1;
  end loop;
end;

打開監(jiān)視器,10秒鐘后發(fā)現(xiàn)以hr登錄的session被切換到了BATH_GRP

設(shè)置空閑時(shí)間的上限

conn /as sysdba

BEGIN
  dbms_resource_manager.clear_pending_area();
  dbms_resource_manager.create_pending_area();
  dbms_resource_manager.update_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OLTP_GRP',
    new_comment => '',
    new_max_idle_time => 5,
    new_max_idle_blocker_time => 10
  );
  dbms_resource_manager.submit_pending_area();
END;

conn hr/hr
連接到數(shù)據(jù)庫后,什么都不干,超過5秒運(yùn)行任何操作都報(bào)錯(cuò)如:

select sysdate from dual;
ERROR at line 1:
ORA-02396: exceeded maximum idle time, please connect again

conn hr/hr
update employees set first_name='aaa' where employee_id=108;

conn hr/hr
update employees set first_name='aaa' where employee_id=108;

當(dāng)超過10秒后,第一個(gè)session會(huì)被中斷,第二個(gè)session被執(zhí)行

轉(zhuǎn)載于:https://www.cnblogs.com/thlzhf/p/3382814.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的OCP读书笔记(16) - 管理资源的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 特黄色一级片 | 免费欧美黄色片 | 黄色短视频在线播放 | 日韩激情文学 | 18av在线视频| 9.1成人看片免费版 日韩经典在线 | 在线你懂的视频 | 日朝毛片 | 日本女人hd | 免费的黄色av | 牛牛影视一区二区 | 制服诱惑一区二区三区 | 51热门大瓜今日大瓜 | 亚洲欧美激情另类 | 9l视频自拍九色9l视频 | 午夜婷婷网 | 91精品国产综合久久久蜜臀图片 | 亚洲成人基地 | av色资源| 国产精品欧美激情 | 91精品人妻互换一区二区 | 一区二区在线免费看 | 亚洲国产精品成人综合色在线婷婷 | 久久影视 | 天堂在线视频免费观看 | 午夜视频在线免费播放 | 欧美一区二区三区国产 | 性史性农村dvd毛片 日韩精品在线视频观看 | 91成人免费网站 | 丰满人妻一区二区三区免费视频棣 | 欧美片 | 日本伊人色 | 国产精品久久久久久久久久久久久 | 玖草视频在线 | 99er在线观看 | 日韩少妇激情 | 一级免费看片 | 欧美在线日韩在线 | 色老头一区二区三区 | 人人爽爽人人 | 每日更新av | 免费国产在线观看 | 欧美精品黄 | 深夜福利在线免费观看 | 免费无码又爽又黄又刺激网站 | 亚洲va天堂va欧美ⅴa在线 | 性奶老妇 视频 | 超碰青草| 久久久久久久久久久影院 | 久久久久香蕉视频 | 日韩av手机在线免费观看 | 九九精品九九 | 精品盗摄一区二区三区 | 亚洲精品lv| 男人视频网站 | 性高潮久久久久久久久久 | 欧美在线一区二区 | 国产成人精品一区二区三区在线观看 | 国产麻豆午夜三级精品 | av国产网站 | www婷婷av久久久影片 | 超碰在线免费观看97 | 亚洲美女精品视频 | 午夜一区二区三区在线 | 欧美高清成人 | 麻豆视频在线 | 裸体男女树林做爰 | 极品美女销魂一区二区三区 | 手机成人av在线 | 九九九九九精品 | 免费毛片播放 | 亚洲黄色在线网站 | 2019最新中文字幕 | 青青草在线免费 | 全黄一级男人和女人 | 蜜臀一区二区三区精品免费视频 | 亚洲五月花 | 色88久久久久高潮综合影院 | 日本成人三级 | 黑人精品一区二区 | 亚洲热av | 亚洲free性xxxx护士hd | 亚洲精品在线免费观看视频 | 爱色成人网 | 国产片91 | 中文字幕亚洲乱码熟女1区2区 | 亚欧洲精品在线视频免费观看 | 亲嘴扒胸摸屁股免费视频日本网站 | 韩国三级做爰高潮 | 91免费福利| jizz国产在线观看 | 精品久久久久久无码人妻 | 国产天堂第一区 | 国产剧情一区 | 破处视频在线观看 | 亚洲人妻一区二区三区 | 久久这里只有精品首页 | 91久久爽久久爽爽久久片 | 激情国产一区 |