使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下;下面是操作过程;

1 开启服务

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

2 配置监听

找到下面文件:

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

记事本打开

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

在导航器的下拉菜单中选择:将数据库添加到树,

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

然后点击确定

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

然后使用PL/SQL就可以登录了;

3 建立新表空间和新用户

使用system用户登录;执行如下sql语句建立表空间和新用户,以及给用户授权

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

建立表空间

Create tablespace myyyjc datafile 'D:\app\Administrator\oradata\sunlichengdata\myyyjc.dbf' size 10m autoextend 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;

4 导出原数据库结构和数据

然后,以老用户yyjc登录系统导出数据库结构和数据;

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

工具à导出用户对象(U)

此步骤导出的是sql文件---建表语句(包括存储结构)。

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

工具à导出表;

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

此步骤导出的是dmp文件---表结构及数据;

这里PL/SQL工具包含三种方式导出Oracle表结构及数据,三种方式分别为:Oracle Export 、SQL Inserts、PL/SQL Developer 其中Oracle Export导出的.dmp是二进制文件,可跨平台,还能包含权限,效率不错,用的最为广泛。

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

5 导入原数据库结构和数据到新表空间

为了检验,导出的这两个文件是否能用,使用新用户登录,将数据导入到新表空间试试;

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

工具à导入表;

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

工具à导入表;

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

我导入表结构时,没反应,可能是因为.sql文件中包含了有大字段(blob,clob,long),不能导出。不过我继续导入.dmp文件后,表和数据都导进去了;

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

查了一下: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 ;

上一篇:C#基础语言知识--编译和执行过程


下一篇:web.config配置详细说明