当前位置: 首页 > news >正文

06-Oracle表空间与用户管理

本讲主要内容:

1.表空间管理:表空间的作用,创建,修改,删除及管理;

2.用户管理:创建用户,修改用户,删除用户,修改密码,解锁;

3.用户权限管理:授权,撤销授权

4.数据库的备份与恢复

5.数据库导入导出

表空间

数据库由若干表空间组成
表空间的集合包含:
表段,存放表数据
索引段,存放索引数据
临时段,排序
回滚段,事务读一致性、回滚
查看有哪些表空间
Select * from v$tablespace
查看有哪些数据文件
Select * from v$datafile

表空间管理

表空间和数据文件的作用:
使用户数据和数据字典(系统表数据)数据相分离。减少字典对象和模式对象在同一个数据文件中的竞争
使不同应用程序的数据相分离。使用户对数据文件的管理更清晰,各个程序的表空间的操作互不影响,即使单个表空间处于脱机也不影响其他的表空间正常运行
将回滚段从用户数据中分离出来,防止了单个磁盘的故障造成的数据的不可恢复

表空间可以分为两大类:

系统表空间:
在创建数据库时一同创建的,用于存放数据字典对象,并包含了系统回滚段。
可以存储用户数据,但oracle建议一般不用于存放用户数据
非系统表空间:
永久表空间:
用于存储用户永久数据
临时表空间 (temporary tablespace)
用于存储临时数据,如用户数据进行排序时产生的数据;使用临时表空间在很大程度上提高了用户进行大量数据的排序性能
还原表空间(undo tablepspace)
提供对回滚段的自动管理

管理表空间主要包括以下操作:

创建表空间
Create (temporary|undo) tablespace
更改表空间的存储参数
更改表Alter tablespace/manage tablespace
空间的状态
删除表空间
drop tablepace/manage tablespace
查看表空间的信息
对表空间中的的分配和使用有两种管理方式:
数据字典管理
使用数据字典来跟踪表空间的使用情况
本地管理(9i后默认的方式,也是推荐的方式):
使用位图跟踪表空间的使用情况,位图存储于头文件中

创建表空间

