达梦 DM8 入门篇
基本操作
登入与登出
#.本地登录
su - dmdba
disql sysdba/Dameng_147
#.通过ip远程登录
/opt/dm8/bin/disql sysdba/Dameng_147@127.0.0.1:5236
-- 登出
SQL> exit;
实例的管理
#.启动服务
instance_name=sqlfans
/opt/dm8/bin/DmService$instance_name start
#.停止服务
instance_name=sqlfans
/opt/dm8/bin/DmService$instance_name stop
-- 查看版本
select * from v$version;
-- 查看页大小
select SF_GET_PAGE_SIZE();
-- 通过sql语句关闭数据库
shutdown immediate;
-- 达梦数据库关闭兼容以下四个命令
shutdown normal # 必须等所有用户主动断开所有会话才会关闭数据库
shutdown transactional # 必须等用户主动结束事务后才会关闭数据库
shutdown immediate # 数据库回滚所有现有事务,隐式断开所有会话,关闭数据库
shutdown abort # 直接拉闸断电,有丢失数据的风险
表空间的管理
-- 创建自动增长的表空间, size单位MB
drop tablespace if exists tbs_demo;
create tablespace tbs_demo datafile '/data/dm_5236/tablespace/tbs_demo.dbf' size 128 autoextend on next 10 maxsize 200 cache = normal;
-- 创建非自动增长的表空间
drop tablespace if exists tbs_aaa;
create tablespace tbs_aaa datafile '/data/dm_5236/tablespace/tbs_aaa.dbf' size 200 autoextend off cache = normal;
-- 表空间添加数据文件, 若size过小(比如50)则报错无效
alter tablespace tbs_aaa add datafile '/data/dm_5236/tablespace/tbs_aaa_02.dbf' size 100;
-- 表空间在线容量调整, size单位MB
alter tablespace tbs_aaa resize datafile '/data/dm_5236/tablespace/tbs_aaa_02.dbf' to 128;
-- 表空间开启自动扩展
alter tablespace tbs_aaa datafile '/data/dm_5236/tablespace/tbs_aaa_02.dbf' autoextend on;
-- 重命名表空间
alter tablespace tbs_aaa rename to tbs_bbb;
-- 查看表空间
select path,create_time,total_size from v$datafile order by group_id;
-- 查询表空间对应的物理文件
select ts.name as tbs_name, df.path from v$tablespace ts, v$datafile as df where ts.id = df.group_id order by ts.name;
-- 查询表空间的使用大小
SELECT
TS_NAME AS tbs_name,
ROUND(SUM(TOTAL) / 1048576, 2) AS "TotalSize_MB",
ROUND(SUM(USED) / 1048576, 2) AS "UsedSize_MB",
CONCAT(CAST(ROUND(SUM(USED) * 100.0 / SUM(TOTAL), 2) AS VARCHAR), '%') AS Usage_pct
FROM (
SELECT
UPPER(df.TABLESPACE_NAME) AS TS_NAME,
df.BYTES AS TOTAL,
df.BYTES - fs.BYTES AS USED
FROM DBA_DATA_FILES df
INNER JOIN DBA_FREE_SPACE fs ON df.TABLESPACE_NAME = fs.TABLESPACE_NAME AND df.FILE_ID = fs.FILE_ID
) GROUP BY TS_NAME;
-- 在线or离线表空间
alter tablespace tbs_bbb offline;
alter tablespace tbs_bbb online;
-- 表空间删除数据文件
alter tablespace tbs_bbb drop datafile '/data/dm_5236/tablespace/tbs_aaa_02.dbf';
-- 表空间的删除,会同时删除数据文件
drop tablespace tbs_bbb;
模式的管理
- mysql 的数据库,相当于达梦的模式,注意用户与模式的定义及其之间的关系:
用户(USER):用户是用来连接数据库并进行相关操作的
模式(SCHEMA):模式是数据库对象的集合,模式是数据库的逻辑结构
- 在达梦数据库中,用户(USER)和模式(SCHEMA)是一对多的关系,即一个用户拥有至少一个及以上的模式,而一个模式只能属于一个用户
-- 创建测试用户 test_user, 默认会创建1个同名的模式
drop user if exists test_user;
CREATE USER test_user IDENTIFIED BY "Admin_147";
-- 创建2个模式, 属于 test_user 用户, 命令行创建模式时, 先回车再以 / 结束
create schema test_schema_01 authorization test_user
create schema test_schema_02 authorization test_user
-- 查看用户与模式的对应关系
select a.name as username, b.name as schenma
from sysobjects a inner join sysobjects b on a.id = b.pid
where b.subtype$ is null order by username desc;
-- 先删除某个用户所有自定义的模式(与用户名称同名的默认模式不需要单独删除), 再删除用户, 直接删用户会失败
drop schema test_schema_02;
drop schema test_schema_01;
drop user test_user;
数据表的管理
-- 若该表存在则删除
DROP TABLE IF EXISTS SYSDBA.tab01;
-- 创建表, 示例指定了模式(SYSDBA)和表空间(tbs_demo)
create table if not exists SYSDBA.tab01 (
id integer,
tname varchar(20),
fname varchar(20),
email varchar(50),
insert_time date DEFAULT (CURDATE),
CLUSTER KEY(tname, fname),
NOT CLUSTER PRIMARY KEY(id) USING INDEX TABLESPACE tbs_demo
) STORAGE(ON "tbs_demo", CLUSTERBTR);
-- 添加表的注释,注意与mysql不同,不支持直接在建表语句后面加上COMMENT的写法
COMMENT ON TABLE tab01 IS '测试表01';
-- 添加列的注释
COMMENT ON COLUMN tab01.email IS '邮件地址';
-- 查看表的定义语句, 示例模式 SYSDBA, 表名 tab01
SP_TABLEDEF('SYSDBA','tab01');
-- desc获取表结构信息
desc tab01;
-- 查询表字段情况, 但不包含注释信息
select column_name, data_type,char_length from all_tab_columns where table_name='tab01';
-- 添加字段
ALTER TABLE SYSDBA.tab01 add address varchar(30);
COMMENT ON COLUMN SYSDBA.tab01.address IS '住址';
-- 修改字段的类型
ALTER TABLE SYSDBA.tab01 MODIFY address varchar(60);
-- 重命名字段, 提供2种方式
ALTER TABLE SYSDBA.tab01 ALTER COLUMN address RENAME TO address_new_1;
ALTER TABLE SYSDBA.tab01 RENAME COLUMN address_new_1 TO address_new_2;
-- 删除字段
ALTER TABLE SYSDBA.tab01 DROP COLUMN address_new_2;
-- 查看已分配给表的页面数
SELECT table_used_space('SYSDBA','tab01');
-- 查看表已使用的页面数
SELECT table_used_pages('SYSDBA','tab01');
-- 查看表占用的物理大小
SELECT S2.NAME AS SCHEMA_NAME,S1.NAME AS TABLE_SPACE,TABLE_USED_SPACE(S2.NAME,S1.NAME) * PAGE /1024.0/1024.0 AS PHYSICS_SIZW_MB
FROM SYSOBJECTS S1, SYSOBJECTS S2
WHERE S1.SCHID = S2.ID AND S1."SUBTYPE$" = 'UTAB' AND S2."TYPE$" = 'SCH' AND S2.NAME <> 'SYS'
ORDER BY 3 DESC;
-- 快速清空表数据,立即释放空间(默认行为)
TRUNCATE TABLE SYSDBA.tab01 DROP STORAGE;
-- 快速清空表数据,保留空间(仅保留表段,很少使用)
TRUNCATE TABLE SYSDBA.tab01 REUSE STORAGE;
-- 删除表
DROP TABLE IF EXISTS SYSDBA.tab01;
-- 如果要删除的表被其他表引用, 即其他表的外键引用了表的任何主键或唯一键, 则需要在DROP TABLE语句中包含CASCADE选项
DROP TABLE IF EXISTS SYSDBA.tab01 CASCADE;
增删改查
- 针对数据的 insert 及 update 及 delete,每次执行完,建议执行 commit; 显示提交
-- 创建测试表
drop table if exists SYSDBA.employee;
drop table if exists SYSDBA.department;
CREATE TABLE IF NOT EXISTS SYSDBA.employee (employee_id INTEGER PRIMARY KEY, employee_name VARCHAR(20), hire_date DATE, salary INTEGER, department_id INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS SYSDBA.department (department_id INTEGER NOT NULL PRIMARY KEY, department_name VARCHAR(30));
-- 创建外键约束
ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES department (department_id);
-- 插入数据, 因为 employee 和 department 存在主外键约束, 所以必须按顺序执行插入, 即先插入 department 数据
INSERT INTO department VALUES(666, '研发中心');
INSERT INTO employee VALUES (10001, '张三','2025-07-25 19:56:00', 30000, 666);
commit;
-- 更新数据
UPDATE employee SET salary='35000' WHERE employee_id=10001;
commit;
-- 验证数据
SELECT * FROM employee;
-- 删除数据, 因为 employee 和 department 存在主外键约束, 所以必须按顺序执行删除, 即先删除 employee 数据
DELETE FROM employee where employee_id=10001;
DELETE FROM department WHERE department_id=666;
commit;
-- 验证数据
SELECT * FROM employee;
账号的管理
| 用户名称 |
用户的角色描述 |
备注 |
| SYSSSO |
系统安全员 |
- |
| SYSDBA |
系统管理员 |
- |
| SYS |
内置用户 |
不能直接登录 |
| SYSAUDITOR |
系统审计员 |
用于审计相关功能 |
-- 创建账号
-- CREATE USER user_test_02 IDENTIFIED BY "Admin_147" default tablespace "tbs_demo" default index tablespace "tbs_demo";
drop user if exists user_test_01;
CREATE USER user_test_01 IDENTIFIED BY "Admin_147";
-- 添加权限
grant resource,public to user_test_01;
-- 使用 conn 命令切换用户
conn user_test_01/Admin_147;
-- 查看当前登录用户
SELECT user FROM DUAL;
-- 查看当前用户拥有的权限信息
select * from session_privs;
-- 返回管理员账号
conn sysdba/Dameng_147;
-- 查看用户的口令策略参数信息
select * from v$dm_ini where para_name = 'PWD_POLICY';
-- 查看数据库用户的口令策略
select ACCOUNT_STATUS, USERNAME, USER_ID, PASSWORD_VERSIONS from dba_users;
-- 查看用户信息
SELECT username,default_tablespace,default_index_tablespace,temporary_tablespace,account_status,created FROM dba_users;
-- 查询查看用户对象统计信息
SELECT S2.NAME AS 模式名, S1.TYPE$ AS 主类型, S1.SUBTYPE$ AS 子类型, COUNT(*) AS 对象数量
FROM SYSOBJECTS S1, SYSOBJECTS S2
WHERE S1.SCHID = S2.ID AND S2.TYPE$ = 'SCH'
GROUP BY S2.NAME, S1.TYPE$, S1.SUBTYPE$
ORDER BY S2.NAME, S1.TYPE$, S1.SUBTYPE$;
-- 查看用户占用表空间大小
SELECT USERNAME, USER_USED_SPACE(USERNAME) * PAGE / 1024.0 / 1024.0 AS user_space_MB FROM dba_users ORDER BY 2 DESC;
-- 修改用户密码
alter user user_test_01 identified by "Aa_654321";
-- 修改用户的默认表空间
alter user user_test_01 default tablespace tbs_demo;
-- 修改用户的默认索引表空间
alter user user_test_01 default index tablespace tbs_demo;
-- 修改用户资源限制
alter user user_test_01 LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 15;
-- 锁定/解锁用户
alter user user_test_01 account lock;
alter user user_test_01 account unlock;
-- 删除用户
drop user if exists user_test_01;
-- 级联删除, 把用户以及用户下的所有表/视图等对象全部删除
drop user if exists user_test_01 cascade;
授权与撤销
- 达梦数据库内置角色如下,其中 DBA、RESOURCE、PULIBC、SOI、VTI 等默认赋给了 SYSDBA
| 角色名称 |
角色简单说明 |
| DBA |
系统管理员角色,拥有除审计和强制访问控制之外的几乎所有权限 |
| RESOURCE |
拥有 CREATE 创建表、索引、视图等对象定义的权限和数据操作权限(DDL操作) |
| PULIBC |
拥有数据操作权限(DDL增删改查操作),没有创建表、视图等对象定义权限 |
| VTI |
具有查询动态视图(v$开头的)权限 |
| SOI |
具有查询系统表(SYS 开头的)查询权限 |
| SVI |
具有基础V视图的查询权限 |
| DB_AUDIT |
开头为审计相关角色,默认赋给了 SYSAUDITOR |
| DB_POLICY |
开头的为安全相关角色,默认赋给 SYSSSO |
-- 创建账号
drop user if exists user_test_02;
CREATE USER user_test_02 IDENTIFIED BY "Admin_147";
-- 查看当前登录用户
SELECT user FROM DUAL;
-- 查看当前用户拥有的权限信息
select * from session_privs;
-- 用户权限的授予
grant resource,public to user_test_02;
-- 用户权限的回收
revoke resource from user_test_02;
-- 赋予查询某张表部分列的权限
grant select (employee_id, employee_name, salary) on SYSDBA.employee to user_test_02;
-- 如果在授予对象权限时指定 with grant option, 则回收时需要增加 cascade 关键字级联回收权限
grant select on SYSDBA.department to user_test_02 WITH grant OPTION;
revoke select on SYSDBA.department from user_test_02 CASCADE;
三类示范账号
- 创建常用的三种账号:管理员、业务读写账号、只读账号
-- 创建超管账号
CREATE USER dba_admin IDENTIFIED BY "cf_rB1NKCzbaQuPH";
GRANT DBA TO dba_admin;
-- 创建业务账号
CREATE USER user_bigdata_push IDENTIFIED BY "dw_RX2a_6GemCf7u";
GRANT PUBLIC TO user_bigdata_push;
-- 创建只读账号
create user user_bigdata_readonly identified by "dw_iuDIfQzWgVb9G";
grant select any table to user_bigdata_readonly;
连接数与会话
-- 查看会话信息
SELECT SESS_ID,SQL_TEXT,STATE,CREATE_TIME,CLNT_HOST FROM v$sessions;
-- 查看正在运行的会话
SELECT SESS_ID,SQL_TEXT,STATE,CREATE_TIME,CLNT_HOST FROM v$sessions WHERE state = 'ACTIVE';
-- 杀掉一个活动的会话, 示例杀掉 140231017844136
sp_close_session(140231017844136);
-- 查询到发生过的死锁信息
SELECT * FROM V$DEADLOCK_HISTORY;
字符集
| 字符集id |
字符集名称 |
字符集描述 |
| 0 |
GB18030 |
中国国家标准的多字节字符集,默认字符集 |
| 1 |
UTF-8 |
针对 Unicode 的可变长度字符编码,支持全球范围内的字符 |
| 2 |
EUC-KR |
韩文字符集 |
- 达梦数据库一旦建库完成后,字符集是不可更改的。而实例层面的排序规则(Collation)一般跟随字符集自动设置,暂无特定的参数可以修改
-- 查询当前实例的字符集
SELECT UNICODE();
SELECT SF_GET_UNICODE_FLAG();
-- 在创建数据库实例时, 可以通过dminit设置字符集
dminit CHARSET=1
- 建库后不能改字符集,只能在表、列、查询时用 COLLATE 临时改变排序方式,合理的排序规则能显著提升查询正确性和性能
-- 创建表时指定字段的排序规则, 示例 CI_AI
drop table if exists tab01;
CREATE TABLE tab01 (id int, name varchar(100) COLLATE CI_AI);
-- 修改字段的排序规则, 示例 utf8_general_ci
ALTER TABLE tab01 MODIFY name varchar(100) COLLATE utf8_general_ci;
#.不支持修改数据库的排序规则
ALTER DATABASE sqlfans SET UTF-8 COLLATE utf8_general_ci;
#.不支持创建表的时候指定表的排序规则
drop table if exists tab01;
CREATE TABLE tab01 (id int, name varchar(100)) DEFAULT COLLATE utf8_general_ci;
#.不支持创建索引的时候指定排序规则
CREATE INDEX idx_tab01_name ON tab01(name COLLATE utf8_general_ci);
#.不支持查询的时候指定排序规则
SELECT * FROM tab01 ORDER BY name COLLATE utf8_general_ci;
索引与调优
索引的创建与删除
- 注意:达梦的索引名称必须全局唯一,即不同的表不可以使用同一个索引名称,所以规范命名
idx_表名_字段名
-- 创建employee表
drop table if exists SYSDBA.employee;
CREATE TABLE IF NOT EXISTS SYSDBA.employee(id INT IDENTITY(1,1) PRIMARY KEY, employee_id INTEGER, employee_name VARCHAR(20), hire_date DATE);
-- 创建普通索引, 可以指定表空间
CREATE INDEX idx_employee_hire_date ON employee(hire_date) TABLESPACE tbs_demo;
-- 查看索引清单
SELECT table_name, index_name, index_type from user_indexes;
SELECT table_name, index_name, index_type from user_indexes WHERE table_name='employee';
-- 查询索引占用大小
SELECT segment_name as index_name, bytes/1024/1024 as size_mb FROM dba_segments WHERE segment_type = 'INDEX';
-- 查询某个索引的资源对象id
SELECT OBJECT_ID FROM SYS.DBA_OBJECTS WHERE owner='SYSDBA' AND object_type='INDEX' AND object_name='idx_employee_hire_date';
-- 根据索引的资源对象id执行索引重建, 示例索引 idx_employee_hire_date 的对象id为 33557930
SP_REBUILD_INDEX('SYSDBA', 33557930);
-- 删除索引
DROP INDEX SYSDBA.idx_employee_hire_date;
-- 创建表 tab01
drop table if exists SYSDBA.tab01;
CREATE TABLE IF NOT EXISTS SYSDBA.tab01(id int, name varchar(20));
-- 添加非空约束
ALTER TABLE tab01 MODIFY name varchar(20) NOT NULL;
-- 创建唯一约束
ALTER TABLE tab01 MODIFY name varchar(20) UNIQUE;
-- 查看普通约束
SELECT constraint_name FROM user_constraints WHERE table_name = 'tab01';
SELECT constraint_name FROM all_constraints WHERE table_name='tab01';
-- 创建表 employee
drop table if exists SYSDBA.employee;
CREATE TABLE IF NOT EXISTS SYSDBA.employee(id INT IDENTITY(1,1) PRIMARY KEY, employee_id INTEGER, employee_name VARCHAR(20), hire_date DATE);
-- 查看主键约束
SELECT constraint_name FROM user_constraints WHERE table_name = 'employee';
-- 删除主键约束, 不知道主键约束名称的情况下
ALTER TABLE employee DROP PRIMARY KEY;
-- 创建主键约束
ALTER TABLE employee ADD constraint pk_employee PRIMARY KEY(employee_id);
-- 重命名主键约束
ALTER TABLE employee RENAME CONSTRAINT pk_employee TO pk_employee_new;
-- 禁用主键约束(不删除索引)
ALTER TABLE employee DISABLE CONSTRAINT pk_employee_new;
-- 删除主键约束, 知道主键约束名称的情况下
ALTER TABLE employee drop constraint pk_employee_new;
-- 创建表 employee
drop table if exists SYSDBA.employee;
CREATE TABLE IF NOT EXISTS SYSDBA.employee (
employee_id INTEGER PRIMARY KEY,
employee_name VARCHAR(20),
hire_date DATE,
salary INTEGER,
department_id INTEGER NOT NULL,
insert_time DATE
);
-- 创建表 department
drop table if exists SYSDBA.department;
CREATE TABLE IF NOT EXISTS SYSDBA.department (
department_id INTEGER NOT NULL PRIMARY KEY,
department_name VARCHAR(30),
insert_time DATE
);
-- 创建外键约束
ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES department (department_id);
-- 创建外键约束
SELECT constraint_name FROM all_constraints WHERE table_name='employee';
-- 删除外键约束
ALTER TABLE employee drop constraint fk_department;
-- 创建级联删除和更新的外键约束
ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES department (department_id) ON DELETE CASCADE ON UPDATE CASCADE;
日志和备份管理
-- 查看日志信息
SELECT * FROM V$RLOG;
SELECT * FROM V$RLOGFILE;
SELECT * FROM V$LOG_HISTORY;
-- 查询默认备份目录
select * from v$dm_ini where PARA_NAME='BAK_PATH';
-- 查询归档文件
select arch_name, arch_type, arch_dest from v$dm_arch_ini;
select arch_mode from v$database;
-- 查询所有的备份信息
SELECT
BACKUP_NAME AS 备份名,
BACKUP_PATH AS 备份路径,
CASE WHEN TYPE = 0 THEN '完全备份' WHEN TYPE = 1 THEN '增量备份' WHEN TYPE = 3 THEN '归档备份' END AS 备份类型,
BACKUP_TIME AS 备份时间
FROM V$BACKUPSET;
-- 1.进入MOUNT状态并开启归档模式
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
-- 2.添加本地归档路径
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch/arch_local_02.log, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch/arch_local_03.log, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
-- 3. 切换为OPEN状态
ALTER DATABASE OPEN;
-- 生成到默认路径
BACKUP DATABASE FULL BACKUPSET;
BACKUP DATABASE FULL BACKUPSET 'db_full_bak';
-- 指定路径
BACKUP DATABASE full BACKUPSET '/dm8/backup_new/202505121348';
-- 联机差异增量
BACKUP DATABASE INCREMENT BACKUPSET 'db_incr_bak_202505121551';
-- 指定基备份路径
BACKUP DATABASE INCREMENT BASE ON BACKUPSET '/dm8/backup_new/202505121348' BACKUPSET 'db_incr_bak_202505121552';
-- dmrman脱机备份
./dmrman
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO db_offline_bak;
-- dmrman脱机还原
./dmrman
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup/DB_DAMENG_FULL_20250512_135423_987587';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup/DB_DAMENG_FULL_20250512_135423_987587';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
-- 联机完全备份表空间MAIN
BACKUP TABLESPACE MAIN BACKUPSET 'ts_main_bak';
-- 增量备份(需存在基备份)
BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_main_incr';
-- 脱机还原表空间
./dmrman
RESTORE TABLESPACE MAIN FROM BACKUPSET 'ts_main_bak';
RECOVER TABLESPACE MAIN FROM BACKUPSET 'ts_main_bak';
-- 联机备份表
BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
-- 联机还原表
RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
-- 备份所有归档日志
BACKUP ARCHIVELOG ALL BACKUPSET 'arch_bak_20250512';
-- 按时间/LSN范围备份
BACKUP ARCHIVELOG LSN BETWEEN 50000 AND 60000 BACKUPSET 'arch_bak_20250512_range';
-- 还原归档日志
./dmrman
RESTORE ARCHIVELOG FROM BACKUPSET '/dm8/data/backup/arch_bak_20250512' TO ARCHIVEDIR '/tmp/arch_new';
-- 校验备份集
SF_BAKSET_CHECK('DISK', '/dm8/data/backup/DB_DAMENG_FULL_20250512_142007_962153');
-- 删除单个备份
SF_BAKSET_REMOVE('DISK', '/dm8/data/backup/DB_DAMENG_FULL_20250512_142007_96215', 1);
-- 批量删除旧备份(保留最近2个完全备份)
SF_BAKSET_REMOVE_BATCH_N('DISK', NOW(), 1, NULL, 2);
其他操作
-- set设置常用环境变量
set pagesize <数字> # 设置一页有多少行数。默认14
set LINESHOW on/off # 设置是否显示行号。默认on
set HEADING on/off # 设置是否显示列标题。默认on
set TIMING on/off # 设置是否显示列标题。默认on
set TIME on/off # 显示系统的当前时间。默认off
set FEED <数字>/on/off # 设置是否显示当前SQL查询或修改的总行数大于n行时,才显示结果的总行数。默认6
set ECHO on/off # 当START执行一个SQL脚本时,是否显示脚本中正在执行的SQL语句。默认ON
set AUTOCOMMIT on/off # 当START执行一个SQL脚本时,设置当前session是否对修改的数据进行自动提交。默认OFF
-- 利用spool将后续操作内容输出到文件,并利用host切换到操作系统查看文件内容,最后exit返回sql终端
spool /tmp/dm8.txt
select * from v$version;
spool off
host
cat /tmp/dm8.txt
exit
-- 查看上一条历史命令
list
-- 缓存清理
cl col # 清理所有的变量信息
cl screen # 清理终端屏幕信息
col sql # 清理本地sql缓存信息