达梦数据库7_第 3 章 数据定义语句
第 3 章 数据定义语句
本章介绍 DM 的数据定义语句,包括数据库修改语句、用户管理语句、模式管理语句、表空间管理语句、表管理语句等等。 需要注意的是,在数据定义语句中有时需要指定一些文件的路径,无论用户指定的是绝 对路径还是相对路径,DM 在处理时最终都会将其统一处理为绝对路径,DM 规定这个绝对路 径的长度不能超过 256 字节。
3.1 数据库修改语句
一个数据库创建成功后,可以增加和重命名日志文件,修改日志文件大小。可以修改数 据库的状态和模式。
语法格式
ALTER DATABASE <修改数据库语句>; <修改数据库语句>::= RESIZE LOGFILE <文件路径> TO <文件大小>| ADD LOGFILE <文件说明项>{,<文件说明项>}| RENAME LOGFILE <文件路径>{,<文件路径>} TO <文件路径>{,<文件路径>}| MOUNT | SUSPEND | OPEN [FORCE] | NORMAL | PRIMARY| STANDBY | ARCHIVELOG | NOARCHIVELOG | <ADD|MODIFY|DELETE> ARCHIVELOG <归档配置语句> | ARCHIVELOG CURRENT <文件说明项> ::= <文件路径>SIZE <文件大小> <归档配置语句>::= 'DEST = <归档目标>,TYPE = <归档类型>' <归档类型>::= LOCAL [<文件和路径设置>] | REALTIME| SYNC | ASYNC ,TIMER_NAME = <定时器名称> | REMOTE ,ARCH_INCOMING_PATH = <远程归档路径>[<文件和路径设置>]| TIMELY <文件和路径设置>::=[,FILE_SIZE = <文件大小>][,SPACE_LIMIT = <空间大小限制>]
参数
1. <文件路径> 指明被操作的数据文件在操作系统下的绝对路径:'路径+数据文件 名'。例如:'C:\DMDBMS\data\dmlog_0.log'。
2.<文件大小> 整数值,单位为 M。
3.<归档目标> 指归档日志所在位置,若本地归档,则本地归档目录;若远程归档, 则为远程服务实例名;删除操作,只需指定归档目标。
4.<归档类型> 指 归 档 操 作 类 型 , 包 括 REALTIME/ASYNC/SYNC/LOCAL/REMOTE/TIMELY,分别表示远程实时归档/远程异步归 档/远程同步归档/本地归档/远程归档/主备即时归档。
5.<空间大小限制> 整数值,范围(1024~4294967294),若设为 0,表示不限制, 仅本地归档有效。
6.<定时器名称> 异步归档中指定的定时器名称,仅异步归档有效
图例
file_item
archive configure_clause
arch_type
file_loc
语句功能
供具有 DBA 权限的用户修改数据库。
使用说明
1. 归档的配置也可以通过 dm.ini 参数 ARCH_INI 和归档配置文件 dmarch.ini 进 行,可参看《DM_DBA》,SQL 语句提供了在 DM 服务器运行时对归档配置进行动态 修改的手段,通过 SQL 语句修改成功后会将相关配置写入 dmarch.ini 中;
2. 修改日志文件大小时,只能增加文件的大小,否则失败。最大不能超过 4096M;
3. 只有 MOUNT 状态 NORMAL 模式下才能启用或关闭归档,添加、修改、删除归档, 重命名日志文件;
4. 归档模式下,不允许删除本地归档;
5. ARCHIVELOG CURRENT 把新生成的,还未归档的联机日志都进行归档。
举例说明
假设数据库 BOOKSHOP 页面大小为 8K,数据文件存放路径为 C:\DMDBMS\data。
例1 给数据库增加一个日志文件C:\DMDBMS\data\dmlog_0.log,其大小为200M。
例 2 扩展数据库中的日志文件 C:\DMDBMS\data\dmlog_0.log,使其大小增大为 300M。
例 3 设置数据库状态为 MOUNT。
例 4 设置数据库状态为 OPEN。
例 5 设置数据库状态为 SUSPEND。
例 6 重命名日志文件 C:\DMDBMS\data\dmlog_0.log 为 d:\dmlog_1.log。
ALTER DATABASE MOUNT; ALTER DATABASE RENAME LOGFILE 'C:\DMDBMS\data\dmlog_0.log' TO 'd:\dmlog_1.log'; ALTER DATABASE OPEN;
例 7 设置数据库模式为 PRIMARY。
例 8 设置数据库模式为 STANDBY。
例 9 设置数据库模式为 NORMAL。
例 10 设置数据归档模式为非归档。
例 11 设置数据库归档模式为归档。
例 12 增加本地归档配置,归档目录为 c:\arch_local,文件大小为 128MB,空间 限制为 1024MB。
ALTER DATABASE MOUNT; ALTER DATABASE ADD ARCHIVELOG 'DEST = c:\arch_local, TYPE = local, FILE_SIZE = 128, SPACE_LIMIT = 1024';
例 13 增加一个实时归档配置,远程服务实例名为 realtime,需事先配置 mail。
例 14 增加一个同步归档配置,远程服务实例名为 syn,需事先配置 mail。
例 15 增加一个异步归档配置,远程服务实例名为 asyn,定时器名为 timer1,需事 先配置好 mail 和 timer。
ALTER DATABASE MOUNT; ALTER DATABASE ADD ARCHIVELOG 'DEST = asyn, TYPE = ASYNC, TIMER_NAME = timer1';
例 16 修改实时归档为同步归档,同步归档只能存在一个,若已经存在,则需删除(沿 用前面的例子)。
ALTER DATABASE MOUNT; ALTER DATABASE DELETE ARCHIVELOG 'DEST = syn'; ALTER DATABASE MODIFY ARCHIVELOG 'DEST = realtime, TYPE = SYNC';
3.2管理用户
3.2.1 用户定义语句
在数据库中创建新的用户,DM7 中直接用 USER 与数据库服务器建立连接。
语法格式
CREATE USER <用户名> IDENTIFIED <身份验证模式> [PASSWORD_POLICY <口令策略>][< 锁定子句>][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP 子句>][< 禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<INDEX_TABLESPACE 子 句>]; <身份验证模式> ::= <数据库身份验证模式>|<外部身份验证模式> <数据库身份验证模式> ::= BY <口令> <外部身份验证模式> ::= EXTERNALLY | EXTERNALLY AS <用户 DN> <口令策略> ::= 口令策略项的任意组合 <锁定子句> ::= ACCOUNT LOCK | ACCOUNT UNLOCK <存储加密密钥> ::= ENCRYPT BY <口令> <空间限制子句> ::= DISKSPACE LIMIT <空间大小>| DISKSPACE UNLIMITED <只读标志> ::= READ ONLY | NOT READ ONLY <资源限制子句> ::= LIMIT <资源设置项>{,<资源设置项>} <资源设置项> ::= SESSION_PER_USER <参数设置>| CONNECT_IDLE_TIME <参数设置>| CONNECT_TIME <参数设置>| CPU_PER_CALL <参数设置>| CPU_PER_SESSION <参数设置>| MEM_SPACE <参数设置>| READ_PER_CALL <参数设置>| READ_PER_SESSION <参数设置>| FAILED_LOGIN_ATTEMPS <参数设置>| PASSWORD_LIFE_TIME <参数设置>| PASSWORD_REUSE_TIME <参数设置>| PASSWORD_REUSE_MAX <参数设置>| PASSWORD_LOCK_TIME <参数设置>| PASSWORD_GRACE_TIME <参数设置> <参数设置> ::=<参数值>| UNLIMITED <允许 IP 子句> ::= ALLOW_IP <IP 项>{,<IP 项>} <禁止 IP 子句> ::= NOT_ALLOW_IP <IP 项>{,<IP 项>} <IP 项> ::= <具体 IP>|<网段> <允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>} <禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>} <时间项> ::= <具体时间段> | <规则时间段> <具体时间段> ::= <具体日期> <具体时间> TO <具体日期> <具体时间> <规则时间段> ::= <规则时间标志> <具体时间> TO <规则时间标志> <具体时间> <规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN <TABLESPACE 子句> ::=DEFAULT TABLESPACE <表空间名> <INDEX_TABLESPACE 子句> ::= DEFAULT INDEX TABLESPACE <表空间名>
参数
1. <用户名> 指明要创建的用户名称,用户名称最大长度 128 字节;
2. <参数设置>用于限制用户对 DM 数据库服务器系统资源的使用;
3. 系统在创建用户时,必须指定一种身份验证模式:<数据库身份验证模式>或者<外部身份验证模式>,外部身份验证模式支持基于操作系统(OS)的身份验证、LDAP 身份验证和 KERBEROS 身份验证,具体请参考《DM 安全管理》2.3 节;
4. <口令策略>可以为以下值,或其任何组合:
0 无策略;
1 禁止与用户名相同;
2 口令长度不小于 9;
4 至少包含一个大写字母(A-Z);
8 至少包含一个数字(0-9);
16 至少包含一个标点符号(英文输入法状态下,除― 和空格外的所有符号)。
若为其他数字,则表示以上设置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项 策略。当设置为 0 时,表示设置口令没有限制,但总长度不得超过 48 个字节。另外,若不 指定该项,则默认采用系统配置文件中 PWD_POLICY 所设值。
5. 存储加密密钥用于与半透明加密配合使用,缺省情况下系统自动生成一个密钥;
6. 空间限制子句用于限制用户使用的最大存储空间,以 M 为单位,取值范围为 1 到 1048576,关键字 UNLIMITED 表示无限制;
7. 只读标志表示该登录是否只能对数据库作只读操作,默认为可读写;
8. 资源设置项的各参数设置说明见下表:
9. 允许 IP 和禁止 IP 用于控制此登录是否可以从某个 IP 访问数据库,其中禁止 IP 优先。在设置 IP 时,可以利用*来设置网段,如 192.168.0.*。设置的允许和 禁止 IP 需要用双引号括起来;
10. 允许时间段和禁止时间段用于控制此登录是否可以在某个时间段访问数据库,其中禁止时间段优先。设置的时间段中的日期和时间要分别用双引号括起来。在设置时 间段时,有两种方式:
- 1) 具体时间段,如 2016 年 1 月 1 日 8:30 至 2006 年 2 月 1 日 17:00;
- 2) 规则时间段,如 每周一 8:30 至 每周五 17:00。
11. 允许 IP、禁止 IP、允许时间段、禁止时间段和外部身份验证功能只在安全版本中 提供;
12. 用户默认表空间和索引默认表空间不能使用 SYSTEM、RLOG、ROLL、TEMP 表空 间。
图例
time_item
spacelimit_clause
语句功能
创建新的用户。
使用说明
1. 用户名在服务器中必须唯一;
2. 系统为一个用户存储的信息主要有:用户名、口令、资源限制;
3. 用户口令以密文形式存储;
4. 如果没有指定用户默认表空间,则系统指定 MAIN 表空间为用户的默认表空间;
5. 如果没有指定用户默认索引表空间,则 HUGE 表的索引缺省存储在用户的默认表空间中,普通表的索引缺省存储在表的聚集索引所在的表空间中。临时表的索引永远在 TEMP 表空间;
6. 系统预先设置了三个用户,分别为 SYSDBA、SYSAUDITOR 和 SYSSSO,其中 SYSDBA 具备 DBA 角色,SYSAUDITOR 具备 DB_AUDIT_ADMIN 角色,而 SYSSSO 具备 DB_POLICY_ADMIN 系统角色;
7. DM 提供数据库身份验证模式和外部身份验证模式来保护对数据库访问的安全。数 据库身份验证模式需要利用数据库口令;外部身份验证模式支持基于操作系统(OS) 的身份验证、LDAP 身份验证和 KERBEROS 身份验证,关于外部身份验证模式的使
用具体请参考《DM 安全管理》。
举例说明
例 创建用户名为 BOOKSHOP_USER、口令为 BOOKSHOP_PASSWORD、会话超时为 30 分钟的用户。
例 创建用户名为 BOOKSHOP_OS_USER、基于操作系统身份验证的用户。
3.2.2 修改用户语句
修改数据库中的用户。
语法格式
ALTER USER <用户名> [IDENTIFIED <身份验证模式>] [PASSWORD_POLICY <口令策略>] [< 锁定子句>] [<存储加密密钥>] [<空间限制子句>] [<只读标志>][<资源限制子句>][<允许 IP 子 句 >][< 禁 止 IP 子 句 >][< 允 许 时 间 子 句 >][< 禁 止 时 间 子 句 >][<TABLESPACE 子 句>][<INDEX_TABLESPACE 子句>][<SCHEMA 子句>]; <身份验证模式> ::= <数据库身份验证模式>|<外部身份验证模式> <数据库身份验证模式> ::= BY <口令> <外部身份验证模式> ::= EXTERNALLY <口令策略> ::= 口令策略项的任意组合 <锁定子句> ::= ACCOUNT LOCK | ACCOUNT UNLOCK <存储加密密钥> ::= ENCRYPT BY <口令> <空间限制子句> ::= DISKSPACE LIMIT <空间大小>| DISKSPACE UNLIMITED <只读标志> ::= READ ONLY | NOT READ ONLY <资源限制子句> ::= LIMIT <资源设置项>{,<资源设置项>} <资源设置项> ::= SESSION_PER_USER <参数设置>| CONNECT_IDLE_TIME <参数设置>| CONNECT_TIME <参数设置>| CPU_PER_CALL <参数设置> | CPU_PER_SESSION <参数设置> | MEM_SPACE <参数设置> | READ_PER_CALL <参数设置> | READ_PER_SESSION <参数设置> | FAILED_LOGIN_ATTEMPS <参数设置>| PASSWORD_LIFE_TIME <参数设置>| PASSWORD_REUSE_TIME <参数设置>| PASSWORD_REUSE_MAX <参数设置>| PASSWORD_LOCK_TIME <参数设置>| PASSWORD_GRACE_TIME <参数设置> <参数设置> ::=<参数值>| UNLIMITED <允许 IP 子句> ::= ALLOW_IP <IP 项>{,<IP 项>} <禁止 IP 子句> ::= NOT_ALLOW_IP <IP 项>{,<IP 项>} <IP 项> ::= <具体 IP>|<网段> <允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>} <禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>} <时间项> ::= <具体时间段> | <规则时间段> <具体时间段> ::= <具体日期> <具体时间> TO <具体日期> <具体时间> <规则时间段> ::= <规则时间标志> <具体时间> TO <规则时间标志> <具体时间> <规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN <TABLESPACE 子句> ::=DEFAULT TABLESPACE <表空间名> <INDEX_TABLESPACE 子句> ::= DEFAULT INDEX TABLESPACE <表空间名> <SCHEMA 子句> ::= ON SCHEMA <模式名>
参数
同 CREATE USER 的参数规定一样。
图例
time_item
语句功能
修改用户。
使用说明
1.每个用户均可修改自身的口令,SYSDBA 用户可强制修改所有其他用户的口令(在数 据库验证方式下);
2.只有具备 ALTER USER 权限的用户才能修改其身份验证模式、系统角色及资源限 制项;
3. 不论 dm.ini 的 DDL_AUTO_COMMIT 设置为自动提交还是非自动提交,ALTER USER 操作都会被自动提交;
4. 修改用户口令时,口令策略应符合创建该用户时指定的口令策略;
5.系统固定用户不能修改其系统角色和资源限制项;
6. <SCHEMA 子句>用于设置用户的缺省模式;
7.其他参数的取值、意义与 CREATE USER 中的要求一样。
举例说明
例 修改用户 BOOKSHOP_USER,会话空闲期为无限制,最大连接数为 10。
3.2.3 用户删除语句
删除用户。
语法格式
DROP USER <用户名> [RESTRICT | CASCADE];
参数
<用户名> 指明被删除的用户。
图例
语句功能
删除指定用户。
使用说明
1.系统自动创建的三个系统用户 SYSDBA、SYSAUDITOR 和 SYSSSO 不能被删除;
2.具有相应的 DROP USER 权限的用户即可进行删除用户操作;
3.执行此语句将导致 DM 删除数据库中该用户建立的所有对象,且不可恢复。如果要 保存这些实体,请参考 REVOKE 语句;
4.如果未使用 CASCADE 选项,若该用户建立了数据库对象 (如表、视图、过程或函数),或其他用户对象引用了该用户的对象,或在该用户的表上存在其它用户建立的视图,DM 将返回错误信息,而不删除此用户;
5.如果使用了 CASCADE 选项,除数据库中该用户及其创建的所有对象被删除外,如 果其他用户创建的表引用了该用户表上的主关键字或唯一关键字,或者在该表上创建了视 图,DM 还将自动删除相应的引用完整性约束及视图依赖关系;
6.正在使用中的用户可以被删除,删除后重登录或者做操作会报错。
举例说明
例 删除用户 BOOKSHOP_USER 的语句。
例 删除用户 BOOKSHOP_OS_USER 的语句。
3.3 管理模式
3.3.1 模式定义语句
模式定义语句创建一个架构,并且可以在概念上将其看作是包含表、视图和权限定义的
对象。在 DM 中,一个用户可以创建多个模式,一个模式中的对象(表、视图)可以被多个用
户使用。
系统为每一个用户自动建立了一个与用户名同名的模式作为默认模式,用户还可以用模
式定义语句建立其它模式。
语法格式
<模式定义子句 1> | <模式定义子句 2> <模式定义子句 1> ::= CREATE SCHEMA <模式名> [AUTHORIZATION <用户名>][<DDL_GRANT 子句> {< DDL_GRANT 子句>}]; <模式定义子句 2> ::= CREATE SCHEMA AUTHORIZATION <用户名> [<DDL_GRANT 子句> {< DDL_GRANT 子句>}]; <DDL_GRANT 子句> ::= <基表定义> | <域定义>| <基表修改> | <索引定义> | <视图定义> | <序列定义> | <存储过程定义> | <存储函数定义> | <触发器定义> | <特权定义> | <全文索引定义> | <同义词定义> | <包定义> | <包体定义> | <类定义> | <类体定义> | <外部链接定义>] | <物 化视图定义> | <物化视图日志定义> | <注释定义>
参数
1. <模式名> 创建模式的名字,模式名最大长度 128 字节;
2. <基表定义> 建表语句;
3. <域定义> 域定义语句;
4. <基表修改> 基表修改语句;
5. <索引定义> 索引定义语句;
6. <视图定义> 建视图语句;
7. <序列定义> 建序列语句;
8. <存储过程定义> 存储过程定义语句;
9. <存储函数定义> 存储函数定义语句;
10. <触发器定义> 建触发器语句;
11. <特权定义> 授权语句;
12. <全文索引定义> 全文索引定义语句;
13. <同义词定义> 同义词定义语句;
14. <包定义> 包定义语句;
15. <包体定义> 包体定义语句;
16. <类定义> 类定义语句;
17. <类体定义> 类体定义语句;
18. <外部链接定义> 外部链接定义语句;
19. <物化视图定义> 物化视图定义语句;
20. <物化视图日志定义> 物化视图日志定义语句;
21. <注释定义> 注释定义语句。
图例
sch_def_clause1
sch_def_clause2
ddl_grant_clause:
略
语句功能
供具有 DBA 或 CREATE SCHEMA 权限的用户在指定数据库中定义模式。
使用说明
1. 在创建新的模式时,如果已存在同名的模式,或当存在能够按名字不区分大小写匹 配的同名用户时(此时认为模式名为该用户的默认模式),那么创建模式的操作会 被跳过,而如果后续还有 DDL 子句,根据权限判断是否可在已存在模式上执行这 些 DDL 操作;
2. AUTHORIZATION <用户名>标识了拥有该模式的用户;它是为其他用户创建模式 时使用的;缺省拥有该模式的用户为 SYSDBA;
3. 使用 sch_def_clause2 创建模式时,模式名与用户名相同;
4. 使用该语句的用户必须具有 DBA 或 CREATE SCHEMA 权限;5. DM7 使用 PL SQL 模式执行创建模式语句,因此创建模式语句中的标识符不能使 用系统的 PL 保留字;
6. 定义模式时,用户可以用单条语句同时建多个表、视图,同时进行多项授权;
7. 模式一旦定义,该用户所建基表、视图等均属该模式,其它用户访问该用户所建立 的基表、视图等均需在表名、视图名前冠以模式名;而建表者访问自己当前模式所 建表、视图时模式名可省;若没有指定当前模式,系统自动以当前用户名作为模式 名;
8. 模式定义语句中的基表修改子句只允许添加表约束;
9. 模式定义语句中的索引定义子句不能定义聚集索引;
10. 模式未定义之前,其它用户访问该用户所建的基表、视图等均需在表名前冠以建表 者名;
11. 模式定义语句不允许与其它 SQL 语句一起执行;
12. 在 disql 中使用该语句必须以―/‖结束。
举例说明
例 下面是用户 SYSDBA 建立模式的例子,建立的模式属于 SYSDBA。
CREATE SCHEMA SCHEMA1 AUTHORIZATION SYSDBA;
3.3.2 设置当前模式语句
设置当前模式。
语法格式
图例
SET SCHEME schemaname ;
使用说明
只能设置到属于自己的模式。
举例说明
例 SYSDBA 用户将当前的模式从 SYSDBA 换到 SALES 模式。
3.3.3 模式删除语句
在 DM 系统中,允许用户删除整个模式。
语法格式
参数
<模式名> 指要删除的模式名。
图例
语句功能
供具有 DBA 角色的用户或该模式的拥有者删除模式。
使用说明
1. <模式名>必须是当前数据库中已经存在的模式;
2. 用该语句的用户必须具有 DBA 权限或是该模式的所有者;
3. 如果使用 RESTRICT 选项,只有当模式为空时删除才能成功,否则,当模式中存 在数据库对象时则删除失败。默认选项为 RESTRICT 选项;
4. 如果使用 CASCADE 选项,则将整个模式、模式中的对象,以及与该模式相关的依 赖关系都删除。
举例说明
例 以 SYSDBA 身份登录数据库后,删除 BOOKSHOP 库中模式 SCHEMA1。
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/