CentOS7.4靜默安裝Oracle,並通過工具遠端連線
1.準備環境
1.工具Xshell用於操作CentOS7.4
2.CentOS7.4【虛擬機器】安裝oracle【oracle的版本是11g】
若用oracle 12c,環境依賴包可能會需要重新整理,另外安裝過程中dbca.rsp中的內容可能跟11g的有所出入,需要查閱文件調節
3.windows7【物理機】用於遠端訪問oracle
4.SqlDeveloper【windows7上安裝】
5.instantclient_12_2【oracle的client,windows上,用於連線oracle】
2.檢查相關的依賴包
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel libXp libXp-devel libXpm libXpm-devel
沒有的話通過yum install 下載
如yum install gcc
3.建立Oracle使用者和相應的屬組
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
密碼暫定為oracle
4.建立目錄修改屬組和許可權
mkdir -p /u01/app/oracle/product/11.2.0/db_1
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/inventory
mkdir -p /u01/app/oracle/fast_recovery_area
chown -R oracle.oinstall /u01/app/oracle
chmod -R 755 /u01/app/oracle
語句的作用依次為:前面建立的目錄主要作用為
Oracle家目錄、資料檔案存放位置,安裝日誌存放位置,快速恢復區
修改屬組,修改許可權
5.解壓oracle的軟體包
這裡的安裝包的目錄在/oracle/目錄下
# mkdir /oracle
# cd /oracle
# ls
database的檔案都應該在這個目錄下
6.修改伺服器的配置檔案
# vim /etc/hosts
在檔案中加入
7.0.0.13 localhost
這裡的ip是centos的ip,7.0.0.13
7.遠端連線需要開放埠,這裡為了方便起見,關閉防火牆;也可以開啟防火牆,在規則列表中開放1521埠
-----------
第一種:關閉防火牆 # systemctl stop firewalld
------------
第二種:新增
# firewall-cmd --zone=public --add-port=1521/tcp --permanent (--permanent永久生效,沒有此引數重啟後失效)
重新載入
# firewall-cmd --reload
-------------
【兩種選擇一種,生產環境不推薦關閉防火牆】
8.關閉selinux
-----
# vim /etc/selinux/config
新增 SELINUX=disabled ,若有SELINUX則將值設定成disabled
-----
9.修改核心引數
------
# vim /etc/sysctl.conf
-----
新增以下內容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
kernel.shmmni = 4096
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 = 1073741824為本機實體記憶體(2G)的一半,單位為byte。
然後執行
-----
# sysctl –p
-----
使配置生效
10.修改使用者限制檔案
----
# vim /etc/security/limits.conf
-----
新增以下內容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
11.修改/etc/pam.d/login檔案
----
vim /etc/pam.d/login
-----
新增以下內容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
經過這幾部配置伺服器資訊已經配置完。下面開始切換到Oracle使用者進行配置和安裝
12.切換Oracle使用者進行環境變數配置
---------切換並編輯 .bash_profile----
su - oracle
vim ~/.bash_profile
----------新增環境變數---------
在檔案中新增
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
ORACLE_SID=chngensis 【這句是可變的,根據自己的設定的資料庫例項名字】
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
儲存退出後使配置檔案生效
------使環境變數生效------
source .bash_profile
-----------
12.編輯靜默安裝響應檔案
--------給oracle使用者授權使用/oracle目錄-----
chown -R oracle.oinstall /oracle/
這裡的/oracle/目錄是之前的oracle下載目錄,第一步的時候已經建立
備份檔案【文中需要修改的rsp檔案,ora檔案最好備份一下】
cp /oracle/database/response/db_install.rsp /oracle/database/response/db_install.rsp.bak
然後編輯這個檔案
vim /oracle/database/response/db_install.rsp
需要設定的選項如下:
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME= diwuqingrou #使用hostname命令檢視主機名,然後替換diwuqingrou,這裡填上
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true
通過find命令找到這些選項並設定上去
13.開始安裝【安裝過程長,需等待】
切換到oracle使用者,進入/oracle/database執行
su - oracle
cd /oracle/database
./runInstaller -force -silent -noconfig -responseFile /oracle/database/response/db_install.rsp
14.安裝之後需要執行兩個指令碼【頁面有提示】
/u01/app/oracle/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/db_1/root.sh
15.接下來是配置監聽器【確保路徑沒有錯】
配置監聽的時候可能會報錯
==========================oracle11G安裝過程中出錯=====================
****DISPLAY environment variable not set!
Oracle Net Configuration Assistant is a GUI tool
which requires that DISPLAY specify a location
where GUI tools can display.
Set and export DISPLAY, then re-run.
需要輸入下面的命令解決;
[[email protected] response]$ export DISPLAY=172.20.1.1:1.0
==================================================================
export DISPLAY=172.20.1.1:1.0
netca -silent -responsefile /oracle/database/response/netca.rsp
16.建立資料庫
---------
vim /oracle/database/response/dbca.rsp
--------
【在檔案中分別找到對應的值填進去,當然GDBNAME,SID不是固定的[需跟環境變數中的相同],根據需要設定】
GDBNAME= "chngenesis"
SID ="chngenesis"
SYSPASSWORD= "oracle"
SYSTEMPASSWORD= "oracle"
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION=/u01/app/oracle/oradata
RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area
CHARACTERSET= "AL32UTF8"
TOTALMEMORY= "1638"
修改時可能有些引數會有所改動,可自行百度。
其中TOTALMEMORY ="1638" 為1638MB,實體記憶體2G*80%。
建立資料庫;
dbca -silent -createDatabase -responseFile /oracle/database/response/dbca.rsp
17.修改監聽器【這個監聽器是用於該虛擬機器連線的】
先備份:
cp /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora.bak
修改/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora,並將其中的host切換為本機的ip
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = chngenesis)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = chngenesis)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = chngenesis)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 7.0.0.13)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
先備份:
cp /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora.bak
修改/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora中的host為本機的ip
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 7.0.0.13)(PORT = 1521))
chngenesis=
(DESCRIPTION
=(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =7.0.0.13)(PORT = 1521))
) (CONNECT_DATA = (SID = chngenesis)
chngenesis
) ) )
18.配置遠端client連線【這裡提供windows】
下載地址:http://www.oracle.com/technetwork/topics/winx64soft-089540.html
1.在instantclient_12_2目錄中建立資料夾
我的目錄是在D:\Downloads\instantclient_12_2
在下面建立資料夾network,network下面建立admin
建立之後的路徑 D:\Downloads\instantclient_12_2\network\admin
在admin目錄建立tnsnames.ora檔案,接著在裡面新增
chngenesis=
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 7.0.0.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = chngenesis)
) )
HOST = 7.0.0.13應該換成對應虛擬機器centos的ip
2.新增一個環境變數
名為TNS_ADMIN,值為tnsnames.ora檔案所在路徑D:\Downloads\instantclient_12_2\network\admin,plsql通過這個找到orcl連線字串
名為NLS_LANG,值為SIMPLIFIED CHINESE_CHINA.ZHS16GBK
TNS_ADMIN=D:\Downloads\instantclient_12_2\network\admin
NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
3.開啟PLSQL,不用登陸,找到工具-首選項-ORACLE-連線:勾選檢查連線
設定Oracle主目錄: D:\Downloads\instantclient_12_2
設定OCI庫:D:\Downloads\instantclient_12_2\oci.dll
19.回到centos7.4,在資料庫伺服器中啟動監聽並更新註冊
依次執行命令:
su - oracle 【切換到oracle使用者】
lsnrctl stop 【關閉監聽】
lsnrctl start 【開啟監聽 ---重要】
sqlplus / as sysdba; 【以管理員的身份登入】
shutdown immediate; 【關閉資料庫服務】
startup; 【開啟資料庫服務 ---重要】
alter system register; 【註冊】
quit;【退出管理員】
lsnrctl status;【檢視監聽的狀態】
20.回到windows7,開啟sqlpdeveloper
輸入使用者名稱 sys
密碼 oracle 【之前建立的是時候設定的】
資料庫:這裡填寫在D:\Downloads\instantclient_12_2\network\admin中tnsname.ora中定義的名字
我這裡是chngenesis
連線為,這個選項根據使用者的許可權選擇,sys是管理員,所以這裡選擇sysdba
點選確認就可以連線了
--------------配置oracle開機啟動-----------
1.vim /etc/oratab 將這裡的N改成Y,如果是Y則不用改
chngenesis:/u01/app/oracle/product/11.2.0/db_1:Y
2. vim /etc/rc.d/rc.local 新增如下兩行
su oracle -lc "/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc /u01/app/oracle/product/11.2.0/db_1/bin/dbstart
3.centos7預設不會開機啟動這個,所以需要為其賦予相應的許可權
chmod +x /etc/rc.d/rc.local
自啟動的方式有很多種,這裡只是其中的一種,可以嘗試其他的方式
======================bug集合=================
檢視日誌時若發現
未找到包含資料檔案資訊的檔案 "/u01/app/oracle/oradata/Seed_Database.dfb"。請指定有效檔案。
cp /u01/app/oracle/product/11.2.0/db_1/assistants/dbca/templates/Seed_Database.dfb /u01/app/oracle/oradata/
-------------------------------------
出現少包的情況需要安裝相關的包,一般不會缺少
-------------------------------------
安裝過程中最好備份相關的ora檔案!切記!