扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便、快捷的操作,使得我们不再为Oracle本身丑陋、难用的UI而抱怨。由于我们一般都是建建表、查查数据的操作居多,较少会考虑系统的整个Oracle的完整备份操作。但是在我们一些发布操作中,我们必须考虑如何把Oracle的对象、表数据导出到Sql脚本中,并且把创建Oracle表空间、创建Oracle数据库的操作也放到脚本中,这样我们就方便快速还原或者部署Oracle数据库到新的机器上了。
定西网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
本文主要介绍如何结合Sql脚本和PL/SQL Developer工具来实现创建表空间、创建数据库、备份数据库、数据导出等操作,然后实现Oracle对象创建、导入数据等操作,方便我们快速了解、创建所需要的部署Sql脚本和数据库操作。
1、 准备数据库创建脚本
[sql] view plain copy
[sql] view plain copy
create tablespace whc_tbs datafile 'E:\oracle\oradata\whcdb\whc.dbf' size 100M;
--DROP TABLESPACE whc_tbs INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
create user whc identified by whc default tablespace whc_tbs;
grant connect,resource to whc;
grant dba to whc;
--Revoke dba from whc;
其中--的注释语句是删除命名空间和移除DBA用户的权限的。
以上这些脚本是为了我们在新建一个表空间和Oracle数据库的时候使用的。
其中E:\oracle\oradata\whcdb\whc.dbf路径是我们要存放数据库数据的位置,因此要保证该路径有足够的空间和足够的访问权限,否则会失败的。
2、 导出数据库对象
在PL/SQL Developer的菜单Tools=Export User Objects中出来一个对话框界面,然后框选要到处的Oracle 数据库对象,包括表,序列,存储过程,视图,函数等等,并指定导出的文件名称,如下操作。
3)导出表数据
导出表结构和其他对象后,我们下一步就是把数据库的表数据进行导出,PL/SQL Developer工具支持导出数据到PL/SQL数据库脚本中,如下所示。这样导出的脚本,我们可以在PL/SQL Developer工具导入或者自己通过Sql plus 工具进行导入。
至此,我们就已经完成了三种脚本了,包括创建数据库空间和数据库脚本、创建Oracle数据库对象(表、存储过程、视图、序列等)、创建导入数据的脚本,这样三种合一,就是一个完整的数据库了。最后一步就是我们如何导入数据库对象和数据的问题了。
4)导入数据库对象及数据
导入数据库对象和数据的操作一样,都可以通过Import Tables操作实现,我们指定刚才上面两步创建的数据库脚本,执行即可再新的环境中创建数据库对象和数据库数据了。
可以热备份:\x0d\x0aSQL alter database begin backup\x0d\x0a然后退出SQL,将Oracle软件和数据文件直接拷贝\x0d\x0a等都拷贝完了,再进sqlplus 执行:\x0d\x0aSQLalter database end backup\x0d\x0a然后将begin时刻到end时刻产生的归档也拷贝出来,\x0d\x0a这就完成了全备\x0d\x0a\x0d\x0a如果你要在oracle下备份整个数据库:可以用expdp方便的进行\x0d\x0aexpdp sys/XXX dumpfile=XXXX.dmp directory=XXXX\x0d\x0a其中directory是在oracle下建立的文件夹对象名\x0d\x0a假如你没建立过\x0d\x0a那么首先执行create directory dpdata1 as 'd:\test\dump';\x0d\x0a然后把expdp这样写directory=dpdata1
oracle 数据库备份的步骤是:
直接通过exp命令备份需要内容就可以了。可以参考下以下导出备份的方法:
1、将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2、将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3、将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4、将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
把里面的数据全部提取出来,就是备份啊。 再全部insert进去,就是还原了。
具体可以参考insert into的用法。 可以把某张表的数据,完全的复制到另外一个备份表里。
要还原的话,先删除原先的表内容,再反过来insert into一次就好了
Insert into Table2(field1,field2,...) select value1,value2,... from Table1 前提是你先创建好Table2表。
如果,备份几张表的数据,那么,可以备份到dmp文件中,用命令导出表比较快捷。\x0d\x0a语句如下:\x0d\x0aexp test/test@ora100G file=c:\17.dmp tables=(tb1,tb2,tb3,...)\x0d\x0a开始,运行,在弹出的“运行”框里,粘贴上面的语句,并修改,就可以备份。\x0d\x0a解释一下这个语句(因为今天是17号,所以,就拿17.dmp作为备份文件的名称吧!):\x0d\x0aexp:导出。\x0d\x0atest/test@ora100g:“test/test”是用户名和密码;“ora100G”是“网络服务名”。\x0d\x0afile=c:\17.dmp:“c:\17.dmp”是保存到本地的全文件路径。\x0d\x0atables=(tb1,tb2,tb3,...):“(tb1,tb2,tb3,...)”是你选择需要备份的那些表的名称。\x0d\x0a因为,备份的时候一般都写一个日志备份文档,以方便以后查找,所以,原语句可以改写成\x0d\x0aexp test/test@ora100G file=c:\17.dmp tables=(tb1,tb2,tb3,...) log=c:\17.text
备份分为3种:
备份的方法
ORACLE数据库有三种标准的备份。导出/导入(EXPORT/IMPORT) 、冷备份、热备份。
导出备份是一种逻辑备份,这种方法包括读取一系列的数据库日志,并写入文件中,这些日志的读取与其所处位置无关。
冷备份和热备份是物理备份(也称低级备份),它涉及到组成数据库的文件,但不考虑逻辑内容。
我们分别介绍一下这三种备份方法及其特点:
(一)、导出/导入(EXPORT/IMPORT)
EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库。
1、EXPORT将数据库中数据备份成一个二进制系统文件称为“导出转储文件”(EXPORT DUMP FILE),并将重新生成数据库写入文件中。
它有三种模式:
a.用户模式:导出用户所有对象以及对象中的数据;
b.表模式:导出用户所有表或者指定的表;
c.整个数据库:导出数据库中所有对象。
它的备份有三种类型:
a.完全型(COMPLETE EXPORT):备份整个数据库;
b.积累型(COMULATIVE ERPORT):备份上一次积累型备份所改变的数据;
c.增量型(INCREAMENTAL EXPORT):备份上一次备份后改变的数据。
EXPORT 的命令可以交互式进行,各参数的具体含义见附录。
在进行导出备份时我们要考虑一点问题,那就是导出的一致性,在导出过程 中导出每读一次就读取一个表,因而尽管导出是在一个特点时自己开始的,但不同的表读取的时间不同,因此,导出开始读一个表时,此时表中的数据才是导出的数据,这样当大多数表按内部关键字和外部关键字相互联系时,在导出过程中这些相关联表的改变就会导致导出的不一致性,要避开这个,我们可以将导出过程安排在不对表操作的时候进行。另外,当ORACLE中RESTRICTEP CONSISTENT 选项就可以保证导出数据一致性。
2、IMPORT导入:
导入的过程是导出的逆过程,这个命令先读取导出来的导出转储二进制文件,并运行文件,恢复对象用户和数据。
IMPORT命令执行的方法和EXPORT方案有关。
1、如果EXPORT所实施的是完全型方案(FULL)则在IMPORT时所有的数据对象,包括表空间,数据文件,用户都会在导入时创建,但考虑到数据库中的物理布局,预先创建表空间和用户是有用的。
2、如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式,则需要预先设置好表空间、用户、数据文件。
(二):冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。
数据库使用的每个文件都被备份下来,这些文件包括:
☆所有数据文件
☆所有控制文件
☆所有联机REDO LOG 文件
☆INIT.ORA文件(可选)
值得注意的是冷备份必须是数据库关闭的情况下完成,当数据库开着的时候,执行数据库文件系统备份无效。
作冷备份一般步骤是:
1:正常关闭要备份的实例(instance);
2: 备份整个数据库到一个目录
3:启动数据库
1: SQLDBAconnect internal
SQLDBAshutdown normal
2: SQLDBA! cp
或
SQLDBA!tar cvf /dev/rmt/0 /wwwdg/oracle
3: SQLDBAstartup
(三)热备份(ACHIRELOG)
数据库需要二十四小时运行,而且随时有新的数据加入.数据丢失将影响整个公司.采用archivelog mode物理备份.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流