Oracle 数据库12c新特性总结

Oracle 数据库12c新特性总结
Oracle 数据库12c新特性总结

Oracle 数据库 12c 新特性总结
导读:本系列文章是 Oracle ACE 总监 Syed Jaffer Hussain 对 Oracle 数据库 12c 的一些 新特性总结,包括数据库管理、RMAN、高可用性以及性能调优等内容。 关键词:Oracle 数据库 12c RMAN PGA 限制 不可见字段
【TechTarget 中国原创】 编者按:甲骨文公司近日正式发布了新版旗舰级数
据库 Oracle Database 12c,在 TechTarget 数据库网站之前的一些报道中,我 们曾对 12c 的一些新特性进行了介绍(参考:尝鲜 Oracle Database 12c 的十 二大新特性)而随着产品正式 GA,相关技术文档也披露了更多关于 12c 数据库 的细节。本系列文章是 Oracle ACE 总监 Syed Jaffer Hussain 对 Oracle 数据 库 12c 的一些新特性总结,包括数据库管理、RMAN、高可用性以及性能调优 等内容。
Oracle 数据库 12c 新特性总结(一)
在第一部分中,我们将介绍: 1. 在线迁移活跃的数据文件 2. 表分区或子分区的在线迁移 3. 不可见字段 4. 相同字段上的多重索引 5. DDL 日志 6. 临时 undo

7. 新的备份用户特权 8. 如何在 RMAN 中执行 SQL 语句 9. RMAN 中的表级别恢复 10. PGA 的大小限制问题
1. 在线重命名和重新定位活跃数据文件
不同于以往的版本,在 Oracle 数据库 12c R1 版本中对数据文件的迁移或 重命名不再需要太多繁琐的步骤,即把表空间置为只读模式,接下来是对数据文 件进行离线操作。 在 12c R1 中, 可以使用 ALTER DATABASE MOVE DATAFILE 这样的 SQL 语句对数据文件进行在线重命名和移动。而当此数据文件正在传输 时,终端用户可以执行查询,DML 以及 DDL 方面的任务。另外,数据文件可以 在存储设备间迁移,如从非 ASM 迁移至 ASM,反之亦然。 重命名数据文件:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users01.dbf' TO '/u00/data/u sers_01.dbf';
从非 ASM 迁移数据文件至 ASM:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '+DG_DATA ';
将数据文件从一个 ASM 磁盘群组迁移至另一个 ASM 磁盘群组:
SQL> ALTER DATABASE MOVE DATAFILE '+DG_DATA/DBNAME/DATAFILE/users_0 1.dbf ' TO '+DG_DATA_02';

在数据文件已存在于新路径的情况下,以相同的命名将其覆盖:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '/u00/data_ new/users_01.dbf' REUSE;
复制文件到一个新路径,同时在原路径下保留其拷贝:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '/u00/data_ new/users_01.dbf' KEEP;
当通过查询 v$session_longops 动态视图来移动文件时, 你可以监控这一 过程。另外,你也可以引用 alert.log,Oracle 会在其中记录具体的行为。
2. 表分区或子分区的在线迁移
在 Oracle 12c R1 中迁移表分区或子分区到不同的表空间不再需要复杂的 过程。 与之前版本中未分区表进行在线迁移类似,表分区或子分区可以在线或是 离线迁移至一个不同的表空间。 当指定了 ONLINE 语句, 所有的 DML 操作可以 在没有任何中断的情况下,在参与这一过程的分区或子分区上执行。与此相反, 分区或子分区迁移如果是在离线情况下进行的,DML 操作是不被允许的。 示例:
SQL> ALTER TABLE table_name MOVE PARTITION|SUBPARTITION partition_name TO tablespace tablespace_name;
SQL> ALTER TABLE table_name MOVE PARTITION|SUBPARTITION partition_name TO tablespace tablespace_name UPDATE INDEXES ONLINE;

第一个示例是用来在离线状况下将一个表分区或子分区迁移至一个新的表 空间。 第二个示例是在线迁移表分区或子分区并维护表上任何本地或全局的索引。 此外,当使用 ONLINE 语句时,DML 操作是不会中断的。 重要提示:
?
UPDATE INDEXES 语句可以避免出现表中任何本地或全局索引无法使用的情 况。
? ?
表的在线迁移限制也适用于此。 引入加锁机制来完成这一过程, 当然它也会导致性能下降并会产生大量的 redo, 这取决于分区和子分区的大小。
3. 不可见字段
在 Oracle 11g R1 中,Oracle 以不可见索引和虚拟字段的形式引入了一些 不错的增强特性。继承前者并发扬光大,Oracle 12c R1 中引入了不可见字段思 想。在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们 往往会创建一个视图来隐藏所需信息或应用某些安全条件。 在 12c R1 中, 你可以在表中创建不可见字段。 当一个字段定义为不可见时, 这一字段就不会出现在通用查询中,除非在 SQL 语句或条件中有显式的提及这 一字段,或是在表定义中有 DESCRIBED。要添加或是修改一个不可见字段是非 常容易的,反之亦然。
SQL> CREATE TABLE emp (eno number(6), ename name varchar2(40), sal number(

9) INVISIBLE); SQL> ALTER TABLE emp MODIFY (sal visible);
你必须在 INSERT 语句中显式提及不可见字段名以将不可见字段插入到数 据库中。虚拟字段和分区字段同样也可以定义为不可见类型。但临时表,外部表 和集群表并不支持不可见字段。
4. 相同字段上的多重索引
在 Oracle 12c R1 之前,一个字段是无法以任何形式拥有多个索引的。或许 有人会想知道为什么通常一个字段需要有多重索引, 事实上需要多重索引的字段 或字段集合是很多的。在 12c R1 中,只要索引类型的形式不同,一个字段就可 以包含在一个 B-tree 索引中,同样也可以包含在 Bitmap 索引中。注意,只有 一种类型的索引是在给定时间可用的。
5. DDL 日志
在之前的版本中没有可选方法来对 DDL 操作进行日志记录。而在 12c R1 中,你现在可以将 DDL 操作写入 xml 和日志文件中。这对于了解谁在什么时间 执行了 create 或 drop 命令是十分有用的。要开启这一功能必须对 ENABLE_DDL_LOGGING 初始参数加以配置。 这一参数可以在数据库或会话级 加以设置。当此参数为启用状态,所有的 DDL 命令会记录在 $ORACLE_BASE/diag/rdbms/DBNAME/log|ddl 路径下的 xml 和日志文件中。

