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

Oracle 12c + Pl/Sql windows系统下表空间创建、迁移,dmp备份导入,数据库字符集更改

一、开发环境

操作系统:win11
Oracle版本:12c
Oracle 数据库字符集:AL32UTF8
Pl/Sql版本:14

二、表空间创建

表空间是 Oracle 数据库中一种重要的逻辑结构,它是数据库中数据文件的逻辑集合,用于存储数据库对象,如数据表、索引等。表空间与数据文件紧密相关,dbf数据文件是实际存储数据的物理文件,一个表空间可以包含一个或多个dbf数据文件 。

1.查看表空间对应的文件路径,在Pl/Sql中输入下述命令:

SELECT file_name,tablespace_name,bytes/1024/1024 AS size_mb
FROM dba_data_files

在这里插入图片描述
可以看到咱电脑有这么些默认的表空间,知道了这些默认表空间的存储路径,我们就可以根据他们的路径来新建表空间了。

2.创建表空间

CREATE bigfile 
TABLESPACE users03DATAFILE '你的表空间文件存储路径\数据文件名字可以DIY.DBF'SIZE 40G  -- 初始分配AUTOEXTEND ONNEXT 2G   -- 每次扩展2GBMAXSIZE UNLIMITED;   -- 最大限制

在这里插入图片描述

空间分配逻辑,例如我们现在有20GB的DMP备份文件,70GB可用磁盘空间:

  • DMP解压空间: 20GB × 2 = 40GB 压缩数据解压膨胀系数
  • 总计分配: 20GB x 2.5 = 50GB 最大限制值
  • 保留空间: 20GB 系统运行必需空间

当然我上边的代码里没有设置最大限制值,因为我这边的存储硬件资源比较宽裕,大家可以参考一下这个空间分配逻辑。

3.创建公共用户

CREATE USER c##shuaige777   --用户名
IDENTIFIED BY shuaige777   -- 用户密码
DEFAULT TABLESPACE  USERS03   --表空间名称
TEMPORARY TABLESPACE temp;--授权
GRANT DBA TO c##shuaige777;

为什么要在用户名前加 c##

  • Oracle 12c 及以上版本使用多租户架构(CDB 包含多个 PDB)。
  • 在根容器 (CDB$ROOT) 中创建用户时,用户名必须以 C## 或 c## 开头(公共用户)。
  • 如果未使用 C## 前缀,或未切换到 PDB 容器执行命令,会触发此错误。

三、导入DMP备份数据

1.登入Sql/Plus
打开Sql*Plus,输入下述命令,提示输入密码按回车键即可。

sqlplus / as sysdba

2.创建目录对象并授权

# 创
CREATE DIRECTORY dump_dir AS 'F:\OracleDumpDir';
# 授
GRANT READ, WRITE ON DIRECTORY dump_dir TO taibao666;

这是在Sql/Plus创建数据库目录对象,指向服务器文件系统路径;也要在本地这个路径下创建一个文件夹。

注意事项:Sql/Plus中创建的目录对象名称、路径和本地创建的文件名称、路径要一致;目录对象一旦创建,不能直接修改名称,只能删除再重新创建。

3.导入DMP备份数据文件

导入dmp是不能在Sql/Plus环境下导的,只能在cmd环境下导,所以以下的命令都是要在cmd环境中输入。

impdp username/password DIRECTORY=dump_dir DUMPFILE=export.dmp LOGFILE=import.log remap_schema=old:new remap_tablespace=old:new

参数解析

  • username/password:就是上边我们创建的用户和密码c##shuaige777/shuaige777
  • DIRECTORY=dump_dir:就是我们创建的目录对象dump_dir
  • DUMPFILE=export.dmp:就是我们的dmp备份数据文件名称
  • LOGFILE=import.log:就是导入日志,你导入会有报错或者成功的信息,就会存到这文件里边
  • remap_schema=old:new:就是你导出的源数据库的用户名称和我们现在被导入的用户名称
  • remap_tablespace=old:new:就是你导出的源数据库的表空间名称和被导入的表空间名称

了解导入参数的含义后,我们可以自定义SQL导入代码:

impdp c##shuaige777/shuaige777 DIRECTORY=dump_dir DUMPFILE=BH_01.DMP,BH_02.DMP,BH_03.DMP,BH_04.DMP,BH_05.DMP,BH_06.DMP LOGFILE=BH_import.log JOB_NAME=BH_IMPORT_JOB remap_schema=c##shuiage666:c##shuaige777 remap_tablespace=KFCV50:USERS03

