無(wú)法連接數(shù)據(jù)庫(kù),報(bào)錯(cuò) 6001 網(wǎng)絡(luò)通信異常/socket 連接失敗/ Create SOCKET connection failure
【問題描述】:
連接數(shù)據(jù)庫(kù)時(shí)出現(xiàn)報(bào)錯(cuò):登錄服務(wù)器失敗。
- 客戶端管理工具連接數(shù)據(jù)庫(kù)報(bào)錯(cuò):錯(cuò)誤號(hào) 6001,錯(cuò)誤消息:網(wǎng)絡(luò)通信異常。如下圖所示:
?
- 或命令行連接數(shù)據(jù)庫(kù)報(bào)錯(cuò):socket 連接失敗或 Create SOCKET connection failure。如下圖所示:
?
【問題分析】:
使用 DM 數(shù)據(jù)庫(kù)時(shí),有時(shí)會(huì)碰到登錄失敗的情況。根據(jù)使用的連接工具不同,問題具體可能表現(xiàn)為網(wǎng)絡(luò)通信異常或者 socket 連接失敗。
當(dāng)出現(xiàn)網(wǎng)絡(luò)通信異常報(bào)錯(cuò)時(shí),先考慮客戶端與數(shù)據(jù)庫(kù)服務(wù)器之間網(wǎng)絡(luò)通信問題;如果客戶端與數(shù)據(jù)庫(kù)服務(wù)器之間網(wǎng)絡(luò)通信正常,則考慮數(shù)據(jù)庫(kù)服務(wù)器是否已正常啟動(dòng)。如果網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)服務(wù)都正常,則考慮數(shù)據(jù)庫(kù)相關(guān)連接配置等。
具體解決辦法可參考DM數(shù)據(jù)庫(kù)登錄失敗的排查方法。
此外,若是登錄時(shí)用戶名和密碼填寫錯(cuò)誤,也會(huì)出現(xiàn)連接失敗,但會(huì)提示:用戶名或密碼錯(cuò)誤。
詳情解決辦法請(qǐng)參照:達(dá)夢(mèng)數(shù)據(jù)庫(kù)密碼含特殊字符怎么使用disql登錄
DM 數(shù)據(jù)庫(kù)怎么設(shè)置/修改最大連接
關(guān)于最大連接數(shù),可參考《DM 系統(tǒng)管理員手冊(cè)》dm.ini 章節(jié)(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc
?文件夾下),最大連接數(shù)參數(shù)如下:
?
- 主要修改?
MAX_SESSIONS
?的值,根據(jù)用戶自行賦值。建議值大小如下:
以主機(jī) CPU 4 路 8 核內(nèi)存 64 GB 為例,建議值大小如下:
max_session=500~1000
max_session_statnment=2000
修改參數(shù)在數(shù)據(jù)庫(kù)實(shí)例路徑下的 dm.ini 文件,修改完成后,重啟數(shù)據(jù)庫(kù)才生效。
- /etc/security/limits.conf 的 open file 也要擴(kuò)大。跟 Oracle 的 session 和 process 一樣。
連接 DM 數(shù)據(jù)庫(kù)時(shí)提示:未經(jīng)授權(quán)的用戶
新建實(shí)例,修改 max_session 為 1。
SELECT * FROM V$DM_INI WHERE "V$DM_INI".PARA_NAME LIKE 'MAX_SESSIONS';
?
報(bào)錯(cuò)復(fù)現(xiàn):?TEST 用戶登陸
?
修改 dm.ini 里面的 MAX_SESSIONS,SP_SET_PARA_VALUE(2,'MAX_SESSIONS',2000)
,修改完重啟數(shù)據(jù)庫(kù)。
啟動(dòng)服務(wù)端的 console 工具查詢 KEY 信息(工具在安裝目錄的 TOOL 目錄下)。
?
如上圖所示的?最大并發(fā)數(shù)為 25
,調(diào)整參數(shù)是無(wú)效的,需要找銷售人員申請(qǐng)對(duì)應(yīng)的 KEY。
再次驗(yàn)證 TEST 用戶登陸,登錄成功,如下圖所示:
?
數(shù)據(jù)庫(kù)會(huì)話不釋放或者不重復(fù)利用;會(huì)一直申請(qǐng)到最大連接數(shù)后報(bào)錯(cuò)退出
其原因很有可能就是連接池沒有做好相關(guān)配置,或者配置了卻設(shè)置的值不對(duì),那么超時(shí)的原因大概有以下幾點(diǎn):
- 最大連接數(shù)大于數(shù)據(jù)庫(kù)服務(wù)器端配置的最大連接數(shù),多余的連接在被使用到的時(shí)候出現(xiàn)連接超時(shí)。
- 網(wǎng)絡(luò)抖動(dòng):每次連接的時(shí)候提交或維護(hù)大量數(shù)據(jù),此時(shí)網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致連接超時(shí)。
- 占用的資源未被釋放,一般只 Open 一次,獲取一個(gè) *DB,但是在使用 stmt,rows 或者是 tx 時(shí)候用完沒有關(guān)閉,耗盡資源也有可能導(dǎo)致連接超時(shí)。
對(duì)于出現(xiàn)的 3 種問題,可以試試下面的解決方法:
- 對(duì)于最大連接數(shù)的問題,調(diào)用函數(shù)?
Db.SetMaxOpenConns()
?設(shè)置值(小于數(shù)據(jù)庫(kù)配置的最大連接)。 - 對(duì)于維護(hù)大量數(shù)據(jù),可以嘗試采用事務(wù)操作,若失敗,回滾。然后重試。
- 使用 defer 關(guān)鍵字,在啟用操作的時(shí)候直接在下一行加上?
defer *.close()
?函數(shù) return 的時(shí)候會(huì)執(zhí)行相關(guān)的關(guān)閉函數(shù)。
如果嘗試了以上的解決方法,還是發(fā)現(xiàn)偶爾會(huì)出現(xiàn)連接超時(shí)的錯(cuò)誤的話,很可能是因?yàn)閿?shù)據(jù)庫(kù)本身對(duì)連接有一個(gè)超時(shí)時(shí)間的設(shè)置,如果超時(shí)時(shí)間到了數(shù)據(jù)庫(kù)會(huì)單方面斷掉連接,此時(shí)再用連接池內(nèi)的連接進(jìn)行訪問就會(huì)出錯(cuò),連接池中的每個(gè)連接都維護(hù)了一個(gè)創(chuàng)建時(shí)間,取連接的時(shí)候會(huì)自動(dòng)檢查的,可以試試調(diào)用 db 的?SetConnMaxLifetime()
?方法來(lái)給 db 設(shè)置一個(gè)超時(shí)時(shí)間,時(shí)間小于數(shù)據(jù)庫(kù)的超時(shí)時(shí)間即可。
網(wǎng)絡(luò)通信正常下,客戶不愿意關(guān)閉防火墻,連接管理工具遠(yuǎn)程連不上的問題
配置服務(wù)器防火墻,以 root 身份編輯?/etc/sysconfig/iptables
?文件,向文件中增加?-A
?部分信息。
\ vi /etc/sysconfig/iptables
\# Firewall configuration written by system-config-firewall
\# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5236 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
重啟 iptables 服務(wù)。
\#service iptables restart
數(shù)據(jù)庫(kù)會(huì)不會(huì)關(guān)閉空閑會(huì)話
【問題描述】:
創(chuàng)建一線程時(shí)就鏈接數(shù)據(jù)庫(kù)了,之后線程一直閑置中,過(guò)了一天后鏈接會(huì)話還在嗎?數(shù)據(jù)庫(kù)會(huì)不會(huì)把這個(gè)會(huì)話關(guān)閉?
這個(gè)相當(dāng)于長(zhǎng)連接的問題,一天后連接還在,因?yàn)閿?shù)據(jù)庫(kù)不會(huì)把這個(gè)會(huì)話關(guān)閉。下面簡(jiǎn)單介紹下數(shù)據(jù)庫(kù)的長(zhǎng)連接和短連接。
- 短連接操作步驟:連接-數(shù)據(jù)傳輸-關(guān)閉連接。
- 長(zhǎng)連接操作步驟:連接-數(shù)據(jù)傳輸-保持連接-數(shù)據(jù)傳輸-保持連接-…………-關(guān)閉連接。
這就要求長(zhǎng)連接在沒有數(shù)據(jù)通信時(shí),定時(shí)發(fā)送數(shù)據(jù)包,以維持連接狀態(tài),短連接在沒有數(shù)據(jù)傳輸時(shí)直接關(guān)閉就行了。
什么時(shí)候用長(zhǎng)連接,短連接?
長(zhǎng)連接主要用于在少數(shù)客戶端與服務(wù)端的頻繁通信,因?yàn)檫@時(shí)候如果用短連接頻繁通信常會(huì)發(fā)生 Socket 出錯(cuò),并且頻繁創(chuàng)建 Socket 連接也是對(duì)資源的浪費(fèi)。一般情況下應(yīng)用和數(shù)據(jù)庫(kù)直接的連接都是通過(guò)連接池實(shí)現(xiàn),也就是采用長(zhǎng)連接的方式。而一般連接到服務(wù)器查詢某個(gè)數(shù)據(jù)時(shí),這種情況采用的是短連接。
DM 數(shù)據(jù)庫(kù)可以通過(guò)?v$sessions 視圖
?查看會(huì)話連接情況。比如查詢連接超過(guò) 7 天的會(huì)話,可以通過(guò)下面的 SQL 實(shí)現(xiàn):
select from v$sessions where create_time < sysdate -7;
?
如果要?jiǎng)h掉超過(guò) 7 天的會(huì)話,可以通過(guò)下面的 SQL 先找過(guò)超過(guò) 7 天的會(huì)話,然后把里面的內(nèi)容拿出來(lái)執(zhí)行:
select 'sp_close_session('||sess_id||');' from v$sessions where create_time < sysdate -7;
?
假如結(jié)果是:sp_close_session(910688560)
:直接在 manager 中執(zhí)行即可刪除該條連接。
?
執(zhí)行結(jié)果,910688560 這個(gè)會(huì)話被關(guān)閉。
?
因?yàn)闇y(cè)試機(jī)剛啟動(dòng)的沒有超過(guò) 7 天的會(huì)話,執(zhí)行的時(shí)候沒加后面的 where 條件。
必須給字段加雙引號(hào),否則提示無(wú)效的列名 TRIGGER_TIME
可能與大小寫敏感的設(shè)置有關(guān):
- 大小寫敏感的情況下,字段會(huì)自動(dòng)轉(zhuǎn)換成大寫。
- 加引號(hào)是不讓字段轉(zhuǎn)換成大寫,這個(gè)表里面的字段在創(chuàng)建時(shí)應(yīng)該是小寫的。
- 從 MySQL 遷移到 DM,最好在遷移到之前,設(shè)置 DM 數(shù)據(jù)庫(kù)初始化大小寫不敏感。
大小寫設(shè)置方法:
大小寫敏感設(shè)置在初始化實(shí)例中可以設(shè)置大小寫敏感參數(shù)。
?
查看大小寫敏感的方式:
- 鏈接數(shù)據(jù)庫(kù)右鍵數(shù)據(jù)庫(kù)管理服務(wù)器頁(yè)面。可以看到當(dāng)前數(shù)據(jù)庫(kù)是否是大小寫敏感設(shè)置。
?
- 命令行的方式查看
select para_name,case para_value when 1 then 'y' else 'n' end from v$dm_ini where para_name= 'GLOBAL_STR_CASE_SENSITIVE';
分區(qū)表(非堆表)是否能支持 global 索引/全局索引
DM 數(shù)據(jù)庫(kù)支持對(duì)水平分區(qū)表建立普通索引、唯一索引、聚集索引和函數(shù)索引。創(chuàng)建索引時(shí)若未指定 GLOBAL 關(guān)鍵字則建立的索引是局部索引,即每一個(gè)表分區(qū)都有一個(gè)索引分區(qū),并且只索引該分區(qū)上的數(shù)據(jù)。如果指定了 GLOBAL 關(guān)鍵字則建立的索引是全局索引,即每個(gè)表分區(qū)的數(shù)據(jù)都被索引在同一個(gè) B 樹中。
目前,僅堆表的水平分區(qū)表支持 GLOBAL 索引。堆表上的 primary key 會(huì)自動(dòng)變?yōu)槿炙饕?。非堆表目前暫不支?global 索引。
詳見《DM 系統(tǒng)管理員手冊(cè)》第 16.4 章節(jié)內(nèi)容。(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc
?文件夾下)
在 DM 數(shù)據(jù)庫(kù)中并沒有 DmJobMonitor 這個(gè)服務(wù),但是在數(shù)據(jù)庫(kù)中創(chuàng)建的作業(yè)也是能跑起來(lái),有什么實(shí)際用途
DmJobMonitor 是監(jiān)控作業(yè)的服務(wù),監(jiān)控作業(yè)是否正常,一般是在 DM 管理工具里點(diǎn)擊【作業(yè)】-【查看歷史作業(yè)信息】即可獲取作業(yè)的運(yùn)行情況。
?
DM 數(shù)據(jù)庫(kù)如何刪除主鍵索引
遇到 DM 數(shù)據(jù)庫(kù)主鍵索引無(wú)法刪除的情況不要著急,可以先將表的主鍵約束去除,再執(zhí)行刪除即可。
?
怎么解決沒有查詢動(dòng)態(tài)視圖權(quán)限的問題?沒有對(duì)象的查詢權(quán)限
用戶查詢報(bào)錯(cuò):
?
【解決方法】:
- 使用 SYSDBA 用戶,給沒有權(quán)限的用戶賦權(quán)(賦予 VTI 角色):
grant VTI to user123;
- 或者直接賦予相應(yīng)視圖的查詢權(quán)限(比如查詢 v$dm_ini 視圖的權(quán)限):
grant select on v$dm_ini to user123;
創(chuàng)建用戶失敗要怎么解決
創(chuàng)建用戶失敗的原因可能有多,具體問題要具體分析,遇到錯(cuò)誤時(shí)首先查看報(bào)錯(cuò)的詳細(xì)信息,這樣才能快速的定位和解決問題,下面列舉幾種常見的錯(cuò)誤:
- 用戶名已經(jīng)存在該用戶
?
- 密碼復(fù)雜度不符合要求
密碼策略:PWD_POLICY
設(shè)置系統(tǒng)默認(rèn)口令策略。
0: 無(wú)策略;
1: 禁止與用戶名相同;
2: 口令長(zhǎng)度不小于 9;
4: 至少包含一個(gè)大寫字母(A-Z);
8 :至少包含一個(gè)數(shù)字(0-9);
16:至少包含一個(gè)標(biāo)點(diǎn)符號(hào)(英文輸入法狀態(tài)下,除“和空格外的所有符 號(hào);若為其他數(shù)字,則表示配置值的和,如 3=1+2,表示同時(shí)啟用第 1 項(xiàng) 和第 2 項(xiàng)策略。當(dāng) COMPATIBLE_MODE=1 時(shí),PWD_POLICY 的實(shí)際值均 為 0
解決方法:
可修改 PWD_POLICY 參數(shù),如下圖所示:
?
- 授權(quán)不正確,如下授權(quán),選擇的是【ALL】,有些權(quán)限是不能分配給普通用戶的,如下圖所示:
?
快速獲取表定義、詳細(xì)信息的 SQL 語(yǔ)句
如果是在 windows 操作界面,可以直接用管理工具-單擊表然后右鍵查看。
如果是在 Linux 界面可通過(guò)以下方法查看。
- 方法一
調(diào)用 DM 存儲(chǔ)系統(tǒng)過(guò)程?SP_TABLEDEF
,獲得表的定義,如下圖所示:
?
參數(shù)說(shuō)明:
schname:模式名
tablename:表名
這個(gè)存儲(chǔ)過(guò)程,直接 call 調(diào)用或者寫在匿名塊中調(diào)用均可。
比如,查詢 DMHR 模式下 EMPLOYEE 表定義:
call sp_tabledef('DMHR','EMPLOYEE');
?
BEIGN
Sp_tabledef(‘DMHR’,’EMPLOYEE’);
END;
?
這個(gè)存儲(chǔ)過(guò)程是 DM 數(shù)據(jù)庫(kù)獨(dú)有的,Oracle 并沒有這個(gè)存儲(chǔ)過(guò)程。但是它存在一個(gè)缺點(diǎn),只能查詢表,不能查詢其他類型的對(duì)象。
所以這里推薦第二種方法,也是筆者最常用的查詢表定義的方法。
- 方法二
DBMS_METADATA.GET_DDL
,DBMS_METADATA 系統(tǒng)包包含了許多實(shí)用的函數(shù),有興趣可以查看 DM 官方文檔慢慢了解,這里就不一一贅述了,介紹一下 GET_DDL,如下圖所示:
?
我們?cè)贉y(cè)試一下這個(gè)包:
?
GET_DDL 功能非常強(qiáng)大,可以用于獲取數(shù)據(jù)庫(kù)對(duì)表、視圖、索引、全文索引、存儲(chǔ)過(guò)程、函數(shù)、包、序列、同義詞、約束、觸發(fā)器等的 DDL 語(yǔ)句。
報(bào)錯(cuò):無(wú)效的用戶名
- 建立用戶的時(shí)候,會(huì)建個(gè)同名的模式,如果模式已存在就會(huì)報(bào)錯(cuò),如下圖所示:
?
- 所登陸的用戶名就沒有建立。
- 搭建 dsc 的時(shí)候,asm 環(huán)境初始化報(bào)的?
無(wú)效的用戶名
,檢查一下 DMDCR_CFG.INI 里面的?dcr_seqno
,如下圖所示:
?
使用圖形界面創(chuàng)建作業(yè)
首次使用時(shí),需要先創(chuàng)建代理環(huán)境,如下圖,在代理上右鍵,選擇【創(chuàng)建代理環(huán)境】,如下圖所示:
?
然后在作業(yè)上右鍵新建作業(yè),出現(xiàn)右邊的方框中選擇【添加】,如下圖所示:
?
?
選擇作業(yè)調(diào)度之后,在右下方選擇【新建】,然后出現(xiàn)調(diào)度頻率和時(shí)間的選項(xiàng)。
數(shù)據(jù)庫(kù)登陸密碼問題
- 忘記密碼怎么辦?
如果是系統(tǒng)用戶 SYSDBA、SYSSSO 忘記密碼,是沒有辦法找回來(lái)的。
溫馨提示1. 數(shù)據(jù)庫(kù)管理員 SYSDBA 的密碼不要隨便修改,默認(rèn)密碼為 SYSDBA(密碼嚴(yán)格區(qū)分大小寫)。如果出于安全方面的考慮非得修改,請(qǐng)一定要做好備案工作。
2. 如果數(shù)據(jù)庫(kù)中還有其它的用戶,可以嘗試在數(shù)據(jù)遷移工具 DTS 中使用其它用戶登錄,把數(shù)據(jù)庫(kù)中相關(guān)用戶的數(shù)據(jù)遷移到新的實(shí)例對(duì)應(yīng)的用戶中。
3. 如果庫(kù)里面沒有業(yè)務(wù)數(shù)據(jù)或者數(shù)據(jù)不重要,則可以考慮卸載重裝。
如果是自定義的用戶密碼丟失了,可以通過(guò) SYSDBA 來(lái)更改密碼。
- 數(shù)據(jù)庫(kù)是否有默認(rèn)密碼/用戶口令?
DM 數(shù)據(jù)庫(kù)密碼默認(rèn)是和用戶一樣的,大寫 SYSDBA。
- 密碼中含有 @/等特殊字符怎么辦?
需要通過(guò)轉(zhuǎn)義符來(lái)處理。disql 轉(zhuǎn)義符使用如下:
linux 環(huán)境,需要使用雙引號(hào)將密碼包含進(jìn)來(lái),同時(shí)外層再使用單引號(hào)進(jìn)行轉(zhuǎn)義,具體例子如下:
./disql SYSDBA/' "abcd@efgh" '@localhost
windows 環(huán)境,需要使用雙引號(hào)將密碼包含進(jìn)來(lái),同時(shí)對(duì)雙引號(hào)使用\進(jìn)行轉(zhuǎn)義,具體例子如下:
disql SYSDBA/\"abcd@efgh\"@localhost
- Manager 客戶端登錄保存密碼為什么還是需要輸入密碼?
需要注冊(cè)連接。
- SYS 用戶密碼是多少,SYS 能登陸嗎?
SYS 是不能登陸的?
- 數(shù)據(jù)庫(kù)更改密碼策略,對(duì)以前建立的用戶不生效?
刪除重建。
- SYSSSO 用戶密碼是多少?
DM 數(shù)據(jù)庫(kù)初始化時(shí)設(shè)置 SYSSSO 的密碼,默認(rèn)為 SYSSSO,僅在安全版本下可見和可設(shè)置。
- 用戶密碼過(guò)期及修改用戶登錄失敗次數(shù)超過(guò)限制怎么辦?
用 SYSDBA 登錄來(lái)修改用戶的配置,先修改密碼再修改資源。
alter user "SYSDBA" limit password_life_time unlimited;
- DM 數(shù)據(jù)庫(kù)的密碼策略是什么?
通過(guò) DM.INI 里的參數(shù):PWD_POLICY
?設(shè)置系統(tǒng)默認(rèn)口令策略。
0:無(wú)策略;
1:禁止與用戶名相同;
2:口令長(zhǎng)度不小于 9;
4:至少包含一個(gè)大寫字母 (A-Z);
8:至少包含一個(gè)數(shù)字 (0-9);
16:至少包含一個(gè)標(biāo)點(diǎn)符號(hào)(英文輸入法狀態(tài)下,除“和空格外的所有符號(hào));
若為其他數(shù)字,則表示配置值的和,如 3=1+2,表示同時(shí)啟用第 1 項(xiàng)和第 2 項(xiàng)策略。
當(dāng) INI 參數(shù) COMPATIBLE_MODE=1 時(shí),PWD_POLICY 的實(shí)際值均為 0。
- 怎么查看密碼策略?
可以通過(guò)如下視圖查詢系統(tǒng)策略情況:
SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY';
- 怎么設(shè)置或修改密碼?
通過(guò)如下命令設(shè)置系統(tǒng)密碼策略,該參數(shù)為動(dòng)態(tài)參數(shù),修改后即時(shí)生效,不需要重啟數(shù)據(jù)庫(kù)。
SP_SET_PARA_VALUE(1, 'PWD_POLICY',8);
設(shè)置策略成功后,對(duì)新創(chuàng)建的用戶有效。原來(lái)的用戶需要通過(guò) alter user 修改用戶的密碼策略:
alter user 用戶名 PASSWORD_POLICY 8;
更多關(guān)于設(shè)置密碼相關(guān)問題,請(qǐng)參考《DM_SQL 語(yǔ)言使用手冊(cè)》管理用戶-用戶定義語(yǔ)句。(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc
?文件夾下)
DM 數(shù)據(jù)庫(kù)是否支持 navicat 連接
Navicat 工具暫不支持 DM 數(shù)據(jù)庫(kù),DM 數(shù)據(jù)庫(kù)的連接可以使用數(shù)據(jù)庫(kù)自身的 DM 管理工具進(jìn)行連接。
DM 數(shù)據(jù)庫(kù)管理工具存放在安裝目錄 dmdbms 下的 tool 文件夾中打開 manager.exe 進(jìn)行連接即可。
?
MANAGER 如何保存登錄信息
DM 管理工具 MANAGER,在打開以后,可以通過(guò)注冊(cè)連接按鈕新建連接,該方新建的連接會(huì)保存到左側(cè)的連接導(dǎo)航欄中。
?
MANAGER 如何執(zhí)行 SQL
DM 管理工具 MANAGER,在登錄以后,右側(cè) SQL 窗口輸入 SQL 語(yǔ)句后,可以點(diǎn)擊工具欄上對(duì)應(yīng)的綠色三角按鈕執(zhí)行,完成后需要點(diǎn)擊后面的【提交】或者【回滾】按鈕完成事務(wù)的提交和回滾。
?
MANAGER 常用配置
- 打開管理工具-選項(xiàng)
?
- 在選項(xiàng)下有一些設(shè)置,DM 管理工具-窗口-選項(xiàng)??梢愿鶕?jù)實(shí)際需求進(jìn)行一些配置的調(diào)整。
- 消息區(qū)-顯示的最大字符數(shù)
會(huì)影響使用語(yǔ)句塊進(jìn)行批量循環(huán) PRINT 信息,需要調(diào)大。如果過(guò)小,消息區(qū)顯示的 SQL 內(nèi)容不全,PRINT 的信息也顯示不全。
- 大小寫敏感
如果不是必須大小寫敏感,建議將管理工具上保持大小寫敏感配置取消,這樣后臺(tái)全部轉(zhuǎn)換成大寫,就不會(huì)造成表名、字段名等由于大小寫緣故出現(xiàn)無(wú)效的字段或者表名之類的錯(cuò)誤。
- 出錯(cuò)后繼續(xù)執(zhí)行
生產(chǎn)環(huán)境要關(guān)閉自動(dòng)提交和出錯(cuò)后繼續(xù)運(yùn)行的配置,避免出現(xiàn)錯(cuò)誤后,無(wú)法挽回。
?
- 顯示的最大字符數(shù)
?
?
?
MANAGER 寫 SQL 時(shí)如何提示表名
DM 數(shù)據(jù)庫(kù)中可以模糊提示表名,在 DM 管理工具中右鍵【選項(xiàng)】,把編輯器中需要的選項(xiàng)全部勾選上。
?
根據(jù)需要勾選好就可以達(dá)到自己想要的設(shè)置了。
圖形化界面處理自增參數(shù)
DM 支持 INT 和 BIGINT 兩種數(shù)據(jù)類型的自增列,并提供以下函數(shù)查看表上自增列的當(dāng)前值、種子和增量等信息:
IDENT_CURRENT:獲得表上自增列的當(dāng)前值;
IDENT_SEED:獲得表上自增列的種子信息;
IDENT_INCR:獲得表上自增列的增量信息。
在新建表的時(shí)候,選中表-修改-把對(duì)應(yīng)列設(shè)置為自增列。
?
使用 DM 管理工具更新表數(shù)據(jù)
登錄用戶,找到【模式】,找到相關(guān)的表,點(diǎn)擊右鍵,選擇【瀏覽數(shù)據(jù)】,將列表中的數(shù)據(jù)拉到最底下,點(diǎn)擊【not null】輸入數(shù)據(jù),然后點(diǎn)擊保存。
?
?
執(zhí)行插入語(yǔ)句提示成功但數(shù)據(jù)并沒有真正保存
管理工具默認(rèn)是非自動(dòng)提交的(窗口—選項(xiàng)),在執(zhí)行 insert、update 等對(duì)數(shù)據(jù)進(jìn)行修改的語(yǔ)句以后,需要執(zhí)行 commit 命令進(jìn)行提交。
如需修改成自動(dòng)提交模式,可以在管理工具的對(duì)應(yīng)選項(xiàng)中進(jìn)行勾選,如下圖所示:
?
非法的基類名\無(wú)效的列名
使用 DM 管理工具訪問 DM 數(shù)據(jù)庫(kù),在使用圖形化工具查看數(shù)據(jù)庫(kù)對(duì)象時(shí),報(bào)錯(cuò):非法的基類名/無(wú)效的列名等。
- 這種情況一般發(fā)生在客戶端工具與服務(wù)器的版本差別較大的時(shí)候,需要更新客戶端,并與服務(wù)器版本保持一致。
- 需要啟動(dòng)系統(tǒng)包,比如?
非法的基類名 DBMS_SQL
,啟動(dòng)相應(yīng)的系統(tǒng)包,具體方法參考《DM 系統(tǒng)包使用手冊(cè)》(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc/special
?文件夾下)。
disql 連接工具的位置
數(shù)據(jù)庫(kù) disql 連接工具的存放位置,在 Linux 環(huán)境下假設(shè)數(shù)據(jù)庫(kù)安裝目錄在 /opt/dmdbms/ 目錄下,進(jìn)入 /opt/dmdbms/bin 下執(zhí)行?./disql
?輸入對(duì)應(yīng)的用戶名和密碼即可訪問數(shù)據(jù)庫(kù)。
?
DM 命令行工具位于數(shù)據(jù)庫(kù)安裝目錄的 bin 下,圖形化工具位于數(shù)據(jù)庫(kù)安裝目錄的 tool 下。我們以 Linux 環(huán)境為例,假設(shè) DM 數(shù)據(jù)庫(kù)安裝目錄為 /opt/dmdbms 下,則命令行工具都在 /opt/dmdbms/bin 下,常用的命令行工具包括并不限于:
實(shí)例初始化工具 dminit
命令行客戶端工具 disql
邏輯導(dǎo)入導(dǎo)出工具 dimp/dexp
數(shù)據(jù)庫(kù)校驗(yàn)工具 dmdbchk
core 文件讀取工具 dmrdc
數(shù)據(jù)庫(kù)恢復(fù)管理工具 dmrman
脫機(jī)備份/還原工具 dmbackup/dmrestore
快速數(shù)據(jù)裝載工具 dmfldr
集群監(jiān)控工具 dmmonitor
數(shù)據(jù)庫(kù)重演工具 dreplay
解析日志工具 dmlcvt
命令行終端工具的使用
DM 數(shù)據(jù)庫(kù)提供了類似于 Oracle 的 sqlplus 的終端工具,即 DM 命令行客戶端工具 disql,工具的路徑在安裝路徑下的 ../dmdbms/bin/ 下,格式:?disql 用戶名/密碼@IP:端口號(hào)
Linux 環(huán)境基本使用方法如下(路徑以實(shí)際環(huán)境為準(zhǔn)):
$ cd /home/dmdba/dmdbms/bin
$ ./disql SYSDBA/SYSDBA@127.0.0.1:5236
?Windows 環(huán)境使用和 Linux 環(huán)境類似。
?
當(dāng)密碼后面不跟?@ip:port
?時(shí),則默認(rèn)為?@127.0.0.1:5236
。
更多功能的詳細(xì)使用方法請(qǐng)參考《DM_disql 使用手冊(cè)》。(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc/special
?文件夾下)。
運(yùn)行 SQL 文件/執(zhí)行 SQL 腳本
- Windows 環(huán)境
啟動(dòng) disql 時(shí),運(yùn)行腳本如下:
disql SYSDBA/SYSDBA `D:\test.sql
啟動(dòng) disql 之后,運(yùn)行腳本如下:
start D:\test.sql;
- Linux 環(huán)境
./disql SYSDBA/SYSDBA\ `/dev/test.sql**
具體使用方式,參考《DM_Disql 使用手冊(cè)》第 5 章節(jié)-如何在 Disql 中使用腳本。(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc/special
?文件夾下)。
SYSDBA 用戶名稱能修改嗎
SYSDBA 是超級(jí)管理員,無(wú)法修改。
SYSDBA 模式下帶?##?的表不可以刪除
此為系統(tǒng)表,一般有兩張,##HISTOGRAMS_TABLE 、##PLAN_TABLE
。不可刪除。
沒有創(chuàng)建函數(shù)的權(quán)限/外部函數(shù)共享庫(kù)加載失敗
【問題描述】:
執(zhí)行創(chuàng)建外部 Java 函數(shù)的操作,提示沒有權(quán)限/沒有創(chuàng)建函數(shù)的權(quán)限/"外部函數(shù)共享庫(kù)加載失敗"
【解決方法】:
根據(jù)以下步驟進(jìn)行排查:
- 檢查參數(shù) ENABLE_EXTERNAL_CALL 是否等于 1,在 dm.ini 里面修改?
ENABLE_EXTERNAL_CALL = 1
?重啟數(shù)據(jù)庫(kù)服務(wù)才能創(chuàng)建外部函數(shù)。 - 檢查 jar 包所在絕對(duì)路徑是否正確;
- 檢查 dmagent 配置是否正確,自建的 jar 包能否正常調(diào)用。
- 檢查 jar 包打包方式,若 jar 包中存在多個(gè)主類,使用 Maven 進(jìn)行打包會(huì)導(dǎo)致依賴不全,外部函數(shù)無(wú)法調(diào)用。正確打包方式應(yīng)使用 Build Artifacts 打包,指定好主類集所有依賴包在項(xiàng)目中打包成一個(gè) jar,這樣能確保 jar 包能正常調(diào)用。打包方式如下圖所示。
(1)點(diǎn)擊 文件--> 項(xiàng)目結(jié)構(gòu)---> 工件,添加 jar。?
(2)指定好主類。
(3)左上角菜單欄 構(gòu)建---> 構(gòu)建工件,即可完成多主類 jar 包的打包。 - 更多外部函數(shù)正確調(diào)用過(guò)程,請(qǐng)參考《DM_SQL 語(yǔ)言使用手冊(cè)》第 10 章節(jié)。(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?
/dmdbms/doc
?文件夾下)。
[-70070]: Init SSL context error
【問題描述】:
在安全版數(shù)據(jù)庫(kù)中,使用 disql 或是 客戶端登錄時(shí),顯示:
stat private key fail [-70070]: Init SSL context error 或者 [-70070]:初始化 SSL 環(huán)境失敗
要如何解決?
【解決方法】:
檢查初始化參數(shù) ENABLE_ENCRYPT 是否設(shè)為 1,如果為 1,說(shuō)明所有的通信都已經(jīng) SSL 加密了,同時(shí)任何用戶連接數(shù)據(jù)庫(kù)都需要 SSL 證書。安全版中默認(rèn)開啟了 SSL 加密。
如果鏈接的時(shí)候不需要 SSL 證書 ,可將 ENABLE_ENCRYPT 設(shè)置為 0。執(zhí)行以下語(yǔ)句將其關(guān)閉:
sp_set_para_value(2,'ENABLE_ENCRYPT',0);
執(zhí)行完后重啟數(shù)據(jù)庫(kù)才能生效。
ENABLE_ENCRYPT 參數(shù)是在 DM.INI 配置文件里面設(shè)置,其他設(shè)置方法參考《DM 系統(tǒng)管理員手冊(cè)》第 2.1 小節(jié)(手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc
?文件夾下)。
在確認(rèn)使用 SSL 加密的情況下,有以下幾種可能的原因:
- 輸入的 SSL 驗(yàn)證密碼不正確:
如果是通過(guò) jdbc 接口來(lái)加密訪問數(shù)據(jù)庫(kù),是使用的.keystore 文件,所以 SSL 認(rèn)證密碼是 keystore 文件的密碼;
如果是通過(guò) ODBC 或者其他方式加密訪問數(shù)據(jù)庫(kù),那么是使用 ca-cert.pem、client-cert.pem 和 client-key.pem 三個(gè)文件,所以 SSL 密碼為客戶端私鑰密碼。 - 證書文件可能存在問題;
- 當(dāng)前操作系統(tǒng)用戶無(wú)訪問客戶端證書的權(quán)限;
對(duì)應(yīng)的處理方法為:
- 檢查驗(yàn)證客戶端私鑰密碼或者 keystore 文件密碼是否正確,或者直接重新生成客戶端證書等文件;
- 使用多種方式登錄測(cè)試驗(yàn)證,比如使用 disql 和 jdbc 兩種方式進(jìn)行測(cè)試驗(yàn)證;
- 檢查當(dāng)前用戶是否有訪問客戶端證書的權(quán)限,或者將證書目錄權(quán)限設(shè)置為 777,比如:chmod 777 -R client_ssl;
客戶端和服務(wù)端的通信協(xié)議
TCP/IP 協(xié)議,可以通過(guò) SSL 加密。
如果想擁有審計(jì) SQL 語(yǔ)句的功能,建議通過(guò)?sp_set_para_value(1,’SVR_LOG’,1)
,配合修改 sqllog.ini 生成 SQL 日志(詳見《DM 系統(tǒng)管理員手冊(cè)》-2.1.1 章節(jié),手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc
?文件夾下),對(duì)生成的日志文件進(jìn)行審計(jì)。如果是希望在網(wǎng)絡(luò)層通過(guò)截取消息包進(jìn)行解析,從而獲取 SQL,建議通過(guò)商務(wù)聯(lián)系,進(jìn)行產(chǎn)品適配。
能否在 Windows 連接 Linux 服務(wù)器上的達(dá)夢(mèng)數(shù)據(jù)庫(kù)
使用 DM 數(shù)據(jù)庫(kù)客戶端工具可以實(shí)現(xiàn)在 Windows 上連接 Linux 服務(wù)器。
達(dá)夢(mèng)有沒有生成 uuid 的函數(shù)
使用 guid() 函數(shù)查詢:
SELECT SYS_GUID();
SELECT GUID();
查詢時(shí)如何忽略值的大小寫
- 初始化數(shù)據(jù)庫(kù)實(shí)例的時(shí)候,“大小寫敏感”參數(shù)設(shè)置成“N”。
- 用函數(shù)進(jìn)行查詢。
管理工具連接達(dá)夢(mèng)數(shù)據(jù)庫(kù)報(bào)錯(cuò):argument cannot be null
客戶端和服務(wù)端版本不匹配,比如高版本連接低版本等。
達(dá)夢(mèng)管理工具有 Format/美化的功能嗎
使用快捷鍵?crtl+shift+F
?或使用右鍵菜單-->SQL 腳本--> 格式化
批量執(zhí)行任務(wù)的時(shí)候,執(zhí)行幾句就報(bào)錯(cuò)
數(shù)據(jù)庫(kù)日志有這個(gè)錯(cuò)誤,批量執(zhí)行任務(wù)的時(shí)候,執(zhí)行幾句就報(bào)錯(cuò):Database P0000024537 main_thread cmd 13 validate error
可以把 dm.ini 參數(shù)配置文件里面的參數(shù) COMM_VALIDATE(是否對(duì)消息進(jìn)行校驗(yàn)。0:不檢驗(yàn);1:檢驗(yàn)) 設(shè)置成 0。
Failure occurs in data_recv_inet_once
這是通信中產(chǎn)生的告警信息,錯(cuò)誤代碼是操作系統(tǒng)返回的,107 Transport endpoint 傳輸終點(diǎn)沒有連接,在系統(tǒng)繁忙的時(shí)候會(huì)刷這個(gè),通??梢院雎?。
如何啟用/刪除系統(tǒng)包?
SP_CREATE_SYSTEM_PACKAGES(1);--啟動(dòng)
SP_CREATE_SYSTEM_PACKAGES(0);--刪除
可以參考《DM 系統(tǒng)包使用手冊(cè)》,手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc/special?文件夾。
如何和 Oracle 一樣 nvl 函數(shù)處理值
【問題描述】:
Oracle 中 nvl 函數(shù)處理的值,達(dá)夢(mèng)數(shù)據(jù)庫(kù)用 ifnull/isnull/nvl 處理,我看數(shù)據(jù)庫(kù)值是 NULL 才處理了,’’就不能處理,怎么和 Oracle 一樣處理?
【解決方法】:
將 dm.ini 的參數(shù) COMPATIBLE_MODE 改成 2,處理 NULL 的方式就和 Oracle 一樣了。
DM 如何將空字符串自動(dòng)轉(zhuǎn)換為 NULL
將 dm.ini 的參數(shù) COMPATIBLE_MODE 改成 2。
如何在工具里可視化插入一條數(shù)據(jù)
在 DM 管理工具中,右鍵點(diǎn)擊【表】,瀏覽數(shù)據(jù):
?
直接在結(jié)果集進(jìn)行編輯,然后點(diǎn)擊右鍵選擇【保存】:
?
存儲(chǔ)過(guò)程使用動(dòng)態(tài)數(shù)組報(bào)錯(cuò):標(biāo)識(shí)符長(zhǎng)度非法
檢查 dm.ini 參數(shù) COMPATIBLE_MODE,如果值為 3,達(dá)夢(mèng)數(shù)據(jù)庫(kù)為兼容 SQL Server 的模式,則不支持?jǐn)?shù)組,可以選擇改變兼容模式或使用動(dòng)態(tài)表改寫。
當(dāng)指定列列表,且 SET IDENTITY_INSERT 為 ON 時(shí),才能對(duì)自增列賦值
這個(gè)是會(huì)話級(jí)的,而且同一會(huì)話只能有一個(gè)表 set,當(dāng)插入數(shù)據(jù)并且要指定自增列的值時(shí),必須要通過(guò)語(yǔ)句將 IDENTITY_INSERT 設(shè)置為 ON 時(shí),插入語(yǔ)句中必須指定“PERSON_ TYPEID ”(舉例)中要插入的列。對(duì)自增列插入指定數(shù)據(jù)時(shí)候,先執(zhí)行一下 SET IDENTITY xxx 就行了。
一般情況下,當(dāng)數(shù)據(jù)表中,某一列被設(shè)置成了標(biāo)識(shí)列之后,是無(wú)法向標(biāo)識(shí)列中手動(dòng)的去插入標(biāo)識(shí)列的顯示值。但是,可以通過(guò)設(shè)置 SET IDENTITY_INSERT 屬性來(lái)實(shí)現(xiàn)對(duì)標(biāo)識(shí)列中顯示值的手動(dòng)插入。
語(yǔ)法:
- .SET IDENTITY_INSERT 表名 ON :表示開啟對(duì)標(biāo)識(shí)列顯示值插入模式,允許對(duì)標(biāo)識(shí)列顯示值進(jìn)行手動(dòng)插入數(shù)據(jù)。
- .SET IDENTITY_INSERT 表名 OFF:表示關(guān)閉對(duì)標(biāo)識(shí)列顯示值的插入操作,標(biāo)識(shí)列不允許手動(dòng)插入顯示值。
注意IDENTITY_INSERT 的開啟 ON 和關(guān)閉 OFF 是成對(duì)出現(xiàn)的,所以,在執(zhí)行完手動(dòng)插入操作之后,記得一定要把 IDENTITY_INSERT 設(shè)置為OFF,否則下次的自動(dòng)插入數(shù)據(jù)會(huì)插入失敗。
用戶賬戶鎖定了,怎么解鎖
使用系統(tǒng)管理員登錄執(zhí)行:
alter user '用戶名' account unlock;
也可以使用管理工具進(jìn)行可視化處理:
?
?
是否支持開啟 cdc 或者類似 binlog 功能,提供實(shí)時(shí)監(jiān)控采集數(shù)據(jù)到外部的功能么?比如實(shí)時(shí)到 kafka
可通過(guò)達(dá)夢(mèng)數(shù)據(jù)實(shí)時(shí)同步軟件 DMHS,來(lái)進(jìn)行處理同步推送。
DM8 是否支持 OLEDB 驅(qū)動(dòng)
DM8 不支持 OLEDB 驅(qū)動(dòng),請(qǐng)用達(dá)夢(mèng)的 ODBC 驅(qū)動(dòng)代替。
服務(wù)啟動(dòng)后使用管理工具登錄時(shí)會(huì)報(bào)系統(tǒng)錯(cuò)誤
- 重啟下數(shù)據(jù)庫(kù),看問題是否解決。若重啟后解決,可能是舊版本 BUG,建議升級(jí)數(shù)據(jù)庫(kù)版本徹底解決此問題,或者定期重啟數(shù)據(jù)庫(kù)。
- 如果重啟數(shù)據(jù)庫(kù)后還是報(bào)錯(cuò),可能是客戶端與數(shù)據(jù)庫(kù)版本不匹配導(dǎo)致的,需要將客戶端和服務(wù)端版本換成一致的。
管理工具執(zhí)行 SQL 文件,出現(xiàn)亂碼
需要確保操作系統(tǒng)、數(shù)據(jù)庫(kù)、SQL 文本三者字符集一致,避免出現(xiàn)亂碼。
前臺(tái)啟動(dòng)數(shù)據(jù)庫(kù)顯示亂碼
更改連接工具字符集,確保同服務(wù)器字符集一致。
達(dá)夢(mèng)事務(wù)/SQL 自動(dòng)提交設(shè)置
- 默認(rèn)非自動(dòng)提交
- 管理工具設(shè)置自動(dòng)提交方式:窗口-選項(xiàng)-查詢分析器-自動(dòng)提交
如何調(diào)出達(dá)夢(mèng)的可視化管理工具
進(jìn)入到安裝目錄的 tool 目錄下:
- Windows 系統(tǒng):可以直接雙擊運(yùn)行
- Linux 系統(tǒng):./manager
報(bào)錯(cuò):沒有[V$CIPHERS]對(duì)象的查詢權(quán)限
修改用戶所屬角色,勾選授予 VTI 權(quán)限,或者用 sysdba 給賬號(hào)權(quán)限:
grant select on XXX to XXX;
達(dá)夢(mèng)管理工具打開報(bào)錯(cuò):faild to create the java virtual machine
- 可能是和其他軟件沖突了。先關(guān)閉掉其他軟件,再打開管理工具試試。
- 服務(wù)器內(nèi)存不夠。
DISQL 中設(shè)置了 set autocommit on; 但 manager 工具還是需要 commit, 數(shù)據(jù)才能入庫(kù)
需要設(shè)置選擇管理工具-窗口-選項(xiàng)-查詢分析器-自動(dòng)提交
客戶端執(zhí)行腳本時(shí)報(bào)錯(cuò)內(nèi)存不足
- 分段執(zhí)行 SQL 腳本;
- 點(diǎn)擊客戶端右下角垃圾收集,縮小堆大小,釋放空間。
?
執(zhí)行 SQL 腳本,報(bào)錯(cuò) invalid file path 錯(cuò)誤
- 檢查 SQL 腳本路徑是否正確,要腳本的絕對(duì)路徑。
- start d:/test.sql 注意,在該語(yǔ)句后面不要加";"結(jié)束符。
語(yǔ)句塊/包/存儲(chǔ)函數(shù)中的間隔分區(qū)如何支持自動(dòng)擴(kuò)展
可以設(shè)置 dm.ini 參數(shù):DEL_HP_OPT_FLAG 取值為 4,允許語(yǔ)句塊中的間隔分區(qū)表自動(dòng)擴(kuò)展。
創(chuàng)建局部唯一索引或者 primary key, 必須包含分區(qū)列。全局索引不受此限制
執(zhí)行下列語(yǔ)句:
create unique index "index_02" on "USER01"."TABLE_1"("COLUMN_1");
錯(cuò)誤號(hào): -2683
錯(cuò)誤消息: 第 1 行附近出現(xiàn)錯(cuò)誤:局部唯一索引必須包含全部分區(qū)列
遠(yuǎn)程 linux 的數(shù)據(jù)庫(kù)服務(wù)端,一定要關(guān)閉防火墻嗎
如果不關(guān)閉防火墻的話 要把相關(guān)端口加入到策略里。
運(yùn)行管理工具報(bào)錯(cuò):screen for GtkWindow not set
【問題描述】:
dmdba 用戶在 /home/dmdba/dmdbms/tool 路徑下,執(zhí)行 ./manager 報(bào)錯(cuò)。
screen for GtkWindow not set; you must always set a screen for a GtkWindow before using the Window
dmdba 用戶執(zhí)行 xhost + 可以正常出來(lái) access control disabled, clients can connect from any host.
【問題解答】:
這個(gè)是圖形化界面打不開的問題,建議咨詢操作系統(tǒng)技術(shù)人員。或者改用命令行方式進(jìn)行數(shù)據(jù)庫(kù)操作。
運(yùn)行./manager 或者./dts 圖形工具開啟報(bào)錯(cuò)
【問題描述】:
數(shù)據(jù)庫(kù)用命令行的方式可以正常啟動(dòng)。
用 dmdba 的用戶在 tool 目錄下運(yùn)行./manager 或者./dts 會(huì)報(bào)錯(cuò):/usr/share/themes/kylin-black-theme/gtk-2.0/gtkrc:817: 找不到包含文件:“apps/caja.rc”
【問題解答】:
這個(gè)是圖形化界面打不開的問題,建議咨詢操作系統(tǒng)技術(shù)人員?;蛘吒挠妹钚蟹绞竭M(jìn)行數(shù)據(jù)庫(kù)操作。
使用管理工具和 ddl 腳本修改表的注釋之后,注釋在管理工具中不顯示
? ? ? ? 1.在管理工具中修改表的注釋,如圖所示:
?
? ? ? ? 2.如果使用 SQL 腳本修改表的注釋,執(zhí)行結(jié)束后需要執(zhí)行 commit 提交操作:
?
也可以設(shè)置管理工具的菜單:窗口--> 選項(xiàng)--> 查詢分析器--> 自動(dòng)提交 進(jìn)行勾選。如下圖:
?
注意修改后需要在管理工具的對(duì)應(yīng)表的上級(jí)節(jié)點(diǎn)上進(jìn)行刷新操作。
?
表插入數(shù)據(jù)以后,重啟服務(wù)或停止服務(wù)后開啟服務(wù),表里面的數(shù)據(jù)丟失
默認(rèn)是手動(dòng)提交的方式,執(zhí)行數(shù)據(jù)插入語(yǔ)句后,需要執(zhí)行 commit 進(jìn)行提交,否則會(huì)回滾。
用戶名密碼錯(cuò)誤
- 注意大小寫敏感
修改密碼語(yǔ)句中密碼未加雙引號(hào),登陸需要把小寫字母全部改為大寫; - 注意不要用操作系統(tǒng)的用戶名和密碼輸入,用數(shù)據(jù)庫(kù)的用戶名密碼登陸 ,默認(rèn)是 SYSDBA/SYSDBA;
- 注意登陸端口是否正確,可以試著添加 IP 和端口號(hào)來(lái)登陸;
- 如果是全庫(kù)備份還原,注意在目的庫(kù)上,再次登陸的時(shí)候,用戶名密碼要用源庫(kù)的。
linux 系統(tǒng)中,打開管理工具亂碼
回答:可能是因?yàn)椴僮飨到y(tǒng)缺少中文字庫(kù),確保操作系統(tǒng)、數(shù)據(jù)庫(kù)的字符集一致。
DM 集群中,通過(guò) disql 無(wú)法連接數(shù)據(jù)庫(kù),manager 工具可以連
【問題說(shuō)明】:
主備集群中,通過(guò) disql 無(wú)法連接數(shù)據(jù)庫(kù),manager 工具可以連。報(bào)沒有匹配的可登錄服務(wù)器。查看 dm_svc.conf 如下:
TIME_ZONE=(480)
LANGUAGE=(cn)
OA=(192.168.xx.xx:5236,192.168.xx.xx:5236)
LOGIN_MODE=(1)
【解決方法】:
服務(wù)名中配置的 LOGIN_MODE 為全局模式,需要把 LOGIN_MODE 配置在 OA 服務(wù)名下,如下:
TIME_ZONE=(480)
LANGUAGE=(cn)
OA=(192.168.xx.xx:5236,192.168.xx.xx:5236)
[OA]
LOGIN_MODE=(1)
訪問達(dá)夢(mèng)數(shù)據(jù)庫(kù)報(bào)錯(cuò):無(wú)效的 ip
-
檢查防火墻狀態(tài),關(guān)閉防火墻
systemctl status firewalld
service iptables status
- 查看用戶和用戶狀態(tài)
select username,ACCOUNT_STATUS from dba_users;
- 查看用戶 訪問 ip 限制和資源限制,看 IP 是否設(shè)置在資源限制里。
select id,failed_num,allow_addr from sysusers;
- 修改用戶 資源限制條件
alter user 用戶 limit allow_ip null;
在達(dá)夢(mèng)管理工具上怎么修改結(jié)果集?
單表結(jié)果集能修改,多表結(jié)果集不能修改。
修改方法:將結(jié)果集右下方的小鎖解開
?
密碼非明文登錄 DISQL 方法
默認(rèn) DISQL 登錄數(shù)據(jù)庫(kù)密碼是明文,以下登錄方式可以不顯示密碼:
./disql /nolog 登錄 DISQL 后,輸入 login 登錄數(shù)據(jù)庫(kù),按照提示填寫 IP 號(hào)、用戶名、密碼、端口號(hào)等選項(xiàng);
?
如果想要不用每次登錄都輸入端口,可以在配置文件 dm_svc.conf 中配置
?
指定 dm_svc.conf 非默認(rèn)位置
dm8.1.1.144 版本之后 jdbc 的 url 參數(shù)增加 dmsvcconf,實(shí)現(xiàn)讀取指定 url 屬性配置文件所在路徑
用法:
jdbc:dm://dm?dmsvcconf=此處為dm_svc.conf的文件位置
數(shù)據(jù)庫(kù)設(shè)置手動(dòng)提交模式,但執(zhí)行新建表后,發(fā)現(xiàn)之前未提交事務(wù)已被自動(dòng)提交
【問題描述】:
在 MANAGER 管理平臺(tái)執(zhí)行完一些新增記錄事務(wù)后未提交,后面新建表后,發(fā)現(xiàn)之前的未提交事務(wù)已被自動(dòng)提交。例如:在同一會(huì)話中依次執(zhí)行以下 3 條語(yǔ)句,且均不提交:
create table SYSDBA.TEST (a int);
insert into SYSDBA.TEST values(1);
create table SYSDBA.TEST2 (a int);
在另一會(huì)話中查詢 SYSDBA.TEST 表,得到如下結(jié)果
?
發(fā)現(xiàn)可以查到會(huì)話 1 插入的語(yǔ)句,說(shuō)明 insert 語(yǔ)句已經(jīng)提交。
【問題解答】:
在手動(dòng)提交模式下,當(dāng)遇到 DDL 語(yǔ)句時(shí),DM 數(shù)據(jù)庫(kù)會(huì)自動(dòng)提交前面的事務(wù),然后開始一個(gè)新的事務(wù)執(zhí)行 DDL 語(yǔ)句,這種事務(wù)提交被稱為隱式提交。DM 數(shù)據(jù)庫(kù)在遇到以下 SQL 語(yǔ)句時(shí)會(huì)自動(dòng)提交前面的事務(wù):
- CREATE;
- ALTER;
- TRUNCATE;
- DROP;
- GRANT;
- REVOKE;
- 審計(jì)設(shè)置語(yǔ)句。
DM8 創(chuàng)建鏈接訪問 Oracle 數(shù)據(jù)庫(kù)報(bào)錯(cuò):DBLINK 加載庫(kù)文件失敗
【問題描述】:
使用 DBLINK 訪問 Oracle 目的端報(bào)錯(cuò)"DBLINK 加載庫(kù)文件失敗" 。
報(bào)錯(cuò)信息為:[-2245]:Error in line: 1 DBLINK load library fail.
【問題解決】:
第一種情況:DM DBLINK 使用的是 ODBC 方式創(chuàng)建,一般是由于 Oracle odbc 驅(qū)動(dòng)包缺少依賴庫(kù)文件導(dǎo)致。
解決辦法:首先,使用 ldd 命令檢查 Oracle odbc 驅(qū)動(dòng)包是否缺少依賴庫(kù)文件。如下:
[root@localhost instantclient_19_13]# ldd libsqora.so.19.1
linux-vdso.so.1 => (0x00007ffeef3cd000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffafac45000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffafa943000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffafa727000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007ffafa50d000)
librt.so.1 => /lib64/librt.so.1 (0x00007ffafa305000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007ffafa103000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ffaf9ee9000)
libclntsh.so.19.1 => /opt/oracle/instantclient_19_13/libclntsh.so.19.1 (0x00007ffaf5d76000)
libclntshcore.so.19.1 => /opt/oracle/instantclient_19_13/libclntshcore.so.19.1 (0x00007ffaf57d2000)
libodbcinst.so.2 => not found ###這里缺少依賴
libc.so.6 => /lib64/libc.so.6 (0x00007ffaf5404000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffafb103000)
libnnz19.so => /opt/oracle/instantclient_19_13/libnnz19.so (0x00007ffaf4d92000)
然后,使用 find 命令查找系統(tǒng)上對(duì)應(yīng)的動(dòng)態(tài)庫(kù)文件,查找到之后加入到 LD_LIBRARY_PATH 系統(tǒng)環(huán)境變量,或者添加到 /etc/ld.so.conf.d 目錄下指定的配置文件中。如下:
[root@localhost ~]# echo /usr/local/lib > /etc/ld.so.conf.d/libodbc.conf
[root@localhost ~]# ldconfig
第二種情況:DM DBLINK 使用的是 Oracle OCI 方式創(chuàng)建,一般是由于 DM 數(shù)據(jù)庫(kù)未加載 Oracle OCI 驅(qū)動(dòng)。
解決辦法:首先配置 Oracle oci 客戶端,在 Oracle 官網(wǎng)下載 oci 包,根據(jù)達(dá)夢(mèng)服務(wù)器的系統(tǒng)下載 oracle 相應(yīng)系統(tǒng)的安裝包 instantclient,例如下載的是 instantclient-basic-linux.x64-12.2.0.1.0 包,解壓后創(chuàng)建軟連接:
ln -s libclntsh.so.12.1 libclntsh.so
然后需要重啟 DM 數(shù)據(jù)庫(kù)(前提是 LD_LIBRARY_PATH 或者 ldconfig 配置正確),重啟服務(wù)后數(shù)據(jù)庫(kù)會(huì)加載 Oracle OCI 驅(qū)動(dòng),之后就可以正常使用 DBLINK 訪問 Oracle 數(shù)據(jù)庫(kù)。
--達(dá)夢(mèng) 8 創(chuàng)建 Oracle 的鏈接服務(wù)
create link LINK1 connect 'ORACLE' with "test" identified by "******" using '192.168.80.140/orcl';
--通過(guò)鏈接訪問 Oracle 表 CITY
select * from CITY@LINK1;
使用 xmanger 等工具打開遠(yuǎn)程服務(wù)器上的管理工具報(bào)錯(cuò)
【問題描述】:
使用 xmanger 等工具打開遠(yuǎn)程服務(wù)器上的 manager 圖形工具報(bào)錯(cuò),如下圖:
?
依據(jù)提示查看 ../workspace/manager/.metadata/.log 日志文件,提示缺少庫(kù)文件 libgtk-x11-2.0.so.0,而無(wú)法打開圖形窗口,如下圖:
?
【問題解決】:
使用 yum 命令查找提供這個(gè)庫(kù)文件的軟件包,如下圖:
?
安裝 gtk2 這個(gè)軟件包:
Yum install gtk2* -y
Manager 管理工具連接后沒有模式等相關(guān)信息
【問題分析】:
出現(xiàn)這種情況一般有如下兩種原因:
- 檢查數(shù)據(jù)庫(kù)啟動(dòng)狀態(tài),若是以 mount 方式啟動(dòng),修改為 open 狀態(tài)即可。
- 客戶端版本和數(shù)據(jù)庫(kù)服務(wù)的版本相差太多的問題,請(qǐng)使用服務(wù)版本下客戶端,或者重新下載對(duì)應(yīng)的安裝包安裝對(duì)應(yīng)版本客戶端。
使用 disql 連接數(shù)據(jù)庫(kù)報(bào)錯(cuò):沒有匹配的可登陸服務(wù)器
【問題描述】:
數(shù)據(jù)庫(kù)服務(wù)處于啟動(dòng)狀態(tài),通過(guò)數(shù)據(jù)庫(kù)服務(wù)本地登錄 disql 登錄數(shù)據(jù)庫(kù)用戶,顯示報(bào)錯(cuò):-70019:沒有匹配的可登錄服務(wù)器。
【問題解決】:
出現(xiàn)如上報(bào)錯(cuò),可根據(jù)以下思路進(jìn)行排查:
-
明確數(shù)據(jù)庫(kù)服務(wù)處于啟動(dòng)狀態(tài),通過(guò)?
ps -ef|grep dmserver
?查看進(jìn)程。 -
檢查 disql 連接數(shù)據(jù)庫(kù)的端口是否正確,可以通過(guò)?
netstat -ntlp | grep dmsever
?或者?cat dm.ini | grep PORT_NUM
?查看,參考登錄命令:./disql 用戶名/密碼 @IP:端口號(hào) 。 -
檢查是否由數(shù)據(jù)庫(kù)連接會(huì)話數(shù)超過(guò) MAX_SESSIONS 設(shè)定值引發(fā)。檢查方法有兩種:
(1)排查數(shù)據(jù)庫(kù)服務(wù)本地日志中是否存在類似于“Reached the max session limit” 的 ERROR 錯(cuò)誤,如果存在,則說(shuō)明數(shù)據(jù)庫(kù)連接的會(huì)話數(shù)超過(guò)了 MAX_SESSIONS 設(shè)定值??梢哉{(diào)整 dm.ini 中的 MAX_SESSIONS 參數(shù)值,重啟數(shù)據(jù)庫(kù)服務(wù)生效(MAX_SESSIONS 原則上應(yīng)綜合考慮數(shù)據(jù)庫(kù)架構(gòu)、業(yè)務(wù)需求、應(yīng)用代碼層數(shù)據(jù)庫(kù)連接設(shè)計(jì)邏輯等方面進(jìn)行設(shè)置)。
(2)通過(guò) dmserver 服務(wù)的線程連接情況判斷,比如:通過(guò)?
ps -ef | grep dmserver
?獲取 dmserver 的進(jìn)程號(hào),比如為 5009,然后通過(guò)命令:ps -T -p 5009 | wc -l
查看達(dá)夢(mèng)服務(wù)的線程數(shù)是否超過(guò) MAX_SESSIONS 的值。 -
檢查 dm_svc.conf,是否配置了全局的 login_mode 參數(shù),如果是,刪除全局的 login_mode 參數(shù),配置為局部參數(shù)。
應(yīng)用通過(guò)私網(wǎng) IP 連接數(shù)據(jù)報(bào)錯(cuò):網(wǎng)絡(luò)通信異常
【問題描述】:
應(yīng)用和數(shù)據(jù)分別部署在兩臺(tái)虛擬機(jī)上,但應(yīng)用通過(guò)虛擬機(jī)配置的私網(wǎng) IP 連接報(bào)網(wǎng)絡(luò)通信異常,且實(shí)際用私網(wǎng) IP 可以 ping 通。
【問題解決】:
考慮將私網(wǎng) IP 改為綁定的彈性 IP 進(jìn)行連接。在虛擬環(huán)境下,可能網(wǎng)絡(luò)需要進(jìn)行多次測(cè)試。
Manager 管理工具無(wú)法修改表、更新統(tǒng)計(jì)信息以及查看表屬性
【問題分析】:
考慮是否因?yàn)樵?dm.ini 中屏蔽了一部分關(guān)鍵字導(dǎo)致管理工具的部分功能不能正常運(yùn)行,去掉關(guān)鍵字進(jìn)行排查。
建議關(guān)鍵字放在 dm_svc.conf 文件的 keywords 中來(lái)屏蔽。
使用 DM 客戶端管理工具進(jìn)行某些操作時(shí),彈框報(bào)錯(cuò):Java heap space
【問題解決】:
考慮是否是客戶端版本與連接的數(shù)據(jù)庫(kù)服務(wù)端版本時(shí)間跨度太大,建議使用與 DM 服務(wù)端版本一致的客戶端重新安裝。查看數(shù)據(jù)庫(kù)版本方法:
select * from v$license; ---DM7 版本
select id_code; ---DM8 版本
manager 工具關(guān)閉了對(duì)象導(dǎo)航欄后如何重新打開
【問題解決】:
在管理工具上方導(dǎo)航欄中,選擇:窗口--> 視圖--> 對(duì)象導(dǎo)航,即可重新開啟對(duì)象導(dǎo)航欄。
?
在 linux 環(huán)境下打開 SQL 命令行工具,按“Backspace”無(wú)法正常刪除
【問題描述】:
利用 disql 打開 SQL 命令行工具,在輸入 SQL 命令時(shí),發(fā)現(xiàn)按“Backspace”無(wú)法正常刪除,如下圖所示:
?
【問題解決】:
- 方法一:在 dmdba 用戶的 .bash_profile 文件中添加 stty erase ^h,再執(zhí)行 source .bash_profile 使修改生效。如下圖:
?
- 方法二:按住 Ctrl + Backspace 進(jìn)行刪除。
達(dá)夢(mèng)如何設(shè)置某用戶某些 IP 遠(yuǎn)程訪問
【問題解決】:
方法 1:通過(guò)達(dá)夢(mèng)客戶端 manager 工具進(jìn)行設(shè)置,如下圖所示:
?
方法 2:通過(guò) sql 語(yǔ)句修改。相關(guān)語(yǔ)法參考以下 sql:
---修改用戶的開放 IP(設(shè)置 IP 白名單)
alter user 用戶名 allow_ip "允許登錄的 IP1","允許登錄的 IP2";
---通過(guò)以下系統(tǒng)表查看用戶的開放 IP
select b.name,'"'||replace(a.allow_addr,'|','","')||'"' as allow_ip_list
from SYSUSERS a join SYSOBJECTS b on a.id=B.ID
where b.name='用戶名'
---設(shè)置 IP 黑名單
alter user "用戶名" not_allow_ip "192.168.1.1" ,"192.168.1.2","192.168.1.3";
---設(shè)置允許訪問的具體時(shí)間段
alter user "用戶名" allow_datetime "2022-10-10" "10:10:10" to "2022-12-12" "12:12:12";
---設(shè)置不允許訪問的規(guī)則時(shí)間段
alter user "用戶名" not_allow_datetime "FRI" "00:00:00" to "SAT" "23:59:59";
注意修改用戶的開放 IP 時(shí),多個(gè) IP 之間要用逗號(hào)隔開,當(dāng)已經(jīng)存在某些開放 IP 的情況下再新增開放 IP,一定要把之前的 IP 帶上,否則將會(huì)丟失之前的 IP 信息。
DM 數(shù)據(jù)庫(kù)使用 ODBC 方式創(chuàng)建 DBLINK 訪問 Oracle 時(shí)報(bào)錯(cuò) "[-70037]:字符串不完整" 或者中文顯示為問號(hào)
【問題描述】:
有如下兩種情況:
情況一:DBLINK 使用 ODBC 方式訪問目的表時(shí),中文顯示為問號(hào)。如下圖:
?
isql 直接訪問:
?
情況二:DBLINK 使用 ODBC 方式創(chuàng)建,重啟數(shù)據(jù)庫(kù)之后,訪問目的端表報(bào)錯(cuò) "[-70037]:字符串不完整"。
?
【問題原因】:
出現(xiàn)以上兩種情況的報(bào)錯(cuò)均與配置 NLS_LANG 環(huán)境變量有關(guān),以下方法以情況一為例,但同樣適用于解決情況二的報(bào)錯(cuò)。
可以看到上面,isql 直接訪問 Oracle ,以及達(dá)夢(mèng)通過(guò) ODBC 數(shù)據(jù)源訪問創(chuàng)建 DBLINK 訪問 Oracle 時(shí),中文會(huì)顯示亂碼,一般是與客戶端字符集環(huán)境有關(guān),可以通過(guò)設(shè)置 NLS_LANG 環(huán)境變量指定客戶端字符集。如下:
- 配置與 Oracle 數(shù)據(jù)庫(kù)相同的 NLS 環(huán)境
?
- 配置 NLS_LANG 環(huán)境變量,添加到.bash_profile 中
[dmdba@localhost bin]$ vim ~/.bash_profile ? ---添加下面內(nèi)容
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
[dmdba@localhost bin]$ source ~/.bash_profile
[dmdba@localhost bin]$ env|grep NLS_LANG
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
生效后,再次使用 isql 進(jìn)行查詢正常,但是 DBLINK 中還是亂碼,
這是由于 DM 數(shù)據(jù)庫(kù)啟動(dòng)時(shí)未將 NLS_LANG 環(huán)境變量加載導(dǎo)致。
如果在 DM 數(shù)據(jù)庫(kù)啟動(dòng)時(shí)未加載到 NLS_LANG 環(huán)境變量,即使是 disql 窗口配置了 NLS_LANG 環(huán)境變量并生效也是無(wú)法正常顯示中文的,所以在配置 NLS_LANG 環(huán)境變量生效后,需要在當(dāng)前會(huì)話窗口重啟 DM 數(shù)據(jù)庫(kù)后才能正常顯示中文。
此時(shí)可能會(huì)出現(xiàn)兩種異常情況:
1.配置 NLS_LANG 生效后啟動(dòng) DM 數(shù)據(jù)庫(kù),然后 disql 窗口未配置 NLS_LANG,isql 查詢中文顯示問號(hào),disql 查詢結(jié)果正常;
2.DM 數(shù)據(jù)庫(kù)啟動(dòng)會(huì)話窗口未配置 NLS_LANG,disql 窗口配置了 NLS_LANG 之后,isql 查詢正???,disql 查詢中文顯示問號(hào)。
以上異常情況有兩種解決辦法:
方法 1:使用 Oracle OCI 的方式創(chuàng)建 DBLINK。如果數(shù)據(jù)庫(kù)啟動(dòng)時(shí)未加載 Oracle OCI 驅(qū)動(dòng),需要重啟數(shù)據(jù)庫(kù)加載 Oracle OCI 驅(qū)動(dòng)。
?
方法 2:配置好 NLS_LANG 環(huán)境變量并生效后,在當(dāng)前窗口重啟 DM 數(shù)據(jù)庫(kù)服務(wù)。
達(dá)夢(mèng)數(shù)據(jù)庫(kù)如何使用 IPV6 連接
【問題解決】:
達(dá)夢(mèng)數(shù)據(jù)庫(kù)支持使用 IPv6 的地址訪問數(shù)據(jù)庫(kù)。與使用 IPv4 相比,在連接時(shí)需要指定相應(yīng)的格式:
1.使用 JDBC 連接時(shí),若使用 ipv6 地址,需要用 [] 指明是 ipv6 地址,即 ipv6 的地址需要包含在 [] 中。
例如:達(dá)夢(mèng)管理工具使用 IPV6 地址 fe80::1a2d:8be9:91f6:6b51,那么主機(jī)名那里則為 [fe80::1a2d:8be9:91f6:6b51]。
2.disql 工具使用 ipv6 地址連接時(shí),本地測(cè)試在 Linux 上與在 Windows 上的主要區(qū)別如下:
(1)Linux 上使用 disql 采用 ipv6 地址訪問,需要使用方括號(hào) [] 將 ipv6 地址 加 % 與 disql 機(jī)器的網(wǎng)絡(luò)接口名整個(gè)包起來(lái),如:ipv6 地址為 fe80::1a2d:8be9:91f6:6b51,ens33 為 disql 機(jī)器對(duì)應(yīng)的網(wǎng)絡(luò)接口名稱,則 disql 連接串 host 地址為[fe80::1a2d:8be9:91f6:6b51%ens33]。
(2)Windows 上使用 disql 采用 ipv6 地址訪問配置和 JDBC 使用 ipv6 訪問一樣,使用方括號(hào) [] 將 ipv6 地址包起來(lái)即可。
可參考《DM 程序員手冊(cè)》和《DM disql 使用手冊(cè)》等,手冊(cè)位于數(shù)據(jù)庫(kù)安裝路徑?/dmdbms/doc
?文件夾。
以下提供方法演示:
- 檢查 IPv6 是否啟用
默認(rèn) Centos 7 啟用了 IPv6,Windows(win10 win11)也默認(rèn)啟用了 IPv6。簡(jiǎn)單查看系統(tǒng)是否啟用 IPv6:
---Linux7:
[root@localhost ~]# sysctl -a|grep ipv6|grep disable
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.ens32.disable_ipv6 = 0
---上面為 0,則表示未禁用 ipv6(默認(rèn))
[root@localhost ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.71 netmask 255.255.255.0 broadcast 192.168.15.255
inet6 fe80::1a2d:8be9:91f6:6b51 prefixlen 64 scopeid 0x20<link>
inet6 fd15:4ba5:5a2b:1008:9ef5:bef9:de64:c30a prefixlen 64 scopeid 0x0<global>
ether 00:0c:29:89:30:0d txqueuelen 1000 (Ethernet)
RX packets 796502 bytes 872721471 (832.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1028073 bytes 2448756974 (2.2 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
---上面 inet6 表示啟用了 ipv6
---Windows:
ipconfig [-all]
---可以看到顯示 IPv6 地址,則表示啟用
- 測(cè)試機(jī)器之間 IPv6 地址是否能正常通信
假如 Linux 數(shù)據(jù)庫(kù)服務(wù)器為 A 機(jī),Linux 客戶端機(jī)器為 B 機(jī),Windows 客戶端機(jī)器為 C 機(jī)
B 機(jī) telnet A 機(jī):telnet -6 A 機(jī) ipv6 地址 %B 機(jī)使用的網(wǎng)絡(luò)接口名稱 端口號(hào) (Linux-Linux,網(wǎng)絡(luò)接口名稱比如 ens32)
C 機(jī) telnet A 機(jī):telnet A 機(jī) ipv6 地址 %C 機(jī)對(duì)應(yīng)地址的 scopeid 端口號(hào) (Windows-Linux,scopeid 為 Windows IPv6 地址那里顯示的"ipv6 地址 %scopeid"中的 scopeid)
例如:Linux 數(shù)據(jù)庫(kù)服務(wù)器的 IPv6 地址為 fe80::1a2d:8be9:91f6:6b51 , IPv4 地址為:192.168.15.71??蛻舳藱C(jī)器地址:為 fe80::89b7:a6c4:d5cc:d905,測(cè)試結(jié)果如下圖表示測(cè)試結(jié)果正常:
?
?
- 使用 disql 進(jìn)行連接測(cè)試
1.Linux 客戶機(jī)使用 disql 連接
###ipv4 連接測(cè)試成功
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@192.168.15.71:5236
服務(wù)器[192.168.15.71:5236]:處于普通打開狀態(tài)
登錄使用時(shí)間 : 31.898(ms)
disql V8
###IPV6——disql 連接串 host 不加網(wǎng)絡(luò)接口名稱,連接失敗
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51]:5236
[-70028]:創(chuàng)建SOCKET連接失敗.
disql V8
用戶名:
密碼:
[-70028]:創(chuàng)建SOCKET連接失敗.
####IPV6——disql 連接串 host 加上網(wǎng)絡(luò)接口名稱,連接正常
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51%ens33]:5236
服務(wù)器[fe80::1a2d:8be9:91f6:6b51%ens33:5236]:處于普通打開狀態(tài)
登錄使用時(shí)間 : 5.810(ms)
disql V8
2.Windows 客戶機(jī)使用 disql 連接
###ipv4 連接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@192.168.15.71:5236
服務(wù)器[192.168.15.71:5236]:處于普通打開狀態(tài)
登錄使用時(shí)間 : 15.842(ms)
disql V8
###IPV6——disql連接串 host 不加 scopeid,連接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51]:5236
服務(wù)器[fe80::1a2d:8be9:91f6:6b51:5236]:處于普通打開狀態(tài)
登錄使用時(shí)間 : 17.334(ms)
disql V8
###IPV6——disql連接串 host 加 scopeid,也可連接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51%20]:5236
服務(wù)器[fe80::1a2d:8be9:91f6:6b51%20:5236]:處于普通打開狀態(tài)
登錄使用時(shí)間 : 3.872(ms)
disql V8
- 使用 DM 管理工具進(jìn)行連接測(cè)試
Linux 客戶機(jī)和 Windows 客戶機(jī)使用 DM 管理工具進(jìn)行連接方法相同,如下圖所示:
?
?
- 使用 dm_svc.conf 中服務(wù)名方式連接測(cè)試
dm_svc.conf 文件配置內(nèi)容如下:
TIME_ZONE=(480)
LANGUAGE=(cn)
IPV6=([fe80::1a2d:8be9:91f6:6b51]:5236)
IPV6_2=([fe80::1a2d:8be9:91f6:6b51%ens33]:5236)
1.disql 測(cè)試服務(wù)名方式
(1)Linux 環(huán)境
?
(2)Windows 環(huán)境
?
2.DM 管理工具測(cè)試
利用 IPV6 和 IPV6_2 服務(wù)名均可連接成功
?
- 簡(jiǎn)單的 JAVA 代碼測(cè)試?
????????1.直接使用 IPv6 地址連接,操作數(shù)據(jù)庫(kù)成功
?
????????2.使用 dm_svc.conf 中的服務(wù)名連接,操作數(shù)據(jù)庫(kù)正常
?
登錄數(shù)據(jù)庫(kù)使用 127.0.0.1 或者 localhost 能在本服務(wù)器登錄,不寫則報(bào)創(chuàng)建 SOCKET 連接失敗
【問題描述】:
disql 登錄數(shù)據(jù)庫(kù)出現(xiàn):使用 127.0.0.1 或者 localhost 能在本服務(wù)器登錄,不寫則報(bào)創(chuàng)建 SOCKET 連接失敗。如下圖:
?
【問題解決】:
請(qǐng)檢查 /etc/hosts 配置,配置 127.0.0.1 的主機(jī)名配置,如下所示:
?
dm 通過(guò) dblink 查詢 Oracle 表,報(bào)錯(cuò):字符串截?cái)?/h2>
【問題描述】:
- 環(huán)境描述
DM 端:Win 10 操作系統(tǒng),數(shù)據(jù)庫(kù)版本為 V8-1-2-70,初始化參數(shù):字符集 UTF-8、大小寫不敏感、頁(yè)大小 32、簇大小 32。
Oracle 端:Linux 操作系統(tǒng),數(shù)據(jù)庫(kù)版本 Oracle Database 11g Enterprise 11.2.0.3.0,初始化參數(shù):字符集 GBK,其他參數(shù)默認(rèn)。
- 問題重現(xiàn)
(1)在 Oracle 端創(chuàng)建用戶、建表和插入數(shù)據(jù)語(yǔ)句如下:
Create user DM idtified by 123456;
Conn DM/123456
-- Create table
create table TEST(name VARCHAR2(50));
-- Insert data
insert into TEST (NAME)
values ('方正證券-執(zhí)行委員會(huì)委員、副總裁、首席人才官(CHO)');
commit;
(2)在 win 平臺(tái)使用管理工具 SYSDBA 登錄,創(chuàng)建 dblink,并通過(guò) dblink 查詢 Oracle 端數(shù)據(jù),報(bào)“字符串截?cái)唷保]有放 Oracle 的 oci 可以直接創(chuàng)建 oracle 的 dblink,也可以直接替換掉附件中的 bin 目錄升級(jí)到 70 版本)。
create public link "LINK2" connect 'ORACLE' with "DM" identified by "123456" using '192.168.1.7/orcl';
select * from DM.TEST@LINK2
?
【問題解決】:
嘗試修改 dm 端字符集為 GB18030 后,查詢 dblink 正常。初始化參數(shù) Utf-8 時(shí),嘗試初始化參數(shù)選擇以字符為單位,仍然字符串截?cái)嗟腻e(cuò)誤。
總結(jié):dm 通過(guò) dblink 查詢 Oracle 表時(shí),需要與 Oracle 字符集保持一致。如果 Oracle 端字符集為 GB,dm 端為 UTF-8,則會(huì)報(bào)字符串截?cái)鄦栴}。
LINUX/UOS 環(huán)境,使用非 ROOT 用戶啟動(dòng)管理工具時(shí)失敗并報(bào)錯(cuò):GLib-Gobject-Warming**: 時(shí)間日期: invalid (NULL) pointer instance
【問題描述】:
LINUX/UOS 環(huán)境安裝了達(dá)夢(mèng)客戶端工具,使用非 ROOT 用戶啟動(dòng) DM 管理工具時(shí)失敗,提示"GLib-Gobject-Warming**: 時(shí)間日期: invalid (NULL) pointer instance……"。
?
【問題解決】:
原因:該報(bào)錯(cuò)主要是圖形化顯示指向問題,可以通過(guò) echo $DISPLAY 命令查看相關(guān)變量的值為空。
解決方法:
方法一:從系統(tǒng)登錄界面,直接用 root 用戶登錄一般可以避免這個(gè)問題;
方法二:如果沒有 root 用戶,那么在當(dāng)前用戶下使用以下命令臨時(shí)賦值 DISPLAY 變量值:
export DISPLAY=:0.0
xhost +
echo $DISPLAY
變量賦值后,重新啟動(dòng) DM 管理工具即可。
方法三:永久解決所有用戶在本地啟動(dòng)圖形化工具的顯示問題,可以通過(guò)在/etc/profile 文件最后一行添加賦值語(yǔ)句:
export DISPLAY=:0.0
普通用戶開啟操作系統(tǒng)認(rèn)證,用 root 用戶登錄數(shù)據(jù)庫(kù)報(bào)錯(cuò):未經(jīng)授權(quán)的用戶
【問題描述】:
Windows 環(huán)境下操作系統(tǒng)用戶 dameng 基于 OS 的身份驗(yàn)證登錄數(shù)據(jù)庫(kù)。普通用戶開啟操作系統(tǒng)認(rèn)證,用 root 登錄數(shù)據(jù)庫(kù)報(bào)錯(cuò):未經(jīng)授權(quán)的用戶。詳情如下:
1、在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)操作系統(tǒng)的同名用戶,并修改 INI 參數(shù)。
CREATE USER dameng IDENTIFIED BY "Dameng@12345";
SP_SET_PARA_VALUE(2,'ENABLE_LOCAL_OSAUTH',1);
2、重啟數(shù)據(jù)庫(kù)后,參數(shù)生效。
select * from v$dm_ini where PARA_NAME='ENABLE_LOCAL_OSAUTH';
3、在操作系統(tǒng)中創(chuàng)建 dmusers 用戶組,并將操作系統(tǒng)用戶 dameng 添加到 dmusers 用戶組。
C:\Windows\system32>net localgroup dmusers /add
C:\Windows\system32>net user dameng 123456 /add
C:\Windows\system32>net localgroup dmusers dameng /add
4、操作系統(tǒng)用戶 dameng 基于 OS 的身份驗(yàn)證登錄數(shù)據(jù)庫(kù),報(bào)錯(cuò):“未經(jīng)授權(quán)的用戶”。
E:\dameng\dmdbms8\bin>disql.exe /@localhost:5236 as users
【問題解決】:
1、電腦切換到 dameng 用戶下。
點(diǎn)擊當(dāng)前用戶,切換到 dameng 用戶。
2、打開 cmd 重新登錄。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-452657.html
?歡迎關(guān)注個(gè)人博客Jackin's Blog文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-452657.html
到了這里,關(guān)于關(guān)于訪問達(dá)夢(mèng)數(shù)據(jù)庫(kù)報(bào)錯(cuò)的常見問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!