oracle 12c rac tablespace 表空间删除办法

文章来源: 原创adler_cn,大路

场景展示:

通过在某一台node节点上执行shell 脚本,正常会同步到其他node节点上,事实并不是如此,我们发现执行完脚本之后,RAC服务器上生成的tablespace 文件,并不能正确,

错误结果类似:'/u01/app/oracle/product/12.2.0/db_1/dbs/adler.dat'  这样的生成路径,这是不正确的,是单机节点的表现结果,

正常结果应该类似: +DATA/ORCL/99B08294CD7F045EE0511061480A4ADC/DATAFILE/adler.290.1029008888

后果:不能正常生成tablespace ,将会导致数据不能正常同步,问题很严重。

我们该如何解决类似的错误?

以下为解决办法:

1、先清理报错的事项,如账号和角色

drop user alder cascade;
drop role alder_REP_ROLE;
drop role alder_APP_ROLE;

2、查询空间表相关信息
select name from v$datafile;  #查询表空间
select tablespace_name,status from dba_tablespaces; #查询表空间相关信息

3、操作,先offline ,再执行删除操作;步骤:第一步执行  select name from v$datafile;  获取file_name,第二步执行  select tablespace_name,status from dba_tablespaces; 获取tablespace_name;
第一步:alter database datafile '/u01/app/oracle/product/12.2.0/db_1/dbs/adler.dat' offline drop;  
第二步:drop tablespace adler including contents; #删除以上表空间
              drop tablespace adler including contents and datafiles; #删除以上表空间和物理文件,和上面语句有一定差别,不过都可以执行

提示: 按照以上的办法,把其他需要重新生成的表空间和物理文件删除


4、验证结果

select tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
from dba_data_files 
order by tablespace_name;  #查询表空间相关信息

select tablespace_name,file_name from dba_temp_files; # 查询临时表空间

 

5、重新执行shell 脚本,重新生成tablespace 表空间


6、表空间操作(补充)
查询:
SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 

新增操作:
create tablespace SIRM2 
datafile '+DATA/ORCL/99B08294CD7F045EE0539061480A4ADC/DATAFILE/SIRM2.dbf' size 1024M 
autoextend on next 10M maxsize unlimited
EXTENT MANAGEMENT local  autoallocate
segment space management auto;

删除操作:
drop tablespace SIRM2 including contents and datafiles;


7、用户删除操作(补充)

删除用户提示,无法删除在用用户

首先将索要删除的用户锁定(这句必须执行):

     alter user 用户名 account lock;

查看当前用户占用资源:

     select saddr,sid,serial#,paddr,username,status from v$session where username = '用户名';

然后可以看到status  为 INACTIVE 的记录;

 执行以下杀死进程的sql(下面的两个参数是status  为 INACTIVE 时的记录):

  alter system kill session 'sid,serial#';

 执行删除用户操作

  drop user 用户名 cascade;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值