一个 xml 中包含 DDL 命令,IP 地址,时间戳等信息。这可以帮助确定在什么时 候对用户或表进行了删除亦或是一条 DDL 语句在何时触发。 开启 DDL 日志功能
SQL> ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;
以下的 DDL 语句可能会记录在 xml 或日志文件中:
? ? ?
CREATE|ALTER|DROP|TRUNCATE TABLE DROP USER CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENCE
6. 临时 undo
每个 Oracle 数据库包含一组与系统相关的表空间,例如 SYSTEM, SYSAUX,UNDO & TEMP,并且它们在 Oracle 数据库中每个都用于不同的 目的。 在 Oracle 12c R1 之前, 临时表生成的 undo 记录是存储在 undo 表空间 里的,通用表和持久表的 undo 记录也是类似的。而在 12c R12 的临时 undo 功能中, 临时 undo 记录可以存储在一个临时表中,而无需再存储在 undo 表空 间内。 这样做的主要好处在于: 减少 undo 表空间, 由于信息不会被记录在 redo 日志中,所以减少了 redo 数据的生成。你可以在会话级别或者数据库级别来启 用临时 undo 选项。 启用临时 undo 功能 要使用这一新功能,需要做以下设置:

? ? ?
兼容性参数必须设置为 12.0.0 或更高 启用 TEMP_UNDO_ENABLED 初始化参数 由于临时 undo 记录现在是存储在一个临时表空间中的,你需要有足够的空间 来创建这一临时表空间
?
对于会话级,你可以使用:ALTER SYSTEM SET TEMP_UNDO_ENABLE=TRUE; 查询临时 undo 信息 以下所列的字典视图是用来查看或查询临时 undo 数据相关统计信息的:
? ? ?
V$TEMPUNDOSTAT DBA_HIST_UNDOSTAT V$UNDOSTAT 要禁用此功能,你只需做以下设置:
SQL> ALTER SYSTEM|SESSION SET TEMP_UNDO_ENABLED=FALSE;
7. 备份特定用户特权
在 11g R2 中,引入了 SYSASM 特权来执行 ASM 的特定操作。同样地, 在 12c 中引入了 SYSBACKUP 特权用来在 RMAN 中执行备份和恢复命令。因 此, 你可以在数据库中创建一个本地用户并在不授予其 SYSDBA 权限的情况下, 通过授予 SYSBACKUP 权限让其能够在 RMAN 中执行备份和恢复相关的任务。
$ ./rman target "username/password as SYSBACKUP"

8. 如何在 RMAN 中执行 SQL 语句
在 12c 中,你可以在不需要 SQL 前缀的情况下在 RMAN 中执行任何 SQL 和 PL/SQL 命令,即你可以从 RMAN 直接执行任何 SQL 和 PL/SQL 命令。如下 便是在 RMAN 中执行 SQL 语句的示例:
RMAN> SELECT username,machine FROM v$session; RMAN> ALTER TABLESPACE users ADD DATAFILE SIZE 121m;
9. RMAN 中的表恢复和分区恢复
Oracle 数据库备份主要分为两类:逻辑和物理备份。每种备份类型都有其 自身的优缺点。 在之前的版本中, 利用现有物理备份来恢复表或分区是不可行的。 为了恢复特定对象,逻辑备份是必需的。对于 12c R1,你可以在发生 drop 或 truncate 的情况下从 RMAN 备份将一个特定的表或分区恢复到某个时间点或 SCN。 当通过 RMAN 发起一个表或分区恢复时,大概流程是这样的:
? ? ? ? ?
确定要恢复表或分区所需的备份集 在恢复表或分区的过程中,一个辅助数据库会临时设置为某个时间点 利用数据泵将所需表或分区导出到一个 dumpfile 你可以从源数据库导入表或分区(可选) 在恢复过程中进行重命名操作 以下是一个通过 RMAN 对表进行时间点恢复的示例(确保你已经对稍早的 数据库进行了完整备份):

RMAN> connect target "username/password as SYSBACKUP"; RMAN> RECOVER TABLE username.tablename UNTIL TIME 'TIMESTAMP…' AUXILIARY DESTINATION '/u01/tablerecovery' DATAPUMP DESTINATION '/u01/dpump' DUMP FILE 'tablename.dmp' NOTABLEIMPORT -- this option avoids importing the table automatically.(此选 项避免自动导入表)
REMAP TABLE 'username.tablename': 'username.new_table_name'; -- can rename t able with this option.(此选项可以对表重命名)
重要提示:
?
确保对于辅助数据库在/u01 文件系统下有足够的可用空间, 同时对数据泵文件 也有同样保证
?
必须要存在一份完整的数据库备份, 或者至少是要有 SYSTEM 相关的表空间备 份 以下是在 RMAN 中应用表或分区恢复的限制和约束:
? ? ?
SYS 用户表或分区无法恢复 存储于 SYSAUX 和 SYSTEM 表空间下的表和分区无法恢复 当 REMAP 选项用来恢复的表包含 NOT NULL 约束时,恢复此表是不可行的

10. 限制 PGA 的大小
在 Oracle 12c R1 之前,没有选项可以用来限制和控制 PGA 的大小。虽然 你设置某个大小为 PGA_AGGREGATE_TARGET 的初始参数,Oracle 会根据工 作负载和需求来动态地增大或减小 PGA 的大小。而在 12c 中,你可以通过开启 自动 PGA 管理来对 PGA 设定硬性限制, 这需要对 PGA_AGGREGATE_LIMIT 参 数进行设置。因此,你现在可以通过设置新的参数来对 PGA 设定硬性限制以避 免过度使用 PGA。
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=2G;
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit
重要提示: 当超过了当前 PGA 的限制,Oracle 会自动终止/中止会话或进程以保持最 合适的 PGA 内存。
Oracle 数据库 12c 新特性总结(二)
第二部分内容包括: 1. 对表分区维护的增强 2. 数据库升级的改进 3. 通过网络恢复数据文件 4. 对 Data Pump 的增强 5. 实时自动数据诊断监视器(ADDM)

