oracle12c靜默安裝(已驗證)

環境: 
    Centons7(內存2g,處理器:2,硬盤:40g),jdk1.8,
    # 最小化安裝系統,補充命令: 
        a、更新系統: yum install -y update
        b、安裝net-tools: yum install -y net-tools
        c、安裝vim: yum install -y vim

1)下載 linuxx64_12201_database.zip

https://www.oracle.com/database/technologies/oracle12c-linux-12201-downloads.html#license-lightbox

2)修改IP和主機名,要設置一下HOSTS配置文件,不然啓動oracle監聽和實例會比較慢 

vim /etc/hosts
ip + 主機名

3)檢查oracle所需包 (以root身份操作) 

rpm -q binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

4)安裝oracle依賴包(以root身份操作) 

yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

# 也可以分段執行,避免遺漏
yum install -y compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686
yum install -y glibc*.i686 glibc-devel glibc-devel*.i686
yum install -y ksh libaio*.i686 libaio-devel libaio-devel*.i686
yum install -y libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686
yum install -y libXtst libXtst*.i686 libgcc*.i686 libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686
yum install -y libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel
yum install -y gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

5)修改內核參數(參考的資料有這麼一段,考慮到這個是系統性能優化的設置,所以沒有做這一步)

[root@Oracle ~]# vim /etc/sysctl.conf
 
#修改或添加以下內容
fs.aio-max-nr = 1048576  
fs.file-max = 6815744               // 設置最大打開文件數  
kernel.shmall = 16777216            // 共享內存的總量,8G內存設置:2097152*4k/1024/1024
kernel.shmmax = 34359738360         // 最大共享內存的段大小,G換算成k計算
kernel.shmmni = 4096                // 整個系統共享內存端的最大數  
kernel.sem = 250 32000 100 128  
net.ipv4.ip_local_port_range = 9000 65500        // 可使用的IPv4端口範圍  
net.core.rmem_default = 262144  
net.core.rmem_max = 4194304  
net.core.wmem_default = 262144  
net.core.wmem_max = 1048576
#
[root@Oracle ~]# sysctl -p
 
# 檢查並生效
[root@Oracle ~]# sysctl -a

 6)創建用戶組和用戶(以root身份操作)

[root@Oracle ~]# groupadd oinstall
[root@Oracle ~]# groupadd dba
[root@Oracle ~]# groupadd oper
[root@Oracle ~]# useradd -g oinstall -G dba,oper oracle
#修改用戶密碼
[root@Oracle ~]# passwd oracle
或
[root@Oracle ~]# echo "123456" | passwd --stdin oracle

7)創建相關目錄

[root@Oracle ~]# mkdir /u01
[root@Oracle ~]# mkdir -p /u01/app/oracle                 //oracle數據庫安裝目錄
[root@Oracle ~]# mkdir -p /u01/app/oraInventory           //oracle數據庫配置文件目錄
[root@Oracle ~]# mkdir -p /u01/app/oracle/oradata         //存放數據庫的數據目錄
[root@Oracle ~]# mkdir -p /u01/app/oracle/oradata_back    //存放數據庫備份文件
[root@Oracle ~]# chmod -R 775 /u01/app
[root@Oracle ~]# chown -R oracle:oinstall /u01            //設置目錄所有者爲oinstall用戶組的oracle用戶

 8)修改 etc/profile

if [ $USER = "oracle" ]; then  
   if [ $SHELL = "/bin/ksh" ]; then  
       ulimit -p 16384  
       ulimit -n 65536a  
   else  
       ulimit -u 16384 -n 65536  
   fi  
fi

 9)修改/home/oracle/.bash_profile

#oracle數據庫安裝目錄
ORACLE_BASE=/u01/app/oracle
#oracle數據庫路徑
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
#oracle啓動數據庫實例名
ORACLE_SID=orcl
#添加系統環境變量
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
#添加系統環境變量
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
# 該部分重要,後續錯誤一般是該步驟造成
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH

# 使配置生效
[root@Oracle ~]# source /home/oracle/.bash_profile

 10)本地安裝jdk,並上傳:linuxx64_12201_database.zip 文件

[root@Oracle ~]# java -version                     # 查看安裝版本
[root@Oracle ~]# yum remove openjdk                # 如果是系統自帶的openjdk,則卸載
[root@Oracle ~]# rpm -ivh jdk-8u191-linux-x64.rpm  # 安裝自己下載的JDK

 11)解壓oracle安裝包,解壓後路徑:/u01/database

[root@Oracle ~]# unzip linuxx64_12201_database.zip -d /u01        # 沒有unzip命令,則先安裝unzip

 12)修改應答文件,靜默安裝配置文件路徑:/u01/database/response/db_install.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
# 30行 安裝類型,只裝數據庫軟件
oracle.install.option=INSTALL_DB_SWONLY
# 35行 用戶組
UNIX_GROUP_NAME=oinstall
# 42行 INVENTORY目錄(不填就是默認值)
INVENTORY_LOCATION=/u01/app/oraInventory
# 46行 oracle目錄
ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1
# 51行 oracle基本目錄
ORACLE_BASE=/u01/app/oracle
# 63行 oracle版本
oracle.install.db.InstallEdition=EE
# 80行
oracle.install.db.OSDBA_GROUP=dba
# 86行
oracle.install.db.OSOPER_GROUP=oper
# 91行 
oracle.install.db.OSBACKUPDBA_GROUP=dba
# 96行
oracle.install.db.OSDGDBA_GROUP=dba
# 101行
oracle.install.db.OSKMDBA_GROUP=dba
# 106行
oracle.install.db.OSRACDBA_GROUP=dba
# 180行 數據庫類型
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
# 185行
oracle.install.db.config.starterdb.globalDBName=orcl
# 190行
oracle.install.db.config.starterdb.SID=orcl
# 216行
oracle.install.db.config.starterdb.characterSet=AL32UTF8
# 384行
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
# 398行 設置安全更新(貌似是有bug,這個一定要選true,否則會無限提醒郵件地址有問題,終止安裝。PS:不管地址對不對)
DECLINE_SECURITY_UPDATES=true

 13)安裝Oracle數據庫軟件(以oracle用戶身份操作,執行需要幾分鐘)

[oracle@vs database]$ ./runInstaller -force -silent -noconfig -ignorePrereq -ignoreSysPreReqs -responseFile /u01/database/response/db_install.rsp 
# 執行過程中會有日誌文件記錄提示,可以tail -f 日誌文件查看

eg: 可能出現的錯誤:/oui/lib/linux64/liboraInstaller.so: libnsl.so.1: cannot open shared object file: No such file or directory
原因沒有安裝libnsl-64位的包: dnf install libnsl.x86_64

 14)安裝成功後會提示如下圖命令,需要切換到root身份執行

以 root 用戶的身份執行以下腳本:
	1. /u01/app/oraInventory/orainstRoot.sh
	2. /u01/app/oracle/product/12.2.0/db_1/root.sh

 15)配置監聽,靜默安裝配置文件路徑:/u01/database/response/netca.rsp

[oracle@vs ~]$ netca -silent -responsefile /u01/database/response/netca.rsp
# netca 是oracle net configuration assistance的簡稱,主要作用是配置監聽程序、命名方法配置、本地net服務嗎配置、目錄使用配置

可以通過 netstat -tlnp 命令查看監聽地址
netstat -tlnp
tcp  0   0 :::1521        :::*      LISTEN      5477/tnslsnr

16)修改dbca.rsp文件,靜默安裝配置文件路徑:/u01/database/response/dbca.rsp

