当前位置:  数据库>oracle

复制Oracle数据库中需要注意的几点事项

    来源: 互联网  发布时间:2017-06-10

    本文导语: 此次复制的生产库数文件为9.18TB,实际分配的数据大小为5.16TB,使用RMAN压缩备份后为1.1TB。 复制端数据库采用单实例ASM存储方式管理,Oracle数据库版本为11.2.0.4. 数据文件目录为+DATA,14.5TB,归档日志目录为+ARCH,2TB。 生产库数...

此次复制的生产库数文件为9.18TB,实际分配的数据大小为5.16TB,使用RMAN压缩备份后为1.1TB。

复制端数据库采用单实例ASM存储方式管理,Oracle数据库版本为11.2.0.4. 数据文件目录为+DATA,14.5TB,归档日志目录为+ARCH,2TB。

生产库数据文件大小
SQL> select sum(bytes)/1024/1024/1024 GB from dba_segments;

        GB
----------
5287.02454

生产库实际分配的大小
SQL> select sum(bytes)/1024/1024/1024 GB from dba_data_files;

        GB
----------
9402.70592

注意事项一: 避免set newname脚本中出现同名文件

在rman中使用set newname时候为了保持文件名和生产库一致,可以采用手工命名的方式。例如:

set newname for datafile 1 to ‘+DATA/cmsdb/datafile/system01.dbf’;

这个方式出现了一个潜在的隐患,如果生产库中存在相同名字的数据文件存放在不同的目录中,在编写脚本时候容易出现重名的情况,导致RMAN restore出错。

select name from v$datafile where name like ‘%DATA_P008.dbf%’;
/sgpmdb/oradata/u01/DATA_P008.dbf
/sgpmdb/oradata/u06/DATA_P008.dbf

当我采用vi编辑命令将目录/sgpmdb/oradata/u01 统一改成+DATA/sgpmdb/datafile 就会自己创造出重名的文件。在好几百行的脚本中很难一眼看出这个问题。

:%s#/sgpmdb/oradata/u01/#+DATA/cmsdb/datafile/#g

run{
...
set newname for datafile 1 to '+DATA/cmsdb/datafile/DATA_P008.dbf';
...
set newname for datafile 2 to '+DATA/cmsdb/datafile/DATA_P008.dbf';

}

执行RMAN restore 错误信息如下:

ORA-19504: failed to create file “+DATA/cmsdb/datafile/data_p008.dbf”
ORA-17502: ksfdcre:4 Failed to create file +DATA/cmsdb/datafile/data_p008.dbf
ORA-15005: name “cmsdb/datafile/data_p008.dbf” is already used by an existing alias

所以还是建议采用如下的方式让oracle来定义alias,保持文件名唯一。
run{
set newname for datafile 1 to '+DATA';
set newname for datafile 2 to '+DATA';
set newname for datafile 3 to '+DATA';
…...
}

注意事项二: 后台执行nohup的进程问题

vi编辑好RMAN脚本后,建议使用nohup命令在后台执行,避免执行过程中被以外干扰。

nohup ./rman_scripts.cmd &

rman在后台执行时,屏幕没有输出,可以通过tail -f ./nohup.out的方式来监控rman输出。

也可以通过ps -ef | grep 的方式来观察程序是否在后台执行。这里需要注意的是 ps -ef | grep 后要输入的是什么?

容易犯的错误是 ps -ef | grep nohup

这个命令是没有返回结果的。如果错误的认为刚刚输入的命令没有起作用,而再次执行 nohup. /rman_scripts.cmd的话,悲剧产生了。该脚本被执行了2次!

如果是restore命令的话,并且采用了set newname for datafile 1 to '+DATA’;的写法数,+DATA磁盘组中就会存在两份数据文件,最终将磁盘空间撑爆。

正确的用法是 ps -ef | grep rman_scripts.cmd

以上总结都是在此次项目中出现的问题。在漫长的数据库恢复过程中,每一个错误都会耽误大量的时间,一定要小心谨慎。

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Strings(字符串) 成员 copy():将内容复制为一个字符数组
  • 请问linux复制文件到u盘是复制到硬盘缓存再复制去u盘的吗?
  • photoshop教程 快捷键命令大全表免费下载 快捷键如何设置 复制 放大等
  • 比较难的目录复制,如何原样复制链接符号文件和设备文件?
  • 在Linux中复制文件如何自动跳过那些损坏的无法被复制的文件。
  • 请问UNIX下如何复制目录结构而不复制其中的文件
  • 关于剪贴板(对象的复制、粘贴,而非String的复制、粘贴)
  • oracle复制表结构和复制表数据语句分享
  • pdf格式文件,复制内容时,英文部分可以正常复制,中文部分却不可以,谁能解决一下
  • cp复制文件时用-a怎么复制过来的文件属性跟原来的还不一样呢?
  • sqlserver 复制表 复制数据库存储过程的方法
  • sql数据库中复制表结构与复制表数据
  • 有关vi的鼠标复制功能
  • 文件复制软件 Copy Handler
  • VI搜索时怎样将复制的内容作为搜索的内容??
  • 链接文件的复制问题,重问
  • 数据库复制引擎 Tungsten Replicator
  • Unix 命令行数据复制程序 ddpt
  • vim打开的文件怎么复制里面的内容啊
  • 急。。。我下载了一个库。如何把头文件复制到系统目录中?
  • 数据同步和复制解决方案 SymmetricDS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,