使用场景
备份单表或多表
# 使用system用户将test数据库中的schema01模式下t开头的表备份至/back/dump/table.dmp
sys_dump -U system -d test -f /backup/dump/table.dmp -Fc -t schema01.t*
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存路径
# -Fc 输出文件为定制
# -t 备份的数据表
备份模式
# 使用system用户将test数据库中的schema模式备份至/back/dump/schema.dmp
sys_dump -U system -d test -f /back/dump/schema.dmp -Fc -n schema01
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存路径
# -Fc 输出文件为定制
# -n 备份的模式
备份数据库
# 使用system用户将test数据库备份至/back/dump/dbidr目录下,添加插入语句,使用双并发备份
sys_dump -U system -d test -f /back/dump/dbdir -Fd --inserts -j 2
# /back/dump下的/dbdir目录不能存在,系统会自动创建
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存的路径
# -Fd 输出文件为文件夹
# --inserts 以inserts语句备份而不是默认的copy语句
备份数据到COPY格式的SQL脚本
# 使用system用户将test数据库下的schema01模式中的t01表备份至/back/dump/copy.sql
sys_dump -U system -d test -f /back/dump/copy.sql -Fp -t schema01.t01
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存的路径
# -Fp 输出文件为明文
# -t 保存的数据表
备份数据到INSERT格式的SQL脚本
# 使用system用户将test数据库下的schema01模式中的t01表备份至/back/dump/inserts.sql
sys_dump -U system -d test -f /back/dump/inserts.sql -Fp -t schema01.t01 --inserts
# -U 备份使用的用户
# -d 备份使用的数据库
# -f 保存的路径
# -Fp 数据文件为明文
# --inserts 使用inserts语句备份
只备份对象定义 不包含表数据
# 使用system用户将test数据库下的对象信息备份至/back/dump、ddl.sql
sys_dump -U system -d test -f /back/dump/ddl.sql -Fp -s
# -U 备份使用的用户
# -d 备份的数据库
# -s 只存储模式,不包含数据
# -f 保存的路径
# -Fp 数据文件为明文
从DUMP格式的备份中还原表
sys_restore -U system -d test /back/dump/table.dmp -Fc -t t0
数据完整性约束是指为了防止不符合规范的数据进入数据库,在录入数据或数据发生变化时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,是数据库中存储的数据正确、有效、相容。
表的三类完整性约束约束可以在列或者在表级定义,单列约束可以定义在列级或表级,多列约束必须定义在表级
实体完整性定义
实体完整性规则
创建表时添加主键约束
# 列级定义主键
CREATE TABLE student(
name varchar(10),
CONSTRAINT RULE_NAME PRIMARY KEY(name) # 设置主键约束:约束名为RULE_NAME,约束列为name
);
# 表级定义主键
CREATE TABLE sutent (name varchar(10),PRIMARY KEY(name));
修改表增加主键约束
ALTER TABLE student ADD CONSTRAINT pk_student_name PRIMARY KEY(name);
# 修改student表增加约束,约束名为pk_student_nmae,主键字段为name
参照完整性定义
参照完整性规则
CREATE TABLE student(
name varchar(10),
CONSTRAINT RULE_NAME FOREIGN KEY(name) REFERENCES student1 (name) # 设置外键约束:约束名为RULE_NAME,约束列为name,参照对象为student1的name列
);
修改表添加外键约束
ALTER TABLE student ADD CONSTRAINT fk_student1_name FOREIGN KEY (name) REFERENCES student1(name);
非空约束非空约束保证一个表中某列不能取空值
CREATE TABLE t1 (name varchar(10) NOT NULL);
# 限制name字段不能为空
唯一约束唯一约束保证一个表的某列或多列的值在表中所有元组间是不能重复的,但可以为空
CREATE TABLE t1 (name varchar(10) UNIQUE);
# 限制字段name不可为空
check约束限制一个特定列中的值必须要满足一个条件表达式
CREATE TABLE t1 (name varchar(10),score numeric CHECK(score>0));
# 限制字段score必须大于0
enable/disable
对新进入数据的约束检查
validate/novalidate
对现有数据的约束检查
约束控制方法
enable + validate
新插入的数据与表中现有数据均需符合约束条件,默认状态
enable + novalidate
对表中现有数据和新插入的数据都不执行完整性约束检查
disable + validate
对现有的数据执行完整性约束检查,不允许对表执行DML操作
disable + novalidate
对现有数据不执行完整性约束检查,对新插入的数据会执行检查