1.1.2 规划安装目录
创建安装目录/dm8,并修改安装目录的所属组给 dmdba 用户和该用户所属组。
js复制代码#创建目录
mkdir /dm8
#修改目录权限
chown dmdba:dinstall /dm8
#查看目录权限
ls -ld /dm8
1.2 安装
安装采用图形化界面安装,因此需要先设置图形化相关参数。
1.2.1 设置图形化界面
js复制代码#root用户下执行,允许任何用户连接到 X 服务器
xhost +
#查看 root 用户的 DISPLAY 变量值
echo $DISPLAY
#切换dmdba用户
su - dmdba
#设置DISPLAY值为上步骤中获取的值
export DISPLAY=:0.0
1.2.2 图形化方式安装
进入安装文件目录下,执行安装程序
js复制代码#图形化界面安装
./DMInstall.bin
#如需使用命令行安装,执行如下命令
./DMInstall.bin -i
#DM支持静默方式安装。静默方式安装需要配置xml文件
./DMInstall.bin -q 配置文件全路径
打开图形化界面之后,根据提示操作即可完成数据库的安装。
#创建分组
groupadd dinstall
#创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
#配置用户密码
passwd dmdba
安装完成后,根据提示,运行相应的脚本文件,创建并启动DmAPService服务。
2.数据库创建及实例管理
2.1 数据库创建
进入/dm8/tool目录,运行 ./dbca.sh 打开数据库配置助手。
安装完成后,根据提示,使用root用户,执行相应脚本,将数据库服务注册为linux服务。
2.2 数据库连接
2.2.1 图形化界面连接
进入/dm8/tool目录下,运行./manager 打开数据库管理工具。在其中配置端口、用户名、密码等参数之后,即可直接连接数据库。
2.2.2 命令行方式连接
进入/dm8/bin目录下,执行./disql命令,后跟用户名/密码:端口,即可连接数据库。
3.参数配置
DM 数据库参数的类型:
READ ONLY:手动参数,不能通过 SQL 命令或函数修改;只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
SYS:动态(系统级)参数。数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值。可以通过 SQL 命令或系统函数修改。
SESSION:动态(会话级)参数,数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值,还可以只修改当前会话的值。可以通过 SQL 命令或函数修改,且可以只针对当前会话生效。
IN FILE:静态参数,不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令或函数修改,但需要重启数据库才能生效。
静态参数在数据库运行期间不能修改内存中的值,动态参数在数据库运行期间可以修改内存中的值(修改后立即生效)。
3.1 使用console工具
进入/dm8/tool目录,运行./console命令,打开控制台工具。图形化界面方式修改,不管修改什么类型参数都需要重启数据库才能生效。
3.2 修改dm.ini参数文件
直接修改 dm.ini 配置文件,不管修改什么类型参数都需要重启数据库才能生效。
js复制代码#进入数据库实例目录
cd /dm9/data/DAMENG
vim dm.ini
3.3 使用系统函数
可以用来修改静态和动态参数,但静态参数修改后需要重启数据库才能生效。
js复制代码SP_SET_PARA_VALUE:修改整型参数。
SP_SET_PARA_DOUBLE_VALUE:修改浮点型参数:
SP_SET_PARA_STRING_VALUE:修改字符型参数:
SCOPE:修改范围(0:memory;1:both;2:spfile)
#修改静态参数
sp_set_para_vaule(2,'COMPATIBLE_MODE',0)
#修改动态参数
sp_set_para_vaule(1,'LIST_TABLE',0)
3.4 使用alter system set语句修改
可以用来修改静态和动态参数,但静态参数修改后需要重启数据库才能生效。
js复制代码alter system set '参数名'='参数值' both | spfile | memory;
alter system set 'COMPATIBLE_MODE'=2 spfile;
4.表空间管理
4.1 管理表空间
4.1.1 创建表空间
js复制代码create tablespace 表空间名 datafile '数据文件路径' SIZE 数据文件大小(单位为mb);
create tablespace dbtbs datafile 'DMTBS01.DBF' SIZE 32;
DM 数据文件大小,最大值不能低于页大小的 4096 倍(如果页大小是 8K,最小值将不低于 32M),最大值为页大小的 2 的 31 次方-1(如果页大小是 8K,最大值为 16T-1)。
4.1.2 表空间联机、脱机
js复制代码#表空间脱机(SYETEM、ROLL、TEMP表空间不能脱机。表空间脱机后,该表空间中的数据将不能读写。)
alter tablespace tbs offline;
#表空间连接
alter tablespace tbs online;
4.1.3 修改表空间大小
js复制代码#修改表空间开启自动增长,增长步长,最大表空间
alter tablespace 表空间名 datafile '数据文件路径' autoextend on next 增长步长 maxsize 文件最大值
alter tablespace dmtbs datafile 'DMTBS01.DBF' autoextend on next 2 maxsize 10240;
4.1.4 增加表空间文件
js复制代码alter tablespace 表空间名 add datafile '数据文件路径' size 数据文件大小(单位为mb);
alter tablespace dmtbs add datafile 'DMTBS02.DBF' size 64;
4.1.5 删除表空间
js复制代码drop tablespace tbs;
4.1.6 自定义表空间空间数据迁移
js复制代码#线将表空间置位脱机状态
alter tablespace tbs offline;
alter TABLESPACE tbs RENAME DATAFILE 'TBS01.DBF' TO '/dm8/data/DM/TBS/TBS01.DBF';
alter TABLESPACE tbs RENAME DATAFILE 'TBS02.DBF' TO '/dm8/data/DM/TBS/TBS02.DBF';
alter tablespace tbs online;
4.1.7 图形化界面操作表空间
表空间操作界面位于DM管理工具中。
4.2 管理重做日志文件
重做日志包含联机日志和归档日志(数据库在归档模式下才会产生归档日志文件)。
联机重做日志:存放 redo 信息,循环使用,不断覆盖。
联机日志 v$rlog 中记录有日志序列号(LSN: Log Sequence Number)
DM 数据库联机日志自动切换,不能手工切换。DM 联机日志没有日志组。
4.2.1 修改联机日志文件大小
js复制代码alter database RESIZE LOGFILE '/dm8/data/DM/DM01.log' TO 300;
alter database RESIZE LOGFILE '/dm8/data/DM/DM02.log' TO 300;
4.2.2 添加联机日志文件
js复制代码alter DATABASE ADD LOGFILE '/dm8/data/DM/DM03.log' SIZE 300;
4.2.3 修改联机日志文件路径
js复制代码#先将数据库置位mount状态
alter database mount;
alter database RENAME LOGFILE 'DM01.log' TO '/dm8/data/DM/REDO/DM01.log';
alter database RENAME LOGFILE 'DM02.log' TO '/dm8/data/DM/REDO/DM02.log';
alter database RENAME LOGFILE 'DM03.log' TO '/dm8/data/DM/REDO/DM03.log';
alter database open;
4.2.4 图形化界面管理联机日志
联机日志管理操作界面位于DM管理工具中。
4.3 归档管理
默认情况下,达梦数据库运行在非归档模式下。
归档是对 REDO 日志的归档。归档的目的是使数据库故障时可以恢复到故障的前一刻(完全恢复),或者恢复到指定的时间点或指定 LSN(Log Sequence Number)(不完全恢复)。
4.3.1 开启归档
js复制代码alter database mount;
alter database ARCHIVELOG;
alter database ADD ARCHIVELOG 'type=local,dest=/dm8/arch, file_size=64,space_limit=10240';
alter database open;
4.3.2 查看归档配置
js复制代码select arch_mode from v$database;
select * from v$dm_arch_ini;
4.3.3 修改归档配置
js复制代码alter database modify archivelog 'type=local, dest=/dm8/arch, SPACE_LIMIT=20480';
4.3.4 关闭归档
js复制代码alter database mount;
alter database noarchivelog;
alter database delete archivelog 'type=local,dest=/dm8/arch';
alter database open;
4.3.5 图形化界面管理归档
归档管理操作界面位于DM管理工具中。
5.用户管理
DM 默认的预定义用户:
SYS:系统内置用户,不允许登录。
SYSDBA:系统管理员,拥有几乎所有权限(除审计和强制访问控制)
SYSAUDITOR:系统审计管理员,具有审计相关权限。
SYSSSO:系统安全管理员,具有强制访问控制等权限;
SYSDBO:安全版本才有的用户,安全操作员。
5.1 用户管理
5.1.1 SQL管理用户
js复制代码create user 用户名 identified by 密码 default tablespace 表空间名;
#创建用户
create user hrtest IDENTIFIED by dameng123;
#创建用户指定默认表空间
create user hrtest IDENTIFIED by Dameng123 DEFAULT TABLESPACE TBSTEST;
#用户锁定和解锁
alter user hr ACCOUNT UNLOCK;
alter user hr ACCOUNT LOCK;
#修改用户默认表空间
alter user hr DEFAULT TABLESPACE dmtbs;
5.1.2 修改密码管理策略
PWD_POLICY(隐含参数,不在 dm.ini 中)参数指定系统的口令策略,默认为 2;
系统支持的口令策略有:
0 无策略
1 禁止与用户名相同
2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
4 至少包含一个大写字母(A-Z)
8 至少包含一个数字(0-9)
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。
PWD_POLICY 是隐含参数,PWD_POLICY,只能通过函数或 SQL 语句修改。
js复制代码#查询系统口令策略
select * from v$parameter t where t.name = 'PWD_POLICY';
#修改系统口令策略:
alter SYSTEM set 'PWD_POLICY' = 15 BOTH;
5.1.3 图形化界面管理用户
用户管理界面位于DM管理工具中。
5.2 权限管理
js复制代码#授予创建表权限
grant create table to hrtest;
#授予查询权限
grant select on dmhr.employee to hrtest;
#授予查询权限精确到列
grant select (employee_id, employee_name) on dmhr.employee to hrtest;
#回收权限
revoke select on dmhr.employee from hrtest;
#查看当前用户拥有的权限
select * from session_privs;
图形化界面操作参考用户创建中的系统权限和对象权限操作。
赋予对象权限增加 with grant option 说明权限可以转授,回收时要增加 cascade 关键字级联回收权限,否则报错
5.3 角色管理
角色是权限的集合,角色使权限管理更加方便。
DBA:具有几乎所有权限(除审计和强制访问控制之外),默认赋给 SYSDBA 用户。
PUBLIC:具有对当前模式下对象的 DML 数据操作权限。
RESOURCE:具有在当前模式下对象定义权限(创建表、索引、视图等);
SOI:具有查询 sys 开头系统表的权限;
VTI:具有查询 v$开头的动态视图权限(动态视图记录在v$dynamic_tables,如果没有此权限,DM 管理工具上会报没有查询 v$视图权限)
DB_AUDIT_开头的角色是审计相关角色,具有审计相关权限,默认赋给 SYSAUDITOR。
DB_POLICY_开头的角色是安全相关角色,具有强制访问控制等权限,默认赋给 SYSSSO。
5.3.1 SQL管理角色
js复制代码#创建角色
create role r1;
#为角色赋予创建表权限
grant create table to r1;
#为角色赋予查询表权限
grant select on dmhr.department to r1;
#将角色赋予用户
grant r1 to hrtest;
5.3.2 图形化界面管理角色
角色管理操作界面位于DM管理工具中。
模式定义:模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干对象的对象集
模式对象: 表、视图、约束、索引、序列、触发器、存储过程/函数、包、同义词、类、域
模式与用户之间的关系:
当系统建立一个用户时,会自动生成一个同名的模式
用户还可以建立其他模式,DM 中用户和模式是一对多的关系,一个用户可以拥有多个模式,
一个模式仅能归属于一个用户。Oracle 中用户和模式是一对一的关系。
6.1.1 SQL管理模式
js复制代码#创建模式
create schema hrtest01 AUTHORIZATION HRTEST;
create table hrtest01.t_test(id int, name varchar(20));
#查看当前模式和当前用户
select sys_context('USERENV','CURRENT_SCHEMA');
select sys_context('USERENV','CURRENT_USER');
select user;
#切换模式(仅对当前会话生效)
set SCHEMA dmhr;
#删除模式
drop SCHEMA IF EXISTS HRTEST01;
6.1.2 图形化界面管理模式
模式管理操作界面位于DM管理工具中。
6.2 管理表
表包含:索引组织表、堆表、分区表、HUGE 列存储表、外部表、临时表。
DM 默认创建的是索引组织表,Oracle 默认创建的是堆表。
索引组织表和堆表的区别:
索引组织表:有且仅有一个聚簇索引键,表数据按照聚簇索引键排序(数据是有序的,插入有序),如果在创建表时未指定聚簇索引键,默认使用 rowid 为聚簇索引键。rowid 是逻辑rowid,占用存储空间,所以索引组织表比堆表占用较多空间。
堆表:数据是无序的,插入无序,堆表插入效率较高,rowid 是物理 rowid,不占用存储空间。所以堆表比索引组织表节约空间。
对聚簇索引键的范围查询,索引组织表更高效。
6.2.1 SQL管理表
js复制代码#创建表:
create table hrtest.t_testpid(
pid int,
pname varchar(20),
sex bit,
logtime datetime)
TABLESPACE dmtbs;
#CTAS方式创建表:
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
create table t_emp03 as select * from dmhr.employee where 1=0;
#添加字段:
alter table hrtest.t_testpid add column email varchar(20);
#修改字段类型:
alter table hrtest.t_testpid modify email varchar(50);
#删除字段:
alter table hrtest.t_testpid drop logtime;
#对字段添加默认值(大表不建议添加字段时给默认值,耗时很长):
alter table hrtest.t_testpid add column logtime datetime default sysdate;
#重命名表或字段:
alter table t_test rename to t_testoa;
alter table t_testoa rename column id to pid;
#对表和字段添加注释:
comment on column t_testpid.sex is 'sex. 0:female 1: male';
comment on table t_testpid is 'this is a test table';
#修改表的表空间(DM 会自动重建该表上的索引)
alter table hrtest.T_TESTPID move tablespace main;
select * from dba_tables t where t.TABLE_NAME like 'T_TEST%';
6.2.2 图形化界面管理表
表管理操作界面位于DM管理工具中。
6.3 管理约束
约束类型:
NOT NULL:非空约束
UNIQUE:唯一约束
PRIMARY KEY:主键约束 (唯一约束+非空约束)
FOREIGN KEY:外键约束
CHECK:检验约束
6.3.1 SQL管理约束
js复制代码#非空约束
alter table hrtest.t_testpid modify pname not null;
#唯一约束
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);
#主键约束
alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);
#检验约束
alter table hrtest.t_testpid add salary number(10,2);
alter table hrtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK(salary>=2100);
#外键约束(外键引用两一张表的主键或者唯一键)
alter table hrtest.t_test add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES hrtest.t_testpid(pid);
#约束的禁用和启用、删除
alter table hrtest.t_test disable CONSTRAINT fk_test_id;
alter table hrtest.t_test enable CONSTRAINT fk_test_id;
alter table hrtest.t_test drop CONSTRAINT fk_test_id;
6.3.2 图形化界面管理约束
约束管理操作界面位于DM管理工具中。
6.4 管理索引
索引类型包含:聚簇索引、二级索引、函数索引、位图索引(主要用于 OLAP 系统)、位图连接索引、全文索引、组合索引等。
索引:二级索引(B 树索引),索引的存在是为了提高查询速度。索引存放的是索引列值、聚簇索引键和 rowid。
一种数据库对象,通过指针加速查询速度,通过快速定位数据的方法,减少磁盘 I/O。
索引特点:索引与表相互独立,索引占用存储空间(如果一个表越大,其索引也会越来越大),索引相当于一个小表,索引是有序的(按照索引字段排序),在查询时服务器自动使用索引,DML操作时自动维护索引。
索引的优点:提高查询性能、减少排序。
索引的缺点:索引不是越多越好,索引会降低 DML 的效率(DML 操作需要维护索引)。
组合索引创建时要注意索引列的顺序(一般经常查询的列放在前面,等值查询列放在前面)。
6.4.1 SQL管理索引
js复制代码#创建索引
create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);
删除索引:
drop index HRTEST.ix_emp01_employeename;
6.4.2 图形化界面管理索引
索引管理操作界面位于DM管理工具中。
6.5 管理视图
普通视图(物化视图除外)中不包含数据,数据来源于基表。视图提供一个查询窗口。
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据
从数据库系统内部来看,一个视图是由 SELECT 语句组成的查询定义的虚拟表
简单视图:单表查询,不包含聚合函数、group by 等。一般可以支持 DML 操作,对视图的DML 操作都会转化为对基表的 DML 操作,DML 操作要满足基表的约束条件。
复杂视图:多表连接,包含聚合函数、group by 等。一般不支持增删改操作。
6.5.1 SQL管理视图
js复制代码#创建视图
create or REPLACE view hrtest.v_emp_salary
as
select a.DEPARTMENT_ID, sum(A.SALARY) SUM_SALARY
from dmhr.employee a
group by a.DEPARTMENT_ID
having sum(A.SALARY) > 100000;
#查询视图
select * from hrtest.v_emp_salary ;
6.5.2 图形化界面管理视图
视图管理操作界面位于DM管理工具中。
7.1.2 使用console控制台备份还原
console工具位于/dm8/tool目录下,执行./console命令即可进入。
7.2 联机备份
联机备份:数据库是启动状态,联机备份要求数据库打开归档。
备份时 AP 服务需要为启动状态。
7.2.1 SQL备份数据库
js复制代码#全量备份
backup database;
#增量备份
backup database increment;
#指定备份位置全量备份
backup database full to ONLINEBAK_01 backupset '/dm8/backup/full/ONLINEBAK_01';
#指定备份位置及基础备份集的增量备份
backup database increment BASE ON BACKUPSET '/dm8/backup/full/ONLINEBAK_01' to ONLINEBAKINCR_01 backupset '/dm8/backup/incr/ONLINEBAK_01' ;
backup database increment with BACKUPDIR '/dm8/backup/full/' to ONLINEBAKINCR_02 backupset '/dm8/backup/incr/ONLINEBAK_02' ;
7.2.2 图形化工具联机备份
联机备份工具位于DM管理工具中。
7.3 逻辑备份还原
7.3.1 使用dexp/dimp逻辑导入和导出
dexp/dimp工具位于/dm8/bin目录下。
js复制代码#全库导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y
#按用户导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=HRTEST.dmp log=HRTEST.log owner=HRTEST
#按模式导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=DMHR.dmp log=DMHR.log schemas=DMHR
#按表导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=EMPLOYEE.dmp log=EMPLOYEE.log tables=DMHR.EMPLOYEE
#全库导入
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=full.dmp log=impfull.log full=y
#按模式导入
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=DMHR.dmp log=impDMHR.log REMAP_SCHEMA=DMHR:DMTEST
7.3.2 图形化工具逻辑导入和导出
逻辑导入导出工具位于DM管理工具中。
8.2 创建作业
8.3 Job运行及日志查看
js复制代码#查看job
select * from sysjob.sysjobs;
#运行job
dbms_job.run(1640162093);
#查看job运行日志
select * from SYSJOB.SYSJOBHISTORIES2;
使用 dmdba 用户执行 isql 测试连接是否正常。
文章
阅读量
获赞