1. 建立新表空间和新用户
使用system用户登录;执行如下sql语句建立表空间和新用户,以及给用户授权
建立表空间
Create tablespace myyyjc datafile 'D:\app\Administrator\oradata\sunlichengdata\myyyjc.dbf' size 10mautoextend on ;
删除表空间
--Drop tablespace myyyjc including contents and datafiles cascade constraints;
建立新用户
create user slc identified by slc default tablespace myyyjc;
授权
grant connect,resource to slc;
grant dba to slc;
吊销授权
--Revoke dba from slc;
2 导出原数据库结构和数据
然后,以老用户yyjc登录系统导出数据库结构和数据;
工具导出用户对象(U)
此步骤导出的是sql文件---建表语句(包括存储结构)。
工具导出表;
此步骤导出的是dmp文件---表结构及数据;
这里PLSQL工具包含三种方式导出Oracle表结构及数据,三种方式分别为:Oracle Export 、SQL Inserts、PL/SQL Developer 其中Oracle Export导出的.dmp是二进制文件,可跨平台,还能包含权限,效率不错,用的最为广泛。
3 导入原数据库结构和数据到新表空间
为了检验,导出的这两个文件是否能用,使用新用户登录,将数据导入到新表空间试试;
工具导入表;
工具à导入表;
我导入表结构时,没反应,可能是因为.sql文件中包含了有大字段(blob,clob,long),不能导出。不过我继续导入.dmp文件后,表和数据都导进去了;
查了一下:http://www.cnblogs.com/wuhuacong/archive/2012/03/09/2387680.html
以上值得注意的是,我们导出Oracle对象和数据的时候,默认还是原来Oracle数据库的表空间和数据库用户名称的,如果我们想要在新的数据库服务器中指定不同的表空间和数据库用户对象,那么我们就需要替换生成的sql脚本,并在第一步指定合理的表空间和数据库用户;也许也有可能是表空间不同的原因,但是数据是导进去了的,说明导出的备份数据是能用的;
PS:可以用下面sql(查某个数据库所有表的所有记录)检验一下两次的记录数是不是一样的哦:
use information_schema;
SELECT SUM(t.rows) total
from (
select table_name name,table_rows rows from tables
where TABLE_SCHEMA = '数据库名'
order by table_rows desc) as t ;