達夢體系結構與運維管理


一、啟動/關閉數據庫

(一)啟動數據庫

1、命令行方式

cd /dm8/dmdbms/bin
./dmserver [ini_file_path] [-noconsole] [mount]
說明:
(1)Dmserver命令行啟動參數可指定dm.ini文件的路徑,非控制台方式啟動及指定數據庫是否以MOUNT狀態啟動。
(2)Dmserver啟動時可不指定任何參數,默認使用當前目錄下的dm.ini文件,如果當前目錄不存在dm.ini文件,則無法啟動
(3)Dmserver 啟動時可以指定-noconsole 參數。如果以此方式啟動,則無法通過在控制台中輸入服務器命令。當以控制台方式啟動dmserver時,用戶可以在控制台輸入一些命令。
當不確定啟動參數的使用方法時,可以使用 help 參數,將打印出格式、參數說明和使用示例。使用方法如下:
[dmdba@dmtest ~]$ /dm8/dmdbms/bin/dmserver help
格式: ./dmserver [ini_file_path] [-noconsole] [mount] [path=ini_file_path] [dcr_ini=dcr_path]

實例:
./dmserver path=/opt/dmdbms/bin/dm.ini
./dmserver /opt/dmdbms/bin/dm.ini

關鍵字 說明
--------------------------------------------------------------------------------
path dm.ini絕對路徑或者dmserver當前目錄的dm.ini
dcr_ini 如果使用css集群環境,指定dmdcr.ini文件路徑
-noconsole 以服務方式啟動
mount 配置方式啟動
help 打印幫助信息

生產庫實例:/dm8/dmdbms/bin/dmserver /dm8/dmdata/DMOA/dm.ini -noconsole

2、服務的方式

systemctl start DmServiceDMOASERVER.service
systemctl status DmServiceDMOASERVER.service

[root@dmtest ~]# systemctl list-unit-files|grep Dm*
DmAPService.service enabled
DmServiceDMOASERVER.service enabled

說明:
無論是在何種操作系統下運行,DM數據庫在啟動時都會進行LICENSE檢查。若LICENSE過期或KEY文件與實際運行環境不配套,DM服務器會強制退出。

(二)關閉數據庫

1、命令行模式

在啟動數據庫的命令工具中輸入exit,然后回車,退出DM數據庫

2、服務的方式

systemctl stop DmServiceDMOASERVER.service

二、表空間

DM8創建數據庫時,系統會自動創建5個表空間:SYSTEM、ROLL、MAIN、TEMP、HMAIN。
(1)SYSTEM 存放全局數據字典信息和全局系統數據。
(2)ROLL 存放回滾記錄。
(3)MAIN 存放臨時數據。
(4)TEMP 用戶默認表空間。
(5)HMAIN HUGE表空間,存放列式存儲數據。

(一)創建表空間

創建名為bookshop的表空間,並指定該空間上擁有2個數據文件,每個數據文件的大小為128M:
create tablespace bookshop datafile 'd:\bookshop1.dbf' size 128,'d:\bookshop2.dbf' size 128;
創建表空間時指定數據文件初始代銷為128M,擴展屬性為可自動擴展,每次擴展大小為100m,最大可擴展到200M:
create tablespace test datafile '/dm8/dmdata/DMOA/test.dbf' size 128 autoextend on next 100 maxsize 200;

說明:
添加的數據文件大小最小為4096*頁大小,如頁大小為32K,則可添加的文件最小值為4096*32k=128M。

(二)刪除表空間

只可以刪除用戶創建的表空間並且只能刪除未使用過的表空間。刪除表空間時會刪除其擁有的所有數據文件。
例如刪除bookshop表空間:
drop tablespace bookshop;

(三)修改表空間名

可修改已存在的由用戶創建的表空間的名稱。
比如可修改bookshop表空間名為books:
alter tablespace bookshop rename to books;

(四)擴展表表空間

在bookshop表空間中添加大小為64M的數據文件:
alter tablespace bookshop add datafile 'd:\book.dbf' size 64;
擴展bookshop表空間中數據文件book.dbf大小至128M:
alter tablespace bookshop resize datafile 'd:\book.dbf' to 128;