# 21行 不可更改
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
# 32行 全局數據庫名
gdbName=orcl
# 42行 系統標識符
sid=orcl
# 52行
databaseConfigType=SI
# 74行
policyManaged=false
# 88行
createServerPool=false
# 127行
force=false
# 163行
createAsContainerDatabase=true
# 172行
numberOfPDBs=1
# 182行
pdbName=orclpdb
# 192行
useLocalUndoForPDBs=true
# 203行 庫密碼
pdbAdminPassword=********
# 223行
templateName=/u01/app/oracle/product/12.2.0/db_1/assistants/dbca/templates/General_Purpose.dbc
# 233行 超級管理員密碼
sysPassword=********
# 233行 管理員密碼
systemPassword=********
# 273行
emExpressPort=5500
# 284行
runCVUChecks=false
# 313行
omsPort=0
# 341行
dvConfiguration=false
# 391行
olsConfiguration=false
# 401行
datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
# 411行
datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/
# 421行
recoveryAreaDestination={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}
# 431行
storageType=FS
# 468行 字符集創建庫之後不可更改
characterSet=AL32UTF8
# 478行
nationalCharacterSet=AL16UTF16
# 488行
registerWithDirService=false
# 526行
listeners=LISTENER
# 546行
variables=DB_UNIQUE_NAME=orcl,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=orcl,ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1,SID=orcl
# 555行
initParams=undo_tablespace=UNDOTBS1,memory_target=796MB,processes=300,db_recovery_file_dest_size=2780MB,nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=orclXDB),db_recovery_file_dest={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME},db_block_size=8192BYTES,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_orcl,compatible=12.2.0,control_files=("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl"),db_name=cdb1,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300
# 565行
sampleSchema=false
# 574行
memoryPercentage=40
# 584行
databaseType=MULTIPURPOSE
# 594行
automaticMemoryManagement=false
# 604行
totalMemory=0

 17)創建數據庫實例,使用 dbca 命令(dbca是oracle命令,如果提示命令找不到,檢查環境變量,可能需要幾分鐘)

[oracle@oracle response]$ dbca -silent -createDatabase -responseFile  /u01/database/response/dbca.rsp

 18)檢查oracle進程狀態

ps -ef | grep ora_ | grep -v grep
lsnrctl status

 19)數據庫實例的啓動和關閉【只查看不,服務正常執行修改就行】

# 以 DBA 身份進入 sqlplus,查看數據庫狀態
[oracle@Oracle ~]$ sqlplus / as sysdba
SQL> select open_mode from v$database;             //查看數據庫
SQL> select status from v$instance;                //查看數據庫實例
 
# 以 DBA 身份進入 sqlplus,修改管理員用戶密碼
[oracle@Oracle ~]$ sqlplus / as sysdba
SQL> alter user sys identified by ********;        //改sys超級管理員密碼
SQL> alter user system identified by ********;     //改system管理員密碼
 
# 以 DBA 身份進入 sqlplus,啓動數據庫
[oracle@Oracle ~]$ sqlplus / as sysdba
SQL> startup
 
# 以 DBA 身份進入 sqlplus,關閉數據庫
[oracle@Oracle ~]$ sqlplus / as sysdba
SQL> shutdown abort
或
SQL> shutdown immediate

 20)修改oracle啓動配置文件

完成oracle12c數據庫的安裝後,相關服務器會自動啓用,但並不表示下次開機後oracle服務器仍然可用。下面將介紹oracle的基本服務組件,以及如何編寫服務腳本來控制oracle數據庫系統的自動運行。
根據上面的安裝過程,oracle的數據庫軟件將安裝在變量ORACLE_HOME所指向的位置。例如 /u01/app/oracle/product/12.2.0/db_1/ ,而各種服務器組件程序(也包括sqlplus命令)正是位於其中的bin子目錄下。
Oracle數據庫的基本服務組件如下所述:(注:oracle服務組件最好以oracle用戶身份運行如:su - oracle)
lsnrctl:監聽器程序,用來提供數據庫訪問,默認監聽TCP 1521端口。
dbstart、dbshut:數據庫控制程序,用來啓動、停止數據庫實例。
emctl:管理器控制工具,用來控制OEM平臺的開啓與關閉,OEM平臺通過1158端口提供HTTPS訪問,5520端口提供TCP訪問。
爲了方便執行oracle的服務組件程序,建議對所有用戶的環境配置作進一步的優化調整、補充PATH路徑、oracle終端類型等變量設置。除此以外,還應該修改/etc/oratab配置文件,以便運行dbstart時自動啓用數據庫實例。

