oracle19c離線安裝教程-解壓包方式(轉載請注明地址)
引言:
基於大環境的趨勢下,技術需要不斷更新迭代,oracle已經迎來了很多代的變更,我們公司將在不久要進行一部分項目的雲化,搭建oracle數據將不再采用之前的oracle11g,而要使用比較新的oracle19c,所以今天我又將再一次的更新記錄一次離線安裝oracle19c的安裝過程。
注意:oracle19c基本不支持linux7以下的系統,所以需要至少也是linux7之上的系統來搭建。
准備工作:
<1>:下載oracle19c的安裝包:(可到oracle官網進行下載,我使用的是壓縮版的可解壓的安裝包)。
<2>:依賴包的安裝(我已經將oracle19c的依賴包下載並放置到本地,由於上一個oracle11G中的oracle依賴包有很多朋友私信要,這次的oracle19c的依賴包我提供一下下載地址。)
依賴包下載地址:
鏈接:https://pan.baidu.com/s/1W_Eu3XDeNjaQXavBxx4wWg
提取碼:7777
<3>: oracle19c安裝所需要的文件系統空間划分(由於oracle19c占用磁盤空間較大,建議單獨給oracle19c的安裝分配大於50G的文件系統,生產環境按照實際需要划分大小,本地我在測試環境中僅划分40G可安裝oracle19c即可)
開始搭建:
1:習慣性將oracle下載的安裝包放置到/OPT目錄下。
2:現在我們在root用戶下做相關oracle組以及用戶和oracle安裝目錄的創建工作。
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmdba
groupadd backupdba
groupadd dgdba
groupadd kmdba
groupadd racdba
/usr/sbin/useradd -g oinstall -G oper,dba,asmdba,backupdba,dgdba,kmdba,racdba oracle
passwd oracle(密碼為Ithpwin@2012)
mkdir -p /u19/app/oracle/product/19.2.0/dbhome_1
mkdir -p /u19/app/oraInventory
3:將我們下載好的oracle的依賴包進行安裝,我已經將所有的依賴的安裝包放置到/opt/oracle_yilai下,我們進行統一安裝,可以使用命令:
cd /opt/oracle_yilai
rpm -ivh *.rpm --force --nodeps
也可以使用詳細的安裝命令進行安裝:
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
4:將oracle安裝主目錄給oracle用戶進行賦權工作:
chown -R oracle:oinstall /u19/app
5:下面我們要將oracle19c的安裝包移至要解壓的安裝目錄下
mv /opt/LINUX.X64_193000_db_home.zip /u19/app/oracle/product/19.2.0/dbhome_1
對安裝包進行解壓工作:
cd /u19/app/oracle/product/19.2.0/dbhome_1
unzip LINUX.X64_193000_db_home.zip
6:切換到oracle用戶,對環境變量進行配置與生效。
su - oracle
vi .bash_profile
umask 022
export ORACLE_SID=syc (此處配置的是oracle要安裝分配的實例的名稱)
export ORACLE_BASE=/u19/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.2.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export EDITOR=vi
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_PATH=.:$ORACLE_BASE/dba_scripts/sql:$ORACLE_HOME/rdbms/admin
export SQLPATH=$ORACLE_HOME/sqlplus/admin
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" --AL32UTF8 SELECT userenv('LANGUAGE') db_NLS_LANG FROM DUAL;
export NLS_LANG="AMERICAN_CHINA.ZHS16GBK"
alias sqlplus='sqlplus'
alias rman='rman'
alias asmcmd='asmcmd'
加載環境變量
source .bash_profile
7:開始安裝,執行安裝的命令
/u19/app/oracle/product/19.2.0/dbhome_1/runInstaller -silent -force -noconfig -ignorePrereq \
命令行輸入參數
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/u19/app/oraInventory \
ORACLE_BASE=/u19/app/oracle \
ORACLE_HOME=/u19/app/oracle/product/19.2.0/dbhome_1 \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
oracle.install.db.OSDGDBA_GROUP=dgdba \
oracle.install.db.OSKMDBA_GROUP=kmdba \
oracle.install.db.OSRACDBA_GROUP=racdba \
oracle.install.db.rootconfig.executeRootScript=true \
oracle.install.db.rootconfig.configMethod=ROOT
這里的提示可以忽略,想要查看安裝的進程情況可以再克隆一個會話窗口,執行tail -f /tmp/InstallActions2020-11-30_10-27-38PM/installActions2020-11-30_10-27-38PM.log 查看即可。
8:下面我們用命令來安裝一個實例
靜默方式創建FS存儲方式的單實例(含一個PDB)
dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
命令行輸入參數
-gdbname syc -sid syc \ (紅色字體是實例的名稱)
-createAsContainerDatabase TRUE \
-numberOfPDBs 1 \
-pdbName pdb2 \ (這個是oracle12c以后有的pdb模式,這個是給創建的pdb命名的名稱)
-pdbAdminPassword Syc666 \ (pdb的admin的密碼)
-sysPassword Syc666 -systemPassword Syc666 \ (sys用戶和system用戶設置的密碼)
-datafileDestination '/u19/app/oracle/oradata' \
-recoveryAreaDestination '/u19/app/oracle/flash_recovery_area' \
-redoLogFileSize 50 \
-storageType FS \
-characterset AL32UTF8 -nationalCharacterSet AL16UTF16 \
-sampleSchema true \
-totalMemory 2048 \ (按照實際的需求分配的運行內存大小,此處為2048MB即2GB)
-databaseType OLTP \
-emConfiguration NONE
等到數據庫實例安裝進度到100%即可。
9:測試oracle安裝完成之后啟動可以正常啟動數據庫:
sqlplus / as sysdba
startup;
10: 配置listenner.ora sqlnet.ora tnsnames.ora的配置
cd /u19/app/oracle/product/19.2.0/dbhome_1/network/admin
touch listenner.ora
touch sqlnet.ora
touch tnsnames.ora
分別將不同的配置文件進行填寫
listenner.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = syc)
(ORACLE_HOME = /u19/app/oracle/product/19.2.0/dbhome_1/)
(SID_NAME = syc)
(PROGRAM = extproc)
)
)
sqlnet.ora
tcp.validnode_checking=no
#tcp.invited_nodes=(192.168.195.7,192.168.31.116,192.168.31.6,192.168.18.105)
tnsnames.ora
syc =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.105)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = syc)
)
)
PDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.105)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb2)
)
)
11: 啟動監聽器 lsnrctl start
由於上一步配置了listenner.ora,所以監聽器啟動可以啟動我們配置的實例syc
oracle19c的新特性(PDB與CDB模式)
至此oracle19c的安裝就結束了,下面需要簡單記錄一下這個可插拔數據庫的特性。
oracle19c是基礎oracle12c以后的升級版本,對於這個數據庫的新特性,我找到一個參考的博文,感謝這位博主的分享,我這邊簡單轉述一下。
oracle12c介紹的博文地址:https://www.cnblogs.com/hello-wei/p/10179313.html
CDB與PDB是Oracle 12C引入的新特性,在ORACLE 12C數據庫引入的多租用戶環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB全稱為ContainerDatabase,中文翻譯為數據庫容器,PDB全稱為Pluggable Database,即可插拔數據庫。在ORACLE 12C之前,實例與數據庫是一對一或多對一關系(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入ORACLE 12C后,實例與數據庫可以是一對多的關系。
關於CDB與PDB的關系圖
19c中 oracle引入了容器數據庫 CDB(container database),和可插拔數據庫 PDB(pluggable database)。oracle 將CDB看成一個容器,用來存放數據庫。
在CDB中可以有多個PDB,其中存在一個root根容器(PDB$ROOT)、一個種子容器(PDB$SEED)和多個PDBS。所有的PDB共用一個硬件系統資源、sga和pga、redo、臨時段、控制文件、參數文件、還原段(還可對每個PDB單獨指定)。
PDB$ROOT:根容器用來做所有容器的跟,用來對每個PDB進行統一管理,sqlplus / as sysdba連接進來默認是連接的根容器,需要切換到其他的PDB容器才可以對單獨的PDB操作。其中有 system數據文件、sysaux數據文件、(undo數據文件、temp數據文件、redo、控制文件)。一般不存放生產數據文件
PDB$SEED:種子容器作為插入PDB的模板而存在,每個CDB都有一個種子容器,且不可對其中對象進行修改。其中有 system數據文件、sysaux數據文件、其他數據文件。
PDB:新插入容器,該容器用來存放數據庫。其中有 system數據文件、sysaux數據文件、其他數據文件。19c中可以插入多個容器進行統一管理,來減少BDA的工作量。其中的數據庫可以插入或拔出。
用戶:19c中PDB$ROOT中的普通目錄可以通過權限分配來訪問一個或多個指定的PDB容器,最大權限用戶是sysdba。其中PDB也可單獨創建普通用戶來管理該容器的數據庫。
PDB資源管理:19c中將多個數據庫運行在一個硬件資源上,CDB性能上得到優化。在CDB中為每個PDB確定使用CPU最低份額,CDB會按照一個PDB份額/分配的總份額數*100%,來保證PDB最低份額數。
容器管理
連接數據庫
[oracle@master ~]$ sqlplus / as sysdba
查詢該容器是CDB 還是非CDB
SQL> select name,cdb,open_mode,con_id from v$database; NAME CDB OPEN_MODE CON_ID --------- --- -------------------- ---------- ORCL YES READ WRITE 0
查看當前容器
SQL> show con_name; CON_NAME ------------------------------ CDB$ROOT
查看所創建的PDB
SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDBORCL MOUNTED
創建一個新PDB
SQL> create pluggable database pdb1 admin user pdb1 identified by pdb1 file_name_convert=('/u01/app/oracle/oradata/orcl/pdbseed/','/u01/app/oracle/oradata/orcl/pdb1/'); Pluggable database created. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDBORCL MOUNTED 4 PDB1 MOUNTED
啟動一個創建好的PDB
SQL> alter pluggable database pdb1 open; Warning: PDB altered with errors. SQL> select message,time from pdb_plug_in_violations; MESSAGE -------------------------------------------------------------------------------- TIME --------------------------------------------------------------------------- Sync PDB failed with ORA-959 during 'CREATE USER c##dm_ca IDENTIFIED BY * PROFIL E DEFAULT DEFAULT TABLESPACE casdb ACCOUNT UNLOCK container = all' 26-DEC-18 11.26.27.070262 AM SQL> alter session set container=pdb1; Session altered. SQL> create tablespace users datafile '/u01/app/oracle/oradata/orcl/pdb1/users01.dbf' size 800M; Tablespace created. SQL> alter pluggable database pdb1 close; Pluggable database altered. SQL> alter pluggable database pdb1 open; Warning: PDB altered with errors. #還是會報錯,不知是何原因了,查看沒有報錯信息 SQL> select message,time from pdb_plug_in_violations; no rows selected SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 4 PDB1 READ WRITE YES
也可以通過sqlplus使用傳統的startup和shutdown命令來啟動和關閉PDB
SQL> alter session set container=pdb1; Session altered. SQL> SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 4 PDB1 MOUNTED SQL> startup Warning: PDB altered with errors. Pluggable Database opened. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 4 PDB1 READ WRITE YES SQL> shutdown immediate; Pluggable Database closed. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 4 PDB1 MOUNTED SQL> alter session set container=CDB$ROOT; Session altered.
連接pdb1
方法一:
[oracle@master admin]$ sqlplus sys/admin@pdb1 as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 26 14:23:22 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> startup Warning: PDB altered with errors. Pluggable Database opened. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 4 PDB1 READ WRITE YES SQL>
方法二:
[oracle@master ~]$ sqlplus pdb1/pdb1@pdb1
SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 26 15:27:35 2018
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
oracle12C中在啟動數據庫的時候,PDB並不會隨着CDB而啟動。不過我們可以通過創建一個觸發器讓PDB能夠隨CDB啟動。如下:
SQL> alter session set container=CDB$ROOT; Session altered. SQL> SHOW CON_NAME CON_NAME ------------------------------ CDB$ROOT SQL> CREATE OR REPLACE TRIGGER open_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; END open_pdbs; / Trigger created.
重新啟動數據庫:
[oracle@master ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 26 14:32:11 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDBORCL READ WRITE NO 4 PDB1 READ WRITE YES
確實已經隨着數據庫啟動,pdb1也啟動起來。
但是,RESTRICTED 為YES
我重新創建一個pdb2
SQL> show con_name; CON_NAME ------------------------------ CDB$ROOT SQL> create pluggable database pdb2 admin user pdb2 identified by pdb2 file_name_convert=('/u01/app/oracle/oradata/orcl/pdbseed/','/u01/app/oracle/oradata/orcl/pdb2/'); Pluggable database created. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDBORCL READ WRITE NO 4 PDB1 READ WRITE YES 5 PDB2 MOUNTED SQL> alter pluggable database pdb2 open; Pluggable database altered. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDBORCL READ WRITE NO 4 PDB1 READ WRITE YES 5 PDB2 READ WRITE NO
pdb2完全正確。
pdb1解決如下:
SQL> select message from pdb_plug_in_violations where name='PDB1'; MESSAGE -------------------------------------------------------------------------------- Sync PDB failed with ORA-959 during 'CREATE USER c##dm_ca IDENTIFIED BY * PROFIL E DEFAULT DEFAULT TABLESPACE casdb ACCOUNT UNLOCK container = all' Sync PDB failed with ORA-1918 during 'drop user c##dm_ca cascade' SQL> alter session set container=PDB1; Session altered. SQL> select name from v$tablespace; NAME ------------------------------ UNDOTBS1 SYSTEM SYSAUX TEMP USERS SQL> create tablespace casdb datafile '/u01/app/oracle/oradata/orcl/pdb1/casdb01.dbf' size 800M; Tablespace created. SQL> conn / as sysdba Connected. SQL> alter pluggable database pdb1 close; Pluggable database altered. SQL> alter pluggable database pdb1 open; Pluggable database altered. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDBORCL READ WRITE NO 4 PDB1 READ WRITE NO 5 PDB2 READ WRITE NO SQL>