ORA-15063、ORA-15032要如何解决单位的Oracle数据库ASM diskgrou

ORA-15063、ORA-15032要如何解决单位的Oracle数据库ASM diskgrou,第1张

概述

----------

ASM disk header是ASM disk的第一个块,即AU#0 BLOCK#0,disk header中记录了ASM disk的重要信息,比如ASM disk名字,diskgroup名字,failgroup名字,AU size等等

1 通过视图v$asm_diskgroup和v$asm_disk查看:

select group_number,disk_number,mount_status,header_status,name,path from v$asm_disk;

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATUS NAME PATH

------------ ----------- ------- --------------- -------- --------------------

1 0 CACHED MEMBER ASMDISK1 ORCL:ASMDISK1

select GROUP_NUMBER,name,state,type from v$asm_diskgroup;

GROUP_NUMBER NAME STATE TYPE

------------ -------- -------- ------

1 DGDATA MOUNTED EXTERN

2 通过Kfed 查看ASM disk 信息:

kfed read /dev/oracleasm/disks/ASMDISK1

kfbhendian: 1 ; 0x000: 0x01

kfbhhard: 130 ; 0x001: 0x82

kfbhtype: 1 ; 0x002: KFBTYP_DISKHEAD

kfbhdatfmt: 1 ; 0x003: 0x01

kfbhblockblk: 0 ; 0x004: blk=0

kfbhblockobj: 2147483648 ; 0x008: disk=0

kfbhcheck: 2402748364 ; 0x00c: 0x8f3707cc

kfbhfcnbase: 3580 ; 0x010: 0x00000dfc

kfbhfcnwrap: 0 ; 0x014: 0x00000000

kfbhspare1: 0 ; 0x018: 0x00000000

kfbhspare2: 0 ; 0x01c: 0x00000000

kfdhdbdriverprovstr: ORCLDISKASMDISK1 ; 0x000: length=16

kfdhdbgrptyp: 1 ; 0x026: KFDGTP_EXTERNAL

kfdhdbhdrsts: 3 ; 0x027: KFDHDR_MEMBER

kfdhdbdskname: ASMDISK1 ; 0x028: length=8

kfdhdbgrpname: DGDATA ; 0x048: length=6

kfdhdbfgname: ASMDISK1 ; 0x068: length=8

kfdhdbblksize: 4096 ; 0x0ba: 0x1000

kfdhdbausize: 1048576 ; 0x0bc: 0x00100000

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

假设您要在数据库中使用 10 个磁盘。利用 ASM,您不需要在 OS 端创建任何东西,该特性将把一组物理磁盘集合成一个逻辑实体(称为磁盘组)。磁盘组类似于一个分段(和可选镜像)文件系统,但具有重要的差异:它不是一个用于存储用户文件的通用文件系统,并且它不进行缓冲。由于后面的原因,磁盘组提供了直接作为原始设备来访问这个空间,并仍提供文件系统的便利性和灵活性的好处。

逻辑卷管理器一般使用一个函数(如散列函数)来将块的逻辑地址映射到物理块。计算使用 CPU 周期。此外,当增加一个新的磁盘(或 RAID-5 磁盘组)时,这种典型的分段函数需要重新定位整个数据集中的每一位。

相比而言,ASM 使用一个特殊的 Oracle 例程来解决从文件区到物理磁盘块的映射问题。这种设计除了定位文件区非常快速之外,还在增加或删除磁盘时有所帮助,因为文件区的位置不需要调整。这个特殊的 ASM 例程类似于其它的文件系统,必须运行此例程,ASM 才能工作,并且用户不能进行修改。一个 ASM 例程可以在同一台服务器上支持许多 Oracle 数据库例程。

这个特殊的例程只是一个例程,不是用户可以在其中创建对象的数据库。所有关于磁盘的元数据都存储在磁盘组本身中,使得它们能够尽可能地自我描述。

那么概括地说,ASM 的优点是什么?

● 磁盘增加 — 增加磁盘变得非常容易。无需停机时间,并且文件区域自动重新分配。

● I/O 分配 — I/O 自动分布在所有可用的磁盘上,无需人工干预,从而减少了热点出现的可能性。

● 带区宽度 — 在重做日志文件中分段可以细分(128K,以获得更快的传输速率),对于数据文件,带区则略大一些(1MB,以一次性传输大量的数据块)。

