一 orace簡介
ORACLE(甲骨文)公司。Oracle Database (甲骨文數據庫) 是一個具有對象和可擴展標記語言(XML)功能的關系數據庫,提供的以分布式數據庫為核心的一組軟件產品,是目前最流行的客戶/服務器(CLIENT/SERVER)或B/S體系結構的數據庫之一。
在關系數據庫中,所有數據都存儲在由行和列組成的二維表中。Oracle數據庫使您能夠以高度的性能,可靠性和可伸縮性存儲數據,更新數據並有效地檢索數據。
二 描述
ORACLE 數據庫,是目前世界上使用最為廣泛的數據庫管理系統,作為一個通用的數據庫系統,它具有完整的數據管理功能;作為一個關系數據庫,它是一個完備關系的產品;作為分布式數據庫它實現了分布式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。
- Oracle 數據庫目前分為:Oracle Database 11G、Oracle Database 12c、Oracle Database 18c 三個版本;
- 目前最新版本為 Oracle Database 18c。
三 Oracle組成
Oracle 數據庫由以下組建組成:
- Oracle 軟件 :安裝在 Oracle 主機上的軟件
- 數據庫 : 包含用戶數據,元數據和控制結構
(元數據 和數據集,允許 Oracle 軟件管理用戶數據。元數據的示例是數據字典。控制結構(例如控制文件和聯機重做日志文件)可確保用戶數據的完整性,可用性和可恢復性。)
數據庫的物理存儲結構是由一些多種物理文件組成,主要有數據文件、控制文件、重做日志文件、歸檔日志文件、參數文件、口令文件、警告文件等 - Oracle instance(Oracle 實例) :由以下部分組成:
- 后台進程
- 存儲
- 監視和恢復與數據庫相關的用戶數據、元數據和控制文件的操作系統進程或線程后台進程使用的共享內存區域
- Server processes(服務進程):這些進程使用的內存和臨時存儲,服務器進程解析並執行SQL語句,並將檢索結果返回給用戶或應用程序。
- Oracle Net listener(Oracle 偵聽) :Oracle Net 是一個軟件層,支持客戶端應用程序和 Oracle 數據庫通過網絡進行通信
它是一個偵聽來自網絡的連接請求的進程。
四 管理數據庫的工具
- 實現數據庫管理員目標的一些產品,工具和實用程序:
- Oracle Universal Installer
- Oracle Universal Installer(OUI)是一個安裝 Oracle 軟件和選件的實用程序。它可以自動啟動 Oracle Database Configuration Assistant 來安裝數據庫。
- Oracle 數據庫配置助手
- Oracle 數據庫配置助手(DBCA)是一個實用程序,它可以從 Oracle 提供的模板創建數據庫,也可以創建自己的模板。使用戶可以復制預配置的種子數據庫,從而節省生成和自定義新數據庫的時間和精力。
- 數據庫升級助手
- 數據庫升級助手是一個工具,可指導您將現有數據庫升級到新的 Oracle 數據庫版本。
- Net Configuration Assistant
- Net Configuration Assistant(NETCA)是一個實用程序,使用戶可以配置偵聽器和命名方法,這些方法是 Oracle 數據庫網絡的關鍵組件。
- Oracle 企業管理器數據庫控制
- 管理數據庫的主要產品是 Oracle 企業管理器數據庫控制(數據庫控制),這是一個基於Web的界面。安裝 Oracle 數據庫軟件,創建或升級數據庫並配置網絡后,可以使用 Database Control 來管理數據庫。
- Database Control 還為性能顧問和Oracle實用程序(如SQL * Loader和Recovery Manager(RMAN))提供了一個界面。
五 實例安裝oracle准備
5.1 系統環境
5.1.1 查看內存
驗證 內存條件 ! 注意在Linux上,使用內存映射文件為大型頁表分配不可交換的內存。如果啟用了 HugePages,那么應該在計算交換空間之前從可用RAM中扣除分配給 HugePages 的內存
[root@localhost ~]# cat /proc/meminfo |grep -i memto # 查看系統 內存 是否滿足最低需求 MemTotal: 7994076 kB [root@localhost ~]# cat /proc/meminfo |grep -i swapto # 查看系統 內存交換空間 是否滿足最低要求 SwapTotal: 6291452 kB [root@localhost ~]# free -h # 或者使用 Free 查看內存和交換空間 total used free shared buff/cache available Mem: 7.6G 186M 7.2G 8.7M 245M 7.2G Swap: 6.0G 0B 6.0G
5.1.2 查看內核
從 Oracle Database 11g 第2版(11.2)開始,Oracle Linux 4,Oracle Linux 5,Oracle Linux 6,Red Hat Enterprise Linux 4,Red Hat Enterprise Linux 5 和 Red Hat Enterprise Linux 6 支持 Security Enhanced Linux(SE Linux)功能 。
支持的發行版: Red Hat Enterprise Linux 7:3.10.0-123.el7.x86_64 或 更高版本
[root@localhost ~]# uname -s # 查看系統內核名稱 Linux [root@localhost ~]# uname -m -p -i # 查看系統硬件架構、處理器架構、及硬件平台 x86_64 x86_64 x86_64 [root@localhost ~]# uname -r # 查看系統內科發行版本,是否滿足最低要求 3.10.0-693.el7.x86_64 [root@localhost ~]# cat /proc/version # 查看系統版本號
# 在具有 Red Hat Linux 7 上應具有 3.10.0-54.0.1.el7.x86_64的內核或更高版本的內核 Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017 [root@localhost ~]# uname -a #也可以使用此命令 Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
5.1.3 驗證Automatic Memory Management
Oracle 數據庫從11g開始,自動內存管理特性需要更多的共享內存 ( /dev/shm ) 和文件描述符。共享內存的大小應該至少大於該計算機上每個 Oracle 實例的 MEMORY_MAX_TARGET 和 MEMORY_TARGET 。
/dev/shm 並不占用磁盤空間,而是存放在內存上面,因此和 RAM (Random Access Memory)一樣斷電清空數據。
/dev/shm 使用增量占用空間,並不會是將掛載點的空間全部占用, /dev/shm 掛載點未占用的空間將會被內存使用。
Linux (CentOS) 的 /dev/shm 分區,默認大小是系統物理內存的50%
[root@localhost ~]# free -h | head -2 # 查看系統內存 total used free shared buff/cache available Mem: 7.6G 187M 7.2G 8.7M 245M 7.2G [root@localhost ~]# df -hal /dev/shm/ # 查看指定的 tmpfs Filesystem Size Used Avail Use% Mounted on tmpfs 3.9G 0 3.9G 0% /dev/shm [root@localhost ~]# df -hal /tmp # 查看 /tmp 目錄至少應有1 GB的磁盤空間 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 36G 896M 35G 3% /
5.1.4 依賴包需求
Package Requirements(軟件包需求),以下是 Oracle Database 11g 第2版(11.2)所需的軟件包列表:(其中后綴為 .el7.i686 需要從互聯網上下載,而其他安裝包可以由 CentOS 7.4 映像文件提供 )
# Oracle Linux 7和Red Hat Enterprise Linux 7必須安裝以下或更高版本的包: bc binutils #≧-2.23.52.0.1-12.el7 (x86_64) compat-libcap1 #≧-1.10-3.el7 (x86_64) compat-libstdc++-33.i686 #≧-3.2.3-71.el7 (i686) compat-libstdc++-33 #≧-3.2.3-71.el7 (x86_64) glibc.i686 #≧-2.17-36.el7 (i686) glibc #≧-2.17-36.el7 (x86_64) glibc-devel.i686 #≧-2.17-36.el7 (i686) glibc-devel #≧-2.17-36.el7 (x86_64) ksh libaio.i686 #≧-0.3.109-9.el7 (i686) libaio #≧-0.3.109-9.el7 (x86_64) libaio-devel.i686 #≧-0.3.109-9.el7 (i686) libaio-devel #≧-0.3.109-9.el7 (x86_64) libgcc.i686 #≧-4.8.2-3.el7 (i686) libgcc #≧-4.8.2-3.el7 (x86_64) libstdc++.i686 #≧-4.8.2-3.el7 (i686) libstdc++ #≧-4.8.2-3.el7 (x86_64) libstdc++-devel.i686 #≧-4.8.2-3.el7 (i686) libstdc++-devel #≧-4.8.2-3.el7 (x86_64) libxcb.i686 #≧-1.9-5.el7 (i686) libxcb #≧-1.9-5.el7 (x86_64) libX11.i686 #≧-1.6.0-2.1.el7 (i686) libX11 #≧-1.6.0-2.1.el7 (x86_64) libXau.i686 #≧-1.0.8-2.1.el7 (i686) libXau #≧-1.0.8-2.1.el7 (x86_64) libXi.i686 #≧-1.7.2-1.el7 (i686) libXi #≧-1.7.2-1.el7 (x86_64) libXtst.i686 #≧-1.2.2-1.el7 (i686) libXtst #≧-1.2.2-1.el7 (x86_64) libXrender.i686 #≧ (i686) libXrender #≧ (x86_64) libXrender-devel.i686 #≧ (i686) libXrender-devel #≧ (x86_64) make #≧-3.82-19.el7 (x86_64) net-tools #≧-2.0-0.17.20131004git.el7 (x86_64) (for Oracle RAC and Oracle Clusterware) nfs-utils #≧-1.3.0-0.21.el7.x86_64 (for Oracle ACFS) smartmontools #≧-6.2-4.el7 (x86_64) sysstat #≧-10.1.5-1.el7 (x86_64)
5.2 禁用selinx,防火牆,並設置用戶名
為了方便實驗,減少防火牆以及selinux的影響,在此都關閉
[root@localhost ~]# setenforce 0 [root@localhost ~]# sed -i -e 's@^SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config [root@localhost ~]# systemctl disable firewalld.service && systemctl stop firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# hostnamectl set-hostname "oracle12c" #設置主機名 [root@localhost ~]# exit
5.3 安裝數據庫用戶和組
用戶信息介紹
創建
如果安裝有 Oracle,則 OUI 會從 /etc/oraInst.loc 文件中檢測現有的 oraInventory 目錄,並使用此位置。
#創建與oracle相關的用戶合和組
[root@oracle12c ~]# /usr/sbin/groupadd -g 6543210 oinstall [root@oracle12c ~]# /usr/sbin/groupadd -g 6543211 dba [root@oracle12c ~]# /usr/sbin/groupadd -g 6543212 backupdba # 為數據庫安裝創建 OSBACKUPDBA 組 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543213 dgdba # 為數據庫安裝創建 OSDGDBA 組 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543214 kmdba # 為數據庫安裝創建 OSKMDBA 組 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543215 asmdba # 為ASM Group創建 OSDBA [root@oracle12c ~]# /usr/sbin/groupadd -g 6543216 racdba # 為數據庫安裝創建 OSRACDBA 組 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543217 oper # 為數據庫安裝創建 OSOPER 組 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543218 asmoper # 為ASM Group創建 OSOPER 組 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543219 asmadmin # 為ASM Group創建 ASMADMIN 組 # 創建 Oracle 用戶
[root@oracle12c ~]# /usr/sbin/useradd -c "Oracle Database" -u 6543210 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle # 創建 Oracle Grid Infrastructure(GRID) 用戶
[root@oracle12c ~]# /usr/sbin/useradd -c "Oracle Grid Infrastructure" -u 6543220 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid # 初始化 Oracle 用戶密碼為 admin@123
[root@oracle12c ~]# echo "admin@123"|passwd --stdin oracle Changing password for user oracle. passwd: all authentication tokens updated successfully.
5.4 設置oracle和root用戶的環境變量
設置 oracle 用戶 和 root 用戶的環境變量 ~/UserName/.bash_profile
# 挨着順序在文件 ~oracle/.bash_profile 的當前行中的上一行插入文本 (即時倒數第二行)中插入
[root@oracle12c ~]# sed -i '$i\export ORACLE_HOSTNAME='$HOSTNAME'' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_BASE=/usr/local/Oracle' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_HOME=$ORACLE_BASE/Product/11.2.0' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_INVENTORY=/Oracle/Inventory' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_DATA=/Oracle/Data' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_RECOVER=/Oracle/Recovery_area' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_OWNER=oracle' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_SID=orcl11g' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_GDBNAME=$ORACLE_SID.'$HOSTNAME.em.local'' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export PATH=.:$PATH:$ORACLE_HOME/bin:/usr/sbin' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export LC_ALL="zh_CN.UTF-8"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export LANG="zh_CN.UTF-8"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"' ~oracle/.bash_profile [root@oracle12c ~]# [root@oracle12c ~]# sed -i '$i\export ORACLE_HOSTNAME='$HOSTNAME'' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_BASE=/usr/local/Oracle' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_HOME=$ORACLE_BASE/Product/11.2.0' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_INVENTORY=/Oracle/Inventory' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_DATA=/Oracle/Data' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_RECOVER=/Oracle/Recovery_area' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_OWNER=oracle' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_SID=orcl11g' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_GDBNAME=$ORACLE_SID.'$HOSTNAME.em.local'' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export PATH=.:$PATH:$ORACLE_HOME/bin:/usr/sbin' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export LC_ALL="zh_CN.UTF-8"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export LANG="zh_CN.UTF-8"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"' ~root/.bash_profile [root@oracle12c ~]# source ~oracle/.bash_profile # 更新 oracle 用戶的環境變量 [root@oracle12c ~]# source ~root/.bash_profile # 更新 root 用戶的環境變量
5.5 配置hosts文件
# 配置主機IP地址和主機名的變量,然后在文件 /etc/hosts 的最后一行下面插入新的行
[root@oracle12c ~]# hostip=`routel |grep host |grep -v '127.0.0' | awk 'NR==1{ print }' | awk '{ print $1 }'` [root@oracle12c ~]# sed -i '$a\'$hostip' '$HOSTNAME' '$HOSTNAME.em.local'' /etc/hosts
5.6 創建oracle的安裝目錄
# 創建 Oracle 安裝目錄、oraInventory 目錄、oraData 目錄、flash_recovery_area 目錄
[root@oracle12c ~]# mkdir -p $ORACLE_HOME $ORACLE_INVENTORY $ORACLE_DATA $ORACLE_RECOVER [root@oracle12c ~]# mkdir -p /tmp/Oracle [root@oracle12c ~]# mkdir -p /usr/share/fonts/zh_CN/TrueType # 創建中文字體目錄,解決中文GUI安裝亂碼問題 [root@oracle12c ~]# chown -R oracle:oinstall $ORACLE_BASE /Oracle /tmp/Oracle # 設置 oracle用戶 和 oinstall組 為指定目錄的所有者 [root@oracle12c ~]# chmod -R 775 $ORACLE_BASE /Oracle /tmp/Oracle # 修改 指定目錄和子目錄修改權限
六 實例安裝
6.1 安裝相關依賴包
# 安裝 相關包依賴,建議使用epel源如果使用本地源可能會缺少軟件包
[root@oracle12c ~]# yum install wget links -y [root@oracle12c ~]# yum install bc binutils ksh compat-libcap1 unzip make \ compat-libstdc++-33.i686 compat-libstdc++-33 \ gcc-c++ glibc glibc.i686 glibc-headers \ glibc-devel.i686 glibc-devel \ libaio.i686 libaio \ libaio-devel.i686 libaio-devel \ libgcc.i686 libgcc \ libstdc++.i686 libstdc++ \ libstdc++-devel.i686 libstdc++-devel \ libxcb.i686 libxcb \ libX11.i686 libX11 \ libXau.i686 libXau \ libXi.i686 libXi \ libXtst.i686 libXtst \ libXrender.i686 libXrender \ libXrender-devel.i686 libXrender-devel \ net-tools nfs-utils \ smartmontools sysstat # elfutils-libelf-devel smartmontools cvuqdisk
6.2 安裝ODBC的驅動程序
- 安裝 Linux/Unix 的ODBC驅動程序管理器,可以從 www.unixodbc.org 下載相關的ODBC驅動程序。安裝ODBC前還必須安裝以下其他ODBC RPM
在 Oracle Linux 7 和 Red Hat Enterprise Linux 7 上需要安裝以下數據包:
- 1. unixODBC-2.3.1-6.el7.x86_64 or later
- 2. unixODBC-2.3.1-6.el7.i686 or later
- 3. unixODBC-devel-2.3.1-6.el7.x86_64 or later
- 4. unixODBC-devel-2.3.1-6.el7.i686 or later
[root@oracle12c ~]# yum install unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686
下載中文字體,數據庫文件並解壓
# 下載中文字體 && 並解壓到 /usr/share/fonts/zh_CN/TrueType 目錄中
[root@oracle12c ~]# wget -P /tmp/Oracle/ http://wd.91tzy.com:8070/zysong.zip && unzip /tmp/Oracle/zysong.zip -d /usr/share/fonts/zh_CN/TrueType 下載數據庫,本次實驗已經下載完成,直接上傳,下載地址https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
[root@oracle12c ~]# unzip /opt/linuxx64_12201_database.zip -d /tmp/Oracle/
6.3 禁用大頁
6.3.1 什么是 HugePages(大頁面)
當一個進程占用內存時,CPU 會將 RAM 標記為該進程所使用的內存,為了提高效率,CPU 按 4K 字節塊分配RAM(這是許多平台上的默認值)。這些塊被命名為 Pages。這些 Pages 可以交換到磁盤,等等。
進程地址空間是虛擬的,CPU 和 操作系統 必須記住哪個 pages 屬於哪個進程,以及它存儲在哪里。
因此,pages 越多,查找內存映射位置所需的時間就越多。當一個進程使用1GB內存時,需要查找262144個條目(1GB / 4K)。如果一個頁表條目消耗8字節,那么查找它需要2MB(262144 * 8)。
如果操作系統仍然以 4KB 大小為頁面的基本單位,顯然不合理呢
如果操作系統以 2MB 甚至更大作為分頁的單位時,將會大大減少 TLB Miss 和缺頁中斷的數量,顯著提高應用程序的性能
大多數當前的CPU架構支持更大的頁面(因此CPU/OS需要查找的條目更少),這些 pages 被命名為 大頁面(HugePages)
為了能以最小的代價實現大頁面支持,Linux 操作系統采用了基於 hugetlbfs 特殊文件系統 2M 字節大頁面支持。
這種采用特殊文件系統形式支持大頁面的方式,使得應用程序可以根據需要靈活地選擇虛存頁面大小,而不會被強制使用 2MB 大頁面。
6.3.2 禁用 Transparent HugePages
Oracle 建議在開始安裝之前禁用 Transparent HugePages
Transparent HugePages內存 與 Standard HugePages內存不同,因為內核 khugepaged 線程在運行時動態分配內存。Standard HugePages內存在啟動時預先分配,並且在運行時不會更改。
6.3.3 查看大頁狀態
#查看是否已啟用 Transparent HugePages,輸出結果為兩種:
# [always]已啟用
# [never]永久禁用
#cat /sys/kernel/mm/redhat_transparent_hugepage/enabled # red hat 系統
[root@oracle12c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled # 其他(CentOS,SUSE,Ubunt……)系統 [always] madvise never
6.3.4 禁用大頁
# 1. 零時禁用 Transparent HugePages 重啟后失效
[root@oracle12c ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag [root@oracle12c ~]# [root@oracle12c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled #查看大頁狀態 always madvise [never]
6.3.5 以服務方式自動禁用大頁
# 創建 Unit 服務文件,以實現開機自動禁用 Transparent HugePages
[root@oracle12c ~]# cat >/usr/lib/systemd/system/THP.service <<EOF [Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target EOF [root@oracle12c ~]# systemctl daemon-reload # 重新加載SystemD守護程序 [root@oracle12c ~]# systemctl enable THP.service && systemctl start THP.service #設置開機自啟並啟動 Created symlink from /etc/systemd/system/multi-user.target.wants/THP.service to /usr/lib/systemd/system/THP.service. [root@oracle12c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled # 檢查 Transparent HugePages 狀態
6.4 驗證I/O磁盤的調度程序
為了獲得 Oracle ASM 的最佳性能,Oracle 建議使用 Deadline I / O Scheduler。
磁盤I / O 調度程序對磁盤I / O的請求進行重新排序,延遲或合並,以實現更高的吞吐量和更低的延遲。Linux有多個磁盤I / O調度程序可用,包括(Deadline,Noop,Anticipatory和Completely Fair Queuing (CFQ)。
驗證Linux上的磁盤I / O調度程序:在集群上更加適用
[root@oracle12c ~]# cat /sys/block/*/queue/scheduler # 查看磁盤是否啟用 I / O 調度 none none none noop [deadline] cfq noop deadline [cfq] # 如果默認磁盤I / O調度程序不是Deadline,則使用 rules 文件設置
# 創建規則文件
[root@oracle12c ~]# cat >/etc/udev/rules.d/60-oracle-schedulers.rules <<EOF ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" EOF # 在群集系統上,將規則文件復制到群集上的所有其他節點。例如
#scp /etc/udev/rules.d/60-oracle-schedulers.rules root@node2:/etc/udev/rules.d/
# 加載規則文件並重新啟動UDEV服務
[root@oracle12c ~]# udevadm control --reload-rules # 適用於 RHEL,CentOS
6.5 調整內核參數
下表中顯示 內核和shell 的參數是否設置為 <大於或等於> 顯示的最小值的值。表后面的過程描述了如何驗證和設置值。
調整 內核和shell 的參數
# 將設置的參數打印,並重定向到 /etc/sysctl.d/97-oracle-database-sysctl.conf文件中
[root@oracle12c ~]# /usr/bin/cat >/etc/sysctl.d/97-oracle-database-sysctl.conf << EOF # This is a parameter set for Oracle database tuning fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 # Kernel.shmmax (parameter) is set to 50% of the physical memory # kernel.shmall = 2097152 # kernel.shmmax = 536870912 # kernel.shmmni = 4096 EOF [root@oracle12c ~]# /sbin/sysctl -p # 重新載入內科參數 [root@oracle12c ~]# /sbin/sysctl --system # 從所有配置文件讀取值 * Applying /usr/lib/sysctl.d/00-system.conf ... * Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ... kernel.yama.ptrace_scope = 0 * Applying /usr/lib/sysctl.d/50-default.conf ... kernel.sysrq = 16 kernel.core_uses_pid = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.promote_secondaries = 1 net.ipv4.conf.all.promote_secondaries = 1 fs.protected_hardlinks = 1 fs.protected_symlinks = 1 * Applying /etc/sysctl.d/97-oracle-database-sysctl.conf ... fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 * Applying /etc/sysctl.d/99-sysctl.conf ... * Applying /etc/sysctl.conf ...
6.6 安裝數據庫之shell限制
檢查 Oracle 軟件安裝用戶的資源限制,更新 /etc/security/limits.conf 安裝所有者的配置文件中的資源限制
[root@oracle12c ~]# /usr/bin/cat >/etc/security/limits.d/97-oracle-database-limits.conf << EOF # This is a parameter set for Oracle user Resource Limitations tuning #max number of open file descriptors oracle soft nofile 4096 oracle hard nofile 65536 # max number of processes #oracle soft nproc 4096 #oracle hard nproc 31140 # maximum stack size (KB) oracle soft stack 10240 oracle hard stack 32768 # End of file EOF
6.7 配置 PAM
配置 PAM /etc/pam.d/login 登入會話要求使文件 /etc/security/limits.conf 對 shell 限制生效
# Configuration (PAM)/etc/PAM. D/login login session file, make the file/etc/security/limits. Conf effective restriction on the shell
[root@oracle12c ~]#cp /etc/pam.d/login /etc/pam.d/login.backup && /usr/bin/cat >>/etc/pam.d/login <<EOF session required /lib64/security/pam_limits.so session required pam_limits.so EOF [root@oracle12c ~]#cp /etc/profile /etc/profile.backup && /usr/bin/cat >>/etc/profile <<EOF # This is a parameter set for Oracle database tuning if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 31440 ulimit -n 65536 else ulimit -u 31140 -n 65536 fi fi EOF [root@oracle12c ~]# source /etc/profile # 更新全局環境變量配置文件
6.8 使用db_intall.rsp靜默安裝
6.8.1配置相關參數
[root@oracle12c ~]# cp /tmp/Oracle/database/response/{dbca,db_install,netca}.rsp ~oracle/ # 拷貝 靜默安裝應答 文件直當前用戶注目禮 [root@oracle12c ~]# chmod +x ~oracle/{dbca,db_install,netca}.rsp # 將 靜默安裝應答 文件賦予可 x 執行權限 [root@oracle12c ~]# su - oracle [oracle@oracle12c ~]$ hostip=`routel |grep host |grep -v '127.0.0' | awk '{ print $1 }'` [oracle@oracle12c ~]$ sed -i -e '/^ACCEPT_LICENSE_AGREEMENT=/s#=.*$#=true#' ~oracle/db_install.rsp [oracle@oracle12c ~]$ sed -i -e 's@^oracle.install.option=@oracle.install.option=INSTALL_DB_SWONLY@' ~oracle/db_install.rsp # 設置安裝模式為:INSTALL_DB_SWONLY|INSTALL_DB_AND_CONFIG|UPGRADE_DB
[oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.isRACOneInstall=/s#=.*$#=false#' ~oracle/db_install.rsp # 禁用 rac 安裝
[oracle@oracle12c ~]$ sed -i -e '/^INVENTORY_LOCATION/s#=.*$#='$ORACLE_INVENTORY'#' ~oracle/db_install.rsp # 指定 Oracle 存儲庫文件的位置 [oracle@oracle12c ~]$ sed -i -e '/^ORACLE_HOME=/s#=.*$#='$ORACLE_HOME'#' ~oracle/db_install.rsp # 指定 Oracle 數據庫主目錄 [oracle@oracle12c ~]$ sed -i -e '/^ORACLE_BASE=/s#=.*$#='$ORACLE_BASE'#' ~oracle/db_install.rsp # 指定 Oracle 數據庫基本目錄 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.InstallEdition=/s#=.*$#=EE#' ~oracle/db_install.rsp # 指定 Oracle 數據庫所安裝的版本 EE 企業本 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.fileSystemStorage.dataLocation/s#=.*$#='$ORACLE_DATA'#' ~oracle/db_install.rsp # 數據存放路徑 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.globalDBName=/s#=.*$#='$ORACLE_GDBNAME'#' ~oracle/db_install.rsp # 全局數據庫名 globalDBName [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.SID/s#=.*$#='$ORACLE_SID'#' ~oracle/db_install.rsp # SID [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.characterSet/s#=.*$#=AL32UTF8#' ~oracle/db_install.rsp # 設置數據庫的字符集,通用字符集。 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.enableRecovery/s#=.*$#=true#' ~oracle/db_install.rsp # 啟用數據恢復 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.storageType/s#=.*$#=FILE_SYSTEM_STORAGE#' ~oracle/db_install.rsp # 數據庫存儲類型:FILE_SYSTEM_STORAGE|ASM_STORAGE [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation/s#=.*$#='$ORACLE_RECOVER'#' ~oracle/db_install.rsp # 指定存儲恢復文件路徑 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^UNIX_GROUP_NAME=/s#=.*$#=oinstall#' ~oracle/db_install.rsp # 指定 Oracle 用戶組名稱 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSDBA_GROUP=/s#=.*$#=dba#' ~oracle/db_install.rsp # DBA 組 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSOPER_GROUP=/s#=.*$#=dba#' ~oracle/db_install.rsp # OPER 組 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSBACKUPDBA_GROUP=/s#=.*$#=backupdba#' ~oracle/db_install.rsp # backupdba 組 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSDGDBA_GROUP=/s#=.*$#=dgdba#' ~oracle/db_install.rsp # dgdba 組 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSKMDBA_GROUP=/s#=.*$#=kmdba#' ~oracle/db_install.rsp # kmdba 組 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSRACDBA_GROUP=/s#=.*$#=racdba#' ~oracle/db_install.rsp # racdba 組
[oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.type=/s#=.*$#=DATA_WAREHOUS#' ~oracle/db_install.rsp # 數據庫類型:GENERAL_PURPOSE|DATA_WAREHOUSE [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.PDBName=/s#=.*$#=orclpdb#' ~oracle/db_install.rsp [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.memoryOption/s#=.*$#=false#' ~oracle/db_install.rsp # 是否啟用自動內存管理 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.ConfigureAsContainerDB/s#=.*$#=false#' ~oracle/db_install.rsp # 是否將數據庫配置為容器數據庫 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.characterSet/s#=.*$#=ZHS16GBK#' ~oracle/db_install.rsp # 數據庫字符集 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.password.SYS/s#=.*$#=AdminSYS123#' ~oracle/db_install.rsp # 指定 SYS 密碼:AdminSYS123 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.password.SYSTEM/s#=.*$#=AdminSYSTEM123#' ~oracle/db_install.rsp # 指定 SYSTEM 密碼:AdminSYSTEM123 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.managementOption/s#=.*$#=DEFAULT#' ~oracle/db_install.rsp # 使用默認的(database Express)來管理數據庫 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.memoryLimit/s#=.*$#=4096#' ~oracle/db_install.rsp # 總內存分配,MB 為單位 [oracle@oracle12c ~]$ sed -i -e '/^DECLINE_SECURITY_UPDATES=/s#=.*$#=true#' ~oracle/db_install.rsp # 啟用安全更新 [oracle@oracle12c ~]$ sed -i -e "s@^ORACLE_HOSTNAME=@ORACLE_HOSTNAME=$HOSTNAME@" ~oracle/db_install.rsp [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.password.DBSNMP=/s#=.*$#=AdminDB123#' ~oracle/db_install.rsp # 設置 Oracle 主機名稱 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.omsHost=/s#=.*$#='$hostip'#' ~oracle/db_install.rsp # 配置 EM 登入主機地址 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.omsPort=/s#=.*$#=5500#' ~oracle/db_install.rsp # 配置 EM 登入端口號 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.emAdminUser/s#=.*$#=sys#' ~oracle/db_install.rsp # 配置 EM 登入用戶名 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.emAdminPassword/s#=.*$#=AdminEM123#' ~oracle/db_install.rsp # 配置 EM [oracle@oracle12c ~]$ sed -i -e '/^SELECTED_LANGUAGES=/s#=.*$#=en,zh_CN#' ~oracle/db_install.rsp # 指定數據庫所使用語言
6.8.2 開始安裝
[oracle@oracle12c ~]$ /tmp/Oracle/database/runInstaller -silent -responseFile /home/oracle/db_install.rsp -ignorePrereq
相關結果,對於安裝類型有問題,設置取消掉,重新安裝
再次安裝結果成功
6.8.3日志結果
[oracle@oracle12c ~]$ tail -f /Oracle/Inventory/logs/installActions2019-10-19_10-47-34PM.log
信息: 正在安裝 信息: 將文件提取到 '/usr/local/Oracle/Product/11.2.0'。 信息: 將文件提取到 '/usr/local/Oracle/Product/11.2.0'。 信息: 根據文件 'oracle.server_EE_dirs.lst' 中的信息執行快速復制操作。 信息: 根據文件 'oracle.server_EE_1.xml' 中的信息執行快速復制操作。 信息: 根據文件 'oracle.server_EE_exp_1.xml' 中的信息執行快速復制操作。 信息: 根據文件 'oracle.server_EE_filemap.jar' 中的信息執行快速復制操作。 信息: 根據文件 'racfiles.jar' 中的信息執行快速復制操作。 信息: 根據文件 'setperms1.sh' 中的信息執行快速復制操作。 信息: Number of threads for fast copy :1 。。。 信息: 將變量 'ROOTSH_LOCATION' 設置為 '/usr/local/Oracle/Product/11.2.0/root.sh'。從代碼塊得到該值。 信息: 將變量 'ROOTSH_STATUS' 設置為 '3'。從代碼塊得到該值。 信息: component has plugIns in XML: no configlog.xml written 信息: InstallProgressMonitor: Completed phase 8 信息: 安裝階段 2 JRE files in Scratch :0 信息: Checkpoint:Index file written and updated 信息: InstallProgressMonitor: Starting phase 16 信息: 正在保存產品清單 信息: 正在保存產品清單 信息: OiicSaveInvWCCE:Before saving the inventory. This is a install session. 信息: OiicSaveInvWCCE:Before saving the inventory. The platform is unix. 信息: OiicSaveInvWCCE:Before saving the inventory. The root.sh location is /usr/local/Oracle/Product/11.2.0/root.sh 信息: OiicSaveInvWCCE:Before saving the inventory. The root.sh location exists. 信息: 初始化 OUI 存儲產品清單 信息: Saving global variables for component oracle.server 信息: Saving global variables completed 信息: Saving the install inventory which has the access of 1 信息: 。。。。 以 root 用戶的身份執行以下腳本: 1. /Oracle/Inventory/orainstRoot.sh 2. /usr/local/Oracle/Product/11.2.0/root.sh Successfully Setup Software. 信息: Output processor threads exited. 信息: Number of scripts to be executed as root user = 2 信息: 正在清除, 請稍候... 信息: All forked task are completed at state setup 信息: Completed background operations 信息: Validating state <setup> 信息: Completed validating state <setup> 信息: Verifying route success 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Executing action at state finish 信息: FinishAction Actions.execute called 信息: Completed executing action at state <finish> 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Moved to state <finish> 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Validating state <finish> 警告: Validation disabled for the state finish 信息: Completed validating state <finish> 信息: Terminating all background operations 信息: Terminated all background operations 信息: Successfully executed the flow in SILENT mode 信息: Dispose the current Session instance 信息: Dispose the install area control object 信息: Update the state machine to STATE_CLEAN 信息: Finding the most appropriate exit status for the current application 信息: Exit Status is 0 信息: Shutdown Oracle Database 12c 發行版 2 安裝程序
6.8.4 以root用戶執行腳本
根據上述日志使用root用戶執行腳本
以 root 用戶身份執行 /usr/local/Oracle/Inventory/orainstRoot.sh 和 /usr/local/Oracle/Product/11.2.0/root.sh 腳本
- orainstRoot.sh 創建庫存指針(/etc/oraInst.loc);將 Inventory(oraInventory) 目錄的權限更改為770;並將 Inventory(oraInventory) 目錄的組名更改為 oinstall 組;設置變量 ORACLE_OWNER = ;ORACLE_HOME =
- root.sh 創建 /etc/oratab 文件;設置 Oracle 用戶的環境
- 更多的 orainstRoot.sh 和 root.sh 腳本信息請參閱 執行orainstRoot.sh和root.sh腳本的重要性是什么
[oracle@oracle12c ~]$ exit 登出 [root@oracle12c ~]# /Oracle/Inventory/orainstRoot.sh # 以 root 用戶身份運行腳本:1 更改權限/Oracle/Inventory. 添加組的讀取和寫入權限。 刪除全局的讀取, 寫入和執行權限。 更改組名/Oracle/Inventory 到 oinstall. 腳本的執行已完成。 [root@oracle12c ~]# /usr/local/Oracle/Product/11.2.0/root.sh # 以 root 用戶身份運行腳本:2 Check /usr/local/Oracle/Product/11.2.0/install/root_oracle12c_2019-10-19_22-54-27-357824276.log for the output of root script
6.9 啟動oracle net監聽器
啟動 Oracle Net 偵聽器,使用相應文件運行 Net Configuration Assistant。 在 靜默模式(silent mode)下,使用響應文件模板 netca.resp,該模板在 DVD 目錄中的 database/response 中。關於 netca.rsp 模板文件以及啟動方式請參閱 安裝和配置Oracle數據庫使用響應文件
[root@oracle12c ~]# su - oracle 上一次登錄:六 10月 19 22:35:39 EDT 2019pts/1 上
# 啟動 Oracle 偵聽,以 /home/oracle/netca.rsp 模板文件靜默模式啟動 [oracle@oracle12c ~]$ netca /silent /responsefile ~oracle/netca.rsp 正在對命令行參數進行語法分析: 參數"silent" = true 參數"responsefile" = /home/oracle/netca.rsp 完成對命令行參數進行語法分析。 Oracle Net Services 配置: 完成概要文件配置。 Oracle Net 監聽程序啟動: 正在運行監聽程序控制: /usr/local/Oracle/Product/11.2.0/bin/lsnrctl start LISTENER 監聽程序控制完成。 監聽程序已成功啟動。 監聽程序配置完成。 成功完成 Oracle Net Services 配置。退出代碼是0 [oracle@oracle12c ~]$ lsnrctl start # 啟動偵聽器 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 19-10月-2019 22:55:44 Copyright (c) 1991, 2016, Oracle. All rights reserved. TNS-01106: 使用名稱LISTENER的監聽程序已經啟動 [oracle@oracle12c ~]$ lsnrctl status # 查看偵聽狀態 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 19-10月-2019 22:55:50 Copyright (c) 1991, 2016, Oracle. All rights reserved. 正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle12c)(PORT=1521))) LISTENER 的 STATUS ------------------------ 別名 LISTENER 版本 TNSLSNR for Linux: Version 12.2.0.1.0 - Production 啟動日期 19-10月-2019 22:55:37 正常運行時間 0 天 0 小時 0 分 12 秒 跟蹤級別 off 安全性 ON: Local OS Authentication SNMP OFF 監聽程序參數文件 /usr/local/Oracle/Product/11.2.0/network/admin/listener.ora 監聽程序日志文件 /usr/local/Oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml 監聽端點概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 監聽程序不支持服務 命令執行成功
6.10 安裝 Oracle 數據庫 之 使用應答文件靜默創建數據庫
6.10.1配置相關參數
[oracle@oracle12c ~]$ hostip=`routel |grep host |grep -v '127.0.0' | awk '{ print $1 }'` [oracle@oracle12c ~]$ sed -i -e '/^OPERATION_TYPE/s#=.*$#= "createDatabase"#' ~oracle/dbca.rsp # 數據庫動作類型:創建數據庫 [oracle@oracle12c ~]$ sed -i -e '/^templateName/s#=.*$#=General_Purpose.dbc#' ~oracle/dbca.rsp # 使用 通用模板 創建數據庫 [oracle@oracle12c ~]$ sed -i -e '/^gdbName/s#=.*$#='$ORACLE_GDBNAME'#' ~oracle/dbca.rsp # 設置全局數據庫名 全局數據庫名=數據庫名+數據庫域名 [oracle@oracle12c ~]$ sed -i -e '/^sid/s#=.*$#='$ORACLE_SID'#' ~oracle/dbca.rsp# 設置 Oracle 的 SID [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^createAsContainerDatabase/s#=.*$#=true#' ~oracle/dbca.rsp # 是否創建容器數據庫 [oracle@oracle12c ~]$ sed -i -e '/^numberOfPDBs/s#=.*$#=1#' ~oracle/dbca.rsp # 創建容器數據庫的數量,0-4096 可用 [oracle@oracle12c ~]$ sed -i -e '/^pdbName/s#=.*$#=orclpdb12c#' ~oracle/dbca.rsp # 容器數據庫名稱 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^pdbAdminPassword/s#=.*$#=AdminPDB123#' ~oracle/dbca.rsp # 設定PDB的密碼:AdminPDB123 [oracle@oracle12c ~]$ sed -i -e '/^sysPassword/s#=.*$#=AdminSys123#' ~oracle/dbca.rsp # 設置 SYS 密碼 [oracle@oracle12c ~]$ sed -i -e '/^systemPassword/s#=.*$#=AdminSystem123#' ~oracle/dbca.rsp # 設置 system 密碼 [oracle@oracle12c ~]$ sed -i -e '/^emConfiguration/s#=.*$#=DBEXPRESS#' ~oracle/dbca.rsp # 配置 EM 類型,類型可以有:CENTRAL|DBEXPRESS|BOTH|NON [oracle@oracle12c ~]$ sed -i -e '/^emExpressPort/s#=.*$#=5500#' ~oracle/dbca.rsp # 配置 EM 服務端口,默認端口為 5500,端口范圍 500到5599 [oracle@oracle12c ~]$ sed -i -e '/^dbsnmpPassword/s#=.*$#=AdminDbsnmp123#' ~oracle/dbca.rsp # 配置 dbsnmpPassword 密碼 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^datafileDestination/s#=.*$#='$ORACLE_DATA'#' ~oracle/dbca.rsp # oradata 目錄 [oracle@oracle12c ~]$ sed -i -e '/^recoveryAreaDestination/s#=.*$#='$ORACLE_RECOVER'#' ~oracle/dbca.rsp # flash_recovery_area 目錄 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^characterSet/s#=.*$#=AL32UTF8#' ~oracle/dbca.rsp # 數據庫字符集,使用通用字符集。 [oracle@oracle12c ~]$ sed -i -e '/^nationalCharacterSet/s#=.*$#=AL16UTF16#' ~oracle/dbca.rsp # 國家字符集 [oracle@oracle12c ~]$ sed -i -e '/^listeners/s#=.*$#=LISTENER#' ~oracle/dbca.rsp # 注冊數據庫的監聽器列表 [oracle@oracle12c ~]$ sed -i -e '/^sampleSchema/s#=.*$#=false#' ~oracle/dbca.rsp # 是否向數據庫添加示例模式 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^automaticMemoryManagement/s#=.*$#=false#' ~oracle/dbca.rsp # 是否啟用(自動內存管理) [oracle@oracle12c ~]$ sed -i -e '/^totalMemory/s#=.*$#=4096#' ~oracle/dbca.rsp #分配給Oracle的總內存(以MB為單位) [oracle@oracle12c ~]$ #sed -i -e '/^emConfiguration/s#=.*$#=DBEXPRESS#' ~oracle/dbca.rsp # 配置 EM 類型,類型可以有:CENTRAL|DBEXPRESS|BOTH|NONE [oracle@oracle12c ~]$ #sed -i -e '/^omsHost/s#=.*$#='$hostip'#' ~oracle/dbca.rsp # 配置 EM 登入主機地 [oracle@oracle12c ~]$ #sed -i -e '/^omsPort/s#=.*$#=1158#' ~oracle/dbca.rsp # 配置 OMS 端口號 [oracle@oracle12c ~]$ #sed -i -e '/^emUser/s#=.*$#=sys#' ~oracle/dbca.rsp # 配置 EM 登入用戶名 [oracle@oracle12c ~]$ #sed -i -e '/^omsUser/s#=.*$#=sys#' ~oracle/dbca.rsp # 配置 OMS 用戶名 [oracle@oracle12c ~]$ #sed -i -e '/^dbsnmpPassword/s#=.*$#=AdminDbsnmp123#' ~oracle/dbca.rsp # 配置 dbsnmpPassword 密碼 [oracle@oracle12c ~]$ #sed -i -e '/^emPassword/s#=.*$#=#' ~oracle/dbca.rsp # 配置 OMS 密碼
6.10.2 安裝
使用 Database Configuration Assistant (DBCA) 來創建數據庫,DBCA 是一種自動化的方法,DBCA 支持(靜默/交互)兩種模式來創建數據庫。有關使用 DBCA 的(silent mode)靜默模式的詳細信息,請參閱:靜默模式的數據庫配置助手命令參考
[oracle@oracle12c ~]$ dbca -silent -createDatabase -responseFile ~oracle/dbca.rsp 復制數據庫文件 1%已完成 13%已完成 25%已完成 正在創建並啟動 Oracle 實例 26%已完成 30%已完成 31%已完成 35%已完成 38%已完成 39%已完成 41%已完成 正在進行數據庫創建 42%已完成 43%已完成 44%已完成 46%已完成 47%已完成 50%已完成 正在創建插接式數據庫 55%已完成 75%已完成 執行配置后操作 100%已完成 有關詳細信息, 請參閱日志文件 "/usr/local/Oracle/cfgtoollogs/dbca/orcl11g/orcl11g.log"。
6.11 查看數據庫監聽狀態,並嘗試登陸數據庫
查看數據庫偵聽狀態,並使用 as sysdba 登入數據庫測試
[oracle@oracle12c ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on 星期六 10月 19 23:10:19 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. 連接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> show user ' USER 為 "SYS" SP2-0158: 未知的 SHOW 選項 "" SQL> show user SP2-0734: 未知的命令開頭 "show..." - 忽略了剩余的行。 SQL> show user; SP2-0734: 未知的命令開頭 "show..." - 忽略了剩余的行。 SQL> show databeases; SP2-0735: 未知的 SHOW 選項開頭 "databeas..." SQL> conn / as sysdba 已連接。 SQL> show user USER 為 "SYS"
6.12 配置oracle systemd的守護服務
[oracle@oracle12c ~]$ exit 登出 [root@oracle12c ~]# sed -i -e "s@^orcl:$ORACLE_HOME:N@orcl:$ORACLE_HOME:Y@" /etc/oratab # 允許 Oracle 的 SID 為Y cat >/usr/lib/systemd/system/oracle.service <<EOF # /etc/systemd/system/oracle-rdbms.service # Invoking Oracle scripts to start/shutdown Instances defined in /etc/oratab # and starts Listener [Unit] Description=Oracle Database(s) and Listener Requires=network.target [Service] Type=forking Restart=no ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME User=oracle [Install] WantedBy=multi-user.target EOF [root@oracle12c ~]# systemctl enable oracle && systemctl restart oracle # 將服務器設為開機自啟 Created symlink from /etc/systemd/system/multi-user.target.wants/oracle.service to /usr/lib/systemd/system/oracle.service.
整個數據庫安裝成功
參考文獻:
https://www.holoem.com/?p=1629
感謝作者的整理,整理的很全面,也很仔細,對於第一次結束oracle,同時需要安裝部署的話,幫助很大,本文也是根據原作者的文檔,一步一步整理驗證的,辛苦原作者!