oracle数据库取消存放本地,Oracle集群RAC误将数据文件保存在本地的解决办法

Oracle集群Real Application Cluster的数据文件存储在ASM(自动存储管理)中,而不是集群中某个节点的磁盘上,所以在新建表空间时,若将数据文件保存在某个节点的磁盘,就会引起问题,如:重启数据库实例时无法正常启动,只能offline数据文件存储在本地磁盘上的表空间才可以启动数据库实例,或数据库可以启动,但启动后访问该表空间时报错[ORA-01157](后面的实战案例中的所描述的情况)

区分数据文件是否是位于ASM中:用sys账户登录,执行SQL语句:

SQL>select name from v$datafile;

可以查看所有数据文件的存储位置,其中以“+XXX”开头的即为存储在ASM中的数据文件,而存储在本地磁盘上的文件则大多以”/”(linux下)或“[盘符]:/”(windows下)开头

而将本地存储的数据文件转移到ASM上可以使用dbms_file_transfer.copy_file存储过程,也可以使用rman管理工具,这里以第一种方法为例来讲解其详细步骤(其实是第二种方法不会玩>_

实战案例

环境说明:

沈阳图形数据库,

节点1:192.168.5.12 RadHatLinux5 Oracle 10.2.0.4

节点2:192.168.5.13 RedHatLinux5 Oracle 10.2.0.4

在执行查询语句时报错:

ORA-01157: cannot identify/lock data file 153 - see DBWR trace file

ORA-01110: data file 153: '/home/oracle/base/product/10.2.0/db_1/dbs/SYK.dbf'

ORA-01157:无法标识/锁定数据文件

由上述的报错信息可以看出来,表空间SYK的数据文件SYK.dbf放在某个linux节点的服务器上,虽然之前新建之后一直可用,但在重启之后就报出了这个错误,应该就是数据文件没有放置到正确的位置所导致的问题,经查找,发现数据文件被放置在了节点2(192.168.5.13)的本地磁盘上,故,现将数据文件由本地磁盘移动至ASM

1.     创建两个directory,一个指向本地磁盘的数据文件目录,一个指向ASM数据文件目录,ASM的数据文件目录可以由其他表空间的数据文件位置获得,沈阳这里是“+DG/orcl”,这两个目录后面在调用存储过程的时候会用到

SQL>create directory localdb as ‘/home/oracle/base/product/10.2.0/db_1/dbs’

SQL>create directory asmdb as ‘+DG/orcl’

2.     卸载表空间,将表空间的状态置为offline

SQL>alter tablespace SYK offline

3.     拷贝数据文件到ASM

SQL>exec dbms_file_transfer.copy_file(‘localdb’, ’asmdb’, ‘SYK.dbf’);

4.     修改数据库中的数据文件路径

SQL>alter database rename file ‘/home/oracle/base/product/10.2.0/db_1/

dbs/SYK.dbf’ to ‘+DG/orcl/SYK.dbf’

5.     重新挂载表空间

SQL>alter tablespace SYK online;

这样就可以解决RAC中数据文件误保存在本地而导致的问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值