本文是从安装达梦库到使用维护的过程。
我是用的是本地虚拟机,操作系统是中标麒麟6.0,数据库版本为dm7_setup_rh6_64_ent_7.6.0.197_20190917。安装前需确认下机器的cpu,系统版本,空间存储等等是否跟安装包匹配,对于系统而言需确认是否有glibc包,避免版本问题导致出错。
装库时不建议直接使用root用户,这里创建了dmdba作为安装用户
创建dm7为安装路径,并授权给dmdba
首先挂载准备好的安装包,安装文件是DMInstall.bin,可以选择图形化安装或静默安装,图形化几乎是默认下一步即可,此处我选择静默安装。
此处记得一定要切换为之前建好的安装用户dmdba!!!
此时会提示:可打开文件数过少,建议至少设置为65536或更多。
因为我这里是单机操作,可不修改,如果是集群或生产环境建议更改为65536。key文件此处可先跳过。
接下来就是各项基础参数设置,选择时区,选择安装类型和目录。
安装结束可以看到上面有提示以root执行/dm7/script/root/root_installer.sh,新建终端,执行即可。
至此安装完毕,回到/dm7下可以看到相关配置文件。
由于此时只安装了软件并未创建数据库,所以直接执行/dm7/uninstall.sh即可。若已创建数据库,则需先停止库服务,再卸载软件。
一个数据库可以创建多个实例,而达梦则以端口号来区分各个实例,默认是5236。
执行tool下的dbca.sh以启动图形化界面
此处可设置数据库的名字端口信息
此处可看到数据文件、控制文件等位置
注意此处内容设置错误不能修改只能重新初始化实例
最后确认一遍自己设置的数据库信息是否有误
确认无误点完成,此时出现
同之前的操作新打开终端执行脚本即可
创建成功
连接disql即可查看本库信息
利用命令行创建注册语句,此方法需注意默认不会把数据库实例注册到OS,还需要手动注册数据库服务到OS。此处不再演示。
cd /dm7/bin
./dminit path=/dm7/data db_name=DM01 instance_name=TEST1 port_num=5237
利用脚本(root用户执行脚本注册服务到os)
/dm7/script/root/dm_service_installer.sh -t dmserver -p TEST1 -i /dm7/data/DM01/dm.ini
达梦数据库有四种状态:shutdown,mount(配置模式),open(打开),suspend(挂起)
查看数据库状态:
SQL> select status$ from v$instance;
修改数据库状态:
cd /etc/rc.d/init.d
service DmServiceTEST1 start 启动服务
service DmServiceTEST1 restart 重启服务
service DmServiceTEST1 stop 停止服务
service DmServiceTEST1 status 查看服务状态
打开达梦管理工具(tool下的manager)
可以看到当前存在的五个(SYSTEM、ROLL、TEMP、MAIN、大表空间 )系统表空间,其中DMHR为建库时选择创建的实示例库可忽略。
现在我们来使用管理工具新创建一个表空间TBS1
注意添加数据文件的路径,大小,是否自动扩充已以及扩充上限是多少。
接下来用disql对刚创建的表空间TBS1添加一个数据文件
SQL> alter tablespace TBS1 add datafile ‘/dm7/data/DAMENG/tbs1_02.dbf’ size 32 autoextend on next 1 maxsize 50;
通过管理工具可以看到两个数据文件创建成功
通过管理工具查看本库的用户,系统默认的管理员用户为SYSDBA
此处我们新建一个用户USER1,密码设置dameng123。表空间栏默认MAIN,此处我选定刚才创建的TBS1
资源限制这一栏,注意可以设置登陆失败次数和失败以后锁定时间
创建一个简单的包含学号、姓名、性别的学员表,注意表字段类型,长度的设置,并添加注释,对表进行增加列、修改列、删除列等操作均在此处,如图所示
建表语句如下:
create table “USER1”.“STU_INFO”
(
“STU_ID” CHAR(3),
“STU_NAME” VARCHAR2(50),
“STU_SEX” CHAR(1)
)
storage(initial 1, next 1, minextents 1, fillfactor 0)
;
comment on table “USER1”.“STU_INFO” is ‘学生信息表’;
comment on column “USER1”.“STU_INFO”.“STU_ID” is ‘学号’;
comment on column “USER1”.“STU_INFO”.“STU_NAME” is ‘姓名’;
comment on column “USER1”.“STU_INFO”.“STU_SEX” is ‘性别’;
把刚才创建的学员表封装成视图,显示列为汉字
CREATE VIEW “USER1”.“V_STU”
AS
SELECT
STU_ID “学号”,
STU_NAME “姓名”,
STU_SEX “性别”
FROM
USER1.STU_INFO;
创建STU_INFO 表的同义词AAA
CREATE SYNONYM “USER1”.“AAA” FOR “USER1”.“STU_INFO”;
直接查询AAA会报错说无效的表或视图名,因为此处直接在USER1内创建同义词是属于普通同义词,仅限本用户使用,SYSDBA不可以查询,可以切换用户查询,或直接创建公共同义词供所有用户使用。
为了加快表的查询,在对数据库做DML操作的时候,数据库会自动维护索引。索引是一棵倒置的多叉树,使用索引就是对索引树进行遍历。
给学生表STU_INFO的学号列STU_ID创建索引
需注意建完索引后最好重新收集一下统计信息,以确保新建的索引生效,可通过查看执行计划来确认。
为了安全起见数据库需要定期做备份,达梦库支持冷备和热备两种方式。由于冷备需要停止数据库服务,因此备份过程容易丢失数据,所以相比之下更推荐热备的方式。
(1)确认数据库服务和dmap服务是打开的
/etc/rc.d/init.d/DmAPService start
/etc/rc.d/init.d/DmServiceDMSERVER start
(2) 开启归档
查看是否开启归档:
SQL>select arch_mode from v$database;
右键管理服务器,切换数据库为mount状态(或者用语句切换)
添加归档日志文件的路径,并切换为归档模式
注意查看此时数据库mount状态下是无法对表视图进行操作的
切换数据库为open状态,再次查看是否开启归档
(3)创建备份
完全备份:backup database full backupset ‘/dm7/backup/full_bak_1028’;
在备份目录下也可以看到备份文件
数据库备份无比重要,可定期做全量备份,不方便的话也可定期做增量备份:backup database increment backupset ‘/dm7/backup/incr_bak_1028’;
现将刚才创建的数据文件损坏,并用刚才的全量备份对数据库进行还原
重启数据库,可以看到数据库已不正常,处于mount状态
手动open后,查看表空间状态,可以看到tbs1_01为离线状态
下面利用备份文件进行恢复
重新使tbs1在线,alter tablespace tbs1 online;
数据文件目录下也重新生成了数据文件
在生产环境中,我们会有定期备份数据库或定期收集索引统计信息等需求,作业就可以定期帮助我们执行某项任务。
环境创建好后,右键新建作业,选择作业类型,此处我选择的是备份数据库
现在对创建好的作业设置调度,每周日23点备份一次数据库
创建完成点确认,报错
这里我发现作业的调度名必须和该作业名一致,不能单独起名
至此作业创建成功,日后可通过
select * from sysjob.sysjobs; 按时巡检作业是否正常执行
针对STU_INFO表建立两个简单的存储过程。
STU_INFO表,对表进行更新或插入操作,此处需要注意单引号的作用:call DDD(004,‘参数’,1)和call DDD(‘004’,‘参数’,‘1’)会出现两种不同的结果。
带返回值的存储过程,STU_INFO表根据学号查姓名
触发器不需要调用,在执行某些操作的时候,就会自动执行。一般当表或者视图执行 增,删,改操作的时候,就会自动执行触发器中的语句。
现在新建STU_INFO的备份表STU_INFO_BAK,建立触发器当STU_INFO的数据删除时,STU_INFO_BAK的数据同步删除。
删除刚才学号为4的测试数据,操作如下图:
以上,为本人安装并使用数据库的过程!感谢阅读~( ̄▽ ̄~)(~ ̄▽ ̄)~