学习DM管理员手册

发布时间:2026/7/10 21:39:37
学习DM管理员手册 任务阅读DM数据库管理员手册第二部分基础数据库管理。目标掌握数据库的安装、实例初始化、数据库启停、表、视图、索引、模式的概念及使用DM系统管理员DM采用“三权分立”或者“四权分立”的安全机制。三权分立内置数据库管理员数据库安全员数据库审计员四权分立相比三权分立新增数据库对象操作员SYSDBO。创建和配置DM数据库Windows使用数据库配置助手LINUX用dminit命令行来操作。示例[dmdbalocalhost dm]$ dminit PATH/dm/datatest PAGE_SIZE16 SYSDBA_PWDDMdba_123 SYSAUDITOR_PWDDMauditor_123 SYSSSO_PWDDMsysso_123 CASE_SENSITIVE0 PORT_NUM5336 DB_NAMEDMBMG initdb V8 db version: 0x7000d License will expire on 2026-12-25 Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL log file path: /dm/datatest/DMBMG/DMBMG01.log log file path: /dm/datatest/DMBMG/DMBMG02.log write to dir [/dm/datatest/DMBMG]. create dm database success. 2026-07-01 09:40:14PATH设定数据库路径PAGE_SIZE使用的页的大小默认8K这里设置成16K。xxx_PWD数据库不同类型管理员的初始密码CASE_SENSITIVE大小写敏感性设置0表示不敏感1表示敏感PORT_NUM初始化时设置dm.ini中的PORT_NUMDB_NAME数据库名字注册数据库服务执行脚本创建系统服务[rootlocalhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/datatest/DMBMG/dm.ini -p DMBMG Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMBMG.service → /usr/lib/systemd/system/DmServiceDMBMG.service. 创建服务(DmServiceDMBMG)完成注销数据库服务执行脚本删除系统服务[rootlocalhost root]# ./dm_service_uninstaller.sh -n DmServiceDMBMG 是否删除服务(DmServiceDMBMG)?(Y/y:是 N/n:否): Y Removed /etc/systemd/system/multi-user.target.wants/DmServiceDMBMG.service. 删除服务文件(/usr/lib/systemd/system/DmServiceDMBMG.service)完成 删除服务(DmServiceDMBMG)完成启动数据库Linux服务的方式启动用之前注册的服务启动即可。systemctl start DmServiceDMBMG.service命令行启动方式去到软件目录/bin下找到DmService初始化时的DB_NAME的文件。cd /dm/dmdbms/bin [dmdbalocalhost bin]$ ./DmServiceDMBMG start Starting DmServiceDMBMG: [ OK ]停止数据库Linux服务的方式关闭[rootlocalhost ~]# systemctl stop DmServiceDAMENG.service [rootlocalhost ~]# systemctl status DmServiceDAMENG.service ● DmServiceDAMENG.service - DM Instance Service(DmServiceDAMENG). Loaded: loaded (/usr/lib/systemd/system/DmServiceDAMENG.service; enabled; vendor preset: disabled) Active: inactive (dead) since Wed 2026-07-01 16:03:21 CST; 4s ago Process: 6225 ExecStop/dm/dmdbms/bin/DmServiceDAMENG stop (codeexited, status0/SUCCESS) Main PID: 1533 (codeexited, status0/SUCCESS) Jul 01 08:23:05 localhost.localdomain systemd[1]: Starting DM Instance Service(DmServiceDAMENG).... Jul 01 08:23:20 localhost.localdomain DmServiceDAMENG[1467]: [37B blob data] Jul 01 08:23:20 localhost.localdomain systemd[1]: Started DM Instance Service(DmServiceDAMENG).. Jul 01 16:03:11 localhost.localdomain systemd[1]: Stopping DM Instance Service(DmServiceDAMENG).... Jul 01 16:03:21 localhost.localdomain DmServiceDAMENG[6225]: [37B blob data] Jul 01 16:03:21 localhost.localdomain systemd[1]: DmServiceDAMENG.service: Succeeded. Jul 01 16:03:21 localhost.localdomain systemd[1]: Stopped DM Instance Service(DmServiceDAMENG)..命令行方式关闭[dmdbalocalhost bin]$ ./DmServiceDMBMG stop Stopping DmServiceDMBMG: [ OK ]管理模式对象的空间创建普通表和索引的存储参数initial初始簇数目必须是整数1-256默认值1.NEXT下次分配簇数目必须是整数1-256默认值1.MINEXTENTS最小保留簇数目删除表中记录后如果表使用的簇数小于这个值就不再释放表空间。1-256默认值1.FILLFACTOR填充比例0-100默认值0等价于100。0不是0%而是默认填充满。表空间名在指定表空间建表或者索引默认为用户缺省表空间。‘示例表PERSON建立在表空间DMDATA中初始簇大小为5最小保留簇数目为5下次分配簇数目为2填充比例为85。SQL create table sysdba.person(persionid int IDENTITY(1,1) CLUSTER PRIMARY KEY, sex char(1) not null, name varchar(50)) storage(initial 5,MINEXTENTS 5,NEXT 2,FILLFACTOR 85,on DMDATA);2 操作已执行 已用时间: 81.095(毫秒). 执行号:1301.可以通过如下SQL查出来表的DDL。SQL SELECT DBMS_METADATA.GET_DDL(TABLE, PERSON, SYSDBA) FROM DUAL;2 行号 DBMS_METADATA.GET_DDL(TABLE,PERSON,SYSDBA) ---------- --------------------------------------------------------------------------------------------------- 1 CREATE TABLE SYSDBA.PERSON ( PERSIONID INT IDENTITY(1, 1) NOT NULL, SEX CHAR(1) NOT NULL, NAME VARCHAR(50), CLUSTER PRIMARY KEY(PERSIONID)) STORAGE(INITIAL 5, NEXT 2, MINEXTENTS 5, FILLFACTOR 85, ON DMDATA, CLUSTERBTR) ; 已用时间: 43.215(毫秒). 执行号:1303.分区表的某个分区也可以指定存储参数CREATE TABLE PARTITION_TABLE (C1 INT, C2 INT) PARTITION BY RANGE(C1) (PARTITION PAR1 VALUES LESS THAN(5), PARTITION PAR2 VALUES LESS THAN(100) STORAGE (ON DMDATA));同样也可以通过SQL查询出表的DDLSQL SELECT DBMS_METADATA.GET_DDL(TABLE, PARTITION_TABLE, SYSDBA) FROM DUAL;2 行号 DBMS_METADATA.GET_DDL(TABLE,PARTITION_TABLE,SYSDBA) ---------- --------------------------------------------------------------------------------------------------- 1 CREATE TABLE SYSDBA.PARTITION_TABLE ( C1 INT, C2 INT) PARTITION BY RANGE(C1) ( PARTITION PAR1 VALUES LESS THAN(5) STORAGE(ON MAIN, CLUSTERBTR) , PARTITION PAR2 VALUES LESS THAN(100) STORAGE(ON DMDATA, CLUSTERBTR) ) STORAGE(ON MAIN, CLUSTERBTR) ; 已用时间: 22.602(毫秒). 执行号:1305.用户和表上的空间限制用户的空间限制可以通过设置表空间配额来限制用户使用的表空间大小SQL CREATE USER TEST_USER IDENTIFIED BY Testuser123 QUOTA 50M ON DMDATA; 操作已执行 已用时间: 70.803(毫秒). 执行号:1306.也可以修改用户的表空间配额限制。SQL ALTER USER TEST_USER QUOTA 100M ON DMDATA; 操作已执行 已用时间: 33.829(毫秒). 执行号:1307. SQL表对象的空间限制如创建表TEST时可指定该表对象可使用的最大磁盘空间为500M。SQL CREATE TABLE TESTLIMIT (SNO INT, MYINFO VARCHAR) DISKSPACE LIMIT 500; 操作已执行 已用时间: 13.528(毫秒). 执行号:1308.表对象空间限制也可以进行修改。SQL alter table test modify diskspace limit 50; 操作已执行 已用时间: 193.394(毫秒). 执行号:3101.查看模式对象的空间使用查看用户占用的空间使用系统函数 USER_USED_SPACE 得到用户占用空间的大小函数参数为用户名返回值为占用的页的数目。SQL SELECT USER_USED_SPACE(SYSDBA); 行号 USER_USED_SPACE(SYSDBA) ---------- ------------------------- 1 128 已用时间: 39.938(毫秒). 执行号:3103.查看表占用的空间可以使用系统函数TABLE_USED_SPACE得到表对象占用空间的大小函数参数为模式名和表名返回值为占用的页的数目。SQL SELECT TABLE_USED_SPACE(SYSDBA, TEST); 行号 TABLE_USED_SPACE(SYSDBA,TEST) ---------- --------------------------------- 1 16查看表使用的页数可以使用系统函数TABLE_USED_PAGES得到表对象实际使用页的数目函数参数为模式名和表名返回值为实际使用页的数目。SQL SELECT TABLE_USED_PAGES(SYSDBA, TEST); 行号 TABLE_USED_PAGES(SYSDBA,TEST) ---------- --------------------------------- 1 15 已用时间: 19.625(毫秒). 执行号:3105.占用空间和实际使用是两个概念是不一样的。查看表空闲堆栈占用的空间以使用系统函数 TABLE_FREE_PAGE_STACK_USED_SPACE 得到表空闲页堆栈占用空间的大小函数参数为模式名和表名返回值为占用的页的数目。SQL SELECT TABLE_FREE_PAGE_STACK_USED_SPACE (SYSDBA, TEST); SELECT TABLE_FREE_PAGE_STACK_USED_SPACE (SYSDBA, TEST); [-2004]:不支持的语句类型. 已用时间: 2.118(毫秒). 执行号:0.不知道为啥安全版执行不了找朋友测试了下企业版可以执行。查看索引占用的空间以使用系统函数 INDEX_USED_SPACE 得到索引占用空间的大小函数参数为索引ID返回值为占用的页的数目。SQL SELECT INDEX_USED_SPACE(33555463); 行号 INDEX_USED_SPACE(33555463) ---------- -------------------------- 1 16查看索引使用的页数可以使用系统函数INDEX_USED_PAGES得到索引实际使用页的数目函数参数为索引ID返回值为实际使用页的数目。SQL SELECT INDEX_USED_PAGES(33555463); 行号 INDEX_USED_PAGES(33555463) ---------- -------------------------- 1 15管理表管理表的准则创建表修改表删除表清空表查看表信息管理表的准则略创建表创建普通表如果不指定表空间或者创建用户没有默认表空间则创建到MAIN表空间CREATE TABLE EMPLOYEE ( EMPNO INT PRIMARY KEY, ENAME VARCHAR(15) NOT NULL, JOB VARCHAR(10), MGR INT CONSTRAINT EMP_FKEY REFERENCES EMPLOYEE(EMPNO), HIREDATE DATE DEFAULT (CURDATE), SALARY FLOAT) STORAGE ( INITIAL 50, NEXT 50, MINEXTENTS 10, FILLFACTOR 80, ON DMDATA);这个表包含了字段字段类型主键约束自引用约束默认值存储参数等。指定表的聚集索引每一个普通表都有一个聚集索引数据通过聚集索引键排序根据聚集索引键可以快速查询任何记录。DM的默认聚集索引键是ROWID很多情况下以ROWID建的默认聚集索引并不能提高查询速度因为实际情况下很少人根据ROWID来查找数据。三种方式供用户指定聚集索引键CLUSTER PRIMARY KEY指定列为聚集索引键并同时指定为主键称为聚集主键CLUSTER KEY指定列为聚集索引键但是是非唯一的CLUSTER UNIQUE KEY指定列为聚集索引键并且是唯一的。例子创建student表设定stuno字段为聚合索引键create table student( stuno int cluster primary key, stuname varchar(15) not null, teano int, classid int );聚合索引键可以提高查询性能但是插入记录也需要根据聚集索引键定位插入位置有可能导致页面的分裂而影响插入性能。PK_WITH_CLUSTER参数可以控制是否将表中的主键转换为聚集主键。默认值0不转化1是转化。对水平分区表、列存表、堆表无效。指定表的填充因子在存储参数部分已经做过。查询方式建表用于创建一个与已有表相同的新表或者为了创建一个只包含另一个表的一些行和列的新表。SQL create table new_EMP as select * from employee; 操作已执行 已用时间: 43.322(毫秒). 执行号:3113.CTAB_SEL_WITH_CONS参数控制的是CREATE TABLE ... AS SELECT ...CTAS是否复制源表约束及相关属性。值含义0默认基本不拷贝约束只保留部分 NOT NULL、自增等属性1拷贝约束但不拷贝聚集索引、分区等存储信息2尽可能完整拷贝表结构、分区、存储属性、约束、聚集索引等CTAB_SEL_WITH_CONS参数测试详细见另外一篇博客DM数据库CTAB_SEL_WITH_CONS参数用于控制create table as select情况测试创建临时表临时表 ON COMMIT 关键词指定表中的数据是事务级还是会话级的默认情况下是事务级的。ON COMMIT DELETE ROWS指定临时表是事务级的每次事务提交或回滚之后表中所有数据都被删除ON COMMIT PRESERVE ROWS指定临时表是会话级的会话结束时才清空表并释放临时B树。事务级临时表和会话级临时表效果测试待做修改表想更改的表如果在所属的模式中用户必须具有ALTER TABLE数据库权限若在其他模式中用户必须有ALTER ANY TABLE的数据库权限。一般可以做加列、删列、改列定义列名、数据类型、长度、默认值有关参数ALTER_TABLE_OPT添加、修改或删除与表相关的完整性约束表的重命名启动或停用与表相关的完整性约束启动或停用与表相关的触发器修改表的SPACE LIMIT空间限制增删自增列删除表当一个表不再使用时可以将其删除。删除表时表的结构信息从数据字典中删除表中的数据不可访问表上的所有索引和触发器被一起清除所有建立在该表上的同义词、视图和存储过程变为无效所有分配给表的簇标记为空闲可被分配给其他的数据库对象。一般情况下普通用户只能删除自己模式下的表。若要删除其他模式下的表则必须具有DROP ANY TABLE数据库权限。查看表信息查看表定义创建表后可以通过SP_TABLEDEF系统过程查看表的定义。SQL CALL SP_TABLEDEF(SYSDBA, EMPLOYEE); 行号 COLUMN_VALUE ---------- ---------------------------------------------------------------------------------------------- 1 CREATE TABLE SYSDBA.EMPLOYEE ( EMPNO INT NOT NULL, ENAME VARCHAR(15) NOT NULL, JOB VARCHAR(10), MGR INT, HIREDATE DATE DEFAULT CURDATE, SALARY FLOAT, NOT CLUSTER PRIMARY KEY(EMPNO), CONSTRAINT EMP_FKEY FOREIGN KEY(MGR) REFERENCES SYSDBA.EMPLOYEE(EMPNO) WITH INDEX ) STORAGE(INITIAL 50, NEXT 50, MINEXTENTS 10, FILLFACTOR 80, ON DMDATA, CLUSTERBTR) ;查看自增列信息DM支持INT、BIGINT和DEC(n, 0)三种数据类型的IDENTITY自增列并提供以下函数查看表上自增列的当前值、种子初始值和增量等信息SQL CREATE TABLE IDENT_TABLE ( C1 INT IDENTITY(100, 100), C2 INT );2 3 4 操作已执行 已用时间: 24.788(毫秒). 执行号:4829. SQL SELECT ident_current(SYSDBA.IDENT_TABLE); 行号 IDENT_CURRENT(SYSDBA.IDENT_TABLE) ---------- ----------------------------------- 1 100 已用时间: 6.299(毫秒). 执行号:4830. SQL SELECT ident_seed(SYSDBA.IDENT_TABLE); 行号 IDENT_SEED(SYSDBA.IDENT_TABLE) ---------- -------------------------------- 1 100 已用时间: 4.513(毫秒). 执行号:4831. SQL SELECT ident_incr(SYSDBA.IDENT_TABLE); 行号 IDENT_INCR(SYSDBA.IDENT_TABLE) ---------- -------------------------------- 1 100 已用时间: 4.108(毫秒). 执行号:4832.查看表的空间使用情况略再查看模式对象空间已完成。管理索引聚集索引和非聚集索引聚集索引一级索引主索引每个表只有一个聚集索引非聚集索引二级索引辅助索引一个表可以有多个非聚集索引示例create table testidx(id int,name varchar(20)department varchar(20)); insert into testidx values(1, Zhang San, A部); INSERT INTO testidx VALUES(2, Li Si, B部); INSERT INTO testidx VALUES(3, Wang Wu, C部); INSERT INTO testidx VALUES(4, Chen Liu, D部); --创建聚集索引索引列为ID CREATE CLUSTER INDEX C1 on testidx (ID); --创建非聚集索引索引键为NAME。 CREATE INDEX S1 on testidx(NAME);使用聚集索引查找SQL EXPLAIN SELECT * FROM testidx WHERE ID2; 1 #NSET2: [1, 1, 112] 2 #PRJT2: [1, 1, 112]; exp_num(4), is_atom(FALSE) 3 #CSEK2: [1, 1, 112]; scan_type(ASC), C1(TESTIDX), scan_range[2,2] 已用时间: 26.883(毫秒). 执行号:0.使用非聚集索引进行查找SQL EXPLAIN SELECT ID FROM testidx WHERE NAMEWang Wu; 1 #NSET2: [1, 1, 64] 2 #PRJT2: [1, 1, 64]; exp_num(2), is_atom(FALSE) 3 #SSEK2: [1, 1, 64]; scan_type(ASC), S1(TESTIDX), scan_range[Wang Wu,Wang Wu], is_global(0) 已用时间: 6.656(毫秒). 执行号:0.先使用非聚集索引进行查找再通过非聚集索引关联上聚集索引进行二次查找SQL EXPLAIN SELECT DEPARTMENT FROM testidx WHERE NAMEChen Liu; 1 #NSET2: [1, 1, 96] 2 #PRJT2: [1, 1, 96]; exp_num(1), is_atom(FALSE) 3 #BLKUP2: [1, 1, 96]; S1(TESTIDX) 4 #SSEK2: [1, 1, 96]; scan_type(ASC), S1(TESTIDX), scan_range[Chen Liu,Chen Liu], is_global(0) 已用时间: 12.096(毫秒). 执行号:0.虚索引和实索引虚索引指不存储数据的索引。虚索引由系统自动并隐式地创建目的是保证约束的正确性。实索引指存储数据的索引。虚索引以外的索引均为实索引。单列索引和复合索引单列索引只有一个索引键的索引。复合索引含有多个索引键的索引。全局索引和局部索引全局索引全局索引是以整张表的数据为对象而建立的索引。全局索引又分为全局非分区索引和全局分区索引。指定了PARTITION子句的索引即为分区索引。只有DMDPC功能支持分区索引。全局非分区索引可用于除DMDPC以外的任何环境中。create table t1_part(c1 int, c2 int, c3 int) partition by range(c1) ( partition p1 values less than(100), partition p2 values less than(200), partition p3 values less than(maxvalue) ); //创建全局分区索引 create index idx1 on t1(c2) global;局部索引局部索引是在分区表的每个分区上创建的索引。#创建局部索引必须缺省GLOBAL关键字 create index idx1 on t1(c3);管理索引准则在表中插入数据后创建索引索引正确的表和列使用下面的准则来决定何时创建索引如果需要经常地检索大表中的少量的行就为查询键创建索引为了改善多个表的连接的性能可为连接列创建索引主键和唯一键自动具有索引在外键上很多情况下也创建索引小表不需要索引选取表中的索引列时可以考虑以下几点列中的值相对比较唯一 重复值少取值范围大适合建立索引CLOB和TEXT只能建立全文索引、BLOB不能建立任何索引。为性能而安排索引列在CREATE INDEX 语句中列的排序会影响查询的性能。通常将最常用的列放在最前面。非等值查询时要想有效利用组合索引则应该按等值字段在前非等值字段在后的原则创建组合索引查询时只能利用一个非等值的字段。限制每个表的索引的数量索引越多修改表数据的开销就越大.创建索引在用户自己的模式中创建索引至少要满足如下条件之一要被索引的表是在自己的模式中 在要被索引的表上有CREATE INDEX 权限具有 CREATE ANY INDEX 数据库权限。要在其他模式中创建索引用户必须具有 CREATE ANY INDEX 数据库权限。显式地创建索引可以用CREATE INDEX语句显式地创建索引。SQL create table t72(id int,name varchar(10)); 操作已执行 已用时间: 52.394(毫秒). 执行号:4842. SQL create index idx_t72_id on t72(id) storage(initial 50 ,next 50 ,on DMDATA); 操作已执行 已用时间: 44.209(毫秒). 执行号:4843.创建聚集索引SQL CREATE CLUSTER INDEX clu_idx_t72_name ON t72(name); 操作已执行 已用时间: 431.122(毫秒). 执行号:4844.新建聚集索引会重建这个表以及其所有索引包括二级索引、函数索引是一个代价非常大的操作。因此最好在建表时就确定聚集索引键或在表中数据比较少时新建聚集索引,而尽量不要对数据量非常大的表建立聚集索引。创建唯一索引唯一索引可以保证表上不会有两行数据在键列上具有相同的值。可用CREATE UNIQUE INDEX语句来创建唯一索引。CREATE UNIQUE INDEX dept_unique_index ON dept (dname) STORAGE (ON users);创建基于函数的索引基于函数的索引促进了限定函数或表达式的返回值的查询该函数或表达式的值被预先计算出来并存储在索引中。SQL create table t_goods(id int,name varchar(20),jine int,chengben int); 操作已执行 已用时间: 56.905(毫秒). 执行号:4845. SQL create index idx_lirun on t_goods(jine-chengben); 操作已执行 已用时间: 86.268(毫秒). 执行号:4846.创建位图索引位图索引主要针对含有大量相同值的列而创建。SQL create bitmap index bitmap_idx_goods_name on t_goods(name); 操作已执行 已用时间: 126.270(毫秒). 执行号:4847.创建位图连接索引隐式创建索引隐式创建方式只支持创建唯一索引。例 创建PRIMARY KEY约束时系统会隐式地自动在表T1的C1列上创建一个唯一索引 。SQL drop table t1; 操作已执行 已用时间: 194.805(毫秒). 执行号:4848. SQL create table t1(c1 int,c2 int,c3 int); 操作已执行 已用时间: 39.836(毫秒). 执行号:4849. SQL alter table t1 add constraint PK_t1_c1 primary key(c1); 操作已执行 已用时间: 42.900(毫秒). 执行号:4850. SQL SELECT INDEX_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_NAMEPK_T1_C1; 行号 INDEX_NAME ---------- ------------- 1 INDEX33555547 已用时间: 118.828(毫秒). 执行号:4854. SQL SELECT UNIQUENESS FROM ALL_INDEXES WHERE INDEX_NAMEINDEX33555547; 行号 UNIQUENESS ---------- ---------- 1 UNIQUE如何在SQL语句中使用索引如果SQL语句想使用某一个索引则SQL语句的查询项和WHERE子句的过滤项中必须包含该索引的全部索引键。当同时包含了多个索引的索引键时系统会选择一个最优的索引 进行查询。重建索引用重建索引来对索引的数据进行重组使数据更加紧凑并释放不需要的空间从而提高访问效率和空间效率。create table t_rebuild(id int,name varchar(20)); create index idx_rebuild_id on t_rebuild(id); SELECT ID FROM SYS.SYSOBJECTS WHERE NAMEIDX_REBUILD_ID; SQL SELECT ID FROM SYS.SYSOBJECTS WHERE NAMEIDX_REBUILD_ID; 行号 ID ---------- ----------- 1 33555551 SP_REBUILD_INDEX(SYSDBA,33555551)SCHNAME为索引所在的模式名INDEXID为索引ID。删除索引DROP INDEX emp_ename;不能直接删除与已启用的UNIQUE KEY键或PRIMARY KEY 键约束相关的索引。要删除一个与约束相关的索引必须停用或删除该约束本身。ALTER TABLE emp DROP CONSTRAINT pk_emp_name;删除聚集索引只要其聚集索引是通过 CREATE CLUSTER INDEX 明确建立的。DROP INDEX clu_emp_name;查看索引信息创建索引后可以通过INDEXDEF系统函数查看索引的定义。INDEXDEF(INDEXID int, PREFLAG int);SQL select INDEXDEF(33555551, 1); 行号 INDEXDEF(33555551,1) ---------- ----------------------------------------------------------------------------------------------- 1 CREATE OR REPLACE INDEX SYSDBA.IDX_REBUILD_ID ON SYSDBA.T_REBUILD(ID ASC) STORAGE(ON MAIN, CLUSTERBTR) ; 已用时间: 6.980(毫秒). 执行号:4874.管理视图视图是从一个或几个基表或视图导出的表但它是一个虚表即数据字典中只存放视图的定义由视图名和查询语句组成而不存放对应的数据这些数据仍存放在原来的基表中。CREATE VIEW normal_view AS SELECT name FROM person; CREATE VIEW special_view AS SELECT name, sex, email, phone FROM person;管理序列通过使用序列多个用户可以产生和使用一组不重复的有序整数值。比如可以用序列来自动地生成主关键字值。序列可以是循环的当序列的值达到最大值/最小值时序列将从最小值/最大值计数。管理同义词同义词相当于模式对象的别名起着连接数据库模式对象和应用程序的作用。假如模式对象需要更换或者修改则不用修改应用程序而直接修改同义词就可以了。查看视图、序列和同义词信息视图、序列以及同义词的定义信息可以通过查看系统表SYSOBJECTS和SYSTEXTS得到.查看普通视图的信息可以参考执行SQL SELECT b.* FROM SYS.SYSOBJECTS a, SYS.SYSTEXTS b WHERE a.ID b.ID and a.NAME LIKE V_REBUILD%; 行号 ID SEQNO ---------- ----------- ----------- TXT ----------------------------------------------------------------------------------------- 1 16778463 0 CREATE OR REPLACE VIEW V_REBUILD AS SELECT T_REBUILD.ID,T_REBUILD.NAME FROM T_REBUILD; 2 16778463 1 SELECT T_REBUILD.ID,T_REBUILD.NAME FROM T_REBUILD视图的定义信息也可以通过SP_VIEWDEF系统过程来查看SQL CALL SP_VIEWDEF(SYSDBA, V_REBUILD); 行号 COLUMN_VALUE ---------- ----------------------------------------------------------------------------------------- 1 CREATE OR REPLACE VIEW V_REBUILD AS SELECT T_REBUILD.ID,T_REBUILD.NAME FROM T_REBUILD; 已用时间: 43.672(毫秒). 执行号:4877.模式对象的常规管理在DM中一个用户可以创建多个模式一个模式中的对象 表、视图等可以被多个用户使用。模式不是严格分离的一个用户可以访问他所连接的数据库中有权限访问的任意模式中的对象。#创建模式 create schema JC; #并在模式里建表 create table JC.test(id int,name varchar(20));查看约束信息用户可以在系统表 SYSOBJECTS 和 SYSCONS 中查询约束的信息。SELECT * FROM SYSOBJECTS WHERE NAMET_CON_PK;查找所有约束的信息select * FROM SYSOBJECTS WHERE SUBTYPE$CONS;社区地址https://eco.dameng.com