达梦数据库-DMSQL和常用系统视图

存储过程

存储过程的创建

    CREATE OR REPLACE PROCEDURE 存储过程名称(参数 参数类型) AS
        变量声明部分

    BEGIN
        语句部分

    EXCEPTION
        处理异常部分

    END;

重新编译存储过程

    ALTER PROCEDURE 存储过程名称 COMPILE;

删除存储过程

    DROP PROCEDURE 存储过程名称

示例

    1、创建一个表用于存储数据
        CREATE TABLE T1(id INT);

    2、创建一个存储过程, 计算获得的结果插入到T1表中
        CREATE OR REPLACE PROCEDURE p1(x IN INT) AS
            y INT:= 10;

        BEGIN
            x := x + y;
            INSERT INTO T1 VALUES(x);

        END;
        /

    3、调用存储过程
        SQL> CALL p1(10);
        SQL> SELECT * FROM T1;

        行号     ID         
        ---------- -----------
        1          20

存储函数

存储函数创建

    CREATE OR REPLACE FUNCTION 存储过程名称(参数 参数类型) RETURN 返回的数据类型 AS
        变量声明部分

    BEGIN
        语句部分
        RETURN 返回的数据

    EXCEPTION
        处理异常部分

    END;

示例

    CREATE OR REPLACE FUNCTION f1(x IN INT ) RETURN INT AS
        y INT:= 10;
    BEGIN
        x := x - y;
        RETURN x;
    END;
    /

    SQL> SELECT f1(100);

    行号     F1(100)    
    ---------- -----------
    1          90

存储过程和存储函数的参数类型

IN     输入参数
OUT    输出参数
IN OUT 参数既可以输入也可以输出

变量

声明变量

    var1 数据类型:= 值
    var1 数据类型 DEFAULT 值
    SET var1 := 值

控制结构

分支结构

IF 语句

        单分支语法
            IF 条件 THEN
                ...

            ELSE
                ...

            END IF;

        多分支语法
            IF 条件 THEN
                ...

            ELSEIF 条件 THEN
                ...

            ELSE
                ...
                
            END IF;

        示例
            CREATE TABLE a1(id INT , cont VARCHAR(12));

            CREATE OR REPLACE PROCEDURE p11(x IN INT) AS 
            BEGIN
                IF x > 10 THEN
                    INSERT INTO a1 VALUES(x,'x大于10');

                ELSEIF x < 10 THEN
                    INSERT INTO a1 VALUES(x,'小于10');

                ELSE
                    INSERT INTO a1 VALUES(x,'x等于10');
                END IF;
            END;
            /

CASE 语句

        CASE 条件 
            WHEN 值 THEN ...
            WHEN 值 THEN ...
            WHEN 值 THEN ...
        END;


        CASE 
            WHEN 条件判断 THEN ...
            WHEN 条件判断 THEN ...
            WHEN 条件判断 THEN ...
        END;


        示例
            CREATE OR REPLACE PROCEDURE c11(x IN INT) AS
            BEGIN
                x:= CASE 
                    WHEN x = 1 THEN 1   -- THEN 后面不能写DML语句
                    WHEN x = 2 THEN 2
                    WHEN x = 3 THEN 3
                    WHEN x = 4 THEN 4
                END CASE;
            END;
            /

SWITCH 语句

        SWITCH (条件)
        {
            CASE 值: 语句; BREAK;
            CASE 值: 语句; BREAK;
            CASE 值: 语句; BREAK;
        }

循环语句

LOOP 循环

    CREATE OR REPLACE PROCEDURE f1() AS 
        i INT:= 0;
        s INT:=0;
    BEGIN
        LOOP 
            IF i = 100 THEN

                EXIT;
            END IF;
            s := i + s;
            i := i + 1;
        END LOOP;
    END;
    /

WHILE 循环

    CREATE OR REPLACE PROCEDURE f1() AS 
        i INT:= 0;
        s INT:=0;
    BEGIN
        WHILE i < 100 LOOP
            s := i + s;
            i := i + 1;
        END LOOP;
    END;
    /

FOR 循环

    CREATE TABLE t11(id int);
    
    CREATE OR REPLACE PROCEDURE f1() AS 
        i INT:= 0;
        s INT:=0;
    BEGIN
        FOR a IN 1 .. 3 LOOP
            INSERT INTO T11 VALUES(a);
        END LOOP;
    END;
    /

    SQL> SELECT * FROM t11;

    行号     ID         
    ---------- -----------
    1          1
    2          2
    3          3

REPEAT 循环

        CREATE OR REPLACE PROCEDURE f1() AS 
            i INT:= 0;
            s INT:=0;
        BEGIN
        REPEAT
                i := i + 1;
                INSERT INTO T11 VALUES(i);
            UNTIL i > 10;
        END;
        /

退出语句

EXIT
    EXIT WHEN 1 > 10;

CONTINUE

游标

静态游标: 只读游标 静态游标又分为: 隐式游标和显示游标

定义游标
%FOUND 语句是否修改或查询到了记录, 是返回 TRUE, 否则返回 FALSE
%NOTFOUND 语句是否未能成功修改或查询到记录, 是返回 TRUE, 否则返回FALSE
%ISOPEN 游标是否打开。是返回 TRUE, 否返回 FALSE。由于系统在语句执行完成后会自动关闭隐式游标, 因此隐式游标的%ISOPEN 属性永远为 FALSE
%ROWCOUNT DML 语句执行影响的行数, 或 SELECT…INTO 语句返回的行数。

示例

    CREATE OR REPLACE TABLE c1(id INT , name VARCHAR(12));
    INSERT INTO c1 VALUES(1,'AAA');
    INSERT INTO c1 VALUES(2,'BBB');
    INSERT INTO c1 VALUES(3,'CCC');
    INSERT INTO c1 VALUES(4,'DDD');
    COMMIT;

    DECLARE
        CURSOR cur1 is select * from c1 where id = 1;
    BEGIN
        OPEN cur1 ;
        IF cur1%NOTFOUND THEN
            SELECT 1 FROM dual;
        END IF;
        CLOSE cur1;
    end ;
    /

动态SQL

CREATE OR REPLACE PROCEDURE p1(x IN INT) AS
    sql1 VARCHAR := 'SELECT * FROM c1 WHERE id=?';
BEGIN
    EXECUTE IMMEDIATE sql1 using x;
END;
SQL> call p1(1);

行号     ID          CON
---------- ----------- ---
1          1           AAA

作用: 管理存储过程和函数

包重新编译

    ALTER PACKAGE pkg_name COMPILE;

删除包

    DROP PACKAGE pkg_name;

删除包体

    DROP PACKAGE BODY pkg_name;

