Oracle 11g R2創建資料庫之手工建庫方式

来源:https://www.cnblogs.com/dbabd/archive/2019/01/11/10256074.html
-Advertisement-
Play Games

正文 在之前的博文當中梳理了關於DBCA靜默方式創建資料庫的過程,本文就手工通過SQL PLUS客戶端採用 語句創建資料庫。這種建庫方式就是完全使用手工SQL語句創建資料庫,通常而言都會推薦DBCA圖形界面方式創建,因為更為直觀,但並非所有場景都有圖形界面。DBCA也可以使用靜默方式進行創建資料庫, ...


正文

在之前的博文當中梳理了關於DBCA靜默方式創建資料庫的過程,本文就手工通過SQL*PLUS客戶端採用CREATE DATABASE語句創建資料庫。這種建庫方式就是完全使用手工SQL語句創建資料庫,通常而言都會推薦DBCA圖形界面方式創建,因為更為直觀,但並非所有場景都有圖形界面。DBCA也可以使用靜默方式進行創建資料庫,詳細可參考我另一篇博文:Oracle 11g R2創建資料庫之DBCA靜默方式

手工方式是採用執行CREATE DATABASESQL語句完成的。相比較DBCA工具建庫而言,手工方式可以將建庫語句編寫成腳本語句,可以通過執行腳本來完成建庫。在完成手工方式創建資料庫之前還需進行額外的操作以保證資料庫可用性:

  • 創建數據字典以及基於數據字典視圖;
  • 創建標準的PL/SQL包。

這些操作也都可以寫進腳本當中執行,簡化了操作步驟。

關於手工方式創建資料庫詳細步驟可以參考官方文檔:Creating a Database with the CREATE DATABASE Statement

環境準備

  1. 操作系統(OS):CentOS Linux release 7.5.1804 (Core)
  2. 資料庫版本(Oracle Database):Oracle Database 11g R2(11.2.0.4.0)

其中監聽也已經通過靜默方式配置啟動成功。

總體步驟

  1. 指定資料庫實例的SID
  2. 配置系統環境變數
  3. 指定資料庫管理員認證方式
  4. 創建初始化參數文件(pfile)
  5. 連接資料庫實例
  6. 創建伺服器參數文件(spfile)
  7. 啟動資料庫實例
  8. 執行CREATE DATABASE建庫語句
  9. 創建額外的表空間(如索引表空間)
  10. 執行腳本創建數據字典視圖

步驟解析

指定資料庫實例(SID)

SID是Oracle資料庫在同一伺服器上的唯一標識。通過環境變數ORACLE_SID指定,在Linux系統下ORACLE_SID是區分大小寫的,長度最大為8個字元,有兩種方式配置:

  • 環境變數配置文件中指定,環境變數文件一般是oracle用戶home目錄下的.bash_profile
$ grep ORACLE_SID /home/oracle/.bash_profile
export ORACLE_SID=dbabd                                  #實例SID 
  • 會話級別直接使用命令export指定。
$ export ORACLE_SID=dbabd

配置系統環境變數

主要是配置ORACLE_HOME環境變數值,並且將oracle命令路徑 $ORACLE_HOME/bin加入系統PATH變數中方便以使用,可以參考SID配置寫入環境變數文件當中。

$ grep ORACLE_HOME /home/oracle/.bash_profile
export ORACLE_HOME=/data/app/oracle/product/11.2.0/db_1  #Oracle Home目錄
export PATH=$PATH:$ORACLE_HOME/bin                       #命令加入系統環境變數中

指定管理員認證方式

根據官方文檔的描述,資料庫管理員的認證方式有如下方式:

  • 通過密碼文件認證;
  • 通過操作系統級別認證。

如果是通過操作系統認證,則用戶要是屬於dba組的成員,如果是密碼文件認證必須創建密碼文件:

$ orapwd file=$ORACLE_HOME/dbs/orapwdbabd password=oracle entries=10

創建初始化參數文件

這裡的初始化參數文件指的pfile,pfile可以能過文本編輯器進行編輯與修改,待實例啟動成功之後根據pfile創建伺服器參數文件(spfile)。spfile使有的資料庫參數能夠在實例運行中動態修改並且生效,大大增加了資料庫參數的可維護性。pfile和spfile文件預設存儲的路徑為 $ORACLE_HOME/dbs。pfile的命名格式為initSID.ora,本文創建的pfile文件名為initdbabd.ora,根據官方文檔的要求,初始化參數文件最少都要包含如下參數DB_NAMECONTROL_FILESMEMORY_TARGETinitdbabd.ora內容如下:

DB_NAME=dbabd
CONTROL_FILES=(/data/app/oracle/data/dbabd/control01.ctl,/data/app/oracle/data/dbabd/control02.ctl)
MEMORY_TARGET=300M

