Oracle11g以上版本导出表提示表不存在解决方法

本文介绍了Oracle11g版本中因deferred_segment_creation参数设置为true而导致的空表导入后无法导出的问题,并提供了手动分配segment的方法。

Oracle11g版本以后系统新增一个参数【deferred_segment_creation】,该参数控制是否不分配segment给新建的表或者导入的空表,默认是true。

安装完数据库直接通过imp命令导入了空表,则通过exp导出的时候会提示表不存在。

修改参数set deferred_segment_creation=false,语句如下:

 

alter system set deferred_segment_creation=false


注意:修改该参数并不能给以前已经导入的空表分配segment

 

如果想导出就要手动给这些表分配segment,语句如下:

 

alter table 表名 allocate extent;

如果空表很多也是有解决办法的,执行下面的语句:

 

select 'alter table'|| table_name || 'allocate extent;'  
from user_tables where segment_created='NO';

 

 

 

 

 

 

把查询结果复制出来执行以下就会给所有的空表分配segment。

 

 

 

 

 

 

### Oracle 11g 和 19c 共存环境导出 11g 文件 UDE-00018 错误解决方案 在Oracle 11g和19c共存环境中,当尝试从11g数据库导出数据时可能会遇到`UDE-00018`错误。此错误通常存在与字符集匹配或某些参数设置当有关的问题。 为了有效解决这一问题,可以采取以下措施: #### 验证并调整NLS_CHARACTERSET 参数 确保源库(即Oracle 11g)和服务端目标库(即Oracle 19c)之间的字符编码一致非常重要。可以通过查询 `V$NLS_PARAMETERS`视图来获取当前会话使用的字符集信息[^1]。 ```sql SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%'; ``` 如果发现两个实例间的字符集同,则需考虑修改其中一个实例的初始化参数文件中的相应条目以实现统一化处理。对于大多数情况来说,建议保持两者相同以便于兼容性和减少潜在冲突的可能性。 #### 使用Data Pump工具进行迁移操作 考虑到直接通过传统exp/imp命令可能引发各种各样的兼容性难题,在这种情况下推荐采用更现代的数据泵(Data Pump)技术来进行跨版本间的数据传输工作。具体做法如下所示: - **创建目录对象**:先要在双方都建立好用于存放转储文件(DMP)的目标路径,并赋予适当读写权限给执行该过程的角色; ```sql CREATE DIRECTORY dp_dir AS '/path/to/directory'; GRANT READ, WRITE ON DIRECTORY dp_dir TO user; ``` - **启动导出进程**:利用 expdp 命令行实用程序指定合适的选项完成整个模式级别的备份任务; ```bash $ORACLE_HOME/bin/expdp username/password@source_db schemas=SCHEMA_NAME directory=dp_dir dumpfile=schema_name.dmp logfile=export.log ``` - **准备导入环境**:针对目的端(这里是Oracle 19c),同样需要定义相应的存储位置以及授权访问权能; ```sql CREATE DIRECTORY dp_dir_target AS '/target/path/to/directory'; GRANT READ,WRITE ON DIRECTORY dp_dir_target TO target_user; ``` - **实施导入动作**:最后借助 impdp 工具加载先前生成好的二进制档案至新的平台之上即可。 ```bash $ORACLE_HOME/bin/impdp username/password@target_db remap_schema=SOURCE_SCHEMA:TARGET_SCHEMA directory=dp_dir_target dumpfile=schema_name.dmp logfile=import.log ``` 以上方法仅能够规避掉因版本差异所造成的诸多麻烦之处,而且还能显著提升工作效率与成功率[^2]。 #### 处理特定触发器权限问题 值得注意的是,在升级过程中可能出现由于角色变更而导致原有功能失效的情况,比如创建触发器失败伴随有`ORA-01031 insufficient privileges`提示。此时应确认新加入用户的权限分配是否充分覆盖了所需的操作范围,必要时可参照官方文档补充必要的系统级别许可声明[^3]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值