2021年7月13日 Oracle新建表空间异常排查
导出导入操作
导出数据
expdp 数据库用户名/密码 directory=虚拟目录 dumpfile=dump文件名.dmp logfile=日志文件名.log schemas=schemas名称
数据库连接工具中创建表空间、用户、赋予权限
创建表空间
create tablespace 表空间名称
logging
datafile 数据文件位置,例如:'/data/oracle/db/表空间.dbf'
size 100m
autoextend on
next 32m maxsize 500m
extent management local;
创建数据库用户
create user 用户名 identified by 密码
default tablespace 表空间名称
temporary tablespace temp;
数据库用户授权
grant connect,dba to 用户;
导入目录授权
grant read,write to directory 虚拟目录 to 用户;
导入数据
impdp 新用户/密码 directory=虚拟目录 dumpfile=导出dump文件名.dmp logfile=导入日志.log remap_schema=被导入schema:新用户schema remap_tablespace=导出的表空间:新建的表空间 schemas=导出的schemas
异常及问题解决
ORA-39171: 作业出现可恢复的等待。
ORA-01653: 表 A.COURSE 无法通过 1024 (在表空间 B_DATA 中) 扩展
网络上搜索了下异常,大概的意思是B用户的表空间不足了;
首先我们来看第一个问题:
一、表空间容量是否够用?
1、查看表空间的名字及文件所在位置
select
tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
from sys.dba_data_files
where tablespace_name = 'B_DATA'
2、查询表空间信息
select
username,
default_tablespace,
t.*
from dba_users t
3、查询当前表空间下使用情况
SELECT
a.tablespace_name,
a.bytes/1024/1024 "sum MB",
(a.bytes-b.bytes)/1024/1024 "used MB",
b.bytes/1024/1024 "free MB",
ROUND (((a.bytes-b.bytes)/a.bytes)*100,2) "used%"
FROM
( SELECT tablespace_name, SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) a,
( SELECT tablespace_name, SUM(bytes) bytes, MAX (bytes) largest
FROM dba_free_space
GROUP BY tablespace_name)b
WHERE
a.tablespace_name=b.tablespace_name
AND b.tablespace_name='B_DATA'
ORDER BY
((a.bytes-b.bytes)/a.bytes) DESC;
4、扩展表空间的方式
①、扩大表空间
alter database datafile '/data/oracle/db/B_DATA.DBF' resize 20480m;
②、增加新的数据文件
alter tablespace add datafile '/data/oracle/db/B_DATA_01.DBF' size 20480m;
③、设置表空间的自动增长
alter database datafile '/data/oracle/db/B_DATA.DBF' autoextend on next 100m maxsize 20480m;
我使用的是第一种,直接扩大表空间,再次查看日志时,数据已经导入到新的表空间中了。
再来看第二个问题,就是导入到A用户的表COURSE,表空间却是B_DATA,而不是A_DATA;
二、修复表空间问题
1、指定表空间复制表结构及数据
CREATE TABLE COURSE_A TABLESPACE A_DATA AS SELECT * FROM COURSE;
2、删除表
DROP TABLE COURSE;
3、修改表名称
ALTER TABLE COURSE_A RENAME TO COURSE;
至此,Oracle导出导入库操作以及问题解决完成。