暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【译】重要的 DBCA 参数,如果您计划在 ASM 中使用存储快照克隆

原创 smiling 2022-05-11
977

原文作者:阿兰·富勒

原文链接:
https://blog.dbi-services.com/important-dbca-parameter-if-you-plan-to-use-storage-snapshot-cloning-in-asm/

我目前正在处理一个客户项目是使用存储快照创建数据库克隆。优点是显而易见的,因为使用存储快照克隆不仅节省空间,而且与完整克隆相比速度也非常快。

这篇文章不是要详细解释怎么实现快照克隆技术,它指出在使用 DBCA 创建源数据库时要考虑的重要一点。

简要概述如何使用 ASM 完成快照克隆:

设置源数据库为备份模式
在存储级别创建整个 ASM 磁盘组的快照
取消源数据库的备份模式
测试服务器上存在lun的快照
使用重命名实用程序重命名磁盘组
ASM 以新名称挂载磁盘组
在 ASM 中调整 db_unique_name
为数据库创建新的控制文件
使用open resetlogs打开数据库

我想在这里重点是“在 ASM 中调整 db_unique_name”。例如,如果您在磁盘组+DATA上创建一个新DB,这个DB 的 ASM 中的目录结构如下所示:

+DATA/PROD_SITE1
+DATA/PROD_SITE1/CONTROLFILE
+DATA/PROD_SITE1/DATAFILE
+DATA/PROD_SITE1/ONLINELOG
+DATA/PROD_SITE1/TEMPFILE

如果我们假设我们克隆的数据库应该命名为 TEST01,且我们已将 ASM 中的磁盘组从+DATA重命名为 +DATA_TEST,那么在挂载新磁盘组后,该磁盘组上的目录结构如下所示:

+DATA_TEST/PROD_SITE1
+DATA_TEST/PROD_SITE1/CONTROLFILE
+DATA_TEST/PROD_SITE1/DATAFILE
+DATA_TEST/PROD_SITE1/ONLINELOG
+DATA_TEST/PROD_SITE1/TEMPFILE

在我们用数据库名TEST01创建新的控制文件之前,我们必须在ASM中将db_unique_name目录从PROD_SITE1重命名为TEST01_SITE1。
在ASM中没有mv命令,所以目录必须在ASM实例上用SQL语句进行调整。工作原理如下:

SQL> 
alter diskgroup DATA_TEST rename directory '+DATA_TEST/PROD_SITE1' to '+DATA_TEST/TEST01_SITE1';
 
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15177: cannot operate on system aliases

在这里有一个问题,在 ASM 中有两种类型的目录。“系统生成(Y)”和“手动创建(N)”。
如果我在 asmcmd 中查询目录,我会看到,我使用 dbca 创建的数据库具有“系统生成”名称。

ASMCMD> ls -la
 
Type  Redund  Striped  Time  Sys  Name                           
                              Y    ASM/                             
                              Y    PROD_SITE1/

当 Oracle 创建目录时,它始终是系统生成的,而当在 asm 中使用 mkdir 手动创建时,它是“非系统生成的”。
您必须知道“系统生成的目录”永远不能重命名。这在 ASM 中是不可能的,并且没有解决方法。

因为我们使用 DBCA 创建了源数据库,所以目录 PROD_SITE1 “系统生成”的,因此我们无法将数据文件的路径更改为我们的新名称 TEST01_SITE1。

一种可能性是添加新的控制文件并仍然用旧的 db_unique_name 作为路径。这样数据库可以被启动,如果您之后查询 v$datafile,仍然会在那里看到错误的db_unique_name。

为了纠正这个问题,我们可以强制在线移动数据文件,但缺点是我们在 ASM 中复制了整个数据库,这正是我们想要通过快照克隆来防止的。

alter database move datafile {DATAFILE_PATH} to '+DATA_TEST';

那么这个问题的解决方案是什么?

在创建源DB (PROD)时,我们必须确保DBCA不会将目录创建为“系统生成的”,这样在克隆之后,我们就有可能在新的磁盘组上重命名它。

在DBCA中有一个参数

-datafileDestination

如果在 DBCA create database 语句期间显式设置此参数,在ASM中创建的目录是“手动生成的”,因此可以稍后重命名。

最后修改时间:2022-05-11 09:47:44
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论