● 缓冲 — ASM 文件系统不进行缓冲,直接进行输入/输出。

● 核心化的异步 I/O — 实现核心化的异步 I/O 无需特殊的设置,并且无需使用原始或第三方的文件系统(如 Veritas Quick I/O)。

● 镜像 — 如果硬件镜像不可用,则可以容易地建立软件镜像。

ASM丢失disk header导致ORA-15032、ORA-15040、ORA-15042 Diskgroup无法mount的案例不少,可以使用内部工具kfed修复的, 如果自己搞不定可以找ASKMACLEAN专业ORACLE数据库修复团队成员帮您恢复!

下面是迁移至一个已经存在的ASM数据库的步骤:

1群集中的所有实例shutdown immediate

2修改目标数据库的初始参数:

DB_CREATE_FILE_DEST

DB_CREATE_ONLINE_LOG_DEST[1,2,3,4]

CONTROL_FILES

3使用RMAN连接目标数据库,并启动目标数据库至nomount状态

4将源控制文件移动到第2步指定的位置

5完成第4步之后mount目标数据库

6使用RMAN拷贝数据库到ASM磁盘

7一旦拷贝完成,数据库就可以recovery了。使用RMAN进行数据库恢复 *** 作

8OPEN目标数据库

9注意临时表空间没有迁移,需要自己手工创建的

10下一步是建联机重做日志(在ASM中)

11旧数据文件可以从 *** 作系统删除了——慎重

12如果之前开启了数据块变化跟踪,可以重新开启这个特征

MEMBER 属于当前diskgroup的disk

FORMER 这个disk以前属于一个diskgroup,现在这个diskgroup被删除了

CANDIDATE 当使用裸设备,一个新的可以被diskgroup所用的disk

PROVISIONED 当使用asmlib,一个新的可以被diskgroup所用的disk

自动存储管理

Automatic Storage Management 自动存储管理(ASM) ASM 是 Oracle 数据库 10g 中一个非常出色的新特性,它以平台无关的方式提供了文件系统、逻辑卷管理器以及软件 RAID 等服务。ASM 可以条带化和镜像磁盘,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡 I/O 以删除“热点”。它还支持直接和异步的 I/O 并使用 Oracle9i 中引入的 Oracle 数据管理器 API(简化的 I/O 系统调用接口)。 ASM 不是一个通用的文件系统,并只能用于 Oracle 数据文件、重做日志以及控制文件。ASM 中的文件既可以由数据库自动创建和命名(通过使用 Oracle 管理文件特性),也可以由 DBA 手动创建和命名。由于 *** 作系统无法访问 ASM 中存储的文件,因此对使用 ASM 文件的数据库执行备份和恢复 *** 作的唯一途径就是通过恢复管理器 (RMAN)。 ASM 作为单独的 Oracle 实例实施,只有它在运行时其他数据库才能访问它。在 Linux 上,只有运行 OCSSD 服务(由 Oracle 通用安装程序默认安装)才能使用 ASM。ASM 需要的内存不多:对大多数系统,只需 64 MB。 安装 ASM 在 Linux 平台上,ASM 可以使用原始设备,或通过 ASMLib 接口管理的设备。出于易于使用和性能方面的原因,Oracle 建议在原始设备上使用 ASMLib。ASMLib 现在可以从 OTN 免费下载。本部分逐步讲解使用 ASMLib 配置一个简单 ASM 实例和构建一个使用 ASM 进行磁盘存储的数据库的全过程。 确定所需的 ASMLib 版本 ASMLib 以三个 Linux 程序包组成的程序包集提供: oracleasmlib - ASM 库 oracleasm-support - 用于管理 ASMLib 的实用程序 oracleasm - ASM 库的内核模块 每个 Linux 发行套件都有其自己的 ASMLib 程序包集。在每个发行套件中,每个内核版本都有一个相应的 oracleasm 程序包。

以上来自百度百科

说白了就是ORACLE自己的,不通过 *** 作系统对磁盘进行管理。

实验环境:

*** 作系统:RedHat Linux 64

数据库版本:Oracle 112020

在使用DBCA创建Oracle数据库的时候,发现找不到ASM磁盘组:

错误排查:

1、执行:

