阿里云服务器安装oracle11g-整理实战各路大神汇总
Oracle靜默安裝,是一種高效、便捷的安裝方法。很多時候我們在服務器上安裝oracle,只有終端環境,用不了OUI(即圖形界面)的安裝方式,只能采用靜默安裝。
一、安裝前準備
1.檢查swap
關于swap是什么就不贅述了,可以自行百度
**Linux下有兩種類型的swap空間,swap分區和swap文件,他們有各自的特點:
(1)swap分區上面由于沒有文件系統,所以相當于內核直接訪問連續的磁盤空間,效率相對要高點,但由于swap分區一般安裝系統時就分配好了了,后期要縮減空間和擴容都很不方便。
加一個交換分區
步驟如下:
$1 使用fdisk來創建交換分區(假設 /dev/sdb2 是創建的交換分區)
$2 使用 mkswap 命令來設置交換分區:
# mkswap /dev/sdb2
$13啟用交換分區:
# swapon /dev/sdb2
$14寫入/etc/fstab,以便在引導時啟用:
/dev/sdb2swap swap defaults 0 0
---------------------------------------------------------------------------------------------------
(2)swap文件放在指定分區的文件系統里面,所以有可能受文件系統性能的影響,但據說2.6版本以后的內核可以直接訪問swap文件對應的物理磁盤地址,相當于跳過了文件系統直接訪問磁盤,不過如果swap文件在磁盤上的物理位置不連續時,還是會對性能產生不利影響,但其優點就是靈活,隨時可以增加和移除swap文件。
創建swap分區交換文件: 阿里云的ECS默認是不啟用swap分區的,但是安裝Oracle又必須要這個分區。那我們就來創建一個
$1.dd if=/dev/zero of=/mnt/swap bs=1M count=1024。dd:用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉換。linux下mnt目錄的作用:mount 可直接理解為“掛載”掛接光驅、USB設備的目錄,加載后,會在mnt里多出相應設備的目錄。
$2.將該文件的權限設置為 600 這樣只有 root 用戶可以訪問這個文件
sudo chmod 600 /swapfile1
$2.格式化swap分區 mkswap /mnt/swap
$3.啟用swap分區 swapon /mnt/swap
$4.將新創建的交換文件添加到 fstab 文件中,這樣交換分區空間的修改即使在重啟后也可以生效。
vi /etc/fstab
/mnt/swap swap swap defaults 0 0
(
( - 要掛載的分區或存儲設備.
- 的掛載位置。
- 要掛載設備或是分區的文件系統類型,支持許多種不同的文件系統:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 設置成auto類型,mount 命令會猜測使用的文件系統類型,對 CDROM 和 DVD 等移動設備是非常有用的。
- 掛載時使用的參數,注意有些mount 參數是特定文件系統才有的。
dump 工具通過它決定何時作備份. dump 會檢查其內容,并用數字來決定是否對這個文件系統進行備份。 允許的數字是 0 和 1 。0 表示忽略, 1 則進行備份。大部分的用戶是沒有安裝 dump 的 ,對他們而言 應設為 0。
fsck 讀取 的數值來決定需要檢查的文件系統的檢查順序。允許的數字是0, 1, 和2。 根目錄應當獲得最高的優先權 1, 其它所有需要被檢查的設備設置為 2. 0 表示設備不會被 fsck 所檢查。)
(命令解釋:if=文件名:輸入文件名,缺省為標準輸入。即指定源文件。< if=input file >
of=文件名:輸出文件名,缺省為標準輸出。即指定目的文件。< of=output file >
/dev/zero也是一個偽文件,但它實際上產生連續不斷的null的流(二進制的零流,而不是ASCII型的)。寫入它的輸出會丟失不見,/dev/zero主要的用處是用來創建一個指定長度用于初始化的空文件,像臨時交換文件。
mkswap命令用于在一個文件或者設備上建立交換分區
bs=1M:同時設置讀入/輸出的塊大小為1M。
count=blocks:僅拷貝blocks個塊
/etc/fstab是用來存放文件系統的靜態信息的文件, 當系統啟動的時候,系統會自動地從這個文件讀取信息,并且會自動將此文件中指定的文件系統掛載到指定的目錄。)
注:本人買的阿里云ECS服務器事先已經分好了區,且云服務器一般swap都是為0,因此需要且只能采用第二種swap文件方式,或者有經濟實力的土豪也可以再購買一個硬盤掛載到服務器上,采用第一種方式設置swap分區。
**查看linux的swap大小
(1)free -h命令
(2)使用命令swapon -s即可查看系統中在用的swap
**cat /proc/sys/vm/swappiness
有時我們桌面環境確實配置了比較充裕的內存,并且也配置了swap空間,這個時候就希望盡量減少swap空間的使用,避免對系統性能造成影響,Linux早就幫我們考慮到這種情況了,在2.6內核中,增加了一個叫做swappiness的參數,用于配置需要將內存中不常用的數據移到swap中去的緊迫程度。這個參數的取值范圍是0~100,0告訴內核盡可能的不要將內存數據移到swap中,也即只有在迫不得已的情況下才這么做,而100告訴內核只要有可能,盡量的將內存中不常訪問的數據移到swap中。
Ubuntu的desktop和server的默認配置都是60(可能會隨著版本變化),對于桌面環境來說,界面的響應速度直接關系到系統的流暢程度,如果內存比較充裕的話,可以將這個值設置的小一點,這樣就盡可能的把數據留在內存中,從而喚醒后臺界面程序會更快一些,Ubuntu desktop建議將該值設置為10,當然大家可以根據swap空間的實際使用情況,任意調整這個參數,直到自己滿意的水平為止。對于服務器來說,主要性能衡量標準是整體的處理能力,而不是具體某一次的響應速度,能把更多的內存用來做I/O cache可能效果更好,所以Ubuntu server建議保持60的默認值。
**修改swap大小
*修改swappiness的值
臨時性修改,系統重啟后會失效:sysctl vm.swappiness=10或者echo 10 >/proc/sys/vm/swappiness
永久修改:在/etc/sysctl.conf 文件里添加如下參數:vm.swappiness=10
(sysctl命令用于運行時配置內核參數,這些參數位于/proc/sys目錄下。sysctl配置與顯示在/proc/sys目錄中的內核參數
/proc/sys目錄下存放著大多數內核參數,并且可以在系統運行時進行更改,不過重新啟動機器就會失效。/etc/sysctl.conf是一個允許改變正在運行中的Linux系統的接口,它包含一些TCP/IP堆棧和虛擬內存系統的高級選項,修改內核參數永久生效。也就是說/proc/sys下內核文件與配置文件sysctl.conf中變量存在著對應關系。)
2.安裝依賴包,需要的依賴可以看
rpm -q 可以查看某個需要的包是否已經被安裝以及對應的版本
(可以通過該命令查看需要的安裝包是否已經被安裝
rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc+±devel make sysstat unixODBC unixODBC-devel)
rpm -ivh example.rpm 安裝 example.rpm 包并在安裝過程中顯示正在安裝的文件信息及安裝進度(-i, --install安裝,-v,–verbose顯示詳細, -h,–hash顯示進度)
rpm -Uvh 升級一個rpm包(-U,–upgrade更新)
*下載rpm包可以到pkgs.org,下載到本地再弄到服務器上/執行 yum install 出現下載列表并提示 【y/d/n】,這里選擇d,d是僅下載不安裝的意思。會下載到/var/cache/yum/x86_64/7/目錄的相應位置。(/var/cache應用程序本身運作過程中會產生的一些暫存檔)
*建議使用yum而不是rpm去安裝對應的包,因為用rpm安裝對應的依賴,整天安裝會提示某個依賴會被安裝,很麻煩,而yum會自動幫你發現并安裝這些依賴
創建用戶和組
groupadd oinstall:創建osintall組
groupadd dba:創建dba組
useradd -g oinstall -G dba oracle -d /home/db :創建oracle用戶并指定所屬組、附加組、用戶目錄
passwd oracle :給oracle用戶設置密碼
(-g 用戶所屬組,-G 用戶附加組
一個用戶只能且必須屬于一個g,可以屬于多個G。 用戶testuser 同時用戶所屬g和G的權限
-d<登入目錄> 指定用戶登入時的起始目錄)
cat /etc/passed:查看用戶信息
cat /etc/group :查看組信息
groups oracle:查詢oracle用戶屬于哪個組
(1)oracle清單組(一般為oinstall)
oinstall組的成員被視為oracle軟件的“所有者”,擁有對oracle中央清單(oraInventory)的寫入權限。在一個Linux系統上首次安裝Oracle軟件時,OUI會創建/etc/oraInst.loc文件。該文件指定Oracle清單組的名稱(默認為oinstall)以及Oracle中央清單目錄的路徑、
(2)數據庫管理員(OSDBA,一般為dba)
OSDBA組的成員可通過操作系統身份驗證使用SQL以SYSDBA身份連接到一個Oracle實例。該組的成員可以執行關鍵的數據庫管理任務,如創建數據庫,啟動,關閉實例。該組的默認名稱為dba。SYSDBA系統權限甚至再數據庫未打開時也允許訪問數據庫實例。對此權限的控制完全超出了數據庫本身的范圍。
不要混淆SYSDBA系統權限和數據庫角色DBA。DBA角色不包括SYSDBA或SYSOPER系統權限。
(3)數據庫操作員組(OSOPER,一般為oper)
OSOPER組的成員可通過操作系統身份驗證使用SQL以SYSOPER身份連接到一個Oracle實例。這個可選組的成員擁有一組有限的數據庫管理權限,如管理和運行備份。該組的默認名稱未oper。SYSOPER系統權限甚至再數據庫未打開時也允許訪問數據庫實例。對此權限的控制完全超出了數據庫本身的范圍。要使用該組,選擇Advanced安裝類型來安裝Oracle數據庫軟件。
無論安裝什么版本的Oracle,在安裝之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf這三個文件,那這三個文件究竟是做什么用的呢?答案就是設置對oracle用戶的shell limits.
Linux PAM(插件式認證模塊,Pluggable Authentication Modules)
為安全起見,計算機系統只有經過授權的合法用戶才能訪問。這就需要程序提供鑒別登陸用戶身份信息的代碼。原本實現鑒別功能的代碼是作為應用程序的一部分,這種情況下,如果發現所用算法存在某些缺陷或想采用另一種鑒別方法時,用戶不得 不重寫然后重新編譯原本的整個程序。很顯然這種鑒別方式缺乏靈活性。因此,人們開始尋找一種更好的鑒別方案:一方面,要把鑒別功能代碼從應用中獨立出來,形成獨立模塊,單獨進行維護,另一方面,為這些鑒別模塊建立標準API,以便各應用程序能方便地使用他們提供的各種功能。插件式鑒別模塊(PAM)機制采用模塊化設計和插件功能,使得我們可以輕易地在應用程序中插入新的鑒別模塊或替換原先的組件,而不必對應用程序做任何修改,從而使軟件的定制、維持和升級更加輕松
1995年SUN公司提出PAM方式,實現了以上要求,達到了應用程序和鑒別機制的分離,并且PAM可以集成多種鑒別機制,輕松實現應用程序的鑒別部分的靈活性。
除了具體實現不同外,各種版本 Unix 系統上的 PAM 的框架是相同的,所以我們在這里介紹的 Linux PAM 框架知識具有普遍性。因此在本文介紹其框架的過程中可以看到,我們并沒有刻意區分 PAM 與 Linux-PAM 這兩個術語。PAM 為了實現其插件功能和易用性,它采取了分層設計思想:讓各鑒別模塊從應用程序中獨立出來,然后通過PAM API作為兩者聯系的紐帶,這樣應用程序就可以根據需要靈活地在其中"插入"所需鑒別功能模塊,從而真正實現了"鑒別功能,隨需應變"。
在rhel中,
**PAM的驗證模塊,存放位置在/lib/security,如pam_limits.so、pam_group.so等
**PAM驗證模塊的配置文件,存放位置 /etc/security中,如pam_limits.so驗證模塊對應的配置文件limits.conf,pam_group.so驗證模塊對應的配置文件group.conf。
**PAM驗證模塊和應用程序的對應關系,存放位置/etc/pam.d文件夾。通過修改此文件夾下的配置文件,可以為應用選定具體的驗證模塊
4.修改內核參數
修改內核參數
vi /etc/sysctl.conf
追加如下內容:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.shmmax 參數設置為物理內存的一半
kernel.shmmax = 1073741824
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 = 1048586
#使修改立即生效
sysctl -p
5.限制oracle用戶的shell權限,實現對用戶資源進行限制,如進程數/文件數等等。
vi /etc/security/limits.conf
#末尾追加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
limits.conf的格式如下:
–domain:username|@groupname 設置需要被限制的用戶名或組,組名前面加@和用戶名區別;也可以用通配符*來做所有用戶的限制。
–type:有 soft,hard 和 - 。soft 指的是當前系統生效的設置值(警告)
hard 表明系統中所能設定的最大值(錯誤)。soft 的限制不能比har 限制高,- 表明同時設置了 soft 和 hard 的值。
–item:有以下幾種
core - 限制內核文件的大小(KB)
date - 最大數據大小(KB)
fsize - 最大文件大小(KB)
memlock - 最大鎖定內存地址空間(KB)
nofile - 打開的文件描述符的最大數目**(經常設置)**
rss - 最大持久設置大小(KB)
stack - 最大堆棧大小(KB)
cpu - 最大CPU時間(min)
noproc - 過程最大數量
as - 地址空間限制(KB)
maxlogins - 此用戶的最大登錄數量
maxsyslogins - 在系統上登錄的最大數目
priority - 優先級運行用戶進程
locks - 文件的最大數量鎖定用戶可容納
sigpending - 最大掛起信號的數量
msgqueue - 通過POSIX消息隊列使用的最大內存(字節)
nice - 最大不錯優先允許提高到值:[-20,19]
rtprio - 最大實時優先
6.修改用戶驗證選項
要使/etc/security/limits.conf 文件配置生效,必須要確保 PAM驗證模塊pam_limits.so 文件被加入到啟動文件中
vi /etc/pam.d/login
#末尾追加
session required /lib64/security/pam_limits.so
session required pam_limits.so
Pam.d文件夾下配置文件的語法為
Service model_type control_flag model_path options
(1)Service :使用PAM驗證模塊的應用程序,如ftp、telnet、login等。其中other一行指本文件中沒有單獨列出的其他應用程序
驗證模塊的類型,主要有以下幾種
auth :鑒別類模塊 account:賬戶類模塊
session:會話類模塊 password:口令類模塊
每行只能指定一中類型模塊,如果應用程序需要多種模塊組合使用,則需要在多行中分別規定。
(2)Control_flag:對模塊驗證成功或者失敗的結果的處理情況
Required:該模塊驗證成功是用戶通過鑒別的必要條件。只有當應用程序對應的所有帶有required標記的模塊全部成功后,該應用程序才能通過 鑒別。同時,如果任何帶有required標記的模塊出現了錯誤,PAM并不立刻將錯誤信息返回給應用程序,而是在所有模塊都調用完畢后,再將錯誤信息返回給調用它的應用程序。
Requisite:與required相似,只有帶有此標記的模塊返回成功后,用戶才能通過鑒別,不同之處在于,一旦失敗就不再執行堆中后面的其他模塊,并且鑒別過程到此結束。
(3)Optiona: 即使該模塊驗證失敗,用戶仍能通過鑒別。在PAM體系中,帶有該標記的模塊失敗后,將繼續處理下一模塊。
7.為oracle用戶在bash和ksh中設定資源限制
修改/etc/profile文件,全局環境變量文件
vi /etc/profile
if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
讓修改立即生效
source /etc/profile
8.創建對應安裝目錄
[root@oracledb ~]# mkdir -p /home/db/oracle/product/11.2.0:仍然是Oracle RDBMS的軟件存放目錄。
[root@oracledb ~]# mkdir /home/db/oracle/oradata:存放數據文件
[root@oracledb ~]# mkdir /home/db/oracle/oraInventory:oraInventory存放的是Oracle軟件安裝的目錄信息,Oralce的安裝升級都需要用到這個目錄,
[root@oracledb ~]# mkdir /home/db/oracle/fast_recovery_area:閃回恢復區,存放回閃恢復需要的文件的一塊磁盤大小,缺省2G
[root@oracledb ~]# chown -R oracle:oinstall /home/db/oracle:chown將指定文件的擁有者改為指定的用戶或組,用戶可以是用戶名或者用戶ID。-R:處理指定目錄以及其子目錄下的所有文件
[root@oracledb ~]# chmod -R 775 /home/oracle
9.下載oracle11g_R2包
官網下載的有兩個包,不知道為啥分個兩個
linux.x64_11gR2_database_1of2_4.zip
linux.x64_11gR2_database_2of2.zip
首先將兩個壓縮包放到同一目錄,先后解壓
unzip linux.x64_11gR2_database_1of2_4.zip
unzip linux.x64_11gR2_database_2of2.zip
20.編輯數據庫安裝文件db_install.rsp
解壓完成后會生成database目錄,解壓后的文件中database/response下有有db_install.rsp、dbca.rsp和netca.rsp三個應答文件,
db_install.rsp:分別數據庫安裝文件、
dbca.rsp:建立數據庫實例
netca.rsp:監聽配置安裝文件
隨便挑個目錄,拷貝這三個文件,我選擇的是和oracle安裝的同級目錄(安裝包的同級目錄)mkdir /home/db/oracle/etc
cp /home/db/oracle/database/response/* /home/db/oracle/etc
這個響應文件其實就是配置文件,里面可以配置一些安裝的細節,在DBCA圖形界面中能夠看到的安裝選項,在響應文件中都有體現。可以通過響應文件來設置安裝企業版、個人版、標準版、安裝的語言包、字符集等。
vim db_install.rsp
#標注響應文件版本,這個版本必須和要#安裝的數據庫版本相同,安裝檢驗無法通過,不能更改
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
#選擇安裝類型:1. INSTALL_DB_SWONLY只裝數據庫軟件 2.INSTALL_DB_AND_CONFIG安裝數據庫軟件并建庫 3.UPGRADE_DB升級數據庫
oracle.install.option=INSTALL_DB_SWONLY
#指定操作系統主機名,通過hostname命令獲得
ORACLE_HOSTNAME=SunnyBlog
#指定oracle inventory目錄的所有者,通常會是oinstall或者dba
UNIX_GROUP_NAME=oinstall
#指定產品清單oracle inventory目錄的路徑,如果是Win平臺下可以省略
INVENTORY_LOCATION=/home/db/oracle/oraInventory
#指定數據庫語言,可以選擇多個,用逗號隔開。選擇en, zh_CN(英文和簡體中文)
SELECTED_LANGUAGES=en,zh_CN
#設置ORALCE_HOME的路徑
ORACLE_HOME=/home/db/oracle/product/11.2.0
#設置ORALCE_BASE的路徑
ORACLE_BASE=/home/db/oracle
#選擇Oracle安裝數據庫軟件的版本(企業版,標準版,標準版1),不同的版本功能不同EE: EnterpriseEdition SE:Standard Edition SEONE:Standard Edition OnePE: Personal Edition (WINDOWS ONLY)
oracle.install.db.InstallEdition=EE
#是否自定義Oracle的組件,如果選擇false,則會使用默認的組件,如果選擇true否則需要自己在下面一條參數將要安裝的組件一一列出。安裝相應版權后會安裝所有的組件,后期如果缺乏某個組件,再次安裝會非常的麻煩
oracle.install.db.isCustomInstall=false
#手工選擇需要安裝組件的話(設置了oracle.install.db.isCustomInstall=true)
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
#指定擁有OSDBA、OSOPER權限的用戶組,通常會是dba組
oracle.install.db.DBA_GROUP=dba
#oper用戶組
oracle.install.db.OPER_GROUP=oinstall
#選擇數據庫的用途,一般用途/事物處理,數據倉庫
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
#指定globalDBName
oracle.install.db.config.starterdb.globalDBName=orcl
#指定SID
oracle.install.db.config.starterdb.SID=orcl
#自動管理內存的最小內存(M)
oracle.install.db.config.starterdb.memoryLimit=800
#設定所有數據庫用戶使用同一個密碼
oracle.install.db.config.starterdb.password.ALL=oracle
#設置安全更新(貌似是有bug,這個一定要選true,否則會無限提醒郵件地址有問題,終止安裝。PS:不管地址對不對)
DECLINE_SECURITY_UPDATES=true
11.配置 oracle 用戶環境變量
每個用戶都可使用該文件輸入專用于自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件.
此文件類似于/etc/profile,也是需要需要重啟才會生效,/etc/profile對所有用戶生效,~/.bash_profile只對當前用戶生效。
先切換到oracle用戶,su - oracle
編輯 bash_profile ,輸入命令:vi .bash_profile,添加如下環境變量。
[oracle@oracledb ~]$ vim .bash_profile
#在末尾添加
ORACLE_BASE=/home/db/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=PATH:PATH:PATH:ORACLE_HOME/bin 修改path的值,將oracle的bin路徑添加到PATH環境變量中
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
12.根據靜默文件安裝oracle11g
cd /home/db/database
./runInstaller -silent -responseFile /home/db/oracle/etc/db_install.rsp -ignorePrereq
安裝過程可能比較長,別管它,再開一個窗口,tail -f /home/db/oracle/oraInventory/logs/installActions2021-07-27_11-34-06PM.log查看安裝日志
當原安裝窗口出現Successfully Setup Software.
說明安裝成功
打開新的終端,以root身份登錄,執行腳本:
[root@oracledb oraInventory]# sh /home/db/oracle/oraInventory/orainstRoot.sh
[root@oracledb 11.2.0]# sh /home/db/oracle/product/11.2.0/root.sh
orainstRoot.sh:
設置產品目錄位置與擁有該目錄的操作系統組,并產生/etc/oraInst.loc。
root.sh:
用來設置必要的操作系統權限,并將orahome,oraenv,coraenv復制到/usr/local/bin目錄下。生成/etc/oratab,其中存放一些數據庫相關信息。
https://blog.csdn.net/qq_36856983/article/details/105906662?utm_medium=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.test_version_3&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.test_version_
切換回oracle用戶
su oracle
$ORACLE_HOME/bin/netca /silent /responseFile /home/db/oracle/etc/netca.rsp
用戶可以靜默模式運行netca 命令去配置并啟動 Oracle 網絡監聽( listener.ora )、配置命名方式和配置配置網絡服務名( tnsnames.ora )。Oracle 提供了一個響應文件模板,叫做 netca.rsp 。這里的netca命令是oracle的,先前配置了環境變量,因此可以使用。
命令運行后提示:
Parsing command line arguments:
Parameter “silent” = true
Parameter “responsefile” = /home/db/oracle/etc/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/home/db/oracle/product/11.2.0/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
成功運行后,在/opt/oracle/product/11.2.0/network/admin中生成listener.ora和sqlnet.ora
查看端口是否占用/監聽狀態:
$ ss -tnl|grep 1521
$ lsnrctl status
lsnrctl:oracle命令
lsnrctl start:啟動指定的監聽器
lsnrctl stop:關閉指定的監聽器
lsnrctl status:顯示監聽器的狀態。status命令顯示監聽器是不是活動的,日志與跟蹤文件的位置,監聽器已經持續運行了多長時間,以及監聽器所監聽的任務。
ss命令可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。但ss的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。ss是Socket Statistics的縮寫。
-t, --tcp #顯示tcp套接字
-n, --numeric #不解析服務名
-l, --listening #顯示監聽狀態的socket
15…以靜默方式建立新庫,同時也建立一個對應的實例(安裝數據庫)
su - oracle
vim /home/db/oracle/etc/dbca.rsp
模板1這是我本來想用的,后來報錯,用了簡單的模板2就行了
[GENERAL]
oracle版本,不能更改
RESPONSEFILE_VERSION = “11.2.0”
Description : Type of operation
操作類型:可選有創建數據庫,從數據庫創建模版,創建克隆模版,刪除數據庫,配置數據庫,添加實例(只限RAC),刪除實例(只限RAC),創建pdb,拔出pdb,刪除pdb,配置pdb
OPERATION_TYPE = “createDatabase”
[CREATEDATABASE]
Description : Global database name of the database
全局數據庫的名字=SID+主機域名
第三方工具鏈接數據庫的時候使用的service名稱
GDBNAME = “orcl”
Description : System identifier (SID) of the database
對應的實例名字
SID = “orcl”
Description : Name of the template
建庫用的模板文件
TEMPLATENAME = “General_Purpose.dbc”
Description : Password for SYS user
SYS, 數據庫管理帳戶
SYSPASSWORD = “oracle”
Description : Password for SYSTEM user
SYSTEM, 數據庫管理帳戶
SYSTEMPASSWORD = “oracle”
Description : Password for SYSMAN user
SYSMAN,企業管理器帳戶
SYSMANPASSWORD = “oracle”
Description : Password for DBSNMP user
DBSNMP,目錄集成平臺用戶
DBSNMPPASSWORD = “oracle”
Description : Location of the data file’s
數據文件存放目錄
DATAFILEDESTINATION =/home/db/oracle/oradata
Description : Location of the data file’s
恢復數據存放目錄
RECOVERYAREADESTINATION=/home/db/oracle/fast_recovery_area
Description : Character set of the database
字符集,重要!!! 建庫后一般不能更改,所以建庫前要確定清楚。
(CHARACTERSET = “AL32UTF8” NATIONALCHARACTERSET= “UTF8”)
CHARACTERSET = “AL32UTF8”
Description : total memory in MB to allocate to Oracle
oracle內存1638MB,物理內存2G*80%
TOTALMEMORY = “1638”
模板2:
[GENERAL]
RESPONSEFILE_VERSION = “11.2.0”
OPERATION_TYPE = “createDatabase”
[CREATEDATABASE]
GDBNAME = “orcl”
SID = “orcl”
TEMPLATENAME = “/home/db/oracle/product/11.2.0/assistants/dbca/templates/General_Purpose.dbc”
CHARACTERSET = “AL32UTF8”
開始安裝數據庫實例:
dbca -silent -responseFile /home/db/oracle/etc/dbca.rsp
模板一執行后報錯
Exception in thread “main” java.lang.NullPointerException
at oracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88)atoracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88) at oracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88)atoracle.sysman.assistants.util.INIFileIniSection.addPair(INIFile.java:225)
at oracle.sysman.assistants.util.INIFile.readINIFile(INIFile.java:827)
at oracle.sysman.assistants.util.INIFile.getProfileString(INIFile.java:439)
at oracle.sysman.assistants.dbca.backend.CommandLineArguments.processResponseFile(CommandLineArguments.java:4340)
at oracle.sysman.assistants.dbca.backend.CommandLineArguments.process(CommandLineArguments.java:3564)
at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:109)
at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:184)
百度了問題是沒有安裝jdk,于是安裝了java se以后,還是報這個錯…
百度說/home/db/oracle/cfgtoollogs/下可看日志,結果也沒找到,后來使用模板2,執行成功了,Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file “/opt/oracle/cfgtoollogs/dbca/orcl/orcl.log” for further details.
安裝完進行實例進程檢查:
ps -ef | grep ora_ | grep -v grep
oracle 3977 1 0 22:44 ? 00:00:00 ora_pmon_orcl
oracle 3979 1 0 22:44 ? 00:00:00 ora_vktm_orcl
oracle 3983 1 0 22:44 ? 00:00:00 ora_gen0_orcl
oracle 3985 1 0 22:44 ? 00:00:00 ora_diag_orcl
oracle 3987 1 0 22:44 ? 00:00:00 ora_dbrm_orcl
oracle 3989 1 0 22:44 ? 00:00:00 ora_psp0_orcl
oracle 3991 1 0 22:44 ? 00:00:00 ora_dia0_orcl
oracle 3993 1 0 22:44 ? 00:00:00 ora_mman_orcl
oracle 3995 1 0 22:44 ? 00:00:00 ora_dbw0_orcl
oracle 3997 1 0 22:44 ? 00:00:00 ora_lgwr_orcl
oracle 3999 1 0 22:44 ? 00:00:00 ora_ckpt_orcl
oracle 4001 1 0 22:44 ? 00:00:00 ora_smon_orcl
oracle 4003 1 0 22:44 ? 00:00:00 ora_reco_orcl
oracle 4005 1 0 22:44 ? 00:00:00 ora_mmon_orcl
oracle 4007 1 0 22:44 ? 00:00:00 ora_mmnl_orcl
oracle 4009 1 0 22:44 ? 00:00:00 ora_d000_orcl
oracle 4011 1 0 22:44 ? 00:00:00 ora_s000_orcl
再次查看監聽狀態:
$ lsnrctl status
**在查看監聽狀態是可能會有以下錯誤
(1)TNS-12545: Connect failed because target host or object does not exist
這個是修改了機器的主機名,但host和listener.ora文件并沒有修改,因此需要修改、etc/host和監聽/home/db/oracle/product/11.2.0/network/adminlistener.ora。使得其與hostname命令查看的結果一致。修改后,執行lsnrctl start重新啟動監聽
名詞解釋:
**數據庫實例
用Oracle官方描述:實例是訪問Oracle數據庫所需的一部分計算機內存和輔助處理后臺進程,是由進程和這些進程所使用的內存(SGA)所構成一個集合。
其實就是用來訪問和使用數據庫的一塊進程,它只存在于內存中。就像Java中new出來的實例對象一樣。
我們訪問Oracle都是訪問一個實例,但這個實例如果關聯了數據庫文件,就是可以訪問的,如果沒有,就會得到實例不可用的錯誤。
實例名指的是用于響應某個數據庫操作的數據庫管理系統的名稱。她同時也叫SID。實例名是由參數instance_name決定的。
查詢當前數據庫實例名:
select instance_name from v$instance;
數據庫實例名(instance_name)用于對外部連接。在操作系統中要取得與數據庫的聯系,必須使用數據庫實例名。比如我們作開發,要連接數據庫,就得連接數據庫實例名:
jdbc:oracle:thin:@localhost:1521:orcl(orcl就為數據庫實例名)
一個數據庫可以有多個實例,在作數據庫服務集群的時候可以用到。
15.6、linux下創建oracle用戶表空間
就是在已有的數據庫實例上創建一個新的帳號,訪問一些新的表。安裝完之后是沒有自定義的用戶名賬號的。
操作步驟如下:
(1)登錄linux,以oracle用戶登錄(如果是root用戶登錄的,登錄后用 su - oracle命令切換成oracle用戶)
(2)以sysdba方式來打開sqlplus,命令如下: sqlplus “/as sysdba”
(3)查看我們常規將用戶表空間放置位置:執行如下sql:
select name from v$datafile
(4)創建用戶表空間:
CREATE TABLESPACE NOTIFYDB DATAFILE ‘/home/oracle/app/oradata/orcl/scsdb.dbf’ SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
(5)創建用戶,指定密碼和上邊創建的用戶表空間
CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
(6)賦予權限
grant connect,resource to scs;
grant unlimited tablespace to scs;
grant create database link to scs;
grant select any sequence,create materialized view to scs;
–經過以上操作,我們就可以使用scs/scs登錄指定的實例,創建我們自己的表了
ps:第一次執行sql得時候提示了:
ERROR at line 1:ORA-01109: database not open
百度了一下,發現是數據庫實例狀態不對,執行 select status from v$instance查看數據庫實例狀態為mounted,執行alter database open將實例狀態置為open就能順利執行sql了。
實例狀態:nomount->mount->open
nomount:此時實例開啟,分配SGA、啟動一些后臺程序
mount:連接上數據庫,但此時僅限數據庫管理員操作數據庫
open:Oracle數據可以真正的對外服務
15.7使用plsql遠程連接服務器oracle服務
一開始配置好了plsql后死活都連接不上oracle服務,還覺得奇怪,ps一下進程也是正常運行,netstat端口也起來了,后來telnet一下1521端口發現不通,發現是防火墻攔截住了,放開一下就行;另外如果使用得得是云服務器,需要在網絡安全組策略中放開1521端口得訪問,否則依然是不能被訪問到。
總結
以上是生活随笔為你收集整理的阿里云服务器安装oracle11g-整理实战各路大神汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新款云开发趣味测试小程序源码+功能超多
- 下一篇: 动态时间规整算法: 从DTW到FastD