创建包示例

    1、创建包
            CREATE OR REPLACE PACKAGE PersonPackage AS 
                E_NoPerson EXCEPTION;
                PersonCount INT;
                Pcur CURSOR;
                PROCEDURE AddPerson(Pname VARCHAR(100), Pcity varchar(100));
                PROCEDURE RemovePerson(Pname VARCHAR(100), Pcity varchar(100));
                PROCEDURE RemovePerson(Pid INT);
                FUNCTION GetPersonCount RETURN INT;
                PROCEDURE PersonList;
            END PersonPackage;

    2、创建包体
        在包体中需要实现具体的包中定义的对象
            CREATE OR REPLACE PACKAGE BODY PersonPackage AS PROCEDURE AddPerson(Pname VARCHAR(100), Pcity varchar(100)) AS 
                BEGIN
                    INSERT INTO Person(Name, City) VALUES (Pname, Pcity);
                    PersonCount = PersonCount + SQL % ROWCOUNT;
                END AddPerson;

                PROCEDURE RemovePerson(Pname VARCHAR(100), Pcity varchar(100)) AS 
                BEGIN
                    DELETE FROM Person WHERE NAME LIKE Pname AND City LIKE Pcity;
                END RemovePerson;

                PROCEDURE RemovePerson(Pid INT) AS 
                BEGIN
                    DELETE FROM Person WHERE Id = Pid; PersonCount = PersonCount - SQL % ROWCOUNT;
                END RemovePerson;

                FUNCTION GetPersonCount RETURN INT AS BEGIN RETURN PersonCount;
                END GetPersonCount;

                PROCEDURE PersonList AS DECLARE V_id INT;
                    V_name VARCHAR(100);
                    V_city VARCHAR(100);
                    BEGIN IF PersonCount = 0 THEN RAISE E_NoPerson;
                    END IF;

                    OPEN Pcur FOR
                    SELECT Id, Name, City FROM Person;

                    LOOP FETCH Pcur INTO V_id,
                        V_name,
                        V_city;
                        EXIT
                        WHEN Pcur % NOTFOUND;
                        PRINT ('No.' || (cast (V_id AS varchar(100))) || ' ' || V_name || '来自' || V_city);
                    END LOOP;

                    CLOSE Pcur;
                END PersonList;
            BEGIN
            SELECT COUNT(*) INTO PersonCount FROM Person;
            END PersonPackage;

触发器

创建触发器语法

    CREATE [OR REPLACE] TRIGGER 触发器名[WITH ENCRYPTION]
    BEFORE|AFTER|INSTEAD OF DELETE|INSERT|UPDATE [OF 列名] ON 表名
    [FOR EACH ROW [WHEN 条件]]
    BEGIN
        DMSQL 程序语句
    END;

删除触发器

    DROP TRIGGER t_name;
    ALTER TRIGGER t_name DISABLE;   将触发器置为失效
    ALTER TRIGGER t_name ENABLE;    将触发器置为有效

重新编译

    ALTER TRIGGER t_name COMPILE;

表级触发器

    对于表级别触发器,只针针对表的DML操作进行触发

事件触发器

触发事件

             DDL: CREATE、ALTER、DROP、GRANT、REVOKE 以及 TRUNCATE
        系统级别: LOGIN/LOGON、LOGOUT/LOGOFF、AUDIT、NOAUDIT、BACKUP DATABASE、RESTORE DATABASE、TIMER、STARTUP、SHUTDOWN 以及 SERERR

时间触发器
    针对某个时间点触发, 支持分钟级别触发

    示例: 每个月的第 28 天, 从早上 9 点开始到晚上 18 点之间, 每隔一分钟就打印一个字符串 Hello World
        CREATE
        OR REPLACE TRIGGER timer2
        AFTER
            TIMER ON DATABASE FOR EACH 1 MONTH DAY 28
        FROM
            TIME '09:00' TO TIME '18:00' FOR EACH 1 MINUTE DECLARE str VARCHAR;

        BEGIN PRINT 'HELLO WORLD';

        END;

示例
    CREATE TRIGGER trg_upd_score
    BEFORE UPDATE ON test_trigger_1
    FOR EACH ROW
    BEGIN
        IF NEW.score < 0 THEN
            SET NEW.score=0;
        ELSEIF NEW.score > 100 THEN
            SET NEW.score = 100;
        END IF;
    END;//
    delimiter ;

    NEW.score 更新以后该字段的值
    OLD.score 更新之前该字段的值

DM 常用系统表

DBA_TAB_PARTITIONS      表分区信息
DBA_TAB_PRIVS           表权限
DBA_TAB_STATISTICS      表的统计信息
DBA_TAB_SUBPARTITIONS   表的子分区信息
DBA_TRIGGERS            触发器信息
DBA_TRIGGER_COLS        触发器字段信息
DBA_USERS               用户信息 
DBA_VIEWS               视图信息
DBA_COL_COMMENTS        系统中所有表的字段注释
DBA_CONSTRAINTS         约束信息
DBA_CONS_COLUMNS        约束字段信息
DBA_DATA_FILES          数据文件信息
DBA_DB_LINKS            存放dblink信息
DBA_FREE_SPACE          空闲表空间
DBA_INDEXES             索引信息
DBA_DIRECTORIES         使用dexpdp 导入导出时需要设置的路径配置信息
DBA_JSON_COLUMNS        系统的json字段信息
DBA_OBJECTS             数据库对象信息
DBA_ROLES               系统中角色信息
DBA_SEGMENTS            数据段信息
DBA_SEQUENCES           创建的序列信息
DBA_SOURCE              创建的存储过程函数等信息
DBA_TABLES              系统中所有表信息
DBA_TABLESPACES         表空间信息
DBA_TAB_COLS            表的字段信息
DBA_TAB_COMMENTS        表的注释信息
DBA_PROXIES          记录所有代理用户的全部信息只有角色DBA和DB_OBJECT_ADMIN才能访问该系统视图
DBA_ROLE_PRIVS          角色权限
DBA_SYNONYMS            同义词
DBA_SYS_PRIVS           系统权限表
DBA_TAB_COLUMNS         系统中所有表的字段信息
DBA_ENCRYPTED_COLUMNS   加密字段
DBA_IND_COLUMNS         系统中那些字段添加了索引
DBA_IND_PARTITIONS      分区索引
DBA_IND_SUBPARTITIONS   子分区索引
DBA_PART_KEY_COLUMNS    分区表的分区字段
DBA_PART_TABLES         分区表的状态信息
DBA_PROCEDURES          系统中又那些存储过程
DBA_SOURCE_AE           系统中所有包和存储过程的定义
DBA_COL_PRIVS           字段权限
SYSOBJECTS              系统中所有对象的信息, 包括对象的类型、创建事件、是否有效等信息
SYSINDEXES              系统中所有索引的信息
SYSCOLUMNS              系统中所有表的列信息
SYSCONS                 系统中所有约束信息
SYSSTATS                系统中的统计信息
SYSTEXTS                存放字典对象的文本信息使用时, 系统内部临时解析的字典对象才会放入此处
SYSGRANTS               记录系统中权限信息
SYSAUDIT                记录系统中的审计设置
SYSAUDITRULES           记录系统中审计规则的信息
SYSHPARTTABLEINFO       记录系统中分区表的信息
SYSMACCOMPS             记录策略的范围
SYSMACGRPS              记录策略所在组的信息
SYSMACUSRPLY            记录用户的策略信息
USER_PROXIES            记录当前用户的代理的全部信息只有角色PUBLIC、DB_AUDIT_PUBLIC、 DB_POLICY_PUBLIC以及DB_OBJECT_PUBLIC才能访问该系统视图
PROXY_USERS             记录所有代理用户名的信息只有角色DBA、DB_AUDIT_ADMIN 、DB_POLICY_ADMIN以及DB_OBJECT_ADMIN才能访问该系统视图
SYS.PROXY_INFO$         记录所有代理用户ID的信息只有角色DBA、DB_AUDIT_ADMIN 、DB_POLICY_ADMIN以及DB_OBJECT_ADMIN才能访问该系统表
SYSFCOLDEFAULT          记录表添加列时追加列的默认值
SYSINJECTHINT           记录已指定的SQL语句和对应的HINT
SYSMSTATS               记录多维统计信息的内容
SYSSTATTABLEIDU         记录所有表在上一次收集统计信息时的总行数和之后对表增删改的影响行数以及是否有过TRUNCATE操作
SYSDEPENDENCIES         记录对象间的依赖关系
SYSUSERINI              记录定制的INI参数
SYSCOLINFOS             记录列的附加信息, 例如是否虚拟列
SYSRESOURCES            记录用户使用系统资源的限制信息
SYSOBJINFOS             记录对象的依赖信息
SYSUSERS                记录系统中用户信息
SYSCOLUMNCOMMENTS       记录列的注释信息
SYSTABLECOMMENTS        记录表或视图的注释信息
SYSCONTEXTINDEXES       记录全文索引的信息
SYSPWDCHGS              记录密码的修改信息
SYSCOLCYT               记录列的加密信息
SYSACCHISTORIES         记录登录失败的历史信息
SYSMACOBJ               录扩展客体标记信息
SYSMACTABPLY            录表策略信息
SYSMACLABELS            录策略的标记信息
SYSMACGRPS              录策略所在组的信息
SYSMACLVLS              录策略的等级
SYSMACPLYS              录策略定义
DBA_ARGUMENTS
DBA_DEPENDENCIES
DBA_POLICIES
DBA_POLICY_CONTEXTS 
DBA_POLICY_GROUPS
DBA_PROFILES
DBA_SEC_RELEVANT_COLS
DBA_TAB_MODIFICATIONS

