oracle基础系统学习目录
01.CentOS7静默安装oracle11g
02.Oracle的启动过程
03.从简单的sql开始
04.Oracle的体系架构
05.Oracle数据库对象
06.Oracle数据备份与恢复
07.用户和权限管理
08.Oracle的表
09.Oracle表的分区
10.Oracle的同义词与序列
11.Oracle的视图
12.Oracle的索引
13.Oracle通过JDBC连接Java
14.Oracle中的事务
15.Oracle11g的归档方式和日志文件的相关操作
16.Oracle的数据字典和动态性能视图
17.Oracle11g的PL/SQL基础
18.Oracle的过程和函数
19.Oracle11g中的游标
20.Oracle11g中的触发器
21.Oracle的程序包(Package)
22.Oracle中的临时表空间
23.Oracle11g的UNDO表空间
24.Oracle11g的逻辑备份与恢复
25. Oracle的回收站
26.Oracle11g的数据装载
27.Oracle11g的闪回Flashback
28.Oracle11g物化视图
oracle11g的逻辑备份与恢复
一、oracle11g的逻辑备份与恢复概述
Oracle数据库的备份包括以下两种类型:
- 物理备份是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份
- 逻辑备份是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份
1、逻辑备份
逻辑备份是指将数据库中的逻辑结构(如表、视图、存储过程等)以SQL语句的形式进行备份。这种备份方式可以通过数据库管理工具或者命令行工具来进行,备份的文件通常是一个包含了一系列SQL语句的文本文件。
2、逻辑恢复
逻辑恢复是指使用备份的SQL语句来重新构建数据库中的逻辑结构,从而实现数据库的恢复。在恢复过程中,可以通过执行备份文件中的SQL语句来逐个恢复数据库中的表、视图、存储过程等对象,从而使数据库恢复到备份时的状态。
总的来说,逻辑备份与恢复是通过备份数据库中的逻辑结构来实现数据库的备份和恢复,适用于需要对数据库中的逻辑结构进行定期备份和恢复的场景。
二、故障类型
1、常见的故障类型
-
数据库故障:数据库故障是指数据库服务器硬件或软件出现问题,导致数据库无法正常运行。数据库故障可能会导致数据丢失、服务中断、性能下降等问题。
-
存储故障:存储故障是指数据库服务器所连接的存储设备出现问题,导致数据库无法正常读写数据。存储故障可能会导致数据丢失、服务中断、性能下降等问题。
-
网络故障:网络故障是指数据库服务器与客户端之间的网络连接出现问题,导致数据库无法正常通信。网络故障可能会导致服务中断、性能下降等问题。
-
安全故障:安全故障是指数据库服务器的安全机制出现问题,导致数据库受到攻击或未经授权的访问。安全故障可能会导致数据泄露、服务中断、系统崩溃等问题。
不同的故障类型会对数据库造成不同的后果,例如:
-
数据丢失:数据库故障、存储故障等可能会导致数据丢失,造成数据不可恢复的损失。
-
服务中断:各种故障都可能导致数据库服务中断,影响用户的正常使用。
-
性能下降:故障可能会导致数据库性能下降,例如查询速度变慢、响应时间变长等。
-
数据库崩溃:故障可能会导致数据库崩溃,需要进行数据恢复或重建数据库。
因此,对于Oracle数据库管理员来说,及时发现并解决各种故障是非常重要的,可以采取备份、监控、调优等措施来保障数据库的稳定性和可靠性。
2、导致数据库操作中止的故障
-
语句故障:当执行 SQL 语句无效时,可能会导致数据库操作中止,造成服务中断、性能下降等后果。例如,如果一条 SQL 语句包含错误的语法或逻辑错误,可能会导致数据库无法正确执行该语句,从而影响用户的正常操作。
以下示例为语句故障:
SQL> SELECT * FROM e; SELECT * FROM e ORA-00942: table or view does not exist SQL>
一般不需要处理。
-
用户进程故障:当用户程序出错而无法访问数据库时发生用户进程故障。例如,如果客户端应用程序出现异常断开连接或异常终止进程,可能导致用户无法正常访问数据库,造成服务中断、用户体验下降等后果。
一般不需要处理。
-
实例故障:当 Oracle 的数据库实例由于硬件或软件问题而无法继续运行时,就会发生实例故障。这可能导致数据库无法提供服务,造成服务中断、数据丢失等后果。例如,如果数据库实例崩溃或无法启动,用户将无法访问数据库,导致严重的业务影响。
一般通过重启oracle可以解决。
-
介质故障:在数据库无法正确读取或写入某个数据库文件时,会发生介质故障。这可能导致数据损坏、丢失或不一致,造成数据完整性问题,从而影响业务的正常运行。
需要DBA进行处理。
-
硬件故障:硬件故障包括服务器、存储设备、网络设备等硬件出现故障。这可能导致数据库服务器无法正常运行,造成数据库操作中止,导致服务中断、数据丢失等后果。
-
软件故障:软件故障可能是由于数据库软件本身出现bug或者配置错误导致的,也可能是由于操作系统或其他相关软件出现问题。这可能导致数据库无法正常响应请求,造成数据库操作中止,导致服务中断、性能下降等后果。
-
网络故障:网络故障可能导致数据库服务器与客户端之间的通信中断,造成数据库操作中止,导致服务中断、性能下降等后果。
-
锁冲突:当多个会话同时访问相同的数据时,可能会导致锁冲突,造成某些操作无法执行,导致数据库操作中止,可能会导致性能下降、服务中断等后果。
-
日志文件满:当数据库的日志文件空间不足时,可能会导致数据库操作中止,造成数据写入失败,可能会导致数据库服务中断、数据丢失等后果。
-
事务阻塞:当数据库中的事务出现阻塞时,可能会导致数据库操作中止,造成性能下降、服务中断等后果。
这些故障都可能导致数据库服务中断、数据丢失、性能下降等严重后果,因此对于数据库管理员来说,需要及时发现并解决这些故障,采取备份、监控、调优等措施来保障数据库的稳定性和可靠性。
三、传统的导出和导入实用程序
1、传统的导出和导入实用程序概述
1.1 什么是传统的导出和导入实用程序
- 传统的导出导入程序用于实施数据库的逻辑备份和恢复
- 导出程序将数据库中的对象定义和数据备份到一个操作系统二进制文件中
- 导入程序读取二进制导出文件并将对象和数据载入数据库中
- 传统的导出导入程序是客户端工具。
1.2 传统的导出和导入实用程序的特点
- 可以按时间保存表结构和数据
- 允许导出指定的表,并重新导入到新的数据库中
- 可以把数据库迁移到另外一台异构服务器上
- 在两个不同版本的Oracle数据库之间传输数据
- 在联机状态下进行备份和恢复
- 可以重新组织表的存储结构,减少链接及磁盘碎片
1.3 调用导出和导入实用程序的三种方法
- 交互提示符:以交互的方式提示用户逐个输入参数的值。
- 命令行参数:在命令行指定执行程序的参数和参数值。
- 参数文件:允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数
2、导出和导入的具体操作
[oracle@localhost ~]$ exp
Export: Release 11.2.0.1.0 - Production on Fri Dec 1 18:26:57 2023
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Username: test
Password:
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Enter array fetch buffer size: 4096 >
2.1 导出和导入数据库对象的四种模式
在Oracle数据库中,通常使用数据泵工具(Data Pump)来导出和导入数据库对象。以下是每种模式的示例代码:
-
数据库模式:导出和导入整个数据库中的所有对象
-- 导出整个数据库 expdp system/password@dbname directory=dpump_dir1 dumpfile=full_db_export.dmp logfile=full_db_export.log full=y -- 导入整个数据库 impdp system/password@dbname directory=dpump_dir1 dumpfile=full_db_export.dmp logfile=full_db_import.log full=y
-
表空间模式:导出和导入一个或多个指定的表空间中的所有对象
-- 导出指定表空间 expdp system/password@dbname directory=dpump_dir1 dumpfile=ts_export.dmp logfile=ts_export.log tablespaces=example_ts -- 导入指定表空间 impdp system/password@dbname directory=dpump_dir1 dumpfile=ts_export.dmp logfile=ts_import.log tablespaces=example_ts
-
用户模式:导出和导入一个用户模式中的所有对象
-- 导出指定用户模式 expdp system/password@dbname directory=dpump_dir1 dumpfile=user_export.dmp logfile=user_export.log schemas=example_user -- 导入指定用户模式 impdp system/password@dbname directory=dpump_dir1 dumpfile=user_export.dmp logfile=user_import.log remap_schema=example_user:new_user
-
表模式:导出和导入一个或多个指定的表或表分区
-- 导出指定表 expdp system/password@dbname directory=dpump_dir1 dumpfile=table_export.dmp logfile=table_export.log tables=example_table -- 导入指定表 impdp system/password@dbname directory=dpump_dir1 dumpfile=table_export.dmp logfile=table_import.log remap_schema=example_user:new_user
需要注意的是,以上代码中的expdp和impdp是数据泵导出和导入的命令,需要根据实际情况进行调整,包括连接信息、目录、日志文件等。
2.2 导出实用程序有以下常用命令参数
参数 | 说明 |
---|---|
USERID | 确定执行导出实用程序的用户名和口令 |
BUFFER | 确定导出数据时所使用的缓冲区大小, 其大小用字节表示 |
FILE | 指定导出的二进制文件名称, 默认的扩展名是.dmp |
FULL | 指定是否以全部数据库方式导出, 只有授权用户才可使用此参数 |
OWNER | 要导出的数据库用户列表 |
HELP | 指定是否显示帮助消息和参数说明 |
ROWS | 确定是否要导出表中的数据 |
TABLES | 按表方式导出时, 指定需导出的表和分区的名称 |
PARFILE | 指定传递给导出实用程序的参数文件名 |
TABLESPACES | 按表空间方式导出时, 指定要导出的表空间名 |
以下是每个参数的具体使用代码示例:
-
USERID:确定执行导出实用程序的用户名和口令
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp SCHEMAS=hr
-
BUFFER:确定导出数据时所使用的缓冲区大小,其大小用字节表示
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp BUFFER=1000000
-
FILE:指定导出的二进制文件名称,默认的扩展名是.dmp
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp
-
FULL:指定是否以全部数据库方式导出,只有授权用户才可使用此参数
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp FULL=Y
-
OWNER:要导出的数据库用户列表
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp SCHEMAS=hr,scott
-
HELP:指定是否显示帮助消息和参数说明
expdp HELP=Y
-
ROWS:确定是否要导出表中的数据
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp CONTENT=DATA_ONLY
-
TABLES:按表方式导出时,指定需导出的表和分区的名称
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp TABLES=employees,departments
-
PARFILE:指定传递给导出实用程序的参数文件名
expdp PARFILE=exp.par
-
TABLESPACES:按表空间方式导出时,指定要导出的表空间名
expdp USERID=system/mypassword DIRECTORY=dpump_dir DUMPFILE=expdat.dmp TABLESPACES=users,temp
这些代码示例演示了如何使用每个参数进行导出,并提供了相应的说明。
2.3 导出实用程序有以下常用命令参数
参数 | 说明 |
---|---|
USERID | 指定执行导入的用户名和密码 |
BUFFER | 指定用来读取数据的缓冲区大小, 以字节为单位 |
COMMIT | 指定是否在每个数组 (其大小由BUFFER参数设置) 插入后进行提交 |
FILE | 指定要导入的二进制文件名 |
FROMUSER | 指定要从导出转储文件中导入的用户模式 |
TOUSER | 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同 |
FULL | 指定是否要导入整个导出转储文件 |
TABLES | 指定要导入的表的列表 |
ROWS | 指定是否要导入表中的行 |
PARFILE | 指定传递给导入实用程序的参数文件名, 此文件可以包含这里列出的所有参数 |
IGNORE | 导入时是否忽略遇到的错误, 默认为N |
TABLESPACES | 按表空间方式导入, 列出要导入的表空间名 |
以上参数使用示例如下:
-- 以下是一个示例代码,演示如何使用impdp命令导入数据
-- 导入整个数据库
impdp USERID=hr/hr FULL=Y DIRECTORY=dpump_dir1 DUMPFILE=full_export.dmp
-- 导入指定用户的数据
impdp USERID=hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp FROMUSER=scott TOUSER=hr
-- 导入指定表的数据
impdp USERID=hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp TABLES=employees, departments
-- 导入时忽略错误
impdp USERID=hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp TABLES=employees, departments IGNORE=Y
-- 从参数文件导入
impdp PARFILE=import_param.par
在上述示例中,DIRECTORY参数用于指定导出文件的目录,DUMPFILE参数用于指定要导入的导出文件,FROMUSER和TOUSER参数用于指定要导入的用户,TABLES参数用于指定要导入的表,IGNORE参数用于指定在导入时是否忽略错误,PARFILE参数用于指定导入时使用的参数文件。
四、可传输表空间
如果迁移的数据量很大,可以使用可传输表空间:
1. 检查要传输的表空间是否是自包含的。
2. 将表空间设置成只读。
3. exp进行可传输表空间模式的导出。
4. 将导出文件和数据文件复制到目标数据库上。
5. 目标数据库上,imp进行可传输表空间模式的导入。
6. 目标数据库上,把表空间设置成读写状态。
1、什么是可传输表空间?
可传输表空间是Oracle11g中的一个特性,它允许将一个表空间从一个数据库传输到另一个数据库。这个特性可以用于数据库备份、数据迁移、数据复制等场景。
可传输表空间的原理是将表空间的数据文件转换为一个可传输的格式,然后在目标数据库中将这个格式转换为目标平台的数据文件格式。这个过程可以通过Oracle Data Pump工具完成。
2、可传输表空间具体用法。
-
可传输表空间的使用场景包括:
-
备份和恢复:将一个表空间备份到另一个数据库中,以避免数据丢失。
-
数据迁移:将一个表空间从一个数据库迁移到另一个数据库中,以实现数据的平滑迁移。
-
数据复制:将一个表空间复制到另一个数据库中,以实现数据的复制和同步。
-
-
使用可传输表空间的步骤如下:
在源数据库中创建一个可传输表空间:
CREATE TABLESPACE transfer_ts DATAFILE 'transfer_ts.dbf' SIZE 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
使用Oracle Data Pump工具将可传输表空间导出为一个可传输的文件:
expdp system/password DIRECTORY=DATA_PUMP_DIR DUMPFILE=transfer_ts.dmp TABLESPACES=transfer_ts
将可传输文件传输到目标数据库中。
在目标数据库中使用Oracle Data Pump工具将可传输文件导入为一个表空间:
impdp system/password DIRECTORY=DATA_PUMP_DIR DUMPFILE=transfer_ts.dmp TABLESPACES=transfer_ts
以上代码示例中,假设源数据库和目标数据库都已配置好Oracle Data Pump工具,并且已创建了名为DATA_PUMP_DIR的目录对象用于存储导出和导入的文件。具体的用户名、密码和文件路径需要根据实际情况进行替换。
需要注意的是,在使用可传输表空间的过程中,需要保证源数据库和目标数据库的数据库版本和操作系统平台相同。同时,也需要注意表空间中的对象是否与目标数据库中的对象冲突。
点击此处跳转下一节:25. Oracle的回收站
更多精彩文章可扫码关注公主号查看:
若需要各种相关资源可关注公众号留言