三、賬戶

(一)賬戶創建

創建用戶TEST_USER時指定該用戶使用的最大磁盤空間為50M
create user test_user identified by test_password diskspace limit 50;
對用戶的空間限制也可進行更改,如修改用戶TEST_USER的磁盤空間限制為無限制:
alter user test_user diskspace unlimited;

(二)表創建

創建表TEST時指定該表對象可使用的最大磁盤空間為500M
create table test(sno int,myinfo varchar) diskspace limit 500;
對表對象空間的限制也可進行更改,如修改表TEST的磁盤空間限制為50M:
alter table test modify diskspace limit 50;

四、重做日志文件

(一)添加重做日志文件

在服務器打開狀態下,可以添加新的重做日志文件。添加的數據文件大小最小為4096*頁大小,如頁大小為32K,則可添加的文件最小值為4096*32k=128M。
示例如下:
alter database add logfile 'd:\dameng03.log' size 128;

(二)擴展重做日志文件

在服務器打開狀態下,可以擴展已有的重做日志文件的大小。
alter database resize logfile 'd:\dameng03.log' to 256;

五、回滾表空間

回滾空間的空間名固定為ROLL,不可修改。

(一)擴展回滾表空間

回滾空間的其他管理和用戶表空間的管理基本是一樣的,可增加和擴展回滾空間中的回滾文件,設置回滾空間的擴展屬性。

(二)修改回滾表空間路徑

回滾文件的路徑記錄在控制文件里面,可以使用dmctlcvt工具在DM服務器關閉的狀態下對控制文件進行修改。使用dmctlcvt工具將控制文件轉換為文本文件,編輯文本文件
中要修改的文件的路徑后再使用dmctlcvt工具將文本文件轉換為控制文件即可。
示例如下:回滾表空間路徑從d盤移動到e盤
(1)首先轉換控制文件到文本文件
dmctlcvt c2t D:\dm.ctl D:\ctl.txt
(2)編輯ctl.txt文本文件
將文件中的fil_path=d:\roll.dbf改為新路徑fil_path=e:\roll.dbf,保存文本文件。
(3)復制d:\roll.dbf文件為e:\roll.dbf
(4)最后轉換文本文件到控制文件
dmctlcvt t2c D:\ctl.txt D:\dm.ctl
這種修改文件路徑的方法也可用於重做日志文件,系統表空間文件等路徑的修改

六、常用操作

(一)會話

1、連接會話概況

select*from v$connect;
說明:IP_ADDR為“::1”且TYPE$為“SQL3”,表示會話是在達蒙服務器通過bing/disql直連的

2、連接會話詳細信息

如:執行的sql語句、主庫名、當前會話狀態、用戶名等等
---會話id可以通過“select sessid ();”獲取
select *from v$sessions where state='ACTIVE';
select *from v$sessions where user_name='OA' and clnt_host='dmtest' and appname='disql' and clnt_ip='::1' and sess_id=281223325068824;
select sess_seq,state,substr(sql_text,0,10)sql_text,user_name,create_time,clnt_host,appname,clnt_ip,osname,last_send_time,trx_id from v$sessions;

3、殺掉會話

sp_close_session(281224128100360);
說明:281224128100360是v$sessions中的sess_id

(二)SQL

1、通過會話id查詢SQL執行文本
select sf_get_session_sql(281223325068824)from dual;
2、通過sql文本查詢sql_id和hash_value
select*from v$sqltext where sql_text like '%select wftnode0_.NODEID as NODEID40_0_%';
3、通過sql_id或hash_value查詢執行計划
select*from v$sql_plan where sql_id=16919;
4、通過sql_id查詢sql歷史執行信息
select*from v$sql_history where sql_id=16919;
5、查詢執行時長超過2秒的活動SQL語句
select sess_id,sql_text,sf_get_session_sql(sess_id)fullsql,last_recv_time,datediff(ss,last_recv_time,sysdate)y_exectime,clnt_ip from v$sessions where state='ACTIVE';
6、顯示系統最近1000條執行時間超過預定值的SQL語句
select*from v$long_exec_sqls where to_char(finish_time,'yyyymmdd')='20210219' order by finish_time desc;

