达梦DCA 培训及考试总结

本文是DM8数据库培训及考试总结。培训为期三天,结合关系型数据库理论与DM8产品。考试为120分钟上机实操,涵盖数据库安装、实例创建等内容。培训内容包括DM8安装、实例管理、DMSQL操作、体系结构、存储结构、表空间管理等,还介绍了备份还原等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录
培训及考试总结
一、考试结果
二、培训内容
1.DM8安装
2.数据库实例创建
3.实例管理
4.DMSQL
5.DM8体系结构
6.存储结构
7.表空间管理
8.用户权限角色管理
9.模式对象管理
10.备份还原
11.作业管理
12.ODBC配置
总结
培训及考试总结
本次培训共分三天,培训内容不单单是DCA的单机安装、实例创建、库表操作等,培训内容是把关系型数据库的理论及DM8的产品结合起来讲,很实用。具体的考试则是需要个人大量的线下练习,考试总体而言都是培训讲过的内容,只要用心听,好好练习,哪怕是没有计算机基础的童鞋也能考过。

一、考试结果

考试时间:120 分钟
考试形式:上机实操
考试合格:满分 100 分,外部:70 分合格,内部 70 分合格,90 分拿证。
考试内容:数据库软件安装,数据库实例创建,参数修改,表空间创建,用户管理,创建表,数据导入,创建视图,创建索引,物理备份还原,逻辑备份,作业管理,ODBC 配置。
考试环境:麒麟10+vnc操作远程环境
考试提示:考试比较人性化,在试卷中描述如何在考试环境调用图形化界面,并设置好DISPLAY的环境变量。
图形化调用:
root下
xhost +
echo $DISPLAY
结果是:2.0
su - dmdba
export DISPLAY=:2.0

二、培训内容
1.DM8安装
    命令行安装
    本文章侧重考试描述,故与生产实际环境有些不同,生产环境需要查看网络、系统、内存、cpu等信息,符合条件才能安装。考试环境中环境的DM8安装包、数据库脚本等都已经在考试环境中搭建好,故在做详细描述。
    考试中仅让创建DM8的操作用户,而没有要求用户组,故一开始就要注意。
    1.创建用户
    [root@localhost 桌面]# useradd  dmdba
    [root@localhost 桌面]# passwd dmdba
    2.创建安装路径
    [root@localhost 桌面]# mkdir -p /dm
    [root@localhost 桌面]# chown dmdba -R /dm
    [root@localhost 桌面]# ls -ld /dm8
    drwxr-xr-x 2 dmdba dinstall 6 10 月 11 10:46 /dm8
    chmod -R 755 /dm
    3.设置环境变量
    [dmdba@localhost ~]$ mkdir -p /home/dmdba/tmp
    [dmdba@localhost ~]$ vi .bash_profile
    加入:
    export DM_INSTALL_TMPDIR=/home/dmdba/tmp
    让配置文件生效:
    [dmdba@localhost ~]$ source .bash_profile
    4.挂载iso文件
    [root@localhost opt]# mount -o loop /opt/dm8_20230104_x86_rh6_64.iso /mnt
    5.设置最大文件打开数
    root的根目录下
    vi /etc/security/limits.conf
    在最后添加四条语句,需添加的语句如下
    dmdba hard nofile 65536
    dmdba soft nofile 65536
    dmdba hard stack 32768
    dmdba soft stack 16384
    #查看是否生效
    su - dmdba
    ulimit -a 
    6.DM8安装
    此处有命令行和图形化两种方式,个人更倾向命令行,因为在安装完后还需要root下输入指令才可继续安装。
    su - dmdba 
    执行安装
    cd /mnt
    [root@localhost 桌面]# /dm8/script/root/root_installer.sh
    个人电脑的vm中会出现临时空间报错的情况,可如下解决
    #报错
    安装程序临时目录(/tmp)可用空间为476M. 安装程序需要至少800M的临时空间, 请调整临时目录的空间或设置环境变量DM_INSTALL_TMPDIR来指定安装程序的临时目录.以下解决
    mkdir /home/dmdba/tmp
    export DM_INSTALL_TMPDIR=/home/dmdba/tmp
    7.安装结束
    请以 root 系统用户执行命令:
    /dm8/script/root/root_installer.sh