6. 并发统计信息收集
1. 对表分区维护的增强
在第一部分中, 我解释了如何在线或是离线状态下迁移一个表分区或子分区 到另一个不同的表空间。在本文中,主要介绍表分区其他方面的改进。 添加多个新分区 在 Oracle 12c R1 之前, 一次只可能添加一个新分区到一个已存在的分区表。 要添加一个以上的新分区,需要对每个新分区都单独执行一次 ALTER TABLE ADD PARTITION 语句。 而 Oracle 12c 只需要使用一条单独的 ALTER TABLE ADD PARTITION 命令就可以添加多个新分区,这增加了数据库灵活性。以下 示例说明了如何添加多个新分区到已存在的分区表:
SQL> CREATE TABLE emp_part (eno number(8), ename varchar2(40), sal number (6)) PARTITION BY RANGE (sal) (PARTITION p1 VALUES LESS THAN (10000), PARTITION p2 VALUES LESS THAN (20000), PARTITION p3 VALUES LESS THAN (30000) );
添加两个新分区:
SQL> ALTER TABLE emp_part ADD PARTITION PARTITION p4 VALUES LESS THAN (35000), PARTITION p5 VALUES LESS THAN (40000);

同样,只要 MAXVALUE 分区不存在,你就可以添加多个新分区到一个列 表和系统分区表。 如何删除和截断多个分区/子分区 作为数据维护的一部分,DBA 通常会在一个分区表上进行删除或截断分区 的维护任务。在 12c R1 之前,对于一个已存在的分区表一次只可能删除或截断 一个分区。而对于 Oracle 12c, 可以用单条 ALTER TABLE table_name {DROP|TRUNCATE} PARTITIONS 命令来撤销或合并多个分区和子分区。 下例说明了如何在一个已存在分区表上删除或截断多个分区:
SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5; SQL> ALTER TABLE emp_part TRUNCATE PARTITONS p4,p5;
要保持索引更新,使用 UPDATE INDEXES 或 UPDATE GLOBAL INDEXES 语句,如下所示:
SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5 UPDATE GLOBAL INDEXES;
SQL> ALTER TABLE emp_part TRUNCATE PARTITIONS p4,p5 UPDATE GLOBAL IND EXES;
如果你在不使用 UPDATE GLOBAL INDEXES 语句的情况下删除或截断 一个分区,你可以在 USER_INDEXES 或 USER_IND_PARTITIONS 字典视图 下查询 ORPHANED_ENTRIES 字段以找出是否有索引包含任何的过期条目。 将单个分区分割为多个新分区

在 12c 中新增强的 SPLIT PARTITION 语句可以让你只使用一个单独命令 将一个特定分区或子分区分割为多个新分区。 下例说明了如何将一个分区分割为 多个新分区:
SQL> CREATE TABLE emp_part (eno number(8), ename varchar2(40), sal number (6)) PARTITION BY RANGE (sal) (PARTITION p1 VALUES LESS THAN (10000), PARTITION p2 VALUES LESS THAN (20000), PARTITION p_max (MAXVALUE) ); SQL> ALTER TABLE emp_part SPLIT PARTITION p_max INTO (PARTITION p3 VALUES LESS THAN (25000), PARTITION p4 VALUES LESS THAN (30000), PARTITION p_max);
将多个分区合并为一个分区 你可以使用单条 ALTER TBALE MERGE PARTITIONS 语句将多个分区合 并为一个单独分区:
SQL> CREATE TABLE emp_part (eno number(8), ename varchar2(40), sal number (6)) PARTITION BY RANGE (sal) (PARTITION p1 VALUES LESS THAN (10000), PARTITION p2 VALUES LESS THAN (20000), PARTITION p3 VALUES LESS THAN (30000),

PARTITION p4 VALUES LESS THAN (40000), PARTITION p5 VALUES LESS THAN (50000), PARTITION p_max (MAXVALUE) );
SQL> ALTER TABLE emp_part MERGE PARTITIONS p3,p4,p5 INTO PARTITION p_m erge;
如果分区范围形成序列,你可以使用如下示例:
SQL> ALTER TABLE emp_part MERGE PARTITIONS p3 TO p5 INTO PARTITION p_m erge;
2. 数据库升级改进
每当一个新的 Oracle 版本发布,DBA 所要面临的挑战就是升级过程。该部 分我将介绍 12c 中引入的针对升级的两个改进。 预升级脚本 在 12c R1 中,原有的 utlu[121]s.sql 脚本由一个大为改善的预升级信息 脚本 preupgrd.sql 所取代。除了预升级检查验证,此脚本还能以修复脚本的形 式解决在升级过程前后出现的各种问题。 可以对产生的修复脚本加以执行来解决不同级别的问题,例如,预升级和升 级后的问题。 当手动升级数据库时,脚本必须在实际升级过程初始化之前加以手

动执行。然而,当使用 DBUA 工具来进行数据库升级时,它会将预升级脚本作 为升级过程的一部分加以自动执行,而且会提示你去执行修复脚本以防止报错。 如何执行脚本:
SQL> @$ORACLE_12GHOME/rdbms/admin/preupgrd.sql
以上脚本会产生一份日志文件以及一个[pre/post]upgrade_fixup.sql 脚 本。所有这些文件都位于$ORACLE_BASE/cfgtoollogs 目录下。在你继续真 正的升级过程之前, 你应该浏览日志文件中所提到的建议并执行脚本以修复问题。 注意:你要确保将 preupgrd.sql 和 utluppkg.sql 脚本从 12c Oracle 的 目录 home/rdbms/admin directory 拷贝至当前的 Oracle 的 database/rdbms/admin 路径。 并行升级功能 数据库升级时间的长短取决于数据库上所配置的组件数量, 而不是数据库的 大小。在之前的版本中,我们是无法并行运行升级程序,从而快速完成整个升级 过程的。 在 12c R1 中,原有的 catupgrd.sql 脚本由 catctl.pl 脚本(并行升级功能) 替代,现在我们可以采用并行模式运行升级程序了。 以下流程说明了如何初始化并行升级功能(3 个过程);你需要在升级模式下 在启动数据库后运行这一脚本:
cd $ORACLE_12_HOME/perl/bin $ ./perl catctl.pl –n 3 -catupgrd.sql
以上两个步骤需要在手动升级数据库时运行。而 DBUA 也继承了这两个新 变化。

