精华内容
下载资源
问答
  • 数据库维护

    千次阅读 2005-11-12 18:08:00
    规划数据库维护 1.一致性检查:检查数据库的完整性. 2.更新索引的统计数据; 3.整理数据库碎片; 4.重建索引; 5.备份; 6.检查文件的大小,并释放磁盘空间;二.利用数据库维护计划进行维护. 对于确保数据库得到经常...

    一.规划数据库维护
      1.一致性检查:检查数据库的完整性.
      2.更新索引的统计数据;
      3.整理数据库碎片;
      4.重建索引;
      5.备份;
      6.检查文件的大小,并释放磁盘空间;

    二.利用数据库维护计划进行维护.
       对于确保数据库得到经常性的监控.维护和优化至关重要.

    三.数据库一致性检查Database Consistency Checker(DBCC)

        用DBCC help可返回任意DBCC命令和语法:
        DBCC HELP ('?')  --返回所有的DBCC选项;
        dbcc help ('checkdb')  --返回该选项的语法信息.

    四.监控数据库维护活动:
       1.备份系统数据库;
       2.备份用于生产的用户数据库;
       3.SQL SERVER Agent/SQL Main/DTC的运行情况;
       4.数据库大小/增长情况/磁盘自由空间的情况;
       5.批处理作业是否正确执行;
       6.DBCC作业是否正确执行;
       7.SQL 日志的错误;
       8.复制日志代理的运行情况;
       9.复制分发清除作业是否正确执行;
       10.SQL SERVER上一次重新启动.

    展开全文
  • 数据库维护计划

    千次阅读 2008-02-27 12:26:00
    raytineSql Server 2005 数据库维护计划 这个星期开始为了减轻工作压力开始使用数据库维护计划(SQL Server Maintenance Plan Wizard)维护数据库,由于以前都没用过,在个人使用的免费版(Express)里也没有这个功能,...

    raytine
    Sql Server 2005 数据库维护计划
        这个星期开始为了减轻工作压力开始使用数据库维护计划(SQL Server Maintenance Plan Wizard)维护数据库,由于以前都没用过,在个人使用的免费版(Express)里也没有这个功能,所以现在好好学习了一番,这里总结一下。

    维护计划向导可以用于帮助您设置核心维护任务,从而确保数据库执行良好,做到定期备份数据库以防系统出现故障,对数据库实施不一致性检查。维护计划向导可创建一个或多个 SQL Server 代理作业,代理作业将按照计划的间隔自动执行这些维护任务。它使您可以执行各种数据库管理任务,包括备份、运行数据库完整性检查、或以指定的间隔更新数据库统计信息。创建数据库维护计划可以让SQL Server有效地自动维护数据库,保持数据库运行在最佳状态,并为管理员节省了宝贵的时间。

    以下是可以安排为自动运行的一些维护任务:

    用新填充因子重新生成索引来重新组织数据和索引页上的数据。这确保了数据库页中包含的数据量和可用空间的平均分布,还使得以后能够更快地增长。

    通过删除空数据库页压缩数据文件。

    更新索引统计信息,确保查询优化器含有关于表中数据值分布的最新信息。这使得查询优化器能够更好地确定 访问数据的最佳方法,因为可以获得数据库中存储数据的详细信息。虽然 SQL Server 会定期自动更新索引统 计信息,但是此选项可以对统计信息立即进行强制更新。

    对数据库内的数据和数据页执行内部一致性检查,确保系统或软件故障没有损坏数据。

    备份数据库和事务日志文件。数据库和日志备份可以保留一段指定时间。这使您可以为备份创建一份历史记录 ,以便在需要将数据库还原到早于上一次数据库备份的时间的时候使用。还可以执行差异备份。

    运行 SQL Server 代理作业。这可以用来创建可执行各种操作的作业以及运行这些作业的维护计划。
    维护任务生成的结果可以作为报表写入文本文件,或写入 msdb 中的 sysmaintplan_log 和 sysmaintplan_log_detail 维护计划表。若要在日志文件查看器中查看结果,请右键单击“维护计划”,再单 击“查看历史记录”。

    以下是详细说明:

    Check Database Integrity(检查数据库完整性)
    任务检查指定数据库中所有对象 的分配和结构完整性。此任务可以检查单个数据库或多个数据库,您还可以选择是否也检查数据库索引,检查所有索引页以及表数据页的完整性。
    此任务封装 DBCC CHECKDB 语句 。
    生成的代码:
    --检查当前数据库,取消信息性消息
    DBCC CHECKDB WITH NO_INFOMSGS

    Shrink Database(收缩数据库任务)
    收缩数据库’任务”对话框可以创建一 个任务,尝试减小所选数据库的大小。
    此任务封装了 DBCC SHRINKDATABASE 命令。
    选项:
    Shrink database when it grows beyond
    当数据库大小超过指定值时收缩数据库,指定引发此任务的数据库大小(MB)。
    Amount of free space to remain after shrink
    收缩后保留的 可用空间,当数据库文件中的可用空间达到此值时停止收缩。
    Retain freed space in database files
    选择在数据库文件中保留所释放的文件空间。如果指定 NOTRUNCATE 选项,数据文件好像没有收缩。
    Return freed space to operating system
    选择把数据文件中任何未使用空间被释放给操作系统。无需移动任何数据即可减小文件大小。

    生成的代码:
    --选择Retain freed space in database files
    DBCC SHRINKDATABASE (N'AdventureWorks', 10, NOTRUNCATE)
    --选择Return freed space to operating system
    DBCC SHRINKDATABASE(N'AdventureWorks', 10, TRUNCATEONLY)

    Reorganize Index(重新组织索引)
    重新组织 SQL Server 数据库表和视图中的索引。 通过使用“重新组织索引”任务,包可以重新组织单个数据库或多个数据库中的索引。如果此任务仅重新组织单个数据库中的索引,则可以选择任务要重新组织其索引的视图或表。“重新组织索引”任务还包含压缩大型对象数据的选项。大型对象数据是具有 image 、text、ntext、varchar(max)、nvarchar(max)、varbinary(max) 或 xml 数据类型的数据。
    此任务封装了 Transact-SQL ALTER INDEX 语句。
    如果选择压缩大型对象数据,则该语句使用 REORGANIZE WITH(LOB_COMPACTION = ON) 子句,否则 LOB_COMPACTION 将设置为 OFF。
    生成代码:(只选择了Employee表)
    --选择compact large objects
    ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources].[Employee] REORGANIZE WITH ( LOB_COMPACTION = ON )
    --不选择
    ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources].[Employee] REORGANIZE WITH ( LOB_COMPACTION = OFF )

    Rebuild Index(重新生成索引)
    重新生成 SQL Server 数据库表和视图中的索引。包可 以重新生成单个数据库或多个数据库中的索引。如果任务仅重新生成单个数据库中的索引,则可以选择任务要 重新生成其索引的视图和表。使用默认可用空间重新组织页删除数据库中表上的索引,并使用在创建索引时指 定的填充因子重新创建索引。
    此任务封装 ALTER INDEX REBUILD 语句并提供下列索引重新生成选项:
    Reorganize pages with the default amount of free space
    指定 FILLFACTOR 百 分比或使用原始的 FILLFACTOR 量。
    Change free space per page percentage to:
    填充索引使用 PAD_INDEX 选项可以在索引创建过程中设置中间级页中的可用空间百分比。将每页的可用空间百分比更改,删除数据库中表上的索引,并使用新的、自动计算的填充因子重新创建索引,从而在索引页上保留指定的可用空间。
    Sort results in tempdb
    使用 SORT_IN_TEMPDB 选项,该选项确定在索引创建 过程中生成的中间排序结果的临时存储位置。使用索引的IGNORE_DUP_KEY 选项,该选项指定对唯一聚集或非聚集索引上多行 INSERT 事务中的重复键值的错误响应 。
    Keep index online while reindexing
    使用 ONLINE 选项,用户可以在索引操作期间访问基础表或聚集索引数据以及任何关联的非聚集索引。
    生成代码:(只选择了Employee表)
    ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources]. [Employee] REBUILD WITH ( FILLFACTOR = 90, PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, SORT_IN_TEMPDB = OFF, ONLINE = OFF )

    Updata Statics(更新统计信息)
    为指定的表或索引视图中的一个或多个统计信息组( 集合)更新键值分布信息。
    此任务封装 UPDATE STATISTICS 语句。
    All existing statistics
    如果更新应用于所有统计信息,则暗示使用 WITH ALL 子句。
    Column statistics only
    如果更新仅 应用于列,则包含 WITH COLUMN 子句。
    Index statistics only
    如果更新仅应用于索引,则包含 WITH INDEX 子句。
    Full scan
    全部统计
    Sample by
    从每个索引所对应的表中抽样的数据,此样本的大小取决 于表中的行数和数据修改的频率。
    生成代码:(只选择了Employee表)
    UPDATE STATISTICS [HumanResources].[Employee]
    WITH FULLSCAN

    Clean Up History(清除历史记录)
    使用“清除历史记录”对话框,可以放 弃 msdb 数据库表中旧的历史信息。此任务支持对备份和还原历史记录、Microsoft SQL Server 代理作业历史记录和维护计划历史记录进行删除。
    此任务封装 sp_delete_backuphistory 系统存储过程并将指定日期作为参数传递给该过程。
    选项:
    Backup and restore history
    Sql Server Agent job history
    Maintenance plan history

    生成代码:
    declare @dt datetime select @dt = cast(N'2007-05
     
    -31T08:00:00' as datetime)
    exec msdb.dbo.sp_delete_backuphistory @dt
    GO
    EXEC msdb.dbo.sp_purge_jobhistory  @oldest_date=@dt
    GO
    EXECUTE msdb..sp_maintplan_delete_log null,null,@dt
    GO

    Execute Sql Server Agent Job(执行 SQL Server 代理作业)
    任务运行 SQL Server 代理作业。SQL Server 代理作业能够自动执行您需要重复执行的任务。
    此任务封装 sp_start_job 系统 过程并把 SQL Server 代理作业的名称作为参数传递给该过程。

    Back Up Database Task
    备份用的,太熟悉了,不介绍了。

    Maintenance Cleanup Task
    此任务封装 master.dbo.xp_delete_file 系统过程,用来删除备份文件。

    Execute T-SQL Statement Task
    执行T-SQL 任务运行Transact-SQL 语句。这个任务用向导的时候是没有的,要到设计视图里面去拖出来。

    Notify Operator Task
    通知操作员任务将通知消息发送到 SQL Server 代理操作员。此任务是唯一一个不封装 Transact-SQL 语句或 DBCC 命令的数据库维护任务。

    执行维护计划最好按一定的顺序,首先是执行检查数据库完整性,然后是收缩数据库,重新生成索引或者重新组织索引任务,最后是更新统计信息。

    重新生成索引或者重新组织索引要根据情况选择不同的操作,两个一起选择没有什么意义。决定使用哪种碎片整理方法的第一步是分析索引以确定碎片程度。使用系统函数 sys.dm_db_index_physical_stats 可以检测特定索引、表或索引视图的所有索引、一个数据库中的所有索引或所有数据库中的所有索引中的碎片。知道碎片程度后,可以确定修复碎片的最佳方法。索引碎片不太多时,可以重新组织索引。不过,如果索引碎片非常多,重新生成索引则可以获得更好的结果。

    这些任务都是一个星期运行一次.
     

     
     
     

    展开全文
  • Oracle DB 数据库维护

    万次阅读 2013-10-13 19:23:55
    • 管理优化程序统计信息 • 管理自动工作量资料档案库(AWR) ...通过复杂的Oracle DB 基础结构,可以方便地执行预先数据库维护,主要包括以下要素: • 每个Oracle DB 中都有一个内置的资料档案库,即自动
    • 管理优化程序统计信息
    • 管理自动工作量资料档案库(AWR)
    • 使用自动数据库诊断监视器(ADDM)
    • 说明和使用指导框架
    • 设置预警阈值
    • 使用服务器生成的预警
    • 使用自动任务
     
    • 数据库维护
     
    通过复杂的Oracle DB 基础结构,可以方便地执行预先数据库维护,主要包括以下要素:
    • 每个Oracle DB 中都有一个内置的资料档案库,即自动工作量资料档案库(AWR)。
    Oracle DB 服务器会定期为所有重要统计信息及工作量信息创建快照,并将这些数据存储在AWR 中。用户可以对捕获的数据进行分析,也可以由数据库自己进行分析,
    或者两者兼有。
    • 数据库使用自动任务执行常规维护操作,如定期备份、刷新优化程序统计信息以及数据库健康检查。
    被动数据库维护包括数据库健康检查器发现的严重错误和状态:
    • 当出现无法自动解决并需要通知管理员的问题(如用完空间时)时,Oracle DB 服务器会提供服务器生成的预警。Oracle DB 服务器默认情况下会监视其本身,并发送预警通知发生的问题。预警不仅通知你出现问题,通常还会就如何解决报告的问题提供建议。
    • 建议由一些指导生成,其中每个指导负责一个子系统。例如,有内存指导、段指导和SQL 指导。
     
     
    • 查看预警历史记录
    “Alert History(预警历史记录)”页会显示一个图表,图表上根据指定的时间段显示当前数据库的预警历史记录。出现预警表明可能存在问题:不是监视度量达到警告阈值或严重阈值,就是表明目标不再可用。单击“Alert History(预警历史记录)”页上列出的度量名称可获得每个预警的详细统计信息、图形和实际时间戳。此外,该页上还提供了一个输入预警相关注释(如解决方案信息)的位置。
     
    • 术语
    • 自动工作量资料档案库(AWR):是用于数据搜集、分析和提供解决方案建议的基础结构
    • AWR 基线:用于性能比较的一组AWR 快照
    • 度量:累计统计数据中的更改率
    • 统计信息:提供数据库和对象详细信息的数据集合
    – 优化程序统计信息:供查询优化程序使用
    – 数据库统计信息:用于了解性能
    • 阈值:比较度量值时所根据的边界值
     
    自动工作量资料档案库(AWR) 通过为内部Oracle 服务器组件提供服务来收集、处理、维护和使用性能统计信息,以便进行问题检测和自优化。活动会话历史记录(ASH) 是存储在AWR 中的最近会话活动的历史记录。
    统计信息是一些数据的集合,可提供有关数据库及数据库中对象的详细信息。查询优化程序会使用优化程序统计信息为每个SQL 语句选择最佳执行计划。数据库统计信息则提供用于性能监视的信息。
    AWR 快照包括数据库统计信息和度量、应用程序统计信息(事务处理量和响应时间)、操作系统统计信息及其它度量。AWR 基线是在一段时间内收集的一组AWR 快照。基线用于性能比较,这既可以是当前性能与基线的比较,也可以是一个基线与另一基线的比较。
    在Oracle Database 11g中,默认情况下会收集“系统移动窗口”基线。系统移动窗口基线是一组不断变化的快照,默认情况下包括最近八天的快照。收集了足够的数据并且计算了统计信息之后,此基线就会变为有效。默认情况下,统计信息计算被安排在每周六的午夜。
     
    • Oracle 优化程序:概览
    Oracle 优化程序可确定最有效的执行计划,这是处理任何SQL 语句最重要的一步。
    该优化程序可以:
    • 对表达式和条件求值
    • 使用对象和系统统计信息
    • 确定如何访问数据
    • 确定如何联接表
    • 确定最有效的路径
     
    优化程序是Oracle DB 的一部分,用于为SQL 语句创建执行计划。确定执行计划是处理任何SQL 语句的重要一步,会对执行时间产生重大影响。
    执行计划是执行语句时按顺序执行的一系列操作。优化程序会考虑许多与被引用对象相关的以及与查询中所指定的条件相关的因素。优化程序所需的信息包括:
    • 为系统(I/O、CPU 等)以及方案对象(行数、索引等)搜集的统计信息
    • 字典中的信息
    • WHERE子句限定符
    • 开发人员提供的提示
    使用诊断工具(如Enterprise Manager、EXPLAIN PLAN和SQL*Plus AUTOTRACE)时,可以看到优化程序选择的执行计划。
    注:根据其功能的不同,Oracle 优化程序具有两个名称:“查询优化程序”和“自动优化程序”。
     
    • 优化程序统计信息
    优化程序统计信息:
    • 是某一时间点的快照
    • 每次重新启动实例后会变为永久信息
    • 可自动收集
    SQL> SELECT COUNT(*) FROM hr.employees;
    COUNT(*)
    ----------
    214
    SQL> SELECT num_rows FROM dba_tables
    2 WHERE owner='HR' AND table_name = 'EMPLOYEES';
    NUM_ROWS
    ----------
    107
     
    优化程序统计信息
    优化程序统计信息包括表、列、索引和系统的统计信息表和索引的统计信息存储在数据字典中。这些统计信息不提供实时数据。而是为优化程序提供数据存储和数据分发的正确统计快照,优化程序会使用该快照来决定如何访问数据。
    收集的统计信息包括:
    • 数据库块中表或索引的大小
    • 行数
    • 平均行大小和链计数(仅限表)
    • 已删除叶行的高度和数量(仅限索引)
    插入、删除和修改数据后,这些统计信息会发生变化。由于维护实时数据分发统计信息会对性能带来负面影响,因此,通过定期搜集表和索引的统计信息来更新这些统计信息。
    优化程序统计信息由自动维护作业自动收集,该作业默认情况下在预定义的维护窗口中每日运行一次。系统统计信息是优化程序要使用的操作系统特征。不会自动收集这类统计信息。优化程序统计信息不同于AWR 快照中搜集的数据库性能统计信息。
     
     
     
    • 使用“管理优化程序统计信息”页
    要在Enterprise Manager 中管理优化程序统计信息,请单击“Server(服务器)”选项卡,然后单击“Query Optimizer(查询优化程序)”部分下的“Manage Optimizer Statistics(管理优化程序统计信息)”。
    在此页上,可以对统计信息执行下列任务:
    • 手动搜集优化程序统计信息。
    • 将优化程序统计信息还原到以前的某个时间点。选择的时间点必须位于优化程序统计信息保留期内,默认为30 天。
    • 锁定优化程序统计信息以确保永远不覆盖某些对象的统计信息。如果在存在很有代表性的数据时计算了某个表的统计信息,而你又希望永远保留这些统计信息,那么该任
    务就很有帮助。如果锁定了统计信息,表的任何波动都不会影响这些统计信息。
    • 取消对优化程序统计信息的锁定以撤消以前执行的锁定。
    • 删除优化程序统计信息以删除统计信息。
    最佳实践提示
    可使用自动维护任务搜集优化程序统计信息。要启用搜集优化程序统计信息的任务,必须确保STATISTICS_LEVEL初始化参数设置为TYPICAL或ALL。
     
    • 手动搜集优化程序统计信息
    某些时候可能需要手动搜集统计信息,例如表的内容在两次自动搜集作业之间发生了很大的变化,以致于统计信息无法再准确表示表。对于24 小时内其大小变化超过10% 的大型表,通常需要此操作。
    最佳实践提示:收集统计信息的频率应足够高,以保证表在两个收集期之间的变化率不超过10%。这可能需要手动收集统计信息或使用其它维护窗口。
    可以使用Enterprise Manager 或DBMS_STATS程序包手动收集统计信息。系统统计信息只能使用DBMS_STATS程序包来搜集。系统统计信息向查询优化程序描述了系统的硬件特征,例如I/O 以及CPU 性能和利用率。
    选择“Gather Optimizer Statistics(搜集优化程序统计信息)”菜单会启动一个向导,使用该向导可以为要搜集优化程序统计信息的作业选择作用域、对象、选项和调度。该向导会在你指定的以下作用域提交DBMS_STATS.GATHER_*_STATS作业:表、方案或数据库。
    在该向导中,将首选项设置为DBMS_STATS程序包所使用的默认值,并将此作业安排在你决定的时间运行。
    不建议手动搜集常规统计信息,因为通过维护窗口搜集统计信息的效率更高,而且对用户的影响更小。如果自动作业已失败或已禁用,也可提交手动作业。
     
    此外,还可以直接通过DBMS_STATS程序包搜集优化程序统计信息:
    SQL> EXEC dbms_stats.gather_table_stats('HR','EMPLOYEES');
    SQL> SELECT num_rows FROM dba_tables WHERE owner='HR' AND table_name = 'EMPLOYEES';
    NUM_ROWS
    ----------
    214
    注意,现在的行数正确地反映了截止到搜集统计信息时表中的行数。通过DBMS_STATS还可对整个方案甚至整个数据库启用手动收集统计信息。
    除非工作量发生了显著变化,否则系统统计信息不会改变。因此,不需要频繁调整系统统计信息。DBMS_STATS.GATHER_SYSTEM_STATS过程会在指定时间段内收集系统统计信息,你也可以启动系统统计信息的搜集过程并执行另一个调用来停止搜集。
    最佳实践提示:创建数据库时使用以下命令:
    SQL> EXEC dbms_stats.gather_system_stats('NOWORKLOAD');
    NOWORKLOAD选项会花费几分钟的时间(具体取决于数据库大小)来捕获I/O 特征的估计值,如平均读取查找时间和I/O 传输率。
     
     
    • 用于搜集统计信息的首选项


    可在各种级别调用DBMS_STATS.GATHER_*_STATS过程,以便搜集整个数据库或单个对象(比如表)的统计信息。调用GATHER_*_STATS过程时,通常可将其中的几个参数设置为默认值。提供的默认值适用于数据库中的多数对象,但对于某些对象或方案,需要更改这些默认值。在Oracle Database 11g中,可以为单个对象、方案或数据库设置值(称为“首选项”),也可以使用全局级命令更改默认值,而无需为每个对象运行手动作业。
    这些首选项指定了赋予搜集过程的参数。SET_*_PREFS过程为不属于SYS或SYSTEM的任何对象创建首选项值。对于应位于数据库范围内的任何参数,一般由DBA 为其设置全局首选项。这些过程适用于任何可设置为默认值的参数。
    设置指定的首选项时,SET_DATATBASE_PREFS过程会循环访问数据库中的所有表和方案。SET_SCHEMA_PREFS循环访问指定方案中的表。SET_TABLE_PREFS为单个表设置首选项值。
    无论是在数据库级、方案级还是在表级设置,所有对象首选项均保存在一个单个表中。
    在方案级更改这些首选项会覆盖以前在表级设置的首选项。
     
    在执行各种搜集过程时,这些过程会检索已经为每个对象设置的对象级首选项。你可以在DBA_TAB_STAT_PREFS视图中查看这些对象级首选项。未在对象级设置的所有首选项都会被设置为全局级首选项。通过对每个首选项调用DBMS_STATS.GET_PREFS过程,可以查看全局首选项。
    你可以在表级、方案级、数据库级和全局级设置、获取、删除、导出和导入这些首选项。
    首选项的值一般来说是按全局级向表级的顺序进行设置,最终将首选项应用于最小的组。
    如下实例:

     begin

    dbms_stats.gather_table_stats( 
    ownname=> 'HR', 
    tabname=> 'EMPLOYEES' , 
    estimate_percent=> DBMS_STATS.AUTO_SAMPLE_SIZE, 
    cascade=> DBMS_STATS.AUTO_CASCADE, 
    degree=> null, 
    no_invalidate=> DBMS_STATS.AUTO_INVALIDATE, 
    granularity=> 'AUTO', 
    method_opt=> 'FOR ALL COLUMNS SIZE AUTO');
    dbms_stats.lock_table_stats(ownname=> 'HR', tabname=> 'EMPLOYEES' );

    end;
    Oracle Database 11g中的首选项:
    • CASCADE,确定在搜集表统计信息的过程中是否收集索引统计信息。
    • DEGREE,设置用于搜集统计信息的并行度。
    • PUBLISH,用于确定是将统计信息发布到字典还是将其存储在专用区域中。这使得DBA 可以先验证统计信息,然后再使用PUBLISH_PENDING_STATS过程将其发布到数据字典。
    • STALE_PERCENT用于确定判断对象是否具有过时统计信息所依据的阈值级别。该值是自上次搜集统计信息以来已修改的行数百分比。
    exec dbms_stats. set_table_prefs('SH','SALES','STALE_PERCENT ','13');
    示例仅将SH.SALES的默认值10%更改为13%。
    • INCREMENTAL,以增量方式搜集分区表的全局统计信息。
    • METHOD_OPT,确定列和用于搜集列统计信息的直方图参数。
    • GRANULARITY,确定收集统计信息的粒度(仅当表为分区表时才适用)。
    • NO_INVALIDATE,确定是否使游标失效。
    • ESTIMATE_PERCENT,确定为获得有效的统计信息而采样的行数。它是表中行数的百分比。

    使用DBMS_STATS.DELETE_*_PREFS过程,可在表级、方案级和数据库级删除首选项。
    使用DBMS_STATS.RESET_PARAM_DEFAULTS过程,可将全局首选项重置为建议值。
    • 自动工作量资料档案库(AWR)
    • 内置的性能信息资料档案库
    • 每60 分钟获取一次数据库度量快照,保留期为八天
    • 所有自我管理功能的基础
     
    自动工作量资料档案库(AWR)
    AWR 是为Oracle Database 11g组件提供服务的基础结构,借助它可以收集、维护和利用统计信息进行问题检测和自优化。可将此基础结构视为数据库统计信息、度量等的数据仓库。
    数据库(默认情况下)每60 分钟从SGA 中自动捕获一次统计信息,然后将其以快照形式存储在AWR 中。这些快照通过一个名为易管理性监视器(MMON) 的后台进程存储在磁盘上。默认情况下,快照会保留八天。你可以修改快照时间间隔和保留间隔。
    AWR 中包含数百个表,所有这些表均属于SYSMAN方案且存储在SYSAUX表空间中。
    Oracle 建议仅使用Enterprise Manager 或DBMS_WORKLOAD_REPOSITORY程序包访问资料档案库,对AWR 进行操作。不支持直接对资料档案库表进行DML 操作。
    • AWR 基础结构
    AWR 基础结构由两个主要部分组成:
     一个内存中统计信息收集工具,Oracle Database 11g组件使用它来收集统计信息。出于性能方面的考虑,这些统计信息存储在内存中。可以通过动态性能(V$) 视图访问存储在内存中的统计信息。
    • 代表该工具持久部分的AWR 快照。AWR 快照可以通过数据字典视图和EnterpriseManager Database Control 来访问。
    出于以下几方面的考虑,统计信息存储在持久存储中:
    • 实例崩溃后统计信息需要仍然可用。
    • 某些分析需要使用历史记录数据进行基线比较。
    • 可能会发生内存溢出。当旧统计信息因内存不足而被新统计信息替换时,被替换的数据可以存储起来供以后使用。
    内存版本的统计信息定期通过MMON后台进程转移到磁盘上。使用AWR 时,Oracle DB可自动捕获历史统计信息,而不需要DBA 进行干预。
     
     
    • AWR 基线
    AWR 基线是一个AWR 快照集。通常是在AWR 中标记和保留的某个重要时段的快照数据的集合。基线是用一对快照定义的;这两个快照通过其快照序列号(snap_id) 或起始和结束时间进行标识。每个快照集都有起始和结束快照,并包含位于这两个快照之间的所有快照。快照集用于保留快照数据。因此,默认情况下,在删除快照集前,属于快照集的快照会一直保留。可以根据快照要保留的天数设置一个过期值。
    基线通过用户提供的名称来标识。执行CREATE_BASELINE过程可基于一个快照集创建基线,并可以指定名称和一对快照标识符。对于新创建的基线,会为其分配一个在数据库生命周期内唯一的基线标识符。通常是基于过去有代表性的时段建立快照集,以用于与当前系统行为进行比较。你也可以在Database Control 中使用基线来设置基于阈值的预警。可以使用该过程的过期参数设置以天数表示的过期时间。默认值为NULL,表示“永不过期”。
    可从DBA_HIST_SNAPSHOT或Database Control 中直接获取snap_id。

     
    • Enterprise Manager 和AWR
    单击“Server(服务器)”选项卡,然后单击“Statistics Management(统计信息管理)”部分中的“Automatic Workload Repository(自动工作量资料档案库)”。
    在“AutomaticWorkload Repository(自动工作量资料档案库)”页上,单击“Edit(编辑)”更改设置。在“Automatic Workload Repository(自动工作量资料档案库)”页上,可执行下列操作:
    • 编辑工作量资料档案库设置
    • 查看已创建的快照的详细信息,或者手动创建新快照
    • 创建AWR 基线
    • 生成AWR 报表
     
    • 管理AWR
    • 保留期
    – 默认:八天
    – 考虑存储需要
    • 收集间隔
    – 默认:60 分钟
    – 考虑存储需要和
    性能影响
    • 收集级别
    – Basic(禁用多数ADDM 功能)
    – Typical(建议级别)
    – All(将其它SQL 优化信息添加到快照中)
    AWR 设置中包括保留期、收集间隔和收集级别。请记住,降低其中任何设置都会影响依赖于AWR 的组件(包括指导)的功能。
    增大设置可改进指导建议,但是会增加存储快照所需的空间,而且收集快照信息时的性能会下降。
    优化新应用程序时,请考虑将收集级别设置为ALL。使用ALL设置可收集SQL 执行计划和定时统计信息,这些信息可以改进SQL 指导的建议。优化完成后,应重新将此设置设回TYPICAL。
    示例:
    将保留期改为9天,时间间隔改为2小时。
    begin DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(12960,120); end;
    将保留期改为永远保留和关闭快收集。
     begin DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(0,0); end;
    将收集级别改为ALL或者BASIC。
    ALTER SYSTEM SET statistics_level = "ALL" SCOPE=MEMORY
    ALTER SYSTEM SET statistics_level = "BASIC" SCOPE=MEMORY
     
    • 统计级别
    STATISTICS_LEVEL初始化参数可控制对各种统计信息和各种指导的捕获,其中包括自动维护任务。自动维护任务包括搜集优化程序统计信息。STATISTICS_LEVEL参数
    可设置为以下级别:
    • BASIC:AWR 统计信息和度量的计算被关闭。自动优化程序统计信息任务被禁用,所有指导和服务器生成的预警也被禁用。
    • TYPICAL:收集数据库自我管理所需的主要统计信息。这些统计信息表示监视OracleDB 行为通常需要的信息。这包括自动搜集统计信息,以减少由于统计信息过时或无
    效而导致不正确执行SQL 语句的可能性。
    • ALL:捕获所有可能的统计信息。此捕获级别增加了计时操作系统统计信息和计划执行统计信息。多数情况下并不需要这些统计信息,为了获得最佳性能,不应启用这些
    统计信息;有时执行特定的诊断测试时需要这些统计信息。
    Oracle 建议将STATISTICS_LEVEL初始化参数设置为默认值TYPICAL。如果将该参数的值设置为BASIC,则会禁用自动搜集优化程序统计信息功能。
     
    • 自动数据库诊断监视器(ADDM)
    • 在记录每个AWR 快照之后运行
    • 监视实例;检测瓶颈
    • 在AWR 中存储结果
     
    自动数据库诊断监视器(ADDM)
    与其它指导不同,ADDM 在记录每个AWR 快照之后会自动运行。每次记录快照后,ADDM 会分析与最后两个快照对应的时段。ADDM 会预先监视实例,以便在大多数瓶颈问题成为严重问题之前检测到这些问题。多数情况下,ADDM 会为检测到的问题提供建议解决方案,甚至可以量化这些建议的优势。
    ADDM 检测到的一些常见问题包括:
    •CPU 瓶颈
    • Oracle Net 连接管理不佳
    • 锁争用
    • 输入/输出(I/O) 能力差
    • 数据库实例内存结构大小不足
    •SQL 语句的负载过高
    • PL/SQL 和Java 时间过高
    • 检查点负载过高及原因(例如,日志文件太小)
    每次ADDM 分析的结果都存储在AWR 中,并可通过Enterprise Manager 进行访问。
     
    • ADDM 查找结果
    在“Automatic Database Diagnostic Monitor (ADDM)(自动数据库诊断监视器(ADDM))”页中,可查看上次运行ADDM 的详细查找结果。数据库时间表示会话在分析时段在数据库中花费的非空闲时间总和。为每个查找结果都提供了一个特定的影响百分比。此影响百分比表示相应问题消耗的时间与分析时段的数据库时间之比。
    在幻灯片中,请注意以下几点:
    1..此图标表示在此页底部显示的ADDM 输出对应于此时间点。单击其它图标可转到过去的时间(用于查看以前的分析)。
    3.这些查找结果提供一个简短概要,按可优化区域显示ADDM 找到的问题。单击特定问题,可以转至“Performance Finding Details(性能查找结果详细资料)”页。
    单击“View Report(查看报表)”按钮可以获得文本报表格式的性能分析详细资料。
     
    • ADDM 建议
    在“Performance Finding Details(性能查找结果详细资料)”页中,会得到用于解决相应问题的建议。这些建议分为“Schema(方案)”、“SQL Tuning(SQL 优化)”、
    “Database Configuration(数据库配置)”和其它许多类别。如果实施建议,则“Benefit(%)(缩时比率(%))”列将显示数据库已用时间的最大减少量。
    ADDM 将考虑对系统的各种更改。其建议可以包括:
    • 硬件更改:添加CPU 或更改I/O 子系统配置
    • 数据库配置:更改初始化参数设置
    • 方案更改:对表或索引进行散列分区,或者使用自动段空间管理(ASSM)
    • 应用程序更改:对序列使用高速缓存选项,或使用绑定变量
    • 使用其它指导:在高负载SQL 上运行SQL 优化指导或在热对象上运行段指导
     
     
    • 指导框架

    指导可提供有关资源占用率和各个服务器组件性能的有用反馈。例如,内存指导为MEMORY_TARGET初始化参数提供建议值,该参数用于控制Oracle DB 实例所使用的总
    内存量。
    由于ADDM 依赖于AWR 中捕获的数据,因此Oracle DB 通过ADDM 可诊断自身的性能并确定如何解决识别出的问题。ADDM 在每次捕获AWR 统计信息后会自动运行。它可能还会调用其它指导。
    下面是指导基础结构提供的主要优点:
    • 所有指导都使用统一的界面。
    • 通过使用工作量资料档案库,所有指导拥有共用的数据源和结果存储空间。
    上图未显示所有指导(例如,未列出数据恢复指导和SQL 修复指导)。

    自动数据库诊断监视器(ADDM)
    ADDM 是一个基于服务器的专用软件,它每隔60 分钟复查一次数据库的性能。ADDM 的目标是提前检测出可能存在的系统瓶颈,并在系统性能明显降低之前提供建议的修复办法。
     
    内存指导
    内存指导实际上是多项指导功能的集合,通过它可确定数据库实例所使用的总内存的最佳设置。系统全局区(SGA) 为共享池、数据库缓冲区高速缓存、Java 池和流池提供了一组指导。Java 池和流池指导不显示在EM 的“Memory Advisor(内存指导)”页上。还有一个指导针对程序全局区(PGA)。除了指导功能外,本指导还为大型池和Java 池提供了一个中央控制点。
    平均恢复时间(MTTR) 指导
    使用MTTR 指导,可设置实例崩溃后数据库恢复所需的时间长短。
    段指导
    此指导用于查找占用空间多于所需空间的表和索引。此指导会在表空间级或方案级检查造成低效率的空间消耗问题,如果可能,还会生成脚本来减少空间消耗。
    SQL 访问指导
    此指导用于分析在给定时段发出的所有SQL 语句,还就其它索引或实体化视图(可提高性能)的创建提供建议。
    SQL 优化指导
    此指导用于分析单个SQL 语句,还提供建议以改进该语句的性能。建议中可包括重写语句、更改实例配置或添加索引等操作。不会直接调用SQL 优化指导,而是从其它工具
    (如顶级SQL 或顶级会话)中调用它,以帮助优化影响大的SQL 语句。
    还原管理指导
    使用还原管理指导时,可确定支持指定的保留期所需要的还原表空间大小。

    数据恢复指导
    此指导自动诊断持续性数据故障,向用户提供修复选项并根据用户的请求执行修复。数据恢复指导的用途是减少平均恢复时间(MTTR) 并提供用于自动修复数据的集中式工具。
    SQL 修复指导
    如果某一SQL 语句因严重错误而失败,进而导致在自动诊断资料档案库中生成问题,则可运行SQL 修复指导。该指导会对该语句进行分析,并在多数情况下会推荐一个补丁程序来修复该语句。如果实施了建议,所应用的SQL 补丁程序会让查询优化程序选择一个替代执行计划以备将来执行,从而避免故障。此操作无需更改该SQL 语句本身即可完成。
     
    • Enterprise Manager 和指导
    “Advisor Central(指导中心)”页是所有指导的主页。在Database Control 主页的“Related Links(相关链接)”列表中,单击“Advisor Central(指导中心)”链接可访问
    此页。但是,Database Control 中并不是只有这一个可调用指导的地方。还可以在某些上下文中访问指导。
    在“Advisor Central(指导中心)”页的“Advisors(指导)”选项卡上,可以列出工作量资料档案库中注册的所有指导任务。还可以按指导类型和预定义时段过滤此列表。、
    通过“Advisor Central(指导中心)”页的“Checkers(检查器)”选项卡,可以调度各种数据库完整性检查器。可按名称、类型或时段列出所有检查器运行。
    注:使用“Change Default Parameters(更改默认参数)”页可更改将来所有任务的默认到期时间(以天为单位)。还可以使用此页更改某些重要指导的参数。
     
    • DBMS_ADVISOR程序包
    DBMS_ADVISOR程序包中包含所有指导模块的所有常数和过程声明。使用这个程序包可从命令行执行任务。
    要执行指导过程,必须具有ADVISOR权限。使用ADVISOR权限可对指导过程和视图进行全权访问。

     
    • 自动维护任务
    自动任务维护进程:
    1. 打开维护窗口。
    2. 自动任务后台进程调度作业。
    3. 调度程序启动作业。
    4. 资源管理器限制自动任务作业的影响。
    默认自动任务维护作业:
    • 搜集优化程序统计信息
    • 自动段指导
    • 自动SQL 指导
     
    自动维护任务
    通过分析AWR 中存储的信息,数据库可确定是否需要执行常规维护任务,如刷新优化程序统计信息。自动维护任务基础结构使Oracle DB 能够自动执行这些操作。这种基础结构使用调度程序在预定义的维护窗口中运行这些任务。
    默认情况下,工作日维护窗口在晚上10 点启动,并持续4 小时。在周六和周日,维护窗口在早上6 点启动,并持续20 小时。维护窗口的所有属性均可自定义,这些属性包括起始时间和结束时间、频率、每周几天等等。另外,通过将数据库资源管理器资源计划与维护窗口关联,可限制自动维护任务对正常数据库操作的影响。
    维护示例:
    • 使用自动维护任务基础结构自动刷新优化程序统计信息。
    • 自动段指导有默认的作业,这些作业在维护窗口中运行。
    • 使用DBCA 创建数据库时,可启动常规数据库备份。
     
    在“Server(服务器)”页上单击“Scheduler(调度程序)”标题下的“AutomatedMaintenance Tasks(自动维护任务)”可访问“Automated Maintenance Task(自动维护
    任务)”页,在该页可以查看自动维护任务调度和最近历史记录。从此处可细化到某些任务的详细资料。单击“Configure(配置)”进入“Automated Maintenance Tasks
    Configuration(自动维护任务配置)”页。任务将在窗口中执行。图中显示的是已在其中执行一个任务的上一个窗口和计划在其中执行该任务的下一个窗口。
    注:示例中显示的是默认任务窗口。如果维护窗口关闭,则调度程序默认情况下会终止优化程序统计信息搜集作业。之后会在下一个维护窗口中处理剩余对象。
     
    • 自动维护任务配置
    在“Automated Maintenance Tasks Configuration(自动维护任务配置)”页上,可一次全部或者按单个任务或特定窗口启用和禁用自动维护任务。还可以配置用于搜集优化程序统计信息的设置以及自动SQL 优化指导的作业控制参数。
    选择窗口名称以查看或编辑窗口调度。
    单击“Edit Window Group(编辑窗口组)”在窗口组中添加和删除窗口。
     
    • 服务器生成的预警
    预警是当数据库处于不理想状态且需要引起注意时发出的通知。默认情况下,Oracle DB通过Enterprise Manager Database Control 提供预警。也可选择配置Enterprise Manager 以向管理员发送有关问题状况的电子邮件,还可在控制台上显示预警信息。
    另外,还可为系统的多个相关度量设置阈值。如果数据库偏离正常读数太多而达到了这些阈值,Oracle Database 11g会预先发送通知。提前通知潜在的问题,可使用户迅速作出响应,并通常在用户注意到这些问题之前就解决这些问题。
    默认情况下受监视的度量大约有60 个,其中包括:
    • 中断作业计数
    • 等待所用的数据库时间百分比(%)
    • 转储区占用率(%)
    • 参照基线的SQL 响应时间百分比(%)
    • 表空间占用率(%)
    • 一般意外事件
     
    另外一些可提前提供问题通知的重要度量有:
    • 平均文件读取时间(厘秒)
    • 响应时间(每事务处理)
    • 等待时间(%)
     
    • 设置阈值
    要设置或编辑整个数据库的阈值,在数据库主页的“Related Links(相关链接)”区域中单击“Metric and Policy Settings(度量和策略设置)”。输入所需的警告阈值和严重阈值。数据库达到指定的值时,就会出现相应的预警。
    已设置的阈值显示在“Metrics with thresholds(带有阈值的度量)”列表中。默认情况下,大约有60 个度量包含预先设置的阈值;可以根据需要更改这些阈值。“All metrics(所有度量)”列表会显示未设置阈值的度量。
    单击其中一个“Edit(编辑)”图标可访问一个页面,在该页可为警告阈值或严重阈值指定其它更正操作。
    单击“Collection Schedule(收集调度)”链接并更改已调度的收集时间间隔。请注意,每个调度都会影响一组度量。
     
    • 创建和测试预警
    1. 指定阈值。
    2. 创建测试用例。
    3. 检查预警。
     

    示例
    设置当INVENTORY表空间中使用的空间超过75% 时需要收到严重预警。(此表空间不允许其数据文件自动进行扩展)。要创建和测试该预警,请执行以下步骤:
    1.在Enterprise Manager 中,导航到“Metrics and Policy Settings(度量和策略设置)”页,然后单击“Tablespace Used (%)(已用表空间百分比(%))”阈值的“Edit(编
    辑)”图标。为表空间设置所需的阈值。
    2.在“Tables(表)”页上的“Schema(方案)”选项卡下,创建一个表来测试预警。使用“Define using SQL(使用SQL 定义)”操作复制现有表。STORAGE子句中的初
    始设置为8 MB,这会使表立即在10 MB 的INVENTORY表空间中分配出80% 的空间。
    3.在收到指明此表无法扩展的错误后,请在“Database(数据库)”主页中查看关联的预警。默认情况下,每10 分钟会收集一次已用表空间百分比(%)。
    大多数预警都包含相关联指导的名称,调用该指导可获得详细建议。对于每一条相应的预警消息,Database Control 都会提供一个链接以供调用相应的指导。
     
    • 预警通知
    通知机制使用Enterprise Manager 用户界面。通知机制建立在通知规则概念的基础上,通知规则又确定了一组即将发出预警的相应通知机制。
    使用Database Control 编辑通知规则。在主页上,单击“Preferences(首选项)”链接显示“General(一般信息)”页,在该页中可指定接收通知的电子邮件地址。
    在“General(一般信息)”页中,单击“Notification(通知)”区域中的“Rules(规则)”链接。选择“Database Availabilityand Critical States(数据库可用性和严重状态)”
    规则,然后单击“Edit(编辑)”按钮。此时会进入“Edit Notification Rule: DatabaseAvailability and Critical States(编辑通知规则:数据库可用性和严重状态)”页,在该页单击“Metrics(度量)”选项卡并编辑要接收通知的度量。
     
    可以指定在出现特定预警时由Enterprise Manager 直接向你发出通知。例如,如果你指定要接收严重预警的电子邮件通知,并且为每个调用度量的系统响应时间设置了严重阈值,那么,你可以发送一封电子邮件消息,其中包含类似于以下内容的消息:
    Host Name=mydb.us.mycompany.com
    Metric=Response Time per Call
    Timestamp=08-NOV-2005 10:10:01 (GMT -7:00)
    Severity=Critical
    Message=Response time per call has exceeded the threshold.
    See the latest ADDM analysis.
    Rule Name= Rule
    Owner=SYSMAN
    该电子邮件包含指向主机名及最新ADDM 分析的链接。
    默认情况下,处于严重状态(如“数据库已关闭”、“一般预警日志错误状态”和“已用表空间”)的预警已设置发送通知。但是,要收到这些通知,必须按照以下步骤设置电子
    邮件信息:
    1.在任何Database Control 页中,单击页眉和页脚区中的“Setup(设置)”链接。
    2. 在“Setup(设置)”页中选择“Notification Methods(通知方法)”。
    3. 在“Notifications Methods(通知方法)”页的“Mail Server(邮件服务器)”区域中输入所需的信息。
    还有其它通知方法,这包括脚本和简化网络管理协议(SNMP) 陷阱。后者可用于与第三方应用程序进行通信。
    要收到通知,请执行以下操作:
    1. 在任何Database Control 页中,单击页眉和页脚区中的“Preferences(首选项)”链接。
    2. 在“Preferences(首选项)”页中选择“General(一般信息)”。在“E-mailAddresses(电子邮件地址)”区域中输入电子邮件地址。
    3. 可以有选择地编辑通知规则(如更改接收通知的严重状态)。要执行此操作,请单击“Notification Rules(通知规则)”。此时会出现“Notification Rules(通知规则)”页。

     
    • 对预警作出响应
    • 如果需要,应搜集更多的输入信息(如运行ADDM 或其它指导进行搜集)。
    • 调查严重错误。
    • 采取纠正措施。
    • 确认不会自动清空的预警。
     
    对预警作出响应
    收到预警时,按照预警提供的建议进行操作,或者可以考虑运行ADDM(或其它适当的指导),以便获取有关系统或对象行为的更多详细诊断信息。
    系统会为严重错误生成预警和意外事件。严重错误通常会生成收集到问题中的意外事件。
    可使用“Support Workbench(支持工作台)”进行调查并尽量向Oracle 技术支持报告问题。
    问题的起因消失后,会自动清空大多数预警(如“空间不足”)。但是,如果就其它预警(如“一般预警日志错误”)向你发送通知,则必须由你进行确认。采取必要的纠正措施
    后,可通过清空或清除预警进行确认。清空某个预警后,会将这个预警发送到预警历史记录,可在“Related Links(相关链接)”下的主页上浏览历史记录。清除一个预警会从预警历史记录中删除它。
    要清空类似“一般预警日志错误”的预警,请在“Diagnostic Summary(诊断概要)”下的主页上单击“Alert Log(预警日志)”链接。此时会出现“Alert Log Errors(预警日志错误)”页。选择要清空的预警,然后单击“Clear(清空)”。要清除一个预警,请选择这个预警,然后单击“Purge(清除)”。也可单击“Clear Every Open Alert(清理每个
    打开的预警)”按钮或“Purge Every Alert(清除每个预警)”按钮。
     
    • 预警类型和清空预警
    服务器生成预警分为两种类型:阈值预警和非阈值预警。
    大多数服务器生成的预警是通过对数据库度量设置警告阈值和严重阈值来配置的。可为120 多个度量定义阈值,这些度量包括:
    • 每秒的物理读取次数
    • 每秒的用户提交次数
    •SQL 服务响应时间
    除了表空间的空间占用率度量与数据库相关外,其它度量都与实例相关。阈值预警又称为“有状态预警”,清空预警条件后,会自动清空这些预警。有状态预警显示在
    DBA_OUTSTANDING_ALERTS中,清空后会转到DBA_ALERT_HISTORY。
    服务器生成的其它预警对应于特定的数据库事件,如ORA-*错误、“快照太旧”错误、“恢复区空闲空间过少”和“可恢复会话被挂起”等。这些都不是基于阈值的预警,又称
    为“无状态预警”。无状态预警会直接转到历史记录表。只在Database Control 环境中,清空无状态预警才有意义,因为Database Control 会在自身的资料档案库中存储无状态预警。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    展开全文
  • 本文介绍改变数据库自动维护任务(Automated Maintenance Tasks)相关的基础知识

    概述

    本文介绍改变数据库自动维护任务(Automated Maintenance Tasks)相关的基础知识和总体介绍。

    Oracle数据库通过预定义的维护窗口中,定期自动地运行一些维护任务,用于实现如统计信息收集、SQL调优顾问等工作,以减少DBA的工作量,使数据库最优。

    自动维护任务的演变

    Oracle在10g的版本上最初推出自动维护作业,并在11g版本开始改为自动维护任务,
    并在以后的版本上不断功能加强和追加新的功能。
    以下是自动维护任务在各个版本中主要变化:

    10g

    预定义的维护窗口(Maintenance Windows)

    在10g版本上,Oracle主要有2个预定义的维护窗口(Maintenance Windows):

    WEEKNIGHT_WINDOW : 周一到周五 每天22:00开始 ~ 次日06:00结束。
    WEEKEND_WINDOW   :周六和周日的全天
    

    通过这两个维护窗口, 组成MAINTENANCE_WINDOW_GROUP 用于管理维护作业(maintenance jobs)。

    预定义的自动系统任务(Predefined Automatic System Tasks)

    在10g版本上,主要有以下2个自动系统任务在维护窗口(Maintenance Windows)中运行。

    自动统计信息收集作业(Automatic Statistics Collection Job):
    
        收集数据库中所有无统计信息或统计信息过时的对象的统计信息,以便提高 SQL 执行的性能。
    
    自动段指导作业(Automatic Segment Advisor Job)       :
    
        识别是否有可用回收空间的段,并提出如何消除这些段中的碎片的建议。
    

    关于10g的维护作业的其他详细内容可以参考以下的在线文档。

    Database Administrator’s Guide

    >23 Managing Automatic System Tasks Using the Maintenance Window

    11g

    预定义的维护窗口(Maintenance Windows)

    在11g版本上,Oracle预定义了9个维护窗口(Maintenance Windows)。

    新追加的,每天的维护窗口:
    (周一到周五 每天22:00 ~ 次日02:00;周六和周日 06:00 ~ 次日02:00)

    MONDAY_WINDOW           : 周一 22:00 ~ 周二 02:00
    TUESDAY_WINDOW          : 周二 22:00 ~ 周三 02:00
    WEDNESDAY_WINDOW        : 周三 22:00 ~ 周四 02:00
    THURSDAY_WINDOW         : 周四 22:00 ~ 周五 02:00
    FRIDAY_WINDOW           : 周五 22:00 ~ 周六 02:00
    SATURDAY_WINDOW         : 周六 06:00 ~ 周日 02:00
    SUNDAY_WINDOW           : 周日 06:00 ~ 周一02:00
    

    为了兼容以前的版本而留下的维护窗口:(默认不使用)

    WEEKNIGHT_WINDOW : 周一到周五 每天22:00开始 ~ 次日06:00结束。
    WEEKEND_WINDOW   : 周六和周日的全天
    

    通过这九个维护窗口, 组成MAINTENANCE_WINDOW_GROUP 用于管理维护任务(maintenance tasks)。

    预定义自动维护任务(Automated Maintenance Tasks)

    在11g版本上,主要有以下3个自动管理维护任务在每天的维护窗口(Maintenance Windows)中运行。

    自动优化器统计信息收集(Automatic Optimizer Statistics Collection):
    
        收集数据库中所有无统计信息或统计信息过时的对象的统计信息,以便提高 SQL 执行的性能。
    
    自动段指导(Automatic Segment Advisor):
    
        识别是否有可用回收空间的段,并提出如何消除这些段中的碎片的建议。
    
    自动 SQL 优化指导(Automatic SQL Tuning Advisor):
    
        检查高负载 SQL 语句的性能,并提出如何优化这些语句的建议。
    

    关于11g的维护任务的其他详细内容可以参考以下的在线文档。

    Database Administrator’s Guide

    >26 Managing Automated Database Maintenance Tasks

    12c

    预定义的维护窗口(Maintenance Windows)

    在12c版本上,和11g一样,Oracle预定义了9个维护窗口(Maintenance Windows)。

    包括,每天的维护窗口:
    (周一到周五 每天22:00 ~ 次日02:00;周六和周日 06:00 ~ 次日02:00)

    MONDAY_WINDOW           : 周一 22:00 ~ 周二 02:00
    TUESDAY_WINDOW          : 周二 22:00 ~ 周三 02:00
    WEDNESDAY_WINDOW        : 周三 22:00 ~ 周四 02:00
    THURSDAY_WINDOW         : 周四 22:00 ~ 周五 02:00
    FRIDAY_WINDOW           : 周五 22:00 ~ 周六 02:00
    SATURDAY_WINDOW         : 周六 06:00 ~ 周日 02:00
    SUNDAY_WINDOW           : 周日 06:00 ~ 周一02:00
    

    为了兼容以前的版本而留下的维护窗口:(默认不使用)

    WEEKNIGHT_WINDOW : 周一到周五 每天22:00开始 ~ 次日06:00结束。
    WEEKEND_WINDOW   : 周六和周日的全天
    

    通过这九个维护窗口, 组成MAINTENANCE_WINDOW_GROUP 用于管理维护任务(maintenance tasks)。

    预定义自动维护任务(Automated Maintenance Tasks)

    在12c版本上,新追加了一个SQL计划管理(SPM)进化指导(SPM Evolve Advisor)任务,用于SQL计划管理计划(SPM)的进化;所以,主要有以下4个自动管理维护任务在每天的维护窗口(Maintenance Windows)中运行。

    自动优化器统计信息收集(Automatic Optimizer Statistics Collection):
    
        收集数据库中所有无统计信息或统计信息过时的对象的统计信息,以便提高 SQL 执行的性能。
    
    自动段指导(Automatic Segment Advisor):
    
        识别是否有可用回收空间的段,并提出如何消除这些段中的碎片的建议。
    
    自动 SQL 优化指导(Automatic SQL Tuning Advisor):
    
        检查高负载 SQL 语句的性能,并提出如何优化这些语句的建议。
    
    SQL计划管理(SPM)进化指导(SPM Evolve Advisor):
    
        针对新追加的SQL计划管理计划进行进化。
    

    关于12c的维护任务的其他详细内容可以参考以下的在线文档。

    Database Administrator’s Guide

    >26 Managing Automated Database Maintenance Tasks

    各版本的主要变化

    自动维护任务各版本的主要变化可以参考下表:

    TeacherWhat

    版权声明:本文为博主原创文章,转载必须注明出处,本人保留一切相关权力!http://blog.csdn.net/lukeunique

    自动维护任务的控制(启用、禁用、更改)

    可以通过如下的方法对自动维护任务进行控制。

    10g

    1.针对特定维护作业的操作

    启用方法:

    EXECUTE DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');
    EXECUTE DBMS_SCHEDULER.ENABLE('AUTO_SPACE_ADVISOR_JOB');
    

    禁用方法:

    EXECUTE DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
    EXECUTE DBMS_SCHEDULER.DISABLE('AUTO_SPACE_ADVISOR_JOB');
    

    2.确认各个维护作业的状态:

    select job_name,enabled 
    from dba_scheduler_jobs 
    where job_name in ( 'GATHER_STATS_JOB', 'AUTO_SPACE_ADVISOR_JOB');
    
    1. 维护窗口设定更改:

    可以通过DBMS_SCHEDULER.SET_ATTRIBUTE程序包对维护窗口进行如运行时间、频度等设定的修改。如:

    --修改周一到周五的维护窗口(WEEKNIGHT_WINDOW)为每天0点开始。        
    EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE(
       'WEEKNIGHT_WINDOW', 
       'repeat_interval',
       'freq=daily;byday=MON, TUE, WED, THU, FRI;byhour=0;byminute=0;bysecond=0');
    

    参考:
    Database PL/SQL Packages and Types Reference
    >93 DBMS_SCHEDULER

    11g& 12c

    1.针对特定维护任务的操作

    禁用方法:

    --禁用sql tuning advisor
    BEGIN
      dbms_auto_task_admin.disable(
        client_name => 'sql tuning advisor',
        operation   => NULL,
        window_name => NULL);
    END;
    /
    

    启用方法:

    --启用sql tuning advisor
    BEGIN
      dbms_auto_task_admin.enable(
        client_name => 'sql tuning advisor',
        operation   => NULL,
        window_name => NULL);
    END;
    /
    

    其中,client_name可以为DBA_AUTOTASK_CLIENT表中的任意一个任务名(client_name):

    SQL> select client_name from DBA_AUTOTASK_CLIENT;
    
    CLIENT_NAME
    ----------------------------------------------------------------
    auto optimizer stats collection
    auto space advisor
    sql tuning advisor
    

    另外,需要注意的是在12c的环境中,CLIENT_NAME:sql tuning advisor同时控制着自动 SQL 优化指导(Automatic SQL Tuning Advisor)和SQL计划管理(SPM)进化指导(SPM Evolve Advisor)。

    2.启用和禁用所有的维护任务:

    --禁用
    EXECUTE DBMS_AUTO_TASK_ADMIN.DISABLE;
    --启用
    EXECUTE DBMS_AUTO_TASK_ADMIN.ENABLE;
    

    3.确认各个维护任务的状态

    --例:自动 SQL 优化指导(Automatic SQL Tuning Advisor)
    COL CLIENT_NAME FORMAT a20
    SELECT CLIENT_NAME, STATUS
    FROM   DBA_AUTOTASK_CLIENT
    WHERE  CLIENT_NAME = 'sql tuning advisor';
    

    4.维护窗口设定更改:

    可以通过DBMS_SCHEDULER.SET_ATTRIBUTE程序包对维护窗口进行如运行时间、频度等设定的修改。如:

    --修改SATURDAY_WINDOW窗口的持续时间
    BEGIN
      dbms_scheduler.disable(
        name  => 'SATURDAY_WINDOW');
      dbms_scheduler.set_attribute(
        name      => 'SATURDAY_WINDOW',
        attribute => 'DURATION',
        value     => numtodsinterval(4, 'hour'));
      dbms_scheduler.enable(
        name => 'SATURDAY_WINDOW');
    END;
    /
    

    监视视图

    对于维护任务(作业)调查,相关的一些监视视图。

    10g

    DBA_SCHEDULER_JOBS:数据库内所有作业的相关详细内容。
    
    DBA_SCHEDULER_JOB_LOG:作业的执行日志
    DBA_SCHEDULER_JOB_RUN_DETAILS:作业的执行详细
    
    DBA_SCHEDULER_WINGROUP_MEMBERS:维护窗口的详细
    DBA_SCHEDULER_WINDOWS:数据库内所有窗口的相关内容。
    
    DBA_SCHEDULER_JOB_CLASSES:Resource Plan相关信息。
    

    11g& 12c

    DBA_AUTOTASK_CLIENT:查看各个维护任务客户端的相关内容。
    DBA_AUTOTASK_TASK:查看各个维护任务的相关内容。
    
    DBA_AUTOTASK_JOB_HISTORY:维护任务作业的执行历史
    DBA_AUTOTASK_SCHEDULE:今后32天内的各个Client的执行计划
    DBA_AUTOTASK_OPERATION:各个Client的执行操作
    DBA_AUTOTASK_WINDOW_HISTORY:各个维护窗口的执行历史
    
    DBA_AUTOTASK_WINDOW_CLIENTS:属于各个维护窗口客户端的维护任务的状态。
    DBA_SCHEDULER_WINDOWS:数据库内所有窗口的相关内容。
    DBA_SCHEDULER_WINDOW_GROUPS:数据库内所有窗口组的相关内容。
    
    DBA_RSRC_PLANS:数据库中所有的资源计划(Resource Plan)信息
    DBA_RSRC_PLAN_DIRECTIVES:资源计划指令信息
    

    重建数据库自动维护任务

    在某些情况下,如发现数据库自动维护任务有问题或者想恢复成默认的设定时,你可以通过以下的方法重建数据库维护窗口和自动维护任务。

    conn /as sysdba
    
    -- 这个脚本会删除维护窗口,但是可能会报一些可以忽略的错误。
    @?/rdbms/admin/catnomwn.sql 
    
    -- 也可以通过手动删除维护窗口代替catnomwn.sql。
    execute dbms_scheduler.drop_window('MONDAY_WINDOW');
    execute dbms_scheduler.drop_window('TUESDAY_WINDOW');
    execute dbms_scheduler.drop_window('WEDNESDAY_WINDOW');
    execute dbms_scheduler.drop_window('THURSDAY_WINDOW');
    execute dbms_scheduler.drop_window('FRIDAY_WINDOW');
    execute dbms_scheduler.drop_window('SATURDAY_WINDOW');
    execute dbms_scheduler.drop_window('SUNDAY_WINDOW');
    
    -- 重建维护窗口和维护作业(任务)
    @?/rdbms/admin/catmwin.sql 
    

    版权声明:本文为博主原创文章,转载必须注明出处,本人保留一切相关权力!http://blog.csdn.net/lukeunique

    欢迎关注微信订阅号:TeacherWhat
    这里写图片描述

    展开全文
  • 如何进行数据库维护

    千次阅读 2009-08-01 18:43:00
    一、备份数据库 1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server 2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录 3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单...
  • Oracle 数据库维护经验

    千次阅读 2007-09-03 23:37:00
    一、Oracle 数据库应用现状 二、维护内容 1、数据备份 ①逻辑备份:仅备份数据库里面的 数据; 物理备份(推荐):采用备份数据库文件的方法进行备份。 ②系统备份 (非Windows 的运行环境) ③备份内容的...
  • 数据库维护

    千次阅读 2020-04-21 15:11:44
    一、备份数据库 和所有数据一样,MySQL的数据也必须经常备份。MySQL数据是基于磁盘的文件,所以本份也很简单。 1、使用命令行实用程序mysqldump转存储所有数据库内容到某个外部文件,在进行常规备份前,这个实用...
  • Sql Server 2005 数据库维护计划

    千次阅读 2007-05-31 20:25:00
    这个星期开始为了减轻工作压力开始使用数据库维护计划(SQL Server Maintenance Plan Wizard)维护数据库,由于以前都没用过,在个人使用的免费版(Express)里也没有这个功能,所以现在好好学习了一番,这里总结一下。...
  • 【公告】CSDN 博客将进行数据库维护

    千次阅读 2017-03-21 18:17:54
    CSDN 博客将于2017年3月21日18时起,进行数据库维护,维护期间,2017年2月之前发布的博客都无法进行编辑和修改。具体恢复时间另行通知,请您知晓~在此期间给您带来的不便敬请谅解。
  • SQL Server 数据库维护计划(详述)

    千次阅读 2007-09-26 12:40:00
    具体实现步骤 目录 第一步:打开SQL Server“企业管理器”窗体 第二步:找到“数据库维护计划”功能 第三步:创建“数据库维护计划” 第四步:维护和管理“数据库维护计划” 第五步:启动SQL Server 2000代理以便...
  • 数据库维护注意事项

    千次阅读 2004-12-17 18:06:00
    --压缩日志及数据库文件大小/*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏你的数据库. 一般不建议做第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第6步如果日志达到上限,...
  • mysql数据库维护(mysql学习笔记)

    千次阅读 2018-06-12 11:46:15
    数据库维护: analyze table用来检查表键是否正确,如下:check table 用来针对许多问题对表进行检查。在myisam表上海对索引进行检查。check table支持一系列的用于myisam表的方式,changed检查自最后一次检查以来...
  • MySQL数据库维护手册

    万次阅读 2012-11-12 17:40:17
    此日志对于灾难是的数据恢复起着重要作用。用—log-bin指定路径。 命令: mysqlbinlog /var/lib/mysql/mysqld-bin.000555 (五)检查并确认数据库和管理系统的配置参数没有被更改。 ...
  • 在某些情况中,您可能希望使用...例如,对于电子商务网站,普遍使用关系数据库维护状态信息,其原因是:l 安全性l 个性化l 一致性l 数据挖掘使用数据库维护状态的优点为:l 安全性 访问数据库需要严格的身份验证和
  • PostgreSQL 数据库web 维护管理软件

    千次阅读 2016-08-11 23:20:23
    TreeSoft数据库管理系统使用JAVA开发,采用稳定通用的springMVC+JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL,DB2, Cache ,Sybase,神通,达梦DM7数据库进行维护管理操作。 功能包括:数据库的展示,库...
  • 数据库维护计划中出现错误,数据库无法自动备份。 错误提示:作业失败。所有者(XXX\administrator用户拥有DB维护计划“数据库备份”作业)没有服务器访问权限。 添加一个以SA登录的本机(主机名用[.])SQL ...
  • 概要如果数据库维护计划中的任何任务失败或遇到错误信息,则维护计划作业本身可能显示为失败。作业历史记录详细信息显示以下错误信息:sqlmaint.exe failed.[SQLSTATE 42000] (Error 22029).The step failed.但是,...
  • Oracle数据库管理维护

    千次阅读 2018-09-23 22:08:04
    sysdba:即数据库管理员,权限包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制、管理功能、创建数据库。sys用户必须用sysdba身份才能登录,system用户可...
  • 最近在用数据库维计划备份数据库时... 所有者(***\****,拥有作业 DB 维护计划“数据库维护计划1”的完整性检查作业(多服务器)。)没有服务器访问权限. 于是把 SQL代理服务器作业里的所有都改成sa,再次运行就可
  • 1. 导出:方法一:通过sysmodel界面...2. 打开sysmodel工具,选择数据库维护功能。 3. 在数据库导入导出(database dump/restore)标签页下,输入数据库IP地址,点击连接数据库按钮。会看到弹出数据库连接成功的提示。
  • Oracle数据库日常维护命令

    千次阅读 2014-01-22 14:46:53
    一、启动、关闭数据库 1、启动实例的各种模式 1)启动实例,装载并打开数据库 这是最普通的数据库操作,意味着某个实例已经启动并且数据库也已经装载并打开。这种模式允许任何一个有效的用户连接到数据库,并执行...
  • SQL Server 数据库维护计划 日志作业失败的解决 事件类型: 警告事件来源: SQLSERVERAGENT事件种类: Job Engine 事件 ID: 208日期: 2005-12-22事件: 2:30:01用户: N/A计算机: MC描述:SQL Server Scheduled ...
  • 解SQL Server“数据库维护计划”

    千次阅读 2004-08-18 08:52:00
    解SQL Server“数据库维护计划” 作者:江西 吴昱作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一...
  • 针对 SAP 数据库维护 SQL Server 的十大最佳实践作者:Takayuki Hoshino 撰稿人:Juergen Thomas 技术审阅人:Sanjay MishraSQL Server 为 SAP 应用程序提供了卓越的数据库平台。下列建议概述了针对 SAP 实现维护 ...
  • 数据库开发 维护 性能调优 备份还原 各种复杂问题的解决方案 这时对CSDN上出现的很多问题的解决方案的总结 免费分享 大家多多下载哦
  • 对于数据库维护,主要使用DBCC CHECKDB来实现,以下是对大型数据库的使用说明,小型数据库一般直接使用就可以了: 1、2008(2005我不确认)已经实现了快照检查,也就是当你执行DBCC时,DBMS会先快照出一个数据库,...
  • 数据库安全与维护

    千次阅读 2018-08-22 10:40:25
    第一节: 实现数据库安全 一、访问级别 通过访问级别对用户进行限制 1)超级用户,在操作系统上具有最高权限,事实上,超级用户可以访问系统上存储的任何文件, 2)数据库拥有者,访问系统中所有与数据库软件和...
  • 解SQL Server“数据库维护计划

    千次阅读 2007-04-29 10:38:00
    作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一个非常非常重要的工作环节。 网络中的各种故障...
  • Oracle数据库web维护管理及监控

    千次阅读 2018-04-07 19:39:03
    1、Oracle数据库客户端的种类及现状 目前Oracle数据库维护管理,通常是使用客户端软件:PL/SQL Developer,SQL* Plus,toad,em等进行数据的管理、维护等操作。这些工具大都是与Oracle一起捆绑安装的,基于C/S模式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 754,985
精华内容 301,994
关键字:

对于数据库的维护