认证流程
点击下面连接进行报名
https://jinshuju.com/f/GGXYlU?referred_from=m01aJ6s2
YashanDB培训平台账号注册
https://v.kaoshixing.com/exam/pc/application/#/registSheet/15515?companyId=507743
报名成功后
(
)
登录培训平台
https://v.kaoshixing.com/exam/pc/customprocess/#/detail/18139?companyId=507743
点击 **1-YCA课程学习【点击展开】**开始学习

课程配套资料
https://www.yashandb.com/courseware_download
YashanDB学习文档
https://doc.yashandb.com/yashandb/23.4/zh/All-Manuals/Product-Overview/About-YashanDB.html
YashanDB 安装(docker)
下载
https://download.yashandb.com/download
YashanDB 23.4.1 docker镜像
YashanDB 23.4.1 docker镜像安装
准备工作
-
以安装用户登录Docker容器宿主机。
请以root用户或具备sudo权限的用户登录所有服务器上执行下述操作。
-
创建一个账号并设置密码。
本安装手册中,以yashan作为数据库安装用户名称。
# useradd -d /home/yashan -m yashan # passwd yashan -
新建YASDBA用户组并将安装用户加入该组。
# groupadd YASDBA # usermod -a -G YASDBA yashan -
添加 yashan 用户到 docker 组
usermod -aG docker yashan -
刷新组权限(必须执行)
newgrp docker-
验证权限
groups # 输出应包含 docker
-
-
-
创建2个目录用于映射YashanDB的数据目录和yasboot工具目录:
su - yashan cd /home/yashan mkdir yasboot mkdir data数据库的相关文件会相应保存至上述目录,请确保磁盘容量充足。
步骤1:导入安装包
执行如下命令,导入安装包:
docker load -i yashandb-image-23.4.1.109-linux-x86_64.tar.gz
#删除镜像:docker rmi yashandb:yashandb-image-23.4.1.109-linux-x86_64