# 修改oratab配置如下,這樣就可以通過dbstart 啓動實例,也可以通過dbshut關閉實例。
[oracle@Oracle ~]$ vim /etc/oratab
 
racl:/u01/app/oracle/product/12.2.0/db_1:Y  //把“N”改成“Y”
 
# 此時所有oracle的進程關閉,監聽器也停止。
[oracle@Oracle ~]$ dbshut /u01/app/oracle/product/12.2.0/db_1/
 
# 啓動監聽器和實例。
[oracle@Oracle ~]$ dbstart /u01/app/oracle/product/12.2.0/db_1/
 
# 修改 dbstart 和 dbshut,如下 (修改後服務器重啓才能正常使用)
# 修改 #ORACLE_HOME_LISTNER=$1 爲 ORACLE_HOME_LISTNER=$ORACLE_HOME
 
# 在 root 用戶下編輯 rc.local
# dbstart 默認將 oratab 中參數爲 Y 的所有庫啓動 
[root@Oracle ~]# vim /etc/rc.d/rc.local
 
# 添加如下命令到 rc.local
# 用oracle用戶登錄,運行dbstart啓動數據庫
# 添加,防止sqlplus 鏈接【oracle 12c 遠程訪問顯示 ORA-12541:TNS:無監聽程序】
su - oracle -lc "/u01/app/oracle/product/12.2.0/db_1/bin/dbshut" 
su - oracle -lc "/u01/app/oracle/product/12.2.0/db_1/bin/dbstart"
 
# 設置執行權限,因爲Oracle linux 7.x 默認rc.local是沒有執行權限,需執行chmod自己增加
[root@Oracle ~]# chmod +x /etc/rc.d/rc.local
 
# 查看監聽狀態及數據庫狀態
[oracle@Oracle ~]$ lsnrctl status
 
# 啓動監聽
[oracle@Oracle ~]$ lsnrctl start
 
# 停止監聽
[oracle@Oracle ~]$ lsnrctl stop

 21)添加oracle 環境變量

export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1;
export ORACLE_SID=orcl;
export PATH=$ORACLE_HOME/bin:$PATH;

 22)防火牆開放端口(以root身份操作,可以直接關掉,使用 iptables 防火牆)

# 開啓端口
[root@vs ~]# firewall-cmd --zone=public --add-port=1521/tcp --permanent
# 重啓防火牆 (一般我們在開放完新的端口後,需要重新啓動防火牆)
[root@vs ~]# firewall-cmd --reload

 23)ORA-28040: 沒有匹配的驗證協議

在 $ORACLE_HOME/network/admin/sqlnet.ora
  加入如下: 
  SQLNET.ALLOWED_LOGON_VERSION=8

 24)用戶創建

CDB: 公共用戶創建需要帶 c##
sqlplus / as sysdba
#創建用戶
create user C##test identified by test;
create user C##stan identified by stan;
#刪除用戶
drop user C##test;
# 受權限
grant connect,resource,dba to c##test;
grant connect,resource,dba to c##stan;
# 撤銷權限
revoke connect, resource from c##test;

 25)監聽問題: tnsnames.ora 修改文件中的loclahost爲ip地址(不一定修改)

$ORACLE_HOME/product/12.2.0/db_1/network/admin/tnsnames.ora



select * from dba_users; 
select * from all_users; 
select * from user_users;

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章