深度剖析数据库ops:解密运维管理技巧 (数据库ops)

随着企业信息化的发展,数据库已经成为了企业重要的信息资源存储和管理平台。因此,数据库的运维工作也日益受到重视。数据库运维的任务繁重,涉及到性能监控、容量规划、备份恢复、安全审核等多个方面。本文将从数据库的概念入手,深入剖析数据库的运维管理技巧,从多个角度帮助企业更好地管理数据库系统。

一、数据库的概念

我们首先需要了解数据库的概念。数据库是指按照一定的数据模型组织数据的,是长期存储在计算机内、有组织的、可共享的数据。常见的数据库包括MySQL、Oracle、SQL Server等。

二、数据库的运维管理

数据库的运维管理是指对数据库系统进行监控、维护、调优和备份等工作,以确保数据库的稳定性和安全性。具体包括以下几个方面:

1、性能监控

性能监控是数据库运维中比较重要的工作,主要是针对数据库的各项性能指标进行监控。如CPU利用率、内存占用率、磁盘空间占用率等。通过监控这些指标,可以及时发现数据库的性能问题,及时进行处理。

2、容量规划

容量规划是指对数据库的容量进行合理规划,确保数据库的存储空间充足,并且能满足未来的需求。在规划容量时,需要对数据的大小、数据增长速度等进行估算,以确保数据库系统能够满足企业未来的发展需求。

3、备份恢复

备份是指对数据库当中的数据进行备份,以防止数据丢失和灾难恢复。备份的方式有多种,如物理备份和逻辑备份等。而恢复则是指在数据库发生灾难时,如系统宕机时,通过备份文件将数据库恢复到原来的状态。

4、安全审核

安全审核是指对数据库系统中的安全性进行监测和审核,以防止恶意攻击和数据泄露等安全问题。在进行安全审核时,需要对数据库访问权限、用户身份验证等进行严格控制,以保障数据的安全。

三、运维管理技巧

以上是对数据库运维管理的简单介绍,接下来我们将从多个角度,分别对数据库的运维管理技巧进行阐述。

1、数据分区

数据分区是一种通过分割表或索引中的数据,将其存储在不同的物理区域中的技术。这种技术可以提高查询性能和数据的读写效率。例如,将一张表分成多个区域,可以在查询时只查询需要的区域,避免不必要的查询。

2、合理索引

索引是数据库的重要组成部分,它可以提高查询性能和数据读写效率。但是,索引的创建也需要谨慎,要避免创建过多的索引,因为过多的索引会影响插入、更新和删除操作的性能。因此,在建立索引时,需要考虑数据量、查询条件等多个方面,确保创建的索引是最有效的。

3、数据库访问优化

优化数据库访问是数据库运维管理的一项重要工作,可以有效提高数据库的性能和响应速度。其中,包括减少不必要的访问和延迟时间、增加并发处理能力等。在优化数据库访问时,需要从多个角度出发,包括网络、硬件、系统和应用程序等。

4、自动化运维

自动化运维是指在监测、维护、调整和备份等环节中,使用自动化技术来提高效率和减少错误。比如,使用自动化工具定期备份数据库,使用脚本自动化完成监控和维护工作等。引入自动化运维可以大大提高数据库管理的效率和责任。

5、云端管理

随着云计算技术的发展,数据库的运维管理也可以实现云端化。通过将数据库系统部署在云端,企业可以快速、灵活地进行资源调配和扩容,实现在线升级和版本维护。同时,云端管理还可以提供更高的数据可用性和性能保证。

四、结语

数据库运维管理是企业信息化的重要组成部分,也是企业信息安全的保障。本文从数据库的基本概念开始,深入剖析了数据库运维管理的多个方面,同时还介绍了一些运维管理技巧,希望读者可以从多个角度了解和掌握数据库运维管理技巧,为企业的信息化发展打下坚实的基础。

相关问题拓展阅读:

Oracle数据库无响应故障处理方式

Oracle数据库

