百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

oracle RAC ASM以及DB维护(oracle rac process)

mhr18 2025-01-31 14:10 45 浏览 0 评论


oracle 11g ASM 维护


从 11gR2 开始,Oracle 不再支持在 dbca 建库的时候选择裸设备,因此共享存储部分主要的选择就剩 下了 ASM,这里也只对 ASM 的管理进行简单的说明。

在 Oracle 11g RAC 中,Oracle 将 ASM 集成于 GI 软件中,现在的 Voting Disk 与 OCR 可以放置于 ASM 上了,这省去了为他们单独创建并管理一些裸设备的麻烦,在 GI 安装好后 ASM 实例就创建好并已经启来 了,因为 CRS 要用到 OCR 和 Voting Disk,如果 ASM 没有启来,CRS 就无法读取它们的信息,当然 ASM 实 例创建和 ASM 磁盘组管理都可以使用图形界面 asmca 来完成,因此下面这两部分主要以命令为主。


ASM 实例创建

要想使用 ASM,首要的工作就是创建 ASM 实例,既然是与数据库实例类似的实例,那么首先就需要有一个参数文件,只不过,ASM 实例只需要关注少量的参数,与数据库的实例相比,比较特别的参数如下表 所示:

参数

描述

instance_type

实例的类型,必须是 ASM

instance_name

ASM 实例的名称,RAC 系统中通常名称前有个“+”号

asm_power_limit

ASM 实例的磁盘重平衡的能力,取值范围为:0~11,默认为 1,数值越高,重平衡能力越强,当然 IO 压力也越大

asm_diskstring

指定一个字符串,ASM 实例在创建磁盘组时可以按照这个字符串搜索可用的磁盘

asm_diskgroups

指定磁盘组的名称,ASM 实例在启动的时候自动挂载这些磁盘组

srvctl 工具可以用来操作 ASM 实例,这与以往版本是一样的:srvctl status asm、srvctl start asm与 srvctl stop asm,当然具体语法可以使用类似 srvctl status asm –h 来得到。


磁盘组的创建与删除

我们想要使用 ASM,就必须先创建 ASM DG(Disk Group),创建磁盘组的时候可以指定冗余策略,分 别为:External 外部冗余(依靠磁盘 RAID),Normal 为镜像冗余,而最高级的 High 则包含了总共三份冗 余。创建 DG 的方法很简单,切换至 grid 用户,使用 sqlplus 命令来登录 ASM 实例:sqlplus ‘/as sysasm’, 然后输入如下创建 DG 的语句:以 grid 用户 sqlplus / as sysasm 登录 asm 实例,然后执行语句:

create diskgroup data_bak external redundancy disk 'ORCL:VG1','ORCL:VG2';

很像创建表空间的语法,注意 ASM DISK 的书写,可以查询 v$asm_disk.path 字段来得到这些 ASM DISK 的正确路径。在 create diskgroup 语句完成后,DG 将在当前操作的 ASM 实例中自动挂载,且添加到 ASM 实例的 asm_diskgroups 参数中。其他实例需要手工 mount 一下:

sqlplus / sysasm

alter diskgroup data_bak mount;

删除 DG 的语句更加简单:

drop diskgroup asm_demo;

前提是 DG 中没有任何内容,否则需要使用如下语句来删除:

drop diskgroup asm_demo including contents;

通过以下语句可以查看 asm 中是否存在该 diskgroup:

SQL> select name from v$asm_diskgroup;


磁盘组的挂载与卸载


DG 只有在当前节点的 ASM 实例上挂载,才能被该节点的数据库实例访问:

alter diskgroup asm_demo mount;

想要 dismount 一个 DG 也很简单:

alter diskgroup asm_demo dismount;

如果该磁盘组正在被使用,那么可以在语句最后面添加 force 子句,强制卸载。

可以通过以下语句来查询 diskgroup 的状态:

SQL> select name,STATE from v$asm_diskgroup;


磁盘的添加与删除

从 DG 中删除磁盘的操作:

ALTER DISKGROUP dgroup1 drop DISK '/devices/Disk1’;

添加磁盘:

ALTER DISKGROUP dgroup1 ADD DISK '/devices/D*';

无论是添加磁盘还是删除磁盘,都会触发磁盘组的重平衡,为了减少重平衡的影响,应将删除或者 添加磁盘操作一次性完成。还有值得一提的是:在删除磁盘的时候因为需要将删除磁盘上的内容重平衡 至其他磁盘,因此删除操作要比较长的时间,在期间可以用如下命令取消删除磁盘的操作:

alter diskgroup asm_demo undrop disks;

但如果删除时加上了 force 关键字,那么这个删除操作就不可逆了。 可以通过以下语句来查看某磁盘是否还存在,以及它们的状态:

select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,NAME,PATH from v$asm_disk;


磁盘组信息的查询


比较常用的几个 V$视图:v$asm_diskgroup、v$asm_disk、v$asm_client,还有两个查询性能统计信息的视图:v$asm_disk_stat、v$asm_diskgroup_stat。


磁盘组的重平衡

除了通过 ASM 的初始化参数 asm_power_limit 参数来调节重平衡外,也可以使用如下语句来触发重 平衡:

alter diskgroup asm_demo rebalance power 11 wait;

其中 power 子句后的数字指定了重平衡的力度,与参数一样,取值范围 0~11,但如果这里的值大于 asm_power_limit 参数,那么这里的指定不起任何作用;最后面的 wait 子句代表这个命令等待重平衡结束 后再返回,如果没有 wait,那么该命令立刻返回,当然重平衡操作会在后台继续。


ASM 工具


下面两个工具,asmcmd 在 10g 就出现了,asmca 是 11g 才新加入 ASM 家族的实用工具。

1. asmca

asmca 是从 11g 引入一个图形工具,它的使用在前面安装部分已经有较为详细的描述,它可以用来进 行 ASM 相关的绝大部分管理操作,非常方便,有一点需要注意:从 11g 开始,dbca 不再支持创建和配置 ASM 磁盘组,打开 dbca 界面后不要傻眼就是。

2. asmcmd

10gR2 的时候,asmcmd 包含了一些 UNIX 风格的命令,比如 ls、du、cd 等等,但当时这些命令基本 上还处于中看不中用的状态,11g 后,Oracle 加入了非常多的新命令,甚至可以在 asmcmd 下来管理 ASM 实例和磁盘组,可以完成前面 ASM 磁盘组管理中介绍的所有管理操作!asmcmd 又提供了非常详尽的命 令帮助页,在以后的工作中可以慢慢去体会。


RAC数据库维护


参数维护

在 RAC 环境中,Oracle 建议使用共享的 spfile,在默认的安装下就是如此,而在每个节点 oracle 用户的$ORACLE_HOME/dbs 目录下有一个 pfile:init${ORACLE_SID}.ora,里面有一行参数指定了 spfile 的所在,比如:

SPFILE='+ASM_DATA/racdb/spfileracdb.ora'

在这个二进制 spfile 中,包含了数据库的非默认初始化参数,参数的格式为:

.=

如果在 instance_name 部分使用了“*”或者没有取值,那么意味着这个参数对于所有的实例都是有 效的。与单实例数据库一样,还是可以使用 alter system set … 命令来修改参数的值,但是语法却有所不同,这个命令的完整语法为:

alter system set = scope = comment= <’comments’> deferred sid =

其中:

? Scope=memory 表明这些改变会在实例重启后丢失,如果某参数只能针对本地实例进行修改,那 么这个选项就将使命令报错;

? Scope=spfile 表明只在 spfile 中进行参数的修改,实例重启后生效,如果实例不是使用 spfile, 而是 pfile 启动的,那么这个选项也会使得命令报错;

? Scope=both 表明所做的参数改动在当前环境有效,且在实例启动后依然有效;

? Comment 没什么好说的,注释而已;

? Deferred 表明所做的参数修改仅对发出该命令后生成的会话有效;

? Sid 使用 sid 子句允许指定实例名称,使得指定的实例受参数修改的影响,如果使用“*”,那 么就针对所有实例进行修改,这是默认取值。


启动和停止实例

Srvctl 工具非常强大,在后面将介绍其更多的功能,其中一个简单的应用就是启停 RAC 数据库。我 们可以使用下面两条简单的命令分别来启动、关闭数据库:

srvctl start database -d racdb

srvctl stop database -d racdb -o immediate

这两条命令将对 RAC 数据库中的所有实例生效,其中 stop database 时的 immediate,与 sqlplus 中 shutdown 命令的 immediate 含义一样,且 srvctl 命令也支持其他几个诸如 normal、transactional、 abort 等参数,下面的 stop instance 命令中-o 选项所跟的参数也是一样的道理——与 10g 的时候一样, 也可以使用 srvctl 命令来启停 RAC 中的单个实例:

srvctl start instance -d racdb -n racdb1

srvctl stop instance -d racdb -n racdb1 -o immedaite

像单实例数据库一样,也可以使用 sqlplus 中的 starup 与 shutdown 命令来启停数据库,确切地讲, 是启停当前登录的实例,它们的用法与单实例数据库是相同的,不再赘述。


管理 UNDO

在 RAC 数据库中,表空间的管理基本与单实例数据库是一样的,也有但有一个例外:UNDO 表空间, 在 RAC 中,每个实例都需要一个自己的 UNDO 表空间,可以查看初始化参数 UNDO_TABLESPACE 来了解当前 实例所使用的 UNDO 表空间。说到 UNDO,还是提下单实例数据库中就存在的一个管理操作,就是替换实例的当前 UNDO 表空间,先 创建一个 UNDO 表空间:

create undo tablespace UNDO_DEMO datafile size 10m;

再来使用参数切换 UNDO 表空间:

alter system set undo_tablespace='UNDO_DEMO';

测试了下这个参数的更改有点特别,不能指定 sid,且只在当前实例生效。


管理 redo log

与单实例数据库不同的是,RAC 数据库中,每个实例都有自己的 online redo log,自然也有单独的 log buffer 、 单独的归档日志文件。 每个数据库实例的 redo log 称为一个线程, 这在 v$log 、 v$archived_log 等重要视图中都可得到。


管理在线日志

日常做的最多的与 online redo log 相关的管理操作就是添加删除日志了,其实大多时候还是与单 实例是一样的,简单的使用如下命令就为当前实例添加一组在线日志:

alter database add logfile group 5 size 10m;

如果想为其他的实例添加日志文件,那么就需要制定实例名:

alter database add logfile instance 'racdb2' group 6 size 10m;

或者

Alter database add logfile thread 1 group 6 size 10m;

而删除与单实例相同,只要指定 group#即可,无需指定实例名。


管理归档日志


修改 RAC 数据库为归档模式或者关闭归档模式的方法也很简单:关闭所有实例,将其中一个实例打 开到 mount 状态,执行如下语句:

alter database archivelog;

语句是与单实例时代是一样的,之后打开所有实例即可。 归档日志的存放可以各实例分离,但是要注意的是,数据库的备份与恢复是在一个实例完成的,因此必须实现归档在各个实例间的共享问题,online redo log 也一样,平常正常工作时各个实例对自己的 online redo log 进行写入,但是在实例恢复时,可能需要读取其他实例的 online redo log,因此也需 要实现共享。值得一提的单实例不同的切换日志的命令在 RAC 中也与单实例有所不同,alter system switch logfile; 命令只能在当前实例进行日志切换,想要在所有实例进行日志切换就需要变通地执行命令:

alter system archive log current;

当然单实例数据库也有这个命令。使用这个命令还可以对指定实例进行日志切换:

alter system archive log instance 'racdb2' current;

最后提一下与日志相关的发出检查点操作的命令,在 RAC 数据库中也有所不同,以前的 alter system checkpoint 与 alter system checkpoint global; 命令是等价的,将在所有数据库实例中触发检查点操作,若 是想要在当前实例触发检查点,那么需要对命令稍作修改:

alter system checkpoint local;


管理服务