动态性能视图

资源管理

    V$DYNAMIC_TABLES                获得所有的动态性能视图名称
    V$DICT_CACHE_ITEM               显示字典缓存中的字典对象信息
    V$DICT_CACHE                    显示字典缓存信息
    V$BUFFERPOOL                    页面缓冲区动态性能表, 用来记录页面缓冲区结构的信息
    V$BUFFER_LRU_FIRST              显示所有缓冲区LRU链首页信息
    V$BUFFER_UPD_FIRST              显示所有缓冲区UPDATE链首页信息
    V$BUFFER_LRU_LAST               显示所有缓冲区LRU链末页信息
    V$BUFFER_UPD_LAST               显示所有缓冲区UPDATE链末页信息
    V$CACHEITEM                     显示缓冲区中缓冲项的相关信息在ini参数USE_PLN_POOL !=0时才统计
    V$CACHERS                       显示结果集缓冲区的相关信息在ini参数USE_PLN_POOL !=0时才统计
    V$CACHESQL                      显示SQL缓冲区中SQL语句的信息在ini参数USE_PLN_POOL !=0时才统计
    V$SQLTEXT                       显示缓冲区中的SQL语句信息
    V$SQL_PLAN                      显示缓冲区中的执行计划信息在ini参数USE_PLN_POOL !=0时才统计
    V$MEM_POOL                      显示所有的内存池信息
    V$MEM_REGINFO                   显示系统当前已分配并未释放的内存信息, 当MEMORY_LEAK_CHECK为1时才会在此动态视图注册信息
    V$GSA                           显示全局SORT内存缓冲区的使用情况
    V$MEM_HEAP                      显示系统当前内存堆的信息, 仅当系统启动时MEMORY_LEAK_CHECK为1时有效
    V$LARGE_MEM_SQLS                最近1000条使用大内存的sql语句一条sql语句使用的内存值超过ini参数LARGE_MEM_THRESHOLD, 就认为使用了大内存
    V$SYSTEM_LARGE_MEM_SQLS         系统中使用大内存最多的20条sql语句字段定义与v$large_mem_sqls相同
    V$SCP_CACHE                     显示缓存池信息
    V$DB_SYSPRIV_CACHE              系统权限缓存信息
    V$DB_OBJPRIV_CACHE              对象权限缓存信息
    V$SQL_STAT                      语句级资源监控内容记录当前正在执行的SQL语句的资源开销需要ENABLE_MONITOR=1才开始监控其中5~58列中的监控项, 可以通过SP_SET_SQL_STAT_THRESHOLD()设置监控阀值, 超过阀值才开始监控具体使用参考《DM8_SQL语言使用手册》
    $SQL_STAT_HISTORY               语句级资源监控内容记录历史SQL语句执行的资源开销需要ENABLE_MONITOR=1才开始监控视图的格式和V$SQL_STAT一样单机最大行数为10000
    V$HLDR_TABLE                    记录当前系统中所有HLDR使用HLDR_BUF的情况

段簇页

    V$SEGMENT_INFOS                 显示所有的段信息
    V$SEGMENTINFO                   索引叶子段信息视图查询该视图时, 一定要带WHERE条件, 并且必须是等值条件
    V$BTREE_INNER_PAGES             索引的叶子段/内节点段的页信息视图查询该视图时, 一定要带WHERE条件, 并且必须是等值条件如: select * from v$btree_leaf_pages where index_id =id;
    V$BTREE_LIST_PAGES              LIST索引的叶子段的页信息视图查询该视图时, 一定要带WHERE条件, 并且必须是等值条件如: select * from v$btree_list_pages where index_id = id;
    V$TABLE_LOB_PAGES               表中的大字段的页信息视图查询该视图时, 一定要带WHERE条件, 并且必须是等值条件如: select * from v$table_lob_pages where table_id = id;
    V$LOB_SEG                       用于查看各表大字段的段首页中记录的信息
    V$RESOURCE_LIMIT                显示表、用户的空间限制信息
    V$SEGMENT_PAGES                 段中数据页的信息视图查询该视图时, 一定要带WHERE条件指定GROUP_ID和SEG_ID, 并且必须是等值条件例如: select * from v$segment_pages where group_id=1 and seg_id = 200;
    V$PSEG_SYS                      显示当前回滚段信息
    V$PSEG_ITEMS                    显示回滚系统中当前回滚项信息
    V$PSEG_COMMIT_TRX               显示回滚项中已提交但未PURGE的事务信息
    V$PSEG_PAGE_INFO                显示当前回滚页信息
    V$PURGE                         显示当前PURGE回滚段信息
    V$PURGE_PSEG_OBJ                显示PURGE系统中, 待PURGE的所有PSEG对象信息
    V$PURGE_PSEG_TAB                显示待PURGE表信息

数据库信息

    V$LICENSE                       显示LICENSE信息, 用来查询当前系统的LICENSE信息
    V$VERSION                       显示版本信息, 包括服务器版本号与DB版本号如果为DMDSC环境, 则还会增加显示DMDSC版本号
    V$DATAFILE                      显示数据文件信息
    V$DATABASE                      显示数据库信息
    V$IID                           显示下一个创建的数据库对象的ID该视图提供用户可以查询下一个创建对象的ID的值, 可以方便用户查询预知自己所要建立对象的信息
    V$HINT_INI_INFO                 显示支持的HINT参数信息
    V$ERR_INFO                      显示系统中的错误码信息
    V$INSTANCE                      显示实例信息
    V$DYNAMIC_TABLES                显示当前数据库中的动态视图
    V$RESERVED_WORDS                保留字统计表, 记录保留字的分类信息

数据库对象相关

    V$TABLESPACE                    显示表空间信息, 不包括RLOG表空间信息
    V$HUGE_TABLESPACE               显示HUGE表空间信息
    V$HUGE_TABLESPACE_PATH          显示HUGE表空间路径信息
    V$SEQCACHE                      显示当前系统中缓存的序列的信息
    V$PKGPROCS                      显示包中的方法信息
    V$PKGPROCPARAMS                 显示包中方法的参数信息
    V$DB_CACHE                      数据字典缓存表, 用于记录数据字典的实时信息
    V$DB_OBJECT_CACHE               数据字典对象缓存表, 用于记录数据字典中每个对象的信息
    V$OBJECT_USAGE                  记录索引监控信息
    V$IFUN                          显示数据库提供的所有函数
    V$IFUN_ARG                      显示数据库提供的所有函数的参数
    V$SYSSTAT                       显示系统统计信息
    V$JOBS_RUNNING                  显示系统中正在执行的作业信息
    V$AUTO_STAT_TABLE_IDU           记录表中数据的变化信息在ini参数AUTO_STAT_OBJ =1时才统计

