1.DM7下載地址是?
http://www.dameng.com/service/download.shtml
2.使用DM7如何尋求幫助?html
在本版發帖,版主會第一時間回答您的問題java
達夢24小時服務熱線:400 991 6599linux
達夢技術社區:http://bbs.dameng.comsql
達夢官方QQ羣:37727201 數據庫
3.DM7安裝注意事項
爲了您的數據安全,安裝設置密碼時建議將密碼設置爲大於6位數,當前版本可能會所以致使不能建立數據庫,後期版本會給予更友好的提示。
4.DM7是如何實現分頁的?
DM7支持top、limit和rownum三種分頁方式
編程
5.DM7後臺服務說明
DMservice服務是數據庫核心服務
DMAMON服務是審計服務,用來作審計。
DMJMON服務是代理服務,用來作做業調度。
DMWMON服務是數據守護服務,用來作主備。
安全
6.DM7 JDBC編程注意事項
// 定義DM JDBC 驅動串
String jdbcString = "dm.jdbc.driver.DmDriver";
// 定義DM URL 鏈接串
String urlString = "jdbc:dm://localhost:5236";
服務器
7.命令行工具disql使用說明:
--查看幫助:
disql help
--登陸
disql SYSDBA/SYSDBA
--注意事項:dm7密碼是大小寫敏感的
8.如何修改表名
alter table WE_EFFORT ALTER SCOPE_ENUM_ID1 rename to SCOPE_ENUM_ID;
9.達夢數據庫支持JPA中實體類保存和更新操做嗎?
怎麼調用persist方法就會報出下面的異常
Exception executing batch:
org.hibernate.StaleStateException: Batchupdate returned unexpected row count from update [0]; actual row count: 0;expected: 1
解決辦法:修改dm.ini配置文件,將BATCH_PARAM_OPT 參數改成0,重啓便可
10.如何查詢當前用戶下全部的表名?
select NAME from sysobjects where "SUBTYPE$"='UTAB'
AND SCHID=(SELECT ID FROM sysobjects WHERE NAME=USER AND TYPE$='SCH');
11.有開源的客戶端工具能夠連DM麼?
基於JDBC的工具就能夠,好比:SQuirrel SQL、DbVisualizer
12.java.sql.SQLException: 語句句柄個數超上限(1024)或系統內存不足 錯誤如何處理?
緣由:不申請新的session,不停地申請語句句柄,超過了每一個session可用語句句柄數的上限
解決辦法:
治本:修改應用程序,每一個語句句柄用完後,將句柄關閉
指標:修改dm.ini參數,提升session可用語句句柄的上限
max_session_statement由100改成1000
13.安裝在oracle linux 5.5_64位上安裝DM7,初始化庫的時候報錯:
Extract install files..........
java.lang.UnsatisfiedLinkError: /tmp/DMInstall/source/bin/libdmutl.so:/tmp/DMInstall/source/bin/libdmutl.so: ELF file OS ABI invalid
緣由:官網提供的達夢數據庫版本是基於REDHAT6的,oracle linux5.5的內核版本太低,建議使用2.6.32以上內核的linux版本。
--------------------------------------------------------------------------------------------------------------------------------
14. DM7在初始化庫的過程當中須要注意哪幾個重要參數?
(1) 頁大小(page_size)
除去Clob、Blob等大字段外,數據庫中一行記錄的全部字段的實際長度的和不能超過頁大小的一半。
建議頁大小設置爲16K,防止在後期進行數據遷移和開發過程當中出現記錄超長的問題;
(2) 日誌文件的大小(log_size)
數據庫redo日誌文件的大小,單位爲M,正式環境日誌文件的大小通常設置爲2048;
(3) 字符串比較大小寫敏感(case_sensitive)
默認爲大小寫敏感的,根據具體狀況進行設置。遷移實施中若是原始庫爲Oracle和DB2數據庫的話
需設置爲大小寫敏感,若爲SQL Server和MySQL數據庫則需設置爲大小寫不敏感,因此在數據庫
初始化庫的過程當中須要根據具體狀況來選擇。
注意事項:
在開發環境和測試環境的頁大小、字符串大小寫敏感等初始化參數必定要保持一致,避免使用.bak文件進行
還原的時候,由於初始化參數不一致致使沒法還原的問題。因此在初始化庫以前務必規劃好上述參數,由於
頁大小和字符串比較大小寫敏感這兩個參數一旦初始化完成,後期沒法修改。如需修改,則只能刪掉現有實例
重現初始化新的實例。
總結:
數據庫在安裝的過程當中基本上就是下一步下一步,按照默認選項安裝就好,安裝路徑根據本身的要求選擇。
當數據庫安裝完成,在使用數據庫配置助手dbca工具初始化庫的過程當中,其它步驟按照默認選項下一步便可,
當到這個頁面時須要注意如下三個參數的設置,其它參數如無特殊要求按照默認選項就好。
15. 何爲字符串比較大小寫敏感?
關於字符串比較大小寫敏感主要涉及到兩個方面的內容:
(1) 對字段的值比較而言
假如表Test中有以下兩條記錄
c1 c2
1 a
2 A
一樣的查詢語句:select * from Test where c2 = 'a';
在大小寫不敏感的庫中會查出以下的兩條記錄
c1 c2
1 a
2 A
而在大小寫敏感的庫中則只會查出以下的一條記錄
C1 C2
1 a
(2) 對於表名、字段名而言
在設置爲大小寫敏感的庫中進行查詢的時候,可能常常會遇到無效的表名或列名的問題,
下面針對這種狀況進行說明。
(i) 若是使用DM管理工具圖形界面建表的話建議表名和字段名都使用大寫。由於使用圖形界面建表至關於
使用語句建表的時候加了雙引號的,會固定住大小寫。若是寫成小寫,那麼就是小寫了,在查詢的時候
也須要加雙引號,不然就有可能報無效的表名或列名的問題,比較麻煩;
(ii) 若是使用腳本建表的話,若是表名和字段名沒有加雙引號的話都會被系統自動轉換成大寫。
如:create table test(a int);系統會自動把表名test,字段名a轉換成大寫,處理方式與Oracle數據庫一致。
因此針對大小寫敏感的庫,在使用建表腳本或者經過查詢腳本進行查詢的時候建議統一不要寫雙引號,
讓系通通一自動都轉化爲大寫;
(iii) 以上兩點主要針對大小寫敏感的庫而言,大小寫不敏感的庫則不存在上述問題。
總結:基於以上兩點,在初始化數據庫的過程當中就能夠對字符串比較大小寫敏感這個參數作出合理的選擇了。
16. DM7是否須要設置所謂的外網IP?
DM7是不須要設置外網IP的,只要網絡暢通,相應端口(默認端口爲5236)開放的狀況下就能夠訪問。
17. DM7是否支持增量備份?第三方管理工具是否是好用些?
DM7支持增量備份,詳細內容請參考DM_DBA.pdf手冊的第31章 備份和還原的相關章節。
我的以爲數據庫自己本身作的增量備份確定比所謂的第三方工具更穩定可靠。
18. DM7數據庫管理員SYSDBA用戶的密碼忘記了可否找回?
(1) 原則上數據庫管理員SYSDBA用戶的密碼忘記了是沒法找回的;
(2) 極個別特殊的狀況可能須要經過研發從源碼層面進行修改,從而跳過密碼認證這塊;
舒適提示:
(1) 數據庫管理員SYSDBA的密碼不要隨便修改,默認密碼爲SYSDBA(密碼嚴格區分大小寫)。
若是出於安全方面的考慮非得修改,請必定要作好備案工做;
(2) 若是數據庫中還有其它的用戶,能夠嘗試在數據遷移工具DTS中使用其它用戶登陸,把數據庫中
相關用戶的數據遷移到新的實例對應的用戶中。
19. DM7如何斷定當前庫中一個表是否存在?
能夠經過查詢DBA_TABLES或ALL_TABLES,若是要查詢某個用戶下某個表是否存在,能夠經過OWNER列進行限定。
如:查詢用戶TEST下是否存在表TAB,SQL腳本以下
select * from DBA_TABLESwhere owner = 'TEST' and table_name = 'TAB';
注:
(1) 關於DBA_TABLES中每一個字段的具體含義能夠參考DM_DBA.pdf手冊_附錄3 ORACLE兼容視圖;
(2) 爲了提升 DM7與ORACLE 的兼容性,DM7提供了較爲豐富的與Oracle兼容的視圖。
20. DM7如何配置歸檔?
DM7配置歸檔的詳細操做步驟以下:
(1) 打開dm.ini中的歸檔開關:ARCH_INI=1;
(2) 在數據文件目錄data/DAMENG下配置dmarch.ini,內容以下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #歸檔類型 LOCAL/REALTIME
ARCH_DEST = d:\dmdbms\data\DAMENG\ARCH #歸檔目標路徑(注意實際路徑)
ARCH_FILE_SIZE = 1024 #單個歸檔文件大小,單位Mb,缺省128M
ARCH_SPACE_LIMIT = 10240 #REDO日誌歸檔空間限制,單位爲Mb,0表示無限制
(3) 重啓數據庫服務器
完成上述三步則就完成了DM7歸檔的配置。
關於每一個參數具體含義介紹:
(i) ARCH_TYPE 歸檔類型,對於單機的數據庫配置歸檔而言,基本就是本地歸檔(LOCAL),若是涉及到DM7
其它集羣的配置時,則會涉及到其它的歸檔類型;
(ii) ARCH_DEST 歸檔目標路徑,通常專門新建一個歸檔文件夾存放歸檔文件,這樣產生的歸檔文件就會放到
該歸檔文件夾中;
(iii) ARCH_FILE_SIZE 單個歸檔文件的大小,數據庫在運行的過程當中會產生歸檔文件,當單個歸檔文件的大小
達到1024M時,系統會自動切換寫下一個歸檔文件;
(iiii) ARCH_SPACE_LIMIT 歸檔空間限制,首先須要說明的一點就是歸檔文件是循環寫的,上面已經提到了當
單個歸檔文件的大小達到1024M時,系統會自動切換寫下一個歸檔文件。隨着系統的運行歸檔日誌文件
會愈來愈多,當達到歸檔空間限制以後,系統會自動刪除老的歸檔文件。而關於這個歸檔空間限制的大小
通常須要結合備份策略來考慮,基本的設置的原則是至少要可以容納下2~3個全庫全庫備份間的全部歸檔。
21. DM7如何屏蔽保留字?
方法一:雙引號法
這個通常能夠用來處理建表語句中的保留字衝突,如表名或者字段名是DM7的保留字。這種方法通常能夠
快速地繞過問題,可是對於大小寫敏感的庫,這種用雙引號的方法會固定死字段大小寫,對於小寫的字段,
可能會帶來無效的表名或者列名的問題。
方法二:dm.ini中的參數設置
在dm.ini中有個參數EXCLUDE_RESERVED_WORDS,這個參數能夠用來屏蔽你想要屏蔽的保留字,將須要屏蔽
的保留字寫在=號後面,而後以逗號分隔。設置在dm.ini中的好處就是一旦設置,永久生效並且對全部客戶端都有效,
這樣就不須要在全部客戶端系統中進行專門配置。可是設置在dm.ini中以後,這個保留字就永久性失效了,哪怕你想
經過manager客戶端工具在本地鏈接也沒用了。並且該方式還存在一個隱患就是因爲屏蔽掉了一些系統的保留字,
因此可能會致使系統的一些功能沒法正常使用。
建議:
在移植過程當中遇到DM7的保留字,最好的處理方式仍是對這些保留字進行修改,儘可能不要使用DM7的保留字。
22. 在安裝DM7的過程當中出現錯誤 ELF file OSABI invalid 該如何解決?
解決辦法:報這個錯誤說明安裝的數據庫版本與操做系統版本不匹配,需找咱們商務人員從新申請相匹配的數據庫版本。
23. 使用DM7時如何進行導入導出?
建議經過命令行的方式進行導入導出。詳細可參見:DM_DBA.pdf手冊第31章 備份和還原 中邏輯備份和邏輯還原的
相關章節。
24. DM7如何關閉一個session?
能夠經過調用一個系統函數SP_CLOSE_SESSION來關閉一個session。
函數定義:
VOID SP_CLOSE_SESSION(SESSION_ID INT)
功能說明:
中止一個活動的會話
參數說明:
SESSION_ID:會話 ID
舉例說明:
SP_CLOSE_SESSION(510180488);
25. DM7有相似於Oracle的AWR分析報告嗎?
有的,詳細請參考DM_SQL.pdf手冊中 21.25 DBMS_WORKLOAD_REPOSITORY包中的相關內容和示例說明。
26. Oracle中raw類型在DM7中能夠用哪一種類型代替?
Oracle中raw類型在DM7中可使用varbinary代替。
27. 如何擴展數據庫的redo日誌?
調整數據庫redo日誌的大小,如將2個redo日誌都擴展到2G(注意redo日誌的實際路徑)。使用SYSDBA用戶登陸,
而後執行以下腳本:
alter database resize logfile'D:\dmdbms\data\DAMENG\DAMENG01.log' to 2048;
alter database resize logfile'D:\dmdbms\data\DAMENG\DAMENG02.log' to 2048;
28. DM7數據庫如何進行卸載?
在使用DM7的過程當中,有時候咱們可能須要卸載DM7後從新安裝新的數據庫版本,下面簡單講述如何正常卸載
DM7數據庫。
前提條件:在進行卸載達夢數據庫以前,先正常關閉達夢數據庫。
Windows環境:
方法1:在Windows的開始 -> 全部程序 -> 達夢數據庫 -> 卸載;
方法2:在達夢數據庫的安裝目錄,如D:\dmdbms目錄下能夠看到達夢數據庫的卸載程序uninstall.exe,雙擊該
程序也能夠完成卸載。
注意事項:先保證達夢數據庫處於關閉狀態而後再進行卸載,不然Windows服務窗口中達夢數據庫註冊的一些服務和
註冊表中的一些信息可能沒法正常刪除,這樣可能會給下一次的安裝帶來麻煩。
Linux環境:
方法1:圖形界面卸載
若是能夠直接接觸Linux服務器的桌面,在桌面上會有一個DMDBMS的文件夾,裏面也有卸載的圖標,
雙擊便可完成卸載,與Windows的界面風格徹底一致;
方法2:字符界面卸載
在達夢數據庫的安裝目錄,如/opt/dmdbms目錄下有一個卸載腳本uninstall.sh,在Linux終端中執行命令
./uninstall.sh -i 便可以字符界面完成對達夢數據庫的卸載。
注意事項:先保證達夢數據庫處於關閉狀態而後再進行卸載。
29. DM7存儲過程和語句塊中如何進行打印? begin
print '使用print語法打印';
end;
--使用dbms_output包打印首先須要建立系統包:
SP_CREATE_SYSTEM_PACKAGES(1);
--而後開啓這個打印的包:
dbms_output.enable;
begin
dbms_output.put_line('使用dbms_output包語法打印');
end;
30.linux系統下 達夢數據庫設置爲開機自啓動怎麼設置?網絡
修改啓動腳本,將DM啓動腳本DmServiceXXXXX 移到/etc/init.d下,chkconfig DmServiceXXXXX onsession
確認此數據庫能以dmdba用戶正常前臺啓動後(必須步驟),操做步驟以下:
第一步:複製數據庫實例服務腳本dmserverd,命名爲DmInstanceServiceDAMENG並修改,修改path值爲dm.ini路徑(必須),dm_home設置爲dm主程序安裝路徑(必須),svc_porg設置爲數據庫實例名(可選推薦)。
第二步:將腳本DmInstanceServiceDAMENG 複製到 /etc/rc.d/init.d 目錄下。
cp /opt/dmdbms/bin/DmInstanceServiceDAMENG /etc/rc.d/init.d/DmInstanceServiceDAMENG |
第三步:賦予服務腳本DmInstanceServiceDAMENG 可執行權限。
chmod 777 /etc/rc.d/init.d/DmInstanceServiceDAMENG |
第四步:註冊 DM實例服務並配置開機自動啓動。
chkconfig --add DmInstanceServiceDAMENG chkconfig DmInstanceServiceDAMENG on chkconfig --list DmInstanceServiceDAMENG |
第五步:後臺啓動達夢數據庫實例服務,查看服務狀態,關閉實例服務。
service DmInstanceServiceDAMENG start service DmInstanceServiceDAMENG status service DmInstanceServiceDAMENG stop |
31.如何使用SQL插入BLOBcreate or replace directory utllobdir as 'C:\alipay'; --你的BLOB文件所在位置。
create table bfile_tab (bfile_column BFILE);
create table t (blob_column BLOB);
----------------------------------------
declare
a_blob BLOB;
a_bfile BFILE := BFILENAME('UTLLOBDIR','test.jpg');
begin
insert into bfile_tab values (a_bfile)
returning bfile_column into a_bfile;
insert into t values (empty_blob())
returning blob_column into a_blob;
dbms_lob.fileopen(a_bfile);
dbms_lob.loadfromfile(a_blob, a_bfile, dbms_lob.getlength(a_bfile));
dbms_lob.fileclose(a_bfile);
commit;
end;
要較新的版本才支持
32.沒有bool類型怎麼辦?
用bit類型就好
--未完待續,歡迎你們提問,我來整理。
33.使用WINDOWS系統時,本來在DM服務查看器裏面能夠看到的數據庫服務怎麼沒了呢?
基本上,都是因爲殺毒軟件刪除了服務致使的,請從新註冊服務,而後關閉360
34.達夢數據庫的數據文件最大能夠多少?
受操做系統和文件系統限制
35.使用達夢管理工具訪問DM數據庫,在使用圖形化工具查看數據庫對象時,報錯「非法的基類名****」,「無效的列名****」等。
通常發生在客戶端工具與服務器版本差異很大時,須要更新到客戶端與服務器版本相同。
36.DM7字符串鏈接符號是?
使用||進行字符串鏈接
37.如何替換KEY文件
將key文件拷貝到DM的安裝目錄下的bin目錄下,更名並替換掉本來的dm.key。而後重啓服務。
38.DM7查表必需要 表空間.表名 是怎麼回事?
使用某一個用戶登錄時,訪問該用戶的默認表空間裏的表時,不須要帶表空間名。
39.連上之後如何切換模式?
set schema XXX
40.爲何個人對象名寫的是對的,查詢時還報找不到對象呢?
通常出現這種狀況,是由於你的對象名是小寫的,而DM在執行SQL時自動將全部小寫字符轉化爲了大寫。解決方法是將小寫字符用雙引號「」包起來。或是全部對象名都使用大寫。
41.標度和精度有啥區別?
精度指數字的位數。 標度指小數點後的數字位數。 例如,數 123.45 的精度是 5,標度是 2。
42.想要存儲年月日和時分,使用什麼數據類型?
Datetime
43.數據庫還原時,報XX參數不匹配
通常是字符大小寫敏感、頁大小這兩個參數不匹配。從新初始化一個參數與作備份的實例相同的實例便可。
44.個人TEMP表空間爲何這麼大?當用戶的 SQL 語句須要磁盤空間來完成某個操做時,DM 數據庫會從 TEMP 表空間分配臨時段。如建立索引、沒法在內存中完成的排序操做、SQL 語句中間結果集以及用戶建立的臨時表等都會使用到 TEMP表空間。
若是你的TEMP表空間很大,那說明你的業務當中存在不少急需優化的SQL。
TEMP表空間在重啓後會釋放掉,也能夠手動回收。
45.DM配置UNIXODBC及PERL經過ODBC鏈接DM。有另一個帖子解釋的很詳細:http://www.itpub.net/thread-1824202-1-1.html
46.達夢中的一個SQL有沒有惟一的ID?
V$SQL_PLAN裏查看SQL_ID
47.達夢的密碼策略?
經過DM.INI裏的參數:PWD_POLICY設置系統默認口令策略。0: 無策略;1: 禁止與用戶名相同;2:口令長度不小於 9;4:至少包含一個大寫字母(A-Z);8 :至少包含一個數字(0-9);16:至少包含一個標點符號(英文輸入法狀態下,除「和空格外的全部符號;若爲其餘數字,則表示配置值的和,如 3=1+2,表示同時啓用第 1 項和第 2 項策略。當 INI參數COMPATIBLE_MODE=1時,PWD_POLICY 的實際值均爲 0
48.DM.INI介紹
每建立一個 DM 數據庫,就會自動生成 dm.ini。dm.ini 是 DM 數據庫啓動所必須的配置文件,經過配置該文件能夠設置 DM 數據庫服務器的各類功能和性能選項,主要的配置內容見DBA手冊。
參數分爲動態參數與靜態參數,動態參數能夠經過SP_SET_PARA_VALUE函數直接修改並生效
49.導入DMP文件時的常見問題
a)中文亂碼。通常是因爲導出與導入時的字符集的環境變量不一樣。使用命令行dimp命令導入,並在執行dimp前先執行export LANG=...將當前字符集調整的和導出時的同樣
b)報各類初始化參數不一致的警告(CASE_SENSIVE參數不匹配、頁大小不一致等)。導出的庫與導入的庫的初始化參數不一致時會出現這些錯誤。
c)XX對象已存在。提示已經很明確了。
50.刪除表空間時提示「試圖刪除已經使用的表空間」?
提示已經很明確了,把表空間裏的表刪掉吧
51.關於VARCHAR類型的長度的限制。
VARCHAR類型字段的長度問題,是在異構數據庫遷移時很是常見的一個問題。
DM的VARCHAR字段的最大長度與「頁大小」這一參數有關。在建庫時指定,以後沒法修改。
4K的1900,8K的3900,16K的8000,32K的8188
52.SQL語句報錯: 嵌套層次太深。通常的嵌套層次不會太多,通常出現這種問題極可能是有死循環!!!例如建了個觸發器,而後一條SQL執行觸發器的時候觸發了本身53.關於拆分字符串,能夠參考下面的例子:create table test_wm(c1 int,c2 varchar(100),c3 varchar(100));insert into test_wm values(1,'3,2,4,5','no');insert into test_wm values(2,'5,1,1+2','yes');select C1,C3,regexp_substr(C2,'[^,]+',1,level) son,LEVEL from test_wm CONNECT BY LEVEL<=REGEXP_COUNT(C2,',')+1 and prior C1=C1 andprior dbms_random.value() is not null; 54.JAVA外部函數的調用方法。a.先生成一個JAVA包,放到某個目錄下,咱們假設放在了E:\test.jarb.執行SQL:CREATE OR REPLACE FUNCTION MY_INT(a int, b int)RETURN intEXTERNAL 'e:\test.jar'"test.testAdd" USING java;注意類名和函數名區分大小寫c.而後就能夠調用外部函數了select MY_INT(1,2);55.爲啥我查詢時,有過濾條件,也建了索引,但它就是不走索引?注意兩點:數據分佈、統計信息不少時候,統計信息不全會致使優化器計算執行代價的時候算錯,誤認爲走索引會比全錶慢,形成執行計劃不對。統計信息的收集方法:某用戶下的全部索引:DBMS_STATS.GATHER_SCHEMA_STATS('SSCKF',100,TRUE,'FOR ALL INDEXED SIZE AUTO');某用戶下全部字段(包括索引):DBMS_STATS.GATHER_SCHEMA_STATS('SSCKF',100,TRUE,'FOR ALL COLUMNS SIZE AUTO'); 某表下的全部字段:DBMS_STATS.GATHER_TABLE_STATS('SSCKF','FO_ACCOUNTBILL',null,100,TRUE,'FOR ALLCOLUMNS SIZE AUTO');收集某一列的統計信息sp_col_stat_init('JXWOA','OA2_RECEIVEDOC','RD_STATE');sp_col_stat_init('JXWOA','OA2_SENDDOC','SD_STATE');有個客戶本身作了10W條測試數據,而後寫了個SELECT *FROM T WHERE C='A';這樣的測試語句。但這10W條數據全是同樣的,怎麼可能走索引。修改測試數據的腳本,讓C這個字段的值平均分佈在1~1000上,作完後收集統計信息,就走索引了。56. DM7如何查看建庫時的字符集? select unicode();--根據返回值進行判斷 0 表示 GB18030,1 表示 UTF -8,2 表示 EUC -KR