今天是一直報錯~解決錯誤~報錯的一天~~~~~~~~
一、報TCC協(xié)議內(nèi)部錯誤

寫的代碼根據(jù)老庫都調(diào)通了之后,部署到了生產(chǎn)線的新庫,但是報了ORA-03130:TCC協(xié)議內(nèi)部錯誤。
剛開始查到是說cx_Oracle是不通版本可能會不兼容,突然想起來原來oracle是不同版本的(我腦袋永遠(yuǎn)是不能發(fā)散思維的。。),于是查了下
老庫:

新庫:

真的是不通版本的!
為什么不同版本就會報錯呢?就要從cx_Oracle這個包的工作原理講起。
1、原因
可以把cx_Oracle這個包想象成PLSQL,如果你本地不裝oracle客戶端,只安裝了PLSQL是不能用的,所以因為我本地裝了11g的oracle客戶端,再去連新庫的時候,就會報莫名其妙的錯誤了(我?guī)煾到o我是這么解釋的)。
2、解決方法
本地裝一個12c的oracle客戶端就好啦?。。?i>如果有不同的好的解決方法,非常非常希望能共享)
二、報TNS:無法解析指定的連接標(biāo)識符的錯誤

1、原因
將代碼在本地跑通后,放到服務(wù)器上又報了這個錯誤——ORA-12154
檢查防火墻關(guān)了,ping和telnet也都是通的,TNS也配置好了(echo?$ORACLE_HOME可查)后,突然發(fā)現(xiàn),密碼里面有特殊字符!
所以會報錯,直接用
sqlplus username/password@TNS
啟用sqlplus也會報錯。
2、解決方法
在有特殊符號時
服務(wù)器啟動sqlplus用
sqlplus 'username/"password"’@TNS
cx_Oracle連接時,用
conn = cx_Oracle.connect(‘username /"password"@ TNS’)
就可以啦
三、換行符問題

這個不算python連oracle的注意點,但是也是今天遇到的一個問題,將代碼部署到服務(wù)器后一直報錯,后來找到了原因:是不同系統(tǒng)的換行符不同導(dǎo)致的。
UNIX系統(tǒng)是,OS系統(tǒng)是,win系統(tǒng)是。
所以一個文件從一種系統(tǒng)移到另一種系統(tǒng),就有換行符的麻煩。
這時候,只需要vi該文件切換到命令模式,然后
set ff=unix
就好啦。