達夢體系結構與運維管理

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]css

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

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

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

二、服務的方式

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服務器會強制退出。session

(二)關閉數據庫

一、命令行模式

在啓動數據庫的命令工具中輸入exit,而後回車,退出DM數據庫app

二、服務的方式

systemctl stop DmServiceDMOASERVER.serviceide

2、表空間

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;

3、帳戶

(一)帳戶建立

建立用戶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;

4、重作日誌文件

(一)添加劇作日誌文件

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

(二)擴展重作日誌文件

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

5、回滾表空間

回滾空間的空間名固定爲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
這種修改文件路徑的方法也可用於重作日誌文件,系統表空間文件等路徑的修改

6、經常使用操做

(一)會話

一、鏈接會話概況

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

二、鏈接會話詳細信息

如:執行的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;

三、殺掉會話

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

(二)SQL

一、經過會話id查詢SQL執行文本
select sf_get_session_sql(281223325068824)from dual;
二、經過sql文本查詢sql_id和hash_value
select*from v$sqltext where sql_text like '%select wftnode0_.NODEID as NODEID40_0_%';
三、經過sql_id或hash_value查詢執行計劃
select*from v$sql_plan where sql_id=16919;
四、經過sql_id查詢sql歷史執行信息
select*from v$sql_history where sql_id=16919;
五、查詢執行時長超過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';
六、顯示系統最近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;

(四)數據庫對象信息

一、全部帳戶

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';

二、指定帳戶下全部對象

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

(五)表空間

一、單獨查詢數據文件

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;

二、彙總數據文件

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;

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

一、經過視圖查看

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

二、經過函數查看/修改

能夠在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 應該深入理解配置參數中每一個參數的含義和對系統的影響,避免因爲錯誤的調整致使影響整個系統對外提供正常服務。對於一些關鍵業務,在實際調整前,建議在測試系統上先進行試驗,驗證經過後再在生產系統上進行調整。

(八)數據庫歸檔配置

一、開啓歸檔

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

二、查看是否開啓歸檔

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

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

三、查看歸檔配置

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

7、經常使用函數

(一)執行檢查點

select checkpoint(rate int);
說明:rate表示刷髒頁百分比,取值範圍1-100或0,若是爲0表示全部髒頁都刷新到磁盤,若是是30表示30%的髒頁刷新到磁盤。

(二)INI參數管理

一、得到dm.ini文件中BUFFER參數值
select sf_get_para_value(1,'buffer');
二、將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);
三、設置會話級ini參數join_hash_size的值爲2000
sf_set_session_para_value('join_hash_size',2000);
四、重置會話級ini參數join_hash_size的值
sp_reset_session_para_value('join_hash_size')
五、獲取會話級ini參數join_hash_size的值:
select sf_get_session_para_value('join_hash_size');
六、設置服務器日誌相關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);

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

一、得到系統建庫時指定的簇大小
select sf_get_extent_size ();
二、得到系統建庫時指定的頁大小
select sf_get_page_size ();
三、得到系統建庫時指定字符集
select sf_get_unicode_flag ();
四、獲取數據庫惟一標誌 sguid
select sf_get_sguid();
五、獲取一個惟一編碼串。
select guid();
六、返回當前鏈接 id
select sessid ();
七、返回當前用戶 id
select uid();
八、返回當前用戶名
select user();
九、獲取數據庫名
select cur_database();
十、獲取系統當前時鐘記數
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);

(十一)備份恢復管理

一、添加備份目錄
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
二、刪除備份目錄
SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');
三、清理所有備份目錄
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
四、刪除指定備份集
SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove',1);
五、批量刪除知足指定條件的全部備份集。
SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);
六、批量刪除指定時間以前的數據庫備份集
CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW());
七、批量刪除指定表空間對象及指定時間以前的表空間備份集
CALL SP_TS_BAKSET_REMOVE_BATCH('DISK',NOW(),'MAIN');
八、批量刪除指定表對象及指定時間以前的表備份集
CALL SP_TAB_BAKSET_REMOVE_BATCH('DISK',NOW(),'SYSDBA','TAB_FOR_BATCH_DEL');
九、批量刪除指定時間以前的歸檔備份集
CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());

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