3. 通过网络恢复数据文件
在 12c R1 中另一个重要的增强是,你现在可以在主数据库和备用数据库之 间用一个服务名重新获得或恢复数据文件、控制文件、参数文件、表空间或整个 数据库。这对于同步主数据库和备用数据库极为有用。 当主数据库和备用数据库之间存在相当大的差异时, 你不再需要复杂的前滚 流程来填补它们之间的差异。RMAN 能够通过网络执行备用恢复以进行增量备 份, 并且可以将它们应用到物理备用数据库。你可以用服务名直接将所需数据文 件从备用点拷贝至主站,这是为了防止主数据库上数据文件、表空间的丢失,或 是没有真正从备份集恢复数据文件。 以下流程演示了如何用此新功能执行一个前滚来对备用数据库和主数据库 进行同步: 在物理备用数据库上:
./rman target "username/password@standby_db_tns as SYSBACKUP"
RMAN> RECOVER DATABASE FROM SERVICE primary_db_tns USING COMPRESSE D BACKUPSET;
以上示例使用备用数据库上定义的 primary_db_tns 连接字符串连接到主 数据库,然后执行了一个增量备份,再将这些增量备份传输至备用目的地,接着 将应用这些文件到备用数据库来进行同步。然而,需要确保已经对 primary_db_tns 进行了配置,即在备份数据库端将其指向主数据库。 在以下示例中, 我将演示一个场景通过从备用数据库获取数据文件来恢复主 数据库上丢失的数据文件:

在主数据库上:
./rman target "username/password@primary_db_tns as SYSBACKUP"
RMAN> RESTORE DATAFILE ‘+DG_DISKGROUP/DBANME/DATAFILE/filename’ FROM SERVICE standby_db_tns;
4. 对 Data Pump 的增强
Data Pump 版本有了不少有用的改进,例如在导出时将视图转换为表,以 及在导入时关闭日志记录等。 关闭 redo 日志的生成 Data Pump 中引入了新的 TRANSFORM 选项,这对于对象在导入期间提 供了关闭重做生成的灵活性。当为 TRANSFORM 选项指定了 DISABLE_ARCHIVE_LOGGING 值,那么在整个导入期间,重做生成就会处于 关闭状态。 这一功能在导入大型表时缓解了压力, 并且减少了过度的 redo 产生, 从而加快了导入。这一属性还可应用到表以及索引。以下示例演示了这一功能:
$ ./impdp directory=dpump dumpfile=abcd.dmp logfile=abcd.log TRANSFORM= DISABLE_ARCHIVE_LOGGING:Y
将视图转换为表 这是 Data Pump 中另外一个改进。有了 VIEWS_AS_TABLES 选项,你就 可以将视图数据载入表中。 以下示例演示了如何在导出过程中将视图数据载入到 表中:
$ ./expdp directory=dpump dumpfile=abcd.dmp logfile=abcd.log views_as_tables

=my_view:my_table
5. 实时自动数据诊断监视器 (ADDM) 分析
通过使用诸如 AWR、ASH 以及 ADDM 之类的自动诊断工具来分析数据库 的健康状况,是每个 DBA 日程工作的一部分。尽管每种工具都可以在多个层面 衡量数据库的整体健康状况和性能, 但没有哪个工具可以在数据库反应迟钝或是 完全挂起的时候使用。 当数据库反应迟钝或是挂起状态时, 而且你已经配置了 Oracle 企业管理器 12c 的云控制,你就可以对严重的性能问题进行诊断。这对于你了解当前数据库 发生了什么状况有很大帮助,而且还能够对此问题给出解决方案。 以下步骤演示了如何在 Oracle 企业管理器 12c 上分析数据库状态:
?
在访问数据库访问主页面从 Performance 菜单选择 Emergency Monitoring 选项。这会显示挂起分析表中排名靠前的阻止会话。
? ?
在 Performance 菜单选择 Real-Time ADDM 选项来执行实时 ADDM 分析。 在收集了性能数据后,点击 Findings 标签以获得所有结果的交互总结。
6. 同时在多个表上收集统计数据
在之前的 Oracle 数据库版本中,当你执行一个 DBMS_STATS 程序来收集 表、索引、模式或者数据库级别的统计数据时,Oracle 习惯于一次一个表的收 集统计数据。如果表很大,那么推荐你采用并行方式。在 12c R1 中,你现在可 以同时在多个表、分区以及子分区上收集统计数据。在你开始使用它之前,你必 须对数据库进行以下设置以开启此功能:

SQL> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='DEFAULT_MAIN'; SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=4; SQL> EXEC DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT', 'ALL'); SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');
Oracle 数据库 12c 新特性总结(三)
第三部分包括: 1. ASM 中的增强 2. 网格基础架构的增强 3. Oracle RAC 的增强
1. 自动存储管理(ASM)中的增强
Flex ASM 在一个典型的网格基础架构安装环境中,每个节点都运行自身的 ASM 实例,并 将其作为运行于此节点上数据库的存储容器。 但这种设置会存在相应的单点故障 危险。例如,如果此节点上的 ASM 实例发生故障,则运行于此节点上的所有数 据库和实例都会受到影响。 为了避免 ASM 实例的单点故障,Oracle 12c 提供了 一个名为 Flex ASM 的功能。Flex ASM 是一个不同的概念和架构,只有很少数 量的 ASM 实例需要运行在集群中的一些服务器上。当某节点上的一个 ASM 实 例发生故障, Oracle 集群就会在另一个不同的节点上自动启动替代 ASM 实例以