----卸载

[dmdba@racdb1 ~]$ cd /dm8
[dmdba@racdb1 dm8]$ export DISPLAY=192.168.31.227:0
[dmdba@racdb1 dm8]$ ./uninstall.sh

[root@racdb1 ~]# /dm8/root_uninstaller.sh
删除DmAPService服务
Removed symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service.
删除DmServiceDMSERVER服务
Removed symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service.
[root@racdb1 ~]#
[root@racdb1 dm8]# pwd
/dm8
[root@racdb1 dm8]# rm -rf *
[root@racdb1 dm8]# pwd

---安装

[dmdba@racdb1 mnt]$ ls
DM8 Install.pdf  DMInstall.bin
[dmdba@racdb1 mnt]$ ./DMI*
解压安装程序.........
2024-04-06 18:19:22
[INFO] 安装达梦数据库...

[root@racdb1 ~]# /dm8/script/root/root_installer.sh
移动 /dm8/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务


 

 
2.数据库实例创建
        图形化实例创建
        [dmdba@localhost ~]$ cd /dm8/tool/
        [dmdba@localhost tool]$ ./dbca.sh
        此处安装考试要求设置数据库目录、实例名、端口名、簇大小等,SYSDBA的密码尤其注意,设置错误0分。
        图形化操作下一步即可,最后:
        使用 root 账号执行三个脚本文件
        [root@localhost 桌 面 ]# mv /dm8/bin/DmServiceDMSERVER.service
/usr/lib/systemd/system/DmServiceDMSERVER.service
        [root@localhost 桌面]# systemctl enable DmServiceDMSERVER.service
        [root@localhost 桌面]# systemctl start DmServiceDMSERVER.service
 
3.实例管理

1
    可以在./manager的图形化进行实例的操作
    manager
    /dm8/tool
    [dmdba@localhost tool]$ ./manager
    通过后台进程方式启动和关闭数据库
    /dm8/bin
    查看数据库进程的状态:
    [dmdba@localhost bin]$ ./DmServiceDMSERVER status
    DmServiceDMSERVER (pid 3305) is running. 关闭数据库:
    [dmdba@localhost bin]$ ./DmServiceDMSERVER stop
    启动数据库:
    [dmdba@localhost bin]$ ./DmServiceDMSERVER start
    重启数据库:
    [dmdba@localhost bin]$ ./DmServiceDMSERVER restart
    考试时,一定要注意,数据库的重启要么命令行要么图形化./console操作 
 
4.DMSQL

1
    此处有表的创建、查询等操作,需要多家练习,考试以视图方式考,但sql操作一个以单表查询和两表连接查询,考点就sql的技巧而言不是很难,但需要个人线下多家操作,熟悉sql语法。
1
5.DM8体系结构
    此处没有具体的考点,但作为科普是非常有必要了解的。
    DM 数据库是单进程多线程的架构。
    DM 数据库由:client+server 两部分构成
    DM server=数据库(狭义上)+实例
    数据库:磁盘上一堆的数据库文件,包含:配置文件、控制文件、重
做日志文件、数据文件、归档日志文件、备份文件、日志文件、事件
日志文件等。
    实例:一组后台进程/线程+共享内存
    一个实例管理一个数据库叫单实例,也叫单机环境;多个实例管理一
个数据库叫 DMDSC,DM8 目前最多支持 8 个节点 DSC。
 


6.存储结构
    此处的考点是修改动静参数。动态参数即改即生效,静态参数修改需要重启数据库生效。
    查看参数:
    select para_name,para_value,para_type from v$dm_ini;
    参数类型:
    SESSION:动态会话级参数
    SYS:动态系统级全局参数,即改即生效
    IN FILE:静态参数,修改完参数后,需要重启数据库实例生效
    READ ONLY:只读参数,只能通过 vi 的方式修改参数
    修改动态参数:
    sp_set_para_value(1,'MAL_LEAK_CHECK',1);
    修改静态参数:
    COMPATIBLE_MODE 是否兼容其他数据库模式。
    0:不兼容,
    1:兼 容 SQL92 标准,
    2:部分兼容 ORACLE,
    3:部 分兼容 MS SQL SERVER,
    4:部分兼容 MYSQL,
    5:兼容 DM6,
    6:部分兼容 TERADATA
    修改数据库的兼容模式为兼容 ORACLE 数据库
    sp_set_para_value(2,'COMPATIBLE_MODE',2);

    重做日志、添加日志文件是考试内容
    具体可manager图形化操作,数据库右键-管理数据库-重做日志即可。
    逻辑存储结构


    

    