一、返回表/視圖定義
CALL SP_TABLEDEF('PRODUCTION','PRODUCT');
CALL SP_VIEWDEF('PURCHASING','VENDOR_EXCELLENT');
二、獲取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);
三、對指定索引進行空間整理
CALL SP_REORGANIZE_INDEX('PRODUCTION','PRODUCT_IND');
四、重建索引
SP_REBUILD_INDEX('SYSDBA', 33555530);
五、獲取自增列當前值
SELECT IDENT_CURRENT('PRODUCTION.PRODUCT');

(十三)日誌管理

一、刪除三天以前的歸檔日誌
SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 3);
二、刪除 LSN 值小於 95560 的歸檔日誌文件。
SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(95560)

(十四)統計信息

一、對 SYSOBJECTS 表上全部的索引生成統計信息
CALL SP_TAB_INDEX_STAT_INIT ('SYS', 'SYSOBJECTS');
二、對庫上全部模式下的全部用戶表以及表上的全部索引生成統計信息
CALL SP_DB_STAT_INIT ();
三、對指定的索引 IND 生成統計信息
CALL SP_INDEX_STAT_INIT ('SYSDBA', 'IND');
四、對錶 SYSOBJECTS 的 ID 列生成統計信息
CALL SP_COL_STAT_INIT ('SYS', 'SYSOBJECTS', 'ID');
五、對'SYSOBJECTS'表上全部的列生成統計信息
CALL SP_TAB_COL_STAT_INIT ('SYS', 'SYSOBJECTS');
六、對'SYSOBJECTS'表上全部的列生成統計信息,採樣率 90
CALL SP_STAT_ON_TABLE_COLS ('SYS','SYSOBJECTS',90);
七、對錶 SYSOBECTS 生成統計信息
CALL SP_TAB_STAT_INIT ('SYS', 'SYSOBJECTS');
八、對'SELECT * FROM SYSOBJECTS'語句涉及的全部表生成統計信息
CALL SP_SQL_STAT_INIT ('SELECT * FROM SYSOBJECTS');
九、清空索引 IND 的統計信息
CALL SP_INDEX_STAT_DEINIT ('SYSDBA', 'IND');
十、刪除 SYSOBJECTS 的 ID 列的統計信息
CALL SP_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS', 'ID');
十一、刪除 SYSOBJECTS 表上全部列的統計信息
CALL SP_TAB_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS');
十二、刪除表 SYSOBECTS 的統計信息
CALL SP_TAB_STAT_DEINIT ('SYS', 'SYSOBJECTS');
1三、統計指定執行ID的全部操做符的執行時間
需設置INI參數ENABLE_MONITOR=一、MONITOR_TIME=1 和 MONITOR_SQL_EXEC=1。
select count(*) from sysobjects where name='SYSDBA';
已用時間: 14.641(毫秒). 執行號:26. 能夠獲得執行號爲 26。
et(26);

(十五)資源監控

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

(十六)空間佔用

一、查看用戶佔用的空間
可使用系統函數USER_USED_SPACE獲得用戶佔用空間的大小,函數參數爲用戶名,返回值爲佔用的頁的數目。
SELECT USER_USED_SPACE('TEST_USER');
二、查看錶佔用的空間
可使用系統函數TABLE_USED_SPACE獲得表對象佔用空間的大小,函數參數爲模式名和表名,返回值爲佔用的頁的數目。
SELECT TABLE_USED_SPACE('SYSDBA', 'TEST');
三、查看錶使用的頁數
可使用系統函數TABLE_USED_PAGES獲得表對象實際使用頁的數目,函數參數爲模式名和表名,返回值爲實際使用頁的數目。
SELECT TABLE_USED_PAGES('SYSDBA', 'TEST');
四、查看索引佔用的空間
可使用系統函數INDEX_USED_SPACE獲得索引佔用空間的大小,函數參數爲索引ID,返回值爲佔用的頁的數目。
SELECT INDEX_USED_SPACE(33555463);
五、查看索引使用的頁數
可使用系統函數INDEX_USED_PAGES獲得索引實際使用頁的數目,函數參數爲索引ID,返回值爲實際使用頁的數目。
SELECT INDEX_USED_PAGES(33555463);
六、獲取整個數據庫佔用的頁數
SELECT DB_USED_SPACE ();

(十七)其餘雜類函數

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

相關文章
相關標籤/搜索