在有些情況起暮,服務(wù)器是的操作系統(tǒng)是最小安裝的,最小安裝并不包括圖形界面艇挨,網(wǎng)上很多Oracle的安裝文章都是在有圖形界面下完成的残炮,本篇文章介紹如何在非圖形界面下安裝Oracle,再安裝完畢后總結(jié)了日常的啟動(dòng)和關(guān)閉數(shù)據(jù)庫的方式缩滨,同時(shí)也綜合總結(jié)了sqlplus的一些可以改進(jìn)的方法和navicat遠(yuǎn)程連接數(shù)據(jù)庫的時(shí)候遇到的問題以及對(duì)應(yīng)的解決方案势就,本文部分素材、方法步驟來源于網(wǎng)絡(luò)脉漏,再結(jié)合本人實(shí)踐而得出的結(jié)果苞冯,來源資料在文末給出
文章目錄
- 一、安裝環(huán)境
- 二侧巨、安裝包下載
- 三抱完、環(huán)境配置準(zhǔn)備
- 四、安裝部署及配置
- 五刃泡、數(shù)據(jù)庫啟動(dòng)與關(guān)閉
- 六巧娱、sqlplus改進(jìn)
- 七、navicat遠(yuǎn)程數(shù)據(jù)庫遇到的問題及解決方案
一烘贴、安裝環(huán)境
以下安裝環(huán)境是在虛擬機(jī)測(cè)試環(huán)境禁添,僅供參考
操作系統(tǒng):CentOS 7
內(nèi)存:2G
CPU:雙核
硬盤:50G
二、安裝包下載
1桨踪、百度“Oracle”老翘,第一個(gè)結(jié)果進(jìn)到官網(wǎng)
2、依次點(diǎn)擊菜單->開發(fā)人員->數(shù)據(jù)庫
3锻离、在下載一欄選擇Oracle
4铺峭、點(diǎn)擊同意協(xié)議,然后找到對(duì)應(yīng)的版本點(diǎn)擊file 1
之后就會(huì)進(jìn)入下載界面汽纠,如果提示需要注冊(cè)的話那就注冊(cè)一個(gè)賬號(hào)就好了卫键,注冊(cè)是免費(fèi)的
三、環(huán)境配置準(zhǔn)備
在下載的同時(shí)可以在服務(wù)器上準(zhǔn)備一下需要安裝的環(huán)境
1虱朵、關(guān)閉防火墻
# systemctl stop firewalld.service --關(guān)閉防火墻
# systemctl disable firewalld.service -- 禁止防火墻開機(jī)啟動(dòng)
2莉炉、關(guān)閉selinux
# setenforce 0
# vim /etc/selinux/config -- 編輯文件
文件中設(shè)置SELINUX=disabled
修改host名稱(其實(shí)可以省略)
# vim /etc/hosts
在文件末尾加上
192.168.15.206 oracleVM
3钓账、安裝必要的依賴包
期間可能會(huì)出現(xiàn)錯(cuò)誤的情況,執(zhí)行多幾次就好了
# 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
安裝完后檢查是否安裝成功絮宁,成功是31個(gè)包
# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
4梆暮、創(chuàng)建用戶和用戶組
創(chuàng)建oinstall和dba組
# groupadd oinstall
# groupadd dba
創(chuàng)建Oracle用戶
# useradd -g oinstall -G dba oracle
設(shè)置Oracle用戶密碼
# passwd oracle
查看創(chuàng)建結(jié)果
# id oracle
5、修改內(nèi)核參數(shù)(根據(jù)需要修改)
編輯打開配置文件
# vim /etc/sysctl.conf
在文件中加上:
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=524288
kernel.shmmax=2147483647
kernel.sem=250 32000 100 128
kernel.shmmni=4096
kernel.panic_on_oops=1
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
net.ipv4.conf.all.rp_filter=2
net.ipv4.conf.default.rp_filter=2
fs.aio-max-nr=1048576
net.ipv4.ip_local_port_range=9000 65500
付上各個(gè)參數(shù)說明:
fs.aio-max-nr:
此參數(shù)限制并發(fā)未完成的請(qǐng)求绍昂,應(yīng)該設(shè)置避免I/O子系統(tǒng)故障啦粹。
fs.file-max:
該參數(shù)決定了系統(tǒng)中所允許的文件句柄最大數(shù)目,文件句柄設(shè)置代表linux系統(tǒng)中可以打開的文件的數(shù)量窘游。
kernel.shmall:
該參數(shù)控制可以使用的共享內(nèi)存的總頁數(shù)唠椭。Linux共享內(nèi)存頁大小為4KB,共享內(nèi)存段的大小都是共享內(nèi)存頁大小的整數(shù)倍。一個(gè)共享內(nèi)存段的最大大小是16G张峰,那么需要共享內(nèi)存頁數(shù)是16GB/4KB=16777216KB /4KB=4194304(頁)泪蔫,也就是64Bit系統(tǒng)下16GB物理內(nèi)存棒旗,設(shè)置kernel.shmall = 4194304才符合要求.
kernel.shmmax:
是核心參數(shù)中最重要的參數(shù)之一喘批,用于定義單個(gè)共享內(nèi)存段的最大值。設(shè)置應(yīng)該足夠大铣揉,設(shè)置的過低可能會(huì)導(dǎo)致需要?jiǎng)?chuàng)建多個(gè)共享內(nèi)存段饶深,這樣可能導(dǎo)致系統(tǒng)性能的下降。至于導(dǎo)致系統(tǒng)下降的主要原因?yàn)樵趯?shí)例啟動(dòng)以及ServerProcess創(chuàng)建的時(shí)候逛拱,多個(gè)小的共享內(nèi)存段可能會(huì)導(dǎo)致當(dāng)時(shí)輕微的系統(tǒng)性能的降低(在啟動(dòng)的時(shí)候需要去創(chuàng)建多個(gè)虛擬地址段敌厘,在進(jìn)程創(chuàng)建的時(shí)候要讓進(jìn)程對(duì)多個(gè)段進(jìn)行“識(shí)別”,會(huì)有一些影響)朽合,但是其他時(shí)候都不會(huì)有影響俱两。
官方建議值:
32位linux系統(tǒng):可取最大值為4GB(4294967296bytes)-1byte,即4294967295曹步。建議值為多于內(nèi)存的一半宪彩,所以如果是32為系統(tǒng),一般可取值為4294967295讲婚。
64位linux系統(tǒng):可取的最大值為物理內(nèi)存值-1byte尿孔,建議值為多于物理內(nèi)存的一半,例如筹麸,如果為12GB物理內(nèi)存活合,可取1210241024*1024-1=12884901887。
kernel.shmmni:
該參數(shù)是共享內(nèi)存段的最大數(shù)量物赶。shmmni缺省值4096白指,一般肯定是夠用了。
kernel.sem:
以kernel.sem = 250 32000 100 128為例:
250是參數(shù)semmsl的值酵紫,表示一個(gè)信號(hào)量集合中能夠包含的信號(hào)量最大數(shù)目侵续。
32000是參數(shù)semmns的值倔丈,表示系統(tǒng)內(nèi)可允許的信號(hào)量最大數(shù)目。
100是參數(shù)semopm的值状蜗,表示單個(gè)semopm()調(diào)用在一個(gè)信號(hào)量集合上可以執(zhí)行的操作數(shù)量需五。
128是參數(shù)semmni的值,表示系統(tǒng)信號(hào)量集合總數(shù)轧坎。
net.ipv4.ip_local_port_range:
表示應(yīng)用程序可使用的IPv4端口范圍宏邮。
net.core.rmem_default:
表示套接字接收緩沖區(qū)大小的缺省值。
net.core.rmem_max:
表示套接字接收緩沖區(qū)大小的最大值缸血。
net.core.wmem_default:
表示套接字發(fā)送緩沖區(qū)大小的缺省值蜜氨。
net.core.wmem_max:
表示套接字發(fā)送緩沖區(qū)大小的最大值。
使配置文件生效
# sysctl -p
6捎泻、修改配置
(1)打開并編輯文件/etc/security/limits.conf
# vim /etc/security/limits.conf
在文件末尾加上:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
第1行是設(shè)置進(jìn)程數(shù)軟限制飒炎;
第2行是設(shè)置進(jìn)程數(shù)硬限制;
第3行是設(shè)置文件數(shù)軟限制笆豁;
第4行是設(shè)置文件數(shù)硬限制
(2)打開并編輯文件/etc/pam.d/login
# vim /etc/pam.d/login
添加以下內(nèi)容
session required /lib64/security/pam_limits.so
session required pam_limits.so
(3)打開并編輯文件/etc/profile
# vim /etc/profile
在文件末尾添加以下內(nèi)容
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
(4)創(chuàng)數(shù)據(jù)庫目錄
# mkdir -p /database/oracle
# chown -R oracle:oinstall /database/oracle/
# chmod -R 775 /database/oracle/
(5)配置Oracle用戶
切換到oracle用戶下
# su - oracle
打開并編輯環(huán)境變量文件郎汪,配置oracle用戶環(huán)境變量
$ vim ~/.bash_profile
在末尾添加
export ORACLE_BASE=/database/oracle/oracle
export ORACLE_SID=orcl
使配置生效
$ source ~/.bash_profile
四、安裝部署及配置
1闯狱、上傳Oracle安裝包
創(chuàng)建一個(gè)文件夾
# mkdir /home/oracle/oradb
2煞赢、安裝解壓工具
切換到root用戶
# su - root
安裝解壓工具
# yum install -y unzip zip
3、解壓文件
切換到oracle用戶
# su - oracle
解壓文件
$ unzip xxx.zip
4哄孤、復(fù)制相應(yīng)的模板
為了不影響原來的文件內(nèi)容(后面文件腳本內(nèi)容會(huì)作修改)照筑,將相應(yīng)的模板復(fù)制一份,當(dāng)然也可以省略這步
$ cd /home/oracle
$ mkdir etc
$ cp /home/oracle/oradb/database/response/* /home/oracle/etc/
切換到root用戶
# su - root
設(shè)置權(quán)限
# chmod 700 /home/oracle/etc/*.rsp
5瘦陈、編輯文件內(nèi)容
切換到oracle用戶
# su - oracle
打開編輯db_install.rsp
$ vim /home/oracle/etc/db_install.rsp
找出以下項(xiàng)凝危,并作修改(根據(jù)個(gè)人實(shí)際情況修改,比如我這邊的oracle的目錄是做過調(diào)整的)
oracle.install.option=INSTALL_DB_SWONLY // 安裝類型
UNIX_GROUP_NAME=oinstall // 安裝組
INVENTORY_LOCATION=/database/oracle/oraInventory //INVENTORY目錄(不填就是默認(rèn)值)
ORACLE_HOME=/database/oracle/oracle/product/12/db_1
ORACLE_BASE=/database/oracle/oracle
oracle.install.db.InstallEdition=EE // 企業(yè)版本
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=oinstall
oracle.install.db.OSDGDBA_GROUP=oinstall
oracle.install.db.OSKMDBA_GROUP=oinstall
oracle.install.db.OSRACDBA_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //數(shù)據(jù)庫類型
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.memoryLimit=81920 //自動(dòng)管理內(nèi)存的內(nèi)存(M)
oracle.install.db.config.starterdb.password.ALL=oracle//設(shè)定所有數(shù)據(jù)庫用戶使用同一個(gè)密碼
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
6晨逝、開始安裝
執(zhí)行db_install.rsp文件
$ cd /home/oracle/oradb/database
$ ./runInstaller -ignoreSysPrereqs -ignorePrereq -waitforcompletion \
-showProgress -silent -responseFile /home/oracle/database/response/db_install.rsp
在安裝快完成的時(shí)候會(huì)提示要切換到root用戶執(zhí)行兩個(gè)腳本蛾默,這步跟著照做就是
$ su - root
# /database/oracle/oraInventory/orainstRoot.sh
# /database/oracle/oracle/product/12/db_1/root.sh
7、修改oracle用戶環(huán)境變量
切換到oracle用戶咏花,打開并編輯用戶編輯變量文件
# su - oracle
$ vim ~/.bash_profile
按需求將以下內(nèi)容加上
export ORACLE_BASE=/database/oracle/oracle
export ORACLE_SID=orcl
export ROACLE_PID=oral12
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/database/oracle/oracle/product/12/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
使配置生效
$ source ~/.bash_profile
配置監(jiān)聽
$ netca /silent /responsefile /home/oracle/etc/netca.rsp
啟動(dòng)監(jiān)聽
$ lsnrctl start
修改靜默建庫文件
$ vim /home/oracle/etc/dbca.rsp
其中文件內(nèi)容修改如下(根據(jù)實(shí)際情況修改)
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=orcl
sid=orcl
databaseConfigType=SI
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=orclpdb
templateName=/database/oracle/oracle/product/12/db_1/assistants/dbca/templates/General_Purpose.dbc
emExpressPort=5500
omsPort=0
characterSet=AL32UTF8
listeners=LISTENER
memoryPercentage=40
automaticMemoryManagement=false
totalMemory=0
執(zhí)行靜默建庫
$ dbca -silent -createDatabase -responseFile /home/oracle/etc/dbca.rsp
此時(shí)數(shù)據(jù)庫已安裝成功
8趴生、登進(jìn)數(shù)據(jù)庫開啟實(shí)例
$ sqlplus / as sysdba
SQL>startup
五、數(shù)據(jù)庫啟動(dòng)與關(guān)閉
概述:只有具備sysdba和sysoper系統(tǒng)特權(quán)的用戶才能啟動(dòng)和關(guān)閉數(shù)據(jù)庫昏翰。
在啟動(dòng)數(shù)據(jù)庫之前應(yīng)該啟動(dòng)監(jiān)聽程序苍匆,否則就不能利用命令方式來管理數(shù)據(jù)庫,包括啟動(dòng)和關(guān)閉數(shù)據(jù)庫棚菊。
雖然數(shù)據(jù)庫正常運(yùn)行浸踩,但如果沒有啟動(dòng)監(jiān)聽程序,客戶端就不能連接到數(shù)據(jù)庫统求。
1检碗、啟動(dòng)
Oracle數(shù)據(jù)庫的完整啟動(dòng)過程包含以下3個(gè)步驟:
簡(jiǎn)單地說据块,就是:啟動(dòng)實(shí)例-->加載數(shù)據(jù)庫-->打開數(shù)據(jù)庫.
具體說明:
1.創(chuàng)建并啟動(dòng)與數(shù)據(jù)庫對(duì)應(yīng)的實(shí)例。
在啟動(dòng)實(shí)例時(shí)折剃,將為實(shí)例創(chuàng)建一系列后臺(tái)進(jìn)程和服務(wù)進(jìn)程另假,并且在內(nèi)存中創(chuàng)建SGA區(qū)等內(nèi)存結(jié)構(gòu)。在實(shí)例啟動(dòng)的過程中只會(huì)使用到初始化參數(shù)文件怕犁,數(shù)據(jù)庫是否存在對(duì)實(shí)例的啟動(dòng)沒有影響边篮。如果初化參數(shù)設(shè)置有誤,實(shí)例將無法啟動(dòng)奏甫。
2.為實(shí)例加載數(shù)據(jù)庫戈轿。
加載數(shù)據(jù)庫時(shí)實(shí)例將打開數(shù)據(jù)庫的控制文件,從控制文件中獲取數(shù)據(jù)庫名稱阵子、數(shù)據(jù)文件的位置和名稱等有關(guān)數(shù)據(jù)庫物理結(jié)構(gòu)的信息思杯,為打開數(shù)據(jù)庫做好準(zhǔn)備。如果控制文件損壞挠进,則實(shí)例將無法加載數(shù)據(jù)庫色乾。在加載數(shù)據(jù)庫階段,實(shí)例并不會(huì)打開數(shù)據(jù)庫的物理文件----數(shù)據(jù)文件和重做日志文件奈梳。
3.將數(shù)據(jù)庫設(shè)置為打開狀態(tài)杈湾。
打開數(shù)據(jù)庫時(shí)解虱,實(shí)例將打開所有處于聯(lián)機(jī)狀態(tài)的數(shù)據(jù)文件和重做日志文件攘须。控制文件中的任何一個(gè)數(shù)據(jù)文件或重做日志文件無法正常打開殴泰,數(shù)據(jù)庫都將返回錯(cuò)誤信息于宙,這時(shí)需要進(jìn)行數(shù)據(jù)庫恢復(fù)。
只有將數(shù)據(jù)庫設(shè)置為打開狀態(tài)后悍汛,數(shù)據(jù)庫才處于正常狀態(tài)捞魁,這時(shí)普通用戶才能夠訪問數(shù)據(jù)庫。在很多情況下离咐,啟動(dòng)數(shù)據(jù)庫時(shí)并不是直接完成上述3個(gè)步驟谱俭,而是逐步完成的,然后執(zhí)行必要的管理操作宵蛀,最后才使數(shù)據(jù)庫進(jìn)入正常運(yùn)行狀態(tài)昆著。所以,才有了各種不同的啟動(dòng)模式用于不同的數(shù)據(jù)庫維護(hù)操作术陶。
因?yàn)镺racle數(shù)據(jù)庫啟動(dòng)過程中不同的階段可以對(duì)數(shù)據(jù)庫進(jìn)行不同的維護(hù)操作凑懂,對(duì)應(yīng)我們不同的需求,所以就需不同的模式啟動(dòng)數(shù)據(jù)庫梧宫。
各種模式詳解:
1.NoMount 模式(啟動(dòng)實(shí)例不加載數(shù)據(jù)庫)
命令:startup nomount
講解:這種啟動(dòng)模式只會(huì)創(chuàng)建實(shí)例接谨,并不加載數(shù)據(jù)庫摆碉,Oracle僅為實(shí)例創(chuàng)建各種內(nèi)存結(jié)構(gòu)和服務(wù)進(jìn)程,不會(huì)打開任何數(shù)據(jù)文件脓豪。在NoMount模式下巷帝,只能訪問那些與SGA區(qū)相關(guān)的數(shù)據(jù)字典視圖,包括V$PARAMETER扫夜、V$SGA锅睛、V$PROCESS 和 V$SESSION等,這些視圖中的信息都是從SGA區(qū)中獲取的历谍,與數(shù)據(jù)庫無關(guān)现拒。非安裝啟動(dòng),這種方式啟動(dòng)下可執(zhí)行:重建控制文件望侈、重建數(shù)據(jù)庫印蔬、讀取init.ora文件,啟動(dòng)instance脱衙,即啟動(dòng)SGA和后臺(tái)進(jìn)程侥猬,這種啟動(dòng)只需要init.ora文件。
模式用途:
(1)創(chuàng)建新數(shù)據(jù)庫捐韩;
(2)重建控制文件退唠。
2.Mount模式(加載數(shù)據(jù)庫但不打開數(shù)據(jù)庫)
命令:startup mount
講解:這種啟動(dòng)模式將為實(shí)例加載數(shù)據(jù)庫,但保持?jǐn)?shù)據(jù)庫為關(guān)閉狀態(tài)荤胁。因?yàn)榧虞d數(shù)據(jù)庫時(shí)需要打開數(shù)據(jù)庫控制文件帮碰,但數(shù)據(jù)文件和重做日志文件都都無法進(jìn)行讀寫撰糠,所以用戶還無法對(duì)數(shù)據(jù)庫進(jìn)行操作。 在Mount模式下,只能訪問那些與控制文件相關(guān)的數(shù)據(jù)字典視圖投慈,包括V$THREAD衣洁、V$CONTROLFILE郊丛、V$DATABASE虫给、V$DATAFILE 和 V$LOGFILE等,這些視圖都是從控制文件中獲取的辫封。
模式用途:
(1)重命名數(shù)據(jù)文件硝枉;
(2)添加、刪除或重命名重做日志文件倦微;
(3)執(zhí)行數(shù)據(jù)庫完全恢復(fù)操作妻味;
(4)改變數(shù)據(jù)庫的歸檔模式。
3.Open模式(正常打開數(shù)據(jù)庫)
命令:startup [open]
講解:正常按3個(gè)步驟啟動(dòng)數(shù)據(jù)庫璃诀。
模式用途:平時(shí)不對(duì)數(shù)據(jù)庫做什么維護(hù)弧可,像只做應(yīng)用開發(fā),用這個(gè)模式就好了。
4.強(qiáng)制啟動(dòng)模式
命令:startup force
用途&講解:在某些情況下棕诵,使用前面的各種模式都無法成功啟動(dòng)數(shù)據(jù)庫時(shí)裁良,可以嘗試強(qiáng)制啟動(dòng)模式。
使用Alter Database語句校套,還可以在各啟動(dòng)模式間切換价脾。并且,還可以對(duì)數(shù)據(jù)庫設(shè)置不同的狀態(tài)用于不同的操作笛匙,如受/非受限抽狀態(tài)侨把、只讀。
使用Alter Database語句妹孙,在各啟動(dòng)模式間切換秋柄。
(1)從NoMount模式切換到Mount模式(沒有從mount切換到nomount的):
命令:ALTER DATABASE MOUNT;
(2)當(dāng)數(shù)據(jù)庫狀態(tài)為關(guān)閉時(shí),切換到Open模式
命令:ALTER DATABASE OPEN;
(3)在Open模式下蠢正,還可以選擇將數(shù)據(jù)庫設(shè)置為非受限狀態(tài)和受限狀態(tài)骇笔。
命令:
在啟動(dòng)Open模式時(shí),添加restrict關(guān)鍵字:startup restrict
設(shè)置或取消受限狀態(tài):alter system enable\disable restricted session;
講解:
非受限狀態(tài)嚣崭,就是我們平時(shí)應(yīng)用程序開發(fā)用到的狀態(tài)笨触。
受限狀態(tài),當(dāng)打開的數(shù)據(jù)庫被設(shè)置為受限狀態(tài)時(shí)雹舀,只有Create Session 和 Restricted Session系統(tǒng)權(quán)限 或者 具有SYSDBA 和 SYSPORE 系統(tǒng)權(quán)限的用戶才能連接到數(shù)據(jù)庫芦劣。但進(jìn)入受限狀態(tài)后,系統(tǒng)中仍然可能會(huì)存在活動(dòng)的普通用戶會(huì)話说榆。
受限狀態(tài)用途:
(1)執(zhí)行數(shù)據(jù)導(dǎo)入或?qū)С霾僮鳎?br>
(2)暫時(shí)拒絕普通用戶訪問數(shù)據(jù)庫虚吟;
(3)進(jìn)行數(shù)據(jù)庫移植或升級(jí)操作。
(4) 只讀狀態(tài)
設(shè)置只讀命令:alter database open read only;
取消只讀命令:alter database open read write;
用途&講解:當(dāng)一個(gè)正常打開的數(shù)據(jù)庫被設(shè)置為只讀狀態(tài)時(shí)娱俺,用戶只能查詢數(shù)據(jù)稍味,但不能以任何方式對(duì)數(shù)據(jù)庫對(duì)象進(jìn)行修改废麻。處于只讀狀態(tài)荠卷,可能保證數(shù)據(jù)文件和重做日志文件中的內(nèi)容不被修改,但是并不限制那些不會(huì)寫入數(shù)據(jù)文件與重做日志文件的操作烛愧。
2油宜、關(guān)閉
與數(shù)據(jù)庫啟動(dòng)一樣,關(guān)閉數(shù)據(jù)庫與實(shí)例也分為3步:關(guān)閉數(shù)據(jù)庫-->實(shí)例卸載數(shù)據(jù)庫--->終止實(shí)例怜姿。
詳細(xì)步驟為:
(1)關(guān)閉數(shù)據(jù)庫慎冤,oracle將重做日志高速緩存中的內(nèi)容寫入重做日志文件,并且將數(shù)據(jù)庫高速緩存中被改動(dòng)過的數(shù)據(jù)寫入數(shù)據(jù)文件沧卢,然后再關(guān)閉所有的數(shù)據(jù)文件和重做日志文件蚁堤,這時(shí)數(shù)據(jù)庫的控制文件仍然處于打開狀態(tài),但是由于數(shù)據(jù)庫處于關(guān)閉狀態(tài)但狭,所以用戶無法訪問數(shù)據(jù)庫披诗。
(2)卸載數(shù)據(jù)庫撬即,關(guān)閉數(shù)據(jù)庫后,例程才能被卸載呈队,控制文件再這個(gè)時(shí)候被關(guān)閉剥槐,但例程仍然存在 。
(3)終止例程宪摧,進(jìn)程終止粒竖,分配給例程的內(nèi)存sga區(qū)被回收。
1.Nomal(正常關(guān)閉方式)
命令:shutdown nomal
講解:正常方式關(guān)閉數(shù)據(jù)時(shí)几于,Oracle執(zhí)行如下操作:
(1)阻止任何用戶建立新的連接蕊苗。
(2)等待當(dāng)前所有正在連接的用戶主動(dòng)斷開連接(此方式下Oracle不會(huì)立即斷掉當(dāng)前用戶的連接,這些用戶仍然操作相關(guān)的操作)
(3)一旦所有的用戶都斷開連接沿彭,則立即關(guān)閉岁歉、卸載數(shù)據(jù)庫,并終止實(shí)例膝蜈。(所以锅移,一般以正常方式關(guān)閉數(shù)據(jù)庫時(shí),應(yīng)該通知所有在線的用戶盡快斷開連接)
2.Immediate(立即關(guān)閉方式)
命令:shutdown immediate
講解:
(1)阻止任何用戶建立新的連接饱搏,同時(shí)阻止當(dāng)前連接的用戶開始任何新的事務(wù)非剃。
(2)Oracle不等待在線用戶主動(dòng)斷開連接,強(qiáng)制終止用戶的當(dāng)前事務(wù)推沸,將任何未提交的事務(wù)回退备绽。(如果存在太多未提交的事務(wù),此方式將會(huì)耗費(fèi)很長時(shí)間終止和回退事務(wù))
(3)直接關(guān)閉鬓催、卸載數(shù)據(jù)庫肺素,并終止實(shí)例。
3.Transactional(事務(wù)關(guān)閉方式)
命令:shutdown transactional
講解:這種方式介于正常關(guān)閉方式跟立即關(guān)閉方式之間宇驾,響應(yīng)時(shí)間會(huì)比較快倍靡,處理也將比較得當(dāng)。執(zhí)行過程如下:
(1)阻止任何用戶建立新的連接课舍,同時(shí)阻止當(dāng)前連接的用戶開始任何新的事務(wù)塌西。
(2)等待所有未提交的活動(dòng)事務(wù)提交完畢,然后立即斷開用戶的連接筝尾。
(3)直接關(guān)閉捡需、卸載數(shù)據(jù)庫,并終止實(shí)例筹淫。
4.Abort(終止關(guān)閉方式)
命令:shutdown abort
講解:這是比較粗暴的一種關(guān)閉方式站辉,當(dāng)前面3種方式都無法關(guān)閉時(shí),可以嘗試使用終止方式來關(guān)閉數(shù)據(jù)庫。但是以這種方式關(guān)閉數(shù)據(jù)庫將會(huì)丟失一部份數(shù)據(jù)信息饰剥,當(dāng)重新啟動(dòng)實(shí)例并打開數(shù)據(jù)庫時(shí)狸相,后臺(tái)進(jìn)程SMON會(huì)執(zhí)行實(shí)例恢復(fù)操作。一般情況下捐川,應(yīng)當(dāng)盡量避免使用這種方式來關(guān)閉數(shù)據(jù)庫脓鹃。執(zhí)行過程如下:
(1)阻止任何用戶建立新的連接,同時(shí)阻止當(dāng)前連接的用戶開始任何新的事務(wù)古沥。
(2)立即終止當(dāng)前正在執(zhí)行的SQL語句瘸右。
(3)任何未提交的事務(wù)均不被退名。
(4)直接斷開所有用戶的連接岩齿,關(guān)閉太颤、卸載數(shù)據(jù)庫,并終止實(shí)例盹沈。
3龄章、sqlplus登錄
- sqlplus / as sysdba
sqlplus / as sysdba
無需數(shù)據(jù)庫進(jìn)入可用狀態(tài),就可用用該命令登錄乞封,運(yùn)行startup來啟動(dòng)做裙。
sqlplus “/as sysdba”
sqlplus username/pwd@host/service_name
sqlplus tiger/scott@localhost/orcl
sqlplus tiger/scott@172.16.10.1:1521/orcl
以用戶名/密碼、IP:Port肃晚、服務(wù)名 為參數(shù)登錄锚贱。
- sqlplus /nolog
sqlplus /nolog
先使用sqlplus命令,而不連接數(shù)據(jù)庫关串,然后用conn命令登錄拧廊。
conn tiger/scott
conn tiger/scott@172.16.0.1/orcl
六、sqlplus改進(jìn)
概述:在默認(rèn)的sqlplus的使用過程中發(fā)現(xiàn)是比較難用的晋修,最好的例子就是不能用退格鍵以及掉出歷史命令的上下鍵吧碾,這里介紹退格鍵的改進(jìn),至于掉出歷史命令的上下鍵可參考文末的文章
切換至oracle用戶
# su - oracle
打開并編輯用戶環(huán)境變量配置文件
$ vim ~/.bash_profile
在文件末尾加上以下代碼并保存退出
stty erase ^h
使配置文件生效
$ source ~/.bash_profile
此時(shí)再進(jìn)入sqlplus測(cè)試發(fā)現(xiàn)墓卦,退格鍵已經(jīng)能用了
七倦春、navicat遠(yuǎn)程數(shù)據(jù)庫遇到的問題及解決方案
一般數(shù)據(jù)庫是安裝在遠(yuǎn)程服務(wù)器上,然后用本機(jī)的管理軟件去連接趴拧,此時(shí)需要配置一下
在oracle用戶下溅漾,打開并編輯listener.ora文件(一般在安裝目錄下)
$ vim /database/oracle/oracle/product/12/db_1/network/admin/listener.ora
然后將其中的HOST改為服務(wù)器的IP(這里為了保留之前的配置所以直接在文件后面復(fù)制了上面的配置然后作修改)
保存退出
打開并編輯tnsnames.ora文件
$ vim /database/oracle/oracle/product/12/db_1/network/admin/tnsnames.ora
跟上面操作一樣,將HOST改為服務(wù)器的IP
保存退出
然后重啟數(shù)據(jù)庫實(shí)例和數(shù)據(jù)庫監(jiān)聽著榴,此時(shí)可以用navicat來連接數(shù)據(jù)庫了
可能會(huì)遇到的錯(cuò)誤:
1、
ORA-12170:TNS:連接超時(shí)
檢查步驟及解決方法:
(1)從本機(jī)ping服務(wù)器IP是否能ping通
(2)使用tnsping或者telnet測(cè)試端口是否通暢
(3)服務(wù)器防火墻是否已關(guān)閉
(4)服務(wù)器selinux是否已關(guān)閉
(5)數(shù)據(jù)庫監(jiān)聽是否開啟
(6)如果是用PL/SQL的話屁倔,tns配置中脑又,host是否為服務(wù)器的IP
2、
ORA-28040:No matching authentication protocol
錯(cuò)誤原因是因?yàn)閚avicat的oci.dll版本不匹配,通常是因?yàn)榘姹具^低问麸,即低版本的oci.dll連接高版本的數(shù)據(jù)
根據(jù)下面步驟查看oci.dll的版本
可看到這個(gè)版本是10_2往衷,需要上官網(wǎng)找到最新的版本(截至到本篇文章的日期,最新版本是18_5)
地址:https://www.oracle.com/technetwork/database/database-technologies/instant-client/overview/index-4369172.html
下載好后解壓严卖,并找到以下三個(gè)文件席舍,然后替換掉原來版本的三個(gè)文件然后重啟navicat即可(10_2跟18_5的有兩個(gè)文件文件名會(huì)有點(diǎn)不同)
參考文章:
Oracle安裝:
https://www.cnblogs.com/pachulia/p/9261721.html
https://blog.csdn.net/zwl18210851801/article/details/80774980
oracle啟動(dòng)與關(guān)閉:
https://www.cnblogs.com/kevingrace/p/7694659.html
https://www.cnblogs.com/fiberhome/p/7414220.html
sqlplus改進(jìn):
https://www.cnblogs.com/mengfanrong/p/4680281.html
Oracle遠(yuǎn)程連接:
https://blog.csdn.net/kangguowei/article/details/53039195
https://blog.csdn.net/wanghailong_qd/article/details/85887825
https://www.cnblogs.com/gw666/p/7889287.html