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 使之生效 即可.
标签:kernel,数据库,静默,orcl,dbca,Oracle,DBCA,建库 From: https://www.cnblogs.com/jinanxiaolaohu/p/16720895.html