导入完成后,可以使用docker images命令查看导入的镜像,回显信息如下:
docker images REPOSITORY TAG IMAGE ID CREATED SIZE yashandb yashandb-image-23.4.1.109-linux-x86_64 062a9a214082 9 months ago 883MB
步骤2:启动容器
执行如下命令,启动容器:
docker run -d -p 1688:1688 \ -v /home/yashan/data:/data/yashan \ -e SYS_PASSWD='YashanDB@20260513' \ --name yashandb yashandb:yashandb-image-23.4.1.109-linux-x86_64
注意1:密码要设置的复杂满足要求,否则会报错。
stdout: gen node sys password
stderr: gen yaspwd failed, YASPW-00002 password complexity failed for SYS user : password must contain at least 1 digit
注意2:-v /home/yashan/yasboot:/home/yashan将空目录挂载到了容器内的 /home/yashan,覆盖了镜像中原本存在的安装包文件,会报错mv: cannot stat '/home/yashan/yashandb-.tar.gz’: No such file or directory*,我这里把下面这段去掉了。
-v /home/yashan/yasboot:/home/yashan \
容器运行相关参数说明:
| 参数名 | 参数描述 |
|---|---|
| -d | 后台运行容器 |
| -p | 指定容器端口映射,容器内暴露的端口号为1688 |
| -v | 指定容器文件路径映射,将在宿主机中准备的YashanDB的数据目录和yasboot工具目录挂载到容器内,多个目录则指定多次 |
| –name | 指定容器名称 |
| -e | 指定环境变量 |
支持的环境变量如下:
| 参数名 | 参数描述 |
|---|---|
| SYS_PASSWD | sys用户的密码(必须配置) |
| DB_BLOCK_SIZE | 数据块大小 |
| YAS_{建库参数} | 支持所有建库参数,格式为YAS_参数名(例如参数REDO_FILE_SIZE需写成YAS_REDO_FILE_SIZE),此处配置过的参数建库后不可修改 |
检查–如果发生故障可以检查容器状态和日志
#1. 查看容器状态
docker ps -a | grep yashandb
#2. 查看退出码和启动日志
docker inspect yashandb | grep -A 10 -B 5 “State”
#3. 查看容器完整日志(包括启动时的错误)
docker logs --tail 50 yashandb
#4.删除容器
docker rm -f yashandb
步骤3:检查安装结果
执行如下命令,检查安装结果:
$ docker logs yashandb
init
+------------------------------------------------------------------------------------------------------+
| hostid | group | node_type | node_name | listen_addr | replication_addr | data_path |
+------------------------------------------------------------------------------------------------------+
| host0001 | dbg1 | db | 1-1 | 0.0.0.0:1688 | 127.0.0.1:1689 | /data/yashan/yasdb_data |
+----------+-------+-----------+-----------+--------------+------------------+-------------------------+
Generate config completed
checking install profile.toml...
install version: yashandb 23.4.1.109
update host to yasom...
+------------------------------------------------------------------------------------------------------------+
| type | uuid | name | hostid | index | status | return_code | progress | cost |
+------------------------------------------------------------------------------------------------------------+
| task | 734f9e423e708450 | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 40 |
+------+------------------+--------------------+--------+----------+---------+-------------+----------+------+
task completed, status: SUCCESS
DeployYasdbCluster任务状态为SUCCESS时,表示数据库安装成功。
步骤4:连接数据库
-
执行如下命令,进入容器:
docker exec -it yashandb /bin/bash -l -
使用yasql工具连接数据库,查看实例状态。
yasql sys/********@0.0.0.0:1688 YashanDB SQL Enterprise Edition Release 23.4.1.109 aarch64 Connected to: YashanDB Server Enterprise Edition Release 23.4.1.109 aarch64 - Linux SQL> SELECT STATUS FROM V$INSTANCE; STATUS ------------- OPEN SQL> SELECT database_name FROM v$database; DATABASE_NAME ---------------------------------------------------------------- yashandb -
(可选)创建数据库用户并赋权,更多操作请查阅用户管理。
SQL> CREATE USER sales IDENTIFIED BY sales; SQL> GRANT CONNECT TO SALES;
附录:基于docker管理数据库
进入容器
docker exec -it yashandb /bin/bash -l
进入容器后,可使用yasql、yasboot等工具连接或管理数据库。
通过容器启停数据库
可以直接通过docker命令启停数据库集群,其效果等同于进入容器后再执行yasboot工具的启停相关命令。
-
停止数据库
docker stop yashandb -
启动数据库
$ docker start yashandb -
重启数据库
$ docker restart yashandb
yasboot工具安装
yasboot进程
通过yasboot安装Yash anDB产品时,将启动yasom进程(全局1个)和yasagent进程(每台服务器1个),yasboot的运行均依赖于这两个进程。
yasom进程
Yash anDB运维服务进程,接收yasboot命令并进行指令下发和控制,管理yasagent进程。
yasagent
无状态的运维服务进程,运行在YASDB进程所在的服务器上,接收yasom的指令并通过工具/驱动/命令等方式向 YASDB进程或文件系统执行查询和操作等任务。
获取安装包
个人版:https://download.yashandb.c/download
下载yashandb-personal-23.2.1.100-linux-x86_64.tar.gz
初始环境调整
确定1688端口不被占用
netstat -anp|grep 1688
系统参数配置
关闭交换分区(目的是为最大限度使用物理内存)
echo "vm.swappiness = 0">> /etc/sysctl.conf
调整自动分配本地端口范围
echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf
调整进程的VMA上限
该参数作用是限制一个进程可以拥有的VMA(虚拟内存区域)的数量,调整是为了让数据库进程充分使用主机资源
echo "vm.max_map_count=2000000" >> /etc/sysctl.conf
使变量生效
sysctl -p
资源配置
cat >> /etc/security/limits.conf << EOF yashan soft nofile 65536 yashan hard nofile 65536 yashan soft nproc 65536 yashan hard nproc 65536 yashan soft rss unlimited yashan hard rss unlimited yashan soft stack 8192 yashan hard stack 8192 EOF
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
创建安装用户
添加用户及用户组
useradd yashan echo "yashan" |passwd --stdin yashan groupadd YASDBA usermod -a -G YASDBA yashan
配置sudo
chmod +w /etc/sudoers cat >> /etc/sudoers << EOF yashan ALL=(ALL)NOPASSWD:ALL EOF chmod -w /etc/sudoers
安装(使用yashan用户)
su - yashan
mkdir install
#上传软件包到i nsta ll 目录下,执行如下命令解压
cd install
tar -zxf yashandb-personal-23.2.1.100-linux-x86_64.tar.gz
步骤1:生成配置文件
./bin/yasboot package se gen --cluster yashandb -u yashan -p yashan --ip 192.168.50.168 --port 22 --install-path /home/yashan/yasdb_home --data-path /home/yashan/yasdb_data --begin-port 1688

#–cluster:自定义数据库集群名称,该名称也将作为初始数据库的名称(database name)
#–u:操作系统用户,用户安装数据库软件
#–p:操作系统用户密码
#–ip:服务器ip
#–port:指定SSH服务端口,默认是22,以实际情况为准
#–install-path:指定数据库安装路径,即YASDB_HOME
#--data-path:指定数据存放目录,即YASDB_DATA
#–begin-port:指定数据库监听端口,默认1688,可以自定义
步骤2:执行安装
./bin/yasboot package install -t hosts.toml -i yashandb-personal-23.2.1.100-linux-x86_64.tar.gz

#此步骤会启动yasom和yasagent服务,为后面yasboot安装数据库做准备
步骤3:部署数据库
./bin/yasboot cluster deploy -t yashandb.toml

#此步骤会启动yasdb服务,数据库部署成功
步骤4:配置环境变量
cd /home/yashan/yasdb_home/yashandb/23.2.1.100/conf/ source yashandb.bashrc cat yashandb.bashrc >> ~/.bashrc
步骤5:初始化sys用户密码
yasboot cluster password set -n yasdb_123 -c yashandb

验证安装是否成功
查看数据库状态
yasboot cluster status -c yashandb -d

登录数据库
yasql / as sysdba
select status from v$instance;
select database_name from v$database;

关闭数据库
#方式一
yasboot cluster stop -c yashandb

#方式二,需要登录数据库后执行
shutdown immediate;
启动数据库
yasboot cluster start -c yashandb

卸载
yasboot cluster clean --cluster yashandb --purge
yasboot package uninstall --cluster yashandb
#清理环境变量
清除服务器上~/ .bashrc中与YashanDB有关的环境变量
yasql 基本使用-登录与连接数据库
方式一:
通过输入用户名、密码、数据库服务器名和监听端口等信息登录并连接数据库,格式为 “yasql /@:”。
yasql sys/yasdb_123@192.168.50.168:1688
Ø 如果省略ip和port,默认是连接到本地的1688端口。
Ø 用户名或者密码包含特殊符号,需要双引号包裹,并通过\对双引号进行转义或外加单引号进行包裹。举例如下:
yasql sys/\"yasdb_123\"@192.168.50.168:1688 yasql sys/'"yasdb_123"'
方式二:
通过操作系统认证方式登录,格式为"yasql/as sysdba "或"yasql / as sysdba "。
yasql / as sysdba
YashanDB体系结构
内存体系
包括共享内存区域(SGA,Shared Global Area)和私有内存区域(SPA,Session Private Area)。
私有内存区域 是每个会话创建时分配的独占内存区域,与共享内存区域不同,此区域的内存由会话独占和管理,会话退出时释放,该内存区域主要是满足SQL执行时的各种内存空间需求。
共享内存区域(SGA)
共享内存区域一般共享给多个会话或线程使用,主要包括内存共享池(SHARE POOL)、数据缓存(DATA BUFFER)、有界加速缓存(AC BUFFER)以及虚拟内存(VIRTUAL MEMORY)。
Ø SQL缓存:保存SQL解析树和执行计划。
Ø 日志缓存:redo日志的缓存区。
Ø PL池:存储过程、包、触发器等对象创建后会加载到PL池。
Ø 数据字典缓存:包括数据库文件、表、索引、列、用户、权限和其它数据库对象的有关信息。
Ø 大对象池:分配大对象的区域,例如超大SQL文本。
l 数据缓存
Ø 数据缓存用于缓存当前或最近使用的从磁盘读取的数据块的拷贝,来优化数据库的I/O减少物理读/写。
Ø 采用LRU算法管理,当缓存区域内存不足,需要回收内存以重用时,选择一些最长时间未使用的缓存块进行淘汰回收。
Ø 大小受data_buffer_size控制。
l 虚拟内存
Ø 主要为需要物化数据的SQL算子使用,例如order by、hash join、统计信息收集等。
Ø 如果虚拟内存不足时,需要通过将虚拟内存交换到SWAP表空间来释放内存,必要时再将内存从SWAP表空间换入。
Ø 大小受参数vm_buffer_size控制。
l 有界加速缓存
Ø 有界加速缓存类似数据缓存,但缓存的对象不同,只缓存AC对象。Yashan独创
私有内存区域(SPA)
l 会话栈内存:一般用来存放会话执行过程中临时使用的局部变量等。
Ø 由参数WORK_AREA_STACK_SIZE控制,推荐使用默认值。。
l 会话堆内存:一般用来存放生命周期较长的运行期数据。
Ø 由参数WORK_AREA_HEAP_SIZE控制,推荐使用默认值。
私有内存区域是会话独占和管理的内存区域。
常用内存参数
l DATA_BUFFER_SIZE
Ø 指定数据缓存区的大小。数据缓存区容量越大,数据库整体性能越好。
Ø 默认值:256M。取值范围:[32M,64T]。重启生效。
l VM_BUFFER_SIZE
Ø 定SQL标准计算使用的内存大小。当计算中排序、物化、JOIN等涉及的数据量较多时,建议调大此参数,可以增加计算性能。
Ø 默认值:128M。取值范围:[8M,2T]。重启生效。
l 修改内存
ALTER SYSTEM SET DATA_BUFFER_SIZE =1G SCOPE =SPFILE;
ALTER SYSTEM SET VM_BUFFER_SIZE =1G SCOPE =SPFILE;
说明:SCOPE =SPFILE 修改参数后需要重启数据库生效。
进程、线程体系
YashanDB程架构。服务端核心进程(YASDB)主要包含工作线程和后台线程。
工作线程 是指每个客户端连接到数据库实例所创建的线程。
后台线程 是数据库实例为实现各项工作机制和保证数据一致性等所衍生的一系列线程。
服务端核心进程(YASDB)
实例启动后,创建YASDB进程用于处理连接到数据库实例的请求。
工作线程(WORKER)
WORKER线程是Yash anDB数据库专用模式下的会话主线程,主要负责当前会话业务执行的调度。
专用模式下客户端每创建一个连接,会在服务端创建一个WORKER线程,客户端连接退出时,WORKER线程退出。
会话连接的上限由参数MAX_SESSIONS控制。
后台线程(主要的线程)
TCP监听线程(TCP_LSNR)
TCP监听线程的主要功能是监听指定的TCP端口,处理客户端的连接请求并创建出会话。
数据脏块刷新线程(DBWR)
将脏数据块从数据库缓存区写回到磁盘上的数据文件。
redo刷盘线程(LOGW)
基于一定的策略(定期或redo 数量达到阈值),将内存中的redo日志刷盘到redo日志文件。
检查点任务调度线程(CKPT)
调度全量和增量checkpoint的任务。
YashanDB事务和锁
事务概述
事务是包含一个或一组SQL语句的工作单元,将数据修改应用至数据库后,这些SQL语句全部被提交则数据修改生效,或全部被回滚则数据修改被撤销。
事务的基本特性
原子性(Atomi city)
Ø 一个事务中所有的修改要么全部生效,要么全部不生效,不允许部分生效。
一致性(Consistency)
Ø 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
隔离性(Isolation)
Ø 多个事务并发操作时,各个事务都可以独立运行,互相隔离,互不干扰。根据隔离级别的不同,事务能看到的表现也各不相同。
持久性(Durability)
Ø 事务提交后,事务对数据的修改是持久化的,即使发生故障后,数据的修改也不会丢失。
事务的隔离级别
**作用**
Ø 控制多个事务之间的并发,并发事务在不同的隔离级别下只能访问对应可见版本的数据。
现象
Ø 脏读:一个事务读取了另外一个尚未提交事务修改的数据。
Ø 不可重复读:同一个事务内,多条语句重复读取同一行数据,读取到的数据发生变化。
Ø 幻读:同一事务内,多条语句重复读取同一条件的数据,读取到的结果集数量发生变化。
ANSI标准中定义了四种事务隔离
Ø 读未提交(Read Uncommitted)
Ø 读已提交(Read Committed)
Ø 可重复读(Repeatable Read)
Ø 可串行化(Serializable)
Yash anDB当前版本支持的事务隔离级别为读已提交和可串行化,默认为读已提交。
SHOW PARAMETER isolation_level
锁机制
作用
Ø 主要处理写写之间的并发,通过锁机制控制不同事务对同一数据的并发修改。
分类
Ø 表锁:主要发生DDL语句或修改数据的DML语句,在语句执行时自动加锁,直至事务结束时自动释放。
1. Share Lock(表级共享锁,S):最低级的表锁,允许DML并发执行,DML修改数据时会加表级共享锁来阻塞并发DDL的执行。
2. Exclusive Lock(表级排他锁,X):最高级别的表锁,DDL操作时会加表级排他锁,阻塞其他并发的 DDL和DML执行。
Ø 行锁:主要发生在DML语句修改数据时,事务修改数据时会锁定要修改的行记。行锁只有排他锁一种类型,不支持行级共享锁。
锁相关视图
V$LOCK:显示当前所有锁的信息
V$LOCKED_OBJECT:显示当前所有对象锁的信息
物理存储
主要包括控制文件,Redo日志文件,数据文件和归档日志文件等文件。
YashanDB实例启停机制
YashanDB实例启停机制
实例启停机制的三个阶段
NOMOUNT**:启动实例,但不加载数据库。
Ø 这个状态下可以重建控制文件,比如控制文件损坏。
MOUNT**:实例已启动,数据库完成加载,但数据库仍处于关闭状态。
Ø 这个状态下可以恢复数据库。
OPEN**: 实例已启动,数据库已处于打开状态。
Ø 这个状态下可以读写数据库。
启动到NOMOUNT状态
yasboot cluster start -c yashandb -m nomount
启动到MOUNT状态(方式一)
yasboot cluster start -c yashandb -m mount
启动到MOUNT状态(方式二)
ALTER DATABASE MOUNT;
启动到OPEN状态(方式一)
yasboot cluster start -c yashandb -m open
启动到OPEN状态(方式二)
ALTER DATABASE OPEN;
查询数据库状态
SELECT status FROM V$INSTANCE ;
打开模式
概述
l 在启动数据库到OPEN 状态时,可以根据不同场景配置数据库的打开模式为READWRITE、RESETLOGS或者 UPGRADE。
l 如果数据库运行在OPEN状态,不能切换到其他模式。
n 通过ALTER DATABASE命令配置数据库打开模式
SQL > ALTER DATABASE OPEN [READWRITE |RESETLOGS |UPGRADE ]
数据库三种打开模式
| 打开模式 | 作用 | 适用场景 |
|---|---|---|
| READWRITE | 数据库完整事务的读写操作,数据库可以对外提供服务。 | 适用于生产环境。默认的模式,推荐使用的模式。 |
| RESETLOGS | 数据库需要重新设置日志号。 | 数据库发生故障时,可以使用RESETLOGS模式打开数据库。此时可以通过重新设置日志号,对数据库进行不完全恢复。 |
| UPGRADE | 数据库升级时,使用此模式。 | 用于数据库升级。 |
关闭实例
关闭实例(方式一)
yasboot cluster stop -c yashandb
关闭实例(方式二)
SHUTDOWN IMMEDIATE;
l SHUTDOWN NORMAL:等待所有事务正常结束后关闭。默认关闭数据库将采用NORMAL模式。
l SHUTDOWN IMMEDIATE:立即中断当前用户的连接,同时强行终止用户的当前执行中的事务,将未完成的事务回退,并关闭数据库。一般推荐使用这种方式关闭数据库。
l SHUTDOWN ABORT:强制中断所有数据库操作并关闭数据库,不会等待事务回滚完成,在启动数据库时需要进行实例恢复。生产环境一般不推荐这种方式来关闭数据库。
实例配置参数
参数文件
配置参数文件是名为yasdb.in i的文本文件,存放在$YASDB_DATA/config路径下,安装时所指定的数据库初始配置参数将保存在此文件中,后续数据库运行过程中对配置参数的非memory修改也将持久化到此文件中。
通过show parameter 查看参数
SHOW PARAMETER data_buffer_size
修改参数
方式一:使用SQL命令修改参数(推荐)
ALTER SYSTEM |SESSION SET parameter_name = parameter _va l ue [SCOPE = spfile |memory |both ];
Ø ALTER SYSTEM/ALTER SESSION:分别用于修改系统级别和会话级别的配置参数,而ALTER SESSION修改方式默认只写到内存,仅对当前会话生效。
Ø parameter_name/parameter_value:分别为配置参数名称和值。
Ø SCOPE:用于设定对配置参数修改后的生效方式,这部分可选,默认是both。
• spfile:将参数值写入参数文件,需重启才能生效。
• memory:将参数值写入内存,立即生效,但重启后失效。
• both:将参数值同时写入内存和参数文件,立即生效,重启后也生效。
ALTER SYSTEM SET data_buffer_size =256M SCOPE =spfile ;
方式二:编辑yasdb.ini修改参数值(不推荐)
cd $YASDB_DATA/config vi yasdb.ini
Ø 需要重启数据库生效。
Ø 一般用于使用SQL设置参数之后,重启数据库,因为内存不足报错时,编辑参数文件调整参数。
Ø 建议修改前备份一份参数文件。
运行日志
概述
运行日志记录了数据库各服务运行产生的轨迹信息、调试信息、状态变迁、未产生影响的潜在问题和直接的错误信息。
文件名及路径
l 默认路径:$YASDB_HOME/log/yashandb/db-1-1/run/run.log
l 路径受参数RUN_LOG_FILE_PATH控制
l 文件名run.log不可修改
运行日志级别
YashanDB 运行日志文件支持不同级别的日志管理,并根据配置打印不同级别的日志。
从上到下,日志等级依次增高,高日志级别包含低日志级别:
| 级别 | 描述 |
|---|---|
| OFF | 关闭日志 |
| FATAL | 致命错误产生的日志 |
| ERROR | 一般错误产生的日志 |
| WARN | 告警类错误产生的日志 |
| INFO | 正常运行日志(默认日志级别) |
| DEBUG | 调试日志级别 |
| TRACE | 追踪日志 |
| ALL | 所有日志 |
存储管理
YashanDB通过将数据库存储结构划分为逻辑存储结构和物理存储结构来提供高效、灵活、便捷的存储管理能力。
物理存储结构
物理存储结构是指数据库在物理上的构成,通常为操作系统层面物理文件。比如参数文件、控制文件、数据文件、 Redo日志文件、归档文件、密码文件等。
逻辑存储结构
通过划分逻辑存储结构,可以方便物理存储的管理,包括表空间、数据段、数据区、数据块等逻辑存储概念。
表空间
数据库划分的逻辑单元,包含若干数据库对象,例如表、索引等。
数据段
每个数据库对象至少包含一个数据段。空间上由若干数据区组成。包含表段、索引段、回滚段等不同类型的段。
数据区
由一组物理上连续的数据块组成,可以提高空间管理的效率。
数据块
数据存储的最小逻辑单元,默认的大小8K。包含表、索引、UNDO等不同类型的块。
数据库存储管理
Yash anDB内置了如下表空间:
| 表空间 | 作用 |
|---|---|
| SYSTEM表空间 | 主要包含数据字典;数据库管理信息的表和视图;已编译的存储对象,如触发器、过程和包。 |
| SYSAUX表空间 | 作为SYSTEM表空间的辅助表空间,YashanDB AWR快照信息的默认表空间。 |
| USERS表空间 | 默认的用户表空间,用于存储永久用户对象和私有信息。 |
| TEMP表空间 | 主要用于临时表的段分配,存储临时表数据信息。 |
| UNDO表空间 | 用于YashanDB创建和管理回滚(撤销数据库更改)信息。 |
| SWAP表空间 | 用于存储临时数据排序,提高排序期间空间管理操作的效率。 |
多个表空间的优点
l 将用户数据与数据字典数据分开,以减少I/O争用。
l 将一个应用程序的数据与另一个应用程序的数据分开,以防止在表空间必须脱机时多个应用程序受到影响。
l 将不同表空间的数据文件存储在不同的磁盘驱动器上,以减少I/O争用。
l 使单个表空间脱机,而其他表空间可以继续保持联机,无需全部表空间脱机或关闭数据库,从而提供更好的可用性。
l 按单个表空间执行逻辑备份。
创建表空间
使用CREATE TABLESPACE语句在数据库中创建一个新的表空间。
CREATE TABLESPACE yashan1 DATAFILE 'yashan1' SIZE 4M AUTOEXTEND ON NEXT 4M MAXSIZE 1G ;
新建用户指定表空间
CREATE USER yashan_user1 IDENTIFIED BY yashan_123 DEFAULT TABLESPACE yashan1;
GRANT DBA TO yashan_user1;
修改用户默认表空间
ALTER USER yashan_user1 DEFAULT TABLESPACE users;
删除表空间
DROP TABLESPACE yashan1;
删除一个包含数据的表空间
DROP TABLESPACE yashan1 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
Ø INCLUDING CONTENTS:该语句用于指定将表空间及其包含的所有对象都删除。
Ø AND|KEEP DATAFILES:指定在删除表空间时,其对应的数据文件是被删除,还是被保留,缺省为保留。
Ø CASCADE CONSTRAINT:当存在其他表空间里的对象定义了到本表空间里对象的外键约束时,先将这些外键约束项删除,再删除本表空间
删除表空间时的注意项
l 不能删除一个已被某个用户指定的DEFAULT TABLESPACE,必须先通过ALTER USER语句将其变更。
l 不能删除一个已创建了任何数据库对象的表空间,除非指定了INCLUDING CONTENTS语句。
l 如果表空间中存在被其他表空间对象定义的外键约束,那么即使指定了INCLUDING CONTENTS语句,该表空间也不能被删除,除非同时指定了CASCADE CONSTRAINT。
l 不能删除SYSTEM/SYSAUX/UNDO/SWAP/TEMPORARY/DEFAULT等内置表空间。
n 使用ALTER TABLESPACE 维护表空间
ALTER TABLESPACE语句用于更改一个已存在的表空间的相关属性。
l 增加数据文件
ALTER TABLESPACE yashan1 ADD DATAFILE 'yashan1_02' SIZE 4M AUTOEXTEND OFF ;
l 表空间回收
ALTER TABLESPACE yashan1 SHRINK SPACE;
DBA_TABLESPACES:显示所有表空间的信息。
SELECT tablespace_name ,total_bytes/1024/1024 total_mb ,user_bytes/1024 /1024 user_mb FROM dba_tablespaces ;
DBA_DATA_FILES:显示所有数据文件信息。
SELECT tablespace_name ,file_name FROM dba_data_files;
V$TABLESPACE:显示所有表空间的汇总信息。
SELECT id ,name ,status ,contents,temporary FROM v$tablespace ;
V$DATAFILE:显示数据文件汇总信息。
SELECT name, creation_time, ts#, bytes/1024/1024 mb, status FROM v$datafile;
文件管理
密码文件
密码文件作用
l 密码文件以加密的方式存放着系统用户的密码(比如sys用户)。
密码文件位置
l 密码文件名为yasdb.pwd,为文本文件,不可直接进行编辑,可以通过yaspwd工具或者yasboot工具修改密码。
l 密码文件路径受PASSWORD_FILE参数控制,默认在$YASDB_DATA/instance/yasdb.pwd。
show parameter password_file;
yaspwd 命令格式
yaspwd file =
input_fi le =<input_fname>
‘sys ={y|passwo rd }’
使用yaspwd生成密码文件
yaspwd file=yasdb.pwd password=yasdb_123
提示:yasdb.pwd文件不存在,才能生成新的密码文件。
参数文件
参数文件作用
记录数据库的配置信息。实例在启动阶段读取参数文件,并根据参数文件中的参数设置来配置数据库。
参数文件内容
参数文件定义了数据库实例的内存组件大小、监听端口、字符集、数据块大小等参数的配置信息。
参数文件位置
参数文件名为yasdb.in i,为文本文件,可直接进行编辑(不建议),存放在$YASDB_DATA/config路径下。
修改参数配置
参数文件虽然可以直接编辑,但是推荐使用SQL命令修改参数。
如修改data_buffer_size参数,可以使用如下命令修改后再重启数据库才能生效。
ALTER SYSTEM SET data_buffer_size=256M SCOPE=spfile;
SHOW PARAMETER data_buffer_size;
控制文件
控制文件作用以及重要性
l 一旦控制文件损坏,数据库将会宕机。Yash anDB默认会创建3份冗余控制文件,提高安全性。
l 它包含有关打开数据库所需的数据文件、在线重做日志文件等的信息。MOUNT数据库时,数据库会打开控制文件并读取里面内容。
l 二进制文件,不可以编辑。
控制文件内容
l 数据库名称
l 数据文件名字及位置
l Redo日志文件名字及位置
l 表空间信息
l 归档日志信息
控制文件查看
l 方式一:通过参数CONTROL_FILES(show paramete contorl_files)
l 方式二:通过视图V$CONTROLFILE
Redo日志文件
Redo日志作用
l Redo日志记录的数据库的所有历史变更。
l 在事务提交前,只要将Redo日志持久化即可,不需要将数据持久化。
l 当系统崩溃时,虽然数据没有持久化到数据文件,但是Redo日志已经持久化。
l 系统可以根据Redo日志的内容,将所有数据恢复到最新的状态。
Redo日志文件的查看
可以通过V$LOGFILE查看Redo日志的信息,包括它的ID、路径、块大小、已用大小、序列号与状态等信息。
SELECT id, name, block_size, block_size * block_count / 1024 / 1024 size_mb, status FROM v$logfile;
l Redo日志大小:添加日志成员的时候指定size,就是Redo 的大小。
l Redo日志块大小:在添加日志成员的时候指定BLOCKSIZE,就是Redo日志的块大小,如果不指定,默认为4096 byte。
l Redo日志的状态:日志文件有四种状态,分别为CURRENT、ACTIVE、INACTIVE与NEW。CURRENT为正在使用的,ACTIVE为未归档未可复用,INACTIVE为已归档可复用,NEW为新增未使用过的日志。
Redo日志文件维护
添加Redo日志
ALTER DATABASE ADD LOGFILE ('redo5' SIZE 128M ,'redo6' SIZE 128M);
切换Redo日志
当前的一个Redo日志需要删除等维护操作,但是状态不是可复用的,我们需要切换日志组,并执行checkpoint。
ALTER SYSTEM SWITCH LOGFILE ;
ALTER SYSTEM CHECKPOINT;
- SWITCH LOGFILE:强制数据库停止写入当前的重做日志组,并立即切换到下一个可用的日志组 。这通常用于归档当前的日志,或者在删除/维护日志组前改变其 CURRENT 状态 。
- CHECKPOINT:强制触发全局检查点。该操作会命令 DBWR 进程将 Buffer Cache 中的所有脏数据(已修改但未写入磁盘的数据)写入数据文件 ,并同步更新控制文件及数据文件头部的 SCN(系统更改号)。
删除Redo日志
只有状态为INACTIVE与NEW的Redo日志才可以进行删除。
ALTER DATABASE DROP LOGFILE '/home/yashan/yasdb_data/db-1-1/dbfiles/redo6';
归档文件
归档日志作用
归档日志是Redo日志完成归档后形成的备份文件,也为二进制文件。归档日志可用于数据恢复,也可以在主备库中的备库上应用,还原主库上的数据。
归档模式的查看
默认安装下,数据库为归档模式。可以查看V$DATABASE视图中的log_mode字段显示数据库当前的归档模式配置,字段值为ARCHIVELOG表示为归档模式,NOARCHIVELOG表示非归档模式。
SELECT database_name ,log_mode ,open_mode FROM v$database ;
为了能将数据库还原到任意时间点以及主备库的搭建,建议生产环境配置为归档模式。
归档模式切换
1、查看归档路径
SHOW PARAMETER archive_local_dest ;
2、修改归档路径
l 归档路径只允许静态修改,需要重启生效
l 确保路径存在,且操作系统yashan用户有读写的权限。
ALTER SYSTEM SET archive_local_dest='/home/yashan/arch' scope =spfile;
如果/home/yashan/arch路径不存在,汇报下面的错误

3、关闭数据库实例
SHUTDOWN IMMEDIATE;
4、启动数据库到MOUNT状态
yasboot cluster start -c yashandb -m mount
5、调整到归档模式
从非归档模式调整到归档模式
ALTER DATABASE ARCHIVELOG ;
从归档模式调整到非归档模式
ALTER DATABASE NOARCHIVELOG;
注意:从归档模式调整到非归档模式,需要设置replication_addr为空。
ALTER SYSTEM SET replication_addr='' SCOPE=spfile;
6、将数据库开启到OPEN状态
ALTER DATABASE OPEN ;
7、查看当前数据库的归档模式
SELECT database_name ,log_mode ,open_mode FROM v$database ;
数据文件
数据文件分类
l 系统数据文件
系统数据文件就是SYSTEM和SYSAUX表空间的数据文件,主要存放数据库系统内部生成的数据。
l UNDO数据文件
UNDO数据文件主要存放回滚段的数据。
l TEMP数据文件
TEMP数据文件就是TEMP表空间里的临时数据,用于临时表的段分配。
l SWAP数据文件
虚拟内存不足时,通过将虚拟内存交换到SWAP表空间来释放内存。
l 用户数据文件
主要包括内置表空间USERS的数据文件以及用户自己创建的数据表空间的文件,存放实际的生产数据。
数据文件的属性
l 数据文件的大小
数据块默认大小为8k,单个普通数据文件最大为512G。
数据块为16k和32k的时候,单个数据文件的最大相应成倍增大。
l 数据文件的状态
数据文件的状态有ONLINE和OFFLINE,OFFLINE下的数据文件不能被访问使用。
l 数据文件的自动扩展性
自动扩展性有ON和OFF两种模式,ON表示允许数据文件空间自动扩展,OFF表示不允许自动扩展。
数据文件的查看
可以通过V$DATAFILE 视图查看数据文件的信息。
SELECT name ,bytes ,status ,auto_extend FROM v$datafile ;
数据库对象管理
什么是数据库对象
数据库对象是数据库里面用来存储和指向数据的各种概念和结构的总称。
数据库支持的对象包括:
l 表:表是一个逻辑概念,是数据库组织管理数据的基本单位。
l 索引:索引是建立在表上的逻辑对象,索引可以提高表数据的访问查询效率。
l 视图:视图是一种虚定义的逻辑对象,结构和数据是建立在对表的查询基础之上的。
l 序列:序列可以产生一组等间隔的数值,主要用于表的主键的自增。
l 同义词:数据对象的别名,与其代表的数据对象是一种映射关系。
l 存储过程:一组为了完成特定功能的SQL/PLSQL语句集。
l 触发器:一种特殊类型的存储过程,通过指定的事件触发执行。
表概述
l 一个表描述了一个实体,表定义为列的集合。与电子表格相似,数据在表中式按行和列的格式组织排列的。
l 表中的每一列都设计为存储某种类型的信息(例如字符串或数字)。
l 表上可以有约束、默认值等用于确保数据的有效性。
l 表中的元素:表名、列名、数据类型、约束。
建表语法
CREATE TABLE sales.area_04
(
area_no CHAR(2) NOT NULL,
area_name VARCHAR2(60),
dhq VARCHAR2(20) DEFAULT 'ShenZhen' NOT NULL
);
修改表
n 修改表名,将表名area_04修改成area_05
ALTER TABLE area_04 RENAME TO area_05;
n 修改列名,表area_05列名area_name修改为area_name_01
ALTER TABLE area_05 RENAME COLUMN area_name TO area_name_01;
n 修改列长度,修改area_05表area_name_01列的长度
ALTER TABLE area_05 MODIFY area_name_01 VARCHAR(80);
n 添加字段,area_05表添加NUM字段
ALTER TABLE area_05 ADD NUM number (20);
n 验证area1表添加字段成功
DESC area_05;
n 删除字段,删除area_05表的num字段
ALTER TABLE area_05 DROP COLUMN num;
n 验证area_05表删除字段成功
DESC area_05;
管理索引
索引的作用
l 索引是用来快速访问数据的一种数据结构。
l 根据业务合理的创建索引可以提高查询的效率。
创建索引语法
CREATE INDEX [user_name .] index_name ON table_name (column_name )
l user_name:用户名,如果省略,默认是创建在当前连接用户下。
l index_name:索引名。
l table_name:表名。
l column_name:列名。
创建表示例表
CREATE TABLE sales.area_06
(
area_no CHAR(2) NOT NULL,
area_name VARCHAR2(60),
dhq VARCHAR2(20) DEFAULT 'ShenZhen' NOT NULL
);
创建索引
CREATE INDEX idx_area_06_info_1 ON area_06 (area_no);
验证索引创建成功
SELECT table_owner, table_name, index_name FROM DBA_INDEXES WHERE table_name = 'AREA_06';
修改索引
l VISIBLE/INVISIBLE 语句用于设置索引对优化器是否可见。
l UNUSABLE语句用于设置索引为不可用状态,之后对表操作不会触发该索引更新
让索引对优化器不可见
ALTER INDEX idx_area_06_info_1 INVISIBLE;
让索引对优化器可见
ALTER INDEX idx_area_06_info_1 VISIBLE ;
设置索引不可用
ALTER INDEX idx_area_06_info_1 UNUSABLE ;
索引重建(REBUILD)
ALTER INDEX idx_area_06_info_1 REBUILD ;
删除索引
DROP INDEX idx_area_06_info_1 ;
管理视图
视图的定义
l 用户可以将一个使用频率较高的查询语句定义为一个持久化的对象,该持久化对象称为视图。
视图的作用
l 简化查询,使用视图代替使用频率较高的查询,特别是复杂查询,可以降低用户编写SQL的复杂度。
l 解耦合,在保证视图列的名称、数据类型不变的前提下,修改基表其他元素的定义不影响视图的正常使用。
l 权限隔离,视图作为一个独立的对象,用户在视图上的权限与在基表上的权限是分离的。合理地设计视图列及权限,可以有效避免基表中的全部信息完全暴露给只需部分信息(视图列)的用户。
创建视图语法
SQL > CREATE [OR REPLACE ] VIEW view_name AS subquery ;
l OR REPLACE:如果已经存在了就替换已经存在的。
l view_name:视图名。
l subquery:查询语句。
创建查询基表area_06的视图v_area_06
CREATE OR REPLACE VIEW v_area_06 AS SELECT area_no ,area_name FROM area_06;
由于基表area_06无数据,先向基表area_06插入测试数据
INSERT INTO area_06 VALUES ('01','华东','Shanghai');
INSERT INTO area_06 VALUES ('02','华西','Chengdu');
INSERT INTO area_06 VALUES ('03','华南','Guangzhou');
INSERT INTO area_06 VALUES ('04','华北','Beijing');
INSERT INTO area_06 VALUES ('05','华中','Wuhan');
COMMIT;
查询视图v_area_06
select * from v_area_06;
查询视图v_area_06 的字段信息
desc v_area_06;
删除视图v_area_06,不会影响基表area_06
drop view v_area_06;
#可以正常查询基表
select * from area_06;
注意:如果删除基表,则视图也会变得不可用。
数据库相关视图
n 对象查询相关视图 DBA_OBJECTS
n 表相关视图 DBA_TABLES
n 索引相关视图 DBA_INDEXES
n VIEW相关视图 DBA_VIEWS
举例查询VIEW视图
select owner,view_name,text from DBA_VIEWS where owner='SALES';
数据字典
概念
数据字典指YashanDB用于管理和显示数据库元数据信息的一组系统表、系统视图和动态视图。
l **系统表:**系统表由YashanDB自动维护,不建议数据库管理员自行修改系统表中的数据。
l 系统视图:系统视图是基于系统表创建的一组视图,将用户关心的元数据信息以便于理解的方式进行呈现。一般指以DBA_、ALL_、USER_开头的视图。
l 动态视图:系统提供的以V、GV或DV$开头的视图,用于实时展现正处于数据库运行中的各项数据,尤其与性能相关数据,用户通过查询这些视图,对系统进行管理和优化。
系统视图
三组系统视图
| 视图名称前缀 | 使用者 | 显示内容 |
|---|---|---|
| DBA_ | 数据库管理员 | 用于展现整个数据库的全局视图,其中包含了所有用户的对象信息。 |
| ALL_ | 所有用户 | 当前用户可访问的所有对象信息 |
| USER_ | 所有用户 | 属于当前用户模式的对象信息 |
DBA_TABLES/ALL_TABLES/USER_TABLES三者关系
l DBA_TABLES >= ALL_TABLES >= USER_TABLES
l 当某一用户拥有DBA权限时,DBA_TABLES 与 ALL_TABLES 是等价的。
l 查询DBA视图的用户需具有DBA权限或由其他用户进行对象权限授权后才可查询。
常用的动态视图
l V$DYNAMIC_VIEWS:显示当前系统提供的所有动态视图名称。
l V$INSTANCE:显示当前实例状态的汇总信息。
l V$DATABASE:显示当前实例的数据库汇总信息。
l V$LOGFILE:显示所有redo文件信息。
l V$SESSION:显示当前所有会话信息。
l V$PROCESS:显示系统中所有线程信息。
#yashandb# #崖山数据库#
YCA官方报名链接
https://www.yashandb.com/YCA_courses