数据库配置参数

    V$PARAMETER                     显示ini参数和dminit建库参数的类型及参数值信息(当前会话值、系统值及dm.ini文件中的值)
    V$DM_INI                        所有ini参数和dminit建库参数信息
    V$DM_ARCH_INI                   归档参数信息
    V$DM_MAL_INI                    MAL参数信息
    V$DM_REP_RPS_INST_NAME_INI      数据复制服务器参数信息
    V$DM_REP_MASTER_INFO_INI        数据复制主库参数信息
    V$DM_REP_SLAVE_INFO_INI         数据复制从机参数信息
    V$DM_REP_SLAVE_TAB_MAP_INI      数据复制从机表对应关系参数信息
    V$DM_REP_SLAVE_SRC_COL_INFO_INI 数据复制从机列对应关系参数信息
    V$DM_LLOG_INFO_INI              逻辑日志信息参数信息
    V$DM_LLOG_TAB_MAP_INI           逻辑日志与表对应的参数信息
    V$DM_TIMER_INI                  定时器参数信息
    V$OPTION                        安装数据库时的参数设置
    V$OBSOLETE_PARAMETER            已作废的INI信息

日志管理

    V$RLOG      显示日志的总体信息通过该视图可以了解系统当前日志事务号LSN的情况、归档日志情况、检查点的执行情况等
    V$RLOG_PKG   显示日志包信息通过该视图可以查询日志系统中当前日志包的使用情况, 如包的长度、最大LSN、最小LSN等通过该视图还可以查询当前实例日志系统中等待刷盘的链表上的日志包信息
    V$RLOG_PKG_STAT   显示当前实例日志系统中日志包使用的统计信息
    V$RLOGFILE         显示日志文件的具体信息包括文件号、完整路径、文件的状态、文件大小等等
    V$ARCHIVED_LOG     显示当前实例的所有归档日志文件信息此动态视图还有一些未列出的保留列, 查询时均显示NULL
    V$LOGMNR_LOGS      显示当前会话添加的需要分析的归档日志文件此动态视图还有一些未列出的保留列, 查询时均显示NULL
    V$LOGMNR_PARAMETERS   显示当前会话START_LOGMNR启动日志文件分析的参数此动态视图还有一些未列出的保留列, 查询时均显示NULL
    V$LOGMNR_CONTENTS   显示当前会话日志分析的内容此动态视图还有一些未列出的保留列, 查询时均显示NULL
    V$ARCH_QUEUE       显示当前归档任务队列信息
    V$RLOG_HISTORY    显示日志的历史总体信息通过该视图可以了解最近一周内系统每过一分钟日志事务号LSN的情况、归档日志情况以及检查点的执行情况等

会话

    V$CONNECT          显示活动连接的所有信息
    V$SESSIONS         显示会话的具体信息, 如执行的sql语句、主库名、当前会话状态、用户名等等
    V$SESSION_SYS      显示系统中会话的一些状态统计信息
    V$OPEN_STMT        连接语句句柄表, 用于记录SESSION上语句句柄的信息
    V$SESSION_HISTORY               显示会话历史的记录信息, 如主库名、用户名等, 与V$SESSIONS的区别在于会话历史记录只记录了会话一部分信息, 对于一些动态改变的信息没有记录, 如执行的SQL语句等
    V$CONTEXT                       显示当前会话所有上下文的名字空间、属性和值
    V$SESSION_STAT                  记录每个session上的相关统计信息
    V$NLS_PARAMETERS                显示当前会话的日期时间格式和日期时间语言

SQL执行相关

    V$SQL_HISTORY                   当INI参数ENABLE_MONITOR=1时, 显示执行sql的历史记录信息;可以方便用户经常使用的记录进行保存
    V$SQL_NODE_HISTORY              通过该视图既可以查询sql执行节点信息, 包括sql节点的类型、进入次数和使用时间等等;又可以查询所有执行的sql节点执行情况, 如哪些使用最频繁、耗时多少等当INI参数ENABLE_MONITOR 和 MONITOR_SQL_EXEC都开启时, 才会记录SQL执行节点信息如果需要时间统计信息, 还需要打开MONITOR_TIME
    V$SQL_NODE_NAME                 显示所有的sql节点描述信息, 包括sql节点类型、名字和详细描述
    V$COSTPARA                      显示SQL计划的代价信息
    V$LONG_EXEC_SQLS                当INI参数ENABLE_MONITOR=1、MONITOR_TIME=1时, 显示系统最近1000条执行时间超过预定值的SQL语句默认预定值为1000毫秒可通过SP_SET_LONG_TIME系统函数修改, 通过SF_GET_LONG_TIME系统函数查看当前值
    V$SYSTEM_LONG_EXEC_SQLS         当INI参数ENABLE_MONITOR=1、MONITOR_TIME=1时, 显示系统自启动以来执行时间最长的20条SQL语句, 不包括执行时间低于预定值的语句
    V$VMS                           显示虚拟机信息
    V$STKFRM                        显示虚拟机栈桢信息该参数必须在INI参数ENABLE_MONITOR和MONITOR_SQL_EXEC都开启时才有信息
    V$STMTS                         显示当前活动会话的最近的语句的相关信息
    V$SQL_PLAN_NODE                 当INI参数ENABLE_MONITOR和MONITOR_SQL_EXEC都开启时, 显示执行计划的节点信息
    V$SQL_SUBPLAN                   显示子计划信息
    V$SQL_PLAN_DCTREF               显示所有执行计划相关的详细字典对象信息
    V$MTAB_USED_HISTORY             显示系统自启动以来使用MTAB空间最多的50个操作符信息
    V$SORT_HISTORY                  当INI参数ENABLE_MONITOR=1都打开时, 显示系统自启动以来使用排序页数最多的50个操作符信息
    V$HASH_MERGE_USED_HISTORY       HASH MERGE连接操作符使用的缓存信息
    V$PLSQL_DDL_HISTORY             记录DMSQL程序中执行的DDL语句, 主要监控truncate table和Execute immediate DDL语句的情况
    V$PRE_RETURN_HISTORY            记录大量数据返回结果集的历史信息(查询大量数据产生)
    V$DMSQL_EXEC_TIME               记录动态监控的sql语句执行时间当ENABLE_MONITOR_DMSQL=1时才会记录监控的sql语句
    V$VIRTUAL_MACHINE               显示活动的虚拟机信息

事务和检查点

    V$TRX                           显示所有活动事务的信息通过该视图可以查看所有系统中所有的事务以及相关信息, 如锁信息等
    V$TRXWAIT                       显示事务等待信息
    V$TRX_VIEW                      显示当前事务可见的所有活动事务视图信息根据达梦多版本规则, 通过该视图可以查询系统中自己所见的事务信息;可以通过与v$trx表的连接查询它所见事务的具体信息
    V$RECV_ROLLBACK_TRX             显示数据库启动时回滚的所有事务信息
    V$LOCK                          显示活动的事务锁信息
    V$DEADLOCK_HISTORY              记录死锁的历史信息目前DMDSC环境下暂不支持记录死锁历史信息
    V$FLASHBACK_TRX_INFO            显示闪回信息
    V$CKPT_HISTORY                  显示检查点历史信息
    V$CKPT                          显示系统检查点信息

