oracle如何备份单表并在新数据库恢复

oracle如何备份单表并在新数据库恢复,第1张

冷备份

备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。此外冷备份也可以包含对参数文件和口令文件的备份,但是这两种备份是可以根据需要进行选择的。冷备份实际也是一种物理备份,是一个备份数据库物理文件的过程。因为冷备份要备份除了重做日志以外的所有数据库文件,因此也被成为完全的数据库备份。

过程:

冷备份数据必须是数据库不在open状态下。 以下步骤会给出详细的过程:

◆(1): 关闭DB : shutdown immediate;

◆(2):copy oradata目录下的所有文件, 包括数据文件, 控制文件,redo,等,还需要copy 密码文件 在目录ora92下 的database 中的pwd 文件全部copy到一个安全目录中。在sql 下可以直接加一个 host 然后使用dos命令。如host copy

◆(3):如果是 *** 作系统的重新安装,只要是同样系统,同样数据库版本,是可以做冷备恢复。一下谈的是系统的重新安装后的步骤。

◆(4):正常安装oracle软件,只需要安装软件,可以不用建实例,建实例的时间也比较长,也没有必要。 软件安装好以后,开始准备恢复。

◆(5):数据覆盖过去包括pwd文件,放在原来的目录,如果目录有所改变则需要另外建立控制文件,修改pfile。

◆(6):建立服务:使用oradim 命令 cmd下 oradim -new -sid erp 表示建立一个服务,sid为erp。关于oradim的命令另外给出专门解释。

◆(7):建立监听: net configuration assintant 来建立,或用脚本建立并且开启。

◆(8):打开数据库: 用oem也行,cmd下也行。

set oracle_sid=erp;

sqlplus "/as sysdba";

startup;

select from v$instance;

至此,冷备份恢复成功。即使你现在用oem打开数据库时发现提示找不到sid ,但实际上你已经成功了,此时只需要重启一下的你的服务器就可以了。

-------------------------------------------

热备份

热备份是在数据库运行的情况下,采用archive log mode方式备份数据库的方法。热备份要求数据库处于archive log模式下 *** 作,并需要大量的档案空间。一旦数据库处于archive loh

模式,就可以进行备份了,当执行备份时,只能在数据文件级或表空间进行。

过程:

1准备工作

由于在备份过程中,数据库仍然是打开的,所以要求正在复制的各个数据文件管理的表空间必须处于备份模式。备份完后再脱离备份模式。因此备份前必须将ORACLE 数据库调整为归档模式。查看代码如下

查看当前数据库归档状态:ARCHIVE  LOG  LIST:以下为非归档

<img src=">

2数据库备份

21查询要备份表空间对应的数据文件的详细信息

select file_name from dba_data_files

where

tablespace_name='USERS';

22将表空间设为备份模式

ALTER  TABLESPACE  USERS  BEGIN  BACKUP;

23查看处于备份模式的数据文件:

select     from   v$backup;

24使用 *** 作系统命令备份表空间的数据文件

HOST COPY f:\BAK\ HOST COPY f:\oracle\oradata\orcl\dbf//将前面ORACLE数据库热备份的文件拷贝到系统目录中

25将表空间设置为正常模式

ALTER TABLESPACE  USERS  END  BACKUP。

导入格式(按用户方式导入,oracle在本机)

impdp 用户名/密码

schemas=要导入的用户(即是使用expdp导出的用户) directory=创建的文件夹名称(directory_name)

dumpfile=testdmp(要放入到directory_path路径下) logfile=implog(可以不写)

[sql] view plain copy

--导入时必须先创建文件夹路径

create or replace directory bao as 'd:\oracle\test';

--给使用的用户授权(读写权限)

Grant read,write on directory bao to scott;

--查看目录及权限

SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d

WHERE ttable_name(+) = ddirectory_name ORDER BY 2, 1;

创建完文件夹后,在win7下是没有创建的文件夹的,需要手动创建文件夹,并且把使用expdp导出的dmp文件放入该文件夹下(开始自己导入时,创建完文件夹后始终在磁盘上找不到)

期间报过好多错,像org-29283,org-06512,ora-29283,ora-39002,org-39070等等,反正很郁闷的~!

创建好文件夹后,进行导入:(我使用的是通过运行command命令进入命令行界面导入)

impdp scott/tiger schemas=certification directory=test dumpfile=testdmp

这要导入后会报错,提示表空间XXX不存在,用户certification不存在

根据错误信息,创建好表空间,和用户,并设置用户的表空间

[sql] view plain copy

CREATE TABLESPACE TEACHER

LOGGING

DATAFILE 'D:\ORACLE\ORADATA\ORCL\TEACHERDBF'

SIZE 1024M

AUTOEXTEND ON

NEXT 32M MAXSIZE 2048M

EXTENT MANAGEMENT LOCAL;

drop user certification;

create user certification identified by cert

