由oracle库文件建立完整数据库的过程

    最近帮忙老师写一部分网站管理系统的功能,由于不在同一个地方,老师发给了我一个库文件(后续名为.dmp),要我自己建个数据库在上面跑起来,下面就说说我做的步骤,以免到时候需要用的时候又忘了。

1、首先在本地建立一个ORACLE数据库,全局数据库名和SID我都写了SCHOOL。

2、以管理员身份登录该数据库,我是以SYSTEM,密码是建数据库时设的密码登录的。

3、用PL/SQL登录该数据库后,就可以创建用户了,代码如下:

     create user myxuser identified by myxuser;

同时也可以修改数据库密码:alter user zzg identified by unis;

4、默认情况下用户创建好后系统会默认给该用户分配一个表空间(users),我们可以通过下面的语句来查看一下所有用户所在的表空间:

  select username,default_tablespace from dba_users;

一般情况下我们不会用用户的默认表空间,这时我们可以自己创建一个表空间:

create tablespace myxuser_data datafile 'e:\myxuser.dbf' size 200M;其中tablespace后面的为表空间的名字;datafile后的路径为表空间的物理存储路径;文件的后缀可以随便取;

size 200M是设定了表空间的大小。

5、创建好表空间,并将表空间分配给用户:alter user myxuser default tablespace myxuser_data;

6、给用户myxuser分配权限:grant create session,create table,create view,create sequence,unlimited tablespace to myxuser;

触发器的问题(grant select on sys.v_$session to myxuser)

7、这样用户myxuser就可以登录了。同时把.dmp文件导入数据库:imp myxuser/myxuser@SCHOOL file=E:\school20130120.dmp fromuser=myxuser touser=myxuser

这里出现了点小问题,出现错误:IMP-00013,只有DBA才能导入由其他DBA导出的文件。所以我们要把DBA权限赋予给用户myxuser:

grant dba to myxuser;

至此发现数据库中知导入了一部分的表,查询原因,

原来因为我给用户myxuser分配的表空间大小为200M,但库文件内容比较多,所以只导入了一部分表,故应自动扩展表空间的大小:

ALTER DATABASE DATAFILE 'E:\MYXUSER.DBF' AUTOEXTEND ON NEXT 200M ;//每次自动增长200M

至此则导入成功。

8、一些其他操作

关于数据迁移,常常需要导入导出表,现将方法列出如下:

导出某用户的全部数据:在cmd下exp username/passwd@database file=D:\xxx.dmp  owner=username;

导出全部数据:exp username/passwd@database file=D:\xxx.dmp  full=y;

导出特定表的数据:exp username/passwd@database file=D:\xxx.dmp  tables=(table1,table2...);

exp/imp对于比较大的数据库,常常是速度非常慢,10g以后提供了expdp/impdp,imp/exp可以在客户端调用,但是expdp/impdp只能在服务端,因为在使用expdp/impdp以前需要在数据库中创建一个Directory

create directory dump_test as '/u01/oracle10g';

grant read, write on directory dump_test to piner

然后就可以开始导入导出

expdp piner/piner directory=dump_test dumpfile=user.dmp  导出用户的数据

expdp piner/piner directory=dump_test dumpfile=table.dmp tables=test1,test2 导出表数据

impdp piner/piner directory=dump_test dumpfile=user.dmp 导入该用户数据

impdp piner/piner directory=dump_test dumpfile=table.dmp  导出表数据

当然还有一种方法是对表空间进行导出,由于限制较多,本人未用过,有兴趣的读者可以查看一下地址:http://blog.sina.com.cn/s/blog_95cfa646010120lp.html。

posted @ 2013-01-22 12:16  Obsueter  阅读(707)  评论(0编辑  收藏  举报