服务用来在 Oracle RAC 环境中来管理工作量,它提供了一种对工作量进行分组的逻辑方法,将采用 相同数据集、相同功能以及相同服务级需求的用户分组在一起,因此服务也经常被用来将不同的用户分 组的连接“引导”到不同的 RAC 实例上,从而减少 RAC 数据库环境中集群方面的相关等待。早期的版本中可以使用 dbca 来管理服务,那也是最方便快捷的添加服务的方法,但是在 11gR2 中, dbca 关于服务的这个选项已经被去除了,还可以通过 em 来进行配置,但 Oracle 推荐使用上面介绍的 srvctl 命令来对服务进行管理。用 oracle 用户登录,使用如下命令来为 racdb 数据库创建一个服务 ssfxdw,将 racdb1 定义为首选 实例,将 racdb2 定义为次选实例,且创建 basic TAF 策略,将服务配置为自动启动:

srvctl add service -d racdb -s srv_demo -P BASIC -y AUTOMATIC -r racdb1 -a racdb2

启动上面创建的服务:

srvctl start service -d racdb -s srv_demo

关闭服务:

srvctl stop service -d racdb -s srv_demo


备份与恢复

1. 备份

1) 操作系统的冷备:在关闭数据库的情况下,在文件级别对数据库的数据文件、控制文件、归 档日志、在线日志、参数文件。

2) 使用 rman 工具对数据库备份和恢复,这里主要要了解全库备份、两种增量备份方式(差异增 量备份和累积增量备份)

2. 恢复

1) 不完全恢复

2) 完全恢复

Oracle RAC 的备份与恢复与单实例数据库其实相差不大,有几点需要注意:

? RAC 数据库的实例恢复与崩溃恢复是不一样的概念,虽然两者都只需要读取 online redo log, 但是实例恢复是指正常实例利用异常终止实例的 online redo log,对该实例中被修改但未写入 数据文件的数据块进行恢复,所以,RAC 数据库的哦你 online redo log 必须共享;而崩溃恢复 是指 RAC 数据库中的所有实例都出现故障,需要使用 online redo log 进行恢复;


? RAC 数据库的介质恢复与单实例基本相同,但是在 RAC 数据库恢复过程中,需要读取所有实例的 归档日志,所以它们的归档日志也必须是共享的。


管理监听


查看监听状态: lsnrctl status

启动监听: lsnrctl start

关闭监听: lsnrctl stop


告警日志查看

一般系统出现问题,在我们查看过操作系的 CPU、内存、磁盘 IO 后,往往只了解这些信息是不够的, 我们还得从集群软件、ASM、数据库层去查找问题的所在,首先肯定要查看的各个层面的告警日志,那么 这日志文件是放在哪里的呢?

1. 集群软件日志

Oracle 的集群软件 Clusterware 不像数据库有很多的视图或者工具来帮助诊断,它的日志和 trace 文件是唯一的选择,它主要的日志文件目录结构如下:日志的根目录 CRS 的安装目录,也就是 grid 用户的$ORACLE_HOME(在 10g 中会设置成$CRS_HOME)

/log/[node],其中 node 是节点的名称。

alertnode1.log:其中 node1 是结点的名称,这个日志相当于数据库的 alert.log,一般应该作为检 查的起点;

crsd、cssd、evmd:分别是 3 个目录,分别对应着 Clusterware 三个同名的进程的日志,日志的名字 和进程名字一致,分别叫 crsd.log、ocssd.log、evmd.log;

racg:这个目录里放置的是所有 nodeapp 的日志,包括 ONS、VIP,每个日志从名字上就很容易辨别 所对的 nodeapp;

client:这个目录里放置的是工具执行日志,比如 ocrcheck、ocrconfig 等,这些工具运行时产生的 日志就会放在这个目录下。

2. ASM 日志

这里只需要掌握一下 ASM 的告警日志存放路径就行了,如果 ASM 实例启不来,我们就可以去查看一下 这个日志文件,它在 grid 用户的$ORACLE_BASE/diag/asm/+ASM/+ASM1/trace 目录下,以.log 结尾的 那个文件就是了,其中+ASM1 是 ASM 实例的名称,一般情况下,第一个节点就是+ASM1,第二个节点就是+ASM2,以此类推。例如:

/oracle/app/oracle/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log

3. 数据库日志

数据库的告警日志文件存放的路径默认是在 oracle 用户的$ORACLE_BASE/diag/rdbms/数据库名/实 例名/trace 目录下,以.log 结尾的文件就是了,例如:

/oracle/app/oracle/diag/rdbms/orcl/orcl1/trace/alert_orcl1.log


