換模板搭建網(wǎng)站怎么做百度競(jìng)價(jià)排名收費(fèi)標(biāo)準(zhǔn)
????????在成功體驗(yàn)了 Windows 版本的Oracle 11g 后,這幾天心血來(lái)潮,決定再挑戰(zhàn)一下Linux 環(huán)境下的安裝,特別是在考慮到部門(mén)內(nèi)部虛擬機(jī)無(wú)法聯(lián)網(wǎng)的情況下,我選擇了在CentOS 7上進(jìn)行離線安裝。這次安裝之旅,主要參考了下面大佬的詳盡教程,并結(jié)合自身實(shí)踐進(jìn)行了必要的補(bǔ)充與調(diào)整。
參考文章:? ? ?Linux 下靜默安裝/無(wú)網(wǎng)絡(luò)安裝/ Oracle 11g 11.2.0 步驟(CentOS 7)_centos7離線安裝oracle數(shù)據(jù)庫(kù)-CSDN博客
????????好了,說(shuō)干就干。
第一步:構(gòu)建基礎(chǔ)環(huán)境
首先,我安裝了VMware 17.5.1 build-23298084作為虛擬機(jī)平臺(tái),隨后下載并安裝了CentOS 7操作系統(tǒng),以便為下載 oracle 基礎(chǔ)安裝包做準(zhǔn)備。雖然尋找合適的安裝包稍顯繁瑣,但系統(tǒng)的安裝過(guò)程卻相當(dāng)順暢。
說(shuō)明:所需的安裝包以及第二步所需基礎(chǔ)安裝包均已上傳,地址如下:
鏈接:https://pan.baidu.com/s/1qctZHfXG1v6xu2olWTlAEw?pwd=kyx0?
提取碼:kyx0
第二步:準(zhǔn)備 Oracle 所需基礎(chǔ)安裝資源
在無(wú)法聯(lián)網(wǎng)的環(huán)境下,我提前下載并上傳好了Oracle 11g所需的所有安裝包及依賴(lài)庫(kù),確保安裝過(guò)程中不會(huì)因缺少資源而中斷。
yum install --downloadonly --downloaddir=/tmp/ compat-libstdc++-33 elfutils-libelf-devel gcc* glibc-* ksh libaio libaio-devel libstdc++-devel unixODBC unixODBC-devel sysstat -y
第三步:靜默安裝Oracle 11g
依據(jù)參考文章中的步驟,我順利完成了Oracle 11g的離線安裝。安裝完成后,我立即創(chuàng)建了hr 用戶(hù)及其對(duì)應(yīng)的表空間,為后續(xù)操作打好了基礎(chǔ)。
-- 使用 dba 身份免密登錄
sqlplus / as sysdba-- 新建用戶(hù) hr
create user hr identified by 123456;-- 賦權(quán)限(使用第1個(gè)即可,session 權(quán)限只能連接數(shù)據(jù)庫(kù),不能創(chuàng)建表)
(1)GRANT CONNECT, RESOURCE TO hr;
(2)GRANT CREATE SESSION TO hr;-- 創(chuàng)建表空間
CREATE TABLESPACE hr_data
DATAFILE '/u01/app/oracle_data/hr_data01.dbf' -- 替換為實(shí)際的文件路徑
SIZE 100M -- 初始大小,可以根據(jù)需要調(diào)整
AUTOEXTEND ON -- 開(kāi)啟自動(dòng)擴(kuò)展
NEXT 50M -- 下一次自動(dòng)擴(kuò)展的大小,可以根據(jù)需要調(diào)整
MAXSIZE UNLIMITED; -- 設(shè)置最大空間大小不限制
第四步:客戶(hù)端連接與字符集問(wèn)題
在嘗試通過(guò)PL/SQL和sqlPlus連接數(shù)據(jù)庫(kù)時(shí),我遇到了連接問(wèn)題。詳情如下:
使用 sqlPlus hr/123456 命令登錄,新建了一個(gè)t_user_test 測(cè)試表,新增了2條數(shù)據(jù),然后去查詢(xún),發(fā)現(xiàn)亂碼了。
INSERT INTO t_user_test VALUES(1, '張三');
INSERT INTO t_user_test VALUES(2, '李四');SELECT * FROM t_user_test;
通過(guò) sqlPlus 查詢(xún)亂碼,那通過(guò)本地客戶(hù)端 PL/SQL?會(huì)怎樣呢?首先是連接數(shù)據(jù)庫(kù),剛開(kāi)始一直連不上,問(wèn)了DBA大佬,數(shù)據(jù)庫(kù)地址是XXX.XXX.XXX.XXX:1521/SERVICE_NAMES,SERVICE_NAMES 的查詢(xún)方法如下,得出來(lái)?orcl11g.us.oracle.com,終于連上了。
查詢(xún)結(jié)果:
看起來(lái)僅通過(guò) sqlPlus 查詢(xún)亂碼,使用PL/SQL 連接查看都正常,又問(wèn)了DBA大佬,說(shuō)是字符集問(wèn)題,接著開(kāi)始設(shè)置字符集,期間試過(guò)下面三種方法但都不好使。
export?NLS_LANG=AMERICAN_AMERICA.ZHS16GBK、
export?NLS_LANG=ZHS16GBK、
export?NLS_LANG="SIMPLIFIED?CHINESE_CHINA.ZHS16GBK",
最后通過(guò)下面的方法解決了亂碼問(wèn)題,目前通過(guò) PL/SQL 和 SqlPlus?查詢(xún)正常,基本大功告成了。
vim /etc/profile# 在最后面輸入下面一行
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"# 最后執(zhí)行source 命令使生效
source /etc/profile
第五步:重啟測(cè)試與問(wèn)題排查
這一步是重啟測(cè)試,在重啟系統(tǒng)后,我發(fā)現(xiàn)無(wú)法通過(guò) sqlPlus 以hr 用戶(hù)身份登錄,使用 dba 身份免密登錄時(shí)提示實(shí)例不存在。但奇怪的是,通過(guò)本地 PL/SQL 客戶(hù)端卻能正常連接并查詢(xún)。通過(guò)重啟服務(wù)器并監(jiān)控連接狀態(tài),我排除了連接錯(cuò)誤的可能性,并最終確定是Oracle 實(shí)例在重啟后未能正確啟動(dòng)。
最后懷疑是自啟動(dòng)問(wèn)題,去掉oracle 自啟動(dòng)后,重啟機(jī)器,然后開(kāi)始手動(dòng)重啟 oracle.
好了,啟動(dòng)完成,SqlPlus 也能正常登錄了。
但問(wèn)題又來(lái)了,本地的 PL/SQL 又連不上了,提示了下面的錯(cuò)誤,沒(méi)有監(jiān)聽(tīng)器。對(duì)于第一次安裝和使用oracle 來(lái)說(shuō),確實(shí)有點(diǎn)崩潰了,這是在修水管嗎,這點(diǎn)修好那點(diǎn)壞?
好在oracle 社區(qū)群體比較龐大,很快找到了問(wèn)題解決方法,操作和截圖如下:
lsnrctl status # 查看監(jiān)聽(tīng)器狀態(tài)
lsnrctl start # 開(kāi)啟監(jiān)聽(tīng)器,如果重啟后,不開(kāi)啟監(jiān)聽(tīng)器,那么客戶(hù)端就連接不上
當(dāng)然,這里也重新配置了 tnsnames.ora 和 listener.ora,內(nèi)容如下:
1、listener.ora內(nèi)容:
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=orcl11g)(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)(GLOBAL_DBNAME = orcl11g)))LISTENER =(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server01)(PORT=1521)))2、tnsnames.ora內(nèi)容
orcl=(DESCRIPTION=(ADDRESS=(PROTOCOL=TPC)(HOST=server01)(PORT=1521)(KEY=EXTPROC1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=orcl11g.us.oracle.com)))orcl11g=(DESCRIPTION=(ADDRESS=(PROTOCOL=TPC)(HOST=server01)(PORT=1521)(KEY=EXTPROC1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=orcl11g)))
其中,server01通過(guò) hostname 命令得出,也可通過(guò)命令 vim /etc/hostname 修改。
第六步:數(shù)據(jù)導(dǎo)入與權(quán)限問(wèn)題
在嘗試使用hr用戶(hù)導(dǎo)入表結(jié)構(gòu)時(shí),我遇到了權(quán)限不足的錯(cuò)誤。在改用system用戶(hù)后,導(dǎo)入操作順利完成??磥?lái),在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),務(wù)必注意用戶(hù)的權(quán)限設(shè)置。
imp system/123456 file=/tmp/importData/backup.dmp fromuser=ca touser=hr
如果要使用 hr 用戶(hù)導(dǎo)入,那么需要給 hr 用戶(hù)賦權(quán)限:
grant imp_full_database to hr;
????????至此,Linux 環(huán)境下 Oracle 11g 的離線安裝與配置工作基本完成。這次經(jīng)歷不僅讓我掌握了Oracle數(shù)據(jù)庫(kù)在Linux環(huán)境下的安裝與配置方法,還讓我對(duì)數(shù)據(jù)庫(kù)的權(quán)限管理、字符集設(shè)置等有了更深刻的理解。