无响应故障处理方式

  Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接嫌则伍请求后,一直处于等待状态。Oracle数据库无响应故障怎么处理呢?下面跟我一起来学习Oracle数据库无响应故障的处理方法吧!

  无响应的故障现象一般有以下几种:

  1.Oracle的进程在等待某个资源或事件

  这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视图中检查进程正在等待的资源或事件,而被等待的资源或事件,一直都不能被获取,甚至是很长时间都不可获得。如果这个正在等待的进程持有了其他的资源,则会引起其他的进程等待,这样就很可能引起实例中大范围的会话发生等待。由于进程在等待资源或事件时,通常都处于SLEEP状态,消耗的CPU资源非常少(在等待latch时要稍微多消耗一些CPU资源),所以从OS来看,CPU的消耗并不高,甚至是非常低。

  这种因为等待而引起的个别进程Hang,相对比较容易处理。

  2. OracleProcess Spins

  所谓Spin,就是指Oracle进程中的代码在执行某个过程时,陷入了循环。在V$SESSION视图中,往往可以看到Hang住的会话,一直处于“ACTIVE”状态。对于这样的会话,用“alter system kill session ‘sid,serial#’”命令也不能完全断开会话,会话只能被标记为“killed”,会话会继续消耗大量的CPU。进程Spins由于是在做循环,CPU的消耗非常大,从OS上明显可以看到这样的进程,通常会消耗整个CPU的资源。

  而对于这样的Hang住的会话,处理起来相对比较复杂,并且为了从根本上解决问题,需要超过DBA日常维护所需要的技能。

  从故障范围来看,无响应故障可以分为以下几种情况:

  1. 单个或部分会话(进程)Hang住

  这种情况属于小范围的故障,业务影响相对较小,一般来说只会影响业务系统的个别模块。在一个多应用系统的数据库上面,如果Hang住的会话比较多,则影响的可能是其中的一个应用系统。这里有一个例外,如果Hang住的进程是系统后台进程,如pmon、on等,则影响的范围就非常大了,最终甚至会影响整个数据库及所有应用系统。还有值得注意的是,即使是少部分会话Hang住,也要及时处理,否则极有可能会扩散到整个系统。

  2. 单个数据库实例Hang住

  这种情况造成的影响非常大。在这个实例上的所有应用系统均受到严重影响,并且在找到根源并最终解决问题之前,数据库实例往往须要重启。

  3. OPS或RAC中的多个实例或所有实例都Hang住

  在这种情况下,即使是OPS或RAC,都已经没办法提供高可用特性了。使用这个数据库的所有应用系统将不能继续提供服务,这种芹或情况往往须要重启。

  无响应故障成因分析

  Oracle数据库无响应,一般主要由以下几种原因引起:

  1. 数据库主机负载过高,严重超过主机承受能力

  比如应用设计不当,数据库性能低下,活动会话数的大量增加,导致数据库主机的负载迅速增加,数据库不能正常操作,并最终Hang住;主机

物理内存

严重不足,引起大量的换页,特别是在SGA中的内存被大量换出到

虚拟内存

时,数据库实例往往就会Hang住。

  2. 日常维护不当、不正确的操作引起数据库Hang住

  比如归档日志的存储空间满,导致数据库不能归档,引起数据库Hang住;在一个大并发的繁忙的系

  统上,对DML操作比较多的大表进盯卖行move、增加

外键

约束等操作也可能使系统在短时间内负载大幅升高,并引起

数据库系统

