oracle錯誤小結

jimmy1357發表於2014-02-26

1.Oralce 預設的使用者為:SYS,SYSTEM,scott,安裝時候要注意給他們解鎖設定密碼.

2.一般使用scott/tiger進入sqlplus或者isqlplus,因為命令列提示符下可以使用方向鍵來回切換修改 比較方便所以一般使用命令列提示符,即使用sqlplus而不使用isqlplus

3.切換使用者使用 conn  sys/change_on_install as sysdba

 或者conn  system/manager as sysdba 

系統管理員登陸時紅色標記為必須寫,否則無法登陸

 普通使用者 conn  scott/tiger

4.進入sqlplus後使用下面sql語句測試:

Select * from emp;

發現排版不正常使用:

Set linesize 150;每行顯示300字元

Set pagesize 30 ;每頁顯示30行

5.isqlplus或者sqlplus下使用ed命令

SQL>ed 檔名

將呼叫系統的文字處理工具,選擇儲存,你可以在這裡編輯自己的sql語句,然後使用

SQL>@ 檔名 來執行剛才編輯的sql指令碼檔案 如果檔案為*.sql可不輸入字尾.

還可以使用:
SQL>@ 絕對路徑+檔名來執行sql指令碼檔案.

同理如果是*.sql可不寫字尾名.

6.常見錯誤:

ORA-12541:TNS:沒有監聽器

$lsnrctl start 或者 C:lsnrctl start啟動服務

ORA-12500:TNS:監聽程式無法啟動專用伺服器程式

對於windows而言,沒有啟動oracle例項服務,啟動例項服務:

C:oradim -startup -sid myoracle

ORA-12535:TNS:操作超時

出現這個問題原因很多,但是主要和網路有關,解決辦法,檢查客戶端和服務端網路是否通暢,如果網路通暢檢查防火牆

ORA-12154:TNS: 無法處理服務名;

檢查輸入的服務名與配置的服務名是否一致.另外注意生成本地服務名檔案

Windows 下在D:\oracle\product\10.2.0\db_xinyuan_xiaok\NETWORK\ADMIN\tnsnames.ora

Linux$ORACLE_HOME/netword/admin/tnsnames.ora裡沒項服務的首行不能有空格

ORA-12514:TNS:

 監聽程式不能解析在連線描述符合給出的SERVICE_NAME 開啟Net Manager.選中服務名稱,檢查服務標識欄裡的使用者服務名輸入是否正確,該服務名必須與伺服器端監聽配置的全域性資料庫名一致

Windows 下啟動監聽服務提示找不到路徑

用命令或在服務視窗中啟動監聽提示找不到路徑,或者監聽伺服器異常,開啟登錄檔進

HKEY_LOCAL_MACHINE/SYSTEM/Current/ControlSet/Service/OracleOraHome/TNSListener

察看ImagePath 字元項是否存在,如果沒有,設定值為D:/……oracle/……/BIN/TNSLSNR,不同的安裝路徑設定值做相應的更改.這種方法適合oracle例項服務,同上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/services/Oracle ServiceMYORACLE,檢視ImagePath 字串項是否存在,如果沒有,新建設定值為D:/……oracle/……/bin/ORACLE.EXE  MYORACLE.

 

Oracle連線相關錯誤解決步驟以及清單(部分缺少截圖,各位見諒)
1、        Ping
a)        網路
b)        防火牆
2、        Tnsping
a)        Tnsping正確只是告訴你至少監聽是正常的。
b)        Tnsnames.ora配置問題
c)        Oracle環境變數(客戶端)
d)        Sqlnet.ora
3、        Sqlplus “/as sysdba”
a)        報無許可權,檢查ORACLE_HOME,ORACLE_SID的設定,sqlnet.ora中的設定,使用者是否在ora_dba組中。
4、        sqlplus username/password@orcl
a)        伺服器是否啟動
b)        監聽是否啟用
c)        Oracle伺服器端連線
d)        檢視伺服器端的listener.log,sqlnet.log,確定客戶端是否已經到達監聽,如果沒有就是完全錯的,否則可能的oracle服務配置有問題。
5、        Sqlplus easy connect
a)        如果能連線就是oracle客戶端環境有問題,否則按照上述方式處理
6、        ORA-12518 TNS:監聽程式無法分發客戶機連線
遇到過的一個情況就是客戶端tnsnames.ora中的service_name在伺服器端不存在,但是呢在listener.ora中呢又配置了到這個例項的偵聽引起的。如下所示,伺服器上不存在名為cjn的例項。


