达梦数据库学习笔记
一、表空间管理
(一)默认表空间
SYSTEM :存储数据字典、表、字段、视图等对象的定义权限等信息。
ROLL :存储DML操作对应的undo日志信息。
MAIN :用户默认表空间,用户未指定时使用。
TEMP :存储系统运行产生的临时数据,如排序数据。
HMAIN :列存储表空间。
(二)相关数据字典
dba_tablespaces :查询数据库表空间相关信息。
dba_data_files :查询数据库数据文件信息。
v$tablespace :查询表空间信息。
v$datafile :查询数据文件相关信息。
dba_free_space :查询数据库空闲的数据文件信息。
(三)表空间操作
创建 :CREATE TABLESPACE tbs_its DATAFILE 'tbs_its01.dbf' SIZE 128;
,未指定路径时按参数存放到指定路径。
脱机 :ALTER TABLESPACE tbs_its OFFLINE;
重命名 :ALTER TABLESPACE tbs_its RENAME TO tbs1;
删除 :DROP TABLESPACE tbs1;
修改
添加数据文件 :ALTER TABLESPACE tbs_its ADD DATAFILE 'tbs_its02.dbf' SIZE 128 MAXSIZE 1024;
修改属性 :ALTER TABLESPACE tbs_its DATAFILE 'tbs_its02.dbf' AUTOEXTEND ON NEXT 2 MAXSIZE 1024;
修改大小 :ALTER TABLESPACE tbs_its RESIZE DATAFILE 'tbs_its02.dbf' TO 256;
数据文件迁移
先脱机:ALTER TABLESPACE OFFLINE;
重命名:ALTER TABLESPACE tbs_its RENAME DATAFILE 'tbs_its02.dbf' TO '/tmp/tbs_its02.dbf';
再联机:ALTER TABLESPACE ONLINE;
(四)临时表空间管理
收缩方法 :重启数据库,自动重建临时表空间;使用SP_TRUNC_TS_FILE
方法。
二、重做日志管理
(一)系统视图
v$rlogfile :显示日志文件具体信息,如文件号、路径、状态、大小等。
v$rlog :显示日志总体信息,包括事务号LSN、归档日志、检查点执行情况等。
(二)日志操作
修改大小 :alter database RESIZE LOGFILE 'its01.log' to 300;
添加日志 :alter database ADD LOGFILE 'its03.log' SIZE 300;
修改路径
先挂载:ALTER DATABASE MOUNT;
重命名:ALTER DATABASE RENAME LOGFILE 'its01.log' TO '/tmp/its01.log';
再打开:alter database open;
三、归档管理
(一)开启归档
手动开启
挂载数据库:ALTER DATABASE MOUNT;
添加归档配置:ALTER DATABASE ADD ARCHIVELOG 'TYPE=LOCAL ,DEST=/dmdata/arch ,FILE_SIZE=128 ,SPACE_LIMIT=2048';
开启归档模式:ALTER DATABASE ARCHIVELOG;
打开数据库:ALTER DATABASE OPEN;
配置文件配置
在dm.ini
中设置ARCH_INI = 1
。
在dmarch.ini
中配置相关参数,如:
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 2048
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
(二)其他操作
查看状态 :SELECT arch_mode FROM v$database;
修改配置参数 :ALTER DATABASE MODIFY ARCHIVELOG 'TYPE=LOCAL ,DEST=/dmdata/arch ,FILE_SIZE=128 ,SPACE_LIMIT=20480';
关闭归档
挂载数据库:alter database mount;
关闭归档模式:alter database noarchivelog;
删除归档配置:alter database delete archivelog 'TYPE=LOCAL ,DEST=/dmdata/arch ,FILE_SIZE=128 ,SPACE_LIMIT=20480';
打开数据库:alter database open;
切换归档
alter database archivelog current;
alter system switch logfile;
alter system archive log current;
删除归档
按时间删除 :SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE);
按LSN删除 :SF_ARCHIVELOG_DELETE_BEFORE_LSN();
四、用户管理
(一)相关视图
dba_users :用于查看用户相关信息。
(二)三|四权分立
系统管理员(SYSDBA) :负责身份验证、资源限制、数据加密、访问控制、客体重用等。
系统审计员(SYSAUDITOR) :承担审计工作。
系统安全员(SYSSSO) :进行策略和标记管理。
对象管理员(SYSDBO) :负责访问对象控制。
(三)口令策略
PWD_POLICY参数 :是隐藏参数,只能通过函数或语句修改。
0 :无限制,但总长度不超48字节。
1 :禁止与用户名相同。
2 :口令长度需大于等于INI
参数PWD_MIN_LEN
设置的值。
4 :至少包含一个大写字母。
8 :至少包含一个数字。
16 :至少包含一个标点符号(英文输入法下,除“和空格外的所有符号)。
select * from SYS. "V$PARAMETER" where name like '%COMPATIBLE_MODE%' ;
select * from v$parameter t where t. name = 'PWD_POLICY' ;
alter SYSTEM set 'PWD_POLICY' = 16 BOTH;
(四)身份验证模式
数据库认证模式 :使用创建用户时设置的密码登录。
基于操作系统认证模式
开启相关参数:ENABLE_LOCAL_OSAUTH = 1
开启本地操作系统认证;ENABLE_REMOTE_OSAUTH = 1
开启远程操作系统认证;ENABLE_ENCRYPT = 1
表示使用ssl安全加密(静态参数,需重启数据库)。
操作步骤:先添加系统用户并加入指定组;在数据库中创建同名用户;登录数据库。
(五)用户管理示例
创建用户 :CREATE USER FANGYU IDENTIFIED BY 123456 DEFAULT TABLESPACE FYU_ITS DEFAULT INDEX TABLESPACE FYU_ITS;
锁定/解锁用户 :ALTER USER FANGYU ACCOUNT LOCK;
(锁定);ALTER USER FANGYU ACCOUNT UNLOCK;
(解锁)。
修改默认表空间 :ALTER USER FANGYU DEFAULT TABLESPACE MAIN;
修改密码 :ALTER USER FANGYU IDEDNTIFIED BY 01234;
删除用户 :DROP USER FANGYU
(若用户有创建对象则无法删除);DROP USER FANGYU CASCADE;
(强制删除)。
(六)用户资源限制
相关视图 :dba_profiles
可定义策略。
设置方式
LIMIT语句 :alter user fyu limit FAILED_LOGIN_ATTEMPS 10 , PASSWORD_LOCK_TIME 5;
PROFILE语句 :CREATE PROFILE P1 LIMIT FAILED_LOGIN_ATTEMPS 10 , PASSWORD_LOCK_TIME 5;
;ALTER USER FYU PROFILE P1;
五、权限管理
(一)授权和撤销
授权 :GRANT 权限 TO username [WITH ADMIN OPTION]
回收 :REVOKE 权限 FROM username
(二)权限相关系统表
DBA_SYS_PRIVS :系统权限。
DBA_TAB_PRIVS :对象权限。
DBA_ROLE_PRIVS :角色。
DBA_COL_PRIVS :列权限。
(三)查看权限
查看当前用户权限 :select * from session_privs;
六、角色管理
(一)角色概念
角色是一组权限的集合。
(二)预定角色
管理类 :如DBA
、RESOURCE
、PUBLIC
等,各有不同权限。
审计类 :负责审计相关权限。
安全类 :进行标记管理相关权限。
(三)角色操作
创建角色 :CREATE ROLE role_name;
删除角色 :DROP ROLE role_name;
禁用角色 :SP_SET_ROLE('role_name',0)
七、模式管理
(一)模式概念
模式是特定的对象集合,类似MySQL中的database,默认创建用户时会创建同名模式。
(二)模式和用户关系
一个用户可拥有多个模式,一个模式仅属于一个用户。
(三)模式操作
查看模式 :SELECT * FROM sysobjects WHERE tyepe$='SCH';
查看模式和用户对应关系 :
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 s1 AUTHORIZATION FYU;
查看当前模式和用户 :SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA');
;SELECT SYS_CONTEXT('USERENV','CURRENT_USER');
切换模式 :SET SCHEMA S2;
删除模式 :drop schema s1;
八、表管理
(一)创建表
普通方式 :CREATE TABLE T1(id INT, name VARCHAR(12));
基于某个表创建 :CREATE TABLE T2 LIKE T1;
(DM中会复制数据,与MySQL不同)
CREATE TABLE AS SELECT :CREATE TABLE T3 AS SELECT * FROM T1;
(二)表字段操作
添加字段 :ALTER TABLE T1 ADD COLUMN sex char(1);
删除字段 :ALTER TABLE T1 DROP COLUMN sex ;
修改字段 :ALTER TABLE T1 MODIFY sex char(10);
(三)移动表
移动到指定表空间 :ALTER TABLE T1 MOVE TABLESPACE MAIN;
(四)表相关视图
dba_tables :查看表相关信息。
dba_tab_column :查看表字段相关信息。
九、约束管理
(一)约束类型
NOT NULL :非空约束。
UNIQUE :唯一约束。
PRIMARY KEY :主键约束(唯一约束 + 非空约束)。
FOREIGN KEY :外键约束。
CHECK :检验约束。
(二)约束操作
添加约束 :分别使用不同语句添加各类约束。
禁用约束 :ALTER TABLE T1 DISABLE CONSTRAINT idx_uniq_id;
开启约束 :ALTER TABLE T1 ENABLE CONSTRAINT idx_uniq_id;
删除约束 :ALTER TABLE T1 DROP CONSTRAINT idx_uniq_id;
(三)约束系统视图
dba_constraints :查看约束相关信息。
dba_cons_columns :查看约束涉及的列相关信息。
十、索引管理
(一)索引操作
创建索引 :CREATE INDEX idx_id ON i1(id);
删除索引 :DROP INDEX idx_id;
监控索引 :ALTER INDEX idx_name MONITORING USAGE;
,可通过V$OBJECT_USAGE
视图查看使用情况。
重建索引 :ALTER INDEX idx_name rebuild;
(离线重建);ALTER INDEX idx_name rebuild online;
(在线重建)。
(二)统计信息收集
收集 :dbms_stats.gather_table_stats('SYSDBA','I1');
查看 :dbms_stats.table_stats_show('SYSDBA','I1');
十一、视图管理
(一)视图概念
由SQL语句组成的表,不存储真实数据,只存储查询语句。
(二)视图操作
创建视图 :CREATE VIEW v1 AS SELECT * FROM T1;
查询视图 :SELECT * FROM V1;
十二、数据库备份恢复
(一)备份恢复概念
备份 :从数据库文件拷贝有效数据页到备份集。
还原 :将有效数据页写入目标数据文件。
恢复 :通过归档日志恢复到备份结束时状态,或指定时间、LSN位置。
(二)备份类型
逻辑备份 :使用dexp
工具导出数据,关注数据内容。
物理备份 :扫描数据文件,拷贝已分配使用的数据页。
联机备份 :数据库运行时备份。
脱机备份 :数据库关闭时备份,dmrman
备份需数据库关闭。
(三)备份操作
联机备份 :BACKUP DATABASE BACKUPSET 'bak_db';
,可带多种参数。
不同备份示例 :完全备份、增量备份、表空间备份、表备份、归档备份等都有相应语句和参数。
(四)DMRMAN备份
备份数据库 :完全备份、增量备份、归档备份各有对应语句。
备份集校验 :SELECT SF_BAKSET_CHECK('DISK','/dmbak/full_db');
删除备份集 :SELECT SF_BAKSET_REMOVE('DISK','/dmbak/full_db',0);
(五)逻辑备份
dexp参数及示例 :众多参数控制导出行为,有全库、用户、模式、表等导出示例。
dimp还原 :dimp USERID=SYSDBA/fangyu421 FILE=/dmbak/full.dmp LOG=full.log FULL=Y DIRECTORY=/dmbak/dimp/
十三、作业系统
(一)创建备份作业
可进行全量备份和增量备份作业创建,具体操作涉及相关界面设置。
十四、DM8开发
(一)JDBC连接数据库
JDBC接口编程 :是Java与数据库的接口规范,DM JDBC驱动程序支持基本SQL功能。
JDBC连接池 :负责管理数据库连接,常见连接池有C3P0、Proxool等多种。
连接基础参数 :jdbc.driver=dm.jdbc.driver.DmDriver
等。
(二)ODBC连接数据库
ODBC概念 :为异构数据库访问提供统一接口。
DM ODBC 3.0 :遵照规范设计开发,可直接调用接口函数或通过可视化工具访问数据库。
配置与测试 :配置/etc/odbcinst.ini
和/etc/odbc.ini
文件,使用isql
测试连接。