4. 监听日志

监听日志文件是$
ORACLE_BASE/diag/tnslsnr/node1/listener/alert/log.xml,其中 node1 是节点 名,也可以从 lsnrctl status 中 Listener Log File 后面内容看出来。

相关推荐

AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术

IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...

Java最新学习路线,系统全面,零基础适用

首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往javaee方向发展的,学习完前端,在学习后端很多东西比计较容易理解!其中J2SE是关键...

深入理解数据库事务(数据库事务处理的理解)

Transaction作为关系型数据库的核心组成,在数据安全方面有着非常重要的作用,本文会一步步解析事务的核心特性,以获得对事务更深的理解。什么是事务数据库几乎是所有系统的核心模块,它将数据有条理地保...

IvorySQL 4.4 发布(1044mysql)

IvorySQL4.4已于2025年3月10日正式发布。新版本全面支持PostgreSQL17.4,新增多项新功能,并修复了已知问题。增强功能PostgreSQL17.3增强功...

Oracle 与 Google Cloud 携手大幅扩展多云服务

据DCD4月10日报道,甲骨文(Oracle)与谷歌云(GoogleCloud)深化合作,全力扩展多云产品。双方计划为OracleDatabaseGoogleCloud解决方案新增11...

Izzi 利用 Oracle 云提高计费效率和客户体验

据thefastmode网5月2日报道,墨西哥电信运营商Izzi宣布采用Oracle云基础设施(OCI),对其业务支持系统(BSS)进行现代化改造增强客户体验,已经成功完成。通过在OCI上运行...

好莱坞群星也有明星脸?硅谷科技名人本尊分身比一比

假如有部电影齐聚了众科技名人角色,如同许多好莱坞大牌卡司所共同主演的《瞒天过海》(Ocean’sEleven)那样,演出彼此在商场上竞逐、或共同对抗外来竞争捍卫硅谷的故事,更在剧中有不少对手戏,会不...

澳大利亚Find My iPhone被黑 多人被黑客锁机

FindMyiPhone本来是一个用于协助找回被盗手机的好工具,但是现在,澳洲的苹果用户发现他们的FindMyiPhone变成了黑客的帮凶。昨天,这名自称为OlegPliss的黑客使用Fin...

服务器密码错误被锁定怎么解决(服务器密码失效)

#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...

凌晨突发的数据库重大故障,我排查了一整天……

春节期间过得太热闹了,上班确实没啥状态,这不刚发生的一个重大性能故障,排查了整整一天,后面的领导都站成了一排,本次把故障发生的详细分析过程分享给大家!本次故障发生在凌晨,核心应用卡顿非常严重,Orac...

Oracle锁表紧急处理!3招快速解锁方案

开篇:突发故障现场凌晨1点,某电商系统突然卡顿,数千笔支付订单无法完成——数据库出现死锁,技术团队紧急响应...(遇到类似情况的,欢迎在评论区分享经历)一、问题重现:死锁是如何产生的?典型场景:问题根...

JetBrains DataGrip Mac中文破解版V2025.1下载安装教程

DataGripforMac是由JetBrains开发的数据库集成开发环境(IDE),专为数据库管理员和开发人员设计。它支持多种数据库(如MySQL、PostgreSQL、Oracle、SQ...

电脑装安卓系统,安卓X86版5.1 RC1下载

日前,谷歌放出了Android-x865.1的第一个候选版本Android-x865.1RC1,该版本基于Android5.1.1r24Lollipop开发,更新包括大量x86(32位)代...

来来来!一文告诉你Eclipse的正确安装使用姿势,你都清楚吗?

前言本学习笔记是有关如何设置Eclipse的详细说明。即使你天天在使用它,但是,相信我,或许你并不足够了解它。安装Java运行时环境Eclipse是Java应用程序,因此设置Eclipse的第一步是安...

分享收藏的 oracle 11.2.0.4各平台的下载地址

概述oracle11.2.0.4是目前生产环境用的比较多的版本,同时也是很稳定的一个版本。目前官网上已经找不到下载链接了,有粉丝在头条里要求分享一下下载地址。一、各平台下载地址1.1Linuxx...

取消回复欢迎 发表评论: