如何将 ASM spfile 移动到不同的磁盘组

方法 2:使用中间 pfile

这是通过使用中间 pfile 在单实例环境中移动 ASM spfile 的示例。

创建中间 pfile

  1. 验证当前 spfile 的位置。
$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.1.0 Production on [date]
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Automatic Storage Management option
SQL> show parameter spfile
NAME    TYPE    VALUE
------- ------- -------------------------------------------------
spfile  string  +DATA/asm/asmparameterfile/registry.253.715881237
  1. 接下来是使用如下所示的命令从 spfile 创建一个中间 pfile。
SQL> create pfile='/tmp/pfile+ASM.ora' from spfile;
File created.

创建新的 spfile

  1. 使用我们刚刚在上面的步骤 1 中创建的中间 pfile 在新磁盘组中创建一个新 spfile。
SQL> create spfile='+PLAY' from pfile='/tmp/pfile+ASM.ora';
File created.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Automatic Storage Management option

重新启动 HA 堆栈

  1. 重新启动 HA 堆栈以验证 ASM 是否可以通过移动的 spfile 正常启动。
$ crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on '[server]'
...
CRS-4133: Oracle High Availability Services has been stopped.
$ crsctl start has
CRS-4123: Oracle High Availability Services has been started.
  1. 使用以下命令验证数据库是否正在使用新的 spfile。
$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.1.0 Production on [date]
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Automatic Storage Management option
SQL> show parameter spfile
NAME    TYPE    VALUE
------- ------- -------------------------------------------------
spfile  string  +PLAY/asm/asmparameterfile/registry.253.715963539
  1. 还要验证磁盘组+DATA 和+PLAY 是否处于挂载状态。
SQL> select name, state from v$asm_diskgroup;
NAME  STATE
----- ----------
DATA  MOUNTED
PLAY  MOUNTED
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Automatic Storage Management option

4、新的spfile的使用也可以用asmcmd验证如下:

$ asmcmd spget
+PLAY/asm/asmparameterfile/registry.253.715963539

删除旧的 spfile

我们可能希望删除旧的 spfile,以便没有人误用它。
使用“asmcmd rm”命令删除旧的 spfile。

$ asmcmd rm +DATA/asm/asmparameterfile/registry.253.715881237

注意:必须重新启动 ASM 实例才能使此更改生效。
在集群环境中,集群中的所有 ASM 实例都必须重新启动。

问题

首次安装 ASM 时,spfile 被放置在默认磁盘组中(例如 +DATA)。
现在的要求是将 spfile 移动到不同的磁盘组。

on  It Road.com

方法 1:使用“asmcmd spcopy”

复制 spfile

下面显示的是在 Oracle Restart 环境中使用“asmcmd spcopy”实用程序移动 spfile 的示例。

  1. 使用“asmcmd spget”命令列出数据库中当前正在使用的spfile。
$ asmcmd spget
+DATA/asm/asmparameterfile/registry.253.722601213

验证要将 spfile 移动到的磁盘组。
在我们的示例中,我们将把 spfile 移动到磁盘组“+PLAY”

$ asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Votin g_files Name
MOUNTED EXTERN N 512 4096 1048576 14658 9814 0 9814 0 N DATA/
MOUNTED EXTERN N 512 4096 1048576 9772 8507 0 8507 0 N PLAY/
MOUNTED EXTERN N 512 4096 1048576 9772 9212 0 9212 0 N RECO/

使用 -u 选项复制 spfile 以在 RAC 环境中更新 GPnP 配置文件

$ asmcmd spcopy -u +DATA/asm/asmparameterfile/registry.253.722601213 +PLAY/spfileASM.ora

重新启动 HA 堆栈

  1. 下一步是重新启动 HA 堆栈以验证 ASM 是否可以通过 Copyspfile 正常启动。
    使用 crsctl 重新启动“has”资源。
$ crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on '[server]'
...
CRS-4133: Oracle High Availability Services has been stopped.
$ crsctl start has
CRS-4123: Oracle High Availability Services has been started.

再次使用“asmcmd spget”命令验证 spfile 的新位置。

$ asmcmd spget
+PLAY/spfileASM.ora

删除旧的 spfile

我们可能还想删除旧的 spfile,这样就不会有人错误地使用它。
为此,请使用“asmcmd rm”命令。

$ asmcmd ls -l +DATA/asm/asmparameterfile
Type Redund Striped Time Sys Name
ASMPARAMETERFILE UNPROT COARSE JUN 25 10:00:00 Y REGISTRY.253.722601213
$ asmcmd rm +DATA/asm/asmparameterfile/registry.253.722601213
日期:2020-09-17 00:11:23 来源:oir作者:oir