事件

    V$WAIT_HISTORY                  通过该视图可以查询等待事件的具体信息, 如等待的线程id, 会话id等可以查看具体等待事件的信息, 如果某个事务等待时间过长, 则可以查询到具体事务信息以及所在的线程和所牵涉的对象, 分析原因进行优化等操作
    V$EVENT_NAME                    显示当前系统所支持的等待事件的类型汇总信息
    V$SYSTEM_EVENT                  显示自系统启动以来所有等待事件的详细信息
    V$SESSION_EVENT                 显示当前会话等待事件的所有信息
    V$SESSION_WAIT_HISTORY          显示会话等待事件的历史信息
    V$DANGER_EVENT                  数据库重要事件和行为信息视图
    V$TASK_QUEUE                    任务队列信息
    V$TRACE_QUEUE                   事件跟踪任务队列信息

进程和线程

    V$PROCESS                       显示当前进程信息
    V$THREADS                       显示系统中所有活动线程的信息
    V$LATCHES                       显示正在等待的线程信息
    V$WTHRD_HISTORY                 通过本视图可以观察系统从启动以来, 所有活动过线程的相关历史信息其中CHG_TYPE有REUSE_OK(本SESSION 重用成功)、REUSE_FAIL (重用失败)、To_IDLE(不重用, 直接变IDLE)等几种类型

系统信息

    V$SYSTEMINFO                    系统信息视图
    V$CMD_HISTORY                   通过本视图可以观察系统的一些命令的历史信息其中cmd指的是SESS_ALLOC, SESS_FREE, CKPT, TIMER_TRIG, SERERR_TRIG, LOG_REP, MAL_LETTER,  CMD_LOGIN等
    V$RUNTIME_ERR_HISTORY           监控运行时错误历史异常分为三种: 一种是系统异常, 用户没有捕获, 由vm_raise_runtime_error产生;第二种是用户异常, 用户捕获错误, 并抛出自定义异常, 由nthrow_exec产生;第三种是语法异常, 语法未通过, 由nsvr_build_npar_cop_out产生
    V$INSTANCE_LOG_HISTORY          用于查询服务器实例运行期间生成的最近1万条事件日志
    V$MAL_SYS                       MAL系统信息视图如果是数据守护环境, 则只显示主库的MAL系统信息
    V$MAL_INFO                      MAL邮箱信息视图
    V$MAL_LETTER_INFO               MAL上的信件信息视图
    V$MAL_USING_LETTERS             服务器中正在使用或者使用过但是没有释放的邮件信息, 用于检查MAL系统潜在的内存泄露, INI参数MAL_LEAK_CHECK为1时有效

通讯

    V$DBLINK                        动态使用到的数据库链接信息视图

MPP

    V$MPP_CFG_SYS                   MPP系统配置信息视图
    V$MPP_CFG_ITEM                  MPP站点配置信息视图
    V$MAL_SITE_INFO                 MAL站点信息视图, MPP模式下, 自动收集MPP各个站点的信息

DSC

    V$DSC_EP_INFO                   显示实例信息, 登录任意节点查询得到的结果一致
    V$DSC_GBS_POOL                  显示 GBS 控制结构的信息, 仅显示登录节点的信息
    V$DSC_GBS_POOLS_DETAIL          显示分片的 GBS_POOL 详细信息, 仅显示登录节点的信息
    V$DSC_GBS_CTL                   显示 GBS 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_GBS_CTL_DETAIL            显示 GBS 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_GBS_CTL_LRU_FIRST         显示 GBS 控制块 LRU 链表首页信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_GBS_CTL_LRU_FIRST_DETAIL  显示 GBS 控制块 LRU 链表首页详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_GBS_CTL_LRU_LAST          显示 GBS 控制块 LRU 链表尾页信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_GBS_CTL_LRU_LAST_DETAIL   显示 GBS 控制块 LRU 链表尾页详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_GBS_REQUEST_CTL           显示等待 GBS 控制块的请求信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_LBS_POOL                  显示 LBS 控制结构的信息, 仅显示登录节点的信息
    V$DSC_LBS_POOLS_DETAIL          显示分片的 LBS_POOL 详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_LBS_CTL                   显示 LBS 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_LBS_CTL_LRU_FIRST         显示 LBS 的 LRU_FIRST 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_LBS_CTL_LRU_LAST          显示 LBS 的 LRU_LAST 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_LBS_CTL_DETAIL            显示 LBS 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_LBS_CTL_LRU_FIRST_DETAIL  显示 LBS 的 LRU_FIRST 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_LBS_CTL_LRU_LAST_DETAIL   显示 LBS 的 LRU_LAST 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
    V$DSC_GTV_SYS                   显示 GTV 控制结构的信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据无效
    V$DSC_GTV_TINFO                 显示 TINFO 控制结构的信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据为空暂时没有什么用, 查询结果为空
    V$DSC_GTV_ACTIVE_TRX            显示全局活动事务信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据为空暂时没有什么用, 查询结果为空
    V$DSC_LOCK                      显示全局活动的事务锁信息, 登录任意节点查询得到的结果一致
    V$DSC_TRX                       显示所有活动事务的信息通过该视图可以查看所有系统中所有的事务以及相关信息, 如锁信息等, 登录任意节点查询得到的结果一致
    V$DSC_TRXWAIT                   显示事务等待信息, 登录任意节点查询得到的结果一致
    V$DSC_TRX_VIEW                  显示当前事务可见的所有活动事务视图信息根据达梦多版本规则, 通过该视图可以查询系统中自己所见的事务信息;可以通过与 v$dsc_trx 表的连接查询它所见事务的具体信息, 登录任意节点查询得到的结果一致
    V$ASMATTR                       如果使用有 ASM 文件系统, 可通过此视图查看 ASM 文件系统相关属性, 登录任意节点查询得到的结果一致
    V$ASMGROUP                      如果使用有 ASM 文件系统, 可通过此视图查看 ASM 磁盘组信息, 登录任意节点查询得到的结果一致
    V$ASMDISK                       如果使用有 ASM 文件系统, 可通过此视图查看所有的 ASM 磁盘信息, 登录任意节点查询得到的结果一致
    V$ASMFILE                       如果使用有 ASM 文件系统, 可通过此视图查看所有的 ASM 文件信息, 登录任意节点查询得到的结果一致
    V$DCR_INFO                      查看 DCR 配置的全局信息, 登录任意节点查询得到的结果一致
    V$DCR_GROUP                     查看 DCR 配置的组信息, 登录任意节点查询得到的结果一致
    V$DCR_EP                        查看 DCR 配置的节点信息, 登录任意节点查询得到的结果一致
    V$DSC_REQUEST_STATISTIC         统计 DSC 环境内 TYPE 类型请求时间, 仅显示登录节点的信息
    V$DSC_REQUEST_PAGE_STATISTIC    统计 lbs_XX 类型最耗时的前 100 页地址信息, 仅显示登录节点的信息
    V$DSC_CRASH_OVER_INFO           显示 DSC 环境各节点数据页最小first_modified_lsn, 以及故障节点 file_lsn如果活动节点 buffer 中不存在更新页则 min_first_modified_lsn 为 NULL;节点故障后, 只有在所有 OK 节点 min_first_modified_lsn 都大于或等于故障节点file_lsn 之后, 才允许故障节点重加入;满足所有 OK 节点 min_first_modified_lsn都大于 crash_lsn 之后, crash_lsn 会清零
    V$DSC_GLS_SYS                   显示 DSC 环境下的系统全局封锁相关信息

