达梦数据库知识点整理

DM DCA冲刺

前期命令整理

1. 查看系统信息

cat /proc/version

2. 查看CPU

lscpu

3. 查看内存

free -m

4. 查看磁盘

df -h

5. Glibcgcc版本

rpm -qa|grep glibc

rpm -qa|grep gcc

安装DM8

1、规划安装用户

groupadd dinstall

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

passwd dmdba

2、规划安装目录

mkdir /dm8

ls -ld /dm8

chown dmdba:dinstall /dm8

ls -l d /dm8

3、挂载安装

root:mkdir /mnt/dm

root:mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm

root:su dmdba

dmdba:cd /mnt/dm

4、设置图形化界面

root:xhost +

root:echo $DISPLAY

su - dmdba

export DISPLAY=:0.0

cd /mnt/dm

ll

5、图形化界面方式安装DM数据库

dmdba: ./DMInstall.bin

图形化界面安装以后,提示以root用户执行脚本命令

root: /dm8/script/root/root_installer.sh

修改最大可打开文件数

vim /etc/security/limits.conf

5.1命令行方式安装DM数据库

[dmdba@KylinDCA03 dm]$ ./DMInstall.bin -i

安装完成以后,请以 root 系统用户执行命令:

/dm8/script/root/root_installer.sh

5.2 DM支持静默方式安装

6DM数据库卸载

[dmdba@KylinDCA03 dm8]$ ./uninstall.sh

[root@KylinDCA03 桌面]# /dm8/root_uninstaller.sh

创建数据库及数据库实例管理

1、数据库配置助手创建数据库

[dmdba@KylinDCA03 ~]$ cd /dm8/tool

[dmdba@KylinDCA03 tool]$ ./dbca.sh

执行完成以后,切换用户执行提示的脚本

2、命令行创建数据库实例

cd /dm8/bin

./dminit help

[dmdba@KylinDCA03 bin]$ ./dminit path=/dm8/data db_name=DMTEST

instance_NAME=DMTESTSVR sysdba_pwd=Dameng123 port_num=5238 PAGE_SIZE=16

dminit 方式没有创建数据库服务,所以不能以服务方式启动数据库,如果要以服务方式启动, 则需要

注册数据库服务。两种方式注册数据库服务:

dbca.sh DM 数据库配置助手

root 执行注册服务脚本

./dm_service_installer.sh -t dmserver -p DMTESTSVR -dm_ini

/dm8/data/DMTEST/dm.ini

root 执行删除服务脚本

# ./dm_service_uninstaller.sh -h

3、启动和关闭DM数据建库

DM 数据库的状态:

Shutdown:关闭状态

Mount:配置状态:可以修改数据库归档配置、主备等模式,不能进行数据文件的读写。

Open:打开状态:数据库正常状态,可以读写数据文件。正常访问表,读取数据。

Suspend:只读状态,只能读,不能写(DML 操作一旦 commit,即会被挂起)。

MOUNT  OPEN 可以相互转换(与 Oracle 不同)。SUSPEND  OPEN 也可以相互转

换。  MOUNT  SUSPEND 不能相互转换。

select status$ from v$instance;

alter database mount;

DM 数据库的启动方式:

Root 启动:

服务方式管理 systemctl start|status|stop|enable|disable DmServiceDMSERVER

DM 服务查看器管理(以 root 方式打开才有启动的权限)

dmdba 用户启动(两种方式都可以将数据库启动到 mount 状态):

