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 使之生效 即可. 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章