Oracle 整库备份还原

http://www.mamicode.com/info-detail-2481866.html

sql语句

system用户登陆

查看表空间和存放位置

select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts# = t2.ts#;

查看所有表空间的大小

select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;

查看未使用的表空间大小

select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

清理屏幕

clear screen

查看服务端编码

select userenv(‘language‘) from dual;

本地机器添加系统变量NLS_LANG,变量值为:服务端完整的编码类型即可解决显示不出中文的问题

查看所有表空间大小,使用情况,使用率的sql语句

SELECT a.tablespace_name?"表空间名",

???????total?"表空间大小",

???????free?"表空间剩余大小",

???????(total - free)?"表空间使用大小",

???????total / (1024?*?1024?*?1024)?"表空间大小(G)",

???????free / (1024?*?1024?*?1024)?"表空间剩余大小(G)",

???????(total - free) / (1024?*?1024?*?1024)?"表空间使用大小(G)",

???????round((total - free) / total,?4) *?100?"使用率 %"

??FROM (SELECT tablespace_name, SUM(bytes) free

??????????FROM dba_free_space

?????????GROUP BY tablespace_name) a,

???????(SELECT tablespace_name, SUM(bytes) total

??????????FROM dba_data_files

?????????GROUP BY tablespace_name) b

?WHERE a.tablespace_name = b.tablespace_name

执行上述sql语句即可查看所有的表空间名称,大小,使用情况。前提是执行者需要有dba权限。

?
?

?
?

整库备份还原首先需要system用户登陆,查询字符集,注意保持字符集的一致,然后然后创建备份目录,备份目录要对oracle用户开放读写权限。

1,备份

在系统上创建备份文件的存储目录,并且赋权给你oracle读写

mkdir /oraclebak

chown -R oracle:oinstall /oraclebak

以oracle用户登陆操作系统,以system用户的登陆sqlplus,创建备份的映射目录。

SQL> create directory data_dir as ‘/oraclebak‘;

以oracle用户登陆操作系统使用expdp执行备份工作。

expdp system/oracle directory=data_dir dumpfile=full.dmp full=y compression=all

?
?

2,还原,因为是全库备份,所有不需要考虑用户以及用户权限的问题,必须要考虑的问题是还原的时候,目的数据库一定要新建原数据库的名称一致的表空间,且目的数据库表空间容量大于原数据库。

以下为原数据库表空间信息

?
?

因为原数据库有ZWFW_MIG表空间,且大小为1G,所以在目的数据库上也创建大小大于1G,名称为ZWFW_MIG的表空间,以下为具体命令

CREATE TABLESPACE ZWFW_MIG

DATAFILE ‘/oracledata/ZWFW_MIG.dat‘

SIZE 1024M

REUSE

AUTOEXTEND ON NEXT 100M MAXSIZE 2048M;

?
?

关键词解释:

CREATE TABLESPACE:创建表空间的关键字

ZWFW_MIG:新创建的表空间的名字

DATAFILE ‘/oracledata/ZWFW_MIG.dat‘ :定义表空间对应的数据文件位置,注意oracle用户要有权限

SIZE 1024M:表空间大小为1024MB

REUSE:允许oracle重新使用数据文件

AUTOEXTEND ON NEXT 100M MAXSIZE 2048M;:允许表空间自动增长,每次增长100M,最大为2048M

?
?

以上为创建新的表空间,如果目的数据库已有对应的表空间,则不需要另外新建,只需要扩展目的数据库的表空间即可,有两种方式扩展,

第一,当对应的表空间数据文件所在目录有足够的存储空间时,直接使用以下命令重新定义数据文件的大小,数据文件大小重新定义之后,表空间大小就被改变了。

alter database datafile ‘/u01/app/oracle/12/oradata/orcl/sysaux01.dbf‘ resize 3096m; (重新定义/u01/app/oracle/12/oradata/orcl/sysaux01.dbf数据文件的大小为3GB)

第二,当表空间对应的数据文件所在目录没有足够的存储空间时,需要另外增加数据文件,对应的命令如下

alter tablespace UNDOTBS1 add datafile ‘/oracledata/UNDOTBS1.dbf‘ size 5120m; (为UNDOTBS1表空间添加数据文件,添加的数据文件为5120M,位置为/oracledata/UNDOTBS1.dbf)

?
?

关于临时表空间:

查询原数据库的临时表空间,

select c.tablespace_name,

to_char(c.bytes/1024/1024/1024,‘99,999.999‘) total_gb,

to_char( (c.bytes-d.bytes_used)/1024/1024/1024,‘99,999.999‘) free_gb,

to_char(d.bytes_used/1024/1024/1024,‘99,999.999‘) use_gb,

to_char(d.bytes_used*100/c.bytes,‘99.99‘) || ‘%‘use

from (select tablespace_name,sum(bytes) bytes

from dba_temp_files GROUP by tablespace_name) c,

(select tablespace_name,sum(bytes_cached) bytes_used

from v$temp_extent_pool GROUP by tablespace_name) d

where c.tablespace_name = d.tablespace_name;

?
?

扩展临时表空间

扩展临时表空间和扩展永久表空间的命令基本相似,仅仅是添加了temp关键字

?
?

alter tablespace TEMP add tempfile ‘/oracledata/TEMP1.dbf‘ size 15360m;

?
?

以上命令为为TEMP临时表空间添加数据文件,数据文件为15G

?
?

新建临时表空间