7.表空间管理
    ./manager图形化操作
    创建表空间


    例 2,创建表空间 TEST,数据文件为/dm8/data/DAMENG/TEST01.DBF, 数据文件初始大小为 50M,数据文件开启自动扩展,每次扩展 1M,最大可扩展至 1G.
    例 3 , 创 建 表 空 间 TBS , 有 两 个 数 据 文 件 , 分 别 为/dm8/data/DAMENG/TBS01.DBF 和 /dm8/data/DAMENG/TBS02.DBF, 每个数据文件初始大小为 100M,都开启自动扩展,每次自动扩展 2M,最
大可扩展至 10G
    具体图形化操作可参考其他博文
    维护 TEMP 表空间
    修改 TEMP 表空间大小为 50M
    sp_set_para_value(2,'TEMP_SIZE',50);
 
8.用户权限角色管理
    图形化操作
    新建用户、用户拥有角色、权限均为考点
    例 1:创建用户 TEST,密码是 Dameng123,默认表空间为 TEST,该用户拥有创建表、视图、索引的权限
    例 2:创建用户 DMEMP,密码是 Dameng123,失败登录 5 次后锁定
账号 3 分钟,密码在 180 天后自动过期,该用户有创建表、创建视图
的权限。
    例 3:创建角色 ROLE1,拥有创建表、视图、索引的权限,可以查看
dmhr.employee.hire_date 、 dmhr.employee.email , 可 以 修 改dmhr.employee.phone_num,可以查看 dmhr.department 表。
create role "ROLE1";此处的表为DMHR的示例表
    修改用户、角色、权限等均可图形化操作
    图形化界面新建好表后,可图形化操作新建查询右边的打开导入数据库脚本。
 
9.模式对象管理
    图形化操作
    根据考题要求,在新建的表中互相添加外键、索引等操作。
    创建视图是核心
    创建视图的语法:
    Create view .... as select ....;
    Create or replace view ... as select ...;
    create view test.view_emp as
    select employee_name,salary,hire_date,department_id     from dmhr.EMPLOYEE where department_id=101;
    删除视图:
    drop view "TEST"."VIEW_EMP" ;
 
10.备份还原
    此处内容较多,真正掌握需要花大量的时间和深入的研究。
    整个模块的整体流程为数据库先备份-归档-还原三部。
    

        备份
        分冷备和热备,无论哪种都需要DmAPservice运行中
        生产实际中热备较多,冷备作为辅助。热备即生产过程中数据不中断的情况下进行,冷备是数据中断后进行。--冷备份需要关库,Oracle 8都不如
            冷备
            建立冷备的路径(dmdba用户新建)mkdir -p/dm8/backup
            需要关闭数据库bin下./DmServiceDMSERVER stop
            ./console执行
            备份还原-新建备份-指定新建路径

            ---增量备份还要不同的目录
            
            热备(整库备份,表空间备份)
            需要启动数据库
            需要开启数据库归档模式
            


        归档
        启动数据库bin下 ./DmServiceDMSERVER start
        查询数据库归档模式,图形化管理服务器,归档模式查看
        图形化操作./manager-系统管理+归档配置,归档路径是要求空
        select arch_mode from v$database;查看是否归档
    
        还原
        --物理还原
            库/表还原时
            1需要关闭数据库
            2数据库还原
            具体操作:./console-备份还原-还原-恢复(恢复类型选择指定归档恢复)-更新magic-数据库启动
            3应用归档日志恢复中的恢复
            4更新数据库魔数(表还原不需要操作4)
        --逻辑还原
            备份数据库对象
            full:整库
            owner用户
            schemas模式
            tables表
            逻辑备份:/dexp /dimp
            整库:
            ./manager图形化-右键导出
            导出文件和导出日志小写,文件名要正确
            数据行取消勾选,即不导数据


            用户: ----好像不行,要新建用户,再导入才行,主要是导入模式
            用户-右键导出


            模式:
            模式右键-导出


            表导出:


11.作业管理
    
    例:新建作业 JOB1,每周日 22:00 对数据库做完全备份。
    作业名注意大写
    例:新建作业 JOB2,每周一、二、三、四、五、六 22:00 对数据库做增
量备份。
 


12.ODBC配置
    命令行操作
    连接不成功,考试0分
    注意配置项的端口等详细信息
    [root@localhost opt]# tar -xvfz unixODBC-2.3.0.tar.gz
    [root@localhost opt]# cd unixODBC-2.3.0/
    [root@localhost unixODBC-2.3.0]# ./configure
    [root@localhost unixODBC-2.3.0]# make && make install
    [root@localhost unixODBC-2.3.0]# cd /usr/local/etc/
 

 
[dmdba@racdb1 ~]$ cd /dm8/bin
[dmdba@racdb1 bin]$ ./disql sysdba/SYSDBA
SQL> alter user sysdba identified by Dameng123;

[dmdba@racdb1 bin]$ isql dm8 -v
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect

--配置

[root@racdb1 etc]# cat odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236


[root@racdb1 etc]# cat odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so

[root@racdb1 etc]# 

[01000][unixODBC][Driver Manager]Can't open lib '/dm8/bin/libdodbc.so' : file not found
[ISQL]ERROR: Could not SQLConnect

root 执行会报错,是因为 root 没有配置 LD_LIBRARY_PATH 环境变量:

[root@racdb1 etc]# su - dmdba
上一次登录:六 3月 30 11:09:01 CST 2024pts/0 上
[dmdba@racdb1 ~]$ isql dm8 -v
SQL> drop table test.c;
SQLRowCount returns -1
SQL> select *from test.c;
[ISQL]ERROR: Could not SQLPrepare
SQL>  create table test.c ( a number, b number);
SQLRowCount returns -1
SQL>  insert into test.c values (1,1);
SQLRowCount returns 1
SQL> select *from test.c;
+-------------------------------------------------------+-------------------------------------------------------+
| A                                                     | B                                                     |
+-------------------------------------------------------+-------------------------------------------------------+
| 1                                                     | 1                                                     |
+-------------------------------------------------------+-------------------------------------------------------+
SQLRowCount returns 1
1 rows fetched
SQL>

 
 

--------------------------

 lscpu
  cat /proc/cpuinfo
free -m
cat /proc/meminfo
dfdf fdf asfd
df -h
df -h /tmp
rpm -qa|grep glibc


vim /etc/security/limits.conf

./dminit path=/dm8/data db_name=DMTEST  instance_NAME=DMTESTSVR sysdba_pwd=Dameng123 port_num=5238 PAGE_SIZE=16

mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
systemctl enable DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service


systemctl restart DmServiceDMSERVER.service

/dm8/bin/disql sysdba/Dameng123:5238
/dm8/bin/disql sysdba/SYSDBA:5236

 select distinct para_type from v$dm_ini;
 
 DmServiceDMSERVER
 
 
  
   14  cd /dm8
   15  sh ./uni*sh
   16  export DISPLAY=:0.0
   17  sh ./uni*sh
   19  cd /mnt
   24  ulimit -a

   28  cd bin
   33  ./dminit path=/dm8/data db_name=DMTEST  instance_NAME=DMTESTSVR sysdba_pwd=Dameng123 port_num=5238 PAGE_SIZE=16
  cd /dm8/tools
   ./dbca.sh
   ./nca.sh

   43  ./disql sysdba/Dameng123:5238
   49   vi /etc/dm_svc.conf
 
    cd /dm8/bin
    ./disql sysdba/Dameng123@DM
       ps -ef|grep dmserver

   cd /dm8/bin 
    ./DmServiceDMSERVER status
    ./DmServiceDMSERVER stop
    ./DmServiceDMSERVER start
    ./DmServiceDMSERVER status
     top
     top -Hp 27465
 


 
 
 
 

select *from v$mem_pool;
select * from V$process; --进程
select * from v$threads; --线程
select * from v$sessions;
alter tablespace system DATAFILE 'SYSTEM.DBF' AUTOEXTEND off;

alter system set 'UNDO_RETENTION'= 300 both;
select * from v$parameter t where name like 'UNDO_RETENTION';
select name, value, type from v$parameter t where name like 'TEMP%';

alter system set 'TEMP_SIZE'=1200 spfile;


alter tablespace tbs offline;
alter TABLESPACE tbs RENAME DATAFILE 'BS01.DBF' TO 'TTBS01.DBF';
alter tablespace tbs online;

create tablespace tbs DATAFILE 'TBS01.DBF' size 32;

 
select * from dba_tablespaces;
select * from DBA_DATA_FILES;
select * from v$tablespace;
select * from v$datafile;
select * from DBA_FREE_SPACE; --数据文件剩余空间

alter tablespace tbs DATAFILE 'TTBS01.DBF' AUTOEXTEND on;
alter tablespace tbs   resize  64

drop table t_test
create table t_test(id int, name VARCHAR(20)) TABLESPACE tbs;
insert into t_test(id, name) values(1, 'aaa');
insert into t_test(id, name) values(2, 'aaa');
insert into t_test(id, name) values(3, 'aaa');
insert into t_test(id, name) values(4, 'aaa');
 
insert into t_test(id, name) values(5, 'aaa');
commit;

select *from t_test;


alter tablespace tbs offline;
select * from t_test;
alter tablespace tbs online;
alter tablespace tbs RENAME TO dmtbs

create tablespace tbs DATAFILE 'TBS01.DBF' size 32;

drop tablespace TBSTEST;

create tablespace "TBSTEST" datafile '/dm8/data/DM/TBS/TBSTEST01.DBF' size 64 
autoextend on next 2 maxsize 10240, '/dm8/data/DM/TBS/TBSTEST02.DBF' size 64 autoextend 
on next 2 maxsize 10240 CACHE = NORMAL;

修改表空间

select * from DBA_DATA_FILES;
修改表空间添加数据文件:
alter TABLESPACE dmtbs add DATAFILE 'TBS02.DBF' size 128 AUTOEXTEND on NEXT 2 
MAXSIZE 20480;
修改表空间数据文件的扩展属性(SYSTEM、TEMP 表空间不允许关闭自动扩展,且不允许
限制空间大小):
alter tablespace dmtbs DATAFILE 'TTBS01.DBF' AUTOEXTEND on NEXT 2 MAXSIZE
20480;
alter tablespace dmtbs DATAFILE 'TTBS01.DBF' AUTOEXTEND off;
修改表空间数据文件的大小:
alter tablespace dmtbs RESIZE DATAFILE 'TTBS01.DBF' TO 64


数据字典:
select * from v$rlogfile;
select * from v$rlog; --cur_file表示正在使用的联机日志
修改联机日志文件大小
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;
修改联机日志文件路径(迁移联机日志文件)
alter database mount;
alter database RENAME LOGFILE 'DAMENG01.log' TO '/dm8/data/DAMENG/DM01.log';
alter database RENAME LOGFILE 'DAMENG02.log' TO '/dm8/data/DAMENG/DM02.log';
alter database RENAME LOGFILE 'DAMENG03.log' TO '/dm8/data/DAMENG/DM03.log';
alter database open;


select arch_mode from v$database; --是否开启归档
select * from SYS."V$DM_ARCH_INI"; 查看归档配置
开启归档的方法:
SQL 开启归档
归档开启:
alter database mount;
alter database ARCHIVELOG;
alter database ADD ARCHIVELOG 'type=local, dest=/dm8/arch, file_size=64, space_limit=10240';
alter database open;
查看归档配置:
select arch_mode from v$database;
select * from v$dm_arch_ini;
alter database modify archivelog 'type=local, dest=/dm8/arch, SPACE_LIMIT=20480';
SQL 关闭归档
SQL> alter database mount;
SQL> alter database noarchivelog;
SQL> alter database delete archivelog 'type=local,dest=/dm8/arch';
SQL> alter database open;
 

