oracle导表小结

事件描述:从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:因为这里是新库,表也不多 自己就删除了表 重建表结构,然后在导数据

如果是增量,就要考虑改变表的表空,这里就不在讨论了

参考:

sqlplus 汉字乱码问题的解决

ORA-01950问题

oracle 查看用户所在的表空间

用Java代码查看系统默认字符集编码

原文地址:https://www.cnblogs.com/draem0507/p/3637808.html