加强可用性。另外,这一设置还为运行在此节点上的实例提供了 ASM 实例负载 均衡能力。Flex ASM 的另一个优势就是可以在单独节点上加以配置。 当选择 Flex Cluster 选项作为集群安装环境的第一部分时,鉴于 Flex Cluster 的要求,Flex ASM 配置就会被自动选择。传统集群同样也适用于 Flex ASM。 当你决定使用 Flex ASM 时, 你必须保证所需的网络是可用的。你可以选择 Flex ASM 存储选项作为集群安装环境的一部分,或是使用 ASMCA 在一个标准集群 环境下启用 Flex ASM。 以下命令显示了当前的 ASM 模式:
$ ./asmcmd showclustermode $ ./srvctl config asm
或是连接到 ASM 实例并查询 INSTANCE_TYPE 参数。如果输出值为 ASMPROX,那么,就说明 Flex ASM 已经配置好了。 ASM 存储限制放宽 ASM 存储硬性限额在最大 ASM 磁盘群组和磁盘大小上已经大幅提升。在 12c R1 中, ASM 支持 511 个 ASM 磁盘群组, 而在 11g R2 中只支持 63 个。 同样, 相比起在 11g R2 中 20 PB 的磁盘大小,现在已经将这一数字提高到 32 PB。 对 ASM 均衡操作的优化 12c 中新的 EXPLAIN WORK FOR 语句用于衡量一个给定 ASM 均衡操作所需 的工作量,并在 V$ASM_ESTIMATE 动态视图中输入结果。使用此动态视图, 你可以调整 POWER LIMIT 语句对重新平衡操作工作进行改善。例如,如果你 想衡量添加一个新 ASM 磁盘所需的工作量,在实际执行手动均衡操作之前,你 可以使用以下命令:

oracle数据库索引的理解与总结

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 例如这样一个查询:SELECT * FROM TABLE1 WHERE ID = 44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位的。 建立索引的目的是加快对表中记录的查找或排序。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。 虽然建立索引能加快对表中记录的查询或者排序速度,但是并不是索引建得越多越好,这就需要我们了解使用索引过程中,索引的一些优点以及缺陷: 使用索引的好处: 创建索引可以大大提高系统的性能: 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。使用索引的一些不足: 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引: ?在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; ?在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; ?在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; ?在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; ?在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。 同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点: ?对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 ?对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了

Oracle数据库试题

constraint pk_spj primary key (sno,pno,jno), constraint fk_spj_sno foreign key (sno) references s(sno), constraint fk_spj_pno foreign key (pno) references p(pno), constraint fk_spj_jno foreign key (jno) references j(jno) 实验二游标和函数 1、定义一个游标完成显示所有供应商名。 declare v_sname s.sname%type; cursor cursor_sname is select sname from s; begin for curso in cursor_sname loop dbms_output.put_line(curso.sname); end loop; end; 2、定义、调用一个简单函数:查询返回指定供应商编号的供应商名及其供应零件总数量。create or replace function fun(f_sno in s.sno%type,f_sname out s.sname%type) return number as f_qty number; begin SELECT s.sname,sum(qty) into f_sname,f_qty from s,spj WHERE s.sno=spj.sno GROUP BY s.sname,spj.sno having spj.sno=f_sno; return f_qty; end; declare v_sno s.sno%type:='&sno'; v_sname s.sname%type; v_qty spj.qty%type; begin v_qty:=fun(v_sno,v_sname); dbms_output.put_line(v_sname||v_qty); end; 3、定义一个函数:对于给定的供应商号,判断是否存在,若存在返回0,否则返回-1。写一段程序调用此函数,若供应商号存在则在spj插入一元组。

ORACLE数据库学习心得

ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,

用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

学习oracle数据库的总结(图文整理)

1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件

Oracle数据库备份与恢复总结

Oracle数据库备份与恢复总结 1. EXP/IMP (导出与导入) (6) 1.1基本命令 (6) 1.获取帮助 (6) 2.三种工作方式 (6) 3.三种模式 (7) 1.2高级选项 (7) 1.分割成多个文件 (7) 2.增量导出/导入 (8) 3.以SYSDBA进行导出/导入 (8) 4.表空间传输(速度快) (8) 1.3优化 (10) 1.加快exp速度 (10) 2.加快imp速度 (10) 3.通过unix/Linux PIPE管道加快exp/imp速度 (10) 4.全库导入的一般步骤 (12) 1.4常见问题 (12) 1.字符集问题 (12) 2.版本问题 (13) 2. SQL*LOADER (14) 2.1基本知识 (14) 1.命令格式 (14) 2.控制文件 (14) 3.数据文件 (15) 4.坏文件 (16) 5.日志文件及日志信息 (16) 2.2高级选项 (16) 1. Conventional Path Load与Direct Path Load (16) 2. SPOOL导出文本数据方法 (16) 2.3脚本 (17) 1.将表中数据记录导出为字段值用分隔符'|'分开的.dat文件 (17) 2.将数据导入到相应表中 (18) 3. OS备份/用户管理的备份与恢复(USER MANAGED BACKUP AND RECOVERY) (20) 3.1相关设置 (20) 3.1.1设置ARCHIVELOG与NONARCHIVELOG模式 (20) 3.1.2 LOGGING与NOLOGGING (21) 3.1.3归档路径 (21)

Oracle数据库安装学习总结

学习总结 1、配置环境的安装: 2、安装须知: a)拷下来的文件夹大概20+G,从移动硬盘(别人家的移动硬盘) 中拷出和这两个文件夹; b)1中的四个工具在Han_training_college文件夹当中,注意安装 这些程序之前先把其中的EBS_工具集_For_R12改名字去掉其 中的中文,改成比如EBS_For_R12之类的。否则安装的时候会 报错; c)安装第一个工具Developer10G的时候,需要先设置虚拟内存,