(三)事務和鎖

select*from v$trx
select*from v$lock;
select o.name,l.* from v$lock l,sysobjects o where l.table_id=o.id and l.blocked=1;

(四)數據庫對象信息

1、所有賬戶

select username,user_id,account_status,default_tablespace,temporary_tablespace,created,profile from dba_users;
select o.name,u.id,o.crtdate,o.valid,u.locked_status,last_login_dtid from sysusers u,sysobjects o where u.id=o.id and o.type$='UR' and o.subtype$='USER';

2、指定賬戶下所有對象

select*from sysobjects where schid in(select id from sysobjects where type$='SCH' and name='OA');
sysobjects字段說明:
schid:TYPE$=SCHOBJ或者TYPE$=TABOBJ時表示對象所屬的模式 ID,否則為 0。
type$:對象的主類型
1) 庫級:UR(用戶), SCH(模式), POLICY,GDBLINK, GSYNOM,DSYNOM,DIR,OPV,SPV,RULE,DMNOBJ;
2) 模式級:SCHOBJ;
3) 表級:TABOBJ
subtype$:對象的子類型。分為三種:
1) 用戶對象:USER, ROLE;
2) 模式對象:UTAB,STAB,VIEW,PROC,SEQ,PKG,TRIG, DBLINK,SYNOM, CLASS,TYPE,JCLASS,DOMAIN,CHARSET,CLLT,CONTEXT;
3) 表對象:INDEX,CNTIND,CONS

(五)表空間

1、單獨查詢數據文件

select t.name ts_name,
decode(d.auto_extend,1,'自動擴展',0,'非自動擴展')auto_extend,
d.next_size,
t.id ts_id,
d.id file_id,
d.path file_name,
d.create_time,
d.modify_time,
d.status$,
d.total_size * sf_get_page_size() / 1024 / 1024||'M' "Size(MB)",
d.free_size * sf_get_page_size() / 1024 / 1024||'M' "Free(MB)",
(d.total_size-d.free_size) * 100 / d.total_size||'%' "Used(%)"
from v$tablespace t, v$datafile d
where t.id = d.group_id order by t.id,d.id;

2、匯總數據文件

select name,
sum(total_size) * sf_get_page_size() / 1024 / 1024 || 'M' "Size(MB)",
sum(free_size) * sf_get_page_size() / 1024 / 1024 || 'M' "Free(MB)",
(sum(total_size)-sum(free_size)) * 100 / sum(total_size) || '%' "Used(%)"
from (select t.name, d.total_size, d.free_size
from v$tablespace t, v$datafile d
where t.id = d.group_id)
group by name;

(六)數據庫及參數配置

數據庫信息:
select*from v$database;
實例信息:
select*from v$instance;
所有初始化參數:
select*from v$dm_ini;
控制文件:
select*from v$dm_ini where para_name='CTL_PATH';
歸檔配置:
select*from v$dm_arch_ini;
日志文件:
select*from v$rlogfile;

(七)查看/調整數據庫參數配置

1、通過視圖查看

select*from v$dm_ini where para_name='SVR_LOG';
此參數表示是否打開SQL日志功能,0:表示關閉;1:表示打開;2:按文件中記錄數量切換日志文件,日志記錄為詳細模式;3:不切換日志文件,日志記錄為簡單模式,只記錄時間和原始語句

2、通過函數查看/修改

可以在dm數據庫運行過程中執行sf_get_para_value、sf_get_para_double_value和sf_get_para_string_value這三個函數來獲取系統的當前配置參數,並且可以使用sp_set_para_value 和 sp_set_para_double_value 過程來修改靜態/動態配置參數。
SQL> select sf_get_para_value(1,'svr_log') from sysdual;

行號 SF_GET_PARA_VALUE(1,'svr_log')
---------- ------------------------------
1 1
SQL> SELECT sf_get_sys_priv(8197) FROM sysdual;

