事件描述:从A主机oracle服务器导出.sql文件到B主机,发现1.导入存在乱码 2.提示USERS表空没有权限(A B主机均为window系统)
1.针对第一点乱码
首先确认系统的默认字符编码GBK,
查询B主机oracle默认编码:select userenv('language') from dual;
结果为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
操作系统跟oracle编码是一致的,想想,发现editplus的编码之前被我改成UTF-8
EditPlus--->Document---->File Encoding---------->Change File Encoding
改成Chinese Simplified(GB2312)936或则Chinese Simplified(GB18030)54936都可以
关于字符/字符集等问题,可以移步这里 http://bbs.csdn.net/topics/200031525
修改完字符编码后,在来看第二个问题
提示USERS表空间无权限,猜测默认表空应该是USERS
验证下:SELECT u.DEFAULT_TABLESPACE FROM User_Users u,还真是
问了下系统管理员,发现操作表的用户有自己的表空间
于是乎,让DBA执行下以下sql
alter user username quota unlimited on my_tablespace;--username 表示当前用户名,my_tablespace表示指定的表空 sql的作用是让该表空可以自行扩展
OK,最后在要执行的表
create table xxxxxx
(
SYS_INT_ID NUMBER not null,
KPI_ID VARCHAR2(50) not null,
.........
)tablespace my_tablespace
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80
next 1
minextents 1
maxextents unlimited
);
到此 执行sql就没有问题了
ps:因为这里是新库,表也不多 自己就删除了表 重建表结构,然后在导数据
如果是增量,就要考虑改变表的表空,这里就不在讨论了
参考: