1.ERROR - ORA-12514: TNS: 監聽程式當前無法識別串連描述符中請求的服務如果您的伺服器莫名其妙的報這個錯,之前卻一直正常,那麼請試試下面的方法(記得將您需要修改的檔案備份一下,因為錯誤原因可能不一樣):
開啟"<OracleHome>/network/admin/listener.ora" ,複製下面紅色字型到您的檔案中
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
)
儲存檔案,重啟監聽器,重啟pl/sql,就OK了上面是oracle10g的,11g的也是這樣子的,ORACLE_HOME=E:\oracle\product(這是我的,你的盤符可能不一樣)GLOBAL_DBNAME是您的資料庫名字,SID_NAME是執行個體名 2.連同事的資料庫時,出現ora-12170:tns:連線逾時 是因為同事開啟了防火牆,所以出現上面的錯誤 3.pl/sql 連上資料庫時,只能以sysdba方式,登入進去,normal方式不行(這樣就導致jdbc連不上資料庫) 很有可能建立資料庫的時候是通過sysdba許可權建的,所以使用者以normal方式登入不了,但是我想通過增加許可權的方式,讓它能以normal方式登入,查詢sql select * from all_users order by length(username);
根本就找不到test的username,所以無法賦予許可權,通過以下sql建立了個賬戶(sungoal),plsql和jdbc都能連上了
View Code
--建立使用者create user sungoal identified by sungoal;--建立暫存資料表空間create temporary tablespace sungoal_temptempfile 'D:\oracle_table_space\sungoal_temp.dbf'size 50mautoextend onnext 50m maxsize 1024m;--建立資料資料表空間create tablespace sungoal_datadatafile 'd:\oracle_table_space\sungoal_data'size 50mautoextend onnext 50m maxsize 1024m;--給使用者指定資料表空間alter user sungoal default tablespace sungoal_data temporary tablespace sungoal_temp;--給使用者賦權grant connect,resource to sungoal;--串連使用者(需要到命令列視窗測試能不能連上,不能通過sql視窗)--conn sungoal/sungoal--drop user sungoal cascade;
某年某月的某一天的再一次碰到了這個鬼問題(pl/sql 連上資料庫時,只能以sysdba方式,登入進去,normal方式不行(這樣就導致jdbc也連不上資料庫),查看它的view視圖,跟別的使用者的sql對比發現
View Code
--不能正常登入的-- Create the user create user TESTDBLINK_USER default tablespace SUNGOAL_DATA temporary tablespace SUNGOAL_TEMP profile DEFAULT password expire;-- Grant/Revoke role privileges grant connect to TESTDBLINK_USER with admin option;grant dba to TESTDBLINK_USER with admin option;grant resource to TESTDBLINK_USER;-- Grant/Revoke system privileges grant unlimited tablespace to TESTDBLINK_USER;--能正常登入的-- Create the user create user SUNGOAL default tablespace SUNGOAL_DATA temporary tablespace SUNGOAL_TEMP profile DEFAULT password expire;-- Grant/Revoke role privileges grant connect to SUNGOAL;grant dba to SUNGOAL;grant resource to SUNGOAL;-- Grant/Revoke system privileges grant unlimited tablespace to SUNGOAL;
多了一個with admin option的sql語句,我們刪除掉這個使用者,然後重建立立
View Code
create user TESTDBLINK_USER identified by TESTDBLINK_USER default tablespace SUNGOAL_DATA temporary tablespace SUNGOAL_TEMP profile DEFAULT password expire;-- Grant/Revoke role privileges grant connect to TESTDBLINK_USER ;grant dba to TESTDBLINK_USER ;grant resource to TESTDBLINK_USER;-- Grant/Revoke system privileges grant unlimited tablespace to TESTDBLINK_USER;
然後重啟服務,重啟pl/sql,就OK了
4.通過程式(java)只能是localhost,ip方式卻連不上,新增一個監聽地址就行了開啟oracle的net manager,記得改完之後重啟xxxxlistener服務和xxxxservice服務
4.本機電腦上的OracleOraDb11g_home2TNSListener服務啟動又停止了。一些服務自動停止。。。
這是ip變了,listener.ora檔案如下
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) #(DESCRIPTION = #(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.12)(PORT = 1521)) #) )
其中192.168.12.12是我在公司的ip,家裡面的ip不是這個,所以注釋就行了,或者改成你的ip
如果您的伺服器莫名其妙的報這個錯,之前卻一直正常,那麼請試試下面的方法(記得將您需要修改的檔案備份一下,因為錯誤原因可能不一樣):
開啟"<OracleHome>/network/admin/listener.ora" ,複製下面紅色字型到您的檔案中
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
)
儲存檔案,重啟監聽器,重啟pl/sql,就OK了