oracle常見錯誤問題匯總
瀏覽量: 次 發(fā)布日期:2023-10-15 12:15:53
oracle常見錯誤問題匯總
以下內(nèi)容不光有解決問題步驟,還附帶問題講解,讀完之后可簡單進行問題的排查;
問題一
數(shù)據(jù)庫是open狀態(tài),但是遠程用問題,一般都是監(jiān)聽or tns配置問題
【linux版本】
查看監(jiān)聽狀態(tài):
[root@oracle]$ lsnrctl status
這種情況一般發(fā)生在服務器重啟或者斷電,重啟服務器之后沒有啟動監(jiān)聽導致,用
[root@oracle]$ lsnrctl start
命令啟動監(jiān)聽即可
留意紅線包起來的地方,剛啟動監(jiān)聽之后的第一時間,服務連不上數(shù)據(jù)庫是正常的,因為oracle數(shù)據(jù)庫每隔一分鐘才會把服務注冊到監(jiān)聽中去
服務已成功注冊進監(jiān)聽,一般情況下數(shù)據(jù)庫遠程鏈接就已經(jīng)沒問題了
注:如果此時數(shù)據(jù)庫本地鏈接沒問題,但是遠程連接不上,查看host=xxx;如果host=localhost,則把local改為本地ip就好
【windows版本】
報錯:在用PL/SQL Developer連接Oracle 11g時報錯“ORA-12541: TNS: 無監(jiān)聽程序”
解決方案:window+R 輸入cmd 鍵入netca
點擊下一步,重新配置即可
一路下一步,直到出現(xiàn)此界面,監(jiān)聽配置完成
如出現(xiàn)本地鏈接沒問題,但是遠程鏈接不上,解決方式同上linux操作系統(tǒng)的處理方式
問題二
如果數(shù)據(jù)庫是在linux操作系統(tǒng)上安裝的,靜默安裝之后一般沒有l(wèi)istener.ora文件【如果不做他用,不用配置監(jiān)聽文件監(jiān)聽服務也能啟動,但是牽扯到更換監(jiān)聽端口就必須要配置listenser.ora文件了。
【配置方式】
vi listener.ora 把一下代碼黏貼進去
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.88)(PORT=1555))))
注:LISTENER為監(jiān)聽名稱,HOST=xxx為本機IP,PORT:準備作為監(jiān)聽的端口號 默認1521
監(jiān)聽分為動態(tài)注冊和靜態(tài)注冊,以下是靜態(tài)注冊部分
優(yōu)點:服務端關(guān)庫時可以通過客戶端遠程起庫
1)靜態(tài)注冊要點
① 靜態(tài)注冊必須在listener.ora中描述(SID_List_監(jiān)聽器的名字=xxxxx)
② 實例不必啟動,靜態(tài)監(jiān)聽器也能注冊
③ 服務器啟動靜態(tài)監(jiān)聽后,可以通過遠程啟動數(shù)據(jù)庫
2)靜態(tài)注冊的描述分為兩部分內(nèi)容
① 網(wǎng)絡三要素:1、Protocal 2、Host 3、Port
② 服務名描述:GLOBAL_DBNAME:全局數(shù)據(jù)庫名(靜態(tài)注冊特征)
3)listener.ora配置示例
LSN2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.88)(PORT = 1522))
)
)
SID_LIST_LSN2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME=prod )
(ORACLE_HOME = /u01/oracle)
(SID_NAME =prod)
)
)
其中:
PROTOCOL指的是監(jiān)聽接收鏈接的協(xié)議;
HOST是指的監(jiān)聽運行的主機或者IP地址;
PORT指的是監(jiān)聽運行的端口;
SID_NAME指的是監(jiān)聽服務的實例名;
GLOBAL_NAME指的是監(jiān)聽服務的服務名;
ORACLE_HOME指的是監(jiān)聽服務的$ORACLE_HOME。
如果[監(jiān)聽名]和SID_LIST_[監(jiān)聽名]配置是成對出現(xiàn)的,這代表是靜態(tài)監(jiān)聽;如果listener.ora文件只有[監(jiān)聽名]的配置,監(jiān)聽就變成動態(tài)監(jiān)聽。
動態(tài)注冊:客戶端(sys用戶)只能在遠程數(shù)據(jù)庫啟動的情況下連接上,遠程數(shù)據(jù)庫關(guān)閉時客戶端連接不上遠程數(shù)據(jù)庫。
靜態(tài)注冊:無論遠程數(shù)據(jù)庫處于開啟還是關(guān)閉狀態(tài),客戶端(sys用戶)都可連接上。
靜態(tài)注冊可以在客戶端控制服務器端數(shù)據(jù)庫的啟停,而動態(tài)注冊則不可以,動態(tài)注冊的監(jiān)聽在實例關(guān)閉時會被注銷。
數(shù)據(jù)庫關(guān)閉的狀態(tài)下,只有sys用戶可連入數(shù)據(jù)庫,其他用戶不可連入。
我司沒有用靜態(tài)監(jiān)聽的機器,這里不多做贅述
問題三
數(shù)據(jù)庫常見錯誤之密碼問題
一般oracle用戶名的密碼都設定的是默認,盡管這樣,在長時間不更新密碼的情況下也會出現(xiàn)密碼過期的情況,進入數(shù)據(jù)庫,查看用戶的profile是哪個
查看用戶密碼的相應信息
大家注意,這樣的問題經(jīng)常出現(xiàn),因為密碼到期,導致各種服務都出現(xiàn)異常,紅線標注為密碼可用期限為180天,過期則自動失效。
將概要文件(如default)的密碼有效期由默認的180天修改成“無限制”
修改之后,解鎖過期導致不能登陸的用戶密碼
$sqlplus / as sysdba alter user 用戶名 identified by <原來的密碼> account unlock; #不用換新密碼
問題四
數(shù)據(jù)庫常見問題之空間爆滿導致數(shù)據(jù)庫無法鏈接
這種錯誤也會常見:
用工具鏈接服務器,然后df –h查看服務器已用空間
如果這里框起來的是100%的話,說明磁盤空間已用完
在數(shù)據(jù)庫層面能清理的數(shù)據(jù)只有備份文件和跟蹤日志
1、清理歸檔日志【在7*24的數(shù)據(jù)庫中,數(shù)據(jù)量通常情況下不是很大,而占用空間大的一般是
歸檔文件】
用dba用戶登陸oracle數(shù)據(jù)庫
查看歸檔存放路徑以及歸檔數(shù)量:archive log list
查到路徑之后,進入相應路徑,查看歸檔數(shù)量
之后du –sh 查看歸檔日志占用空間大小
生產(chǎn)環(huán)境一般都有上百G的歸檔日志
清理歸檔日志,切記:歸檔日志清理完之后,意味著數(shù)據(jù)不連續(xù)【歸檔之前的數(shù)據(jù)和清理歸檔之后的數(shù)據(jù)出現(xiàn)斷層,一旦發(fā)生數(shù)據(jù)庫崩潰,數(shù)據(jù)不能恢復,所有清理完之后一定要做數(shù)據(jù)庫全備份】
1. 用rman target / 命令進入相關(guān)窗口
2. 用delete archivelog all 命令清理歸檔文件
檢查歸檔路徑下的文件,歸檔確實刪除
由于我的測試環(huán)境做了物理dg所以只減少了0.1G的空間,但是在咱們的生產(chǎn)環(huán)境上做的時候,所有的歸檔都會刪除干凈。
做數(shù)據(jù)庫全備份【重中之重】
出現(xiàn)finish表示備份成功
咱們有一個版本的備份腳本只有備份功能,但是沒有刪除早期備份文件的功能,導致備份片數(shù)量一直累計,磁盤空間暴增,以下是解決方案,同樣
[root@oracle]$ rman target /
進入rman客戶端,用list backup 查看擠壓得所有備份片
之后delete backup 刪除之前得所有備份
經(jīng)檢查,之前得備份片確實被刪除了
問題五
數(shù)據(jù)庫沒有備份,沒有歸檔,由于服務器斷電造成數(shù)據(jù)庫打不開open狀態(tài)得處理方案
由于斷電導致的Oracle數(shù)據(jù)庫scn不一致導致數(shù)據(jù)庫無法修復的處理方式。
故障原因:斷電導致oracle數(shù)據(jù)文件的scn不一致,當前日志文件損壞,oracle的恢復機制靠的是日志文件前滾來恢復數(shù)據(jù)(顯示歸檔的重要性),數(shù)據(jù)文件一直,啟動數(shù)據(jù)庫,給oracle的pfile配置文件加兩個隱含參數(shù),強制啟動數(shù)據(jù)庫(使用隱含參數(shù)代表在scn不一致的情況下可強行啟動數(shù)據(jù)庫)
orcl.__db_cache_size=66303557632
orcl.__java_pool_size=1879048192
orcl.__large_pool_size=268435456
orcl.__oracle_base='/data/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=51539607552
orcl.__sga_target=77309411328
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=7516192768
orcl.__streams_pool_size=536870912
*.control_files='/data/app/oracle/oradata/orcl/control01.ctl','/data/app/oracle/oradata/orcl/control02.ctl'
*.db_name='orcl'
*.log_archive_dest_1='location=/data/app/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
*.log_archive_dest_2='service=orcl async VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.log_file_name_convert='/data/app/oracle/oradata/orcl','/data/app/oracle/oradata/orcl'
*.memory_target=128849018880
*.processes=2000
鏈接是用隱含參數(shù)啟動數(shù)據(jù)庫的方式:https://blog.csdn.net/lively1982/article/details/18267241
之前用了隱含參數(shù),oracle還是在mount狀態(tài)不能啟動到open狀態(tài)
加了
蘇州數(shù)據(jù)恢復打開數(shù)據(jù)庫
用exp system/oracle@orcl file=/orcl.dmp full=y 導出數(shù)據(jù)
等到新oracle數(shù)據(jù)庫搭建之后,用imp system/oracle file=orcl.dmp full=y 導入過程
歡迎關(guān)注:懸鐘Mr
. oracle11g修復,Oracle 11g TNS-12545錯誤排查與修復指南
. 希捷西數(shù)硬盤數(shù)據(jù)恢復,全方位解決方案與常見問題解析
. 達夢數(shù)據(jù)庫comment報錯,達夢數(shù)據(jù)庫comment錯誤解析與應對策略
. oracle數(shù)據(jù)庫數(shù)據(jù)恢復,Oracle數(shù)據(jù)庫數(shù)據(jù)恢復策略與實戰(zhàn)指南
. oracle數(shù)據(jù)文件損壞 怎么恢復,全面解析與實操步驟
. 聯(lián)想電腦硬盤壞了會出現(xiàn)什么情況,常見癥狀與應對策略
. oracle數(shù)據(jù)庫收費標準,全面了解授權(quán)模式與費用構(gòu)成
. oracle數(shù)據(jù)庫官網(wǎng),深入探索Oracle數(shù)據(jù)庫官網(wǎng)——您的數(shù)據(jù)庫學習與資源寶庫
. oracle快照恢復數(shù)據(jù),高效的數(shù)據(jù)保護與恢復策略
. oracle數(shù)據(jù)庫導入dmp,Oracle數(shù)據(jù)庫導入dmp文件詳解
. oracle數(shù)據(jù)庫基本知識,Oracle數(shù)據(jù)庫簡介
. oracle誤刪除數(shù)據(jù)恢復,Oracle數(shù)據(jù)庫誤刪除數(shù)據(jù)恢復指南
. oracle許可只能找oracle買嗎,是否只能從Oracle官方購買?
. 如何使用 Oracle 環(huán)境變量,什么是 Oracle 環(huán)境變量
. 聯(lián)想硬盤問題,聯(lián)想硬盤故障常見原因及解決方法
. oracle刪除的數(shù)據(jù)怎么恢復,Oracle數(shù)據(jù)庫中刪除數(shù)據(jù)后的恢復方法詳解
. oracle誤刪數(shù)據(jù)怎么恢復,Oracle誤刪數(shù)據(jù)恢復指南