注册
数据库对象管理和备份还原操作
专栏/技术分享/ 文章详情 /

数据库对象管理和备份还原操作

annie 2025/12/05 121 0 0
摘要

数据库对象管理
参数修改、创建表空间、创建用户、角色、权限管理;
访问数据库
方法一、 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 vdm_ini where para_name='参数名'; select PARA_NAME,PARA_VALUE,PARA_TYPE,FILE_VALUE from vdm_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 角色。
image.png
image.png
image.png
image.png
image.png
命令行
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-表(右击)-新建表
image.png
image.png
image.png
SQL
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-服务器连接(右击)-管理服务器
系统管理-配置-转换
归档配置-归档-加号-添加归档配置
系统管理-打开-转换
image.png

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 vinstance;selectARCHMODEfromvinstance; select ARCH_MODE from vdatabase;
 
物理备份-冷备(脱机)
/dm/bin/DmServiceDMSERVER stop
方法一、console图形化
image.png
image.png
方法二、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图形化
备份-库备份(右击)-新建库备份
全备
image.png
image.png

出现这个是因为备份目录不是默认的目录,不影响,忽略即可
增备
image.png

方法二、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做数据库全备
添加作业步骤

image.png
新建作业调度
image.png
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’);
 
 
 
https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服