归档日志文件的切换和删除
数据库自动完成归档的切换,DM 支持手工切换归档;
alter SYSTEM ARCHIVE LOG CURRENT;
alter SYSTEM SWITCH LOGFILE;
alter DATABASE ARCHIVELOG CURRENT;
归档文件的删除:
select * from v$ifun t where name like 'SF_ARCHIVELOG_%';
SF_ARCHIVELOG_DELETE_BEFORE_LSN
SF_ARCHIVELOG_DELETE_BEFORE_TIME
Select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10); --删除10天前的归档日志。
针对业务繁忙期间,出现磁盘 IO 不定时繁忙的情况,因为配置了归档的空间上限(归档达
到此上限),生成新的归档日志前删除旧的归档日志文件造成了 IO 的不定时繁忙。
解决方案:配置 JOB 作业,在业务空闲期定时清理 N 天之前的归档文件。
查看归档日志文件:
select * from v$arch_file;


select * from v$parameter t where t.name = 'PWD_POLICY';
create user hr IDENTIFIED by dameng123;
修改系统口令策略:
alter SYSTEM set 'PWD_POLICY' = 1 BOTH;
create user hrtest IDENTIFIED by dameng123;

 
select * from dba_users;
select b.USERNAME,a.* from sysusers a, dba_users b where a.id = b.USER_ID;
创建用户
create user rick IDENTIFIED by Dameng123 DEFAULT TABLESPACE TBSTEST;
 
用户锁定和解锁:
alter user hr ACCOUNT UNLOCK;
alter user hr ACCOUNT LOCK;
修改用户的默认表空间:
alter user rick DEFAULT TABLESPACE dmtbs;
修改用户密码:
alter user hr identified by "Dameng@123";
删除用户:
drop user if EXISTS hr;
drop user if EXISTS hr CASCADE; --级联删除用户及用户下的对象信息,生产环境慎用
SYSDBA 的密码忘记了,有办法登录重置吗?两种前提(满足之一就可重置)。
1、用 ALTER USER 权限的其他用户登录数据库,重置 SYSDBA 的密码:
alter user sysdba identified by XXX;
2、数据库开启了操作系统认证(提前打开)
ENABLE_LOCAL_OSAUTH 参数(静态参数(隐含参数,不在 dm.ini 中),需要 DBA 权限
的用户修改,改后需重启数据库生效。)
用户资源限制
用户资源限制设置(可以直接使用 limit 子句,也可以使用 profile 来管理用户的资源限制):
alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3;
DM 支持使用 profile 管理用户资源限制(新版本支持,2021 年 10 月以后的版本)
select * from DBA_PROFILES;
create profile profile1 limit FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3, 
PASSWORD_LIFE_TIME 180;
alter user hrtest PROFILE profile1;
--查询用户使用的profile资源限制文件
select a.pid profileid, b.name profile_name, a.uid userid, c.name user_name
from SYSUSERPROFILES a, SYSOBJECTS b, SYSOBJECTS c
where a.PID = b.id 
 and a.UID = c.ID;
用户的资源限制也可以查询如下数据字典:
select * from sysusers;
 
[dmdba@KylinDCA03 ~]$ disql hrtest/'"Dameng@123"' 
SQL> conn hrtest/"Dameng@123"
也可以使用右斜杠\转义
[dmdba@localhost ~]$ disql dmoa/\"Dameng@123\"
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.162(ms)
disql V8
SQL> alter user hrtest identified by "Dameng@123";
[dmdba@localhost ~]$ disql dmoa/\"Dameng123@#\'\"

权限分为系统权限(数据库权限)和对象权限。
系统权限:CREATE TABLE、SELECTTABLE 等对某一类对象的对象操作,对象定义权限。
对象权限:精确到某一个具体对象的查询/插入/更新/删除(表)、执行(函数或过程)等权限。
赋予数据库权限(系统权限):
SQL> grant create table to rick;
 