也可以通過模板參數文件init.ora進行修改,init.ora內容如下:

$ cat init.ora | grep -v ^$ | grep -v ^#
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'

連接資料庫實例

在連接之前確保當前環境變數的配置,主要檢查的是資料庫實例SID變數ORACLE_SID的值:

$ echo $ORACLE_SID
dbabd

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 11 15:16:12 2019

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL>                      

創建伺服器參數文件

通過create spfile from pfile語句從初始化參數文件創建伺服器參數文件,路徑也是保存在 $ORACLE_HOME/dba目錄下:

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 11 15:20:04 2019

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> create spfile from pfile;

File created.

$ pwd
/data/app/oracle/product/11.2.0/db_1/dbs
$ ls *.ora
initdbabd.ora  init.ora  spfiledbabd.ora

啟動資料庫實例

啟動資料庫實例,因為當前只有參數文件,所以只能將實例啟動到NOMOUNT狀態:

SQL> startup nomount;
ORACLE instance started.

Total System Global Area  313159680 bytes
Fixed Size                  2252824 bytes
Variable Size             222302184 bytes
Database Buffers           83886080 bytes
Redo Buffers                4718592 bytes

SQL> select status from v$instance;

STATUS
------------------------------------
STARTED

即使直接執行命令startup也是只能啟動到NOMOUNT狀態,並會報ORA-00205錯誤,因為當前只有參數文件。

SQL> startup;
ORACLE instance started.

Total System Global Area  313159680 bytes
Fixed Size                  2252824 bytes
Variable Size             222302184 bytes
Database Buffers           83886080 bytes
Redo Buffers                4718592 bytes
ORA-00205: error in identifying control file, check alert log for more info

執行建庫語句

最關鍵的一個步驟,就是執行CREATE DATABASE建庫語句。開始創建資料庫之前檢查確保:

  • 數據文件目錄存在
  • 日誌文件目錄存在
  • 控制文件目錄存在

本文以上三類文件的路徑統一為 /data/app/oracle/data/dbabd

官方文檔上有CREATE DATABASE語句的模板:Issue the CREATE DATABASE Statement,也可以根據需求自定義CREAET DATABASE語句,以下是通過模板進行修改的語句:

CREATE DATABASE dbabd                          -- 資料庫名,DB_NAME
   USER SYS IDENTIFIED BY oracle               -- sys用戶密碼
   USER SYSTEM IDENTIFIED BY oracle            -- system用戶密碼
   LOGFILE GROUP 1 ('/data/app/oracle/data/dbabd/redo01.log') SIZE 100M BLOCKSIZE 512,     -- 線上日誌
           GROUP 2 ('/data/app/oracle/data/dbabd/redo02.log') SIZE 100M BLOCKSIZE 512,
           GROUP 3 ('/data/app/oracle/data/dbabd/redo03.log') SIZE 100M BLOCKSIZE 512
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   CHARACTER SET AL32UTF8                      -- 資料庫字元集        
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   DATAFILE '/data/app/oracle/data/dbabd/system01.dbf' SIZE 325M REUSE           -- 各個表空間數據文件
   SYSAUX DATAFILE '/data/app/oracle/data/dbabd/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/data/app/oracle/data/dbabd/users01.dbf'
      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE temp
      TEMPFILE '/data/app/oracle/data/dbabd/temp01.dbf'
      SIZE 20M REUSE
   UNDO TABLESPACE undotbs
      DATAFILE '/data/app/oracle/data/dbabd/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

以上註釋只是為了更好解析語句的內容,實際語句當中並不存在註釋內容。

執行以上CREATE DATABASE語句:

SQL> CREATE DATABASE dbabd
  2     USER SYS IDENTIFIED BY oracle
  3     USER SYSTEM IDENTIFIED BY oracle
  4     LOGFILE GROUP 1 ('/data/app/oracle/data/dbabd/redo01.log') SIZE 100M BLOCKSIZE 512,
  5             GROUP 2 ('/data/app/oracle/data/dbabd/redo02.log') SIZE 100M BLOCKSIZE 512,
  6             GROUP 3 ('/data/app/oracle/data/dbabd/redo03.log') SIZE 100M BLOCKSIZE 512
  7     MAXLOGFILES 5
  8     MAXLOGMEMBERS 5
  9     MAXLOGHISTORY 1
 10     MAXDATAFILES 100
 11     CHARACTER SET AL32UTF8
 12     NATIONAL CHARACTER SET AL16UTF16
 13     EXTENT MANAGEMENT LOCAL
 14     DATAFILE '/data/app/oracle/data/dbabd/system01.dbf' SIZE 325M REUSE
 15     SYSAUX DATAFILE '/data/app/oracle/data/dbabd/sysaux01.dbf' SIZE 325M REUSE
 16     DEFAULT TABLESPACE users
 17        DATAFILE '/data/app/oracle/data/dbabd/users01.dbf'
 18        SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
 19     DEFAULT TEMPORARY TABLESPACE temp
 20        TEMPFILE '/data/app/oracle/data/dbabd/temp01.dbf'
 21        SIZE 20M REUSE
 22     UNDO TABLESPACE undotbs
 23        DATAFILE '/data/app/oracle/data/dbabd/undotbs01.dbf'
 24        SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

