Oracle导入导出相关问题

本文介绍了在Oracle 11g环境中进行数据库导入导出时需要注意的字符集一致性和空表处理问题。由于11g默认延迟创建segment,可能导致空表无法备份。解决方案包括插入数据、手动分配extent或修改deferred_segment_creation参数。同时,文章提供了设置NLS_LANG环境变量的示例和自动备份脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境描述:

安装数据库的时候修改过字符集,改为AL32UTF8,默认是ZHS16GBK。

 

注意事项:

导出的客户端和导进去的客户端的字符集要一致。不要漏表,乱码,少一些对象等等。

 

Oracle 11g r2 特性

  oracle11g 导出表报EXP-00011:table不存在。 

oracle11g,在用exp命令备份数据库时,如果表中没有数据报EXP-00011错误,对应的表不存在。这导致对应的空表无法备份。

原因:

11g默认创建一个表时不分配segment,只有在插入数据时才会产生(当然也可以强制分配),以节省磁盘空间。


对于已经存在的空表解决办法:

就是想办法让空表有segment,第一种:可以通过插入数据的方式(不想要这些数据可以回滚),只要有insert动作就会分配segment;

第二种:就是强制分配:alter table   tablename allocate extent;

如果采用第二种可以用以下方法:

1、用以下这句查找空表:select 'alter table'||table_name||' allocate extent;' from user_tables where num_rows=0;

2、把查询结果导出,执行导出的语句;

为了后面创建的表能直接分配segment

用系统账户登录数据库,修改参数deferred_segment_creation(11g新增的)。该参数即指是否延迟创建segment,默认为true。如果想让表创建时就分配segment,那么就应该修改该参数为false即alter system set deferred_segment_creation=false。如下所示:

--导出

set NLS_LANG=AMERICAN_AMERICA.AL32UTF8

set NLS_LANG=SIMPLIFIEDCHINESE_CHINA.ZHS16GBK

set NLS_LANG=SIMPLIFIEDCHINESE_CHINA.AL32UTF8

exp 用户名/密码@数据库file=e:\xxx.dmp owner=(用户名)  INDEXES=nSTATISTICS=none


--导进

setNLS_LANG=AMERICAN_AMERICA.AL32UTF8

导入之前先到注册表将目标ORACLE数据的字符集改成和源ORACLE的字符集一样.

imp 用户名/密码@数据库file=e:\xxx.dmp full=y

 

导出前请先执行setNLS_LANG=AMERICAN_AMERICA.AL32UTF8

 

自动备份脚本:

自动备份前先在命令行中用 echo %date% 命令查看当前机器的日期设置格式再决定日期变量的取法, %date:~5,5%代表从第五个字符开始取长度5的字符串,请根据格式灵活变通.

set NLS_LANG=AMERICAN_AMERICA.AL32UTF8

exp 用户名/密码@服务名  file=E:\OracleBack\gdyt%date:~5,5%.dmplog=E:\OracleBack\gdyt%date:~5,5%.log owner=(gdyt) indexes=n statistics=none

forfiles /p "E:\OracleBack" /s /m*.* /d -30 /c "cmd /c del @path"

forfiles /p "E:\oraclback" /s /m*.* /d -30 /c "cmd /c del @path"

第一行是设置环境变量,

第二行是备份语句

第三,四行是自动删除30天以前的备份文件,如果要调整请更改*/d – 后面的数字.

将上面存成.bat文件然后加入计划任务自动执行即可.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值