天天看點

達夢體系結構與運維管理

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

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

在啟動資料庫的指令工具中輸入exit,然後回車,退出DM資料庫

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

這種修改檔案路徑的方法也可用于重做日志檔案,系統表空間檔案等路徑的修改

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

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;

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

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

select checkpoint(rate int);

說明:rate表示刷髒頁百分比,取值範圍1-100或0,如果為0表示所有髒頁都重新整理到磁盤,如果是30表示30%的髒頁重新整理到磁盤。

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

終止 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

監控結果存放在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.cnblogs.com/huzei/

本部落格所有文章僅用于學習、研究和交流目的,歡迎非商業性質轉載。

由于部落客的水準有限,不足和錯誤之處在所難免,希望大家能夠批評指出。