前言
相信大家應該都知道,對于Oracle數據庫的創建,Oracle除了支持dbca(GUI界面),同時也支持手工方式創建數據庫,即使用CREATE DATABASE語句創建數據庫。使用此語句對使用DBCA的一個優點是可以從腳本內創建數據庫。
在Oracle 12c版本中支持12c之前的非CDB數據庫以及CDB容器數據庫。因此創建方式略有不同。本文同時描述2種不同數據庫的手工創建方法。下面話不多說了,來一起看看詳細的介紹吧。
一、12c手工創建非CDB數據庫
步驟1:指定實例標識符(SID)
ORACLE_SID的環境變量用于該實例從稍后可能創建并同時在同一主機計算機上運行其他Oracle Database實例區分開來。
$ export ORACLE_SID=nocdb$ export ORACLE_UNQNAME=nocdb
步驟2:確保設置所需的環境變量
根據您的平臺,在啟動SQL * Plus之前(根據后續步驟的要求),您可能必須設置環境變量,或至少驗證它們是否正確設置。如下查看當前已設定的環境變量,如果未設定,請使用export命令方式設定之。
$ env|grep ORAORACLE_UNQNAME=nocdbORACLE_SID=nocdbORACLE_BASE=/app/oracle/9022.html">oracle/ora12cORACLE_HOSTNAME=ydq05.ydq.comORACLE_HOME=/app/oracle/ora12c/db_1
步驟3:選擇數據庫管理員身份驗證方法
您必須進行身份驗證并授予相應的系統權限才能創建數據庫。
通常情況下,使用以下方式具有所需權限的管理員進行身份驗證:
使用密碼文件
具有操作系統認證(此演示中使用操作系統認證)
$ id oracleuid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
步驟4:創建初始化參數文件
當Oracle實例啟動時,它讀取一個初始化參數文件。該文件可以是文本文件,可以使用文本編輯器或二進制文件進行創建和修改,該文件由數據庫創建和動態修改。優選的二進制文件稱為服務器參數文件。在此步驟中,您將創建一個文本初始化參數文件。在后面的步驟中,您可以從文本文件創建一個服務器參數文件。
$ mkdir -pv /app/oracle/ora12c/oradata/nocdb #創建存放數據文件的目錄$ vi $ORACLE_HOME/dbs/initnocdb.oraDB_NAME=nocdbCONTROL_FILES='/app/oracle/ora12c/oradata/nocdb/contorl01.ctl'MEMORY_TARGET=380m
步驟5:(僅限Windows)創建實例
在Windows平臺上,連接到實例之前,必須手動創建它,如果它不存在。該ORADIM命令通過創建一個新的Windows服務創建一個Oracle數據庫實例。
oradim -NEW -SID sid -STARTMODE MANUAL -PFILE file
步驟6:連接到實例
啟動SQL * Plus并使用管理權限連接到Oracle數據庫實例SYSDBA。
$ sqlplus / as sysdba --演示環境為12.1版本SQL*Plus: Release 12.1.0.1.0 Production on Wed May 31 10:44:41 2017Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to an idle instance.SQL>
步驟7:創建服務器參數文件
服務器參數文件使您可以使用該ALTER SYSTEM命令更改初始化參數,并在數據庫關閉和啟動時保留更改。您可以從編輯的文本初始化文件創建服務器參數文件。
SQL> create spfile from pfile='/app/oracle/ora12c/db_1/dbs/initnocdb.ora';
步驟8:啟動實例
啟動實例而不安裝數據庫。
SQL> startup nomount;ORACLE instance started.Total System Global Area 1068937216 bytesFixed Size 2296576 bytesVariable Size 641729792 bytesDatabase Buffers 419430400 bytesRedo Buffers 5480448 bytes
步驟9:發出CREATE DATABASE語句
要創建新數據庫,請使用該CREATE DATABASE
語句。
SQL> CREATE DATABASE nocdb USER SYS IDENTIFIED BY pass USER SYSTEM IDENTIFIED BY pass LOGFILE GROUP 1 ('/app/oracle/ora12c/oradata/nocdb/redo01a.log','/app/oracle/ora12c/oradata/nocdb/redo01b.log') SIZE 100M BLOCKSIZE 512, GROUP 2 ('/app/oracle/ora12c/oradata/nocdb/redo02a.log','/app/oracle/ora12c/oradata/nocdb/redo02b.log') SIZE 100M BLOCKSIZE 512 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 1024 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/app/oracle/ora12c/oradata/nocdb/system01.dbf' SIZE 700M SYSAUX DATAFILE '/app/oracle/ora12c/oradata/nocdb/sysaux01.dbf' SIZE 550M DEFAULT TABLESPACE users DATAFILE '/app/oracle/ora12c/oradata/nocdb/users01.dbf' SIZE 500M DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/app/oracle/ora12c/oradata/nocdb/temp01.dbf' SIZE 20M UNDO TABLESPACE undotbs1 DATAFILE '/app/oracle/ora12c/oradata/nocdb/undotbs01.dbf' SIZE 200M USER_DATA TABLESPACE usertbs DATAFILE '/app/oracle/ora12c/oradata/nocdb/usertbs01.dbf' SIZE 200M;
步驟10:創建其他表空間
要使數據庫起作用,必須為應用程序數據創建其他表空間。
SQL> CREATE TABLESPACE apps_tbs LOGGING DATAFILE '/app/oracle/ora12c/oradata/nocdb/apps01.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
步驟11:運行腳本以構建數據字典視圖
運行構建數據字典視圖,同義詞和PL / SQL包所必需的腳本,并支持SQL * Plus的正常運行。
使用sysdba權限執行以下腳本
SQL> @?/rdbms/admin/catalog.sql --數據庫字典,動態視圖創建等SQL> @?/rdbms/admin/catproc.sql --PL/SQL存過過程相關代碼SQL> @?/rdbms/admin/utlrp.sql --編譯
使用SYSTEM用戶執行以下腳本
SQL> @?/sqlplus/admin/pupbld.sql --SQL*Plus相關--驗證結果SQL> SELECT name, 2 DECODE (cdb, 3 'YES', 'Multitenant Option enabled', 4 'Regular 12c Database: ') 5 "Multitenant Option", 6 open_mode, 7 con_id 8 FROM v$database;NAME Multitenant Option OPEN_MODE CON_ID--------- -------------------------- -------------------- ----------NOCDB Regular 12c Database: READ WRITE 0
步驟12 :(可選)運行腳本以安裝其他選項(此處略)
您可能需要運行其他腳本。您運行的腳本由您選擇使用或安裝的功能和選項決定。
步驟13:備份數據庫對數據庫(此處略)
進行完整備份,以確保您有一套完整的文件,如果發生介質故障,可以從中恢復。
步驟14:(可選)啟用自動實例啟動(此處略)
您可能希望將Oracle實例配置為在其主機重新啟動時自動啟動。
二、12c下手工創建CDB數據庫
1、CDB創建相關說明
使用CREATE DATABASESQL
語句創建CDB非常類似于創建非CDB。使用CREATE DATABASESQL
語句創建CDB時,必須啟用PDB并指定根文件和種子文件的名稱和位置。
要創建CDB,CREATE DATABASE語句必須包含ENABLE PLUGGABLE DATABASE
子句。當包含此子句時,該語句使用根和種子創建CDB。如果未指定ENABLE PLUGGABLE DATABASE
子句 那新創建的數據庫是非CDB。該語句不會創建根和種子,非CDB永遠不會包含PDB。
以下為幾個主要差異部分
1、CDB數據庫創建時應指定ENABLE PLUGGABLE DATABASE
子句
2、CDB數據庫應指定根文件和種子文件的名稱和位置
CREATE DATABASE
語句使用根文件(如數據文件)生成種子文件的名稱。您必須指定根文件和種子文件的名稱和位置。
CREATE DATABASE
語句成功完成后,您可以使用種子及其文件創建新的PDB。種子在創建后不能被修改。
可以通過以下方式之一指定種子文件的名稱和位置
使用 seed FILE_NAME_CONVERT
子句
如SEED FILE_NAME_CONVERT = (‘/app/oracle/ora12c/oradata/cdb1/','/app/oracle/ora12c/oradata/pdbseed/')
表示將cdb1目錄下的文件轉換到pdbseed目錄下
基于oracle文件托管方式(OMF)
使用PDB_FILE_NAME_CONVERT
初始化參數
3、可以為PDB種子數據庫制定不同的屬性
根SYSTEM和SYSAUX表空間的數據文件的屬性可能不適合種子。在這種情況下,您可以使用子句為種子的數據文件指定不同的屬性tablespace_datafile。使用這些子句指定所有數據文件包含的屬性SYSTEM和SYSAUX表空間中的種子。從根繼承的值用于尚未提供其值的任何屬性。
如下示例
DATAFILE '/u01/app/oracle/oradata/newcdb/system01.dbf' SIZE 325M REUSESYSAUX DATAFILE '/u01/app/oracle/oradata/newcdb/sysaux01.dbf' SIZE 325M REUSE--下面的seed部分使用了不同于上面root容器的配置,--如system數據文件此處大小為125M,而root容器中為352M--seed中開啟了自動擴展,sysaux也同樣使用了一些不同于root容器的屬性--對于在seed中未明確指定的屬性,則繼承root容器數據文件屬性SEEDSYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITEDSYSAUX DATAFILES SIZE 100M
2、創建cdb數據庫
詳細步驟參考12c下手工創建非cdb數據庫,以下部分省略每一步驟詳細描述,后面列出差異
--設定環境變量$ export ORACLE_SID=cdb1$ export ORACLE_UNQNAME=cdb1--創建相應目錄$ mkdir -pv /app/oracle/ora12c/oradata/cdb1$ mkdir -pv /app/oracle/ora12c/oradata/pdbseed--生成參數文件$ vi $ORACLE_HOME/dbs/initcdb1.oraDB_NAME=cdb1CONTROL_FILES='/app/oracle/ora12c/oradata/cdb1/contorl01.ctl'MEMORY_TARGET=380mENABLE_PLUGGABLE_DATABASE=true--開始建庫$ sqlplus / as sysdbaSQL> create spfile from pfile='$ORACLE_HOME/dbs/initcdb1.ora';SQL> startup nomount;SQL> CREATE DATABASE cdb1 USER SYS IDENTIFIED BY pass USER SYSTEM IDENTIFIED BY pass LOGFILE GROUP 1 ('/app/oracle/ora12c/oradata/cdb1/redo01a.log','/app/oracle/ora12c/oradata/cdb1/redo01b.log') SIZE 100M BLOCKSIZE 512, GROUP 2 ('/app/oracle/ora12c/oradata/cdb1/redo02a.log','/app/oracle/ora12c/oradata/cdb1/redo02b.log') SIZE 100M BLOCKSIZE 512 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 1024 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/app/oracle/ora12c/oradata/cdb1/system01.dbf' SIZE 700M SYSAUX DATAFILE '/app/oracle/ora12c/oradata/cdb1/sysaux01.dbf' SIZE 550M DEFAULT TABLESPACE deftbs DATAFILE '/app/oracle/ora12c/oradata/cdb1/deftbs01.dbf' SIZE 500M DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/app/oracle/ora12c/oradata/cdb1/temp01.dbf' SIZE 20M UNDO TABLESPACE undotbs1 DATAFILE '/app/oracle/ora12c/oradata/cdb1/undotbs01.dbf' SIZE 200M ENABLE PLUGGABLE DATABASE SEED FILE_NAME_CONVERT = ('/app/oracle/ora12c/oradata/cdb1/', '/app/oracle/ora12c/oradata/pdbseed/') SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED SYSAUX DATAFILES SIZE 100M USER_DATA TABLESPACE usertbs DATAFILE '/app/oracle/ora12c/oradata/pdbseed/usertbs01.dbf' SIZE 200M;--填充數據字典,如果是12cR2版本,則直接執行catcdb.sql代替以下腳本 --使用sysdba權限執行以下腳本SQL> @?/rdbms/admin/catalog.sql --數據庫字典,動態視圖創建等SQL> @?/rdbms/admin/catproc.sql --PL/SQL存過過程相關代碼SQL> @?/rdbms/admin/utlrp.sql --編譯--使用SYSTEM用戶執行以下腳本SQL> @?/sqlplus/admin/pupbld.sql #SQL*Plus相關SQL> select 'Leshami' Author,'http://blog.csdn.net/leshami' Blog, 2 '645746311' QQ from dual;AUTHOR BLOG QQ------- ---------------------------- ---------Leshami http://blog.csdn.net/leshami 645746311--驗證結果SQL> SELECT name, 2 DECODE (cdb, 3 'YES', 'Multitenant Option enabled', 4 'Regular 12c Database: ') 5 "Multitenant Option", 6 open_mode, 7 con_id 8 FROM v$database;NAME Multitenant Option OPEN_MODE CON_ID--------- -------------------------- -------------------- ----------CDB1 Multitenant Option enabled READ WRITE 0
三、更多參考
Oracle 12c多租戶架構及優缺點
http://docs.oracle.com/database/122/ADMIN/creating-and-configuring-an-oracle-database.htm
http://docs.oracle.com/database/122/ADMIN/creating-and-configuring-a-cdb.htm
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答