/usr/sbin/oracleasm scandisks和/usr/sbin/oracleasm listdisks

查看执行结果, listdisk可以正常的将磁盘组可显示出来

2、切换到 grid 用户下 ,查看ASM实例是否启动,并执行查询

sqlplus / as sysdba

select group_number,path,mount_status,state from v$asm_disk;

select group_number,offline_disks,state from v$asm_diskgroup;

查看磁盘以及磁盘组及其磁盘状态都正常(正常状态为mount);

3、用户组判断

id oracle 和id grid

查看oracle用户是否在admdba组里面

4、查看oracle用户和grid用户的$ORACLE_HOME/bin/oracle文件的权限

$ORACLE_HOME/bin/oracle该文件的默认权限为6751权限,有个s权限,如果s权限消失,这时通过OS认证将不能登录到数据库;

经过对问题的逐一排查,终于找到了问题的所在:

执行 chmod +s oracle 解决问题

总结:

DBCA建库找不到ASM磁盘的问题所在:

1 Incorrect permission setting for oracle user

2 ASM instance was not started or diskgroups are not mounted

3 The diskgroup resources are not online

4 The permission setting for the asm devices are incorrect

5 The oracle executable under /bin has incorrect permission settings

6 the file system for grid home was mounted with option ’nosuid’

本人是数据库菜鸟,下面是在刚刚接触asm管理数据写下的文章,如果有什么不对或者遗漏的地方请网友们指出,本人不胜感激。

asm创建

1)删除asm:

1,停止所有的服务

2,Localconfig ldel(删除css服务)

3,运行Universal Insatall 卸载 Oralce 10g 

4,cmd 下输入 oracle -delete - asmsid +asm

5,删除注册表中相应的信息

2)创建asm磁盘

3)创建css服务(用来连接asm和数据库进行通信的)

Crsctl check cssd命令检查是否创建的css正常启动。

4)用dbca创建asm选择的时候选择

   

5)修改相应的参数

注意:在修改隐含参数时:要注意加上双引号才能进行修改

6)添加数据磁盘到数据库中

7)创建数据库

8)通过第三方软件连接+asm实例

配置listnerora和tnsnameora通过sqlplus连接asm实例

注意以上的service_name的值不能是+asm,而是asm

9)通过asmcmd来查看数据库中的内容

   1)set oracle_sid=+asm

   2)set ORACLE_HOME=F:\oracle\product\1020\db_1 ---数据库的主目录,注意没有引号

   3)主要的命令有

   4)asm将所有的文件除了pwdsid这个文件没有放在asm中,其他的都放在里面

   

Du 命令查看数据库磁盘的使用情况。+表示根目录

Lsct 命令表示磁盘组供哪些数据库使用

Lsdg 命令表示磁盘组的内容

AU 表示allocate unit分配单元(1M)

10)在asm下创建表空间和数据文件,并创建别名

V$ASM_ALIAS,V$ASM_CLIENT,V$ASM_DISK,V$ASM_DISKGROUP,V$ASM_DISKGROUP_STAT,V$ASM_DISK_STAT

V$ASM_FILE,V$ASM_OPERATION,V$ASM_TEMPLATE

真正的数据文件在 datafile中创建的是别名而已

给system数据文件取别名

将真正的数据文件修改为别名文件(别名文件必须存在)

11)Asm新增加磁盘和磁盘组

1,先查看磁盘是否被识别,如果没有识别,则可以通过更改参数asm_diskstring来识别

2,当识别后通过下面语句进行新增磁盘组的 *** 作

external, normal和high redunancy (normal至少两块磁盘,high至少三块磁盘)

3,查询磁盘组的数量

ALTER DISKGROUP dg1  ADD DISK '/dev/raw/raw5';磁盘组新增磁盘

alter diskgroup dg1 drop disk DATA_0001

文章知识点与官方知识档案匹配

以上就是关于ORA-15063、ORA-15032要如何解决单位的Oracle数据库ASM diskgrou全部的内容,包括:ORA-15063、ORA-15032要如何解决单位的Oracle数据库ASM diskgrou、数据库中 ASM磁盘的个数和读写速度的关系是什么 例如10T的硬盘 划分10个1T. 或者划分5、oracle数据库用了asm存储 现在一个diskgroup起不来了 看报错是ORA-15032.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9759545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存