SQL> grant select on dmhr.employee to hrtest;
操作已执行
已用时间: 0.535(毫秒). 执行号:1703.
查看当前用户拥有的权限:
select * from session_privs;
权限的回收:
SQL> revoke select on dmhr.employee from hrtest;
 
SQL> revoke create table from hrtest;
 
SQL> grant select (employee_id, employee_name) on dmhr.employee to hrtest;
 
相关数据字典:
select * from dba_sys_privs t where t.GRANTEE= 'HRTEST';
select * from dba_role_privs t where t.GRANTEE= 'HRTEST';
select * from dba_tab_privs t where t.GRANTEE= 'HRTEST';
DM 默 认 不 能 授 予 用 户 在 其 他 模 式 下 数 据 定 义 ( DDL ) 的 权 限 , 由 参 数
ENABLE_DDL_ANY_PRIV 指定,默认为 0。
grant select any table to hrtest;
select * from v$parameter t where name like '%ENABLE_DDL_ANY_PRIV%';
alter SYSTEM set 'ENABLE_DDL_ANY_PRIV' = 1 both; --开启后可正常赋予权限
grant create any table to hrtest;
 
DBA:具有几乎所有权限(除审计和强制访问控制之外),默认赋给 SYSDBA 用户。
PUBLIC:具有对当前模式下对象的 DML 数据操作权限。
RESOURCE:具有在当前模式下对象定义权限(创建表、索引、视图等);
SOI:具有查询 sys 开头系统表的权限;
VTI:具有查询 v$开头的动态视图权限(动态视图记录在 v$dynamic_tables,如果没有此权
限,DM 管理工具上会报没有查询 v$视图权限)
DB_AUDIT_开头的角色是审计相关角色,具有审计相关权限,默认赋给 SYSAUDITOR。
DB_POLICY_开头的角色是安全相关角色,具有强制访问控制等权限,默认赋给 SYSSSO。
select * from dba_roles;
create role r1;
grant create table to r1;
grant select on dmhr.department to r1;
grant r1 to hrtest;
sp_set_role('R1',1) --角色禁用和启用,禁用后角色权限将不在生效。

select * from SYSOBJECTS t where t."TYPE$" ='SCH'; --查看模式
select * from SYSOBJECTS t where t."SUBTYPE$" ='USER'; --查看用户
--查询模式和用户的对应关系:
select a.id scheid, a.name schename, b.id userid, b.name username
 from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b
where a."TYPE$" = 'SCH' and a.pid = b.id;

create schema rick1 AUTHORIZATION rick;
grant resource to rick
grant create session to rick
grant select dictionary to rick
revoke select any table from rick;
create table hrtest01.t_test(id int, name varchar(20));
--查看当前模式和当前用户
select sys_context('USERENV','CURRENT_SCHEMA');
select sys_context('USERENV','CURRENT_USER'); 或 select user;
--切换模式(仅对当前会话生效)
set SCHEMA dmhr;


set SCHEMA hrtest;
create table b ( a int);
select *from b;

DM 默认创建的索引组织表,由参数 LIST_TABLE 指定。
select * from v$parameter t where name ='LIST_TABLE';
 
select * from v$parameter t where name ='PK_WITH_CLUSTER';
SQL 管理表
创建表:
create table hrtest.t_testpid(
pid int,
pname varchar(20),
sex bit,
logtime datetime)
TABLESPACE dmtbs;
CTAS方式创建表:
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
create table t_emp03 as select * from dmhr.employee where 1=0;
--使用CREATE table as创建表时,默认不会复制表的约束信息,由参数
CTAB_SEL_WITH_CONS指定:
select * from SYS."V$PARAMETER" t where t.name like 'CTAB_SEL_WITH_CONS%';
添加字段:
alter table hrtest.t_testpid add column email varchar(20);
修改字段类型:
alter table hrtest.t_testpid modify email varchar(50);
删除字段:
alter table hrtest.t_testpid drop logtime;
对字段添加默认值(大表不建议添加字段时给默认值,耗时很长):
alter table hrtest.t_testpid add column logtime datetime default sysdate;
重命名表或字段:
alter table t_test rename to t_testoa;
alter table t_testoa rename column id to pid;
数据字典:
select * from dba_tables t where t.owner='HRTEST';
select * from dba_tab_columns t where t.owner='HRTEST';
select t.TABLE_NAME, t.TABLESPACE_NAME from user_tables t;
select t.TABLE_NAME, t.COLUMN_NAME, t.NULLABLE from USER_TAB_COLS t;
对表和字段添加注释:
comment on column t_testpid.sex is 'sex. 0:female 1: male';
comment on table t_testpid is 'this is a test table';
98 / 137
select * from user_tab_comments;
select * from user_col_comments;
修改表的表空间(DM 会自动重建该表上的索引)
alter table hrtest.T_TESTPID move tablespace main;
select * from dba_tables t where t.TABLE_NAME like 'T_TEST%';
数据的导入
DM 在 DISQL 下用 start 或`都可以, Oracle 用@:
SQL> start /dm8/backup/dts/t_department.sql
SQL> `/dm8/backup/dts/t_department.sql
或者 disql 可以直接调用脚本:
[dmdba@KylinDCA04 backup]$ disql hr/'"Dameng@123"' '`city.sql'
可以关闭回显以提高导入效率:
SQL> set TIMING off;
SQL> set feedback off;
SQL> set echo off;
DM 管理工具只能使用`, `后面的文件路径不能有空格,导入后需要手工 commit;
`/dm8/backup/dts/t_department.sql

SQL 管理约束
非空约束
alter table hrtest.t_testpid modify pname not null;
唯一约束
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);
100 / 137
主键约束
alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);
检验约束
alter table hrtest.t_testpid add salary number(10,2);
alter table hrtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK
(salary>=2100);
外键约束(外键引用两一张表的主键或者唯一键)
alter table hrtest.t_test add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES
hrtest.t_testpid(pid);
--重命名约束
alter table T_EMP RENAME CONSTRAINT pk_emp_deptid to ffk_emp_deptid;
--设置列的默认值
alter table "OA"."T_EMP" alter column "HIRE_DATE" set default (sysdate);
alter table "OA"."T_EMP" modify "HIRE_DATE" default (sysdate);
--约束的禁用和启用、删除
alter table hrtest.t_test disable CONSTRAINT fk_test_id;
alter table hrtest.t_test enable CONSTRAINT fk_test_id;
alter table hrtest.t_test drop CONSTRAINT fk_test_id;

相关数据字典:
select * from dba_constraints t where t.owner='HRTEST';
select * from DBA_CONS_COLUMNS t where t.owner='HRTEST';
102 / 137
批量禁用外键约束:
select 'alter table '||owner||'.'||table_name||' disable constraint '|| t.CONSTRAINT_NAME ||';'
from DBA_CONSTRAINTS t 
where t.OWNER ='DMTEST' and t.CONSTRAINT_TYPE = 'R';


select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');


RMAN>  backup database '/dm8/data/DAMENG/dm.ini';
backup database '/dm8/data/DAMENG/dm.ini';
[-137]:服务器正在运行或者存在其他进程正在操作同一个库
RMAN>  backup database '/dm8/data/DAMENG/dm.ini';
backup database '/dm8/data/DAMENG/dm.ini';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 558997 ...
redo pwr log collect finished
EP[0]'s cur_lsn[559004], file_lsn[559004]
Processing backupset /dm8/data/DAMENG/bak/DB_DAMENG_FULL_20240329_124053_881303
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:03.302
RMAN> restore database;
[-8301]:SQL[restore database;]第[1]行,第[16]列[;]附近出现错误[-2007]:语法分析出                                                                                     错
RMAN> restore database '/dm8/data/DAMENG/dm.ini';
[-8301]:SQL[restore database '/dm8/data/DAMENG/dm.ini';]第[1]行,第[42]列[;]附近                                                                                     出现错误[-2007]:语法分析出错
RMAN>  restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_20240329_124053_881303';
 
RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[558997], file_lsn[558997]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 402.991(ms)
RMAN>  recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

systemctl start DmServiceDMSERVER.service
ps -ef|grep dmserver


 

    
  

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值