四、表空间数据文件迁移

假如你的表空间USERS03现在由于业务量越来越大,原来存放的存储空间开始不够用,准备爆了,领导叫你马上找办法解决,在找不到其它办法解决的情况下,将表空间迁移至拥有更大的地方是最好的选择。

1.进入我们的Sql/Plus

sqlplus / as sysdba

2.关闭数据库

shutdown immediate;

3.进入mount模式,因为迁移数据文件只能在mount模式下进行

startup mount;

4.修改dbf文件存放的路径

alter database rename file 'D:\ORCALE12C\ORADATA\ORCL\USERS03.DBF' to 'F:\OracleDbfDir\USERS03.DBF';

5.恢复介质

recover datafile 'F:\OracleDbfDir\USERS03.DBF';

6.打开数据库

alter database open;

7.删除原路径下文件

HOST del "D:\ORCALE12C\ORADATA\ORCL\USERS03.DBF"

五、数据库字符集更改

在导入DMP备份文件时,若源数据库与目标数据库字符集不一致,可能导致导入失败。这时候我们就得修改我们的数据库字符集与源数据库一致,才能导进来,Oracle的字符集格式最常用的就俩个:AL32UTF8、ZHS16GBK。

注:不建议修改自己的数据库的字符集,最好是导出的时候对数据进行字符集的格式设定,贸然在生产环境修改数据库的字符集会导致数据丢失,到时候只能跑路了,救不了。

Oracle的默认字符一般为:AL32UTF8,除非你在Oracle安装时另外选了。

在这里插入图片描述
1.进入Sql/Plus,关闭数据库

SHUTDOWN IMMEDIATE;

2.以限制模式启动数据库

STARTUP RESTRICT;

3.更改字符集

ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

4.重启数据库

SHUTDOWN IMMEDIATE;STARTUP;

5.验证更改

SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET';

六、总结

这篇文章主要介绍Oracle数据库的基础操作和配置方法,希望能为大家提供实用的学习参考,给大伙敬酒了。

在这里插入图片描述

http://www.dtcms.com/a/319647.html

相关文章:

  • 7. 什么是事件委托
  • 试用一个用v语言编写的单文件数据库vsql
  • RepoCoder:仓库级代码补全的迭代检索生成框架解析与应用前沿
  • 【FreeRTOS】(号外)任务间通讯2: 信号量- Counting Semaphore
  • NFS 服务器与iSCSI 服务器
  • USB枚举介绍 以及linux USBFFS应用demo
  • centos安装python、uv
  • Python包与虚拟环境工具全景对比:从virtualenv到uv的演进
  • python中用xlrd、xlwt读取和写入Excel中的日期值
  • python 常用条件判断语句用法
  • day44 力扣1143.最长公共子序列 力扣1035.不相交的线 力扣53. 最大子序和 力扣392.判断子序列
  • 关于时钟门控ICG的一切(与门及或门门控)
  • [论文阅读] 人工智能 + 软件工程 | 大型语言模型与静态代码分析工具:漏洞检测能力大比拼
  • 分布式事务与分布式锁
  • PCB布线
  • 大队列CT胰腺癌PANDA 模型 医生结合AI后,病灶检测灵敏度提升 8.5%,胰腺癌识别灵敏度提升 20.5%,住院医师性能接近专家水平
  • 补充一种激活函数:GeGLU
  • 关于AI应用案例计算机视觉、自然语言处理、推荐系统和生成式AI四大领域的详细技术分析。
  • 数学建模——粒子群算法
  • Gradle 全解析:Android 构建系统的核心力量
  • JavaScript构建工具
  • CSS overscroll-behavior:解决滚动穿透的 “边界控制” 专家
  • 《Day3-PyTorch 自动微分入门:从计算图到梯度下降的实践指南》
  • Redis中间件(三):Redis存储原理与数据模型
  • Dokcer创建中间件环境
  • LeetCode:347.前K个高频元素
  • 手写数字识别实战 - 从传统机器学习到深度学习
  • 13-netty基础-手写rpc-消费方生成代理-05
  • Qt——入门
  • 数据赋能(386)——数据挖掘——迭代过程