Extend management子句:区的管理方式
本地管理(local)还是字典管理(dictionary)
如果是local需要指定是自动管理(autoallocate)表空间大小还是一个指定大小(uniform size)的区来管理
Segment space management子句:段空间的管理方式
自动管理(auto)或使用空闲列表进行管理(manual)
用户还需要指定是否启动重做日志文件纪录表空间的数据更改情况(Logging  /  nologging
datafile子句:
至少指定一个属于该表空间的数据文件

创建表空间

CREATE TABLESPACE "APP" LOGGING DATAFILE  'C:\ORACLE\ORADATA\EXAMPLE\APP1.DBF'  SIZE 5M REUSE AUTOEXTEND    ON NEXT  512K MAXSIZE  10M 

创建本地管理的临时表空间

CREATE  temporary TABLESPACE "APPTEMP" TEMPFILE  'C:\ORACLE\ORADATA\EXAMPLE\APPTEMP.DBF'  SIZE 5M 
EXTENT MANAGEMENT  LOCAL
Uniform size 1 M

创建本地管理的还原表空间

CREATE  undo TABLESPACE “roolback1" DATAFILE  'C:\ORACLE\ORADATA\EXAMPLE\roolback1.DBF'  SIZE 5M 

表空间的状态

联机
用户可以正常访问此表空间的数据
又可以将联机状态的表空间设置为只读或可读写:
脱机
此状态的表空间或数据暂时不可用,用户不能访问
用于部分的停止数据库、修复数据库文件、改物理文件名、移动物理文件
表空间脱机

ALTER TABLESPACE "APP" OFFLINE Normal

恢复表空间为联机状态

  ALTER TABLESPACE "APP" ONLINE

更改表空间的状态

SYSTEM表空间和临时表空间不能被脱机
包含活动的回滚段的表空间也不能被脱机
Normal
清除此表空间的所有数据文件在SGA中分配的空间,该方式为默认方式,且再联机的时候不需要执行介质恢复
Temporary
脱机前需要设置检查点,则再联机的时候需要执行介质恢复
Immediate
脱机前不需要设置检查点,则再联机的时候需要执行介质恢复
如果数据库运行在noarchivelog模式下,则不能立即脱机
For recover
将数据库中进行point-in-time恢复的表空间设置为脱机

设置表空间为只读,只读表空间不能写数据,可删除数据

ALTER TABLESPACE "APP" READ ONLY
可将只读表空间写到CD中,然后修改表空间数据文件的位置

设置表空间为读/

ALTER TABLESPACE "APP" READ WRITE

删除表空间

DROP TABLESPACE “APP” INCLUDING CONTENTS AND DATAFILES
带INCLUDING CONTENTS可删除表空间的对象,不删文件
带AND DATAFILE删除数据文件

改变表空间数据文件大小

ALTER DATABASE DATAFILE ‘d:\oracle\oradata\study\myapp01.dbf’ 
Resize 50m       --改变大小
ALTER TABLESPACE ‘MYAPP’ADD DATAFILE ‘d:\oracle\oradata\study\mypp02.dbf’ size 10m;

改变表空间数据文件

准备好数据文件
表空间离线
修改数据文件
举例
表空间离线Alter tablespace ‘myapp’ offline
修改数据文件名称,在操作系统下改
修改表空间数据文件alter tablespace myapprename datafile ’d:\oracle\oradata\study\myapp01.dbf’to ’d:\oracle\oradata\study\myapp02.dbf’

脚本创建表空间

CREATE TABLESPACE "STORE" LOGGING DATAFILE 'D:\ORACLE\ORADATA\STUDY\STORE.ora' SIZE 5M EXTENT MANAGEMENT LOCAL

创建用户

Oracle是一个多用户的数据库系统,每个试图使用Oracle的用户都必须得到一个合法的用户名和口令。
用户也叫方案,是一组逻辑对象的所有者;
创建用户时需要指定:
验证方法:连接数据库的合法密码
默认和临时表空间:当用户创建对象时,如果没有特殊指定另一个表空间,将使用默认表空间。临时表空间用来创建临时段。

语法:
Create user 用户名 Identified  by  密码 
default tablespace 默认表空间名称
quota  nk  on 表空间名字
password expire 
Account  {lock | unlock}
参数说明:
quota  nk 限制用户在表空间上的使用限额,单位为KBMB,如为unlimited说明使用表空间不受限制
password expire 说明用户的密码已经到期失效,登陆的时候要强制用户修改密码
Account指锁定或解除用户帐号

举例

创建用户

CREATE USER "ST" IDENTIFIED BY "123" DEFAULT TABLESPACE "STORE" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "ST";
GRANT "RESOURCE" TO "ST";修改用户的默认表空间
ALTER USER kong default tablespace=store
修改用户在表空间上的空间使用限额
ALTER USER kong quote 10m ON STORE
修改用户密码
Alter user test identified by test11;

启动两个SQL PLUSAB表示

A>conn sys/change_on_install as sysdba
A>create user test identified by test123 default tablespace store;
B>conn test/test123   --出错,没有create session的权限
A>grant create session to test; --授权成功
B>conn test/test123	--连接成功
B>create table ab(a number(5), b varchar2(20));  --权限不足
A>grant create table to test;  --赋给操作权限
B>create table ab(a number(5), b varchar2(20)); --没有表空间store的权限
A>grant unlimited tablespace to test;  --赋给用户表空间资源的操作权限
B>create table ab(a number(5), b varchar2(20)); --创建成功
B>select * from scott.dept;  --表或试图不存在,因为没权限
B>grant select any table to test;  --赋给用户可以查询任何表空间的表的数据
B>select * from scott.dept;  --OK
B>create user test1 identified by test1 --权限不足
A>grant create user to test with admin option; --给test赋给创建用户的权限,	并且test可以将创建用户的权限赋给其他用户
A>grant create session to test with admin option;
B>create user test1 identified by test1  --创建成功
B>conn test1/test1  	--连接失败,没有权限
B>grant create session to test1  --test用户将create session权限赋给test1
B>conn test1/test1	--连接成功

对象权限

数据控制语言为用户提供权限控制命令
用于权限控制的命令有:
GRANT 授予权限
REVOKE 撤销已授予的权限

SQL> GRANT SELECT, UPDATE ON EMP  TO user;SQL> GRANT SELECT ON EMP TO user WITH GRANT OPTION;SQL> GRANT UPDATE(SAL, HIREDATE)  ON EMP TO user;SQL> REVOKE SELECT, UPDATE ON EMP FROM user;

查看用户的权限

查看当前用户的角色

 SQL>select * from user_role_privs;
 
查看当前用户的系统权限和表级权限
 
SQL>select * from user_sys_privs;
 SQL>select * from user_tab_privs;

select * from session_privs;  //用户连上后

查看角色权限

select * from dba_sys_privs where grantee in ('CONNECT','RESOURCE');  

select * from role_sys_privs where role='角色名';

常用字典信息

表空间信息表

DBA_TABLESPACE
V$TABLESPACE

数据文件信息表

DBA_DATA_FILES
V$DATAFILE

临时文件信息

DBA_TEMP_FILES
V$TEMPFILE

查看用户及其默认的表空间

Select username,default_tablespace from dba_users

备份与恢复简介

备份是数据库中数据的副本,它可以保护数据在出现意外损失时最大限度的恢复

Oracle数据库的备份包括以下两种类型:

 

故障类型 

导致数据库操作中止的故障包括四种类型:

 

数据库备份

在数据库中提供了两种备份数据的方法:物理备份逻辑备份
逻辑备份:备份表、视图、触发器、模式对象。。。
物理备份
冷备份
停止服务,拷贝物理文件
热备份
数据库正常运行情况下备份,数据库需要运行在归档模式

导出和导入实用程序

导出和导入实用程序用于实施数据库的逻辑备份和恢复
导出实用程序将数据库中的对象定义和数据备份到一个操作系统二进制文件中
导入实用程序读取二进制导出文件并将对象和数据载入数据库中
导入命令
IMP
导出命令
EXP
在导出自身模式下的对象时不需要什么特殊权限
但希望对其他模式下的对象进行操作的时候就必须必须具备EXP_FULL_DATABASEIMP_FULL_DATABASE的角色。
可以通过OEM中提供的工具进行导入/导出的操作

导出和导入实用程序的特点有:
可以按时间保存表结构和数据
允许导出指定的表,并重新导入到新的数据库中
可以把数据库迁移到另外一台异构服务器上
在两个不同版本的Oracle数据库之间传输数据
在联机状态下进行备份和恢复
可以重新组织表的存储结构,减少链接及磁盘碎片

使用以下三种方法调用导出和导入实用程序:

导出和导入数据库对象的四种模式是: 

导出实用程序有以下常用命令参数:

参数

说明

USERID

确定执行导出实用程序的用户名和口令

BUFFER

确定导出数据时所使用的缓冲区大小,其大小用字节表示

FILE

指定导出的二进制文件名称,默认的扩展名是.dmp

FULL

指定是否以全部数据库方式导出,只有授权用户才可使用此参数

OWNER

要导出的数据库用户列表

HELP

指定是否显示帮助消息和参数说明

ROWS

确定是否要导出表中的数据

TABLES

按表方式导出时,指定需导出的表和分区的名称

PARFILE

指定传递给导出实用程序的参数文件名

TABLESPACES

按表空间方式导出时,指定要导出的表空间名

 

 导入实用程序

导入实用程序有如下常用命令参数:

参数

说明

USERID

指定执行导入的用户名和密码

BUFFER

指定用来读取数据的缓冲区大小,以字节为单位

COMMIT

指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交

FILE

指定要导入的二进制文件名

FROMUSER

指定要从导出转储文件中导入的用户模式

TOUSER

指定要将对象导入的用户名。FROMUSERTOUSER可以不同

FULL

指定是否要导入整个导出转储文件

TABLES

指定要导入的表的列表

ROWS

指定是否要导入表中的行

PARFILE

指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数

IGNORE

导入时是否忽略遇到的错误,默认为N

TABLESPACES

按表空间方式导入,列出要导入的表空间名

本人从事软件项目开发20多年,2005年开始从事Java工程师系列课程的教学工作,录制50多门精品视频课程,包含java基础,jspweb开发,SSH,SSM,SpringBoot,SpringCloud,人工智能,在线支付等众多商业项目,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂

讲师课堂链接:https://edu.csdn.net/lecturer/893

相关文章:

06-Oracle表空间与用户管理

本讲主要内容: 1.表空间管理:表空间的作用,创建,修改,删除及管理; 2.用户管理:创建用户,修改用户,删除用户,修改密码,解锁; 3.用户…...

Mysql 索引特点

承接上文Mysql Server原理简介聚簇索引、二级索引、联合索引分别具备什么样的特点?聚簇索引数据跟索引放在一起的叫聚簇索引;数据和索引分开存储的叫非聚簇索引;innodb存储引擎,数据和文件都放在ibd文件中,实际的数据是…...

读书笔记-终身学习

前言人需要终身成长,也需要终身学习,以下是记录个人读书学习的笔记总结,希望能给大家一点借鉴,仅供参考。笔记1、《匠人精神》秋山利辉是日本神奈川县横滨市都筑区“秋山木工”的经营者,从事订制家具制作业务。是一家小…...

了解栈Stack一篇文章就够了

什么是栈栈是一种特殊的线性表,只允许一端进行数据的插入和删除,即先进后出原则。类似于弹夹先装进去的子弹后面出,后放入的子弹先出。栈的底层原理栈是一种线性结构,所以既能使用数组实现,也能使用链表实现&#xff0…...

CNStack 助推龙源电力扛起“双碳”大旗

作者:CNStack 容器平台、龙源电力:张悦超 、党旗 龙源电力容器云项目背景 龙源电力集团是世界第一大风电运营商, 随着国家西部大开发战略推进,龙源电力已经把风力发电场铺设到全国各地,甚至是交通极不便利的偏远地区&…...

ruoyi-vue-plus1(控制台相关的输出日志)(p6spy插件)(jackson全局配置)(StopWatch)

Jackson配置在启动项目时,我们发现日志打印出这样几行字,初始化了jacdson配置,我们去查看一下来源找。我们找到了一个全局序列化配置类,其中重写了BigNumberSerializer.INSTANCE进去查看发现了这里对于部分范围的数字进行了转为为…...

【Mybatis】| 如何创建MyBatis的工具类

目录🌟更多专栏请点击👇一、前言二、实现过程1. 创建一个ThreadLocal对象2. 初始化SqlSessionFactory3. 获取并存储sqlSession对象4. 关闭sqlSession对象三、 总代码🌟更多专栏请点击👇 专栏名字🔥Elasticsearch专栏e…...

【Java】DT怎么写?

几个重要的注解 怎么用mockito写单元测试? package Biz;import Client.FileIOClient; import Req.FileRequest; import Res.FileResponse; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks;…...

xcode14安装swift package设置github账户token

这里写目录标题登录github账户,复制token打开xcode添加github账户选择swift package登录github账户,复制token 登录github点击上面菜单自己的头像,settings->Developer settings->Personal access tokens->Tokens (classic)->Generate new token (classic) Note名…...

css面试题1

一、css 1. 说一下css的盒模型 在HTML中所有元素都可以看成是一个盒子 盒子的组成: 内容content、内边距padding、边框border、外边距margin 盒模型的类型: 标准盒模型 margin border padding content IE盒模型 margin content(border padding) 控制…...

Hive基础

hive基本语法:查看数据库:hive (default)> show databases; -----查看所有数据库hive (default)> desc database test; ----查看数据库结构hive (default)> select current_database(); ---查看当前数据库创建数据库:hive (default)…...

信息收集-

url: https://en.wikipedia.org:443/wiki/hypertext_Transfer_Protocol?id123#HTTP/1.1_response_messages https:协议 en.wikipedia.org:域名 443:端口 wiki/hypertext_Transfer_Protocol:文件路径 id123&…...

【sdx12】sdx12获取Serial Number操作方法及源码分享Serial Number的寄存器地址

通过串口获取 系统启动时,在boot阶段会打印如下信息 Format: Log Type - Time(microsec) - Message - Optional Info Log Type: B - Since Boot(Power On Reset), D - Delta, S - Statistic S - QC_IMAGE_VERSION_STRING=BOOT.XXXX S - IMAGE_VARIANT_STRING=MAATANAZA S - …...

23种设计模式-工厂模式(安卓应用场景介绍)

工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,而无需将具体的对象创建逻辑暴露给客户端。在Java中,工厂模式常常用于创建复杂对象或对象的构造过程涉及到多个步骤的情况。 在Android开发中,工厂模式也经常被使用&am…...

sheng的学习笔记-服务熔断与降级组件Hystrix

在微服务架构中,一个应用往往由多个服务组成,这些服务之间相互依赖,依赖关系错综复杂。例如一个微服务系统中存在 A、B、C、D、E、F 等多个服务,它们的依赖关系如下图。图1:服务依赖关系通常情况下,一个用户…...

简单给WordPress怎么添加自定义字段面板

今天一淘模板(56admin.com)WordPress怎么添加自定义字段面板?下面本篇文章给大家介绍一下WordPress添加自定义字段面板的方法,希望对大家有所帮助! 我们在WordPress中编写文章的时候,经常会用到一些自定义字段,如网页描…...

大数据框架之Hive:第6章 查询

第6章 查询 6.1 基础语法 1)官网地址 https://cwiki.apache.org/confluence/display/Hive/LanguageManualSelect 2)查询语句语法: SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference -- 从什么表查[WHE…...

