10oracle11g和10g区别1g自动任务的区别

Oracle 10g 11g 12c的区别简单介绍
查看数: 34313|
评论数: 0|
22:12 上传
Oracle 10g 11g 12c 区别
Oracle Database 10g 是第一个为网格计算设计的数据库管理系统。Oracle Database 11g 合并和扩展了 Oracle 特有的功能以实现网格计算的优势,将数据中心从分散的系统资源孤岛转换为包含服务器和存储的共享池。Oracle Database 12c 和 Enterprise Manager Cloud Control 是为云计算设计的。云计算创建了一个完整的、预先集成的现成专用云解决方案,从而可以快速将企业数据中心转换为专用云。主要优势如下所示:o通过合并使用少数几个服务器,降低对大量服务器的需求并提高 CPU 的利用率。o通过自动部署标准数据库配置,缩短 DBA 花在安装和配置数据库上的时间。o通过单一控制台管理整个云生命周期(规划、设置、交付和运行)。o通过为各个用户设置限额,防止资源独占。o通过分析趋势报表,预测未来资源需求。o基于性能和配置度量计算计费。
如果是从技术上来看最大的区别在于:
Oracle 10g 推出完全基于Oracle 平台的 Cluster软件,无需第三方集群软件就可以搭建数据库集群。
Oracle 11g Oracle 推出 Grid Infrustracture 软件(GI),GI提供更强大的Oracle ASM支持。同时GI作为集群软件除了支持数据库集群更支持第三软件的集群例如 Timesten
Oracle 12c 则主要面向云计算机,简单来说,可以在一个容器数据库(CDB)内,虚拟出多个可插拔数据库(PDB)。实现云数据库的支持。同时Oracle 12c的 Cloud Control 提供了云平台管理相关的功能,这是11g 10g 没有的功能
相对而言 12c 到 11g 的变化比,10g 到 11g 的变化更大。
目前Oracle 12c 的全系列约20+门课程。在涛德完全2014年8月完全推出。
了解涛德全产业链Oracle 数据库课程,请访问oracle 10g 和 11g 关于角色口令的区别
角色是一组相关权限的命名集合,使用角色最主要的目的是简化权限管理
而一旦这个集合的权限超过了用户的最低需求,就可能带来数据库的安全风险
角色口令测试
oracle 10g中,无论角色是否有口令,只要你将角色grant给某个用户,那么,默认的情况下,这些角色中的权限,用户都拥有。
oracle 11g中,角色的口令略有修正,当某个角色是拥有口令的话,当你将带有口令的角色 grant 给某个用户的话,那么默认的情况
下,这个带口令的角色下的所有权限,用户是无法拥有的,只有当 set
那个拥有口令的角色后,那么 ,带口令的
角色下的权限才在当前会话下才可以使用,不过,其他的角色都暂时失效,修改只在当前会话有效。
------只在当前会话有效
{ role [ IDENTIFIED BY password ]
[, role [ IDENTIFIED BY password ] ]...
| ALL [ EXCEPT role [, role ]... ]
oracle 10g 中测试带口令的角色
SYS@ORCL&select * from v$
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
10.2.0.1.0
Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
创建两个角色 role_01 没有密码
role_02 有密码
SYS@ORCL&create role role_01;
Role created.
SYS@ORCL&create role role_02
Role created.2.
赋予角色 role_01 连接、建表权限
SYS@ORCL&grant connect,create table to role_01;
Grant succeeded.3.
赋予角色 role_02 连接、创建视图权限
SYS@ORCL&grant connect,create view to role_02;
Grant succeeded.4.
创建测试用户 tyger
SYS@ORCL&create user tyger identified by tyger quot
User created.5.
将两个角色赋予tyger
SYS@ORCL&grant role_01,role_02
Grant succeeded.6.
连接到用户测试
SYS@ORCL&conn tyger/tyger
Connected.
TYGER@ORCL&create table t(x int);
Table created.
TYGER@ORCL&insert into t values(1);
1 row created.
TYGER@ORCL&
Commit complete.
TYGER@ORCL&select *
----------
TYGER@ORCL&create view view_t as select *
View created.
TYGER@ORCL&select *
------------------------------ ------- ----------
查看当前用户的角色,两个角色的 DEFAULT_ROLE 都为 YES
说明,这两个角色都生效
TYGER@ORCL&desc user_role_
----------------------------------------- -------- ----------------------------
VARCHAR2(30)
GRANTED_ROLE
VARCHAR2(30)
ADMIN_OPTION
VARCHAR2(3)
DEFAULT_ROLE
VARCHAR2(3)
OS_GRANTED
VARCHAR2(3)
TYGER@ORCL&col username for a10
TYGER@ORCL&col granted_role for a20
TYGER@ORCL&col default_role for a20
TYGER@ORCL&select username,granted_role,default_role from user_role_
GRANTED_ROLE
DEFAULT_ROLE
---------- -------------------- --------------------
查看当前会话具有的权限
TYGER@ORCL&select * from session_
----------------------------------------
CREATE SESSION
CREATE TABLE
CREATE VIEW9.
set 的应用
----set 在当前会话中设置角色状态
TYGER@ORCL&set role ROLE_01;
Role set.10.
查看当前用户的角色,没变化
TYGER@ORCL&select username,granted_role,default_role from user_role_
GRANTED_ROLE
DEFAULT_ROLE
---------- -------------------- --------------------
查看当前会话权限,已经没有 create view 权限, 原因:set role role_01 只有role_01 在当前会话生效
TYGER@ORCL&select * from session_
----------------------------------------
CREATE SESSION
CREATE TABLE
TYGER@ORCL&create view view_2 as select *
create view view_2 as select * from t
ERROR at line 1:
ORA-01031: insufficient privileges12. 同样使 role_02 生效,同时 role_01 失效,不过设置的时候需要我们提供密码,因为我们创建角色时使用了密码
TYGER@ORCL&set role role_02;
set role role_02
ERROR at line 1:
ORA-01979: missing or invalid password for role 'ROLE_02'
TYGER@ORCL&set role role_02
Role set.13.
查看当前用户所拥有的权限,还是没变化
TYGER@ORCL&select username,granted_role,default_role from user_role_
GRANTED_ROLE
DEFAULT_ROLE
---------- -------------------- --------------------
查看当前会话的权限,已经没有 create table 权限
TYGER@ORCL&select * from session_
----------------------------------------
CREATE SESSION
CREATE VIEW
TYGER@ORCL&create table t1(x int);
create table t1(x int)
ERROR at line 1:
ORA-01031: insufficient privileges15.
重新登录会话,连接用户
所有权限都恢复原样
TYGER@ORCL&conn tyger/
Connected.
TYGER@ORCL&select * from session_
----------------------------------------
CREATE SESSION
CREATE TABLE
CREATE VIEW
总结:在oracle 10g 无论角色是否有口令,将角色赋予给用户后,用户具有角色的全部权限。
oracle 11g 中测试 拥有口令的角色
[oracle@ora11gr2 ~]$ sqlplus
/ as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 19 15:28:13 2014Copyright (c) , Oracle.
All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSYS@ORA11G&select * from v$BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE
11.2.0.1.0
ProductionTNS for Linux: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - Production1.
创建角色 tyger_ro1 无密码
tyger_ro2 有密码SYS@ORA11G&create role tyger_ro1;Role created.SYS@ORA11G&create role tyger_ro2 Role created.SYS@ORA11G&grant connect,create table to tyger_ro1;Grant succeeded.SYS@ORA11G&grant connect,create view to tyger_ro2;Grant succeeded.SYS@ORA11G&create user tyger identified by tyger quotUser created.SYS@ORA11G&grant tyger_ro1,tyger_ro2Grant succeeded.SYS@ORA11G&conn tyger/tygerConnected.TYGER@ORA11G&create table t(x int);Table created.TYGER@ORA11G&insert into t values(1);1 row created.TYGER@ORA11G&Commit complete.2.
此时就出现问题了,role_02 明明有 create view 而且赋予给了 tyger 为什么这里就没有呢?TYGER@ORA11G&create view view_t as select *create view view_t as select * from t
*ERROR at line 1:ORA-01031: insufficient privileges3.
查看 tyger_ro2 的default_role 为NO
难道 role_02 角色失效???TYGER@ORA11G&col username for a10TYGER@ORA11G&col granted_role for a20TYGER@ORA11G&col default_role for a20TYGER@ORA11G&select username,granted_role,default_role from user_role_USERNAME
GRANTED_ROLE
DEFAULT_ROLE---------- -------------------- --------------------TYGER
再查看当前会话的权限,果然没有 create view 权限TYGER@ORA11G&select * from session_PRIVILEGE----------------------------------------CREATE SESSIONCREATE TABLE5.
设置 tyger_ro2 权限生效TYGER@ORA11G&set role tyger_ro2 Role set.6.
当前用户具有的权限不变TYGER@ORA11G&select username,granted_role,default_role from user_role_USERNAME
GRANTED_ROLE
DEFAULT_ROLE---------- -------------------- --------------------TYGER
NO7.当前会话用了 create view 权限 却没有了create table 权限TYGER@ORA11G&select * from session_PRIVILEGE----------------------------------------CREATE SESSIONCREATE VIEWTYGER@ORA11G&create view view_t as select *View created.TYGER@ORA11G&select *TNAME
CLUSTERID------------------------------ ------- ----------T
TABLEVIEW_T
VIEWTYGER@ORA11G&create table t1(x int);create table t1(x int)*ERROR at line 1:ORA-01031: insufficient privileges8.
重新登录会话,权限恢复原样TYGER@ORA11G&conn tyger/tygerConnected.TYGER@ORA11G&create table t1(x int);Table created.TYGER@ORA11G&select username,granted_role,default_role from user_role_USERNAME
GRANTED_ROLE
DEFAULT_ROLE---------- -------------------- --------------------TYGER
在oracle 11g 中,带有口令的角色赋予用户,默认情况下是失效的,当 set role 生效后,其他角色所具有的权限失效, 只在当前会话有效
没有更多推荐了,
不良信息举报
举报内容:
oracle 10g 和 11g 关于角色口令的区别
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!oracle11g和oracle10g的区别_百度知道
oracle11g和oracle10g的区别
我有更好的答案
这个区别很多,说下11g的五大新特性和四小新特性以及一些小细节。五大新特性:1、集群能力上升,只需一个oracle home,rac变强2、集群支持ASM,这个太重要了,也是解决冗余oracle home的手段3、ACFS,集群文件系统,比之前的OCFS强太多了4、安装更方便,升级打补丁更容易5、作业能力提升,DBMS_SCHEDULER升级四小新特性:1、版本化管理,可以恢复到上一个版本2、取消闪回数据归档的DDL限制3、create table不会自动分配段,而是直到有数据进入才会分配段4、索引不可用时会被删除,能提高数据仓库性能细节1、RMAN增强2、DG增强3、数据仓库增强4、取消了sqlplusw这个鸡肋,增加了developer的工具。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
1)& 先来看下oracle 10g中的自动统计任务的问题。
从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。
这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。
可以通过以下查询这个JOB的运行情况:
select * from Dba_Scheduler_Jobs where JOB_NAME ='GATHER_STATS_JOB'
其实同在10点运行的Job还有一个AUTO_SPACE_ADVISOR_JOB:
SQL& select JOB_NAME,LAST_START_DATE from dba_scheduler_
JOB_NAME&&&&&&&&&&&&&&&&&&&&& LAST_START_DATE
------------------------------ ----------------------------------------
AUTO_SPACE_ADVISOR_JOB&&&&&&& 04-DEC-07 10.00.00.692269 PM +08:00
GATHER_STATS_JOB&&&&&&&&&&&&& 04-DEC-07 10.00.00.701152 PM +08:00
FGR$AUTOPURGE_JOB
PURGE_LOG&&&&&&&&&&&&&&&&&&&&& 05-DEC-07 03.00.00.169059 AM PRC
然而这个自动化功能已经影响了很多系统的正常运行,晚上10点对于大部分生产系统也并非空闲时段。
而自动分析可能导致极为严重的闩锁竞争,进而可能导致数据库Hang或者Crash。
所以建议最好关闭这个自动统计信息收集功能:
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
2)oracle 11g的系统自动job
&&
SQL& select job_name,comments from dba_scheduler_
3)10g关闭自动收集job
select * from Dba_Scheduler_Jobs where JOB_NAME ='GATHER_STATS_JOB'
所以建议最好关闭自动统计信息收集功能:
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
启动自动统计信息收集功能
exec DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');
手工收集统计信息:
SQL& exec dbms_stats.gather_schema_stats('detail',options=&'gather stale',estimate_percent =&10);
--收集没有分析过的表的统计信息
begin
dbms_stats.gather_schema_stats(ownname=&scott,options=&'gather empty');
--重新分析修改量超过10%的表(这些修改包括插入、更新和删除)
begin
dbms_stats.gather_schema_stats(ownname=&scott,options=&'gather stale');
4)11G关系自动收集job
&& 对于11g版本的oracle 有三个自动维护定时任务。
1 自动优化器统计收集:为所有方案对象收集陈旧的或缺少的统计数据,所收集的统计信息将被用来提高sql的执行的性能,任务名是“auto optimizer stats collection”
2 自动分段顾问:标识数据库中的段是否有可以回收的空间,并以此信息统计为基础做出怎样整理段的碎片以节约空间。你也可以手动的执行此job来获取最新的建议信息,或者获取自动段advisor 不检测的但又可以回收的段的信息,任务名是“auto space advisor”
3 自动SQL调整顾问:自动标识并尝试调整高负载的SQL,任务名是“sql tuning advisor”
sys@RAC& select client_name ,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
auto space advisor&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
sql tuning advisor&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
管理自动维护的job
在oracle 10g中这些job被分别创建并且以DBA_SCHEDULER_JOBS.JOB_NAME的名称出现
然而在11g中则有所改变,通过视图DBA_AUTOTASK_WINDOW_CLIENTS可以查看他们一周七天的执行情况,包括
时间窗口,下次执行时间,job的名称,健康检查
sys@RAC& select * from DBA_AUTOTASK_WINDOW_CLIENTS;
WINDOW_NAME&&&&&&& WINDOW_NEXT_TIME&&&&&&&&&&&&&&&&&& WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- --------------- -------- --------
WEDNESDAY_WINDOW&& 28-SEP-11 10.00.00.000000 PM PRC&& FALSE DISABLED ENABLED& ENABLED&&&&&&&& ENABLED& DISABLED
SATURDAY_WINDOW&&& 01-OCT-11 06.00.00.000000 AM PRC&& FALSE DISABLED ENABLED& ENABLED&&&&&&&& ENABLED& DISABLED
THURSDAY_WINDOW&&& 29-SEP-11 10.00.00.000000 PM PRC&& FALSE DISABLED ENABLED& ENABLED&&&&&&&& ENABLED& DISABLED
TUESDAY_WINDOW&&&& 27-SEP-11 10.00.00.000000 PM PRC&& FALSE DISABLED ENABLED& ENABLED&&&&&&&& ENABLED& DISABLED
SUNDAY_WINDOW&&&&& 02-OCT-11 06.00.00.000000 AM PRC&& FALSE DISABLED ENABLED& ENABLED&&&&&&&& ENABLED& DISABLED
MONDAY_WINDOW&&&&& 03-OCT-11 10.00.00.000000 PM PRC&& FALSE DISABLED ENABLED& ENABLED&&&&&&&& ENABLED& DISABLED
FRIDAY_WINDOW&&&&& 30-SEP-11 10.00.00.000000 PM PRC&& FALSE DISABLED ENABLED& ENABLED&&&&&&&& ENABLED& DISABLED
7 rows selected.
DBMS_AUTO_TASK_ADMIN包的ENABLE和DISABLE存储过程能够实现关闭或者开启的三种job(不要任何参数):
execute DBMS_AUTO_TASK_ADMIN.DISABLE;
execute DBMS_AUTO_TASK_ADMIN.ENABLE;
关闭指定的job
BEGIN
& dbms_auto_task_admin.disable(
& client_name =& 'sql tuning advisor',
& peration =& NULL,
& window_name =& NULL);
END;&
/
开启指定的job:
BEGIN
& dbms_auto_task_admin.enable(
& client_name =& 'sql tuning advisor',
& peration =& NULL,
& window_name =& NULL);
END;&
/
关闭周三sql优化器顾问的执行窗口
sys@RAC& BEGIN
& 2&&&&&&&& dbms_auto_task_admin.disable(
& 3&&&&&&&& client_name =& 'sql tuning advisor',
& 4&&&&&&&& peration =& NULL,
& 5&&&&&&&& window_name =& 'MONDAY_WINDOW');
& 6&&&&&& END;&
& 7&&&&& /
PL/SQL procedure successfully completed.
sys@RAC& select * from DBA_AUTOTASK_WINDOW_CLIENTS;
WINDOW_NAME&&&&&&& WINDOW_NEXT_TIME&&&&&&&&&&&&&&&&&& WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR&&&&& SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- -------------------- -------- --------
WEDNESDAY_WINDOW&& 28-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
SATURDAY_WINDOW&&& 01-OCT-11 06.00.00.000000 AM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
THURSDAY_WINDOW&&& 29-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
TUESDAY_WINDOW&&&& 27-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
SUNDAY_WINDOW&&&&& 02-OCT-11 06.00.00.000000 AM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
MONDAY_WINDOW&&&&& 03-OCT-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& DISABLED DISABLED
FRIDAY_WINDOW&&&&& 30-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
7 rows selected.
关闭星期天的自动段顾问job的时间窗口:
sys@RAC& BEGIN
& 2&&&&&&&& dbms_auto_task_admin.disable(
& 3&&&&&&&& client_name =& 'auto space advisor',
& 4&&&&&&&& peration =& NULL,
& 5&&&&&&&& window_name =& 'SUNDAY_WINDOW');
& 6&&&&&& END;&
& 7&&&&& /
PL/SQL procedure successfully completed.
sys@RAC& select * from DBA_AUTOTASK_WINDOW_CLIENTS;
WINDOW_NAME&&&&&&& WINDOW_NEXT_TIME&&&&&&&&&&&&&&&&&& WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR&&&&& SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- -------------------- -------- --------
WEDNESDAY_WINDOW&& 28-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
SATURDAY_WINDOW&&& 01-OCT-11 06.00.00.000000 AM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
THURSDAY_WINDOW&&& 29-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
TUESDAY_WINDOW&&&& 27-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
SUNDAY_WINDOW&&&&& 02-OCT-11 06.00.00.000000 AM PRC&& FALSE ENABLED& ENABLED& DISABLED&&&&&&&&&&&& ENABLED& DISABLED
MONDAY_WINDOW&&&&& 03-OCT-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& DISABLED DISABLED
FRIDAY_WINDOW&&&&& 30-SEP-11 10.00.00.000000 PM PRC&& FALSE ENABLED& ENABLED& ENABLED&&&&&&&&&&&&& ENABLED& DISABLED
5) 11G关闭自动job
SQL& select client_name,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
auto space advisor&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
sql tuning advisor&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
begin
DBMS_AUTO_TASK_ADMIN.DISABLE(client_name =& 'auto optimizer stats collection',
operation =& NULL,
window_name =& NULL);
/
PL/SQL procedure successfully completed.
SQL&& select client_name,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& DISABLED
auto space advisor&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
sql tuning advisor&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ENABLED
浏览: 5864391 次
来自: 广州
有些扩展名为null
非常感谢!!!!!!!!!
https://zhuban.me竹板共享 - 高效便捷的文档 ...
kris_zhang 写道如果有多个@Primary 会怎么样 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客访问: 378384
博文数量: 46
注册时间:
认证徽章:
分类: Oracle 15:53:09
Oracle 10g 和11g 自动统计的区别。
oracle10g中,自动统计信息收集作业名为GATHER_STATS_JOB
SELECT JOB_NAME,
PROGRAM_NAME, SCHEDULE_NAME
& FROM DBA_SCHEDULER_JOBS
&WHERE JOB_NAME = 'GATHER_STATS_JOB';
GATHER_STATS_JOB实际上是调用了DBMS_STATS包里的存储过程dbms_stats.gather_database_stats_job_proc,也就是说10g中自动统计信息收集作业的核心逻辑就是通过调用此存储过程来实现的。
program_action from dba_scheduler_programs where
program_name='GATHER_STATS_PROG'
10G中自动统计信息作业也配置的维护窗口有两个。
select * from
dba_scheduler_wingroup_members where
window_group_name='MAINTENANCE_WINDOW_GROUP'
从如下查询可以看到维护窗口WEEKNIGHT_WINDOW从周一到周五晚上的十点开始运行,最长运行8个小时,即最长可以运行到第二天早上6点。
维护窗口WEEKEND_WINDOW从周六早上零点开始运行,最长运行2天(48小时),即最长可以运行到下周一早上零点。
select window_name,
repeat_interval, duration
& from dba_scheduler_windows
&where window_name in ('WEEKNIGHT_WINDOW',
'WEEKEND_WINDOW')
&& and enabled = 'TRUE';
从以下查询结果可以看到,oracle并没有对两个维护窗口施加资源控制,也就意味着oracle 10g 中的自动统计信息收集作业在运行是可以无限制地消耗系统资源。
window_name,resource_plan from dba_scheduler_
查看oracle自动统计实际情况
actual_start_date,job_name,status from
( select * from
dba_scheduler_job_run_details
& where job_name='GATHER_STATS_JOB' ORDER BY
LOG_DATE DESC)
WHERE ROWNUM&4;
都是晚上10点开始执行的,而且都执行成功了。
oracle10g自动统计的缺陷:
1、可配置的维护窗口太少,只有两个,这不够灵活。
在这样的维护窗口设置下,周一至周五,周六至周日的维护窗口分别都是一个整体,如果修改了WEEKNIGHT_WINDOW的设置,那么周一至周五的自动统计信息收集作业就都得遵从修改后的设置(WEEKEND_WINDOW同理),如果想把周二和周三的作业改成晚上9点执行,这么简单一个需求,只有这么两个维护窗口是无法实现的。
2、oracle10g并没有对两个维护窗口施加资源控制,也就意味着oracle 10g 中的自动统计信息收集作业在运行是可以无限制地消耗系统资源。这样很可能会影响到系统正常的业务处理。
1、取消了名为GATHER_STATS_JOB的作业。
2、引入了一个名为GATHER_STATS_PROG的自动运行任务,专用于自动收集统计信息,它其实上就是10g中的GATHER_STATS_JOB对应的应用程序GATHER_STATS_PROG。自动运行任务GATHER_STATS_PROG所对应客户端的名称为“auto optimizer stats collection”
select& client_name,task_name,operation_name,ststus
from dba_autotask_
3、GATHER_STATS_PROG实际上也是调用了DBMS_STATS包里的存储过程dbms_stats.gather_database_stats_job_proc,也就是说11g中自动统计信息收集作业的核心逻辑就是通过调用此存储过程来实现的。和10g是一样的。
4、维护窗口增加到了7个每天一个,分别是MONDAY_WINDOW& TUESDAY_WINDOW&& WEDNESDAY_WINDOW& THURSDAY_WINDOW& FRIDAY_WINDOW&
SATURDAY_WINDOW SUNDAY_WINDOW
WINDOW_NAME,AUTOTASK_STATUS FROM DBA_AUTOTASK_WINDOW_CLIENTS;
5、从下边的查询可以看出,周一至周五晚上的十点开始运行,最长运行4个小时,即最长可以运行到第二天早上2点。
&&& 周六维护窗口从早晨6点开始执行,最长运行20个小时,即最长可以运行到第二天(周日)凌晨两点。
&& 周日维护窗口从周日早上6点开始执行,最长运行20个小时,即最长可以运行到第二天(周一)凌晨两点
window_name,repeat_interval,duration from dba_scheduler_windows and enabled = 'TRUE';
6、从如下查询可以看出,已经对7个窗口施加了资源控制,其对应的resource
plan的名称为"DEFAULT_MAINTENANCE_PLAN",这也就意味着,11g的自动统计信息收集作业在运行时所消耗的资源会受到控制。
7、11g自动运行任务GATHER_STATS_PROG,每次运行时会先生成名为“ORA$AT_OS_OPT_XXX”的作业,然后再执行这个作业。
actual_start_date,job_name,status from
( select * from
dba_scheduler_job_run_details
& where job_name& like 'ORA$AT_OS_OPT%') ORDER BY LOG_DATE DESC)
WHERE ROWNUM&4;
从如下查询可以看出ORA$AT_OS_OPT_XXX实际上对应的就是它们的维护窗口,并且它们就是自动运行任务GATHER_STATS_PROG所对应客户端“auto optimizer stats collection”生成的作业
client_name,window_name,job_name,job_start_time from
&& (select * from dba_autotask_job_history
where client_name='auto optimizer stats collection' order by window_start_time
禁掉周一至周五自动统计的收集作业:
DBMS_SCHEDULER.DISABLE(
"SYS"."WEEKNIGHT_WINDOW" ',
force=&TRUE);
禁掉周一自动统计的收集作业,将周二的起始执行时间调整到晚上11点,将周三的起始执行时间调整到晚上9点,并同时将周三最长执行时间调整为5个小时:
DBMS_SCHEDULER.DISABLE(
"SYS"."MONDAY_WINDOW" ',
force=&TRUE);
注意,要改可配置的周二维护窗口,就要先DISABLE,然后再改,然后在ENABLE
DBMS_SCHEDULER.DISABLE(
"SYS"."TUESDAY_WINDOW" ',
force=&TRUE);
这里将周二维护窗口的repeat_interval的byhour属性设为23,即代表晚上11点
DBMS_SCHEDULER.SET_ATTRIBUTE(
"SYS"."TUESDAY_WINDOW" ',
attribute=&
'repeat_interval',
'freq=byday=TUE;byhour=23;byminute=0;bysecond=0');
DBMS_SCHEDULER.ENABLE(
"SYS"."TUESDAY_WINDOW" ',
force=&TRUE);
调整为五个小时:
先禁掉,将duration设置为300分钟,即表示最长执行时间为5个小时
DBMS_SCHEDULER.SET_ATTRIBUTE(
"SYS"."WEDNESDAY_WINDOW" ',
attribute=&
'duration',
numtodsinterval (300, 'minute'));
阅读(2634) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 oracle10g导入11gdmp 的文章

 

随机推荐