行號 SF_GET_SYS_PRIV(8197)
---------- ---------------------
1 EXECUTE

示例如下:
sf_get_para_value(scope int, paraname varchar(256))
配置參數的值類型為數值類型時使用該函數來獲取當前值。scope 參數為1表示獲取ini文件中配置參數的值,為2表示獲取內存中配置參數的值。
sf_get_para_double_value(scope int, paraname varchar(8187))
配置參數的值類型為浮點型時使用該函數來獲取當前值。scope 參數為1 表示獲取ini文件中配置參數的值,為 2 表示獲取內存中配置參數的值。
sf_get_para_string_value (scope int, paraname varchar(8187))
配置參數的值為字符串類型時用該系統函數來獲取當前值。scope 參數為 1 表示獲取ini 文件中配置參數的值,為 2 表示獲取內存中配置參數的值。

sp_set_para_value (scope int, paraname varchar(256), value int64)
該過程用於修改整型靜態配置參數和動態配置參數。scope 參數為1 表示在內存和ini文件中都修改參數值,此時只能修改動態的配置參數。參數為 2 表示只在 ini 文件中修改配置參數,此時可用來修改靜態配置參數和動態配置參數。當 scope 等於 1,試圖修改靜態配置參數時服務器會返回錯誤信息。只有具有 dba 角色的用戶才有權限調用 sp_set_para_value。
sp_set_para_double_value (scope int, paraname varchar(8187),alue double)
該過程用於修改浮點型靜態配置參數和動態配置參數。scope 參數為 1 表示在內存和ini 文件中都修改參數值,此時只能修改動態的配置參數。參數為 2 表示只在 ini 文件中修改配置參數,此時可用來修改靜態配置參數和動態配置參數。當 scope 等於 1,試圖修改靜態配置參數時服務器會返回錯誤信息。只有具有 dba 角色的用戶才有權限調用sp_set_para_double_value。
sf_set_system_para_value (paraname varchar(256), value int64\double\varchar(256), deferred int, scope int64)
該過程用於修改系統整型、double、varchar 的靜態配置參數或動態配置參數。deferred 參數,為 0 表示當前 session 修改的參數立即生效,為 1 表示當前 session不生效,后續再生效,默認為 0。scope 參數為 1 表示在內存和 ini 文件中都修改參數值,此時只能修改動態的配置參數。參數為 2 表示只在 ini 文件中修改配置參數,此時可用來修 改 靜 態 配 置 參 數 和 動 態 配 置 參 數 。 只 有 具 有 dba 角 色 的 用 戶 才 有 權 限 調 用sf_set_system_para_value。

dm 的動態 ini 參數分為系統級和會話級兩種級別。會話級參數在服務器運行過程中被修改時,之前創建的會話不受影響,只有新創建的會話使用新的參數值。
1. sf_set_session_para_value (paraname varchar(8187), value bigint)
設置某個會話級 ini 參數的值,設置的參數值只對本會話有效。
2. sp_reset_session_para_value (paraname varchar(8187))
重置某個會話級 ini 參數的值,使得這個 ini 參數的值和系統 ini 參數的值保持一致。
3. sf_get_session_para_value (paraname varchar(8187))
獲得當前會話的某個會話級 ini 參數的值。需要注意的是,在對參數進行調整前,dba 應該深刻理解配置參數中每個參數的含義和對系統的影響,避免由於錯誤的調整導致影響整個系統對外提供正常服務。對於一些關鍵業務,在實際調整前,建議在測試系統上先進行試驗,驗證通過后再在生產系統上進行調整。

(八)數據庫歸檔配置

1、開啟歸檔

alter database add archivelog 'type=local,dest=/dm8/dmarch,file_size=512,space_limit=0';
參數說明:
file_size 單個redo日志歸檔文件大小,取值范圍65MB-2048MB,默認是1024MB。

2、查看是否開啟歸檔

SQL> select name,status$,role$,arch_mode from v$database;

行號 NAME STATUS$ ROLE$ ARCH_MODE
---------- ---- ----------- ----------- ---------
1 DMOA 4 0 Y

