达梦数据库使用心得总结

    技术2022-07-11  114

    达梦数据库使用心得总结

    1、先调优操作系统

    (1)ulimit -a 检查open file 最大打开数,默认是1024,需要扩充 (2)需重启方式:vi /etc/security/limits.conf ,加入下面两行 * soft nofile 102400 * hard nofile 102400 (3)不需重启方式:ulimit -HSn 102400

    2、挂在数据库镜像

    (1)cd /opt (2)mount -o loop /opt/dm8_setup.iso /mnt (3)cd /mnt ,ls -ltr

    3、初始化安装数据库

    (1)增加组:groupadd dinstall (2)增加用户:useradd -g dinstall dmdba (3)创建用户密码:passwd dmdba (4)创建数据库安装路径,并赋权:mkdir /dm8 ,chown -R dmdba:dinstall /dm8 (5)切换dmdba用户。 su - dmdba (6)配置dmdba用户环境变量: vi .bash_profile,底部加入: export DM_HOME=/dm8 export PAHT=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$DM_HOME/tool

    4、开始正式安装:

    (1)cd /opt/mnt (2)声明环境变量:export DISPLAY=127.0.0.1:2 注意后面2是vnc序号(不知道这个变量干嘛的,但是还是跑一下吧) (3)打开图形化界面:xhost + (4)执行安装命令:./DMInstall.bin (5)全部下一步执行即可,安装目录直接选dm8 (6)切换root用户:su - root (7)然后打开新的命令行,执行:/dm8/script/root/root_installer.sh,然后关闭

    5、初始化数据库

    (1)直接接着图形化界面操作,或者切换用户:su - dmdba,然后使用后台命令:./dm8/tool/dbca.sh (2)下一步下一步的操作即可,端口是5236 (3)输入自己的账号密码,选择创建上两个示例库 (4)切换root用户:su - root (7)然后打开新的命令行,执行初始化过程中的3个命令,将数据库加入操作系统服务中,然后关闭

    6、连接数据库

    (1)su – dmdba (2)非界面方式:disql sysdba/自己的密码@localhost:5236 ,如果登陆不上,就打:LOGIN,然后输入用户名密码之类 (3)界面方式:/dm/tool/manager

    7、表空间相关操作

    (1)命令创建表空间: create tablespace "TEST" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32 autoextend on next 1 CACHE = NORMAL; (2)表空间状态变更,脱机和在线: alter tablespace TEST offline; alter tablespace TEST online; (3)表空间修改大小: alter tablespace "TEST" resize datafile 'TBS01.DBF' to 64; (4)查看表空间数据文件有多少个 select FILE_NAME,STATUS,TABLESPACE_NAME from dba_data_files; (5)增加表空间数据文件: alter tablespace "TEST" add datafile '/dm8/data/DAMENG/TBS02.DBF' size 64; (6)更换数据文件存储的位置 ①:alter tablespace "TEST" offline; ②:select tablespace_name,status from dba_tablespaces; ③:alter tablespace "TEST" rename datafile '/dm8/data/DAMENG/TBS02.DBF' to '/dm8/tbs02.dbf'; ④:alter tablespace "TEST" rename datafile '/dm8/data/DAMENG/TBS02.DBF' to '/dm8/tbs01.dbf'; ⑤:alter tablespace "TEST" online; (7)临时表空间 select para_name,para_value from v$dm_ini where para_name like 'TEMP%'; (8)Roll表空间 alter tablespace roll resize datafile '/dm8/data/DAMENG/ROLL.DBF' to 256; (9)删除表空间:drop tablespace "TEST"; 实验:创建一个表空间,初始大小50M,表空间由2 个数据文件组成,分别存储在不同的位置,数据文件自动扩展,每次扩展1M,每个数据文件最大100M。 create tablespace "CESHI" datafile '/dm8/CESHI1.DBF' size 50 autoextend on next 1 maxsize 100, '/dm8/CESHI2.DBF' size 50 autoextend on next 1 maxsize 100 CACHE = NORMAL;

    8、用户相关操作

    (1)删除用户:级联删除(schema都会删除)drop user test cascade; 只删除账号:drop user test; (2)查看test用户有哪些权限:select grantee,granted_role from SYS.DBA_ROLE_PRIVS where grantee='TEST'; (3)查看public角色有哪些权限:SELECT GRANTEE,PRIVILEGE FROM SYS.DBA_SYS_PRIVS WHERE GRANTEE='PUBLIC'; 实验1:建立用户test,用户可以创建自己的表,有属于自己的表空间,用户密码要求每60 天变更一次。 create user "TEST" identified by "dameng123" limit password_life_time 60 default tablespace "TEST"; grant "PUBLIC","VTI" to "TEST"; grant CREATE TABLE to "TEST"; 实验2:规划一个用户test2,用户每60 天变更一次密码,密码尝试连接2 次失败,账号锁定5 分钟,用户能查询dmhr.employee 表 create user "TEST2" identified by "dameng123" limit failed_login_attemps 2, password_life_time 60, password_lock_time 5; grant "PUBLIC","VTI" to "TEST2"; grant SELECT on "DMHR"."EMPLOYEE" to "TEST2"; 实验3:企业招聘一批录入人员,权限固定,只能录入city 表的权限。角色:一组固定权限的集合。 create role "TESTROLE3"; grant REFERENCES ANY TABLE to "TESTROLE3"; grant INSERT on "DMHR"."CITY" to "TESTROLE3"; grant "TESTROLE3" to "TEST2";

    9、模式相关操作

    (1)创建表: create table "TEST"."STU"("ID" CHAR(10) not null,"SNAME" VARCHAR(20) not null ,primary key("ID")) storage(initial 1, next 1, minextents 1,fillfactor 0, on "STU"); comment on table "TEST"."STU" is 'STUDENT INFO'; (2)增加列:alter table DMHR.TEST add column(AGE INT); 删除列:alter table DMHR.TEST drop column AGE; (3)创建模式指定约束(先创建表) 非空约束:create table test.t1(id int); alter table test.t1 modify id int not null; 唯一约束:create table test.t3(id int, name varchar(20) unique); 主键约束:create table test.t4(id int primary key, name varchar(20)); 检查约束:create table test.t6(id int check(id>=5)); 外健约束(外键一定是其他表的主键):create table test.t9(id int primary key,sid int foreign key references test.t8(sid)); (4)列加备注:comment on column test.t8.sid is '测试'; (5)导入数据 create table test.t10(sid int); 制造数据:vi test.sql,insert into test.t10(sid) values(1);insert into test.t10(sid) values(2); 导入:在SQL模式下:SQL> start /home/dmdba/test.sql (6)重命名: alter table test.t1 rename to tt; (7)启用和禁用约束: select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS from dba_constraints where TABLE_NAME='T3'; 设置成不可用:alter table test.t3 disable constraint CONS134218845; 设置成可用:alter table test.t3 enable constraint CONS134218845; (8)删除表:drop table test.tt;

    10、视图相关操作:

    (1)创建视图: 创建语法:create view test.v1 as select * from dmhr.employee; 修改语法:create or replace view test.v1 as select employee_name from dmhr.employee limit 5; (2)删除视图:drop view test.v1; (3)查询视图:DBA_VIEWS;

    11、索引相关操作:

    (1)查看索引:select table_name,index_name from dba_indexes where table_name='STU'; (2)创建索引: 1、创建索引表空间: create tablespace index1 datafile '/dm8/data/DAMENG/index1_01.dbf' size 32; 2、 创建索引:create index ind_emp on test.emp(employee_id) tablespace index1; 3、查看执行计划:explain select * from test.emp where employee_id<20; 4、收集统计信息:begin dbms_stats.gather_table_stats('TEST','EMP'); END; 5、重建索引:alter index test.ind_emp rebuild; 6、删除索引:drop index test.ind_emp;

    12、DML语句:

    新增:insert into test.dept values('1106', 'aaaaa', '9002', 9); 删除:delete test.dept where department_id='1106'; MERGE语法:使用merge into 语法可以合并update 和insert 语句 merge into test.t1 using test.t12 on (test.t1.c1=test.t12.c3) when MATCHED THEN update set test.t1.c2=test.t12.C4 when not matched then insert (c1,c2) values (test.t12.c3,t12.c4);

    13、备份还原

    (1)热备(工具方式,先跑bin底下的 dmap服务): 1、数据库实例右键:管理服务器; 2、系统管理-配置-转换-确定 3、归档配置-归档-选择文件路径-确定 4、系统管理-打开-转换-确定 5、数据库实例-备份右键-指定工作目录 6、数据库实例-备份右键-新建备份 全量:backup database full backupset '/dm8/backup/fullbak2'; 增量:backup database increment backupset '/dm8/backup/incr_bak'; (2)还原,使用Dmrman,打开bin下的dmrman服务,弹出DMAN窗口 1、校验备份:check backupset '/dm8/backup/fullbak2'; 2、还原备份:estore database '/dm8/data/DAMENG/dm.ini' tablespace test from backupset '/dm8/backup/fullbak2'; (3)恢复表空间:recover database '/dm8/data/DAMENG/dm.ini' tablespace test; (4)重启数据库实例服务:systemctl stop DmServiceDMSERVER.service; systemctl start DmServiceDMSERVER.service; (5)冷备份(控制台) 1、用dmdba用户打开bin下面的:./console 2、备份还原-勾选掉DMAP模式-右侧新建备份 3、备份失败要关闭数据库实例服务:systemctl stop DmServiceDMSERVER.service 4、还原-恢复-更新DB_magic 5、systemctl start DmServiceDMSERVER.service; (6)逻辑备份: 导出:./dexp SYSDBA/SYSDBA@192.168.74.136:5236 file=dexp01.dmp log=dexp01.log directory=/opt/tools/dm/bakup full=y 导入:./dimp SYSDBA/SYSDBA@192.168.74.136:5236 file=/opt/tools/dm/bakup/dexp01.dmp log=/opt/tools/dm/bakup/dimp01.log SCHEMAS=TEST

    14、作业相关操作

    (1)创建代理:代理-创建代理环境 (2)作业-新建作业-输入名称-选择左侧步骤-新建步骤-选择备份任务 (3)作业调度-新建作业调度步骤-填写相关信息 (4)确定即可
    Processed: 0.010, SQL: 9