一、啟動/關閉資料庫
(一)啟動資料庫
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/271178.html
標籤:其他