3、查看歸檔配置

SQL> select*from v$dm_arch_ini;

行號 ARCH_NAME ARCH_TYPE ARCH_DEST ARCH_FILE_SIZE ARCH_SPACE_LIMIT ARCH_HANG_FLAG ARCH_TIMER_NAME ARCH_IS_VALID ARCH_WAIT_APPLY ARCH_INCOMING_PATH ARCH_CURR_DEST
---------- -------------- --------- ----------- -------------- ---------------- -------------- --------------- ------------- --------------- ------------------ --------------
1 ARCHIVE_LOCAL1 LOCAL /dm8/dmarch 512 51200 1 NULL Y NULL NULL /dm8/dmarch

七、常用函數

(一)執行檢查點

select checkpoint(rate int);
說明:rate表示刷臟頁百分比,取值范圍1-100或0,如果為0表示所有臟頁都刷新到磁盤,如果是30表示30%的臟頁刷新到磁盤。

(二)INI參數管理

1、獲得dm.ini文件中BUFFER參數值
select sf_get_para_value(1,'buffer');
2、將dm.ini文件中HFS_CACHE_SIZE參數值設置為320
sp_set_para_value (1,'hfs_cache_size',320);
也可以統一使用如下函數修改系統整型、double、varchar 的靜態配置參數或動態配置參數:
sf_set_system_para_value ('join_hash_size',50,1,1);
3、設置會話級ini參數join_hash_size的值為2000
sf_set_session_para_value('join_hash_size',2000);
4、重置會話級ini參數join_hash_size的值
sp_reset_session_para_value('join_hash_size')
5、獲取會話級ini參數join_hash_size的值:
select sf_get_session_para_value('join_hash_size');
6、設置服務器日志相關INI參數
select sf_set_sql_log(1, '3:5:7');

(三)殺掉會話

說明:281224128100360是v$sessions中的sess_id
sp_close_session(281224128100360);
終止 id 為 310509680 的會話的操作
call sp_cancel_session_operation (310509680);

(四)查詢數據庫基礎信息

1、獲得系統建庫時指定的簇大小
select sf_get_extent_size ();
2、獲得系統建庫時指定的頁大小
select sf_get_page_size ();
3、獲得系統建庫時指定字符集
select sf_get_unicode_flag ();
4、獲取數據庫唯一標志 sguid
select sf_get_sguid();
5、獲取一個唯一編碼串。
select guid();
6、返回當前連接 id
select sessid ();
7、返回當前用戶 id
select uid();
8、返回當前用戶名
select user();
9、獲取數據庫名
select cur_database();
10、獲取系統當前時鍾記數
select cur_tick_time();

(五)重組表空間空閑簇

call sp_reclaim_ts_free_extents('system');

(六)清空執行緩存信息

call sp_clear_plan_cache();

(七)執行計划

設置計划 id 為 473546872 的計划結果集緩存生效。
call sp_set_pln_rs_cache(473546872, 1);

清空 id 為 473546872 的執行緩存信息
call sp_clear_plan_cache(473546872);

(八)用戶對表或列的權限

獲得用戶 sysdba 對表 sys.sysobjects 的查詢權限
select sf_check_user_table_priv ('sys', 'sysobjects', 'sysdba', 0);
獲得用戶 sysdba 對表 sys.sysobjects 的 id 列的查詢權限
select sf_check_user_table_col_priv ('sys', 'sysobjects', 'id' ,'sysdba', 0);
說明:0=select, 1=insert, 2=delete, 3=update,4=reference

(九)監控執行時間超過5秒的語句

監控結果存放在v$log_exec_sqls_time
call sp_set_long_time(5000);
查看 v$long_exec_sqls 監控的最短執行時間。
select sf_get_long_time();

(十)返回指定會話上最近處理的完整的語句

select sf_get_session_sql(96710784);

(十一)備份恢復管理