前台启动方式(dmserver

如果没有注册数据库服务,只能使用此方式启动

[dmdba@KylinDCA03 bin]$ ./dmserver /dm8/data/DMTEST/dm.ini

后台启动方式(DmServiceDMSERVER

[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR start

[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR stop

[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR start mount

[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR status

DM 的体系结构

1DM物理文件

配置文件、控制文件、数据文件、联机日志

配置文件

配置文件包括(服务配置 dm.ini,守护配置,复制配置,审计配置)

dm.ini 配置参数文件 参数的类型:

READ ONLY:只读参数,只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能

 效)。

SYS:动态(系统级)参数。可以在数据库运行时修改。

SESSION:动态(会话级)参数,可以在数据库运行时修改,且可以只针对当前会话生效。

IN FILE:静态参数,可以在数据库运行时修改,可需要重启数据库才能生效。

数据库参数的修改方法:

console 控制台工具 图形化界面方式修改,需要重启数据库才能生效

直接修改 dm.ini 配置文件,需要重启数据库才能生效。

系统函数修改(可以用来修改静态和动态参数,但静态参数修改后需要重启数据库 才能生

效)。

SP_SET_PARA_VALUE:修改整型参数。

SP_SET_PARA_DOUBLE_VALUE:修改浮点型参数

SP_SET_PARA_STRING_VALUE:修改字符型参数

使用 alter system set 语句修改(可以用来修改静态和动态参数,但静态参数修改 后需要重

启数据库才能生效)。

alter system set 'LIST_TABLE' =1 both|memory|spfile;

对于会话级动态参数,可以只针对当前会话生效:

alter session set 'LIST_TABLE' =0

查询系统参数

select PARA_NAME,PARA_VALUE,PARA_TYPE from v$dm_ini t where

t.para_name like 'COMPATIBLE_MODE';

select name, type, value, sys_value , file_value from v$parameter

t where name like 'LIST_TABLE'

控制文件dm.ctl

二进制文件,无法直接打开,可以用 dmctlcvt 工具转换为文本文件。

数据文件

用来存放数据

ll *.BDF

联机日志

(用来存放redo中作日志信息,循环使用)

归档日志文件

如果数据库开启归档,则会生成归档日志文件(用于保存重做日志信息)

2DM内存结构

2.1 数据缓冲区

用于缓存数据文件中的数据页。BUFFER 是从磁盘读出的数据页在内存中的镜像,由 INI 配置中的

BUFFERFAST_POOL_PAGESRECYCLEKEEP 等确定大小,不同类型的缓冲区主要 表现为淘

汰机制

数据缓冲区的大小影响数据库的读写性能,OLTP,数据缓冲区占内存 40-60%OLAP,数 据缓

冲区占内存 60-80%

逻辑读:从内存中读取;物理读:从磁盘中读取。

select * from v$bufferpool; --数据缓冲区

2.2 重做日志缓冲区

重做日志是数据库与磁盘间的一层缓存,将随机的磁盘写转换成顺序写,日志缓冲区是 数据库和

日志间的缓存对应 INI 参数 RLOG_BUF_SIZE

什么情况下会做重做日志的刷盘:

执行 commit

日志缓冲区满、

 3 秒做日志的刷盘。

当执行 commit 的时候,是否会做重做日志的刷盘? --

当执行 commit 的时候,是否会做数据缓冲区的刷盘(将数据缓冲区中的数据,写入数 据文

件)? --否,数据库执行检查点时,才会做数据缓冲区的刷盘。

2.3 SQL 缓冲区

缓存 sql 语句、对应的执行计划、缓存结果集(需要开启结果集缓存,默认不开启)

SQL CACHE POOL,简称 SCP,对应 INI 参数 CACHE_POOL_SIZE,是用来存储包信息

PACKAGE)、执行计划、结果集缓存的一片专用缓存区域,对于 SQL 类别比较多,或者 PKG

比较多、复杂的系统,建议将该参数调大。

参数为 USE_PLN_POOL,是否启动计划重用;为 0 时禁止计划重用,1 表示启动,默 认为 1

RS_CAN_CACHE,是否启动结果集缓存,默认为 0,不启用。

对应参数 CACHE_POOL_SIZE,如果 sql 较多、结果集缓存,可以适当调大 sql 缓冲区。

2.4 字典缓冲区

字典缓冲区是存在数据库对象的一片缓冲区,对应 INI 参数 DICT_BUF_SIZEDM8 里面 数据对

象其实对应的是系统表上的一些信息,内存中的数据对象是通过将系统表上的信息取 出并解析出

来得到的,该缓冲区一是避免了频繁向磁盘请求获取系统表信息,二是可以减少 系统表信息解析

开销

select name, type, value, sys_value, file_value from v$parameter t where

name like 'DICT_BUF_SIZE';

2.5 主内存池(共享内存池)

当其他内存池(不包含数据缓冲区)不够时,会像主内存池申请空间。

服务器启动时从操作系统申请的一大片内存,后续服务器运行过程中,一般情况下,很 多需要内

存分配的地方都是从该池分配,如果需要的内存大于配置值(MEMORY_POOL),共享内存池也可进

行自动扩展,INI 参数 MEMORY_EXTENT_SIZE 指定了共享内存池每次扩展的大 小,参数

MEMORY_TARGET 则指定了共享内存池能扩展到的最大大小.

select * from V$mem_pool;

MEMORY_POOL:初始大小

MEMORY_EXTENT_SIZE:扩展大小

MEMORY_TARGET:目标大小

MEMORY_N_POOL:共享内存池个数,默认为 1,高并发时可设置多个。

2.6 运行时的内存池

特点:使用时申请,用完即释放。

包含:虚拟内存池、会话池、排序区、HASH 区等。

排序区:SORT_BUF_SIZE

少量的数据排序,优先在内存中排序,此时占用排序区;

大量的数据排序,内存中放不下,占用临时表空间排序。

如果业务经常有排序,可以适当调大排序区,提高效率。

select name , type, value ,sys_value, file_value from v$parameter t where name like 'SORT%'

HASH 区:HJ_BUF_SIZE HASH 连接、HASH 分区占用哈希区。如果业务 hash 连接较多,可以调

大哈希区。

DM线程

DM 是单进程多线程的架构;Oracle 是多进程架构。

ps -ef|grep dmserver

ps -T -p 1750

select * from V$process; --进程

select * from v$threads; --线程

1、监听线程

用于在服务器端口上进行循环监听,有来自客户的连接请求,监听线程被唤醒并生成一 个会话申

请任务,加入工作线程的任务队列,等待工作线程进行处理

2、工作线程

DM 的核心线程;默认 16 个工作线程,业务可根据实际情况修改。

3IO 线程 用于读写数据

需要处理的数据块不在缓冲区中,此时需要将相关数据块读入缓冲区 -物理读

缓冲区满或系统关闭时,此时需要将部分脏数据块写入磁盘 -写脏块

检查点到来时,需要将所有脏数据块写入磁盘

4、日志刷新线程

日志的刷盘。主要用于事务提交或检查点时将日志缓冲区中的 REDO 日志写入到日志文 件中。

5、日志归档线程

完成 redo 日志的归档

6 日志重做线程

主要用于系统故障恢复,日志重做线程根据 REDO 日志进行并行的故障恢复

7、调度线程

检查系统级的时间触发器;

清理 SQL 缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;

动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;

自动执行检查点; 会话超时检测; 必要时执行数据更新页刷盘;

唤醒等待的工作线程;

8、一个sql的执行过程

客户端发起 sql 请求,到达服务端监听线程,生成会话线程、工作线程

语法语义权限解析(字典缓冲区) 查找 sql 语句、sql 执行计划(sql 缓冲区中查找 sql 语句,执

行计划,如果找到 解析,根据执行计划查询语句,生成对应的结果集。如果没有找到对应

sql 语句,则将此 sql 语句加入 sql 缓冲区,并生成对应的执行计划 –-硬解析)

Sql 读,如果数据缓冲区中有对应的数据页,此时为逻辑读,如果数据缓冲区没有对应 数据页,

 IO 线程从磁盘中(数据文件)读取数据放入数据缓冲区,此时为物理读(更消 耗性能)。如

果语句涉及多表 HASH 连接,则会占用 HASH 区,如果 sql 涉及排序,则少排序 占用排序区。

Sql 写,数据缓冲区,产生的 redo 放入日志缓冲区,如果执行 commit,日志刷新线程 将写入日

志缓冲区中数据写入联机日志。后期数据库执行检查点,或数据缓冲区将满,则 IO 线程将数据缓

冲区中的数据写入数据文件。

表空间管理

1、管理表空间

DM 默认预定义 SYSTEMROLLMAINTEMPHMAIN 五个表空间。

SYSTEMROLLTEMP 表空间不能脱机,系统预定义的表空间都不能删除。 表空间脱机后,该

表空间中的数据将不能读写。

DM 数据文件大小,最小值不能低于页大小的 4096 倍(如果页大小是 8K,最小值 将不低于

32M),最大值为页大小的 2  31 次方-1(如果页大小是 8K,最大值为

SYSTEM:系统表空间,存放数据字典等信息(表、字段、视图等对象的定义、 权限信息等)

ROLL:回滚表空间,存放回滚页,数据库中的 DML 操作对应都会生成 redo undoundo 信息

放入 ROLL 表空间。

MAIN:用户默认表空间,当创建用户时,如果为指定用户的默认表空间,则 MAIN 为用户的默认

表空间

TEMP:临时表空间,存放临时表数据等、当大量的数据排序或创建索引占用 临时表空间。DM 

临时表空间由参数 TEMP_SIZE 指定。

select * from v$parameter t where name like 'TEMP%';

TEMP_SIZE:临时表空间初始大小

TEM_PATH: 临时表空间路径

TEMP_SPACE_LIMIT:临时表空间的空间限制,0 表示不限制。

修改临时表空间的初始大小:

alter system set 'TEMP_SIZE'=100 spfile;

收缩 TEMP 表空间的方法:

1 重启数据库,TEMP 表空间数据文件会重建。

2 在线收缩临时表空间 SP_TRUNC_TS_FILE

HMAINHUGE 表的默认表空间(HTS 表空间)。

2、创建表空间

--创建表空间

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

--表空间重命名

alter tablespace tbs RENAME TO dmtbs;

--删除表空间(只能删除空的表空间)

drop tablespace dmtbs;

--创建表空间,有2dbf文件

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;

--修改表空间

alter TABLESPACE tbs add DATAFILE 'TBS02.DBF' size 128 AUTOEXTEND on NEXT 2

MAXSIZE 20480;

alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND on NEXT 2 MAXSIZE 20480;

alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND off;

alter tablespace tbs RESIZE DATAFILE 'TBS01.DBF' TO 128

--迁移表空间数据文件

alter tablespace tbs offline;

alter TABLESPACE tbs RENAME DATAFILE 'TBS01.DBF' TO

'/dm8/data/DM/TBS/TBS01.DBF';

alter TABLESPACE tbs RENAME DATAFILE 'TBS02.DBF' TO

'/dm8/data/DM/TBS/TBS02.DBF';

alter tablespace tbs online;

3、查询表空间

select * from dba_tablespaces;

select * from DBA_DATA_FILES;

select * from v$tablespace;

select * from v$datafile;

select * from DBA_FREE_SPACE;

重做日志文件

联机重做日志:存放 redo 信息,循环使用,不断覆盖。

DM 数据库联机日志自动切换,不能手工切换。

1、数据字典

select * from v$rlogfile;

select * from v$rlog;

--cur_file表示正在使用的联机日志

2、修改联机日志文件大小

alter database RESIZE LOGFILE '/dm8/data/DM/DM01.log' TO 300;

alter database RESIZE LOGFILE '/dm8/data/DM/DM02.log' TO 300;

3、添加联机日志文件

alter DATABASE ADD LOGFILE '/dm8/data/DM/DM03.log' SIZE 300;

4 修改连接日志文件路径(迁移联机日志文件)

alter database mount;

alter database RENAME LOGFILE 'DM01.log' TO '/dm8/data/DM/REDO/DM01.log';

alter database RENAME LOGFILE 'DM02.log' TO '/dm8/data/DM/REDO/DM02.log';

alter database RENAME LOGFILE 'DM03.log' TO '/dm8/data/DM/REDO/DM03.log';

alter database open;

DM归档

默认情况,DM 不开启归档。

归档是对REDO 的归档。

归档的目的是使数据库故障时可以恢复到故障的前一刻(完全恢复),或者恢复到指定的时间点或

指定 LSN(不完全恢复)。

1、开启/关闭归档

sql 命令开启归档

alter database mount;

alter database archivelog;

select arch_mode from v$database;

alter database add archivelog

'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';

alter database open;

> select * from v$dm_arch_ini;

sql 命令关闭归档

alter database mount;

alter database noarchivelog;

alter database delete archivelog 'type=local,dest=/dm8/arch';

alter database open;

select arch_mode from v$database;

图形化界面开启归档

设置数据库为 MOUNT 配置状态

开启归档、配置归档

数据库修改为 OPEN 状态

2、定时删除归档

针对业务繁忙期间,出现磁盘 IO 不定时繁忙的情况。

因为配置了归档的空间上限(归档达到此上限),生成新的归档日志前删除旧的归档日志文 件。

配置 JOB 作业,在业务空间期定时清理 N 天之前的归档文件。

SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate -7);

用户管理

1、默认用户

SYS:系统内置用户,不允许登录。

SYSDBA:系统管理员,拥有几乎所有权限(除审计和强制访问控制)

SYSAUDITOR:系统审计员,具有审计相关权限。

SYSSSO:系统安全员,具有强制访问控制等权限;

SYSDBO:安全版本才有的用户,安全操作员。

2、密码策略

PWD_POLICY 参数指定系统的口令策略,默认为 2

系统支持的口令策略有:

0 无策略

1 禁止与用户名相同

2 口令长度不小于 9

4 至少包含一个大写字母(A-Z

8 至少包含一个数字(0-9

16 至少包含一个标点符号(英文输入法状态下,除和空格外的所有符号)

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2  4,则设置口 令策

略为 2+4=6 即可。

--查询密码策略

select * from v$parameter t where t.name = 'PWD_POLICY';

--修改密码策略

alter SYSTEM set 'PWD_POLICY' = 15 BOTH;

--用户输入错误多次(默认 3 次),将会被锁定。查询用户锁定状态

select * from dba_users;

select b.USERNAME,a.* from sysusers a, dba_users b where a.id = b.USER_ID;

3、创建/删除用户

--创建用户

create user hrtest IDENTIFIED by Dameng123 DEFAULT TABLESPACE TBSTEST;

--用户锁定和解锁:

alter user hr ACCOUNT UNLOCK;

alter user hr ACCOUNT LOCK;

--修改用户的默认表空间:

alter user hr DEFAULT TABLESPACE dmtbs;

--用户资源限制设置(DM 新版本已经支持使用 profile 来管理用户的资源限制):

alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3;

--密码带有特殊字符的登录处理:

alter user hrtest IDENTIFIED by "Dameng@123";

--删除用户:

drop user if EXISTS hr;

--生成环境慎用

drop user if EXISTS hr CASCADE;

4 权限管理

--赋予数据库权限(系统权限):

grant create table to hrtest;

grant select on dmhr.employee to hrtest

--查看当前用户拥有的权限:

select * from session_privs;

--权限的回收:

revoke select on dmhr.employee from hrtest;

revoke create table from hrtest;

--赋予查询对象权限,精确到列

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

--开启后可正常赋予权限

alter SYSTEM set 'ENABLE_DDL_ANY_PRIV' = 1 both;

grant create any table to hrtest;

grant create any index to hrtest;

角色管理

角色是权限的集合,角色使权限管理更加方便。

DBA:具有几乎所有权限(除审计和强制访问控制之外),默认赋给 SYSDBA 用户。

PUBLIC:具有对当前模式下对象的 DML 数据操作权限。

RESOURCE:具有在当前模式下数据定义权限(创建表、索引、视图等),

SOI:具有查询 sys 开头系统表的权限

VTI:具有查询 v$开头的动态视图权限

模式对象

模式与用户之间的关系:

当系统建立一个用户时,会自动生成一个对应的模式

用户还可以建立其他模式,用户和模式是一对多的管理,一个用户可以拥有多个模式,

一个模式仅能归属于一个用户。

--查看模式

select * from SYSOBJECTS t where t."TYPE$" ='SCH';

--查看用户

select * from SYSOBJECTS t where t."SUBTYPE$" ='USER';

--查看模式和用户的关系

select a.id, a.name, b.id, b.name

from SYSOBJECTS a, SYSOBJECTS b

where a.pid = b.id and a."TYPE$" = 'SCH';

1、创建/删除模式

create schema hrtest01 AUTHORIZATION HRTEST;

create table hrtest01.t_test(id int, name varchar(20));

--查看当前模式和当前用户

select sys_context('USERENV','CURRENT_SCHEMA');

select sys_context('USERENV','CURRENT_USER');

--切换模式

set SCHEMA dmhr;

--删除模式

drop SCHEMA IF EXISTS HRTEST01;

--级联删除模式下对象,生产环境慎用。

drop SCHEMA IF EXISTS HRTEST01 CASCADE;

2、管理表

DM 默认创建的是索引组织表,Oracle 默认创建的是堆表:

索引组织表和堆表的区别:

索引组织表有且仅有一个聚簇索引键,表数据按照聚簇索引键排序(数据是有序的,插入有

序),rowid 是逻辑 rowid,占用存储空间,所以索引组织表比堆表占用较多空间。 堆表,插入

无序,数据无序,rowid 是物理 rowid,不占用存储空间,所以堆表更节约空间,支持并发

如果是对聚簇索引键的范围查询,索引组织表更高效。

DM 默认创建的索引组织表,由参数 LIST_TABLE 指定。

select * from v$parameter t where name ='LIST_TABLE';

DM 创建表时如果指定了主键,则主键为聚簇索引键;

如果创建表示未指定主键,则 rowid 为聚簇索引键(由参数 PK_WITH_CLUSTER 指定)

select * from v$parameter t where name ='PK_WITH_CLUSTER';

数据的导入(数据的导入(DM 使用 start 或者`))

start /dm8/backup/JOB.sql

` /dm8/backup/JOB.sql

3、管理索引

索引:二级索引(B 树索引),索引的存在是为了提高查询速度。索引存放的是索引列值和

rowid 一种数据库对象,通过指针加速查询速度,通过快速定位数据的方法,减少磁盘 I/O

索引与表相互独立,索引占用存储空间(如果一个表越大,其索引也会越来越大),索引相当于

一个小表,索引是有序的(按照索引字段排序),在查询时服务器自动使用索引,DML 操作时自

动维护索引。

索引不是越多越好,索引会降低 DML 的效率(DML 操作需要维护索引)

索引包含:聚簇索引、二级索引、函数索引、位图索引、唯一索引、组合索引等 组合索引创建时

要注意索引列的顺序(一般经常查询的列放在前面,等值查询的列放在前面)

--查看执行计划

explain select * from hrtest.t_emp01 t where T.EMPLOYEE_NAME = '马学铭';

--创建索引

create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);

--删除索引

drop index HRTEST.ix_emp01_employeename;

--统计信息的收集:

dbms_stats.gather_table_stats('HRTEST','T_EMP01')

--统计信息的查看:

dbms_stats.table_stats_show('HRTEST','T_EMP01');

dbms_stats.index_stats_show('HRTEST','IX_EMP01_EMPLOYEENAME');

--索引的监控:

alter index HRTEST.IX_EMP01_EMPLOYEENAME MONITORING USAGE; --开启索引监控

alter index HRTEST.IX_EMP01_EMPLOYEENAME NOMONITORING USAGE; --关闭索引监控

--索引的重建(生成环境建议使用 online 方式重建,不影响表的 DML 操作):

alter index HRTEST.IX_EMP01_EMPLOYEENAME rebuild ONLINE;

--索引的数据字典:

select * from dba_indexes t where t.OWNER ='HRTEST';

select * from dba_ind_columns t where t.index_OWNER ='HRTEST';

4、管理视图

普通视图(物化视图除外)中不包含数据,数据来源于基表。视图提供一个查询窗口。

从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据

从数据库系统内部来看,一个视图是由 SELECT 语句组成的查询定义的虚拟表

简单视图:单表查询,不包含聚合函数、group by 等。一般可以支持 DML 操作,对视图的 DML

操作都会转化为对基表的 DML 操作,DML 操作要满足基表的约束条件。

复杂视图:多表连接,包含聚合函数、group by 等。一般不支持增删改操作。

数据字典和动态性能视图

1、数据字典

存储在 SYSTEM 表空间中,包含对象定义、权限、用户角色等信息。

USER_* 用户所拥有的对象信息

ALL_* 用户能访问的对象信息

DBA_* 整个数据库中的对象信息

--系统中所有对象的信息

SELECT * FROM SYSOBJECTS;

--系统中所有索引定义信息

SELECT * FROM SYSINDEXES

--系统中所有列定义的信息

SELECT * FROM SYSCOLUMNS

select * from sysstats;

select * from SYSOBJECTS t where id = 1058;

select * from SYSCONS;

2、动态性能视图

动态性能视图是从内存中或控制文件中读取的数据

--数据缓冲区

SELECT * FROM V$BUFFERpool;

SELECT * FROM V$mem_pool;

--显示数据文件、表空间信息

SELECT * FROM V$DATAFILE;

SELECT * FROM V$tablespace;

--显示当前进程、线程信息

SELECT * FROM V$PROCESS;

SELECT * FROM V$threads;

--事务等待:

select * from v$trxwait;

select t.TRX_ID, t.SESS_ID, t.SQL_TEXT, t.STATE, t.THRD_ID from v$sessions t;

select * from v$lock t where t.BLOCKED = 1;

sp_close_session(140279172804584);

数据库备份还原

1、备份还原基本概念

备份包含物理备份、逻辑备份。

物理备份是拷贝有效的数据页。

逻辑备份是导出数据库中逻辑数据。

物理备份分为完全备份、增量备份;联机备份(热备)和脱机备份(冷备)。

备份级别:全库备份、表空间级备份、表级备份、归档备份。

增量备份包含差异增量备份和累积增量备份:

差异增量备份的基础备份集可以是全量备份,也可以是增量备份;

累计增量备份的基备份集只能是全量备份。

物理还原是备份的逆过程;

恢复是使用归档将数据库恢复到最新状态或指定时间点;或使用备份集中的 redo 信息将数据库恢

复至一致性状态。

2、脱机备份与还原数据库

脱机备份(数据库关闭状态下的备份)

2.1、使用 dmrman 工具可以脱机备份

库备份(冷备)

witch dmrman

cd /dm8/bin/dmrman

./dmrman

backup database '/dm8/data/DM/dm.ini'

表空间的还原和恢复(DM8 表空间联机备份,脱机还原)

测试场景:删除 TBS01.DBF 数据文件

restore database '/dm8/data/DM/dm.ini' tablespace dmtbs from backupset

'/dm8/backup/full/DMTBSFULL_02';

restore database '/dm8/data/DM/dm.ini' tablespace dmtbs from backupset

'/dm8/backup/full/DMTBSFULL_02';

表空间的恢复(DM8 表空间恢复时会自动应用归档,将表空间恢复到最新状态)

全库的还原与回复

测试场景:删除 system 数据文件

假如 a(全量)->b1(增量)-> b2(增量) -> c1(增量)

rm SYSTEM.DBF

-- 数据库的还原

restore database '/dm8/data/DM/dm.ini' from backupset

'/dm8/backup/full/ONLINEBAK_02';

-- 数据库的恢复

recover database '/dm8/data/DM/dm.ini' with archivedir '/dm8/arch';

-- 更新是数据库魔数

recover database '/dm8/data/DM/dm.ini' update db_magic;

不完全回复的使用场景:

表误删除(DROP),可以指定归档恢复到删除的前一刻。

show 查看备份集

show backupset '/dm8/data/DAMENG/bak_full';

remove 删除备份集

remove backupset '/dm8/data/DAMENG/bak_increment';

check 检查备份集

check backupset '/dm8/data/DAMENG/bak_full';

2.2 使用console控制台工具脱机备份

还原

恢复

更新数据库魔数:

表空间还原时会校验数据库魔数:

select permanent_magic; --查询数据库永久魔数

select db_magic from v$rlog; --查询数据库当前魔数

3 联机备份与还原数据库

联机备份:数据库是启动状态,联机备份要求数据库打开归档。

DM 默认使用 AP 服务备份(由参数 BAK_USE_AP),所以备份时要保证 AP 服务是启动的。

ps -ef|grep dmap

cd /dm8/bin

./DmAPService status

DM 默认的备份路径由参数 BAK_PATH 指定,建议备份路径不要和数据库原始数据文件放在同一

磁盘,避免磁盘损坏,数据文件和备份文件同时损坏的情况。

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

select * from v$backupset; --查看备份集

select * from v$ifun t where t.name like 'SF_BAKSET%';

SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full/');

SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/incr/');

--备份数据库

backup database; --全量备份

backup database increment; --增量备份

--全备

backup database full to ONLINEBAK_01 backupset '/dm8/backup/full/ONLINEBAK_01';

--增备1

backup database increment BASE ON BACKUPSET '/dm8/backup/full/ONLINEBAK_01' to

ONLINEBAKINCR_01 backupset '/dm8/backup/incr/ONLINEBAK_01' ;

--增备2

backup database increment with BACKUPDIR '/dm8/backup/full/' to ONLINEBAKINCR_02

backupset '/dm8/backup/incr/ONLINEBAK_02' ;

--校验备份集

select SF_BAKSET_CHECK('DISK','/dm8/backup/incr/ONLINEBAK_02');

--表空间备份

backup tablespace dmtbs;

backup tablespace dmtbs INCREMENT with BACKUPDIR '/dm8/backup/full/' to

DMTBSINCR_01 backupset '/dm8/backup/incr/DMTBSINCR_01' ;

--表的备份

backup table dmhr.employee;

--归档备份

backup ARCHIVELOG all;

--库级、表空间的还原和恢复不支持联机恢复,只支持脱机还原恢复。

4 DM 管理工具图形化界面备份

表空间备份:

5、逻辑备份

dexp 逻辑导出、dimp 逻辑导入

四个级别:

全库(full=y

按用户(owner=XXX

按模式(schemas=XXX

按表(tables=XX

--全库导出

dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=full.dmp

log=full.log full=y

--按用户导出:

dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=HRTEST.dmp

log=HRTEST.log owner=HRTEST

--按模式导出:

dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=DMHR.dmp

log=DMHR.log schemas=DMHR

--按表导出:

dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=EMPLOYEE.dmp

log=EMPLOYEE.log tables=DMHR.EMPLOYEE

--全库导入:

dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=full.dmp

log=impfull.log full=y

--按模式导入(将 A 模式导入到 B 模式,使用 REMAP_SCHEMA 参数):

dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=DMHR.dmp

log=impDMHR.log REMAP_SCHEMA=DMHR:DMTEST

作业管理

1、创建代理环境

方式一

sp_init_job_sys(1); --执行存储过程

方式二

2、创建作业

增量备份:

--查看job

select * from sysjob.sysjobs;

--运行job

dbms_job.run(1640162093);

--查看job运行日志

select * from SYSJOB.SYSJOBHISTORIES2;

checkpoint(100); --执行完全检查点

--DM兼容oracleDBMS_JOBDBMS_SHCEDULER.

SP_INIT_DBMS_SCHEDULER_SYS(1);

dbms_scheduler;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值