Hang住;不正确的资源计划(Resource Plan)配置,使进程得不到足够的CPU等。

  3. Oracle数据库的Bug

  几乎每个版本都存在着会导致数据库系统Hang住的Bug,这些Bug会在一些特定的条件下触发,特别是在RAC数据库中,引起数据库Hang住的Bug比较多。

  4. 其他方面的一些原因

  比如在RAC数据库中,如果一个节点退出或加入到RAC的过程中,当进行Resource Reconfiguration时,会使系统冻结一段时间,也有可能使系统Hang住。

  以上所描述的几种常见的会导致Oracle数据库实例Hang住的原因中,大部分的情况是可以避免的,只要维护得当,一般不会出现这种故障。对于Oracle数据库Bug所导致的数据库无响应故障,由于是在特定的情况下才会触发,所以如果能够尽量对数据库打上最新版本的补丁,并且熟悉当前版本中会导致系统Hang住的Bug以及触发条件,就能够更大限度地避免这种故障的发生,提高系统的可用性。

  那么,在数据库Hang住的情况下,如何去分析并发现导致问题的根源?一方面,由于系统Hang住会导致业务系统不可用,为了能够尽快地恢复业务,须快速地判断问题所在,然后Kill掉引起故障的会话和进程,或者数据库实例不得不重启以迅速恢复业务;但另一方面,如果只是重启数据库或Kill会话和进程来解决问题,在很多情况下是治标不治本的办法,在以后故障随时可能会出现。如何在二者之间进行抉择呢?对于数据库Hang故障的处理,首先是尽可能地收集到系统Hang住时的状态数据,然后尽快地恢复业务,恢复业务后分析收集到的数据,找到数据库系统Hang住的真正原因,然后再进行相应的处理。下一节将详细描述数据库系统Hang住后的处理流程。

  无响应故障处理流程

  对于Oracle无响应故障的处理,我们可以按下图所示的流程进行。

  值得注意的是,上图并不是一个完整的Oracle数据库故障处理流程图,只是处理Oralce数据库无响应这一类特定的故障的流程,只列出了针对这一特定类型故障处理时的关键处理点。不过既然是故障,所以这类故障的处理流程与其他故障的处理流程,有着非常相似的地方。

  下面是整个流程的详细说明:

. 在出现数据库无响应故障后,首先确认系统的影响范围,如上节所描述的’,是部分业务系统或模块还是所有的业务系统都受影响,是不是整个实例或多个实例都无响应。同时应询问系统维护和开发人员,受影响的系统在出现故障前是否有过变动,包括主机硬件、操作系统、网络、数据库以及应用等。有时一个细小的变动就可能导致出现数据库Hang住这样严重的故障。曾经遇到一个库,应用只是修改了一个SELECT语句就导致了数据库Hang住。

. 为了避免由于网络、数据库监听或客户端因素影响分析,建议都登录到主机上进行操作。

. 如果主机不能登录(为了避免干扰流程主线,这里不讨论如网络问题这样也会导致不能连接的故障),尝试关闭出现问题的业务系统,甚至是所有的业务系统。如果关闭了所有的业务系统之后,仍然不能连接,则只有考虑重新启动数据库主机。在数据库主机重新启动后,使用操作系统工具或OSW等长期监控操作系统的资源使用,同时监控Oracle数据库的性能和等待等。

. 登录上主机后,先用top、topas等命令简单观察一下系统。看看系统的CPU使用、物理内存和虚拟内存的使用、IO使用等情况。

. 使用SQLPLUS连接数据库,如果不能连接,则只能从操作系统上观察系统中是否有异常的现象,比如占用CPU过高的进程。使用gdb、dbx等debugger工具对数据库进行system state dump;使用strace、truss等工具检查异常进程的系统调用;使用pstack、procstack等工具察看异常进程的call stack等。

. 使用SQLPLUS连接上数据库后,进行hangyze、system state dump等操作;或检查等待事件、异常会话等正在执行的SQL等待。

. 找到故障产生的原因,如果暂时找不到原因,尽量收集数据。

.确良如果应用急须恢复,可通过Kill会话、重启数据库实例等方式,先恢复应用。

