如何克隆 Oracle 实例?基本上,我希望最终将其从 复制d:\oracle\oldname
到d:\oracle\newname
。
我正在使用 Oracle 10.2。
答案1
考虑使用 RMAN DUPLICATE 命令。我相信这是在 9i 中引入的,但肯定在 10g 中可用。它负责手动克隆时所需的所有步骤,例如重命名数据文件、重新创建控制文件、重置数据库名称等。
如果您有新的数据和日志文件目录结构,您可以永久设置克隆的启动参数,通过字符串替换规范自动将它们转换为新格式/位置。然后克隆就变得非常简单,只需连接到目标(“克隆自”)、辅助(“克隆到”)和 RMAN 目录数据库并发出 RMAN 命令“DUPLICATE DATABASE to (myNewDBname)”即可。您还可以设置“直到时间”以将克隆带到较早的时间点。
Oracle 11g 增加了直接从实时数据库克隆的功能。
顺便说一句,如果您没有使用 RMAN 进行备份,那么请放下其他一切并立即开始执行此操作!
答案2
我假设你想在克隆上使用不同的实例名称?,
在许多方法中,最简单的方法可能是使用 RMAN 或您的备份和恢复软件来为您完成这项工作。
我认为应该是这样的:
- 备份数据库
- 关闭数据库
- 创建与原数据库同SID的新数据库
- 恢复到新数据库
- 导出 ORACLE_SID=新名称
- 更改 pfile 或 spfile 以反映控制文件的新位置
- 生成新的密码文件orapwd file=orapw password=?? entrys=5
- 启动新数据库
- 启动旧数据库
这是根据记忆和快速谷歌搜索拼凑起来的,自从我使用 Oracle 进行任何严肃的工作以来已经大约 2 年了,所以我并不指望上述内容是正确的,但它可能会为您指明正确的方向。
如果您想在不同的服务器上使用同一个实例,我建议使用 NFS、netapp 和 flexclones,因为它们运行良好。
答案3
如果您可以获得数据库的冷备份或热备份:
- 将冷/热备份文件复制到新的目录结构。
- 修改新实例的 init.ora 文件。
- 以 sysdba 用户身份登录时发出 STARTUP MOUNT
运行以下命令:
conn/作为 sysdba
启动 NOMOUNT 创建控制文件重用设置数据库“NEWNAME” RESETLOGS NOARCHIVELOG MAXLOGFILES xx MAXLOGMEMBERS xx MAXDATAFILES xxx MAXINSTANCES xx MAXLOGHISTORY xxxx 日志文件组 1'd:\oracle\NEWNAME\REDO01.LOG' 大小 XXM,--选择您的重做日志大
小组 2'd:\oracle\NEWNAME\REDO02.LOG' 大小 XXM,
组 3'd:\oracle\NEWNAME\REDO03.LOG' 大小 XXM 数据文件
'd:\oracle\NEWNAME\SYSTEM.DBF',
'd:\oracle\NEWNAME\undotbs.DBF',
'd:\oracle\NEWNAME\USERS.DBF',
'd:\oracle\NEWNAME\sysaux.DBF',
'd:\oracle\NEWNAME\TOOLS.DBF' — 数据库中的任何其他文件也需要重命名 CHARACTER SET WE8ISO8859P1; — 根据需要进行调整修改数据库打开RESETLOGS;
你可能还想做这样的事情:
更改表空间 TEMP 添加 TEMPFILE'd:\oracle\newname\temp.dbf' 大小 20M 在下一个 20M 上重新使用 AUTOEXTEND 最大大小无限制;
那应该让你接近...