環境準備
- 操作系統:CentOS Linux release 7.6.1810 (Core)
- 數據庫版本:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
- 數據庫安裝包:p13390677_112040_Linux-x86-64_1of7.zip、p13390677_112040_Linux-x86-64_2of7.zip
- PL/SQL
注意:
Oracle 官網目前只能下載到 11.2.0.1 的安裝包,所以本文檔的安裝包請大家搜索找資源下載。
操作系統配置
在Root用戶下執行以下步驟:
1)修改用戶的 SHELL 的限制(資源限制),修改 /etc/security/limits.conf 文件
$ vi /etc/security/limits.conf
按i鍵進入編輯模式,將下列內容加入該文件:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
編輯完成後按Esc鍵,輸入“:wq”存盤退出
2)修改 /etc/pam.d/login
文件
輸入命令:
$ vi /etc/pam.d/login
按i鍵進入編輯模式,將下列內容加入該文件:
session required /lib/security/pam_limits.so
session required pam_limits.so
編輯完成後按Esc鍵,輸入“:wq”存盤退出
3)修改 linux 內核,修改 /etc/sysctl.conf 文件
輸入命令:
$ vi /etc/sysctl.conf
按i鍵進入編輯模式,將下列內容加入該文件
# 該參數決定了系統中所允許的文件句柄最大數目,文件句柄設置代表linux系統中可以打開的文件的數量
fs.file-max = 6815744
# 此參數限制併發未完成的請求,應該設置避免I/O子系統故障
fs.aio-max-nr = 1048576
# 可以使用的共享內存的總頁數
kernel.shmall = 2097152
# 單個共享內存段的最大值(不能超過自己的內存大小,這裏設置的值爲2G)
kernel.shmmax = 2147483648
# 該參數是共享內存段的最大數量,建議用缺省值4096
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
# IP4的端口可使用範圍
net.ipv4.ip_local_port_range = 9000 65500
# 套接字接收緩衝區大小的缺省值
net.core.rmem_default = 4194304
# 套接字接收緩衝區大小的最大值
net.core.rmem_max = 4194304
# 套接字發送緩衝區大小的缺省值
net.core.wmem_default = 262144
# 套接字發送緩衝區大小的最大值
net.core.wmem_max = 1048576
編輯完成後按Esc鍵,輸入“:wq”存盤退出
4)要使 /etc/sysctl.conf
更改立即生效,執行以下命令
輸入
$ sysctl -p
顯示如下:
linux:~ $ sysctl -p
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
5)編輯 /etc/profile
輸入命令:
$ vi /etc/profile
按i鍵進入編輯模式,將下列內容加入該文件
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
編輯完成後按 Esc 鍵,輸入“:wq”存盤退出
6)創建相關用戶和組,作爲軟件安裝和支持組的擁有者
創建Oracle用戶和密碼,輸入命令:
$ useradd -g oinstall -g dba -m oracle
$ passwd oracle
然後會讓你輸入密碼,密碼任意輸入2次,但必須保持一致,回車確認。
創建數據庫軟件目錄和數據文件存放目錄,目錄的位置,根據自己的情況來定,注意磁盤空間即可,這裏我把其放到 oracle 用戶下,輸入命令
$ mkdir /home/oracle/app
$ mkdir /home/oracle/app/oracle
$ mkdir /home/oracle/app/oradata
$ mkdir /home/oracle/app/oracle/product
8)更改目錄屬主爲Oracle用戶所有,輸入命令
$ chown -Rf oracle:oinstall /home/oracle/app
9)配置 oracle 用戶的環境變量,首先,切換到新創建的 oracle 用戶下,
輸入:
$ su – oracle
然後直接在輸入:
$ vi .bash_profile
按i編輯 .bash_profile
,進入編輯模式,增加以下內容:
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
編輯完成後按 Esc 鍵,輸入“:wq”存盤退出。
說明:這裏指定的 ORACLE_SID
爲數據庫實例名
安裝 Oracle
步驟一:當上述系統要求操作全部完成後,註銷系統,在圖形界面以 Oracle 用戶登陸。首先將下載的 Oracle 安裝包 使用 FTP 發送到 Linux系統中。
運行 unzip 命令解壓 oracle 安裝文件,輸入命令:
$ unzip linux.x64_11gR2_database_1of2.zip
$ unzip linux.x64_11gR2_database_2of2.zip
解壓完成後 cd 進入其解壓後的目錄 database 使用 ls 命令可以查看解壓後 database 所包含的文件:
$ ls
install readme.html response rpm runInstaller sshsetup stage welcome.html
步驟二:Xmanager 配置遠程圖形化
使用 XShell 建立連接時,設置連接屬性,在 SSH --> tunneling 選項下勾選 Forward X11 connections to: Xmanager
。
注意:登陸用戶名爲 oracle
設置 display 變量,設置的 IP 爲安裝 xmanager 的客戶端IP
$ export DISPLAY=192.168.1.226:0.0
執行安裝,輸入命令:
$ ./runInstaller
取消勾選,下一步:
Skip software updates:
Install database software only(軟件和創建數據庫分開安裝)
Single Instance database installation(單實例數據庫安裝)
添加語言:簡體中文
選擇 Enterprise Edtion(企業版)
Oracle會根據環境變量自動選擇設置好的安裝路徑,直接下一步即可:
裝到這一步,可以看到,可以查看到有很多的 rpm 包沒有,我們可以從安裝 linux 的光盤或ISO中(或去linux_oracle11g_Package)查找所缺的包,使用 ftp上傳到linux中,然後使用 rpm –ivh xxx.rpm --nodeps --force
來進行安裝(其中加上–nodeps – force 代表強制安裝,是在直接使用 rpm –ivh xxx.rpm
安裝不成功的情況下用的)等到把包全部都安裝好的情況下,再次在 oracle 圖形界面中,執行安裝過程2,下來在環境檢查過程中,就通過了
鏡像文件掛,如/mnt:
$ mount -o loop CentOS-7-x86_64-DVD-1708.iso /mnt/
$ cd /mnt/Packages
$ rpm -ivh libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm --nodeps --force
件安裝到最後一步,會跳出如下執行腳本的提示:
打開一個終端,使用root登錄,執行要求執行的腳本。執行完畢後在圖形界面點OK
$ cd /home/oracle/app/oracle/product/11.2.0/dbhome_1
$ ./root.sh
$ /home/oracle/oraInventory
$ ./orainstRoot.sh
數據庫建庫
還是在oracle用戶的圖形界面oracle用戶中,新開啓一個終端,直接輸入命令dbca會彈出如下界面。我們這裏採用定製數據庫
$ dbca
據環境變量中設置的 ORACLE_SID 設置數據庫名稱和SID,這裏設置的是:orcl
選擇所有用戶設置相同密碼(正式業務中請爲這些用戶分別設置密碼)
配置監聽及本地服務
步驟一:在oracle用戶的圖形界面oracle用戶中,新開啓一個終端,輸入命令 netca 會彈出如下界面
$ netca
步驟二:創建監聽服務(充當oracle服務器,讓別的oracle客戶端連接本oracle服務器)
這樣oracle服務器安裝配置基本就完成了
$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 24-NOV-2019 18:29:00
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 24-NOV-2019 17:21:47
Uptime 0 days 1 hr. 7 min. 13 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /home/oracle/app/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
查看數據庫狀態:
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Nov 24 18:30:28 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
初始化數據庫
測試plsql登錄:
創建表空間:
create tablespace rdc
logging
datafile '/home/oracle/app/oradata/orcl/rdc.dbf'
size 1112m
autoextend on
next 64m
extent management local;
創建普通用戶:
-- Create the user
create user zuozewei
identified by "123456"
default tablespace rdc
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant connect to zuozewei;
grant dba to zuozewei;
-- Grant/Revoke system privileges
grant unlimited tablespace to zuozewei;
切換到普通用戶,導入數據:
至此,我們完成整個數據庫的搭建。