数据库安装
准备工作,检查服务器基本信息
内核2.6及以上,内存大于1G,/tmp分区大于4G
# lscpu
# cat /proc/cpuinfo
# free -h
# fdisk -l
# df -h
# uname -a
防火墙
# systemctl status firewalld
# systemctl stop firewalld
# systemctl disable firewalld
安装
1、新建用户和组,新建安装目录/dm8/,挂载iso安装文件
# groupadd dinstal
# useradd -g dinstall dmdba
# passwd dmdba
# mkdir -p /dm8
# chown dmdba:dinstall -R /dm8
# mount -o loop /opt/dm8_20220525_x86_rh6_64.iso /mnt
设置图形化,方便调用manager和console管理
# echo $DISPLAY
# xhost +
# su - dmdba
$ export DISPLAY=:0.0
$ xhost +
设置安装临时目录
# mkdir -p /opt/tmp
# chmod 777 -R /opt/tmp
$ vi .bash_profile
export DM_INSTALL_TMPDIR=/opt/tmp
$ source .bash_prof
安装
$ /mnt/DMInstall.bin
图形化界面,按照要求下一步即可
创建实例
$ /dm8/tool/dbca.sh
图形化界面,按照要求下一步即可
实例状态
$ /dm8/bin/disql sysdba
> select instance_name,status$ from v$instance;
说明
shutdown:关闭状态
mount:配置状态,可以开启归档,配置集群
open:打开状态,对外提供服务
suspend:挂起状态,只读
转换状态
> alter database mount
> alter database open
> alter database suspend
启停方式
前台启动
$ /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini
后台启停
$ /dm8/bin/DmServiceDMSERVER start
$ /dm8/bin/DmServiceDMSERVER stop
或者
# systemctl stop DmServiceDMSERVER.service
# systemctl start DmServiceDMSERVER.service
# systemctl status DmServiceDMSERVER.servic
工具介绍
sql命令行disql
完整连接方式
/dm8/bin/disql sysdba/SYSDBA@IP:PORT
/dm8/bin/disql 用户名/密码@ip 或主机名:数据库实例端口号
管理工具
$ /dm8/tool/manager
控制台
$ /dm8/tool/console
迁移工具
$ /dm8/tool/dts
DMSQL
DMSQL 是基于 SQL92 和 SQL99 标准。
配置参数
select para_name,para_value,para_type from v$dm_ini;
SESSION:会话级,动态参数,即改即生效
SYS:系统级,动态参数,即改即生效
IN FILE:静态参数,重启数据库实例生效
READ ONLY:只读参数,只能通过文本编辑器修改
修改参数:
sp_set_para_value(参数类型,参数名,参数值);
参数类型:1 为动态参数;2 为静态参数
达梦相关文件
数据文件
> select * from v$datafile
重做日志文件
> select * from v$rlogfile
只增不减,只扩不缩,默认有两个,取值范围256-2048,记录数据库发生变更的操作,循环写、可覆盖
添加重做日志文件
> alter database add LOGFILE '/dm8/data/DAMENG03.log' size 256
修改重做日志文件大小
> alter database RESIZE LOGFILE '/dm8/data/DAMENG03.log' to 300
mount后才能改名字改路径
> alter database mount
> alter database RENAME LOGFILE '/dm8/data/DAMENG03.log' to '/dm8/data/DAMENG/DAMENG03.log'
> alter database open
归档日志文件(重做日志副本)
开启归档后,重做日志覆盖前拷贝到归档路径下做副本
备份文件
.meta的文件,是备份的元数据信息,记录的是备份集的大小,备份的时间,备份的状态,备份的规模;
.bak 结尾的文件,就是备份的真实数据
表空间
SYSTEM:系统表空间,存放的是数据字典和动态性能视图的信息。
MAIN:默认表空间,新建用户时没有指定表空间,该用户的默认表空间就是 MAIN。
ROLL:回滚表空间,存放的是数据库在运行中产生的回滚记录。
TEMP:临时表空间,存放的是临时记录,排序等
>select naem,status$ from v$tablespace
创建表空间
CREATE TABLESPACE TBS DATAFILE '/dm8/data/DAMENG/TBS01.log' SIZE 32
CREATE TABLESPACE "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 80 autoextend on next 2 maxsize 10240, '/dm8/data/DAMENG/TBS02.DBF' size 80 autoextend on next 2 maxsize 10240 CACHE = NORMAL;
表空间脱机联机
select naem,status$ from v$tablespace
0:联机,1:脱机
TBS 表空间脱机:1
alter tablespace tbs offline;
TBS 表空间联机:0
alter tablespace tbs online;
表空间不够用
resize数据文件大小
alter tablespace "TEST" resize datafile '/dm8/data/DAMENG/TEST01.DBF' to 100;
添加数据文件
alter tablespace "TEST" add datafile '/dm8/data/DAMENG/TEST02.DBF' size 100;
迁移数据文件
alter tablespace "TEST" offline
alter tablespace "TEST" rename datafile '/dm8/data/DAMENG/TEST01.DBF' to '/dm8/TEST01.DBF';
alter tablespace "TEST" online
修改表空间大小
select para_name,para_value,para_type from v$dm_ini where para_name='TEMP_SIZE';
sp_set_para_value(2,'TEMP_SIZE',100)
删除表空间
drop tablespace TEST
SYSTEM、TEMP、ROLL 表空间不能被脱机、删除
用户管理
系统口令策略 PWD_POLICY
0: 无策略;
1: 禁止与用户名相同;
2: 口令长度不小于 9;
4: 至少包含一个大写字母(A-Z);
8 :至少包含 一个数字(0-9);
16:至少包含一个标xxxx
select para_name,para_value,para_type from v$dm_ini where para_name='PWD_POLICY';
sp_set_para_value(1,'PWD_POLICY',3);
新建用户时图形化界面按要求设置
修改密码
alter user "TEST" identified by "dameng123"
锁定和解锁用户
alter user test ACCOUNT LOCK;
alter user test ACCOUNT UNLOC
修改用户的默认表空间
alter user "TEST" default tablespace "MAIN";
修改用户的权限
grant CREATE INDEX to "TEST";
grant "R1" to "TEST";
删除用户
drop user TEST
授权
对象权限授予可以到列级,对象权限回收只能按表级。
revoke update on dmhr.employee from r1;
grant UPDATE("PHONE_NUM") on "DMHR"."EMPLOYEE" to "R1"
模式对象管理
表、视图、索引、存储过程、触发器、包、函数、序列、同义词等
表管理
导入sql
> start /home/dmdba/script.sql
> ` /home/dmdba/script.sql
外键约束
alter table "TEST"."TEST4" add constraint foreign key("NAME") references "TEST"."TEST3"("NAME");
增加列
alter table "TEST"."TEST1" add column("NAME" CHAR(30));
删除列
alter table "TEST"."TEST1" drop column "NAME";
禁用约束
alter table test.test5 DISABLE CONSTRAINT CONS134218864;
启用约束
alter TABLE test.TEST5 ENABLE CONSTRAINT CONS134218864 ;
删除表
drop table "TEST"."TEST5" restrict;
视图
create view ... as select ...
drop view "TEST"."VIEW_EMP"
索引
create index "DMHR"."IND_EMP" on "DMHR"."EMPLOYEE"("EMPLOYEE_NAME") ;
重建索引
ALTER INDEX DMHR.IND_EMP REBUILD;
删除索引
drop index "DMHR"."IND_EMP";
备份还原
冷备:关闭数据后备份
$ /dm8/bin/DmServiceDMSERVER stop
$ mkdir /dm8/backup
$ /dm8/bin/dmrman
> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup'
备份工具是console
热备
开启归档
> alter database mount;
> alter database archivelog;
> alter database add archivelog 'DEST=/dm8/arch, TYPE=LOCAL, FILE_SIZE=64, SPACE_LIMIT=0';
> alter database open
$ /dm8/bin/DmServiceDMSERVER restart
备份工具是manager
命令行disql
> backup database full;
指定路径
>backup database full backupset '/dm8/backup1'
表空间只能热备
备份工具是manager
命令行disql
> backup tablespace main ful
指定路径
> backup tablespace main full backupset '/dm8/backup'
表备份
> backup table dmhr.department;
备份到指定路径:
> backup table dmhr.city backupset '/dm8/backup/'
整库还原恢复 ,需关闭数据库
校验备份集
$ /dm8/bin/dmrman
> check backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_20230214_215557_671740'
consloe工具还原步骤:1、还原 2、通过归档恢复 3、更新magic 4、启动数据库
命令行还原恢复
$ /dm8/bin/dmrman
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic
表空间还原恢复
console还原 1、还原 2、通过归档恢复
命令行还原:
$ /dm8/bin/dmrman
RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace MAIN from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace main
逻辑备份
manger工具导入导出,整库、用户、模式、表 等级别的导出
命令导入导出 dexp/dimp
将 DMHR 模式数据导入到 TEST 模式
REMAP_SCHEMA参数配置
$ /dm8/bin/dimp sysdba/Dameng123 DIRECTORY=/dm8/backup FILE=table.dmp REMAP_SCHEMA=DMHR:TEST LOG=imp.log
DM8开发
tar -xvf unixODBC-2.3.0.tar.gz
./configure
make && make install
cd /usr/local/etc/
vi odbcinst.ini
vi odbc.ini
[root@localhost etc]# cat odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Damengdba
TCP_PORT = 5236
[root@localhost etc]# cat odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so