啊一年多没碰oracle了,这两天安装,建表空间,从其他库导数据过来,加起来搞了得有一天时间,坑太多了,一个一个记录一下
我系统是win10 64位
安装
安装过程有两个特别注意的地方
1.解压官网下载的俩压缩包之后,在database>stage>cvu>cvu_prereq.xml中添加下面这种操作系统:
<OPERATING_SYSTEM RELEASE="6.2">
<VERSION VALUE="3"/>
<ARCHITECTURE VALUE="64-bit"/>
<NAME VALUE="Windows 10"/>
<ENV_VAR_LIST>
<ENV_VAR NAME="PATH" MAX_LENGTH="1023" />
</ENV_VAR_LIST>
</OPERATING_SYSTEM>
2.安装途中报未找到文件
XXX\product\11.2.0\dbhome_1\owb\external\oc4j_applications\applications\WFMLRSVCApp.ear
官网压缩的俩压缩包:win64_11gR2_database_1of2和win64_11gR2_database_2of2,将2of2中的database\stage\Components*拷到1of2中database\stage\Components目录下即可
创建表空间和用户
就把语句分享一下吧
/*第1步:创建临时表空间 */
create temporary tablespace hugeo
tempfile 'E:\programFiles\oracle\oradata\orcl\HUGEO.DBF'
size 50m
autoextend on
next 50m maxsize 2048m
extent management local;
/*第2步:创建数据表空间 */
create tablespace hugeo_data
logging
datafile 'E:\programFiles\oracle\oradata\orcl\HUGEO_DATA.DBF'
size 50m
autoextend on
next 50m maxsize 2048m
extent management local;
/*第3步:创建用户并指定表空间 用户名:szv61 密码:sz123*/
create user hugeoidentified by 123456
default tablespace hugeo_data
temporary tablespace hugeo;
/*第4步:给用户授予权限 */
grant connect,resource to hugeo;
-- 删除用户和表空间
drop user hugeo cascade;
drop tablespace hugeo including contents and datafiles;
drop tablespace hugeo_data including contents and datafiles;
-- 更改用户名
update user$ set name='hugeo2' where NAME ='hugeo';
alter system checkpoint;
alter system flush shared_pool;
alter user hugeo identified by 123456;
一开始我给用户赋予了dba权限,后来搞得乱七八糟的就把表空间和用户都删了,这下诡异了,用户都删了,不仅还能用plsql登录,还能以dba的身份登录,在网上找到了原因,oracle认证分为os认证和口令认证
出现以上状况,登录的时候根本和hugeo这个用户无关,登录oracle用的是os认证,登录后用户是sys
你用hugeo,123,578,随意密码都能登,因为根本没关系.
解决办法是更改认证方式:
修改sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
改为
SQLNET.AUTHENTICATION_SERVICES= (NONE)
*.ora文件的位置:XXX\oracle\product\11.2.0\dbhome_2\NETWORK\ADMIN
怎么在不安装oracle的情况下,使用plsql登录远程库
PLSQL12破解版下载
下载oracle客户端工具Oracle Instant Client,注意三个箭头指的地方,该点的点,该装的装
第一步搞定之后,在plsql中配置
从其他库导数据
如果俩库的表空间名称不一样,就不要想着通过pde文件一次到位了
没有clob字段的:
表结构和数据分开导,具体:
1. 远程:导出用户对象,不包括存储,只导出表结构的sql
2. 本地:导入表->SQL导入
3. 远程:导出pde,包括存储
4. 本地:导入pde,不要勾选删除表和创建表
有clob字段的
如果clob字段的内容长度不超过4000,用plsql查询出所有数据导出为csv,在本地通过文本导入器进行导入,我这里遇到了乱码的问题,乱码的话新建一个Excel,数据->从文本/csv,选择plsql导出的csv,正确得展示在excel之后,另存为excel,选择csv格式,再去plsql中使用文本导入器导入咱自己保存的csv,就不乱码了
如果clob字段内容过长会报错的,这时候就比较复杂了,我用的办法是先不带clob字段把数据插到表里,然后使用excel的公式,拼出了类似这样的sql直接执行:
declare
clob1 clob :='很长字符串';
clob2 clob :='又是很长字符串';
-- 此处省略很多行
begin
update mytable set desc = clob1 where id = 1;
update mytable set desc = clob2 where id = 2;
-- 此处又省略很多行
end;