虚拟内存的设置方法:计算→系统属性→高级系统设置→高级→性能的设置→高级→虚拟内存的更改,然后更改为自定义大小,贴上我的设置: d)安装第二个文件的时候也就是安装PLSQL Developer的时候, 建议不安装他给的东西,去官网下载最新的程序 https://www.360docs.net/doc/891268665.html,/plsqldev1005.exe e)贴上官网给出的中文包: https://www.360docs.net/doc/891268665.html,/plsqldevlang/100/chinese.exe

f)安装PLSQL的时候,注意安装的时候会报警,原因是因为安装 路径不允许有空格和括号,所以就像ReadMe里面说的那样, 建议安装在C:\PLSQLdev中; g)第三个没什么要说的; h)第四个的话,需要先安装java的环境和office办公软件,java 环境说的不是jdk和jre之类的,说的是可以直接运行.jar类型 文件的java虚拟机,很小,贴上网址: https://www.360docs.net/doc/891268665.html,/zh_CN/ i)安装这些之前或者之后都可以,安装java的jdk和jre,具体的 配置环境变量的就不说了,很容易的; j)安装完这些之后安装虚拟机:VMware-workstation; k)然后用虚拟机打开里面的系统; l)里面是XP系统,已经配置好的XP系统; m)里面是LINUX系统; n)安装VMware-workstation可以选择安装官网最新版的10版本,这个版本支持中文版;https://www.360docs.net/doc/891268665.html,/ 3、建立主机和虚拟机的访问 a)这一步的目的是为了让主机和虚拟机之间能够互相Ping通, 互相Ping通的目的是为了让主机里面的PLSQLdev可以访问主 机里面的oracle服务器然后进行操作,现阶段我们操作的主要 是练习SQL语句 b)要让主机和虚拟机之间互相Ping通有两个办法:

oracle数据库优化报告

oracle数据库 优化报告

目录 1、概述 (3) 2、数据库优化部分 (3) 2.1、环境优化 (3) 2.1.1 统计信息收集被关闭 (3) 2.1.2 部分索引失效 (4) 2.2、设计优化 (4) 2.2.1 设计类问题概述 (4) 2.2.2 设计类问题优化建议 (5) 2.3、SQL优化 (5) 2.3.1 SQL_ID= 7gf3typgc469a (5) 2.3.2 SQL_ID= bdcfdz26x5hm9 (6) 3、数据库优化总结 (7)

1、概述 随着应用软件用户负载的增加和愈来愈复杂的应用环境,操作系统的各项性能参数、数据库的使用效率、用户的响应速度、系统的安全运行等性能问题逐渐成为系统必须考虑的指标之一。性能测试以及优化通常通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,用来检测系统是否达到用户提出的性能指标,及时发现系统中存在的瓶颈,最后起到优化系统的目的。 随着需求不断增加,特别是复杂逻辑的需求,一旦出现高并发量时,也将可能导致数据库主机无法承载,因此数据库优化亟待解决。 2、数据库优化部分 从2018年1月份开始跟踪及分析,发现托管区数据库在环境、设计及SQL三方面,都存在不少问题。在SQL类优化中,本地化代码编写和设计不良,是比较明显的问题。下面将分成环境、设计、SQL优化三类进行持续分析,并给出相关建议、整改方案、整改进度。 2.1、环境优化 2.1.1 被关闭 zonghe托管区数据库统计信息未自动收集,如果未打开收集,会对系统性能造成较大的影响。

需要开启统计信息 开启方法如下: --执行 BEGIN dbms_auto_task_admin.enable(client_name => 'auto optimizer statscollection', operation => NULL, window_name =>NULL); END; 2.1.2 部分索引失效 需要将索引进行删除。删除命令参考如下: drop index index_name; 2.2、设计优化 2.2.1 设计类问题概述 序号 类型 问题描述 1 表 ZJ_KZH_DATE 、ZJ_CRM_S_ORDER_GATHER 等本 地表,设计了大量的V1,V2,需要开发人员核对需 求 2 索引 索引定义较混乱,常与其他表进行连接的表,在连接

Oracle数据库心得体会

学习Oracle数据库的心得体会 对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。 Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了https://www.360docs.net/doc/891268665.html,、C++还有网页中用的Html 语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的https://www.360docs.net/doc/891268665.html,中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。

Oracle知识点总结

Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc

datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK

大学oracle数据库总结(考试必备)

1.下列选项中,关于序列的描述哪一项不正确?(任何时候都可以使用序列的伪列CURRVAL返回当前序列。) 2.oracle中,用来判断列值为空的操作符是(IS NULL) 3.下列选项中,那一部分不是oracle实例的组成部分?(控制文件) 4.使用传统导出工具EXP导出SCOTT用户的所有对象时,应该选择下列哪一项?(SCHEMAS) 5.在oracle中,一个用户拥有所有数据库对象统称:(模式) 6.在oracle中,使用HAVING子句亦可以进行条件查询,以下选项说法正确的是(HAVING子句用于对已分组结果的条件查询) 7.视图头部中的RETURN语句的作用是什么?(声明返回值的数据类型) 8.有字符串数据“TEST”,分别存放到char(10)和varchar(10)类型的字段中,其实际存储长度为:(10 4) 9.下列哪一个动作不会激发一个触发器?(查询数据) 10对于下面的函数,哪个语句将成功调用?(Sum:=Calc_Sum(23,12))11.DELETE FROM S WHERE 年龄>60的语句功能:S表中年龄大于60岁的记录被加上删除标记 12.GROUP BY子句的作用是什么?(查询结果的分组条件) 13.查看下面的语句构建了哪一种索引?(复合索引) 14.下列哪个语句会终止事务(COMMIT) 1.(表空间)是oracle中可以使用的最大的逻辑存储结构,(数据块)是oracle逻辑存储结构中最小的I/O单元。 2.PL/SQL程序块主要包括3个主要部分:声明部分、可执行部分、(异常处理部分)。 3.查看操作数据表中所影响的行数,可通过游标的(%ROWCOUNT)属性实现。 4.(角色)是具有名称的一组相关权限的组合。 5.oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、(控制文件)、(重做日志文件)。 6.在SQL PLUS命令行下,查看EMP表的结构应使用(describe)命令。 7.自定义异常必须使用(raise)语句引发。 8.在oracle10g版本以前,对撤销信息的管理采用(回滚段),从oracle10g后采用(自动UNDO管理)方式管理撤销信息。

oracle数据库学习总结.doc

oracle数据库学习总结 篇一:oRAcLE数据库学习心得 oRAcLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.oRAcLE的特点: 可移植性oRAcLE采用c语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行oRAcLE的产品。可在UNIX、doS、windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SqL,与Ibm的SqL/dS、db2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行oRAˉcLE数据库产品。 2.oRAcLE的总体结构 (1)oRAcLE的文件结构一个oRAcLE数据库系统包括以下5类文件:oRAcLERdbmS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。

日志文件须有两个或两个以上,用来记录所有数据库的变化, 用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)oRAcLE的内存结构一个oRAcLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(SystemGlobalArea)包括数据库缓冲区、日志缓冲区及共享区域。PGA(ProgramGlobalArea)是每一个Server进程有一个。一个Server 进程起动时,就为其分配一个PGA区,以存放数据及控制信息。(3)oRAcLE的进程结构oRAcLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程oRAcLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: dbwR(databasewriter)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGwR(Logwriter)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SmoN(Systemmoniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PmoN (Processmoniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。ARcH(ARcHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式db中事务恢复进程REco和

oracle数据库学习总结

oracle数据库学习总结 一、ORACLE中字段的数据类型 1、字符型 1)char 范围最大2000个字节定长 char(10) '张三' 后添空格6个把10个字节补满'张三' 性别char(2) '男' 2)varchar2 范围最大4000个字节变长 varchar2(10) '张三' 在数据库中'张三' 2、数字number 范围10的-38次方到10的38次方 可以表示小数也可以表示整数 number(4) 最大表示4位整数-9999 到9999 number(5,2) 表示5位有效数字2位小数的一个小数-999.99 到999.99 3、日期date 包含年月日和时分秒7个字节 4、图片blob 二进制大对象图像/声音4G 二、如何建表 学生表student create table student( --学生表 xh number(4), --学号 xm varchar2(10), --姓名 sex char(2), --性别 birthday date, --日期 sal number(7,2) --奖学金 ); 三、字段的添加、删除、修改 1、添加字段(学生所在班级classid) alter table student add (classid number(2)); 2、修改字段的长度 alter table student modify (xm varchar2(12)) ; 3、修改字段的类型(不能有记录的) alter table student modify (xh varchar2(5)); 4、删除一个字段 alter table student drop column sal; 5、删除表 drop table student; 6、表的名字修改 rename student to stu; 7、字段如何改名字 --先删除 a)alter table student drop column sal;

Oracle数据库 知识点总结

1.constraint约束: alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主键 alter table [table_name] drop constraint [pk_name];//删除主键 alter table [table_name] add constraint [fk_name] foreign key(fkname) references [tablename](fkname);//添加外键 alter table [table_name] drop constraint [fk_name];//删除外键 2.union 关键字: A username, B username rod bruce rose marina select username from A union select username from B 2、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随E XCEPT 一起使用时(EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当ALL 随INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 3.复合主键一般不设外键 4. 组函数也称为聚合函数。 例如:我们把学生可以分为男生和女生两个组,如果想求每组的人数,平均身高,平均年龄等,就需要用到分组函数了。 在SQL中常用的组函数有以下几个: COUNT():求出全部的记录数 MAX():求出一组中的最大值 MIN():求出一组中的最小值 AVG():求出一组中的平均值 SUM():求和 范例:COUNT()函数

Oracle数据库巡检报告

XXX数据库【XXX】巡检报告 1第一部分操作系统参数检查 (2) 1.1检查数据库cpu、I/O、内存性能 (2) 1.2检查Oracle服务进程 (2) 2第二部分 Oracle数据库检查 (3) 2.1数据库状态 (3) 2.1.1检查oracle环境变量 (3) 2.1.2检查监听状态 (3) 2.1.3查看Oracle初始化参数 (3) 2.1.4检查Oracle的实例状态 (3) 2.1.5检查数据库读写状态 (3) 2.1.6查看oracle数据库的版本 (4) 2.1.7查看sga、pga详细信息 (4) 2.1.8检查控制文件状态 (4) 2.1.9检查日志文件状态 (4) 2.1.10检查alter日志 (4) 检查当前crontab任务 (5) 2.2数据库空间监控 (5) 2.2.1检查数据库的大小,和空间使用情况 (5) 查看数据库是否处于归档模式 (7) 检查表空间物理文件的名称及大小 (7) 数据库数据文件等所在目录使用情况 (7) 2.3数据库性能、资源、对象检查 (7) 负载情况(Load Profile) (7) 数据库内存命中率(Instance Efficiency Percentages (Target 100%)) (8) 监控等待事件(Top 5 Timed Events ) (8) 检查无效的数据对象 (9) 检查碎片程度高的表 (9) 检查排序区 (9) 检查日志缓冲区 (9) 检查Oracle初始化文件中相关参数值 (9) 检查数据库连接情况 (10) 检查system表空间内的内容 (10) 检查表空间碎片率 (10) 检查死锁 (11) 2.4数据库备份检查 (11) 检查数据库备份日志信息 (11) 检查backup卷中文件产生的时间 (12) 检查oracle用户的email (12) 3第三部分总结 (12)

ORACLE数据库学习心得

ORACLE数据库学习心得 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了 oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于 oracle数据库的一些知识。 的特点: 可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 的总体结构 ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库

的变化, 用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 ORACLE的内存结构一个ORACLE例程拥有一个系统全程区和一组程序全程区。 SGA包括数据库缓冲区、日志缓冲区及共享区域。 PGA是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程 ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。 ARCH进程。每当联机日志文件写满时,该进程将其拷贝

Oracle数据库使用心得

