ORA-02020產生的原因及解決辦法
測試目的:
解決XXX遇到的ORA-02020問題
驗證open_links引數的確切含義,是一個會話中的多個鏈路?還是一個鏈路多個表同時訪問?
測試流程:
1 測試一個資料庫鏈路中的一個查詢關聯5個表
2 測試多個資料庫鏈路的同時查詢
具體步驟:
1 測試一個資料庫鏈路的一個查詢中的關聯5個表
檢視可用的TNSNAMES ORA
在orcl2上建立一個db_link
使用這個db_link編寫一個多表關聯的查詢
2 測試多個資料庫鏈路的同時查詢
檢視可用的TNSNAMES ORA,能不能再建立4個db link?
再建立4個不同資料庫的鏈路
同時使用5個資料庫鏈路進行查詢
SQL> desc user_db_links
Name Null? Type
----------------------------------------------------- -------- ---------------
DB_LINK NOT NULL VARCHAR2(128)
USERNAME VARCHAR2(30)
PASSWORD VARCHAR2(30)
HOST VARCHAR2(2000)
CREATED NOT NULL DATE
SQL> col db_link for a20
SQL> col host for a20
SQL> select db_link,username,host from user_db_links;
no rows selected
SQL> create database link sgfp_56 connect to sgfp identified by sgfp using 'sgfp_10.10.10.56';
Database link created.
-- 首先測試一個鏈路中多表查詢情況
SQL> select db_link,username,host from user_db_links;
DB_LINK USERNAME HOST
-------------------- ------------------------------ --------------------
SGFP_56 SGFP sgfp_10.10.10.56
SQL> select count(1) from ;
COUNT(1)
----------
250
sql> conn
sql> create table ww_tbl1 (col1 number(2));
sql> create table ww_tbl2 (col1 number(2));
sql> create table ww_tbl3 (col1 number(2));
sql> create table ww_tbl4 (col1 number(2));
sql> create table ww_tbl5 (col1 number(2));
sql> create table ww_tbl6 (col1 number(2));
sql> select count(1)
from ww_tbl1 a,
ww_tbl2 b,
ww_tbl3 c,
ww_tbl4 d,
ww_tbl5 e
where a.col1 = b.col1
and a.col1 = c.col1
and a.col1 = d.col1
and a.col1 = e.col1
;
COUNT(1)
----------
0
sql> insert into ww_tbl1 values (1);
sql> insert into ww_tbl2 values (1);
sql> insert into ww_tbl3 values (1);
sql> insert into ww_tbl4 values (1);
sql> insert into ww_tbl5 values (1);
sql> insert into ww_tbl6 values (1);
sql> commit;
SQL> select count(1)
2 from ww_tbl1 a,
3 ww_tbl2 b,
4 ww_tbl3 c,
5 ww_tbl4 d,
6 ww_tbl5 e
7 where a.col1 = b.col1
8 and a.col1 = c.col1
9 and a.col1 = d.col1
10 and a.col1 = e.col1
11 ;
COUNT(1)
----------
1
sql> conn
SQL> select count(1)
2 from a,
3 b,
4 c,
5 d,
6 e
7 where a.col1 = b.col1
8 and a.col1 = c.col1
9 and a.col1 = d.col1
10 and a.col1 = e.col1;
COUNT(1)
----------
1
SQL> /
COUNT(1)
----------
1
SQL>
-- 小結:上述證明,在一個SQL中關聯多表超過4個是可以的,下面繼續看看在一個SESSION中多個查詢的情況
使用PL/SQL進行測試
。。。(轉到制證中心處理常口的備份日誌問題,處理完畢,繼續上面的研究)。。。
連線到人口庫上,
新增一個資料庫鏈路
create database link rkxx 。。。
開啟PL/SQL,開6個SQL視窗,進行查詢
取6個查詢語句
select 'select * from from where rownum<7;
查詢依然正常,看來不是併發的,也不能斷定,
在PL/SQL中的一個CMD中執行下述
select * from where rownum<2;
select * from where rownum<2;
select * from where rownum<2;
select * from where rownum<2;
select * from where rownum<2;
select * from where rownum<2;
依然可以查詢。???
如何模擬出這個錯誤呢?pl/sql從版本6換成版本7
開啟一個SQL,同時執行6個查詢,依然沒有問題,怎麼辦?
只能回公司,增加5個資料庫鏈路再次戰鬥。。。
建立以下資料庫鏈路
CGSEN_10.10.10.8
HTJSCGS_10.10.10.8
ORCL_10.10.10.34
ORCL_10.10.10.26
GS12366_166
create database link cgsen_8 xxx
create database link htjscgs_8 xxx
create database link ORCL_34 xxx
create database link ORCL_26 xxx
create database link GS12366_166xxx
select db_link,username,host from user_db_links;
DB_LINK USERNAME
------------ ------------------------------
CGSEN_8 CGSZS
GS12366_166 SYSTEM
HTJSCGS_8 HCGS
ORCL_26 DUCK
ORCL_34 SCOTT
RKXX RKXX_ZS
SGFP_56 SGFP
6 rows selected.
select count(1) from ;
select count(1) from ;
select count(1) from ;
select count(1) from ;
select count(1) from ;
select count(1) from ;
SQL> select count(1) from ;
select count(1) from
*
ERROR at line 1:
ORA-02020: too many database links in use
SQL> select count(1) from ;
COUNT(1)
----------
4
SQL> select count(1) from ;
COUNT(1)
----------
188
SQL> select count(1) from ;
COUNT(1)
----------
138
SQL> select count(1) from ;
COUNT(1)
----------
256
SQL>
ora-02020 錯誤終於出來了!!
這次的原因是因為open_lins_per_instance=4 open_lins=4,下面進行驗證
5個查詢沒有問題,需要再增加一個db link;
create database link dxpt_35 connect to xxx
錯誤再次出現
總結如下:
引數設定:
SQL> show parameter open_links
NAME TYPE VALUE
------------------------------------ ----------- -----
open_links integer 5
open_links_per_instance integer 4
錯誤場景:
開啟一個會話,
連線5個不同的資料庫鏈路
再連線第6個資料庫鏈路時,報ORA-02020: too many database links in use
對應ORACLE文件上所云:每個會話開啟的資料庫鏈路數量不能超過open_links設定的引數。
結論:看來增大open_links,可以解決這個問題.
open_links_per_instance又有什麼用呢?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271063/viewspace-1007769/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 生產內網ssh登陸變慢問題原因及解決辦法內網
- 微信域名被封的原因及解決辦法
- warning: LF will be replaced by CRLF in ** 的原因及解決辦法
- php png失真的原因及解決辦法PHP
- JVM 發生記憶體溢位的 8 種原因、及解決辦法JVM記憶體溢位
- Linux中產生zombie的原因詳解及解決方法!Linux
- ORA-39006錯誤原因及解決辦法
- (資料庫十)資料庫中的鎖機制以及死鎖產生的原因及解決辦法資料庫
- 服裝倉庫混亂的原因及解決辦法
- vi/vim配置篇:亂碼產生的原因及解決
- 圖片下方三畫素原因及解決辦法
- node-sass 安裝失敗的原因及解決辦法
- pycharm 安裝包總失敗原因及解決辦法PyCharm
- element-ui 的Dialog被蒙板遮住原因及解決辦法UI
- 壓敏電阻燒壞的原因後果及解決辦法
- 虛擬機器ping不通的幾種原因及解決辦法虛擬機
- 安裝node-sass失敗原因及解決辦法彙總
- 常見的HTTP介面超時問題出現原因及解決辦法HTTP
- 【知識分享】伺服器連線失敗的原因及解決辦法伺服器
- 使用錨點跳轉時出現位置偏差原因及解決辦法
- 阿里雲網站備案時網站無法訪問原因及解決辦法阿里網站
- RNN神經網路產生梯度消失和梯度爆炸的原因及解決方案RNN神經網路梯度
- Zookeeper--產生原因及功能
- 【FAQ】關於華為地圖服務定位存在偏差的原因及解決辦法地圖
- 關於$ is not defined的原因和解決辦法
- php安裝擴充套件模組後,重啟不生效的原因及解決辦法PHP套件
- tplogin.cn登陸頁面進不去的幾種常見原因及解決辦法
- Redis擊穿、穿透、雪崩產生原因以及解決思路Redis穿透
- 表碎片起因及解決辦法(zt)
- iOS路上遇到的錯誤及解決辦法iOS
- Python中的棧溢位及解決辦法Python
- 伺服器卡的原因和解決辦法伺服器
- 集合類不安全及解決辦法
- CentOS 常見異常及解決辦法CentOS
- 造成黏包的原因,及解決方案
- 伺服器常見故障及解決辦法伺服器
- Laravel 5.4 Mix執行 npm run dev時報錯,提示cross-env not found的原因及解決辦法LaravelNPMdevROS
- warning: CRLF will be replaced by LF in 出現的原因和解決辦法
- 公寓噪音的解決辦法