DEFAULT TABLESPACE TEACHER;

grant connect,resource to certification;

grant create session,dba to certification;

测试环境:     源 windows oracle      目标 windows oracle      注 本文中所说的 schema 和 user 是一个意思      impdp 的数据源既可以是expdp 导出来的DMP文件 也可以是一数据库 通过neork_link 参数来指定数据源 schemas 参数说明要复制的用户 remap_schemas 参数说明源用户与目标用户的匹配关系 remap_tablepace 来调整原 schemas 使用的表空间与目标数据库用户要表空间的对应关系 这样 基本上可以把源schema的数据导入到目标数据库 格式如下     impdp user/password parfile=parfile log     parfile log 的内容     neork_link=目标数据库上的数据库链     schema=源数据库上导出数据的用户      remap_schema=源用户:目标用户      remap_tablespace=源用户使用的表空间:目标用户将使用的表空间(包括临时表空间)      parfile log 的内容     过程举例       在目标数据库上创建数据库链 指向源数据库 数据库链中连接的用户必须具备EXP_FULL_DATABASE 角色的权限 例      A 新建数据库链里的用户 授予create session 和使用users 空间的权限 SQL> create user link identified by ;     用户已创建      SQL> grant create session to link;     授权成功      SQL> ALTER USER LINK QUOTA UNLIMITED ON USERS;     用户已更改      B 为该用户创建一表 用于测试复制用户过程      SQL> CREATE TABLE LINK DOC_TYPE AS SELECT FROM INFO DOC_TYPE;     表已创建      SQL> SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER= LINK ;     TABLE_NAME          DOC_TYPE     C 使用该用户来创建数据库链      SQL> create public database link tolink connect to link identified by using ZHS ;     数据库链接已创建      D 使用该链来复制link用户 报 ORA : cannot link privileged user to non privileged user 错误      d:\oracle\product\ \db_ \BIN>impdp neork_link=tolink schemas=link remap_schema=link:link      Import: Release Production on Wednesday March : :      Copyright (c) Oracle All rights reserved      Username: / as sysdba     Connected to: Oracle Database g Enterprise Edition Release Production     With the Partitioning OLAP and Data Mining options     ORA : privileges are required     ORA : cannot link privileged user to non privileged user

F 授予 exp_ful_database 权限后 复制成功      SQL> grant exp_full_database to link;     授权成功      d:\oracle\product\ \db_ \BIN>impdp neork_link=tolink schemas=link remap_schema=link:link      Import: Release Production on Wednesday March : :      Copyright (c) Oracle All rights reserved      Username: / as sysdba     Connected to: Oracle Database g Enterprise Edition Release Production     With the Partitioning OLAP and Data Mining options     FLASHBACK automatically enabled to preserve database integrity      Starting SYS SYS_IMPORT_SCHEMA_ : / AS SYSDBA neork_link=tolink schemas=link remap _schema=link:link      Estimate in progress using BLOCKS method      Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA     Total estimation using BLOCKS method: KB     Processing object type SCHEMA_EXPORT/USER     Processing object type SCHEMA_EXPORT/SYSTEM_GRANT     Processing object type SCHEMA_EXPORT/ROLE_GRANT     Processing object type SCHEMA_EXPORT/DEFAULT_ROLE     Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA     Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA     Processing object type SCHEMA_EXPORT/TABLE/TABLE     imported LINK DOC_TYPE rows     Job SYS SYS_IMPORT_SCHEMA_ successfully pleted at : :

lishixinzhi/Article/program/Oracle/201311/18055

关于 impdp full=y 全库导入问题

写法跟expdp命令一样 如导出命令: expdp 用户名/密码 schemas=用户名 directory=exp dumpfile=dmp logfile=explog 导入命令只需把expdp换成impdp就行 impdp 用户名/密码 schemas=用户名 directory=exp dumpfile=dmp logfile=implog 注意

表空间位置就是用户的位置,所以直接选择相应的用户就可以了。 举例:imp tmrpt/tmrpt@221110312:1521/bocReport full= y file=c:\yuCheng\event_log_realtimedmp ignore= y; 备注:如果是本机的话

首先在服务器上创建真实的目录 tableStruct ;(注意:第三步创建逻辑目录的命令不会在OS上创建真正的目录,所以要先在服务器上创建真实的目录。如下图:)

expdp system/123456@orcl schemas=jwuser dumpfile=jwuser_tablesdmp directory=data_dir logfile=jwuser_tableslog;

impdp ggs/123456 remap_tablespace=JW_USER:TEST remap_schema=jwuser:IMPJW directory=data_dir dumpfile=JWUSER_TABLESDMP logfile=impdp_testlog

以上就是关于oracle如何备份单表并在新数据库恢复全部的内容,包括:oracle如何备份单表并在新数据库恢复、如何使用impdp导入oracle数据库文件、使用impdp复制oracle的schema数据迁移等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9841845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存