国产数据库之达梦DCA笔记

一、安装

1、收集信息
1.1 收集软件信息

// 操作系统
[root@localhost ~]# cat /etc/issue
NeoKylin Linux General Server release 6.0  (Dhaulagiri) 
Kernel \r on an \m
// Linux内核
[root@localhost ~]# uname -r
2.6.32-220.el6.x86_64

1.2 收集硬件信息

// CPU信息
[root@localhost ~]# cat /proc/cpuinfo
// 磁盘信息
[root@localhost ~]# fdisk -l
[root@localhost ~]# df -h

2、规划安装路径

[root@localhost ~]# mkdir /dm7

3、规划用户

// 创建用户组
[root@localhost ~]# groupadd dinstall
// 创建dmdba并指定用户组
[root@localhost ~]# useradd -g dinstall dmdba
// 给用户设置密码(我这里是dm123456)
[root@localhost ~]# passwd dmdba
// 修改安装路径的权限
[root@localhost /]# chown dmdba.dinstall -R /dm7

4、配置环境变量

[root@localhost /]# cd /home/dmdba
[root@localhost dmdba]# vi .bash_profile 
// 在.bash_profile最后增加
export DM_HOME=/dm7
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin
// 生效
[root@localhost dmdba]# source .bash_profile 

5、配置文件最大打开数量

[root@localhost dmdba]# vi /etc/security/limits.conf
// 在最后增加
dmdba soft nofile 4096
dmdba hard nofile 65536
// 查看配置(需要重启)
[root@localhost dmdba]# ulimit -a

6、准备安装包

[root@localhost /]# cd /opt/
[root@localhost opt]# mount -o loop dm7_setup_rh6_64_ent_7.6.0.197_20190917.iso  /mnt

7、安装```

[root@localhost opt]# su - dmdba
[dmdba@localhost ~]# cd /mnt

7.1 图形化安装

[dmdba@localhost mnt]$ ./DMInstall.bin 

7.2 命令行安装

[dmdba@localhost mnt]$ ./DMInstall.bin -i

二、创建实例

1、创建

// 使用dmdba用户执行
[dmdba@localhost bin]$ ./dminit path=/dm7/data/ db_name=DM01 instance_name=TEST1 port_num=5237
// 使用root用户执行
[root@localhost ~]# /dm7/script/root/dm_service_installer.sh -t dmserver -p TEST1 -i /dm7/data/DM01/dm.ini

2、连接

[dmdba@localhost bin]$ disql SYSDBA/SYSDBA@127.0.0.1:5237

三、实例管理

1、状态

  • shutdown:关闭
  • mount:配置模式
  • open:打开
  • suspend:挂起

2、状态转换

// 查看状态
SQL> select status$ from v$instance;
// open -> mount
SQL> alter database mount;
// mount -> open
SQL> alter database open;
// open -> suspend
SQL> alter database suspend;
// suspend -> open
SQL> alter database open;

四、体系结构

1、逻辑结构

  • 数据库由一个或多个表空间组成
  • 每个表空间由一个或多个数据文件组成
  • 每个数据文件由一个或多个簇组成
  • 页是数据库中最小的分配单位,也是数据库中使用的最小的IO单元

2、物理结构

  • 配置文件:dm.ini
SQL> select para_name, para_value, para_type from v$dm_ini;
SQL> sp_set_para_value(scope, para_name, para_value);
 // scope = 1 - 修改内存和配置文件
 // scope = 2 - 修改文件
  • 控制文件:dm.ctl,ctl_bak_path,ctl_bak_num
SQL> select para_name,para_value from v$dm_ini where para_name='CTL_BAK_PATH';
行号     PARA_NAME    PARA_VALUE              
---------- ------------ ------------------------
1          CTL_BAK_PATH /dm7/data/DAMENG/ctl_bak

SQL> select para_name,para_value from v$dm_ini where para_name='CTL_BAK_NUM'; 
行号     PARA_NAME   PARA_VALUE
---------- ----------- ----------
1          CTL_BAK_NUM 10

可修改控制文件备份路径和数目(关闭数据库,修改dm.ini文件)

  • 数据文件:*.dbf
SQL> select path from v$datafile;
SQL> select file_name,tablespace_name from dba_data_files;
行号     FILE_NAME                   TABLESPACE_NAME
---------- --------------------------- ---------------
1          /dm7/data/DAMENG/SYSTEM.DBF SYSTEM
2          /dm7/data/DAMENG/DMHR.DBF   DMHR
3          /dm7/data/DAMENG/MAIN.DBF   MAIN
4          /dm7/data/DAMENG/TEMP.DBF   TEMP
5          /dm7/data/DAMENG/ROLL.DBF   ROLL
  • 重做日志文件:主要用于数据库的备份和恢复
SQL> select path from v$rlogfile;
// 增加一个日志文件,以延长数据不被快速覆盖的时间
SQL> alter database add logfile '/dm7/data/DAMENG/DM03.log' size 256;
// 调整日志文件的大小,以减少日志切换
SQL> alter database resize logfile '/dm7/data/DAMENG/DM03.log' to 500;
  • 归档文件:利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,如果没有归档日志文件,则只能利用备份进行恢复。
  • 备份文件:以bak为扩展名的文件

五、表空间

1、创建表空间

// 创建一个表空间tbs1,指定数据文件路径,初始文件大小为32M,开启自动扩展,每次扩展1M,扩展最大限制1G
// 注意:初始文件大小必须超过页大小的4096倍
SQL> create tablespace tbs1 datafile '/dm7/data/DM/tbs1.dbf' size 32 autoextend on next 1 maxsize 1024;
// 指定两个数据文件
SQL> create tablespace tbs2 datafile '/dm7/data/DM/tbs2_1.dbf' size 32 autoextend on next 1 maxsize 1024, '/dm7/data/DM/tbs2_2.dbf' size 32 autoextend on next 1 maxsize 1024;

2、删除表空间

SQL> drop tablespace tbs1;

3、维护表空间

  • 扩容
    (不推荐)resize 数据文件的大小
    (推荐)增加数据文件
SQL> alter tablespace tbs2 add datafile '/dm7/data/DM/tbs2_3.dbf' size 32 autoextend on next 1maxsize 1024;
  • 更换存储位置
// system,roll,temp不能offline
SQL>alter tablespace tbs1 offline;
SQL>alter tablespace tbs1 rename datafile '原数据文件路径' to '新数据文件路径';
SQL>alter tablespace tbs1 online;
  • 临时表空间扩容
SQL> alter tablespace roll resize datafile '/dm7/data/DM/ROLL.DBF' to 200;

六、用户

1、规划用户

  • 用户名: 一般使用字母开头,只能包含$,#,_这三个特殊符号。
  • 存储位置,表空间(tablespace)
  • 创建用户会生成一个与用户同名的模式
//  不带双引号的密码,在当前版本存储的时候会全部按照大写字母存储
SQL> create user user1 identified by "password" default tablespace tbs;

2、规划权限

SQL> select grantee,granted_role from dba_role_privs;
SQL> select grantee,privilege from dba_sys_privs;

SQL> grant create table to user1;
SQL> revoke create table from user1;
SQL> grant select on dmhr.city to user1;
SQL> revoke select on dmhr.city from user1;

3、规划角色
角色是一类权限的集合,方便管理、维护用户权限。

// 授予 user1 resource 的权限
SQL> grant resource to user1;

// 创建角色 r1
SQL> create role r1;
// 给角色 r1 赋予 select 权限
SQL> grant select on dmhr.city to r1;
// 将角色 r1 赋予 用户 user1
SQL> grant r1 to user1;

4、维护用户和角色

// 修改密码
SQL> alter user user1 identified by "password";
// 锁定账户
SQL> alter user user1 account lock;
// 查看用户状态
SQL> select username, account_status from dba_users;
// 账户解锁
SQL> alter user user1 account unlock;
// 如果账户对象下有数据则不允许直接删除
// cascade,级联删除,非常危险
SQL> drop user user 1 cascade;

七、表

1、创建表

// 非空约束
SQL> create table t1 (id int not null); 
// 唯一约束
SQL> create table t2 (id int unique); 
SQL> create table t3 (id int, constraint t3_u unique(id));
// 外键约束
SQL> create table t4 (id int, constraint t4_pri primary key(id)); 
// 检查约束
SQL> create table t5 (id int, check(id>=6));
SQL> create table t6 (name varchar(20) check(name<>'abc'));
// 参考约束
SQL> create table t7 (pid int primary key, sid int);
SQL> create table t8 (cid int primary key, pid int foreign key references t7(pid));
// 查看约束
SQL> select table_name, constraint_name, constraint_type from user_constraints;
// 表备注
SQL> comment on table t8 is 'xxx';
// 查看表备注
SQL> select table_name, comments from user_tab_comments;
// 列备注
SQL> comment on column t8.cid is 'xxx';
// 查看列备注
SQL> select table_name, column_name, comments from user_col_comments;

2、维护表

// 增加列
SQL> alter table t1 add name varchar(10);
SQL> alter table t1 drop name;
// 插入数据
SQL> insert into t1 values(1,'aaa');
SQL> commit;
// 脚本插入数据
SQL> start /home/dmdba/test.sql;
// 更新数据
SQL> update t2 set id=2 where rowid=2;
// 删除数据
SQL> delete from t2 where id=2;
// 清空表的数据
SQL> delete from t2;
// 简单查询
SQL> select (*|列名|表达式||别名||去重distinct||连接) from ();
// 过滤查询
SQL> select () from () where(比较运算,位运算,like,IS NULL,IS NOT  NULL,in,between.. and);
// 排序查询
// order by desc, asc
// 分组查询
// sum,avg,min,max,count
SQL>select department_id,avg(salary) from employee group by department_id having avg(salary) > 15000;
// 子查询
// 单行子查询
SQL> select employee_name,salary from employee where salary = (select salary from employee where employee_name=''Ma);
// 多行子查询
SQL> select employee_name,salary from employee where salary > all (select salary from employee where department_id=1002);
// 多表查询
// 内连接
SQL> elect e.employee_name,d.department_name from employee e, department d where e.department_id=d.department_id;
// 外连接
SQL> select e.employee_name,d.department_name from employee e left join department d on e.department_id=d.department_id;

八、视图

// 创建视图
SQL> create view v1 as select * from city;
// 修改视图
SQL> create or replace view v1 as select city_name from city;
// 删除视图
SQL> drop view v1;

九、索引

// 创建表
SQL> create table emp as select * from employee;
// 创建索引
SQL> create index ind_emp on emp(employee_id);
// 更新统计信息
SQL> begin
dbms_stats.gather_table_stats('DMHR', 'EMP');
end;
/
// 对表做增删改,索引产生碎片,更新索引
SQL> alter index ind_emp rebuild;(锁表)
SQL> alter index ind_emp rebuild online;
// 删除索引
SQL> drop index ind_emp;

十、备份与还原

1、冷备份(可能造成数据丢失)

  • 数据库关闭
  • 开启dmap服务,如管道已存在,删除/dm7/bin/DM_PIPE_DMAP_LSNR_*文件
  • /dm7/bin/dmrman下,backup database ‘…/dm.ini’ backupset ‘备份路径’;
  • 数据库启动

2、冷还原

  • 数据库关闭
  • /dm7/bin/dmrman下,restore database ‘…/dm.ini’ from backupset ‘文件夹’;
  • /dm7/bin/dmrman下,recover database ‘…/dm.ini’ from backupset ‘文件夹’;
  • 数据库启动

3、热备份和还原

  • 查询归档模式
SQL> select arch_mode from v$database;
  • 开启归档
// 数据库配置模式
SQL> alter database mount;  
// 配置归档文件
SQL> alter database add archivelog 'type=local,dest=/dm7/arch,file_size=64,space_limit=0';  
// 打开归档
SQL> alter database archivelog; 
// 数据库打开模式
SQL> alter database open;  
  • 备份
// 数据库备份
SQL> backup database backupset '/dm7/backup/db_bak'; 
// 表空间备份
SQL> backup tablespace dmhr backupset '/dm7/backup/dmhr_bak';  
// 表备份
SQL> bakcup table dmhr.employee backupset '/dm7/bakcup/emp_bak';  
// 归档备份
SQL> bakcup archivelog backupset '/dm7/backup/arch_bak';  
  • 还原
// system表空间损坏,先初始化数据库,再利用整个备份还原(dmrman)
// roll表空间损坏,利用备份还原(dmrman)
// 其他损坏,利用备份还原
SQL> alter tablespace dmhr offline;
SQL> restore tablespace dmhr from backupset '/dm7/backup/db_bak';
SQL> alter tablesapce dmhr online;

4、逻辑备份

SQL> dexp sysdba/SYSDBA file=/dm7/backup/emp.dmp tables=dmhr.emp
SQL> dimp sysdba/SYSDBA file=/dm7/backup/emp.dmp tables=dmhr.emp

十一、作业

1、初始化代理
2、创建作业
3、创建步骤
4、创建调度
5、提交作业

// 查看作业执行状况
SQL>select * from "SYSJOB"."SYSJOBHISTORIES";

十二、开发

1、JDBC

String jdbcString = "dm.jdbc.driver.DmDriver"; //驱动
String urlString = "jdbc:dm://ip:5236"; //连接
String userName = "";
String password = "";

2、ODBC

  • 安装unixODBC-2.3.0.tar.gz
./configure
make
make install
  • 查询配置文件路径
// DSN配置文件odbc.ini
odbc_config –odbcini
// 驱动配置文件odbcinst.ini
odbc_config –odbcinstini
  • 修改配置文件
// odbc.ini					
[dm]                     
Description = DM ODBC DSN
Driver = DM7 ODBC DRIVER 
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
// odbcinst.ini
[DM7 ODBC DRIVER]
Description = ODBC DRIVER FOR DM7
Driver = /dm7/bin/libdodbc.so
  • 验证
    isql dm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值