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

Oracle DBCA 静默删除以及建库的脚本

济南小老虎 2022-09-23
342

No.1 背景

公司最近有一个测试环境需要重新备份恢复
但是里面有6个数据库实例 400多G的数据文件.
一般情况下 需要drop user xxx cascade ;
然后执行 drop tablespace xxx including content and datafile ;
因为表数量重大, 元数据较为复杂, 这几个命令实在是非常浪费时间.

为了提高效率 准备使用 dbca 建库的方式进行处理 来加快处理时间.

注意:
此场景仅适用于测试环境.
此场景仅适用于可以推倒重来的场景.

No.2 处理过程

一定要确认数据库可以重新搭建.
处理之前IP地址与机器名服务名一定要确定好
可以通过 lsnrctl 查看服务名 进行确定.

第一步静默删除数据库

su
- oracle
# 必须切换到Oracle用户进行处理.
dbca
-silent -deleteDatabase -sourceDB orcl
# 注意这一步 需要输入 sys的账户密码.
确认删除成功之后可以查看一下 datafile的文件目录
/data/orcl/app/oracle/oradata
里面的文件都已经被清理里. 速度比较快可能也就几分钟.

第二步 静默创建数据库
dbca
-silent -createDatabase -templateName General_Purpose.dbc -gdbname orcl -sid orcl -responseFile NO_VALUE -characterSet ZHS16GBK -datafileDestination data/orcl/app/oracle/oradata -memoryPercentage 30 -emConfiguration LOCAL

# 注意 需要进行处理 注意字符集. 数据库数据文件目录.
# 以及注意服务名以及其他, 尽量保持一致 .

No.3 异常问题处理

本次静默建库报了一个错误: 
ORA
-27104: system-defined limits for shared memory was misconfigured

百度简单一搜发现里面是kernel的问题. 需要修改内核参数.

比较简单
vim
/etc/sysctl.conf
根据内存情况进行添加, 一般的说法为至少为内存数量的一般进行计算
比如我这边是 96G内存的服务器 我设置如下, 服务器启动起来了:
kernel.shmmax
= 68719476736
kernel.shmall
= 33554432

注意 需要执行一下 sysctl
-p 使之生效 即可.


文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论