您的位置:首页 > 数据库 > Oracle

oracle创建表空间、用户及其导入导出数据

2015-01-06 22:25 369 查看
以前都是跟着别人做项目,什么数据库应用部署都经理弄好了,自己只管开发自己的模块就好。这一次自己管项目,于是也高大上了一把,什么创建表空间、创建用户这些以前没搞过的也都学着做了一次。其实没什么难度的,在这里跟各位分享一下我的一点点经验:

首先必须以dba身份登录,为了方便最好借助可视化工具如plsql等,创建表空间及用户的步骤如下:

1.创建表空间

CREATE TABLESPACE srcb

datafile 'D:/CSII/Data/TableSpace/SRCB.dbf' size 400M

autoextend on next 100 Maxsize unlimited logging

extent management local autoallocate

segment space management auto;

datafile为表空间对应的数据文件,用于存储表的记录、索引等信息,后面为存放的路径及文件名。

2.创建用户:

CREATE USER SRCB

identified by SRCB

default tablespace srcb;

创建用户SRCB,密码为SRCB,表空间为刚创建的srcb。

3.给用户指定权限:

grant connect,resource to SRCB;

connect是最基本的角色,可以建立会话和数据库连接等;resource角色则可以做建表建索引等操作。

4.将用户SRCB授权为dba:

grant dba to SRCB;

这一步是看自己需求的,我是为了方便直接给了dba。

以上是创建表空间及其用户并赋予权限的步骤,还有一些其他可能会用到的操作如下:

1.更改表空间名称

alter tablespace SRCB rename to PORTAL_DATA;

2.表结构修改

增加表字段

alter table cms_document add ext01 varchar2(96);

去除字段

Alter table cms_document drop column ext01;

修改字段

Alter table cms_document rename ext01 xxx;

Alter table cms_document modify ext01 varchar2();

3.导入dmp文件

imp SRCB/SRCB file=XXX.dmp log=XXX.log full=y ignore=y

SRCB分别是登录名和密码,file为导入的dmp文件名,可以用绝对地址亦可用相对地址,log为到处的日志记录,路径同file。full=y是导入整个文件,ignore=y是忽略创建错误。要直接用imp命令,必须oracle的bin加入到path路径下(同java),亦可用全路径。

如果是导入非本机数据库,可采用一下方式:

imp SRCB/SRCB@ip:port/db file=XXX.dmp log=XXX.log full=y ignore=y

如上可看出加了@ip:port/db这段,ip和port分别是远程数据库所在机器的ip和端口,port一般为1521,db为数据库实例名称。这个方式同sqlplus的写法是一样的。

4.执行sql脚本

sqlplus username/password@db @xxx.sql > xxx.log,可可以为:sqlplus
username/password@ip:port/db @xxx.sql > xxx.log

第二种是通用的写法,第二种写法必须在tnsnames.ora文件中配置db对应的ip、port、数据库实例等信息,这个可以参考我的oracle入门文章。执行sql脚本用@,如果有多个脚本,可以在一个脚本文件中用@引用其他的,然后执行这个脚本文件即可,“>”将日志输出到xxx.log,便于查看导入的情况日志还是十分有必要的。

5.数据导出

数据导出有几种方式,我们直接借助plsql工具,这里介绍两种方式的导出:dmp文件和insert语句导出。为什么会介绍这两种呢,因为之前的项目碰到过这个问题,这里我就说下这两种方式的利弊:

dmp方式:很常用,之前基本都用的这种方式,但碰到过一个问题:导出的数据库和要导入的数据库版本不一样,会提示头部有问题。我在网上看到有人说可以直接改dmp文件的头信息即可,我没试过,但想想如果要导入到多个不同版本的oracle,每次都得改啊。

insert语句方式:这个是通用的,甚至你可以导入到其他数据库。但有个问题,大字段如blob数据不能用这种方式导出,我就悲剧的碰到过,后面直接改为varchar2了。

以上便是我最近碰到的有关oracle数据的问题及其解决方法,都是一些经验之谈,如有问题还望指出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