数据守护

    V$RECOVER_STATUS                该视图需要在主库上查询(DMDSC主库需要在控制节点上查询), 用于查询备库的恢复进度, 如果已恢复完成, 查询结果为空
    V$KEEP_RLOG_PKG                 该视图需要在备库上查询(DMDSC备库需要在控制节点(重演节点)上查询), 用于查询备库上的KEEP_RLOG_PKG信息, 在备库归档状态有效的情况下可以查到内容
    V$RAPPLY_SYS                    该视图需要在备库上查询(DMDSC备库需要在控制节点(重演节点)上查询), 用于查询备库重做日志时的一些系统信息
    V$RAPPLY_LOG_TASK               该视图需要在备库上查询(DMDSC备库需要在控制节点(重演节点)上查询), 用于查询备库当前重做任务的日志信息
    V$ARCH_FILE                     查询本地归档日志信息对DMDSC集群, 除了显示本地归档外, 也显示远程归档信息
    V$ARCH_STATUS                   查询归档状态信息, 归档状态是由主库记录和维护的, 此视图只在主库上查询有效, 备库上的查询结果没有实际意义
    V$MAL_LINK_STATUS               查询本地实例到远程实例的MAL链路连接状态
    V$DMWATCHER                     查询当前登录实例所对应的守护进程信息, 注意一个守护进程可以同时守护多个组的实例, 因此查询结果中部分字段(N_GROUP、SWITCH_COUNT)为守护进程的全局信息, 并不是当前登录实例自身的守护信息在DMDSC集群环境中, 只显示控制守护进程的信息
    V$UTSK_INFO                     查询守护进程向服务器发送请求的执行情况
    V$UTSK_SYS2                     显示服务器当前的全局信息
    V$ARCH_SEND_INFO                此视图用于在主库上查询各备库的日志发送统计信息
    V$RAPPLY_STAT                   此视图用于在备库上查询备库重演日志的统计信息
    V$RAPPLY_LSN_INFO               查询备库的重演信息, 如果备库是DMDSC集群, 则需要在控制节点(重演节点)上查询如果在主库上查询此视图, 则查到的是主库曾经作为备库时的历史重演信息其中后面四个CKPT_XX字段, 是在备库刷检查点时才调整, 前面四个是随备库重演而动态调整的
    V$RAPPLY_PARALLEL_INFO          查询备库的并行重演信息, 如果备库是DMDSC集群, 则需要在控制节点(重演节点)上查询

系统包

    V$CACHEPKG                      显示当前系统中的包的使用信息
    V$DBMS_LOCKS                    显示当前系统中的申请的DBMS_LOCK包封锁情况
    V$DB_PIPES                      记录使用DBMS_PIPE包创建的管道的相关信息
    V$SCHEDULER_JOBS_RUNNING        记录数据库中所有由DBMS_SCHEDULER包创建且正在执行的作业

捕获

    V$CAPTURE                       显示捕获信息

审计与加密

    V$AUDITRECORDS                  显示审计记录, 用来查询当前系统默认路径下的审计文件信息此动态性能视图只有在审计开关打开时才有内容, 且只有审计用户可以查询
    V$AUDIT_SPACE                   显示审计文件存储空间信息此动态性能视图只有审计用户可以查询
    V$CIPHERS                       显示系统加密算法信息
    V$EXTERNAL_CIPHERS              显示系统中所有的第三方加密算法信息
    V$EXTERNAL_CIPHER_LIBS          显示加密引擎、第三方链接库相关信息

常用SQL语句

查看表空间使用率

