将Oracle数据库迁移至本地Oracle XE时的表空间报错问题
ORA-00959错误解决与表空间相关问题
什么是表空间(Tablespace)
Oracle的表空间是数据库的逻辑存储单元,用来关联表、索引这类数据库对象与对应的物理数据文件。源数据库里的表可能被指定存放在某个自定义表空间中,但本地Oracle XE只有预设的几个表空间(比如USERS、SYSTEM),所以导出的SQL里指定的表空间在本地不存在,才触发了ORA-00959错误。
能不能移除CREATE TABLE语句中的TABLESPACE指定部分?
完全可以。删掉这部分内容后,Oracle会自动使用当前用户的默认表空间存储表数据——Oracle XE里新建用户的默认表空间一般是USERS,足以满足常规存储需求。
实用操作建议
- 批量修改导出的SQL:用文本编辑器的全局替换功能,把所有
TABLESPACE "xxx"的内容直接删除,或者替换成TABLESPACE USERS(手动指定到XE的默认用户表空间)。 - 导出时提前配置:下次用SQL Developer导出数据时,在导出向导里找到表空间映射选项,选择“使用默认表空间”,或者直接把源表空间映射到本地XE已存在的表空间,这样导出的SQL就不会包含无效的表空间指定了。
内容的提问来源于stack exchange,提问作者Shahin
相关产品推荐
相关产品推荐