Oracle数据库使用心得 092909 谢弘毅 经过助教对oracle和sybase数据库的讲解后,我下载使用和体验了这两个数据库,但主要的还是使用了Oracle数据库,经过一段时间的使用,对其使用有了一定的心得体会,并且通过阅读资料对其现在的前景状况有了一定的了解。 【选择Oracle的原因】 (1)在Gartner/Dataquest报告中Oracle依然在主流操作系统Unix和Linux, Windows NT/2000/XP上的关系数据库市场上占据绝对的领先地位,在UNIX上占63%, Windows+Unix上占49.9%。在关系型数据库市场(包括AS/400,Mainframe),Oracle以39.8%仍然处于领先地位。 (2)Oracle数据库依然是Fortune 100公司的首选数据库,其中51%的Fortune 100公司选用Oracle Database作为构建企业的传统应用和电子商务平台。 (3)Oracle数据库与Sybase数据库相比,无论从体系架构、并行支持、完整性控制等各方面均有很大的优势。 【Oracle相比于sybase的优势】 (1)体系结构的比较

Oracle采用多线索多进程体系结构,直接在内核中支持分布式数据库操作、多线索处理、并行处理以及联机事务处理等。Sybase采用单进程多线索体系结构,其核心是SQL Server (2)多线索多进程与单进程多线索的比较 Oracle和Sybase都采用多线索。Oracle多服务器进程结构,能实现数据库事务的并行处理,提高并发事务处理的响应速度。并且多服务器结构具有非常灵活的扩充性,当硬件平台处理能力提高时,服务器进程的个数也能随之增加,数据库性能也随之提高。Sybase采用单进程多线索方式。当并发用户数达到一定的数量时,会引起系统处理性能大大下降,和服务器进程瓶颈及死锁等现象;同时系统的可扩展余地非常狭窄。 (3)联机事务处理 Oracle的多线索技术在相同硬件环境下,所支持的用户数是其他数据库系统的5至10倍。 【我对Oracle一些概念的理解】 (1)ORACLE SERVER 一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER 由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据库。 一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的

oracle数据库应用与开发总结

Oracle数据库开发与应用总结 第一章关系型数据库及oracle 10g介绍 1.Oracle数据库的发展(了解): 1977年6月,(Software Development Laboratories,SDL)的计算机公司(Oracle公司的前身)开发出第一款Oracle。 1979年,SDL更名为关系软件有限公司(Relational Software,Inc.,RSI)Oracle产品(第二版)。 1983年3月,RSI发布了Oracle第三版,并RSI公司再次更名为Oracle公司。 1984年10月,Oracle发布了第四版产品。 1999年2月,Oracle正式发布了Oracle 8i 。 2001年6月,正式发布了Oracle 9i 。 2004年2月,Oracle公司正式发布了Oracle10g(标准版,企业版,个人版)。 2.Oracle数据库的系统结构:Oracle分布式数据库系统结构;Oracle客户/服务器系统结构;Oracle浏览器/服务器系统结构。 3.检验安装是否成功(4种): 查看已安装产品;查看程序组;查看服务;查看注册表;尝试运行oracle工具。 4.Oracle数据库的默认用户: (1)SYS:该用户被默认创建并授予DBA角色,它是Oracle数据库中权限最大的管理员账号。 (2)SYSTEM:被默认创建并授予DBA角色权限仅次于SYS。该用户创建和管理数据库中可显示管理信息的表或视图,以及被Oracle数据库应用和工具使用的各种数据库对象。(3)SYSMAN:该用户是企业管理的超级管理员账号,该账号能够创建和修改其他管理员账号,同时也能管理数据库实例。 (4)DBSNMP:是Oracle数据库中用于智能代理(Intelligent Agent)的用户,用来监控和管理数据库相关性能。如果停止该用户,则无法提取相关的数据库信息。 5.熟练掌握SQL*plus的使用:例1.2 以system用户登录数据库。 SQLPLUS SQLPLUS system SQLPLUS system/abcdef SQLPLUS system/abcdef@orcl 例1.3 以sys用户登录数据库。 SQLPLUS sys/abcdef AS SYSDBA SQLPLUS sys/abcdef@orcl AS SYSOPER 例1.4 不使用已定义的主机字符串,直接指定要连接的主机名、端口号和数据库实例。SQLPLUS system/abcdef@localhost:1521/orcl 6.STARTUP命令启动数据库: STARTUP [NOMOUNT|MOUNT|OPEN][pfile=<初始化参数文件名及路径>] pfile:指出创建Oracle实例需要的初始化参数文件及路径,该参数可省略。NOMOUNT:表示只启动一个Oracle实例。 MOUNT:启动一个Oracle实例并打开控制文件。

oracle数据库总结

第一章主要是对oracle数据库的介绍,PL/SQL的组成部分介绍,大概可以分为三个部分,declar部分,begin部分,和最后的结束部分end,其中的declar是用来定义的部分,begin 是执行的部分,其中还包括异常的处理,大概的组成,可以由下面的例子说明//定义部分 declare v_date date; //执行部分 begin v_date :=sysdate+1; dbms_output.put_line(v_date); when date_not_found then ……………….. //执行部分 end; PL/SQL的运行机制: 首先是PL/SQL发送到oracle服务器,然后可将PL/SQL分为PL/SQL引擎处理的PL/SQL 块和SQL引擎处理的SQL块。 相比其他的数据,orcale数据具备很多其他数据库没有的功能,也可以说是oracle的优势所在:1、提高应用程序的性能,因为PL/SQL是把select作为一个单个的单元发送的,然后交给PL/SQL来执行的。2、提高模块化程序开发能力,3、具有良好的兼容性,4、允 主要可以分为共享内存区(SGA)和非共享内存区(PGA),其中的SGA是重点掌握部分,SGA主要又可以分为以下几个部分:1、数据库缓存区:用来保存从磁盘读取的数据保存,这样,在下次访问的时候不需要再去读取数据,减少读写动作,提高数据的存取效率。2、重做日志缓冲区:主要是用于数据库损坏时候可以进行必要的恢复工作,3、共享池:主要是对SQL,PL/SQL程序进行语法解析,编译执行的内存区域。 序列的创建:创建一组基本连续唯一的值,主要用于数据库表主键的自动增长,下面是一个创建序列的实例:

相关主题
相关文档
最新文档