SELECT
    a.tablespace_name "表空间名称",
    total / (1024 * 1024) "表空间大小(M)",
    free / (1024 * 1024) "表空间剩余大小(M)",
    (total - free) / (1024 * 1024) "表空间使用大小(M)",
    total / (1024 * 1024 * 1024) "表空间大小(G)",
    free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
    (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
    round((total - free) / total, 4) * 100 "使用率 %"
FROM
    (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name ) a,
    (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b
WHERE
    a.tablespace_name = b.tablespace_name;

查看临时表空间使用情况

SELECT
        a.tablespace_name "表空间名称"                         ,
        total        / (1024 * 1024) "表空间大小(M)"                 ,
        free         / (1024 * 1024) "表空间剩余大小(M)"               ,
        (total       - free) / (1024 * 1024 ) "表空间使用大小(M)"      ,
        total        / (1024 * 1024 * 1024) "表空间大小(G)"          ,
        free         / (1024 * 1024 * 1024) "表空间剩余大小(G)"        ,
        (total       - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
        round((total - free) / total, 4) * 100 "使用率 %"
FROM
        (SELECT tablespace_name,SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a,
        (SELECTtablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b
WHERE
        a.tablespace_name = b.tablespace_name and a.tablespace_name='TEMP';

查看会话信息

SELECT count(*) FROM v$sessions WHERE state='ACTIVE';


SELECT
    SYSDATE,
    SF_GET_SESSION_SQL (SESS_ID),
    sess_id,
    sess_seq,
    sql_text,
    state,
    seq_no,
    user_name,
    trx_id,
    create_time,
    clnt_ip
FROM
    v $ sessions
WHERE
    state = 'ACTIVE';

锁查询

SELECT
    o.name,
    l.*
FROM
    v $ LOCK l,
    sysobjects o
WHERE
    l.table_id = o.id
    AND blocked = 1;

WITH LOCKS AS (
    SELECT
        o.name,
        l.*,
        s.sess_id,
        s.sql_text,
        s.clnt_ip,
        s.last_send_time
    FROM
        v $ LOCK l,
        sysobjects o,
        v $ sessions s
    WHERE
        l.table_id = o.id
        AND l.trx_id = s.trx_id
),
lock_tr AS (
    SELECT
        trx_id wt_trxid,
        tid blk_trxid
    FROM
        LOCKS
    WHERE
        blocked = 1
),
res AS (
    SELECT
        SYSDATE stattime,
        t1.name,
        t1.sess_id wt_sessid,
        s.wt_trxid,
        t2.sess_id blk_sessid,
        s.blk_trxid,
        t2.clnt_ip,
        SF_GET_SESSION_SQL (t1.sess_id) fulsql,
        datediff (ss, t1.last_send_time, SYSDATE) ss,
        t1.sql_text wt_sql
    FROM
        lock_tr s,
        LOCKS t1,
        LOCKS t2
    WHERE
        t1.ltype = 'OBJECT'
        AND t1.table_id <> 0
        AND t2.ltype = 'OBJECT'
        AND t2.table_id <> 0
        AND s.wt_trxid = t1.trx_id
        AND s.blk_trxid = t2.trx_id
) --select distinct clnt_ip from res;
SELECT
    DISTINCT wt_sql,
    clnt_ip,
    ss
FROM
    res;

已执行但未提交的SQL语句查询

SELECT
    t1.sql_text,
    t1.state,
    t1.trx_id
FROM
    v $ sessions t1,
    v $ trx t2
WHERE
    t1.trx_id = t2.id
    AND t1.state = 'IDLE'
    AND t2.status = 'ACTIVE';

有事务未提交的表查询

SELECT
    b.object_name,
    c.sess_id,
    a.*
FROM
    v $ LOCK a,
    dba_objects b,
    v $ sessions c
WHERE
    a.table_id = b.object_id
    AND ltype = 'OBJECT'
    AND a.trx_id = c.trx_id;

长时间的 SQL 查询

SELECT
    t1.sql_text,
    t1.state,
    t1.trx_id
FROM
    v $ sessions t1,
    v $ trx t2
WHERE
    t1.trx_id = t2.id
    AND t1.state = 'IDLE'
    AND t2.status = 'ACTIVE';

找出已执行超过 2 秒的活动 SQL

SELECT
    *
FROM
    (
        SELECT
            sess_id,
            sql_text,
            datediff (ss, last_recv_time, SYSDATE) Y_EXETIME,
            SF_GET_SESSION_SQL (SESS_ID) fullsql,
            clnt_ip
        FROM
            V $ SESSIONS
        WHERE
            STATE = 'ACTIVE'
    )
WHERE
    Y_EXETIME >= 2;

查看数据字典缓存信息

SQL> SELECT * FROM V$DB_CACHE;  -- 缓存元数据信息的视图
行号     DB_ADDR            POOL_ID     TOTAL_SIZE           USED_SIZE            DICT_NUM    SIZE_LRU_DISCARD     LRU_DISCARD DDL_DISCARD DISABLED_SIZE DISABLED_DICT_NUM
---------- ------------------ ----------- -------------------- -------------------- ----------- -------------------- ----------- ----------- ------------- -----------------
1          0x00007F05353163E8 0           52428800             135398               58          0                    0           2           0             0

-- LRU_DISCARD 如果很大, 则需要调整参数 DICT_BUF_SIZE

查看任务队列

SQL> select * from v$task_queue;
行号     WAITING     READY                TOTAL_WAIT_TIME      AVERAGE_WAIT_TIME
---------- ----------- -------------------- -------------------- -----------------
1          0           43800                1945                 0

-- WAITING 如果很大则考虑, 调大TASK_THREADS 或者重启数据库


​详细内容请参考官方文档:​​https://eco.dameng.com​​

更多详情请访问达梦在线服务平台 https://eco.dameng.com/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
达梦数据库常⽤系统视图及查询语句 ⼀、常⽤的系统视图: dba_objects:显⽰数据库中所有的对象,例如想查询数据库中有没有某个对象 v$sessions:显⽰会话的具体信息,如执⾏的 sql 语句、主库名、当前会话状态、⽤户名等等 v$lock:查看当前数据库中锁的信息 v$mem_pool:显⽰所有的内存池信息 V$deadlock_histor::记录死锁的历史信息 V$TABLESPACE:显⽰表空间信息,不包括回滚表空间信息 V$TRX:显⽰所有活动事务的信息。通过该视图可以查看所有系统中所有的事务以及相关信息,如锁信息等。 ⼆、常⽤查询语句 1、查询数据库在线实例信息 select distinct NAME, HOST_NAME, SVR_VERSION, DB_VERSION, START_TIME, STATUS$, MODE$ from V$INSTANCE; 2、查看数据库常⽤参数值 select PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN('MEMORY_POOL','BUFFER','PORT_NUM','MAX_SESSIONS','MAX_SESS ION_STATEMENT','INSTANCE_NAME','BAK_PATH','SYSTEM_PATH','ARCH_INI'); 3、查询数据库初始化配置 select SF_GET_PAGE_SIZE() page_size, SF_GET_EXTENT_SIZE() extent_size, SF_GET_UNICODE_FLAG() unicode_flag, SF_GET_CASE_SENSITIVE _FLAG() case_sensitive_flag, SF_GET_SYSTEM_PATH() system_path; 4、查询数据库名称数据库总⼤⼩、数据库是否启⽤归档 select NAME,STATUS$,ARCH_MODE, TOTAL_SIZE from SYS.V$DATABASE; 5、查询数据库连续运⾏时间 select (SYSDATE-START_TIME)*24 FROM V$INSTANCE; 6、查询数据库管理⽤户状态,默认表空间,是否存在被锁定 select D.USERNAME,A.CREATED,D.ACCOUNT_STATUS,D.DEFAULT_TABLESPACE,D.EXPIRY_DATE,D.LOCK_DATE FROM DBA_USERS D,ALL_USE RS A; 7、查询当前数据库的⽇志分组情况 select GROUP_ID,FILE_ID,PATH,CLIENT_PATH,RLOG_SIZE FROM SYS.V$RLOGFILE; 8、查询表空间信息 select T.NAME 表空间名称, D.PATH 表空⽂件路径, T.TYPE$ 表空间类型, T.STATUS$ 表空间状态, T. FILE_NUM 包含的⽂件数, D.TOTAL_SIZE*16/1024 总⼤⼩, D.FREE_SIZE*16/1024 空闲⼤⼩, TRUNC((TRUNC(D.TOTAL_SIZE-D.FREE_SIZE, 4)/D.TOTAL_SIZE)*100, 2) 使⽤率 FROM V$TABLESPACE T, V$DATAFILE D WHERE "GROUP_ID"=T.ID; 9、查询数据表所分配的空间⼤⼩,辅助查询表⽤户使⽤情况 select OWNER,TABLESPACE_NAME,SEGMENT_TYPE,SEGMENT_NAME,BLOCKS,BYTES/1024/1024 FROM DBA_SEGMENTS ORDER BY OWNER,SE GMENT_NAME; 10、查询表索引状态,便于确认表索引是否可⽤ select I.TABLE_OWNER,I.TABLE_NAME,O.OBJECT_NAME,O.OBJECT_TYPE,O.STATUS FROM USER_INDEXES I,USER_OBJECTS O WHERE O.OBJE CT_NAME=I.INDEX_NAME AND O.STATUS='INVALID'; 11、查询数据库归档信息 select ARCH_TYPE,ARCH_DEST FROM V$DM_ARCH_INI; select ARCH_NAME, ARCH_TYPE, ARCH_DEST, ARCH_FILE_SIZE, ARCH_SPACE_LIMIT, ARCH_TIMER_NAME, ARCH_IS_VALID from SYS.V$DM_AR CH_IN
达梦数据库_SQL语言手册.pdf 数据库快照定义语句 数据库快照删除语句 第章数据查询语句和全文检索语句 单表查询 简单查询 带条件查询 集函数 情况表达式 连接查询 子查询 标量子查询 表子查询 派生表子查询 定量比较 带 谓词的子查询 多列表子查询 查询结果的合并 和 子句的使用 子句的使用 子句 选取前儿条数据 选取其屮几条数据 全文检索 层次查询 层次查询子句 层次查询相关伪列 层次查询相关操作符 层次查询相关函数 查看执行计划 第章数据的插入、删除和修改 数据插入语句 数据修改语句 数据删除语句 伪列的使用 和 自增列的使用 自增列定义 属性 第章视图 视图的作用 视图的定义 视图的删除 视图的查询 视图数据的更新 第章嵌入式 前缀和终结符 宿主变量 输入和输出变量 指示符变量 服务器登录与退出 登录服务器 退出服务器 游标的定义与操纵 定义游标语句 打开游标语句 拨动游标语句 关闭游标语句 关于可更新游标 游标定位删除语句 游标定位修改语句 单元组查询语句 动态 立即执行语句 准备语句 执行语句 异常处理 第章函数 数值函数 字符串函数 日期时间函数 空值判断函数 类型转换函数 杂类函数 系统函数 存储加密函数 标记处理函数 备份恢复函数 附加分离数据库 第章一致性和并发性 事务相关语句 事务的开始 事务的结束 保存点相关语句 设置事务隔离级及读写特性 手动上锁语句 第章存储模块 存储模块的定义 存储模块的删除 存储模块的控制语句 语句块 赋值语句 条件语句 循环语句 语句 调用语句 语句 语句 语句 语句 打印语句 存储模块的异常处理 异常变量的说明 异常的抛出 异常处理器 异常处理用法举例 存储模块的语句 游标 动态 游标变量 返回查询结果集 语句应用举例 客户端存储模块 子过程、子函数 子过程 子函数 记录类型 记录类型定义 记录赋值 第章触发器 触发器的定义 触发器类型 触发器激发顺序 新、旧行值的引用 触发器谓词 变异表 设计触发器的原则 触发器的删除 禁止和允许触发器 触发器应用举例 使用触发器实现审计功能 使用触发器维护数据完整性 使用触发器保障数据安全性 使用触发器派生字段值 第章安全管理 创建角色语句 删除角色语句 授权语句数据库权限 授权语句对象权限 授权语句角色权限 回收权限语句数据库权限 回收权限语句对象权限 回收权限语句角色权限 策略与标记管理 创建策略 修改策略 删除策略 安全标记 用户标记设置语句 表标记设置语句 审计设置语句 审计取消语句 审计信息查阅语句 审计分析 创建审计分析规则 删除审计分析规则 加密引擎 创建加密引擎 修改加密引擎 删除加密引擎 第章外部链接 创建外部链接 删除外部链接 使用外部连接进行远程对象操作 第章备份还原 备份数据库 还原数据库 第章包 创建包 创建包规范 创建包主体 删除包 删除包规范 删除包主体 应用实例 第章同义词 创建同义词 删除同义词 附录关键字和保留字 附录 语法描述说明 附录命令参考 附录系统存储过程和函数 附录技术支持 第1章结构化查询语言简介 第章结构化查询语言 简介 结构化查询语言 是在年提出的一种关系数据库语言。 由于语言接近英语的语句结构,方便简洁、使用灵活、功能强人,倍受用户及计算机工业 界的欢迎,被众多计算机公司和数据库厂商所采用,经各公司的不断修改、扩充和完善,语 言最终发展成为关系数据库的标准语言。 的第一个标准是年月由美国国家标准化组织公布的 数据库语言 简称 年国际标准化组织也通过了这一标准。以后通过对 的不断修改和完善,于年第二次公布了标准 年又公布了标准 即 。最新的标准是 (也称 年作为 《信息技术——数据库语言》发布。我国也相继 公布了数据库语言的国家标准。 成为国际标准以后,其影响远远超出了薮据库领域。例如在 软件工程、人工智 能、分布式等领域,人们不仅把作为检索数据的语言规范,而且也把作为检索图形、 图象、声音、文字等信息类型的语言规范。目前,世界上大型的著名数据库管理系统均支持 语言,如 等。在未来相当长的时间里,仍将是数据库领 域以至信息领域中数据处理的主流语言之 由于不同的产品,大都按自己产品的特点对语言进行了扩充,很难完全符合 标准。目前在 市场上已将的符合夲作为衡量产品质量的重要指标,并研制成专门的 测试软件,如 目前, 入门级和过渡级的符合率均达到,并且部分支持 更新的 标准。同时还兼容 和 的部分语言特性。本章主要 介绍系统所支持的语言语言的特点 语言符合结构化査询语言标准,是标准的扩充。它集数据定乂、数据査 询、薮据操纵和数据控制于一体,是一种统一的、综合的关系数据库语言。它功能强大,使用简 单方便、容易为用户掌握 语言具有如下特点: 功能一体化 的功能一体化表现在以下两个方面 支持多媒体数据类型,用户在建表时可直接使用。系统在处理常规数据与 多媒体数据时达到了四个一体化:一体化定义、一体化存储、一体化检索、一体化处理,最大限 度地提高了数据库管理系统处理多媒体的能力和速度; 语言数据库的定义、査询、更新、控制、维护、恢复、安全等一系列操作于 体,每一项操作都只需一种操作符表示,格式规范,风格一致,简单方便,很容易为用户所掌 握 两种用户接口使用统一语法结构的语言 语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能独立运行于联机交 互方式。作为嵌入式语言, 浯句能够嵌入到和语言程序中,将高级语言也称主 语言灵活的表达能力、强大的计算功能与 语言的数据处理功能相结合,完成各种复杂 的事务处理。而在这两种不同的使用方式中, 语言的语法结构是一致的,从而为用户使 第1章结构化查询语言简介 用提供了极大的方使性和灵活性。 高度非过程化 语言是·种非过程化语言。用户只需指出“做什么”,而不需指出“怎么做”,对数 据存取路径的选择以及 语句功能的实现均由系统自动完成,与用户编制的应用程序与 具体的机器及关系 的实现细节无关,从而方便了用户,提高了应用程序的开发效率,也 增强了数据独立性和应用系统的叮移植性。 面向集合的操作方式 语言采用了集合操作方式。不仅查询结果可以是元组的集合,而且一次插入、删除、 修改操作的对象也可以是元组的集合,相对于面向记录的数据库语言一次只能操作一条记录来 语言的使用简化了用户的处理,提高了应用程序的运行效率 语言简洁,方便易学 语言功能强大,格式规范,表达简洁,接近英语的语法结构,容易为用户所掌握。 保留字与标识符 标识符的语法规则兼容标准 ,标识符分为正规标识符和定界标识符两大类。 正规标识符以字母、、、或汉字开头,后面可以跟随字母、数字、、、或者汉字,正 规标识符的最大长度是个英文字符或个汉字。正规标识符不能是保留字 正规标识符的例子:, 表 定界标识符的标识符体用双引号括起来时,标识符体可以包含任意字符,特别地,其中使用 连续两个双引号转义为一个双引号 定界标识符的例子: 保留字的清单参见附录 语言的功能及语句 语言是一种介于关系代数与关系演算之间的语言,其功能主要包括数据定义、查询 操纵和控制四个方面,通过各种不同的语句米实现。按照所实现的功能, 语句分 为以下几种 数据库、登录、用户、模式、基表、视图、索引、序列、全文索引、存储过程和触发器 的定义和删除语句,登录、基表、视图、仝文索引的修改语句,对象的更名语句; 査询(含全文检索)、插入、删除、修改语句; 数据库安全语句。包括创建角色语句、删除角色语句,授权语句、回收权限语句,修改 登录口令语句,审计设置语句、取消审计设置语句等。 在嵌入方式中,为了协调 语言与主语言不同的数据处理方式 语言引入 了游标的概念。因此在嵌入方式下,除了数据查询语句一次查询一条记录外,还有几种与游标 有关的语句: 游标的定义、打廾、关闭、拨动语句 游标定位方式的数据修改与删除语句。 为了有效维护数据库的完整性和一致性,支持 的并发控制机制 语言提供 了事务的回滚( )与提交( )语句。同时允许选择实施事务级读一致 性,它保证同一事务内的可重复读,为此提供用户多种手动上锁语句,和设置事务隔离级别 第1章结构化查询语言简介 语句 所支持的数据类型 数据类型是可表示值的集。值的逻辑表示是字值。值的物理表示依赖于实现。系统具 有 的绝大部分数据类型,以及部分 和 的数据类型。 常规数据类型 字符数据类型 类型 语法:长度 功能: 数据类型指定定长字符串。在基表中,定义 类型的列时,可以指 定一个不超过的正整数作为字符长度,例如 如果未指定长度,缺省为。 确保存储在该列的所有值都具有这一长度。 数据类型的最大长度由数据库页面大 小决定,字符类型最大长度和页面大小的对应关系请见下表支持按字节存放字符 串 表 数据库页面大 最大长度 类型 语法: 长度 功能:与 相同。 类型 语法: 长度 功能 数据类型指定变长字符串,用法类似 数据类型,可以指定一 个不超过的正整数作为字符长度,例如: 。如果未指定长度,缺省为 在系统中, 数据类型的实际最大长度由数据库页面大小决定,具体最 大长度算法如表 的区别在于前者长度不足时,系统自动填充空 格,而后者只占用实际的字节空间。 表 数据库页面大 实际最大长度 注:这个限制长度只针对建表的情况,在定义变量的时候,可以不受这个限制长度的限 制 数值数据类型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值