Oracle数据库备份与还原示例教程ARD.docx
《Oracle数据库备份与还原示例教程ARD.docx》由会员分享,可在线阅读,更多相关《Oracle数据库备份与还原示例教程ARD.docx(24页珍藏版)》请在冰豆网上搜索。
Oracle数据库备份与还原示例教程ARD
第1章Oracle如何创建数据库
在Oracle中建库,通常有两种方法。
一是使用Oracle的建库工具DBCA,这是一个图形界面工具,使用起来方便且很容易理解,因为它的界面友好、美观,而且提示也比较齐全。
在Windows系统中,这个工具可以在Oracle程序组中打开(”开始”—“程序”—“Oracle-OraDb10g_home1”—“ConfigurationandMigrationTools”—“DatabaseConfigurationAssistant”),也可以在命令行(”开始”—“运行”—“cmd”)工具中直接输入dbca来打开。
另一种方法就是手工建库,下面我会一一举例说明。
第一:
手工建库
手工建库比起使用DBCA建库来说,是比较麻烦的,但是如果我们学好了手工建库的话,就可以使我们更好地理解Oracle数据库的体系结构。
手工建库需要经过几个步骤,每一个步骤都非常关键。
它包括:
1、创建必要的相关目录
2、创建初始化参数文件
3、设置环境变量Oracle_sid
4、创建实例
5、创建口令文件
6、启动数据库到nomount(实例)状态
7、执行建库脚本
8、执行catalog脚本创建数据字典
9、执行catproc创建package包
10、执行pupbld
11、由初始化参数文件创建spfile文件
12、执行scott脚本创建scott模式
做完了以上的步骤之后就可以使用“SQL>alterdatabaseopen;”打开数据库正常的使用了。
下面,我将具体地把以上的几个步骤用实验展开来讲。
实验系统平台:
WindowsXP 数据库系统版本:
OracleDatabase10G
Oracle的安装路径:
D盘 创建的数据库名称:
book
1、打开命令行工具,创建必要有相关目录
C:
/>mkdirD:
/oracle/product/10.2.0/admin/book
C:
/>mkdirD:
/oracle/product/10.2.0/admin/book/bdump
C:
/>mkdirD:
/oracle/product/10.2.0/admin/book/udump
C:
/>mkdirD:
/oracle/product/10.2.0/admin/book/cdump
C:
/>mkdirD:
/oracle/product/10.2.0/admin/book/pfile
C:
/>mkdirD:
/oracle/product/10.2.0/admin/book/create
C:
/>mkdirD:
/oracle/product/10.2.0/oradata/book
上面创建目录的过程也可以在Windows的图形界面中去创建。
其中D:
/oracle/product/10.2.0/admin/book目录下的几个子目录主要用于存放数据库运行过程中的跟踪信息。
最重要的两个子目录是bdump和udump目录,bdump目录存放的是数据库运行过程中的各个后台进程的跟踪信息,当中alert文件是警告文件,其文件名称为alert_book.log,当数据库出现问题时,首先就可以去查看此文件以找出原因,手工创建过程中出现的各种问题往往也可以通过查看这个文件找到原因。
udump目录存放和特定会话相关的跟踪信息。
D:
/oracle/product/10.2.0/oradata/book目录存放各种数据库文件,包括controlfile、datafile、logfile。
2、创建初始化参数文件
数据库系统启动时须要用初始化参数文件的设置分配内存、启动必要的后台进程的。
因此,初始化参数文件创建的是否正确、参数设置是否正确关系着整个建库的“命运”。
创建初始化参数文件可以通过拷贝现有的初始化参数文件并将其做适当的修改即可,从而不必要用手工去一句一句地写出来,因为初始化参数文件的结构体系基本上都是一样的。
在我们安装Oracle的时候,系统已经为我们安装了一个名为orcl的数据库,于是我们可以从它那里得到一份初始化参数文件。
打开D:
/oracle/product/10.2.0/admin/orcl/pfile,找到init.ora文件,把它拷贝到D:
/oracle/product/10.2.0/bd_1/databse下,并将其改名为initbook.ora。
注意:
不是拷贝到其他路径。
启动实例时会去database目录下寻找初始化文件。
使用dbca生产的数据库仅仅在database目录下生成一个导航性init文件,真正的信息存储在其他位置。
接着用记事本的方式打开initbook.ora,修改以下的内容:
db_domain="" ------数据库域名
db_name=book
control_files=("D:
/oracle/product/10.2.0/oradata/book/control01.ctl","D:
/oracle/product/10.2.0/oradata/book/control02.ctl","D:
/oracle/product/10.2.0/oradata/book/control03.ctl")
undo_management=AUTO ------Undo空间管理方式
undo_tablespace=UNDOTBS1 ------注意此处的“UNDOTBS1”要和建库脚步本中对应
background_dump_dest=D:
/oracle/product/10.2.0/admin/book/bdump ------后台进程跟踪文件生成的位置
core_dump_dest=D:
/oracle/product/10.2.0/admin/book/cdump
user_dump_dest=D:
/oracle/product/10.2.0/admin/book/udump
3、打开命令行,设置环境变量oracle_sid
C:
/>setoracle_sid=book
设置环境变量的目的地是在默认的情况下,指定命令行中所操作的数据库实例是book。
4、创建实例(即后台控制服务)
C:
/>oradim–new–sidbook
oradim是创建实例的工具程序名称,-new表明执行新建实例,-delete表明执行删掉实例,-sid指定实例的名称。
5、创建口令文件
C:
/>orapwdfile=D:
/oracle/product/10.2.0/db_1/database/pwdbook.orapassword=bookstoreentries=5
orapwd是创建口令文件的工具程序名称,file参数指定口令文件所在的目录和文件名称,password参数指定sys用户的口令,entries参数指定数据库拥用DBA权限的用户的个数,当然还有一个force参数,表示是否强制覆盖。
请注意,这里的命令要一行输入,中间不得换行,否则会出现不必要的错误。
口令文件是专门存放sys用户的口令,因为sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的口令单独存放于口令文件中,这样数据库未打开时也能进行口令验证。
6、启动数据库到nomount(实例)状态
C:
/>sqlplus/nolog
SQL*Plus:
Release10.2.0.1.0-Productionon星期二12月2310:
04:
112008
Copyright(c)1982,2005,Oracle. Allrightsreserved.
SQL>connectsys/bookstoreassysdba---这里是用sys连接数据库
已连接到空闲例程
SQL>startupnomountpflile=D:
/oracle/product/10.2.0/bd_1/databse/initbook.ora
ORACLE例程已经启动。
TotalSystemGlobalArea 285212672bytes
FixedSize 1248552bytes
VariableSize 71303896bytes
DatabaseBuffers 205520896bytes
RedoBuffers 7139328bytes
SQL>
7、执行建库脚本
执行建库脚本,首先要有建库的脚本。
(去哪找建库脚本呢?
我又没有!
)不用着急,请接着往下看。
得到一个符合自己要求的建库脚本有两种方法,一种方法是在自己的电脑上用DBCA来建,接照它的提示一步步地去做,在做到第十二步的时候,请选择“生成建库脚本”,然后就大功告成,你就可以到相应的目录上去找到那个脚本并适当地修它便可便用。
另一种方法就是自己手工去写一份建库脚本,这也是这里要见意使用的方法,用记事本编辑如下的内容,并将其保存为文件名任取而后缀名为(*.sql)的SQL脚本,这里保存到E盘根本录下且文件名称为book.sql。
Createdatabasebook
datafile'D:
/oracle/product/10.2.0/oradata/book/system01.dbf'size300Mreuseautoextendonnext10240K maxsizeunlimited
extentmanagementlocal
sysauxdatafile'D:
/oracle/product/10.2.0/oradata/book/sysaux01.dbf'
size120Mreuseautoextendonnext10240Kmaxsizeunlimited
defaulttemporarytablespacetemp
tempfile'D:
/oracle/product/10.2.0/oradata/book/temp01.dbf'size20Mreuseautoextendonnext640Kmaxsizeunlimited
undotablespace"UNDOTBS1"--请注意这里的undo表空间要和参数文件对应
datafile'D:
/oracle/product/10.2.0/oradata/book/undotbs01.dbf'size200Mreuseautoextendonnext5120Kmaxsizeunlimited
logfile
group1('D:
/oracle/product/10.2.0/oradata/book/redo01.log')size10240K,
group2('D:
/oracle/product/10.2.0/oradata/book/redo02.log')size10240K,
group3('D:
/oracle/product/10.2.0/oradata/book/redo03.log')size10240K
接着就执行刚建的建库脚本:
SQL>startE:
/book.sql
8、执行catalog脚步本创建数据字典
SQL>startD:
/oracle/product/10.2.0/db_1/RDBMS/ADMIN/catalog.sql
9、执行catproc创建package包
SQL>startD:
/oracle/product/10.2.0/db_1/RDBMS/ADMIN/catproc.sql
10、执行pupbld
Pupbld的作用是为SQL*PLUS服务。
当在SQL*PLUS中以普通用户身份连接和使用数据库时,工具本身需要使用PRODUCTPROFILE的表盒试图,我们需要登录system用户执行该SQL
在执行pupbld之前要把当前用户(sys)转换成system,即以system账户连接数据库。
因为此数据库是刚建的,所以system的口令是系统默认的口令,即manager。
你可以在数据库建好以后再来重新设置此账户的口令。
SQL>connectsystem/manager
SQL>startD:
/oracle/product/10.2.0/db_1/sqlplus/admin/pupbld.sql
如果这一步出错了,多半是因为权限的问题,你可以换和角色登陆,一般就可以登陆了
SQL>connectsystem/managerassysdba
11、由初始化参数文件创建spfile文件
SQL>createspfilefrom
Pfile=D:
/oracle/product/10.2.0/bd_1/databse\initmydb.ora;
12、执行scott脚本创建scott模式
SQL>startD:
/oracle/product/10.2.0/db_1/RDBMA/ADMIN/scott.sql
13、以scott连接到数据库(口令为tiger),测试新建数据库是否可以正常运行
用以下命令测试数据库创建是否完成
SQL>select*fromscott.emp;
如果能够看到雇员信息正确显示,就说明数据库建立已完成
14、配置OEM,使得能够通过浏览器管理和控制数据库
CDC:
\oracle\product\10.2.0\db_1\bin
Setoracle_sid=mydb
emca–reposrecreate
emca–configdbcontroldb
至此,整个数据库就已经建好了。
接着你就可以在这个数据库上做你的事情了。
第二:
DBCA建库
这是一个图形界面工具,使用起来方便且很容易理解,因为它的界面友好、美观,而且提示也比较齐全。
在Windows系统中,这个工具可以在Oracle程序组中打开(”开始”—“程序”—“Oracle-OraDb10g_home1”—“ConfigurationandMigrationTools”—“DatabaseConfigurationAssistant”),也可以在命令行(”开始”—“运行”—“cmd”)工具中直接输入dbca来打开。
第2章Oracle如何备份数据库
在PL/SQL中点击【工具】\【导出表】,选择输出文件路径后点击【导出】,可导出dmp格式数据库文件,如下图所示:
——导出后的xjxmt.dmp文件
以下两种方法均可导出数据库(包括表、数据、存储过程、序列、视图等用户对象)
1.以管理员system身份导出用户为xmt的数据库
expsystem/123456@myxjxmtfile=D:
\xjxmt.dmpowner=xmt
2.以用户xmt身份导出用户为xmt的数据库
expxmt/xmt@myxjxmtfile=D:
\xjxmt.dmpowner=xmt
第3章Oracle如何创建表空间
登录命令窗口法一:
SYS用户在CMD下以DBA身份登陆:
打开黑窗口
在CMD中打sqlplus/nolog
然后再
conn/assysdba
登录命令窗口法二:
点击【开始】\【所有程序】\Oracle-OraDb10g_home1\应用程序开发\SQLPlus,如下图所示:
进入SQLPlus主界面,输入用户名(system)、口令(123456)后点击确定
在上图的SQLPlus中来执行以下所需的sql语句
//第1步:
创建临时表空间,路径自己换
createtemporarytablespacexmt_temp
tempfile'D:
\oracle\product\10.2.0\oradata\orcl\xmt_temp.dbf'
size50m
autoextendon
next50mmaxsize20480m
extentmanagementlocal;
(删除表空间:
DROPTABLESPACExmt_tempINCLUDINGCONTENTSANDDATAFILES;)
//第2步:
创建数据表空间,路径自己换
createtablespacexmt
logging
datafile'D:
\oracle\product\10.2.0\oradata\orcl\xmt.dbf'
size50m
autoextendon
next50mmaxsize20480m
extentmanagementlocal;
(删除表空间:
DROPTABLESPACExmtINCLUDINGCONTENTSANDDATAFILES;)
//第3步:
创建用户并指定表空间
createuserxmtidentifiedbyxmt
defaulttablespacexmt
temporarytablespacexmt_temp;
(删除用户:
dropuserxmtcascade;)
//第4步:
给用户授予权限,没有createsession权限就不能登录!
grantconnect,resource,createsession,createtabletoxmt;
(撤销权限:
revokeconnect,resource,createsession,createtablefromxmt;)
第4章Oracle如何还原数据库
//打开cmd运行以下命令将dmp文件的数据库导入到新的数据库中
impXMT/XMT@MYXJXMTfile=D:
\xjxmt.dmpfull=y;
注:
如果无法导入可能是因为导出的dmp文件的用户的权限不够。
xjxmt.dmp是由具有dba角色的用户到导出的。
要有相同或更高权限的用户才能导入该文件。
用sys登录执行SQL:
grantdbatoxmt(给用户xmt以dba角色)
第5章附录
5.1Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
Oracle中对数据对象和数据的管理,无疑都是使用PL/SQLDeveloper来进行管理,该工具也提供给我们很多方便、快捷的操作,使得我们不再为Oracle本身丑陋、难用的UI而抱怨。
由于我们一般都是建建表、查查数据的操作居多,较少会考虑系统的整个Oracle的完整备份操作。
但是在我们一些发布操作中,我们必须考虑如何把Oracle的对象、表数据导出到Sql脚本中,并且把创建Oracle表空间、创建Oracle数据库的操作也放到脚本中,这样我们就方便快速还原或者部署Oracle数据库到新的机器上了。
本文主要介绍如何结合Sql脚本和PL/SQLDeveloper工具来实现创建表空间、创建数据库、备份数据库、数据导出等操作,然后实现Oracle对象创建、导入数据等操作,方便我们快速了解、创建所需要的部署Sql脚本和数据库操作。
5.1.11、准备数据库创建脚本
createtablespacewhc_tbsdatafile'E:
\oracle\oradata\whcdb\whc.dbf'size100M;
--DROPTABLESPACEwhc_tbsINCLUDINGCONTENTSANDDATAFILESCASCADECONSTRAINTS;
createuserwhcidentifiedbywhcdefaulttablespacewhc_tbs;
grantconnect,resourcetowhc;
grantdbatowhc;
--Revokedbafromwhc;
其中--的注释语句是删除命名空间和移除DBA用户的权限的。
以上这些脚本是为了我们在新建一个表空间和Oracle数据库的时候使用的。
其中E:
\oracle\oradata\whcdb\whc.dbf路径是我们要存放数据库数据的位置,因此要保证该路径有足够的空间和足够的访问权限,否则会失败的。
5.1.22、导出数据库对象
在PL/SQLDeveloper的菜单Tools=>ExportUserObjects中出来一个对话框界面,然后框选要到处的Oracle数据库对象,包括表,序列,存储过程,视图,函数等等,并指定导出的文件名称,如下操作。
5.1.33、导出表数据
导出表结构和其他对象后,我们下一步就是把数据库的表数据进行导出,PL/SQL Developer工具支持导出数据到PL/SQL数据库脚本中,如下所示。
这样导出的脚本,我们可以在PL/SQL Developer工具导入或者自己通过Sqlplus工具进行导入。
至此,我们就已经完成了三种脚本了,包括创建数据库空间和数据库脚本、创建Oracle数据库对象(表、存储过程、视图、序列等)、创建导入数据的脚本,这样三种合一,就是一个完整的数据库了。
最后一步就是我们如何导入数据库对象和数据的问题了。
5.1.44、导入数据库对象及数据
导入数据库对象和数据的操作一样,都可以通过ImportTables操作实现,我们指定刚才上面两步创建的数据库脚本,执行即可再新的环境中创建数据库对象和数据库数据了。
如下所示。
执行的数据界面如下所示。
完成上面几个步骤,我们在新的数据库环境中,就具备了所有的东西了,顺利完成整个Oracle数据库对象及数据的迁移工作。
以上值得注意的是,我们导出Oracle对象和数据的时候,默认还是原来Oracle数据库的表空间和数据库用户名称的,如果我们想要在新的数据库服务器中指定不同的表空间和数据库用户对象,那么我们就需要替换生成的sql脚本,并在第一步指定合理的表空间和数据库用户。
如果是Linux平台下的数据库服务器,第一步操作也是差不多的,就是指定表空间的路径名稍微不同,其他操作并无差异。