. 根据最终诊断结果,对数据库升级打补丁,或者修改应用等方式从根本上解决问题。

  怎样避免数据库出现无响应故障

  作为Oracle数据库DBA,除了处理故障之外,更重要的是如何预防故障的发生。根据前面对数据库无响应故障的成因分析,在日常的维护工作中,须做到以下几点:

  1. 进行正确的维护操作

  很多的数据库无响应故障都是由于不正确的维护操作引起的。应避免在业务高峰期做大的维护操作,比如像move、加主外键约束等会长时间锁表的操作。如果的确需要,尽量使用正确的操作方法。比如用ONLINE方式重建索引;建主键、唯一键约束时先建索引,然后在建约束时指定新建的索引,等等。也就是保证系统的并发性、可伸缩性,避免系统串行操作的出现。

  2. 优化应用设计,优化数据库性能

  为避免性能问题导致在业务高峰期数据库不能及时有效处理来自业务的请求,甚至于完全Hang住。对于数据库中存在串行访问的部分进行优化,比如latch、enqueue,还包括不合理的sequence设计等。特别是在RAC数据库中,严重串行访问等待往往更容易引起严重的性能问题。优化应用设计,使数据库具有更好的可伸缩性和并行处理能力,能够有效地避免性能问题引起的数据库Hang住。

  3. 利用监控系统随时监控系统负载

  遇到系统负载过高,内存不足,OS中虚拟内存换页很频繁等情况时,及时采取措施;监控Oracle数据库的核心进程,如pmon、on等,看是否有异常,如过高的CPU消耗。出现异常应立即处理;监控归档空间和日志切换;监控数据库中的等待事件,比如是否有大量的enqueue、log file switch (archiving needed)、regr:become active等待事件等。

  4. 为数据库打上补丁

  很多的无响应故障是由于Oracle的Bug引起的,数据库DBA应关注当前版本中有哪些Bug会导致数据库Hang住,尽量为数据库打上解决这些Bug的补丁。

;

如何启动或关闭数据库的归档模式

1)单机模式下:

如果开启归档,请保证

log_archive_start=true –开启自动归档,否则只能手工归档,如果是关闭了归档,则设置该参数为false。10g之后废除该参数,不需要设置。

log_archive_dest = —归档日志存放路径

alter system set log_archive_dest_1=”location=f:\disk5\offlinelog\mandatory” scope=spfile; —为了增加归档日志的冗余来保证其安全,可以通过修改参数文件中的log_archive_dest_n参数,其中n为1~10

log_archive_format =”CX%TS%S.ARC” —归档日志文件名格式

alter system set log_archive_max_processes =启动多个归档后台进程以避免由于ARCn进程跟不上LGWR而造成的数据库系统效率的下降。

注意:如果是OPS/RAC环境,需要先把parallel_server = true注释掉,然后执行如下步骤核洞型坦,最后用这个参数重新启动

1、开启归档:

a. 关闭数据库shutdown immediate

b. startup mount

c. alter database archivelog

d. alter database opne

2、关闭归档:

a. 关闭数据库shutdown immediate

b. startup mount

c. alter database noarchivelog

d. alter database open

归档信息可以通过如下语句查看

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination E:oracleora92databasearchive

Oldest online log sequence 131

Next log sequence to archive 133

Current log sequence 133

2)RAC模式下:

1.关闭所有的instance

2.在节点1上设置以下参数,如果使用spfile就先生成pfile再修改

CLUSTER_DATABASE=FALSE.

log_archive_dest=

log_archive_start=true

log_archive_format=

3. 以exclusive模式启动数据库

SQL> startup mount exclusive pfile=‘’.

4. 启动归档模式

SQL> Alter database archivelog

5.打开数据库

SQL> alter database open

6.关闭数据库并修改初始化参数

SQL> shutdown immediate

CLUSTER_DATABASE=TRUE

7.启动所有的instance,记得先生成spfile

8.核对归档,模式是否启动

SQL> archive log list

======================

以下步骤在node1机器上操作,node2保持down。在所有的操作完成后再打开node2的数据库。。改租枯。

SQLPLUS>connect SYS/PASSWORD

SQLPLUS>ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE; ### 10gR2之后不用修改该参数

SQLPLUS>shutdown immediate;

SQLPLUS>startup mount exclusive;

SQLPLUS>alter database noarchivelog;

SQLPLUS>ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;

SQLPLUS>shutdown immediate;

SQLPLUS>STARTUP

非归档改为归档

SQLPLUS>connect SYS/PASSWORD

SQLPLUS>ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;

SQLPLUS>shutdown immediate;

SQLPLUS>startup mount exclusive;

SQLPLUS>alter database archivelog;

SQLPLUS>ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;

SQLPLUS>shutdown immediate;

SQLPLUS>STARTUP

====================

相关数据字典

V$ARCHIVED_LOG

V$ARCHIVE_DEST

V$LOG_HISTORY

V$DATABASE

关于数据库ops的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深度剖析数据库ops:解密运维管理技巧 (数据库ops)