1、添加備份目錄
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
2、刪除備份目錄
SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');
3、清理全部備份目錄
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
4、刪除指定備份集
SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove',1);
5、批量刪除滿足指定條件的所有備份集。
SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);
6、批量刪除指定時間之前的數據庫備份集
CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW());
7、批量刪除指定表空間對象及指定時間之前的表空間備份集
CALL SP_TS_BAKSET_REMOVE_BATCH('DISK',NOW(),'MAIN');
8、批量刪除指定表對象及指定時間之前的表備份集
CALL SP_TAB_BAKSET_REMOVE_BATCH('DISK',NOW(),'SYSDBA','TAB_FOR_BATCH_DEL');
9、批量刪除指定時間之前的歸檔備份集
CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());

(十二)對象相關信息管理

1、返回表/視圖定義
CALL SP_TABLEDEF('PRODUCTION','PRODUCT');
CALL SP_VIEWDEF('PURCHASING','VENDOR_EXCELLENT');
2、獲取check約束/unique約束/索引/同義詞/序列
通過查詢系統表,得到約束 ID 為 134217770,查詢check約束定義:
SELECT A.name, A.ID FROM SYSOBJECTS A, SYSOBJECTS B WHERE B.NAME='TEST_CHECKDEF' AND A.PID=B.ID AND A.SUBTYPE$='CONS';
SELECT CHECKDEF(134217770,1);
通過查詢系統表,系統生成 C2 上的 INDEX 為 33555481,查詢unique約束定義:
SELECT C.INDEXID FROM SYSOBJECTS O,SYSCONS C WHERE O.NAME='CONS1' AND O.ID=C.ID;
SELECT CONSDEF(33555481,1);
查詢系統表得到索引 ID,獲取index的創建定義:
SELECT NAME, ID FROM SYSOBJECTS WHERE NAME='PRODUCT_IND' AND SUBTYPE$='INDEX';
SELECT indexdef(33555530,1);
獲取同義詞定義:
SELECT SYNONYMDEF('SYSDBA', 'SYSOBJECTS',0,1);
獲取序列定義:
SELECT ID FROM SYSOBJECTS WHERE NAME='SEQ1'; --查出 id 為 167772160
SELECT SEQDEF(167772160, 1);
3、對指定索引進行空間整理
CALL SP_REORGANIZE_INDEX('PRODUCTION','PRODUCT_IND');
4、重建索引
SP_REBUILD_INDEX('SYSDBA', 33555530);
5、獲取自增列當前值
SELECT IDENT_CURRENT('PRODUCTION.PRODUCT');

(十三)日志管理

1、刪除三天之前的歸檔日志
SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 3);
2、刪除 LSN 值小於 95560 的歸檔日志文件。
SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(95560)

(十四)統計信息

1、對 SYSOBJECTS 表上所有的索引生成統計信息
CALL SP_TAB_INDEX_STAT_INIT ('SYS', 'SYSOBJECTS');
2、對庫上所有模式下的所有用戶表以及表上的所有索引生成統計信息
CALL SP_DB_STAT_INIT ();
3、對指定的索引 IND 生成統計信息
CALL SP_INDEX_STAT_INIT ('SYSDBA', 'IND');
4、對表 SYSOBJECTS 的 ID 列生成統計信息
CALL SP_COL_STAT_INIT ('SYS', 'SYSOBJECTS', 'ID');
5、對'SYSOBJECTS'表上所有的列生成統計信息
CALL SP_TAB_COL_STAT_INIT ('SYS', 'SYSOBJECTS');
6、對'SYSOBJECTS'表上所有的列生成統計信息,采樣率 90
CALL SP_STAT_ON_TABLE_COLS ('SYS','SYSOBJECTS',90);
7、對表 SYSOBECTS 生成統計信息
CALL SP_TAB_STAT_INIT ('SYS', 'SYSOBJECTS');
8、對'SELECT * FROM SYSOBJECTS'語句涉及的所有表生成統計信息
CALL SP_SQL_STAT_INIT ('SELECT * FROM SYSOBJECTS');
9、清空索引 IND 的統計信息
CALL SP_INDEX_STAT_DEINIT ('SYSDBA', 'IND');
10、刪除 SYSOBJECTS 的 ID 列的統計信息
CALL SP_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS', 'ID');
11、刪除 SYSOBJECTS 表上所有列的統計信息
CALL SP_TAB_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS');
12、刪除表 SYSOBECTS 的統計信息
CALL SP_TAB_STAT_DEINIT ('SYS', 'SYSOBJECTS');
13、統計指定執行ID的所有操作符的執行時間
需設置INI參數ENABLE_MONITOR=1、MONITOR_TIME=1 和 MONITOR_SQL_EXEC=1。
select count(*) from sysobjects where name='SYSDBA';
已用時間: 14.641(毫秒). 執行號:26. 可以得到執行號為 26。
et(26);