Database created.

創建額外表空間(可選)

這一步是可選的,如果建庫語句創建的資料庫已經滿足需求,這步可以跳過,本文這一步創建一個索引表空間:

SQL> create tablespace idx_tbs datafile '/data/app/oracle/data/dbabd/idx_tbs01.dbf' size 100M;

Tablespace created.

創建數據字典視圖

執行額外的SQL腳本創建數據字典、視圖、同義詞、PL/SQL包等。腳本所在路徑為 ORACLE_HOME/rdbms/admin$ORACLE_HOME/sqlplus/admin,關於執行的SQL腳本及其作用可以參考官方文檔:Run Scripts to Build Data Dictionary Views

以SYS用戶執行:

@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/utlrp.sql

執行完成後切換到SYSTEM用戶執行:

@?/sqlplus/admin/pupbld.sql

在SQL*PLUS當中,?代表的是$ORACLE_HOME。

至此,手工方式創建資料庫完成,可以通過sqlplus進行查詢實例狀態:

SQL> select instance_name,startup_time,status from v$instance;

INSTANCE_NAME                                    STARTUP_TIME        STATUS
------------------------------------------------ ------------------- ------------------------------------
dbabd                                            2019-01-11 15:26:49 OPEN

也可以通過監聽查看實例狀態:

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-JAN-2019 16:53:17

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                11-JAN-2019 10:35:36
Uptime                    0 days 6 hr. 17 min. 41 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /data/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /data/app/oracle/diag/tnslsnr/dbabd/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbabd)(PORT=1521)))
Services Summary...
Service "dbabd" has 1 instance(s).
  Instance "dbabd", status READY, has 1 handler(s) for this service...
The command completed successfully

參考

https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11073

☆〖本人水平有限,文中如有錯誤還請留言批評指正!〗☆


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、背景 在平時開發過程當中需要針對 MySQL 資料庫進行監控,這裡我們可以使用 Grafana 和 Prometheus 來實現監控功能。Grafana 是一款功能強大的儀錶盤面板,支持多種數據源,可以自定義圖表進行監控。而 Prometheus 就是 Grafana 支持的數據源之一,Prom ...
  • 本文收錄在容器技術學習系列文章總目錄 1、製作鏡像 1.1 鏡像的生成途徑 基於容器製作 dockerfile,docker build 本篇主要詳細講解基於容器製作鏡像;基於dockerfile 製作鏡像在後一張文章Docker系列07—Dockerfile 詳解中詳細介紹; 1.2 基於容器製作 ...
  • 一、安裝步驟 1. 添加企業版附加包。 2. 安裝 PIP。 3. 更新 PIP。 4. 安裝 Docker Compose 二、可能遇到的問題 在執行 命令的時候可能會提示以下內容: 這個時候,你需要執行以下命令強制重新安裝 request。 安裝完成之後,Docker Compose 安裝成功。 ...
  • 關鍵字:SQL Server NEWID();BSON;MongoDB UUID 1.遇到的問題和困惑 SQL Server中的NEWID數據存儲到MongoDB中會是什麼樣子呢?發現不能簡單的通過此數據查詢了。 例如我們將SQL Server 資料庫中的QQStatements2019表遷移至Mo ...
  • 首次安裝資料庫,一般按照傻瓜式操作,So easy! 但是當我們的機器之前安裝過,現在要重新安裝的時候,總會遇到很多問題。不管是Oracle,還是MySQL,還是其他一些涉及到註冊表、服務的軟體。都很麻煩。現在來一步步解決吧。 ...
  • 不同伺服器資料庫表連接查詢,修改 exec sp_addlinkedserver 'ERP','','SQLOLEDB','10.0.10.0' exec sp_addlinkedsrvlogin 'ERP','false',null,'sa','123456' 在伺服器端-連接伺服器可以看到'10 ...
  • 查詢的生命周期的下一步是將一個SQL轉換成一個可執行計劃,MySQL再按照這個計劃和存儲引擎進行交互 ...
  • 針對於oracle升級從11.2.0.4升級至12.1.0.1,遇到的問題解決。 運行/oracle/app/product/12.1.0.1/dbhome_1/bin/dbua 後 在選擇資料庫home目錄時,沒有值顯示,即 Source oracle home 不存在 解決方式: su root ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...