达梦8数据库练习过程及疑问解答
达梦8数据库练习过程及疑问解答
安装数据库前期准备工作
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
[[email protected] yum.repos.d]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[[email protected] yum.repos.d]# yum install gcc
[[email protected] yum.repos.d]# mkdir /dm8
[[email protected] yum.repos.d]# groupadd dinstall
[[email protected] yum.repos.d]# useradd -g dinstall dmdba
[[email protected] yum.repos.d]# passwd dmdba
[[email protected] /]# chown -R dmdba:dinstall /dm8
[[email protected] /]# su - dmdba
[[email protected] ~]$ vi .bash_profile
[[email protected] ~]# vi /etc/security/limits.conf
[[email protected] ~]# ulimit -n 65536
[[email protected] ~]# mount -o loop /home/dm8_setup.iso /mnt/
mount: /dev/loop0 写保护,将以只读方式挂载
[[email protected] mnt]$ ./DMInstall.bin
安装数据库
[[email protected] bin]$ ./disql sysdba/dameng123
SQL> select status$ from v$instance;
resize 重做日志文件
alter database RESIZE logfile ‘/dm8/data/DAMENG/DAMENG01.log’ to 300
alter database RESIZE logfile ‘/dm8/data/DAMENG/DAMENG02.log’ to 300
alter database add logfile ‘/dm8/data/DAMENG/DAMENG03.log’ size 300;
开启归档模式
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.763. 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 6.130(毫秒). 执行号:0.
SQL> alter database add archivelog ‘type=local,dest=/dm8/arch,file_size=80,space_limit=0’;
操作已执行
已用时间: 4.285(毫秒). 执行号:0.
SQL>select name,arch_mode from v$database;
创建表空间
create tablespace test datafile ‘/dm8/data/DAMENG/TEST01.DBF’ size 20;
create tablespace TBS datafile ‘/dm8/data/DAMENG/TEST01.DBF’ size 50 autoextend on next 2 maxsize 1024 CACHE=NORMAL;
添加数据文件
alter tablespace TBS add datafile ‘/dm8/data/DAMENG/TBS02.DBF’ size 40 autoextend on next 1 maxsize 1024;
Resize数据文件
alter tablespace TBS resize datafile ‘TBS01.DBF’ to 100;
更换数据数据文件路径
alter tablespace TBS offline;
alter tablespace TBS rename datafile ‘/dm8/data/DAMENG/TBS01.DBF’ to ‘/dm8/TBS01.DBF’;
alter tablespace TBS online;
查看状态
Select a.TABLESPACE_NAME,a.STATUS from dba_tablespaces a
0 为联机状态
回滚表空间
alter tablespace ROLL add datafile ‘/dm8/data/DAMENG/ROLL02.DBF’ size 32;
alter tablespace ROLL resize datafile ‘ROLL02.DBF’ to 128;
查询
select TABLESPACE_NAME,MAXBYTES/1024/1024,INCREMENT_BY,FILE_NAME from DBA_DATA_FILES;
查看用户
select a.USERNAME,a.ACCOUNT_STATUS,a.CREATED from dba_users a;
1)创建表空间
create tablespace TBS datafile ‘/dm8/data/DAMENG/TBS01.DBF’ size 32 CACHE=NORMAL;
2)创建用户
create user TEST identified by “dameng123” limit failed_login_attemps 3, password_lock_time 1,password_grace_time 10 default tablespace TBS;
3) 授权
grant “VTI” to “TBS”;
grant CREATE TABLE,CREATE VIEW to “TEST”;
修改用户
修改用户密码
alter user test identified by Dameng123;
修改用户默认表空间
alter user “TEST” default tablespace “MAIN”;
锁定用户
alter user test account lock;
解锁用户
alter user test account unlock;
删除用户:
drop user test;
4)建表
create table test1 (id char(10) not null);
insert into test1 values(1)
角色
创建角色
create role “R1”;
grant “RESOURCE” to “R1”;
grant SELECT(“NAME”),INSERT(“NAME”),UPDATE(“NAME”) on “PERSON”.“PERSON"to"R1”; grant SELECT(“SEX”),UPDATE(“SEX”)on"PERSON".“PERSON"to"R1”;
grant SELECT(“PERSONID”) on “PERSON”.“PERSON” to “R1”;
授予角色给用户
grant “R1” to “TEST”;
撤回角色
revoke “PUBLIC” from “TEST”;
启用角色
SP_SET_ROLE(‘R1’,1)
禁用角色
SP_SET_ROLE(‘R1’,0)
删除角色
DROP ROLE R1;
建表(主键、外键)
create table test3 (id int primary key);
create table test4 (id int foreign key REFERENCES test3(id));
重命名表
alter table test5 rename to test3;
增加列:
alter table “SYSDBA”.“TEST3” add column("COLUMN_1"CHAR(10));
删除列:
alter table “SYSDBA”.“TEST3” drop column “ID”;
建视图
create or REPLACE view emp_v as select employee_id, employee_name, salary, DEPARTMENT_ID from dmhr.employee where department_id =101;(先授权DBA给TEST用户)
建索引
create index “ind_emp_name” on “TEST”.“TEST_EMP”(“EMPLOYEE_NAME”);
create index “ind_emp_name” on “用户名”.“表名”(“列名”);
select * from USER_INDEXES;
重建索引:提升数据库的性能
alter index “ind_emp_name” rebuild;
删除索引:
drop index “ind_emp_name”;
冷备(./console工具)
[[email protected]]
.
/
D
m
S
e
r
v
i
c
e
D
M
S
E
R
V
E
R
s
t
o
p
[
d
m
d
b
a
@
l
o
c
a
l
h
o
s
t
b
i
n
]
./DmServiceDMSERVER stop [[email protected]]
./DmServiceDMSERVERstop[dmdba@localhostbin]./DmAPService status
DmAPService(pid13623)isrunning.
用 dmrman进行备份,只支持冷备
cd/dm8/bin/ ./dmrman
RMAN> backup database ‘/dm8/data/DAMENG/dm.ini’ backupset ‘/dm8/backup’;
热备(./manager工具)
全备
SQL>backup database full to “DB_DAMENG_FULL_2020_TEST” backupset ‘/dm8/backup2’;
增量
SQL>backup database increment base on backupset ‘dm8/backup2’ to “DB_DAMENG_INCRE_2020_TEST” backupset ‘/dm8/backup/incr’;
表空间还原
RMAN>restore database ‘/dm8/data/DAMENG/dm.ini’ tablespace TBS from backupset ‘/dm8/backup_tablespace’;
RMAN>recover database ‘/dm8/data/DAMENG/dm.ini’ tablespace TBS;
查看数据库魔数
selelct db_magic;
数据库永久魔数
SELECT PERMANENT_MAGIC;
查看备份集db_magic
RMAN>show backupset ‘/dm8/backup_tablespace’
逻辑备份
全 库 导 出 :
[[email protected] bin]$ ./dexp sysdba/dameng123 file=full.dmp log=full.log directory=/dm8/backup full=y
用 户 导 出 :
[[email protected] bin]$ ./dexp test/dameng123 file=test.dmp log=test.log directory=/dm8/backup owner=test
导出表:
[[email protected] bin]$ ./dexp test/dameng123 file=test_1.dmp log=test_1.log directory=/dm8/backup tables=test1
全库导入:
[[email protected] bin]$ ./dimp sysdba/dameng123 file=full.dmp log=imp_full.log directory=/dm8/backup full=y TABLE_EXISTS_ACTION=REPLACE;
表导入:
[[email protected] bin]$ ./dimp test/dameng123 file=test_1.dmp log=test_1.log directory=/dm8/backup tables=test1 TABLE_EXISTS_ACTION=REPLACE;
作业
Dm8 开发
Linux 配置 odbc
用 root 配置
检查 gcc 包
[[email protected]~]#rpm-qa|grepgcc
gcc-4.8.2-16.el7.ns7.03.x86_64
[[email protected]]#tar-xvf unixODBC-2.3.0.tar.gz [[email protected]]#cdunixODBC-2.3.0/
[[email protected]]#./configure
[[email protected]]#make && makeinstall
[[email protected]]#odbcinst -j
配置文件/usr/local/etc/odbc.ini /usr/local/etc/odbcinst.ini
测试连接
用 dmdba 账户
Isql dm8
实验中遇到的问题及解决方法:
1、 如何用Xshell实现图形化操作
答:双击运行Xmanager-Passive
执行命令:export DISPLAY=IP:0.0
xhost +
2、 在rman中执行backup命令失败
答:热备backup命令要在SQL中执行。
3、有时删除备份集后,重新备份到相同目的路径,会出现“备份目录冲突“的问题。
答:可以尝试删除备份路径并重建,即可解决此问题。
4、实验尝试删除表,然后通过表空间备份集进行特定表的恢复,恢复操作执行成功,但是表没有复原。
答:无法通过表空间备份集恢复删除的表。
5、 实验尝试删除表空间(依次删除表、用户、表空间)后,通过表空间备份集恢复表空间。但提示“无效的表空间”。(图形化和命令报相同错误)
答:用表空间备份集恢复,前提是数据库中必须有对应的表空间。
6、 在数据库中有相应表空间的情况下,用之前的表空间备份集恢复。但提示“数据库魔数校验失败”。点击“更新数据库魔数”,又会提示先restore和recover。
答:此问题是由于在备份这个表空间备份集之后,做了一次全库还原,此时更新过数据库魔数,导致数据库魔数发生变更,无法再应用不同db_magic的备份集还原。