`

Oracle数据库备份

 
阅读更多
Oracle数据库备份

a.开启本机Oracle服务

b.修改D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora文件
momo =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.XX.XX)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

c. cmd--exp 用户名/密码@momo owner=用户名 file=e:\test.dmp log=e:\test.log





一、
Oracle用户的导出与导入
exp user/pwd@实例名称(远程电脑的话是你本地配置好的链接名称) file=D:\a.dmp


导出:
1、 找到你Oracle安装位置的bin目录下的 emp.exe 如: D:\oracletools\oracle\product\10.2.0\db_1\BIN 
2、双击运行,输入你要导出的用户名和密码(密码不可见)
3、输入你导出文件存放的位置  如:d:\crm.dmp 【一定是bmp文件】

导入: 
 1、 创建用户  如:crm  【如果存在crm用户(里面含有数据等  先删除  drop user crm cascade)】 
 2、 赋权让其拥有导入的权限  grant dba to crm  
 3、 找到你Oracle安装位置的bin目录下的 imp.exe  4、 输入你要导入dmp文件的位置




二、
exp system/oracle@charge TABLE=scott.dept,scott.emp FILE=tab1.dmp
用system用户(密码是oracle)
登录charge库
将scott.dept跟scott.emp这2个表导出到tab1.dmp

imp scott/oracle@charge FILE=tab2.dmp TABLES=dept,emp
(这边应该是个逗号吧)用scott用户导入tab2.dmp文件中的dept,emp表 

imp system/oracle@charge FILE=tab2.dmp TABLES=dept.emp FROMUSER=scott TOUSER=system 
用scott用户登录,将tab2.dmp中的dept,emp表从scott用户导入到system用户




安装完ORACLE数据库,创建数据库后..

一  、创建空间、用户、授权

1、用户在CMD下以DBA身份登陆:

运行中输入CMD --SQLPLUS /NOLOG
SQL> CONN SYS/MANAGER AS SYSDBA (SYS/MANAGER 是指安装数据库时默认的、如果你修改了默认用户的密码 可以替换,也可以使用CONN /AS SYSDBA )
连接成功。

2、创建表空间
CREATE  BIGFILE TABLESPACE 空间名
DATAFILE '(文件位置)F:\ORACLE\ORADATA\ORCL\TS_SMARTERCU_DATAFILE'
SIZE 5120M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
1) DATAFILE: 表空间数据文件存放路径
    2) SIZE: 起初设置为200M
    3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
    4) 空间名称histdb 与 数据文件名称 histdb.dbf 不要求相同,可随意命名。
    5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间
    6) alter database datafile ' D:\oracle\product\10.2.0\oradata\orcl\histdb.dbf ' resize 500m; //手动修改数据文件大小为500M
PS: 删除表空间
DROP TABLESPACE ITTBANK INCLUDING CONTENTS AND DATAFILES;

3、创建用户并指定表空间
CREATE USER SMARTERCU (用户)PROFILE DEFAULT IDENTIFIED BY SMARTERCU(密码) DEFAULT TABLESPACE TS_SMARTERCU(指向的空间名)
TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;
PS:删除用户
drop user smartercu(用户名) cascade ; 彻底删除该用户

4.授权CONECT
//DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
//RESOURCE:拥有RESOURCE权限的用户只可以创建实体,不可以创建数据库结构。
//CONNECT:拥有CONNECT权限的用户只可以登录ORACLE,不可以创建实体,不可以创建数据库结构。
//对于普通用户:授予CONNECT, RESOURCE权限。
//对于DBA管理用户:授予CONNECT,RESOURCE, DBA权限。
EX:GRANT DBA TO SMARTERCU(授权用户);GRANT CONNECT TO SMARTERCU(授权用户;
ps: 撤权
revoke   权限   from  用户名;

5:查看该数据库中所有的表空间情况
select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_files
order by tablespace_name;

二 :导入外部的数据库备份文件到该用户以及本地导出备份

a、EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
b、EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。(推荐  Oracle 10g开始提供了称为数据泵新的工具expdp/impdp,
它为Oracle数据提供高速并行及大数据的迁移。使用expdp/impdp以前需要在数据库中创建一个Directory
create directory dump_test as '/u01/oracle10g';
grant read, write on directory dump_test to piner )
上面这两种是常见的oracle 备份的两种配对方法,不能交叉使用

1、备份数据 (利用数据泵的方式)
DUMPFILE:用于指定转储文件的名称,默认名称为expdat.dmp
DIRECTORY:指定转储文件和日志文件所在的目录  建立目录:CREATE DIRECTORY dump as ‘d:dump’; 查询创建了那些子目录:SELECT * FROM dba_directories;
FULL:指定数据库模式导出,默认为N
HELP:指定是否显示EXPDP命令行选项的帮助信息,默认为N,当设置为Y时,会显示导出选项的帮助信息.
LOGFILE:指定导出日志文件文件的名称,默认名称为export.log
NETWORK_LINK:指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.
NOLOGFILE:该选项用于指定禁止生成导出日志文件,默认值为N.
SCHEMAS:该方案用于指定执行方案模式导出,默认为当前用户方案.
VERSION:指定被导出对象的数据库版本,默认值为COMPATIBLE. (如果是高版本到低版本 推荐加版本号。 imp 和exp 好像没有袄。)

1)按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

2、还原数据

1)导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改变表的owner 也就是将scott 用户下的导入到system用户中
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

3、备份还原数据 (EXP/IMP的)
 exp sa/topsci@jjdb file=   owner=sa
 imp sa/topsci@orcl file =d:\jjdb-5-20121122.DMP log=d:\201211242202.log full=y
 exp:
USERID   用户名/口令
FULL   导出整个文件 (N)
BUFFER   数据缓冲区的大小
OWNER   所有者用户名列表
FILE   输出文件 (EXPDAT.DMP)
TABLES   表名列表
COMPRESS  导入一个范围 (Y)
RECORDLENGTH  IO 记录的长度
GRANTS   导出权限 (Y)
INCTYPE   增量导出类型
INDEXES   导出索引 (Y)
RECORD   跟踪增量导出 (Y)
ROWS   导出数据行 (Y)
PARFILE   参数文件名
CONSTRAINTS  导出限制 (Y)
CONSISTENT  交叉表一致性
LOG   屏幕输出的日志文件
STATISTICS  分析对象 (ESTIMATE)
DIRECT   直接路径 (N)
TRIGGERS  导出触发器 (Y)
FEEDBACK  显示每 x 行 (0) 的进度
FILESIZE  各转储文件的最大尺寸
QUERY   选定导出表子集的子句
imp:
USERID   用户名/口令
FULL   导入整个文件 (N)
BUFFER   数据缓冲区大小
FROMUSER  所有人用户名列表
FILE   输入文件 (EXPDAT.DMP)
TOUSER   用户名列表
SHOW   只列出文件内容 (N)
TABLES   表名列表
IGNORE   忽略创建错误 (N)
RECORDLENGTH  IO 记录的长度
GRANTS   导入权限 (Y)
INCTYPE   增量导入类型
INDEXES   导入索引 (Y)
COMMIT   提交数组插入 (N)
ROWS   导入数据行 (Y)
PARFILE   参数文件名
LOG   屏幕输出的日志文件
CONSTRAINTS  导入限制 (Y)
DESTROY   覆盖表空间数据文件 (N)
INDEXFILE  将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE   执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK  显示每 x 行 (0) 的进度
TOID_NOVALIDATE  跳过指定类型 id 的校验
FILESIZE  各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

三:配置plsql 连接数据库

 1、手工配置:安装目录:F:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN 下面有三个文件
 tnsnames.ora sqlnet.ora listener.ora
 首先修改  tnsnames.ora
 添加连接指向:
ORCL =(注意前面不能有空格袄)
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost(也可以是ip、计算机名))(PORT = 1521(端口默认的)))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL(数据库SID 一般数据库名))
    )
  )
修改listener.ora
添加监听
LISTENER = (注意前面不能有空格袄)
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost(也可以是ip、计算机名))(PORT = 1521))
    )
  )
启动服务 和监听
一般就连接成功了。
2:利用oracle中的net manager 工具配置

赠送一个好东西 如果误删除一些数据时 可以利用闪回移动表找回某个时间段的数据  只支持delete 
(truncate的数据是不能恢复的,所以以后可要小心袄)
1、开启闪回移动表
alter table 表名 enable row movement;
2:闪回 可以找回某个时间点某个表 delete 删除掉的数据(truncate的是不可以的)
flashback table 表名 to timestamp to_timestamp('2012-11-28 09:00:00','yyyy-MM-dd hh24:mi:ss')
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics