一. 安装达梦数据库
Df –h—temp 如果小于1G,就扩大:
Mount –o remount , size=2G /temp
建用户组: groupadd dinstall
建用户: cd
查看用户信息:id dmdba
设置用户密码:passwd dmdba
新建安装路径:mkdir /dm8
(可省)查看文件夹信息: ls –ld /dm8
更改文件夹(包括子文件)的所属用户: chown –R dmdba:dinstall /dm8
查看最大可打开文件数:ulimit –n
设置最大可打开文件数(牵涉到数据库连接数限制):vim/etc/security/ limits.conf
扩大TEMP控件,至少1.5G:mount -o remount,size=2G /tmp
让其他用户图形化接入主机: xhost +
(一定要)查看DISPLAY变量: echo $DISPLAY
切换用户: su – dmdba
DISPLAY变量: export DISPLAY=IP:前面查出来的值
切换到安装包所在文件夹: cd /opt
如果安装包是iso镜像文件需要用root用户挂载
新建一个空的挂载目录: mkdir /mnt/dm
挂载到空目录: mount /opt/dm8_20220525_x86_64.iso /mnt/dm
查看挂载文件夹内容:cd /mnt/dm
安装文件是DMInstall.bin(如果考试给的就是这个文件就不需要挂载)
切换用户: su – dmdba
1.命令行安装(注意安装目录的选择):./DMInstall.bin -i
2.图形化界面安装(注意安装目录的选择): ./DMInstall.bin
最后安装提示用root执行脚本
二. 创建数据库(注意按要求实施数据库名、实例名、端口、簇和页大小)
切换到tool文件夹:cd /dm8//tool
1.图形化界面(数据库配置助手,默认自动注册数据库服务)创建: ./dbca.sh
2.命令行创建(创建完还要手动注册数据库服务):
切换到bin文件夹:cd /dm8/bin
查看命令参数:./dminit help
命令行创建脚本: ./dminit path=/dm8/data db_name=DMOA instance_name=DMOASVR port_name=5238 sysdba_pwd=dameng123
查看关键字相关的所有进程:ps –ef |gref dmserver
注册数据库服务:
切换到tool文件夹:cd /dm8//tool
1.图形化界面(数据库配置助手): ./dbca.sh
提示用root执行脚本;
2.用命令行注册数据库服务,注册要启动服务
要用root用户
切换到script文件夹下的root文件夹:cd /dm8/script/root
(可省)查看命令使用帮助: ./dm_service_install.sh -h
执行命令: ./dm_service_install.sh –t dmserver –p DMOASVR –dm_ini /dm8/data/DMOA/dm_ini
启动服务
/dm8/bin /DmServiceDMOASVR Start
(不考)卸载(删除)数据库服务:
cd /dm8/script/root/
ll
./dm_server_uninstaller.sh –n DmServiceDMOASVR
(不考)卸载数据库
在DM8目录下执行./uninstall.sh
卸完要删除dm8下文件
在DM8 目录下 rm –rf *
*
三. 数据库连接(用dmdba)
(可省)配置环境变量:
cd
vim .bash_profile
i
export PATH=”$PATH:$DM_HOME/bin: $DM_HOME/tool”
export DISPLAY=:0.0
配置disql的上下翻滚(要安装包):
alias disql=”rlwrap disql”
alias dmrman=”rlwrap dmrman”
:wq
使环境变量生效:source .bash_profile
Disql完整写法(用‘“密码”’来转义特殊字符): disql 用户名/‘’“密码”‘’@IP:端口
如果是IPV6:disql 用户名/‘’“密码”‘’@[IPv6%网络名]:端口
注意特殊字符密码要用‘“ ”’转义
例如:cd /dm8/bin
./disql SYSDBA/SYSDBA@192.168.31.124:5236 本机可以省略@ip
如果已经连接本机,可以使用 conn命令连其他数据库
Conn SYSDBA/SYSDBA@192.168.31.124:5236 本机可以省略@ip
(可省)配置连接串,配置后disql可以写成:disql 用户名/‘’“密码”‘’@网络服务名
四. 启动数据库(4种方式)
Root两种方式(前提是必须注册了LINUX服务),只能启到open状态:
1.systemctl start|status|stop|enable|disable DmServiceDMSERVER
2.图形化:dmservice.sh(必须用root操作)
Dmdba两种方式:
(前提是必须注册了LINUX服务)
查看已经注册的服务 cd /dm8/bin
ll Dm*
查看服务状态 ./Dmservice实例名 status
关闭服务状态 ./Dmservice实例名 stop
(disql下:shutdown imediate)
开启服务状态 ./Dmservice实例名 start
只启动到mount状态:./Dmservice实例名 start mount
前台启动方式(可以没有注册linux 服务)
cd /dm8/bin
./dmserver /dm8/data/数据库名/dm.ini
Exit 就会关闭数据库
把前台开启数据库方后台:./dmserver /dm8/data/数据库名/dm.ini
&
五. 客户端工具(tool目录下)
六. 数据库参数的修改方法
select distinct type from v$parameter;
对应到Oracle的Scope
both:既修改内存中的值,也修改配置文件中的值,重启不重启都一样生效
spfile:只修改配置文件中的值,重启数据库生效
memory:只修改内存中的值,重启数据库后恢复设置前的样子
查看配置参数:
Linux命令:cd/dm8/data/DAMENG
Vim dm.ini
Disql或者管理工具:select * from v$parameter where name like’’
或者 select * from v$dm_ini where para_name like’’
修改静态参数IN FILE
SQL:alter system set ’COMPATIBLE_MODE’=4 spfile --修改兼容模式
SQL:alter system set ’BUFFER’=500 spfile --修改数据缓冲区
Normal对应参数BUFFER、Fast对应参数为FAST_POOL_PAGES、Recycle对应参数为RECYCLE、Keep对应参数为KEEP
SQL: alter system set ’MULTI_PAGE_GET_NUM’=1 spfile;—开启读多页
SQL: alter system set ‘TEMP_SIZE’=100 spfile; ----修改临时表空间的初始大小
重启数据库生效(考试也不需要重启)
修改sys动态参数SYS
SQL: alter SYSTEM set ‘ENABLE_DDL_ANY_PRIV’ = 1 both; --授 予 用 户 在 其 他 模 式 下 数 据 定 义 ( DDL ) 的 权 限
修改回滚段保留时长,单位是秒(sys动态参数SYS)
SQL: alter system set ’UNDO_RETENTION’=180 ----默认memory方式,改的是系统值sys_value(orale会把参数文件值也改掉)
alter system set ’UNDO_RETENTION’=200 BOTH —系统值和参数文件值都改
(ORACLE: alter system set ’UNDO_RETENTION’=180 SCOPE=BOTH)
alter SYSTEM set ‘PWD_POLICY’ = 15 BOTH;-----改密码策略CO
修改默认创建的表是索引组织表参数(会话参数SESSION)
SQL: alter session set ’LIST_TABLE’=1----改的是当前会话值
2. 用SQL系统函数改(不建议,参数不好记)
查看系统函数:select NAME,ID from v$ifu t where t.name like’SP_SET_PARA%’
查看系统函数的参数说明:select * from v$ifun_arg where id=
SP_SET_PARA_VALUE:修改整型参数。
SP_SET_PARA_DOUBLE_VALUE:修改浮点型参数:
SP_SET_PARA_STRING_VALUE:修改字符型参数
例如:改浮点类型函数:SP_SET_PARA_DOUBLE_VALUE(1, ‘UNDO_RETENTION’,300)
七. 表空间管理
1.操作(size单位是M)
create tablespace tbs DATAFILE ‘TBS01.DBF’ size 32;—创建表空间,可以是绝对路径
数据文件大小:最小—页大小的4096倍
最大:页的2的31次方减去1
修改表空间
修改表空间添加数据文件:
alter TABLESPACE tbs add DATAFILE ‘TBS02.DBF’ size 128 AUTOEXTEND on NEXT 2
MAXSIZE 20480;
修改表空间数据文件的扩展属性(SYSTEM、TEMP 表空间不允许关闭自动扩展,且不允许限制空间大小):
alter tablespace tbs DATAFILE ‘TBS01.DBF’ AUTOEXTEND on NEXT 2 MAXSIZE
20480;
alter tablespace tbs DATAFILE ‘TBS01.DBF’ AUTOEXTEND off;
修改表空间数据文件的大小:
alter tablespace tbs RESIZE DATAFILE ‘TBS01.DBF’ TO 128
将表空间脱机(只有用户自定义表空间和main、Hmain 可以脱机):
alter tablespace tbs offline;将无法新增、读写表
重命名表空间(只有用户自定义表空间可以)
alter tablespace tbs RENAME TO dmtbs;
删除表空间(只有空的用户自定义表空间可以)
drop tablespace dmtbs;
2. 查看
select * from dba_tablespaces;
select * from v$tablespace;
select * from DBA_DATA_FILES;
select * from DBA_FREE_SPACE; --数据文件剩余空间
3. 新建表,插入数据
create table t_test(id int, name VARCHAR(20)) TABLESPACE tbs;
insert into t_test(id, name) values(1, ‘aaa’);
4. 迁移自定义表空间数据文件
迁移时注意:新的表空间路径,必须是由安装数据库的用户进行创建,或者把这个文件夹授予数据库安装用户读写权限,否则会因权限问题报数据库文件路径错误
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;
有关temp表空间参数:
• TEMP_PATH:temp表空间的路径(read only)
• TEMP_SIZE:temp表空间的初始值,单位为MB (in file)
• TEMP_SPACE_LIMIT:temp表空间的空间限制,0表示不限制(sys)
八. 管理重做日志文件
重做日志:用于记录redo信息,重做日志默认为256M,数据库中的增、删、改操作都会记录redo和undo信息
redo信息写入联机日志文件,undo写入roll表空间对应的数据文件中
达梦的联机日志只支持系统自动切换,不支持手动切换(oracle支持)
数据字典:
select * from v$rlogfile;
select * from v$rlog; --cur_file表示正在使用的联机日志
修改联机日志文件大小(达梦只支持往大改,单位是M)
alter database RESIZE LOGFILE ‘/dm8/data/DM/DM01.log’ TO 300;
alter database RESIZE LOGFILE ‘/dm8/data/DM/DM02.log’ TO 300;
添加联机日志文件
alter DATABASE ADD LOGFILE ‘/dm8/data/DM/DM03.log’ SIZE 300;
修改联机日志文件路径(迁移联机日志文件)
alter database mount;
alter database RENAME LOGFILE ‘DM01.log’ TO ‘/dm8/data/DM/REDO/DM01.log’;
alter database open;
九. 设置归档
1.归档开启:
alter database mount;
alter database ARCHIVELOG;
alter database ADD ARCHIVELOG ‘type=local, dest=/dm8/arch, file_size=64, space_limit=10240’;
alter database open;
查看归档状态:
select arch_mode from v$database;
查看归档文件:
select * from v$ARCH_FILE”;
查看归档配置:
select * from v$dm_arch_ini;
修改归档的配置(修改归档空间上限):
alter database modify archivelog ‘type=local, dest=/dm8/arch, SPACE_LIMIT=20480’;
十. 用户管理
创建用户:
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;
修改用户密码:
alter user hrtest IDENTIFIED by “Dameng@123”;
删除用户:
drop user if EXISTS hr;
drop user if EXISTS hr CASCADE; --生产环境慎用
用户资源限制设置(可以直接使用 limit 子句,也可以使用 profile 来管理用户的资源限制):
alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3;–密码错误5次后锁定,每次锁定3分钟
DM 支持使用 profile 管理用户资源限制(新版本支持,2021 年 10 月以后的版本)
select * from DBA_PROFILES;
create profile profile1 limit FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3,
PASSWORD_LIFE_TIME 180;
alter user hrtest PROFILE profile1;
查看当前用户信息
select a.pid profileid, b.name profile_name, a.uid userid, c.name user_name
from SYSUSERPROFILES a, SYSOBJECTS b, SYSOBJECTS c
where a.PID = b.id
and a.UID = c.ID;
授权:
grant create any table to hrtest;
grant create any index to hrtest;
设置用户最大连接数:
Alter user 用户名 limit SESSION_PER_USER 3;
设置表级授权,要增删改必须先有select权限
Grant select on 模式名.表名 to 用户名;
角色:
select * from dba_roles;—查看角色
create role r1;
grant create table to r1;—赋予系统权限
grant select on dmhr.department to r1 with grant option; —赋予对象权限,并且可以转授
grant r1 to hrtest;
回收权限(级联):
revoke select on dmhr.employee from r2 CASCADE;
十一. 模式
select * from SYSOBJECTS t where t.“TYPE$” =‘SCH’; --查看模式
select * from SYSOBJECTS t where t.“SUBTYPE$” =‘USER’; --查看用户
–查询模式和用户的对应关系:
select a.id scheid, a.name schename, b.id userid, b.name username
from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b
where a.“TYPE$” = ‘SCH’ and a.pid = b.id;
–创建模式
create schema hrtest01 AUTHORIZATION HRTEST;
在disql执行时需要回车后再加上/再回车
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;
drop SCHEMA IF EXISTS HRTEST01 CASCADE; --级联删除模式下对象,生产环境慎用。
十二. 表(表名一定要区分大小写)
两个参数:
select * from v$parameter t where name =‘PK_WITH_CLUSTER’;—查看主键是否默认聚簇索引
select * from SYS.“V$PARAMETER” t where t.name like ‘CTAB_SEL_WITH_CONS%’;–查看复制表时会不会复制表的约束信息
客户端操作区分大小写,建议统一使用大写。否则,使用时,小写需要加双引号。创建表:
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;
数据字典:
select * from dba_tables t where t.owner=‘HRTEST’;
select * from dba_tab_columns t where t.owner=‘HRTEST’;
select t.TABLE_NAME, t.TABLESPACE_NAME from user_tables t;
select t.TABLE_NAME, t.COLUMN_NAME, t.NULLABLE from USER_TAB_COLS t;
对表和字段添加注释:
comment on column t_testpid.sex is ‘sex. 0:female 1: male’;
comment on table t_testpid is ‘this is a test table’;
select * from user_tab_comments;
select * from user_col_comments;
修改表的表空间(DM 会自动重建该表上的索引)
alter table hrtest.T_TESTPID move tablespace main;
select * from dba_tables t where t.TABLE_NAME like ‘T_TEST%’;
数据的导入
DM 在DISQL 下用 start 或都可以, Oracle 用@: SQL> start /dm8/backup/dts/t_department.sql SQL>
/dm8/backup/dts/t_department.sql
或者 disql 可以直接调用脚本:
[dmdba@KylinDCA04 backup]$ disql hr/‘“Dameng@123”’ ‘`city.sql’
可以关闭回显以提高导入效率:
SQL> set TIMING off;
SQL> set FEEDback off;
SQL> set echo off;
DM 管理工具只能使用,
后面的文件路径不能有空格,导入后需要手工 commit;
`/dm8/backup/dts/t_department.sql
十三. 约束(小写字段要加“”)下面例子没加
图形化打开报错的话,在窗口-选项下设置管理工具,“导航树节点分批加载”
非空约束
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 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“;
相关数据字典:
select * from dba_constraints t where t.owner=‘HRTEST’;
select * from DBA_CONS_COLUMNS t where t.owner=‘HRTEST’;
批量禁用外键约束:
select ‘alter table ‘||owner||’.’||table_name||’ disable constraint ‘|| t.CONSTRAINT_NAME ||’;’
from DBA_CONSTRAINTS t
where t.OWNER =‘DMTEST’ and t.CONSTRAINT_TYPE = ‘R’;
十四. 视图
–排行榜视图:
create view hrtest.v_salarytop as select emp.employee_name,
dept.department_name, emp.salary,
rank()over(order by salary desc) rank, dense_rank()over(order by salary desc) dense_rank, row_number()over(order by salary desc) rownumber
from dmhr.employee emp, dmhr.department dept
where emp.department_id = dept.department_id(+);
其中,ROW_NUMBER() 是没有重复值的排序(即使两条记录相同,序号也不重复的),不会有同名次。
DENSE_RANK() 是连续的排序,两个第二名仍然跟着第三名。
RANK() 是跳跃排序,两个第二名下来就是第四名。
十五. ODBC
odbcinst.ini:
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver =/dm8/bin/libdodbc.dso
Odbc.ini:
[DM8]
Description =DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER =localhost
UID =SYSDBA
PWD =Zqq@02-136!
TCP_PORT =5236
文章
阅读量
获赞