(十五)資源監控

1、監測當前系統的內存空間是否低於閥值
CALL SP_CHECK_IDLE_MEM ();
2、監測 d:\data 路徑下的磁盤空間是否低於閥值
CALL SP_CHECK_IDLE_DISK ('d:\data');
說明:對 指 定 位 置 的 磁 盤 空 間 進 行 檢 測 , 並 在 低 於 閾 值 ( 對 應 INI 參 數IDLE_DISK_THRESHOLD)的情況下打印報警記錄到日志,同時報磁盤空間不足的異常。
3、查看 DM 服務器對用戶命令的平均響應時間
在 dm.ini 中 ENABLE_MONITOR 取值不小於 2 的前提下執行,單位秒
SELECT SYS.SF_GET_CMD_RESPONSE_TIME();
4、查看事務的平均響應時間
在 dm.ini 中 ENABLE_MONITOR 取值不為 0 的前提下執行,單位秒
SELECT SYS.SF_GET_TRX_RESPONSE_TIME();
5、查看數據庫中用戶態時間占總處理時間的比值
在 dm.ini 中 ENABLE_MONITOR 取值不小於 2 的前提下執行,用戶態時時間占總處理時間的比值,該比值越大表明用於 IO、事務等待等耗費的時間越少
SELECT SYS.SF_GET_DATABASE_TIME_PER_SEC();

(十六)空間占用

1、查看用戶占用的空間
可以使用系統函數USER_USED_SPACE得到用戶占用空間的大小,函數參數為用戶名,返回值為占用的頁的數目。
SELECT USER_USED_SPACE('TEST_USER');
2、查看表占用的空間
可以使用系統函數TABLE_USED_SPACE得到表對象占用空間的大小,函數參數為模式名和表名,返回值為占用的頁的數目。
SELECT TABLE_USED_SPACE('SYSDBA', 'TEST');
3、查看表使用的頁數
可以使用系統函數TABLE_USED_PAGES得到表對象實際使用頁的數目,函數參數為模式名和表名,返回值為實際使用頁的數目。
SELECT TABLE_USED_PAGES('SYSDBA', 'TEST');
4、查看索引占用的空間
可以使用系統函數INDEX_USED_SPACE得到索引占用空間的大小,函數參數為索引ID,返回值為占用的頁的數目。
SELECT INDEX_USED_SPACE(33555463);
5、查看索引使用的頁數
可以使用系統函數INDEX_USED_PAGES得到索引實際使用頁的數目,函數參數為索引ID,返回值為實際使用頁的數目。
SELECT INDEX_USED_PAGES(33555463);
6、獲取整個數據庫占用的頁數
SELECT DB_USED_SPACE ();

(十七)其他雜類函數

1、將整型數 2010,2,2,5,5 轉換成日期時間類型
SELECT TO_DATETIME (2010,2,2,5,5);
2、清空動態性能視圖 V$SQL_HISTORY 的歷史數據
SP_DYNAMIC_VIEW_DATA_CLEAR('V$SQL_HISTORY');
3、解鎖用戶
call SP_UNLOCK_USER('USER123');
4、獲得表達式的內部存儲字節
select dump('an',1017);
5、讓一個線程睡眠 1 秒鍾之后,再醒過來繼續運行
sleep(1);
6、獲取表的行數,功能和 SP_GET_TABLE_COUNT 一樣
SELECT SP_GET_TABLE_COUNT(1097);


免責聲明!

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



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