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


    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 使之生效 即可. 
  • 相关阅读:
    通过注册表实现开机自启的取消
    数据库为什么要使用B+树
    PHP的一种缓存方案静态化
    wordpress源码阅读
    最近在搞的东西有点多Gradle,Python,java,groove搞的脑子都要炸了,还得了流感。满满的负能量。
    编写一个自己的PHP框架(一)写在前面
    cookie,session机制
    __autoload和spl_autoload_register区别
    _initialize()和__construct()
    在往数据库中插入复杂的字符串时,单双引号混用经常会搞的很乱
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/16720895.html
Copyright © 2020-2023  润新知