CentOS 8搭建EMQX集群

概览 EMQX (opens new window)是一款大规模可弹性伸缩的云原生分布式物联网 MQTT (opens new window)消息服务器。 EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由: 1. 稳定承载大规模的 MQTT 客…...

基于神经网络的自监督学习方法音频分离器(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 神经网络的输入是混合(男性女性)音频的振幅谱。神经网络的输出目标是男性说话者理想的软掩模。损失函数…...

yocto 如何添加python module

yocto 如何添加python module 最近在使用阿里云的图像识别SDK,在ubuntu主机上使用pip install alibabacloud_imagerecog20190930 安装modules以后就可以运行demo程序了,于是打算将SDK移植到嵌入式板子上面,然后在板子上跑一下demo。但是发现…...

[深入理解SSD系列综述 2.1.2] SLC、MLC、TLC、QLC、PLC NAND_固态硬盘闪存颗粒类型

闪存最小物理单位是 Cell, 一个Cell 是一个晶体管。 闪存是通过晶体管储存电子来表示信息的。在晶体管上加入了浮动栅贮存电子。数据是0或1取决于在硅底板上形成的浮动栅中是否有电子。有电子为0,无电子为1. SSD 根据闪存颗粒区分,固态硬盘有SLC、MLC、TLC、QLC、PLC 五种类型…...

Matlab实现FFT变换

Matlab实现FFT变换 文章目录Matlab实现FFT变换原理实现手算验证简单fft变换和频谱求取功率谱结论在信号处理中,快速傅里叶变换(FFT)是一种非常常见的频域分析方法。本文将介绍如何使用Matlab实现FFT变换,并通过Matlab代码演示实际…...

JVM调优面试题——垃圾回收专题

文章目录1、如何确定一个对象是垃圾?1.1、引用计数法1.2、可达性分析2、对象被判定为不可达对象之后就“死”了吗?3、都有哪些垃圾收集算法?3.1、 标记-清除(Mark-Sweep)3.2、标记-复制(Mark-Copying)3.3、标记-整理(Mark-Compact)3.4、分代收…...

java启动命令中-D和--的区别

目录一、java -D 添加参数二、java -- 添加参数在 SpringBoot 项目中,启动时,通过 -D 或 -- 添加参数,都可以直接覆盖 yml 或 properties 配置文件中的同名配置,如果不存在则相当于添加了一个配置。 一、java -D 添加参数 java -D…...

QML Popup详解

1.简介 弹出式用户界面控件,它可以与Window或ApplicationWindow一起使用,默认不可见。 常用属性介绍,一些公用的基础属性就不作介绍,可以查看我前面写的文章。 closePolicy : enumeration :此属性决定弹出窗口关闭的…...

[2.1.6]进程管理——线程的实现方式和多线程模型

文章目录第二章 进程管理线程的实现方式和多线程模型一、线程的实现方式(一)用户级线程(二)内核级线程二、多线程模型(一)一对一模型(二)多对一模型(三)多对多…...

小白做什么兼职项目赚钱?宝妈拍短视频赚钱的方法

很多宝妈在家带孩子之余想做兼职赚点小钱,依靠互联网无疑是比较方便的途径,在刷单、微商等网上兼职成为过去式以后,很多宝妈选择了短视频创业。 宝妈怎么拍短视频? 宝妈因为要照顾宝宝还要兼顾家务,空闲的时间比较琐碎…...

第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解

文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…...

Linux中断操作

一、thread_irq在内核中, 除了可以通过request_irq() 、 devm_request_irq()申请中断以外, 还可以通过以下二个函数申请( 它们比request_irq和devm_request_irq多了一个参数thread_fn)。 用这两个API申请中断的时候, 内核会为相应的中断号分配…...

看看CabloyJS是如何异步加载并执行go wasm模块的

介绍 CabloyJS提供了一个内置模块a-wasmgo,将go wasm模块的异步加载运行机制进行了封装,使我们可以非常方便的在CabloyJS项目中引入go wasm,从而支持更多的业务场景开发 下面,我们以测试模块test-party为例,演示引入…...