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