?
?

create temporary tablespace ZWFW_TEMP tempfile ‘/oracledata/ZWFW_TEMP1.dbf‘ size 1024m reuse autoextend on next 100m maxsize 2048m;

?
?

查询所有表空间的所有信息

select * from dba_tablespaces

?
?

创建还原的操作目录对象

create directory data_dir as ‘/oracledata‘;

?
?

?
?

关于归档模式,关闭归档模式可以快速的执行还原操作,且生成的日志较小。关于归档模式的命令如下

?
?

1.改变非归档模式到归档模式:

1)SQL> conn / as sysdba (以DBA身份连接数据库)

2)SQL> shutdown immediate;(立即关闭数据库)

3)SQL> startup mount (启动实例并加载数据库,但不打开)

4)SQL> alter database archivelog; (更改数据库为归档模式)

5)SQL> alter database open; (打开数据库)

6)SQL> alter system archive log start; (启用自动归档)

7)SQL> exit (退出)

?
?

做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要!

2.改变归档模式到非归档模式:

1)SQL>SHUTDOWN NORMAL/IMMEDIATE;

2)SQL>STARTUP MOUNT;

3)SQL>ALTER DATABASE NOARCHIVELOG;

4)SQL>ALTER DATABASE OPEN;

?
?

?
?

?
?

执行还原命令

?
?

?
?

impdp system/system directory=data_dir dumpfile=full.dmp full=y

?
?

?
?

?
?

?
?

?
?

?
?

?
?

?
?

?
?

1,创建表空间

2,

3,创建表

4,插入数据

5,定义导出目录

6,导出全库

7,创建表空间

8,导入全库

?
?

原文地址:https://www.cnblogs.com/withfeel/p/12421940.html

时间: 2024-08-21 22:22:09

Oracle 整库备份还原的相关文章

MongoDB整库备份与还原以及单个collection备份、恢复方法

mongodb数据库维护离不开必要的备份.恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了 mongodump.exe备份的原理是通过一次查询获取当前服务器快照,并将快照写入磁盘中,因此这种方式保存的也不是实时的,因为在获取快照后,服务器还会有数据写入,为了保证备份的安全,同样我们还是可以利用fsync锁使服务器数据暂时写入缓存中. 高效开源数据库(mongodb)下载地址:http://www.jb51.net/softs/41751.html 备份前的检查

MongoDB之整库备份还原单表collection备份还原

cd D:\MongoDB\bin 1整库备份: mongodump -h dbhost -d dbname -o dbdirectory -h:MongDB所在服务器地址,例如:127.0.0.1:27017 -d:需要备份的数据库实例,例如:wlwdb -o:备份的数据存放位置,例如:D:\MongoDB\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个wlwdb目录,这个目录里面存放该数据库实例的备份数据. eg: mongodump -h 127

MongoDB整库备份与还原以及单个collection备份、恢复

备份前的检查> show dbsMyDB 0.0625GBadmin (empty)bruce 0.0625GBlocal (empty)test 0.0625GB> use MyDBswitched to db MyDB> db.users.find(){ "_id" : ObjectId("4e290aa39a1945747b28f1ee"), "a" : 1, "b" : 1 }{ "_id&

PHP-数据库备份还原脚本

PHP数据库备份.还原 1. mydb.php //DB类2. backup.php //备份脚本 3. restore.php //还原脚本 1.数据库类 <?php class db{ var $linkid; var $sqlid; var $record; function db($host="localhost",$username="root",$password="",$database="mydb") {

oracle exp逻辑备份还原

在 cmd 模式下运行 imp 用户名/密码 根据提示下一步 仅导入数据 (yes/no): no > 选择 no  其他选yes 若这一步选yes 报错 IMP-00402: 参数 "SHOW" 在 data_only 模式下无效 IMP-00000: 未成功终止导入

Oracle之RMAN备份及还原

RMAN可以进行增量备份:数据库,表空间,数据文件 只有使用过的block可以被备份成backup set 表空间与数据文件对应关系:dba_data_files / v$datafile_header 在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间 ORACLE RMAN停机备份: 备份 RMAN连接上ORACLE,WINDOWS下在命令模式下 RMAN TARGET / 连接本地数据库用的是本地认证模式.RMAN连接数据库必须在dedicat

mysql innobackupex xtrabackup 大数据量 备份 还原(转)

原文:http://blog.51yip.com/mysql/1650.html 作者:海底苍鹰 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1,Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtra

4、MongoDB学习之备份还原

一.MongoDB备份 1.MongoDB整库备份 备份数据使用下面的命令 mongodump -h dbhost -d dbname -o dbdirectory 备份user数据库 [[email protected] bin]# ./mongodump -h127.0.0.1 -d user -o /home/ [[email protected] bin]# ls /home/user/ b3.bson  b3.metadata.json  c1.bson  c1.metadata.js

使用mysql自带工具mysqldump进行全库备份以及source命令恢复数据库

mysql数据库提供了一个很好用的工具mysqldump用以备份数据库,下面将使用mysqldump命令进行备份所有数据库以及指定数据库 一.mysqldump一次性备份所有数据库数据 /usr/local/mysql/bin/mysqldump -u用户名 -p密码 --all-databases > /保存路径/文件名.sql 注意:以上命令直接在控制台输入即可,无须登录进入数据库操作界面 以上命令执行后,你就可以在对应路径下,找到你的备份sql文件了 二.mysqldump 一次性备份指定