達夢6.0試用之資料字典
前幾天ITPUB的熊建國主編和我聯絡,希望我能參加國產資料庫達夢的適用活動,並寫幾篇使用感受。本來最近手工的事情比較多,本打算推辭的,不過熊主編再三邀請,而且強調並非是槍手文,只要寫出真實使用感受即可。既然如此,我就本著支援國產資料庫的原則,寫幾篇試用感受。
由於本人唯一熟悉的資料庫就是Oracle,因此所有的對比都是與Oracle資料庫進行對比,在這個過程中,將盡可能避免將對Oracle資料庫的喜愛之情帶進來,爭取站在一個比較公正的位置上來進行評價。
這一篇簡單介紹一下達夢資料庫的資料字典。
資料字典是資料庫儲存物件結構,維護資料庫正常執行的內部表、檢視和同義詞的總稱。除了維護資料庫物件的完整性外,資料字典還提供給使用者方便的查詢和維護介面,此外資料字典還提供動態的系統、例項和會話級的統計資訊和狀態資訊。使用者可以根據這些資訊瞭解系統執行狀態,分析、診斷系統問題,對系統進行最佳化。
Oracle的資料字典可以分為兩大類,一部分是以DBA/ALL/USER開頭的檢視,另一部分是以V_$開頭的檢視。前者是靜態檢視,裡面包含資料庫中所有資料物件的資訊,是Oracle提供給使用者的查詢訪問介面。而後者是動態檢視,裡面包含會話、例項以及系統級的動態統計資訊或狀態資訊,使用者可以根據這些檢視的狀態和統計資訊,分析、診斷系統或會話,從而達到最佳化或問題診斷的目的。
而達夢提供的資料字典資訊就顯得過於簡單了。對於靜態檢視而言,沒有USER和ALL型別的檢視,這意味著普通使用者很難獲取當前的
C:\dmdbms\bin>isql
isql V6.0.2.51-Build(2009.12.23)
SQL>login
server name:localhost
user name:test
password:
port:12345
dm_login time used:197.689(ms)
SQL>select * from systables;
select * from systables;
無效的表或檢視名 'systables' .error code = -1010
SQL>select * from tables;
select * from tables;
無效的表或檢視名 'tables' .error code = -1010
當前使用者已經授權了SYSDBA角色,而查詢資料字典仍然很難查詢到當前使用者下的物件資訊:
SQL>login
server name:localhost
user name:sysdba
password:
port:12345
dm_login time used:44.871(ms)
SQL>select count(*) from systables;
select count(*) from systables;
1 101
1 rows got
time used: 0.430(ms) clock tick:707240.
SQL>set current database test;
set current database test
設定當前資料庫為 'test'
time used: 0.305(ms) clock tick:495190.
SQL>select count(*) from systables;
select count(*) from systables;
1 77
1 rows got
time used: 0.399(ms) clock tick:649930.
切換到SYSDBA使用者,才能查詢到資料字典的資訊。
而且由於存在多個資料庫,不同資料庫中查詢的結果只是當前資料庫中的資訊,而不是總體資訊,部分總的資訊只儲存在SYSTEM資料庫中,比如LOGIN資訊:
SQL>select name, defaultdb from syslogins;
select name, defaultdb from syslogins;
name defaultdb
1 SYSDBA 0
2 test 4
2 rows got
time used: 1.400(ms) clock tick:2322140.
難道只有SYSDBA使用者才能獲取物件的資訊,而普通使用者無法獲得資訊嗎,其實也不是,在達夢資料庫中,USER/ALL檢視被合併在一起,且檢視的字首資訊被去掉。比如TABLES中就是當前使用者擁有或可以訪問到的表。
只不過這些資訊並不再當前使用者中,而是存在於INFO_SCHEM或INFORMATION_SCHEMA模式中(其中INFO_SCHEM中僅包含最常用的幾個檢視):
SQL>login
server name:localhost
user name:test
password:
port:12345
dm_login time used:50.451(ms)
SQL>select table_schema, table_name, table_type
2 from test.information_schema.tables
3 where table_schema in ('test', 'INFORMATION_SCHEMA');
select table_schema, table_name, table_type
from test.information_schema.tables
where table_schema in ('test', 'INFORMATION_SCHEMA');
table_schema table_name table_type
1 INFORMATION_SCHEMA INFORMATION_SCHEMA_CATALOG_NAME BASE TABLE
2 test t BASE TABLE
3 test T1 BASE TABLE
4 test T_BAK BASE TABLE
5 test t_bool BASE TABLE
6 test t_char BASE TABLE
7 test t_date BASE TABLE
8 test T_INC BASE TABLE
9 test T_LOB BASE TABLE
10 test T_LOBDMBLOB BASE TABLE
11 test t_num BASE TABLE
12 test T_PART BASE TABLE
13 test T_TAB BASE TABLE
14 test t_test BASE TABLE
15 test t_test3 BASE TABLE
16 test t_text BASE TABLE
17 test t_textDMBLOB BASE TABLE
18 test t_type BASE TABLE
19 INFORMATION_SCHEMA CHECK_CONSTRAINTS VIEW
20 INFORMATION_SCHEMA COLUMN_EXPLICT_IN_PRIVILEGES VIEW
21 INFORMATION_SCHEMA COLUMN_EXPLICT_OUT_PRIVILEGES VIEW
22 INFORMATION_SCHEMA COLUMN_IMPLICT_IN_BYSELF VIEW
23 INFORMATION_SCHEMA COLUMN_IMPLICT_IN_PRIVILEGES VIEW
24 INFORMATION_SCHEMA COLUMN_IMPLICT_OUT_PRIVILEGES VIEW
25 INFORMATION_SCHEMA COLUMN_PRIVILEGES VIEW
26 INFORMATION_SCHEMA COLUMNS VIEW
27 INFORMATION_SCHEMA COLUMNS_TAB VIEW
28 INFORMATION_SCHEMA COLUMNS_VIEW VIEW
29 INFORMATION_SCHEMA KEY_COLUMN_USAGE VIEW
30 INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS VIEW
31 INFORMATION_SCHEMA SCHEMATA VIEW
32 INFORMATION_SCHEMA TABLE_CONSTRAINTS VIEW
33 INFORMATION_SCHEMA TABLE_PRIVILEGES VIEW
34 INFORMATION_SCHEMA TABLES VIEW
35 INFORMATION_SCHEMA TABLES_NET VIEW
36 INFORMATION_SCHEMA TABLES_WITH_ID VIEW
37 INFORMATION_SCHEMA USAGE_PRIVILEGES VIEW
38 INFORMATION_SCHEMA VIEW_TABLE_USAGE VIEW
39 INFORMATION_SCHEMA VIEW_TABLE_USAGE_NET VIEW
40 INFORMATION_SCHEMA VIEW_VIEW_USAGE_NET VIEW
41 INFORMATION_SCHEMA VIEWS VIEW
42 INFORMATION_SCHEMA VIEWS_NET VIEW
43 test V_TEST VIEW
43 rows got
time used: 51.986(ms) clock tick:86851070.
其中test模式下的表就是當前使用者的表,而INFORMATION_SCHEMA模式下的檢視,就是普通使用者可以獲取系統資訊的檢視。
只不過在達夢資料庫中,沒有提供全域性的同義詞來進行訪問,所以在查詢資料字典資訊的時候,一般使用者必須要指定模式名稱。
顯然達夢資料庫中的靜態檢視要比Oracle中的USER開頭的靜態檢視少一個數量級:
SQL> SELECT COUNT(*)
2 FROM ALL_OBJECTS
3 WHERE OBJECT_NAME LIKE 'USER_%'
4 AND OBJECT_TYPE = 'SYNONYM';
COUNT(*)
----------
449
下面看看動態檢視,相比靜態檢視而言,達夢資料庫中的動態檢視就更是少的可憐了,在達夢的文件中只列出了V$VERSION、V$LOCK、V$SESSION、V$FILESTAT和V$BUFFER五個動態檢視:
SQL>select * from system.sysdba.v$version;
select * from system.sysdba.v$version;
BANNER
1 DM Database Server V6.0.2.51-Build(2010.03.10)
2 DB Version: 0X1022b
2 rows got
time used: 0.413(ms) clock tick:678960.
SQL>select login_name, login_time, status
2 from system.sysdba.v$session;
select login_name, login_time, status
from system.sysdba.v$session;
login_name login_time status
1 SYSDBA NULL ACTIVE
2 SYSDBA 2010-04-12 18:49:20 ACTIVE
3 test 2010-04-12 18:54:24 ACTIVE
3 rows got
time used: 0.524(ms) clock tick:861090.
而在Oracle中動態效能檢視有幾百個:
SQL> SELECT COUNT(*)
2 FROM ALL_OBJECTS
3 WHERE OBJECT_NAME LIKE 'V$%'
4 AND OBJECT_TYPE = 'SYNONYM';
COUNT(*)
----------
604
除了這些檢視外,Oracle還提供了大量的系統包,來實現眾多的功能:
SQL> SELECT COUNT(*)
2 FROM DBA_OBJECTS
3 WHERE OBJECT_NAME LIKE 'DBMS%'
4 AND OBJECT_TYPE = 'PACKAGE';
COUNT(*)
----------
531
在達夢資料庫中,雖然在SYSDBA使用者下也提供了一些過程和函式,但是這個數量也要比Oracle少一個數量級。
顯然對於達夢資料庫而言,資料字典資訊以及在資料庫中提供的各種過程和函式,仍然是一個短板,對於使用Oracle習慣的使用者在使用達夢資料庫的時候會有不方便、不透明的感覺,這應該是達夢資料庫進一步完善的方面。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-668798/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 達夢6.0試用之資料庫物件資料庫物件
- 達夢6.0試用之資料型別資料型別
- 達夢6.0試用之PLSQL篇SQL
- 達夢6.0試用之SQL篇SQL
- 達夢6.0試用之架構篇架構
- 達夢6.0試用之測試環境搭建
- 達夢6.0試用之併發和鎖機制
- 達夢6.0 for Windows安裝Windows
- 達夢資料庫之初步測試資料庫
- 達夢遷移工具之MySQL資料庫遷移到達夢MySql資料庫
- 達夢資料庫開發資料庫
- 達夢資料庫安裝資料庫
- 初識達夢資料庫資料庫
- 達夢資料庫學習資料庫
- 達夢資料庫基礎知識(三)達夢資料庫記憶體結構資料庫記憶體
- 達夢dmfldr資料快速載入
- 達夢資料庫基礎---表資料庫
- 達夢資料庫日常運維資料庫運維
- 達夢資料庫學習心得資料庫
- 達夢資料庫DM8共享叢集測試記錄資料庫
- 達夢7資料庫初始化資料庫
- 達夢資料庫備份恢復資料庫
- 達夢資料庫DCP培訓心得資料庫
- 達夢資料庫學習筆記資料庫筆記
- 達夢資料庫DM8主備叢集測試記錄資料庫
- 達夢資料庫資料檔案遷移過程資料庫
- 資料庫國產化實戰之達夢資料庫資料庫
- 達夢資料庫圖形化作業管理資料庫
- 達夢資料庫統計資訊詳解資料庫
- 達夢資料庫引數調整方法資料庫
- 達夢透明分散式資料庫介紹分散式資料庫
- 達夢資料庫全文索引簡介資料庫索引
- 達夢8資料庫的狀態模式資料庫模式
- 達夢資料庫索引結構詳解資料庫索引
- 達夢資料庫odbc的安裝教程資料庫
- 配置達夢資料庫同構DBLINK資料庫
- CYQ.Data 支援 DaMeng 達夢資料庫資料庫
- 達夢資料庫安裝及基礎操作資料庫