達夢常用數據字典、動態性能視圖、同義詞、系統過程和函數


一、數據字典

  數據字典是數據庫存儲對象結構,維護數據庫正常運行的內部表、視圖和同義詞的總稱。此外數據字典還提供動態的系統、實例和會話級的統計信息和狀態信息。用戶可以根據這些信息了解系統運行狀態,分析、診斷系統問題,對系統進行優化。

二、動態性能視圖

  動態視圖存儲着數據庫的配置及數據庫中變化的活動狀態信息。

三、同義詞

  達夢為了兼容Oracle的數據字典等,建了很多同義詞。

  

 

 

四、系統過程和函數

  支持在disql中修改配置信息等。

五、常用語句

  內容過多,就不分類了,需要的話可以直接根據備注信息搜索。

  SELECT * FROM V$TABLESPACE;--SYSTEM、ROLL、MAIN 和 TEMP 表空間查看語句 查看有哪些表空間
  SELECT * FROM V$HUGE_TABLESPACE;--HMAIN 表空間查看語句

  alter system set 'RLOG_APPEND_LOGIC'=1 both;--啟動歸檔日志文件分析
  select * from v$dm_ini where para_name ='RLOG_APPEND_LOGIC';

  select * from V$MEM_POOL;--動態視圖 V$MEM_POOL 詳細記錄了當前系統中所有的內存池的狀態,可通過查詢這個動態視圖掌握 DM Server 的內存使用情況。

  select * from V$LATCHES;--記錄當前正在等待的線程信息
  select * from V$THREADS;--記錄當前系統中活動線程的信息
  select * from V$WTHRD_HISTORY;--記錄自系統啟動以來,所有活動過線程的相關歷史信息。
  select * from V$PROCESS;--記錄服務器進程信息

  建庫完成后,在 DM 服務器運行期間,可以通過查詢 V$DM_INI 動態視圖查看建庫參數的具體信息。
  select * from V$DM_INI;
  dminit PATH=c:\dmdata PAGE_SIZE=16 --創建數據庫 ./dminit help 查看參數信息

  select * from V$LICENSE;--查所安裝的 DM 數據庫的 LICENSE 信息

  CREATE USER TEST_USER IDENTIFIED BY TEST_PASSWORD DISKSPACE LIMIT 50;--創建用戶
  ALTER USER TEST_USER DISKSPACE UNLIMITED;--用戶磁盤空間限制
  SELECT USER_USED_SPACE('TEST_USER');--查看用戶占用的空間

  CREATE TABLE TEST (SNO INT, MYINFO VARCHAR) DISKSPACE LIMIT 500; --創建表 TEST 時可指定該表對象可使用的最大磁盤空間為 500M。
  ALTER TABLE TEST MODIFY DISKSPACE LIMIT 50;--對表對象空間的限制也可進行更改,如修改表 TEST 的磁盤空間限制為 50M。
  SELECT TABLE_USED_SPACE('SYSDBA', 'TEST');--查看表占用的空間
  SELECT TABLE_USED_PAGES('SYSDBA', 'TEST');--查看表使用的頁數
  SELECT INDEX_USED_SPACE(33555463);--查看索引占用的空間
  SELECT INDEX_USED_PAGES(33555463);--查看索引使用的頁數

  dm.ini 配置文件中 默認情況下,PK_WITH_CLUSTER 為 1,即建表時指定的主鍵自動轉化為聚簇主鍵。沒有主鍵,默認聚集索引健是ROWID

  CREATE TABLE NEW_EMP AS SELECT * FROM EMPLOYEE;--查詢建表 創建一個與已有表相同的新表,或者為了創建一個只包含另一個表的一些行和列的新表
  DROP TABLE employee CASCADE;--刪除的表被其他表引用(其他表的外鍵引用了表的任何主鍵或唯一鍵)
  DELETE FROM employee;--能刪除表中的行
  DROP TABLE EMPLOYEE;--刪除表及數據
  TRUNCATE TABLE EMPLOYEE;--清空 employee 表

  CALL SP_TABLEDEF('DMHR', 'CITY');用系統過程查看表的定義
  SELECT DBMS_METADATA.GET_DDL('TABLE','CITY','DMHR');--用包查建表語句

  CREATE TABLE IDENT_TABLE (
    C1 INT IDENTITY(10, 100),
    C2 INT
  );
  insert into IDENT_TABLE values(1);
  insert into IDENT_TABLE values(2);
  insert into IDENT_TABLE values(3);
  commit;
  select * from IDENT_TABLE;
  SELECT IDENT_CURRENT('SYSDBA.IDENT_TABLE');--獲得表上自增列的當前值,插入第一條是10,第二條是110,第三條是210
  SELECT IDENT_SEED('SYSDBA.IDENT_TABLE');--獲得表上自增列的種子信息 起始值,本例起始值為1
  SELECT IDENT_INCR('SYSDBA.IDENT_TABLE');--獲得表上自增列的增量信息 每次增長多少,本例設置為每次增100

  CREATE TABLE SPACE_TABLE (
    C1 INT,
    C2 INT
  );
  SELECT TABLE_USED_SPACE('SYSDBA','SPACE_TABLE');--已分配給表的頁面數;
  SELECT TABLE_USED_PAGES('SYSDBA','SPACE_TABLE');--表已使用的頁面數

  CREATE INDEX emp_ename ON emp(ename) STORAGE (INITIAL 50,NEXT 50,ON USERS);--明確地創建索引 INITIAL初始簇數目 next下次分配簇數目
  CREATE CLUSTER INDEX clu_emp_name ON emp(ename);--對 emp 表以 ename 列新建聚集索引
  CREATE UNIQUE INDEX dept_unique_index ON dept (dname) STORAGE (ON users);--唯一索引可以保證表上不會有兩行數據在鍵列上具有相同的值
  ALTER TABLE EMP ADD CONSTRAINT PK_EMP_NAME PRIMARY KEY (NAME);--添加主鍵約束 會自動在表emp的name列上創建一個唯一索引
  SP_REBUILD_INDEX('SYSDBA', 1547892);--根據模式名和索引id重建索引
  DROP INDEX emp_ename;--刪除索引
  ALTER TABLE emp DROP CONSTRAINT pk_emp_name;--不能直接刪除與已啟用的 UNIQUE KEY 鍵或 PRIMARY KEY 鍵約束相關的索引。應該如下面的語句刪除主鍵約束pk_emp_name,同時刪除其對應的索引
  SELECT INDEXDEF(1547892, 0);--根據索引id查看索引定義
  SELECT INDEXDEF(1547892, 1);--根據索引id查看索引定義 參數為1會把索引所屬模式名帶出來

  ALTER TRIGGER DEL_TRG DISABLE;--禁用觸發器
  ALTER TRIGGER DEL_TRG ENABLE;--啟用觸發器

  SELECT b.* FROM SYS.SYSOBJECTS a, SYS.SYSTEXTS b WHERE a.ID = b.ID and a.NAME LIKE 'VIEW_1%';--查看普通視圖 view_1 的信息,知道 VIEW_1 視圖的定義
  CALL SP_VIEWDEF('SYSDBA', 'VIEW1');-- 系統過程(系統函數)獲取視圖定義信息,物化視圖只能通過該方式獲取

  ALTER TABLE TEST.ADDRESS RENAME TO ADDRESS1;--修改表的名稱,重命名表

  ALTER TABLE t_con DISABLE CONSTRAINT t_con_pk;--禁用約束
  ALTER TABLE t_con DROP CONSTRAINT t_con_pk;--刪除約束
  SELECT * FROM SYSOBJECTS WHERE NAME='T _CON _PK';--查找約束名為 t_con_pk 的信息
  SELECT * FROM SYSOBJECTS WHERE TYPE$='CONS';--查找所有約束的信息  SELECT * FROM SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' OR TYPE$ = 'TABOBJ';--查找模式信息

  SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;--動態性能視圖查詢表空間與數據文件對應關系

  ALTER TABLESPACE bookshop ADD DATAFILE 'd:\book.dbf' SIZE 64;--添加數據文件 比如在 bookshop 表空間中添加大小為 64M 的數據文件。
  ALTER TABLESPACE bookshop RESIZE DATAFILE 'd:\book.dbf' TO 128;--擴展數據文件的大小 比如擴展 bookshop 表空間中數據文件 book.dbf 大小至 128M。
  ALTER DATABASE ADD LOGFILE 'C:\DMDBMS\data\dmlog_0.log' SIZE 200;--給數據庫增加一個日志文件C:\DMDBMS\data\dmlog_0.log,其大小為200M。
  ALTER DATABASE RESIZE LOGFILE 'C:\DMDBMS\data\dmlog_0.log' TO 300;--擴展數據庫中的日志文件 C:\DMDBMS\data\dmlog_0.log,使其大小增大為300M。
  ALTER TABLESPACE bookshop RENAME DATAFILE 'd:\book.dbf' TO 'e:\book.dbf';--修改數據文件的路徑
  dmctlcvt c2t D:\dm.ctl D:\ctl.txt --轉換控制文件到文本文件
  dmctlcvt t2c D:\ctl.txt D:\dm.ctl --轉換文本文件到控制文件 這種修改文件路徑的方法也可用於重做日志文件,系統表空間文件等路徑的修改

  SET AUTOCOMMIT ON; --開啟自動提交模式

  SELECT NAME,N_PAGES,N_LOGIC_READS,RAT_HIT FROM V$BUFFERPOOL;--查詢內存池 BUFFERPOOL 的頁數、讀取頁數和命中率信息。

  SELECT TRX_ID,LTYPE,LMODE,TABLE_ID FROM V$LOCK;--查詢系統中上鎖的事務、鎖類型,以及表 ID 信息。

  SELECT SESS_ID,TOP_SQL_TEXT,TIME_USED FROM V$SQL_HISTORY;--查詢系統執行的 SQL 歷史信息。 以前執行過哪些sql

  SELECT * FROM V$DICT_CACHE;--查看字典緩存的信息。

  SELECT SESS_ID,SQL_TEXT,STATE,CREATE_TIME,CLNT_HOST FROM V$SESSIONS;--查看會話信息

  SELECT * FROM V$CAPTURE;--查看捕獲信息
  SELECT N.NAME, TIME_USED, N_ENTER FROM V$SQL_NODE_NAME N, V$SQL_NODE_HISTORY H WHERE N.TYPE$ = H.TYPE$ AND EXEC_ID = 4;--視圖 V$SQL_NODE_NAME 與 V$SQL_NODE_HISTORY 視圖查詢結點執行時間

  SELECT * FROM V$LONG_EXEC_SQLS;--顯示最近 1000 條執行時間較長的 SQL 語句
  SELECT * FROM V$SYSTEM_LONG_EXEC_SQLS;--顯示服務器啟動以來執行時間最長的20條SQL語句

  如果 ID 列上能過濾更多數據,建議指示用索引 IDX_T1_ID。
  SELECT * FROM T1 INDEX IDX_T1_ID WHERE ID > 2011 AND NAME < 'XXX';
  或
  SELECT /*+INDEX(T1, IDX_T1_ID) */ * FROM T1 WHERE ID > 2011 AND NAME < 'XXX'; --使用hint指定索引

  ALTER DATABASE ADD LOGFILE 'dameng_003.log' size 80;--增加大小為 80M 的日志文件 dameng_003.log
  ALTER DATABASE RESIZE LOGFILE 'dameng_003.log' to 100;--將日志文件 dameng_003.log 大小更改為 100M
  在 MOUNT 狀態下,支持對日志文件的重命名操作。
  ALTER DATABASE RENAME LOGFILE 'dameng_003.log' to 'dameng_004.log';--將日志文件 dameng_003.log 重命名為 dameng_004.log

  select * from SYSSTATS;--記錄系統中的統計信息
  select * from SYSMSTATS;--記錄多維統計信息的內容
  select * from SYSSTATPREFS; -- 記錄指定模式下表的統計信息的靜態參數對應的值。
  select * from SYSSTATTABLEIDU;記錄所有表在上一次收集統計信息時的總行數和之后對表增刪改的影響行數以及是否有過 TRUNCATE 操作

  select * from V$SYSSTAT;--顯示系統統計信息
  select * from V$JOBS_RUNNING;--顯示系統中正在執行的作業信息
  select * from V$LARGE_MEM_SQLS;--最近 1000 條使用大內存的 sql 語句。一條 sql 語句使用的內存值超過 ini 參數LARGE_MEM_THRESHOLD,就認為使用了大內存
  select * from V$SYSTEM_LARGE_MEM_SQLS;--系統中使用大內存最多的 20 條 sql 語句。字段定義與 v$large_mem_sqls 相同

  select arch_mode from v$database; --查看當前數據庫是否開啟歸檔

  alter system switch logfile;--切換日志文件

  select * from v$dm_ini where para_name ='RLOG_APPEND_LOGIC';--查dm_ini配置文件中的參數
  alter system set 'RLOG_APPEND_LOGIC'=1 both;--修改參數值

  select * from v$dm_ini where para_name like '%SYSTEM_PATH%'; --查看系統目錄 數據庫所在目錄

  select * from DBA_INDEXES;--查索引信息,包括表名和模式等信息

  --查表下的索引、約束等信息
  select * from sysobjects where pid =(
    select id from sysobjects where name='city' and schid=(select id from sysobjects where name='dmhr')
  )
  --查表下列信息
  select * from SYSCOLUMNS where id =(
    select id from sysobjects where name='city' and schid=(select id from sysobjects where name='dmhr')
  )

  SELECT SF_GET_CASE_SENSITIVE_FLAG();--獲得大小寫敏感信息
  SELECT SF_GET_EXTENT_SIZE ();--獲得系統建庫時指定的簇大小
  SELECT PAGE();--獲得系統建庫時指定的頁大小
  SELECT SF_GET_UNICODE_FLAG ();--獲得系統建庫時指定字符集

  select * from v$version;--顯示版本信息,包括服務器版本號與DB版本號 DMDSC版本號
  select * from v$database;
  select * from v$instance;

  SELECT SF_CHECK_SYSTEM_PACKAGES;--獲得系統包的啟用狀態。0:未啟用;1:已啟用 由是否執行過 SP_CREATE_SYSTEM_PACKAGES (1);語句決定,執行過,表示已啟用。
  SELECT SF_CHECK_SYSTEM_PACKAGE('DBMS_SCHEDULER');--獲取某一個系統包的啟動狀態

  SELECT DBMS_METADATA.GET_DDL('TABLE','CITY','DMHR');--查詢DMHR模式下CITY表的建表語句
  SELECT DBMS_METADATA.GET_DDL('index','INDEX33555527','DMHR');--獲取DMHR模式下INDEX33555527索引的創建語句
  SELECT DBMS_METADATA.GET_DDL('view','test_view','DMHR');--獲取DMHR模式下test_view視圖的創建語句
  SELECT DBMS_METADATA.GET_DDL('PROCEDURE','PROC1','DMHR');--獲取存儲過程定義語句
  具體參考系統包手冊GET_DDL參數部分

  DBMS_OUTPUT.ENABLE();
  dbms_output.put_line('達夢數據庫有限公司'); --將信息打印到客戶端
  print('達夢數據庫有限公司');--將信息打印到客戶端

  SELECT DBMS_RANDOM.VALUE(10,100);--隨機數

  SELECT DBMS_SESSION.IS_SESSION_ALIVE(DBMS_SESSION.UNIQUE_SESSION_ID) FROM DUAL;--當前會話是否為活動會話

  SELECT * FROM ARRAY DBMS_SPACE.TS_GET(4);--獲取某一個表空間信息(表空間 ID、表空間名、表空間類型:1 DB 類型,2 臨時文件組、表空間狀態、表空間的最大空間、表空間的總大小(頁)、包含文件的個數)
  select DBMS_SPACE.TS_N_GET;--獲得數據庫中表空間的個數
  SELECT * FROM ARRAY DBMS_SPACE.FILE_GET(4,0);-- 第一個參數是表空間號,第二個參數是文件號 獲得文件信息(文件路徑、文件創建時間、文件讀寫狀態 1 讀,2 寫文件修改的時間、修改的事務 ID 、文件的總大小(M)、文件的空閑大小(M)、數據文件中連續空白頁的起始頁號、讀頁個數、寫頁個數、頁大小(K)、讀請求個數、寫請求個數、文件可擴展標記、文件最大大小(M)、文件每次擴展大小(M)、文件包含的總描述頁的數目)
  SELECT * from ARRAY DBMS_SPACE.TS_ALL_GET();--獲取所有表空間的id
  SELECT * FROM ARRAY DBMS_SPACE.FILE_ALL_GET(6);--id為6的表空間下的所有文件的id

  SELECT NAME , FIRST_TIME , NEXT_TIME , FIRST_CHANGE# , NEXT_CHANGE# FROM V$ARCHIVED_LOG;--查詢有哪些歸檔日志

  ALTER DATABASE MOUNT;--修改數據庫為 MOUNT 狀態
  ALTER DATABASE ADD ARCHIVELOG 'DEST = E:\dmdbms\data\DAMENG3\arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';--配置本地歸檔
  ALTER DATABASE ARCHIVELOG;--開啟歸檔模式
  ALTER DATABASE OPEN;--修改數據庫為 OPEN 狀態

 

 

更多資訊請上達夢技術社區了解: https://eco.dameng.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM