考试心得:
1、考试整体难度不高,考验熟练度,理解每个知识点,整理好,多实操。
2、考试时有图形化和命令行两种方式,建议都有所掌握。数据库初始化、物理备份用命令行会快很多,但创建用户、作业的时候用图形化可以避免出错。考试时远程连接工具的刷新率较低,稍有卡顿,但图形化工具是绝对可以用的。
3、建议先在配置文件中设置变量$DISPLAY,这样新开一个终端时就不用重新设置了。
4、考试时如果屏幕中只有左上角有图像,可以右击选择显示设置,调整分辨率,先稍微调小再调回来。
考试内容:
1、数据库安装/dm、实例创建(指定页大小、字符集、数据库密码);
2、参数修改、创建表空间、创建用户、角色、权限管理;
3、创建表、约束、导入脚本数据、索引、视图等;
4、开归档、物理备份、逻辑备份;
5、DM作业、ODBC配置等。
groupadd dinstall
useradd -g dinstall dmdba
passwd dmdba
id dmdba
mkdir /dm
chown dmdba:dinstall -R /dm
ls -ld /dm
打开两个控制台 ,一个root,一个dmdba
su - dmdba
vi ~/.bash_profile
export LD_LIBRARY_PATH="$LD_LIBARARY_PATH:/dm/bin"
export DM_HOME="/dm"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
source ~/.bash_profile
root:
xhost +
echo $DISPLAY
这里会显示 :0.0 或者 :2.0
vi ~/.bashrc
export DISPLAY=:2.0
source ~/.bashrc
检查:
echo $DISPLAY
数据库安装/dm、实例创建(指定页大小、字符集、数据库密码);
dmdba:
命令行:
./DMInstall.bin -i
图形化:
./DMInstall.bin
安装完成之后根据提示执行配置脚本
root:
/dm/script/root/root_installer.sh
注:如果tmp空间不足
dmdba:
mkdir ~/tmp
vi ~/.bash_profile
export DM_INSTALL_TMPDIR=/home/dmdba/tmp
source ~/.bash_profile
方法一、dbca图形化
也可以图形化安装数据库后,点击初始化实例直接进入dbca
[dmdba@localhost ~]$ cd /dm/tool/
[dmdba@localhost tool]$ ./dbca.sh
注意初始化参数页面不要使用滚轮,小心误操作
结束后,复制命令注册服务(三击选中该行)
root:
mv /dm/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
systemctl enable DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service
方法二、dminit命令行
dmdba:
./dminit path=/dm/data db_name=DMDB instance_name=PROD port_num=5238 page_size=8 extent_size=16 charset=1 sysdba_pwd=Dameng123 sysauditor_pwd=Dameng123
su - root
/dm/script/root/dm_service_installer.sh -t dmserver -p PROD -dm_ini /dm/data/DMDB/dm.ini
dmdba:
/dm/bin/DmServicePROD start
检查
ps -ef|grep dmserver
netstat -ntl|grep 523*
参数修改、创建表空间、创建用户、角色、权限管理;
方法一、 disql命令行
cd /dm/bin
./disql sysdba/Dameng123@localhost:5238
简写:
./disql sysdba/Dameng123
方法二、 manager图形化
配置好环境变量后使用dmdba可以直接
manager
左上角新建连接
方法一、命令行修改sp_set_para_value
sp_set_para_value(SCOPE,'参数名',参数值);
sp_set_para_value(2,'COMPATIBLE_MODE',2);
上面这条命令前面可以加select查看结果。
SCOPE:修改范围(0:memory;1:both(memory+spfile);2:spfile) 修改内存值或者修改配置文件中的值。
检查:
select PARA_NAME,PARA_VALUE,PARA_TYPE,FILE_VALUE from v$dm_ini where para_name='参数名';
select PARA_NAME,PARA_VALUE,PARA_TYPE,FILE_VALUE from v$dm_ini where para_name='COMPATIBLE_MODE';
READ ONLY:手动参数,不能通过SQL命令或函数修改;只能通过修改dm.ini文本文件 修改此参数(需要重启数据库才能生效)。
SYS:动态(系统级)参数。数据库运行中可以直接修改,即可以修改内存中的值,也可 以修改参数文件中的值。可以通过SQL命令或系统函数修改。
SESSION:动态(会话级)参数,数据库运行中可以直接修改,即可以修改内存中的值, 也可以修改参数文件中的值,还可以只修改当前会话的值。可以通过SQL命令或函数修 改,且可以只针对当前会话生效。
IN FILE:静态参数,不能修改内存中的值,只能修改参数文件中的值,可以通过SQL命 令或函数修改,但需要重启数据库才能生效。
方法二、命令行修改alter system set
ALTER SYSTEM SET ' '=1 both|memory|spfile
方法三、 console图形化工具修改参数,相当于直接修改dm.ini,只能重启服务器之后才会生效。
manager:右击表空间-新建表空间
例子:创建表空间TEST,数据文件/dm/data/DAMENG/TEST01.DBF,数据文件初始大小为32M.
create tablespace TEST datafile '/dm/data/DAMENG/TEST01.DBF' size 128 CACHE = NORMAL;
同样的地方可以修改表空间。右击表空间然后修改。
给表空间增加数据文件。
alter tablespace "TEST" add datafile '/dm/data/DAMENG/TEST02.DBF' size 128;
增加大小
alter tablespace "TEST" resize datafile 'TEST01.DBF' to 256;
脱机/联机:右击表空间,点击脱机/联机
用户-管理用户(右击)-新建用户
例子:创建用户TEST,密码Dameng123,默认表空间为TEST。该用户在登录失败 5次后,账号锁定3分钟,用户在180天后自动过期,拥有创建表、创建视图的权限,查看dmhr.employee、dmhr.department。授予TEST用户RESOURCE 角色。
create tablespace TEST datafile '/dm/data/DAMENG/TEST01.DBF' size 32 CACHE = NORMAL
create user TEST identified by "Dameng123"
limit FAILED_LOGIN_ATTEMPS 5 PASSWORD_LIFE_TIME 180 PASSWORD_LOCK_TIME 3
default tablespace "TEST";
grant "PUBLIC","RESOURCE","SOI" to TEST;
grant CREATE TABLE,CREATE VIEW to TEST;
grant SELECT on DMHR.EMPLOYEE to TEST;
grant SELECT on DMHR.DEPARTMENT to TEST;
角色(右击)-新建角色
和创建角色相似。
create role ROLEM;
grant "RESOURCE" to ROLEM;
grant CREATE TABLE,CREATE VIEW,CREATE INDEX to ROLEM;
grant SELECT (hire_date) on DMHR.EMPLOYEE to ROLEM;
grant select (employee_name) on dmhr.employee to ROLEM;
grant SELECT on DMHR.DEPARTMENT to ROLEM;
grant UPDATE (PHONE_NUM)on DMHR.EMPLOYEE to ROLEM;
将rolem 角色授予给TEST用户
grant rolem to test;
角色的禁用和启用 1:启用 0禁用
SP_SET_ROLE('ROLEM',0);
SP_SET_ROLE('ROLEM',1);
修改用户密码:
alter user sysdba identified by Dameng123;
修改用户的权限:
revoke CREATE VIEW from TEST;
修改用户的状态(锁定和解锁用户):
alter user test ACCOUNT LOCK; alter user TEST ACCOUNT UNLOCK;
删除用户:
Drop user test;
创建表、约束、导入脚本数据、索引、视图等;
模式-DMHR-表(右击)-新建表
create table DMHR.EMP1
(
ID INT not null ,
NAME VARCHAR(50),
SALARY NUMBER(7, 2),
DEPTID INTEGER,
primary key("ID")
)
storage(initial 1, next 1, minextents 1, fillfactor 0)
;
alter table DMHR.EMP1 add check(salary>8000);
alter table DMHR.EMP1 add unique("NAME");
alter table DMHR.EMP1 add constraint foreign key("DEPTID") references DMHR.DEPARTMENT("DEPARTMENT_ID");
sp_tabledef('TEST','TEST3');
CREATE TABLE "DMHR"."EMP1"
(
"ID" INT NOT NULL,
"NAME" VARCHAR(50),
"SALARY" NUMBER(7,2),
"DEPTID" INTEGER,
NOT CLUSTER PRIMARY KEY("ID"),
UNIQUE("NAME"),
FOREIGN KEY("DEPTID") REFERENCES "DMHR"."DEPARTMENT"("DEPARTMENT_ID"),
CHECK(SALARY > 8000)) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE TABLE "TEST"."MAJORS"
(
"MAJOR_ID" INT NOT NULL,
"MAJOR_NAME" VARCHAR(50),
"DEPARTMENT_NAME" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("MAJOR_ID"));
CREATE TABLE "TEST"."COURSES"
(
"COURSE_ID" INT NOT NULL,
"COURSE_NAME" VARCHAR(50) NOT NULL,
"MAJOR_ID" INT,
"TEACHER_NAME" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("COURSE_ID")
FOREIGN KEY("MAJOR_ID") REFERENCES "TEST"."MAJORS"("MAJOR_ID"));
CREATE TABLE "TEST"."STUDENTS"
(
"STUDENT_ID" INT NOT NULL,
"STUDENT_NAME" VARCHAR(20) NOT NULL,
"STUDENT_SEX" VARCHAR(6),
"STUDENT_BIRTH" DATE NOT NULL,
"STUDENT_ADDR" VARCHAR(100) NOT NULL,
"STUDENT_MAJOR" INT,
NOT CLUSTER PRIMARY KEY("STUDENT_ID")
FOREIGN KEY("STUDENT_MAJOR") REFERENCES "TEST"."MAJORS"("MAJOR_ID"));
维护
增加列
alter table TEST.TEST1 add column(NAME VARCHAR(20));
修改列
alter table TEST.TEST1 modify "NAME" VARCHAR(30);
重命名列
alter table test.test1 RENAME COLUMN name to addr;
重命名表
alter table test1 rename to test6;
删除列
alter table TEST.TEST6 drop column "ADDR";
删除表:
drop table TEST.TEST6;
非空约束
alter table hrtest.t_testpid modify pname not null;
唯一约束
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);
主键约束
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);
start ().sql
create index "DMHR".IND_NAME on DMHR.EMPLOYEE("EMPLOYEE_NAME");
create index IND_STU_NAME on STUDENTS("STUDENT_NAME");
Alter index test.IND_NAME rebuild;
Alter index test.IND_NAME rebuild online;
Drop index test.IND_NAME;
create or replace view test.view_emp as
select employee_id,employee_name,salary,department_id from dmhr.EMPLOYEE where department_id=101;
物化视图
CREATE MATERIALIZED VIEW ...
图形化:manager-服务器连接(右击)-管理服务器
系统管理-配置-转换
归档配置-归档-加号-添加归档配置
系统管理-打开-转换
# dmdba创建归档目录
mkdir -p /dm/arch
# 开启归档
alter database mount;
ALTER DATABASE ARCHIVELOG;
alter database add archivelog 'DEST=/dm/arch, TYPE=LOCAL, FILE_SIZE=64, SPACE_LIMIT=0, ARCH_FLUSH_BUF_SIZE=0, HANG_FLAG=1';
alter database open;
# 检查
select STATUS$ , MODE$ from v$instance;
select ARCH_MODE from v$database;
/dm/bin/DmServiceDMSERVER stop
方法一、console图形化
方法二、dmrman命令行
backup database '/dm/data/DAMENG/dm.ini' full backupset '/dm/backup/rmanbackup';
查看信息
show backupset '/dm/backup/rmanbackup' info meta;
要求:DMAP 服务是打开的,数据库实例也是打开的,数据库是归档模式
检查状态:
select name,arch_mode from v$database;
方法一、manager图形化
备份-库备份(右击)-新建库备份
全备
出现这个是因为备份目录不是默认的目录,不影响,忽略即可
增备
方法二、disql
backup database full backupset '/dm/backup/fullbak02';
backup database increment backupset '/dm/backup/icrbak02';
其他备份
备份表
backup table "TEST"."EMP" to "TAB_TEST_EMP_2022_02_23_06_03_40" backupset 'TAB_TEST_EMP_2022_02_23_06_03_40';
备份表空间
backup tablespace "STU" full to "TS_STU_FULL_2022_02_23_06_05_25" backupset 'TS_STU_FULL_2022_02_23_06_05_25';
备份归档
backup archivelog to "ARCH_2022_02_23_06_06_23" backupset '/dm/data/DAMENG/bak/ARCH_2022_02_23_06_06_23' device type disk;
dexp、dimp
方法一、图形化
manager中任意元素右击-导出dmp
方法二、dexp命令行
库级
/dm/bin/dexp sysdba/Dameng123 DIRECTORY=/dm/backup FILE=full.dmp FULL=Y
LOG=full.log
用户级
/dm/bin/dexp sysdba/Dameng123 DIRECTORY=/dm/backup FILE=test.dmp OWNER=TEST
LOG=test.log
模式级
/dm/bin/dexp SYSDBA/Dameng123 DIRECTORY=/dm/backup FILE=dmhr.dmp SCHEMAS=DMHR LOG=dmhr.log
表级
/dm/bin/dexp SYSDBA/Dameng123 DIRECTORY=/dm/backup FILE=job.dmp TABLES=DMHR.JOB LOG=job.log
第一步:代理(右击)-创建代理环境
SP_INIT_JOB_SYS(1);
作业(右击)-新建作业
案例1:新建作业JOB1,每周天,周三晚上1:00做数据库全备
添加作业步骤
新建作业调度
call SP_CREATE_JOB('JOB1',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB1');
call SP_ADD_JOB_STEP_EX('JOB1', 'B1', 6, '00000000/dm/data/DAMENG/bak', 0, 0, 0, 0, NULL, 0, '');
call SP_ADD_JOB_SCHEDULE('JOB1', 'D1', 1, 2, 1, 9, 0, '01:00:00', NULL, '2025-08-20 16:20:29', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB1');
案例2:新建作业JOB2,每周一、二、四、五、六1:00对数据库做增量备份
call SP_CREATE_JOB('JOB2',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB2');
call SP_ADD_JOB_STEP_EX('JOB2', 'B2', 6, '10000000/dm/data/DAMENG/bak', 0, 0, 0, 0, NULL, 0, '');
call SP_ADD_JOB_SCHEDULE('JOB2', 'D2', 1, 2, 1, 118, 0, '01:00:00', NULL, '2025-08-20 16:25:16', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB2');
root:
cd /opt
tar -xzvf unixODBC...tar.gz
cd ./unixODBC...
./configure
make && make install
odbcinst -j
cd /usr/local/etc/
opt目录下有模板,要修改odbcinst.ini和odbc.ini
vi odbc.ini
[dm]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236
vi odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm/bin/libdodbc.so (bin目录下和/dm/drivers/odbc/libdodbc.so两个位置都有)
su - dmdba
isql dm
SELECT S.STUDENT_MAJOR, M.MAJOR_NAME, COUNT(S.STUDENT_ID) as STUDENT_NUMBER
FROM MAJORS M
INNER JOIN STUDENTS S ON M.MAJOR_ID = S.STUDENT_MAJOR
GROUP BY S.STUDENT_MAJOR, M.MAJOR_NAME
HAVING COUNT(S.STUDENT_ID) > 15;
文章
阅读量
获赞