在一臺伺服器上安裝了多個資料庫例項的時候,發生這種情況的概率大很多。
資料庫例項沒有啟動也是可能的。
7、        TNS-12519
ORA-12519: no appropriate service handler found
alter system set processes = 300 scope = spfile;
startup force
8、        ORA-12500
ORA-12500: TNS:listener failed to start a dedicated server process
客戶端tnsnames.ora中的service_name在伺服器端不存在,但是呢在listener.ora中呢又配置了到這個例項的偵聽引起的。
9、        已使用 HOSTNAME 介面卡來解析別名,TNS-12541: TNS: 無監聽程式
a)        檢查oracle_home是不是有多個,比如同時安裝了10g和11g
10、        ORA-12152: TNS:unable to send break message
用sql*plus連線即可。也有可能伺服器那邊程式已經被kill幹掉了。
11、        TNS-12541:TNS: 無監聽程式
客戶端使用sqlplus usename/password@tns連線的時候報TNS-12541:TNS: 無監聽程式,而伺服器上監聽是開著的,應該是客戶端tns配置有問題(如應該使用ip而非localhost),可以先使用easy connect測試一下
10、12560: 協議介面卡錯誤
        一般是伺服器沒有起來,嘗試sqlplus “/as sysdba”還是抱ora-12560。嘗試設定oracle_sid,oracle_home為正確的值,再嘗試連線看看。在oracle 9i&8i中遇到這個錯誤還有一種可能就是sga設定的問題,看報錯的原因是sga太大,但實際上一定要調整到自動初始化的大小才能啟動oracle。當使用sysdba連線的時候會報”共享記憶體已存在”,但是無法正常shutdown(包括abort),這是因為設定了Oracle通過服務自動啟動,但是環境變數中的oracle_sid又沒有被windows服務識別,導致sid有一塊sga一直被windows認為已經在了,但是它的sid卻又不知道。因此會出現該問題。解決方法為:將oracle改為手工啟動,重啟windows伺服器,然後通過sqlplus “/as sysdba”,startup pfile=’init.ora’來啟動,啟動後手工調整sga,pga等引數的大小。

ORA-12638: 身份證明檢索失敗 的解決辦法 
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\ sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES = (NTS)改為NONE即可。

ORA-01031: 許可權不足
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\ sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES = (NONE)改為NTS即可。


Jdbc Get minus one from a read call解決辦法

原因:應該是伺服器端session緊張,嘗試加大看看能否解決掉。還有一種可能就是它消失之後,可能伴隨著SQLException: Io exception: The Network Adapter could not establish。後一個問題的原因是配置不正確,可能是客戶端,也可能是伺服器端。把jdbc的ip部分更改為主機名,後臺的監聽從原來的偵聽ip調整為偵聽主機名,同時主機名一定要在hosts檔案中。否則可能會報ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exist。

 

7.PLSQL developer 連線Oracle以及常用操作

怎麼連都連線不上,提示什麼狗屁……oracle\……\network\ADMIN下面的二個檔案tnsnames.ora,listener.ora檔案拒絕訪問,我都鬱悶了,oracle安裝目錄下的所有檔案都修改了許可權也不行.

最後使用命令列提示符連線後不關閉,然後再連線就能成功.這是什麼狗屁.進入後PLSQL Developer 自己新建使用者Test,然後關閉所有.再次登陸就能成功登陸很讓人費解.

這樣操作過後,Test刪除,再次使用scott便可以正常登陸.糾結的工具.

後來經研究發現就是系統許可權問題,當前使用者無法修改訪問超級管理員建立的oracle安裝目錄下的檔案,設定oracle安裝目錄,當前使用者有讀寫許可權.右鍵oracle資料夾.便可正常使用,如果仍然不行建議重灌oracle.

PL/SQL DEV 中

新建使用者

以管理員sysdba登陸--Users--右鍵--新建--設定使用者名稱密碼,預設表空間一般設定為Users,臨時表空間為Temp,概要檔案選擇default--角色許可權設定dba--系統許可權unlimited tablespace--應用。

匯入匯出表

以普通使用者Normal登陸--工具--匯入表--選擇檔案sql/dmp或者其他--點選匯入,匯出同理。

匯入是記得重新編譯儲存過程 Procedures  右邊的按鈕,編譯無效的儲存過程。

 

8.首先要解除安裝乾淨再安裝.解除安裝步驟:

1、控制皮膚\所有控制皮膚項\管理工具\服務 停止所有Oracle的服務項 
2、開始->所有程式->Oracle - OraDb10g_home1->Oracle Installation Products->Universal Installer   點選解除安裝產品,讓後將你之前所安裝的元件選擇刪除 
3、執行regedit,選擇HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del鍵刪除這個入口。 
4、執行regedit,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滾動這個列表,刪除所有Oracle入口  
5、從桌面上、STARTUP(啟動)組、程式選單中,刪除所有有關Oracle的組和圖示  
6、刪除與Oracle有關的檔案,選擇Oracle所在的預設目錄C:\Oracle,刪除這個入口目錄及所有子目錄
7、手動刪除你之前的Oracle安裝主路徑的目錄。在做完這些工作之後電腦最好重啟一下。  

然後重灌不要關閉任何服務,在次連線,測試.

相關文章