oracle如何对表操作 oracle 操作

Oracle 10g Application Express数据表操作Oracle 9i比8i多了哪些新特性?
简要说:
9i更易于管理 。
详细说:
并发集群,8i OPS升级为9i RAC,8i结点间用硬盘交换信息,9i结点间采用高速网线的缓存熔合(Cache Fusion)技术交换信息,交换速度提高100倍以上 。
9i可以在线修改内核参数和内存分配,8i不行 。
数据文件和表空间管理,8i手工管理,9i自动管理 。
9i比8i增强了对ANSI SQL99的支持 。
9i比8i增强了故障后的快速恢复(Fast-start) 。
8i只支持物理备份(physical backup)数据库 , 9i还增加了支持逻辑备份(logical backup)数据库,使备份数据库除了作为主数据库的镜像外,还可以提供其他数据服务.
Oracle 10g比9i多了哪些新特性?
简要说:
10g支持网格(Grid),支持自动管理(Automatic Management) 。
详细说:
10g的g是"Grid"缩写,支持网格计算,即,多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中均衡(Load Balance),按需增删结点,避免单点故障(Single Point of Faliure) 。
安装容易,安装工作量比9i减少了一半 。
新增基于浏览器的企业管理器(Enterprise Manager) 。
自动存储管理(ASM),增删硬盘不再需要操作系统管理员设置的镜像、负载均衡、物理卷、逻辑卷、分区、文件系统 , 只要打一条Oracle命令 , ASM会自动管理增加或删除的硬盘 。
内存自动化,根据需要自动分配和释放系统内存 。
SQL性能调整自动化 。
免费提供基于浏览器的小应用开发工具Oracle Application Express(原名HTML DB),支持10g和9i R2 。
快速纠正人为错误的闪回(Flashback)查询和恢复,可以恢复数据库、表甚至记录 。
数据泵(Data Pump)高速导入、导出数据 , 比传统方法导出速度快两倍以上,导入速度快15--45倍 。
精细审计(Fine-Grained Auditing),记录一切对敏感数据的操作 。
存储数据的表空间(Tablespace)跨平台复制,极大的提高数据仓库加载速度 。
流(Streams)复制,实现低系统消耗、双向(double-direction)、断点续传(resume from break point)、跨平台(cross platform)、跨数据源的复杂复制 。
容灾的数据卫士(Data Guard)增加了逻辑备份功能,备份数据库日常可以运行于只读状态,充分利用备份数据库 。
支持许多新EE选件,加强数据库内部管理的“Database Vault”,数据库活动的审计的(Audit Vault),数据仓库构建高级功能(Warehouse Builder Enterprise ETL, Warehouse Builder Data Quality).
Oracle 11g比10g多了哪些新特性?
11 g 扩展了 Oracle 独家具有的提供网格计算优势的功能,您可以利用它来提高用户服务水平、减少停机时间以及更加有效地利用 IT资源 , 同时还可以增强全天候业务应用程序的性能、可伸缩性和安全性 。
利用真正应用测试(RAT)尽量降低更改的风险
11 g降低了数据库升级以及其他硬件和操作系统更改的成本,显著简化了更改前后的系统测试以便您可以识别和解决问题 。例如:
利用 Database Replay,您可以在数据库级别轻松捕获实际的生产负载并在您的测试系统上重新播放,这样您可以全面测试系统更改(包括关键的并发特性)的影响 。
SQL Performance Analyzer识别结构化查询语言 ) SQL(执行计划更改和性能回退 。然后,可以使用 SQL Tuning Advisor解决识别的问题,方法是还原到原始的执行计划或进一步优化 。
利用管理自动化提高 DBA 效率
Oracle 数据库 11 g继续致力于(从 Oracle9i数据库开始一直到 Oracle 数据库10 g)显著简化和完全自动化 DBA 任务 。Oracle数据库11 g中的新功能包括:
利用自学功能自动进行 SQL 优化系统全局区(SGA)和程序全局区( PGA)的内存缓存区的自动、统一调整新的 advisor用于分区、数据恢复、流性能和空间管理针对自动数据库诊断监视器 (ADDM)的增强 , 能够提供 Oracle 真正应用集群 (Oracle RAC)环境中的更好的性能全局视图以及改进的性能比较分析功能 。
利用故障诊断快速解决问题
Oracle 数据库 11 g中新增的故障诊断功能使客户在发生错误后捕获 Oracle
Support所需的数据变得极为简单 。这可以加速问题的解决 , 减少客户重现问题的需要 。
尽量降低停机成本
通过 Oracle Data Guard快速恢复数据
Oracle Data Guard在本地和远程服务器之间协调数据库的维护和同步以便从灾难或站点故障快速恢复 。Oracle数据库11 g提供了大量显著的 Oracle Data Guard增强,包括
可以在物理备用系统上运行实时查询用于报表和其他目的
可以通过将物理备用系统暂时转换为逻辑备用系统执行联机的、滚动的数据库升级
..支持测试环境的快照备用系统
此外 , 物理和逻辑备用的性能都有提高 。逻辑备用现在支持可扩展标记语言(XML)类型字符大型对象 (CLOB)数据类型和透明的数据加密 。现在支持自动的、快速启动的故障切换以支持异步传输 。
Oracle 数据库 11 g提供了几个针对自动存储管理的重要的高可用性增强,
包括:
..支持滚动升级
..自动坏块检测和修复
..快速镜像重新同步,该功能可以有效地重新同步存储网络连接性暂时丢失时自动存储管理镜像的存储阵列
自动存储管理的性能增强使得大型数据库可以更快地打开并减少 SGA 内存消耗 。这些增强还允许 DBA增加存储分配单元大小以加快大型序列输入/输出 (I/O)
显著增加正常运行时间
Oracle数据库11 g使您可以应用很多一次性数据库补?。òㄕ锒喜苟 。?而没有停机时间 。新的数据恢复 advisor通过快速识别故障根本原因、为 DBA提供可用的恢复选项,极大地减少了停机时间,在某些情况下,还通过“自我恢复”机制自动纠正问题 。
Oracle 数据库 11 g还有其他高性能提高,包括
..自动编译数据库中的 PL/SQL 和 Java
..更快的触发器,包括更加有效地调用每行触发器
..更快的简单 SQL 操作
..更快的 Oracle Data Guard 和 Oracle Streams 复制
..与网络文件系统( NFS) 存储设备更快、更可靠的直接连接
..更快的升级
..大型文件更快的备份/还原
..更快的备份压缩
Oracle 数据库 11 g包括大量新的 ILM特性,例如
..新的分区功能,包括
.按父/子引用分区
.按虚拟列分区
Oracle数据库11 g还具有带 Oracle闪回数据归档的 Total Recall,使您可以在选定的表中查询以前的数据,从而提供了一种简单实用的向数据中添加时间维度的方法以便于更改跟踪、 ILM、审计和合规 。
其他高可用性增强
Oracle 数据库 11g还有其他高可用性增强,包括:
Oracle闪回事务查询 , 提供带其他相关事务更改的流氓事务的按钮更改
具有更多可传输选项的增强的平台移植和数据移动,包括可传输分区、
模式和跨平台数据库
Oracle恢复管理器 (RMAN)支持 Windows Volume Shadow Copy
Service ( VSS )快照,从而实现与 Windows备份更紧密的集成
优化性能和可靠性
合规、法律取证以及整合数据仓库的趋势导致数据库的大小每两年就会增加
两倍,这极大地影响了大型数据库的存储成本和性能、可靠性以及可管理性
。Oracle 数据库 11 g使组织可以使用低成本的服务器和模块化的存储器轻
松伸缩大型的事务和数据仓库系统并提供快速的全天候数据访问 。Oracle 数
据库11 g提供新的创新特性以进一步提高要求极严格的环境的性能和可伸
缩性 。
利用 SecureFiles安全地存储您的所有数据
SecureFiles 是 Oracle用于在数据库中存储大型对象) LOB (
(例如图像、大型文本对象或包括 XML、医学成像以及地理空间栅格对象在内的高级数据类型)的下一代产品 。SecureFiles提供能够完全与文件系统相媲美的卓越性能 。此外,它还提供高级功能,例如智能压缩、透明加密以及透明的重复
删除 。
通过联机事务处理压缩提高性能并尽量降低存储成本
Oracle 数据库 11 g支持联机事务处理 (OLAP)应用程序中常用的更新、
插入和删除操作的数据压缩 。以前的 Oracle数据库版本支持数据仓库应用
程序常用的批量数据加载操作的压缩 。Oracle 数据库 11 g OLTP表压缩通
过更加高效地使用内存来缓存数据以及减少表扫描的 I/O提高了数据库性能
。利用 OLTP表压缩,您可以利用最小的处理开销达到 2 到 3倍的压缩
比 。
oracle数据库如何把表从一个表空间移到另一个表空间1、打开Toad For Oracle数据库工具 。
2、输入数据库管理员账号密码连接数据库因为管理员有权限看见不同用户的表及表空间,这样比较方便 。
3、点击 Database Browser 图标 。
4、展开数据库 , 找到Tablespaces,点击Tablespaces,在右边就会看见当前数据库的所有表空间 。
5、选择需要扩展的表空间文件,点击 Alter Datafile 按钮 。
oracle 中有哪些关于表的操作关于表数据的操作有:select,delete,update,insert分别是(查询 , 删除,更新,插入)
关于表结构有:create,drop , alter分别是(创建,删除 , 修改列)
oracle 基础入门一 ORACLE的表的分类REGULAR TABLE 普通表 ORACLE推荐的表 使用很方便 人为控制少PARTITIONED TABLE 分区表 人为控制记录的分布 将表的存储空间分为若干独立的分区 记录按一定的规则存储在分区里 适用于大型的表 二 建表CREATE TABLE 表名 (EMPNO NUMBER( ) NAME VARCHAR ( )) PCTFREE PCTUSED STORAGE (INITIAL K NEXT K MAXEXTENTS PCTINCREASE ) TABLESPACE 表空间名称 [LOGGING|NOLOGGING]所有的对表的操作都要记入REDOLOG ORACLE建议使用NOLOGGING [CACHE|NOCACHE] 是否将数据按照一定的算法写入内存关于PCTFREE 和PCTUSED A 行迁移和行链接 B PCTFREE 制止INSERT 为 UPDATE留FREE 空间 C PCTUSED 为恢复INSERT操作 而设定的 三 拷贝一个已经存在的表 CREATE TABLE 新表名 STORAGE( ) TABLESPACE 表空间 AS SELECT * FROM 老表名 当老表存在约束 触发的时候 不会拷过去 四 修改表的参数 ALTER TABLE 名称 PCTFREE PCTUSED STOAGE(MAXEXTENTS ) 五 手工分配空间 ALTER TABLE 名称 ALLOCATE EXTENT(SIZE K DATAFILE )SIZE选项 按照NEXT分配表所在表空间与所分配的数据文件所在的表空间必须一样 六 水线水线定义了表的数据在一个BLOCK中所达到的最高的位置当有新的记录插入 水线增高当删除记录时 水线不回落减少查询量 七 如何回收空间 ALTER TABLE 名称 DEALLOCATE UNUSED [KEEP [M|K]]当空间分配过大时 可以使用本命令如果没有加KEEP 回收到水线如果水线《MINEXTENTS的大小回收到MINEXTENTS所指定的大小 八 TRUNCATE 一个表 TRUNCATE TABLE 表名 表空间截取MINEXTENT 同时水线重置 九 DROP 一个表 DROP TABLE 表名 [CASCADE CONSTRAINTS] 当一个表含有外键的时候 是不可以直接DROP的 加CASCADE CONSRIANTS将外键等约束一并删掉 十 信息获取dba_objectdba_tables:建表的参数DBA_SEGMENTS: 组合查询的连接字段 DBA_TABLES的table_name dba_ojbect的object_name dba_segments的SEGMENT_NAME 第十一章 索引的管理 一 索引的分类逻辑上 单列索引 复合索引 唯一索引 非唯一索引物理上 B TREE OR BITMAP B TREE (NORMAL和反向索引) 二 CREATE INDEX CREATE INDEX 名称 ON 表名(列名) PCTFREE STORAGE( ) TABLESPACE 名称 没有定义PCTUSED 索引是按照一定存储的 如果通过PCTUSED允许恢复对BLOCK的INSERT操作 可能影响INDEX的效率 三 建立索引的注意事项索引对查询性能有提高 但对DML语句有影响索引也应该放在一个专用的表空间定义索引的EXTENT的大小时 = *DB BLOCK建立索引时 应采用 NOLOGGING 方式 四 修改索引 ALTER INDEX 名称 STORAGE(新值) 五 分配空间给索引ALTER INDEX 名称 ALLOCATE EXTENT(SIZE K DATAFILE ) 六 重建索引提高查询性能当一个索引重建时 老的索引会在新索引建立完成后 被删除新索引建立过程中 老的索引仍可用于查询硬盘的开销大 七 DROP一个索引 DROP INDEX 名称 八 信息获取DBA_INDEXES:建索引的参数DBA_IND_COLUMNS: 第十二章 用户的管理 一 ORACLE的安全域TABLESPACE QUOTAS 表空间的使用定额DEFAULT TABLESPACE 默认表空间TEMPORARY TABLESPACE 指定临时表空间ACCOUNT LOCKING 用户锁RESOURCE LIMITE 资源限制DIRECT PRIVILEGES 直接授权ROLE PRIVILEGES 角色授权先将应用中的用户划为不同的角色 二 创建用户时的清单选择一个用户名称和检验机制 A 看到用户名 实际操作者是谁 业务中角色选择合适的表空间决定定额口令的选择临时表空间的选择 先建立一个临时表空间 然后在分配 不分配 使用SYSTEM表空间CREATE USER授权 A 用户的工作职能 B 用户的级别 三 用户的创建命令 CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE 默认表空间名 TEMPOARAY TABLESPACE 临时表空间名 QUOTA M ON 表空间名 [PASSWORD EXPIRE] 当用户第一次登陆到ORACLE 创建时所指定的口令过期失效 强迫用户自己定义一个新口令 [ACCOUNT LOCK] 加用户锁 QUOTA UNLIMITED ON TABLESPACE 不限制 有多少有多少 [PROFILE 名称] 受PROFILE文件的限制 四 如何控制用户口令和用户锁强迫用户修改口令 ALTER USER 名称 IDENTIFIED BY 新口令 PASSWORD EXPIRE给用户加锁 ALTER USER 名称 ACCOUNT [LOCK|UNLOCK]注意事项 A 所有操作对当前连接无效 B 的操作适用于当用户忘记口令时 五 更改定额命令 ALTER USER 名称 QUOTA ON 表空间名 ALTER USER 名字 QUOTA (数值)K|M|UNLIMITED ON 表空间名使用方法 A 控制用户数据增长 B 当用户拥有一定的数据 而管理员不想让他在增加新的数据的时候 C 当将用户定额设为零的时候 用户不能创建新的数据 但原有数据仍可访问 六 DROP一个USERDROP USER 名称 适合于删除一个新的用户DROP USER 名称 CASCADE 删除一个用户 将用户的表 索引等都删除对连接中的用户不好用 七 信息获取DBA_USERS:用户名 状态 加锁日期 默认表空间 临时表空间DBA_TS_QUOTAS:用户名 表空间名 定额 两个表的连接字段 USERNAME GRANT CREATE SESSION TO 用户名 第十三章 PROFILE的管理(资源 文件) 一 PROFILE的管理内容CPU的时间I/O的使用IDLE TIME(空闲时间)CONNECT TIME(连接时间)并发会话数量口令机制 二 DEFAULT PROFILE所有的用户创建时都会被指定这个PROFILEDEFAULT PROFILE的内容为空 无限制 三 PROFILE的划分CALL级LIMITE 对象是语句 当该语句资源使用溢出时 A 该语句终止 B 事物回退 C SESSION连接保持SESSION级LIMITE 对象是 整个会话过程 溢出时 连接终止 四 如何管理一个PROFILECREATE PROFILE分配给一个用户象开关一样打开限制 五 如何创建一个PROFILE命令 CREATE PROFILE 名称 LIMIT SESSION_PER_USER CPU_PER_SESSION IDLE_TIME CONNECT_TIME 六 限制参数SESSION级LIMITE CPU_PER_SESSION:定义了每个SESSION占用的CPU的时间 ( / 秒)SESSION_PER_USER:每个用户的并发连接数CONNECT_TIME:一个连接的最长连接时间(分钟)LOGICAL_READS_PER_SESSION: 一次读写的逻辑块的数量CALL级LIMITE CPU_PER_CALL:每个语句占用的CPU时间 LOGICAL_READS_PER_CALL: 七 分配给一个用户 CREATE USER 名称 PROFILE 名称 ALTER USER 名称 PROFILE 名称 八 打开资源限制RESOURCE_LIMT:资源文件中含有ALTER SYSTEM SET RESOURCE_LIMIT=TRUE默认不打开 九 修改PROFIE的内容ALTER PROFILE 名称参数 新值对于当前连接修改不生效 十 DROP一个PROFILEDROP PROFILE 名称 删除一个新的尚未分配给用户的PROFILEDROP PROFILE 名称 CASCADE注意事项 A 一旦PROFILE被删除 用户被自动加载DEFAULT PROFILE B 对于当前连接无影响 C DEFAULT PROFILE不可以被删除 十一 信息获取DBA_USERS: 用户名 PROFILEDBA_PROFILES: lishixinzhi/Article/program/Oracle/201311/18833
oracle如何向一张表导入另一张表的部分数据实现的方法和详细的操作步骤如下:
1、第一步,如果要从Oracle实例orcl导出多个dmp文件表,则在打开cmd窗口后,首先设置环境变量以将Oracle实例切换为orcl(设置ORACLE_SID
= orcl),然后登录到sqlplus
, 如下图所示,然后进入下一步 。
2、其次 , 完成上述步骤后,可以使用sql语句“select * from dba_directories”以查看当前实例下可用的dmp导出目录 。
导出dmp文件时,可以选择其中之一 , 如下图所示,然后进入下一步 。
3、接着,完成上述步骤后,退出sqlplus并使用命令“expdp”导出需要的数据库表dmp文件,如下图所示,然后进入下一步 。
4、最后 , 完成上述步骤后,就可以将该文件导入实例orcl中的另一个用户,如下图所示 。这样,问题就解决了 。
Oracle数据库分区表操作方法 在大型的企业应用或企业级的数据库应用中 要处理的数据量通常可以达到几十到几百GB 有的甚至可以到TB级 虽然存储介质和数据处理技术的发展也很快 但是仍然不能满足用户的需求 为了使用户的大量的数据在读写操作和查询中速度更快 Oracle提供了对表和索引进行分区的技术 以改善大型应用系统的性能
使用分区的优点
·增强可用性 如果表的某个分区出现故障 表在其他分区的数据仍然可用
·维护方便 如果表的某个分区出现故障 需要修复数据 只修复该分区即可
·均衡I/O 可以把不同的分区映射到磁盘以平衡I/O 改善整个系统性能
·改善查询性能 对分区对象的查询可以仅搜索自己关心的分区 提高检索速度
Oracle数据库提供对表或索引的分区方法有三种
·范围分区
·Hash分区(散列分区)
·复合分区
下面将以实例的方式分别对这三种分区方法来说明分区表的使用 为了测试方便 我们先建三个表空间
以下为引用的内容
create tablespace dinya_space
datafile /test/demo/oracle/demodata/dinya dnf size M
create tablespace dinya_space
datafile /test/demo/oracle/demodata/dinya dnf size M
create tablespace dinya_space
datafile /test/demo/oracle/demodata/dinya dnf size M
分区表的创建
范围分区
范围分区就是对数据表中的某个值的范围进行分区 根据某个值的范围 决定将该数据存储在哪个分区上 如根据序号分区 根据业务记录的创建日期进行分区等
需求描述 有一个物料交易表 表名 material_transactions 该表将来可能有千万级的数据记录数 要求在建该表的时候使用分区表 这时候我们可以使用序号分区三个区 每个区中预计存储三千万的数据 也可以使用日期分区 如每五年的数据存储在一个分区上
根据交易记录的序号分区建表 以下为引用的内容
SQL create table dinya_test
(
transaction_id number primary key
item_id number( ) not null
item_description varchar ( )
transaction_date date not null
)
partition by range (transaction_id)
(
partition part_ values less than( ) tablespace dinya_space
partition part_ values less than( ) tablespace dinya_space
partition part_ values less than(maxvalue) tablespace dinya_space
);
Table created
建表成功 根据交易的序号 交易ID在三千万以下的记录将存储在第一个表空间dinya_space 中 分区名为:par_ 在三千万到六千万之间的记录存储在第二个表空间
dinya_space 中 分区名为 par_ 而交易ID在六千万以上的记录存储在第三个表空间dinya_space 中 分区名为par_
根据交易日期分区建表
以下为引用的内容
SQL create table dinya_test
(
transaction_id number primary key
item_id number( ) not null
item_description varchar ( )
transaction_date date not null
)
partition by range (transaction_date)
(
partition part_ values less than(to_date( yyyy mm dd ))
tablespace dinya_space
partition part_ values less than(to_date( yyyy mm dd ))
tablespace dinya_space
partition part_ values less than(maxvalue) tablespace dinya_space
);
Table created
这样我们就分别建了以交易序号和交易日期来分区的分区表 每次插入数据的时候 系统将根据指定的字段的值来自动将记录存储到制定的分区(表空间)中
当然 我们还可以根据需求 使用两个字段的范围分布来分区 如partition
by range ( transaction_id transaction_date)
分区条件中的值也做相应的改变 请读者自行测试
Hash分区(散列分区)
散列分区为通过指定分区编号来均匀分布数据的一种分区类型 因为通过在I/O设备上进行散列分区 使得这些分区大小一致 如将物料交易表的数据根据交易ID散列地存放在指定的三个表空间中
以下为引用的内容
SQL create table dinya_test
(
transaction_id number primary key
item_id number( ) not null
item_description varchar ( )
transaction_date date
)
partition by hash(transaction_id)
(
partition part_ tablespace dinya_space
partition part_ tablespace dinya_space
partition part_ tablespace dinya_space
);
Table created
建表成功 此时插入数据 系统将按transaction_id将记录散列地插入三个分区中 这里也就是三个不同的表空间中
复合分区
有时候我们需要根据范围分区后 每个分区内的数据再散列地分布在几个表空间中 这样我们就要使用复合分区 复合分区是先使用范围分区 然后在每个分区内再使用散列分区的一种分区方法 如将物料交易的记录按时间分区 然后每个分区中的数据分三个子分区 将数据散列地存储在三个指定的表空间中
以下为引用的内容
SQL create table dinya_test
(
transaction_id number primary key
item_id number( ) not null
item_description varchar ( )
transaction_date date
)
partition by range(transaction_date)subpartition by hash(transaction_id)
subpartitions store in (dinya_space dinya_space dinya_space )
(
partition part_ values less than(to_date( yyyy mm dd ))
partition part_ values less than(to_date( yyyy mm dd ))
partition part_ values less than(maxvalue)
);
Table created
该例中 先是根据交易日期进行范围分区 然后根据交易的ID将记录散列地存储在三个表空间中
分区表操作
以上了解了三种分区表的建表方法 下面将使用实际的数据并针对按日期的范围分区来测试分区表的数据记录的操作
插入记录
以下为引用的内容
SQL insert into dinya_test values( BOOKS sysdate);
row created
SQL insert into dinya_test values( BOOKS sysdate);
row created
SQL insert into dinya_test values( BOOKS to_date( yyyy mm dd ));
row created
SQL insert into dinya_test values( BOOKS to_date( yyyy mm dd ));
row created
SQL insert into dinya_test values( BOOKS to_date( yyyy mm dd ));
row created
SQL insert into dinya_test values( BOOKS to_date( yyyy mm dd ));
row created
SQL mit;
Commit plete
SQL
按上面的建表结果 年前的数据将存储在第一个分区part_ 上 而 年到 年的交易数据将存储在第二个分区part_ 上 年以后的记录存储在第三个分区part_ 上
查询分区表记录 以下为引用的内容
SQL select * from dinya_test partition(part_ );
TRANSACTION_ID ITEM_ID ITEM_DESCRIPTION TRANSACTION_DATE
BOOKS : :
BOOKS : :
SQL
SQL select * from dinya_test partition(part_ );
TRANSACTION_ID ITEM_ID ITEM_DESCRIPTION TRANSACTION_DATE
BOOKS
BOOKS
SQL
SQL select * from dinya_test partition(part_ );
TRANSACTION_ID ITEM_ID ITEM_DESCRIPTION TRANSACTION_DATE
BOOKS
BOOKS
SQL
从查询的结果可以看出 插入的数据已经根据交易时间范围存储在不同的分区中 这里是指定了分区的查询 当然也可以不指定分区 直接执行select * from dinya_test查询全部记录
在也检索的数据量很大的时候 指定分区会大大提高检索速度
更新分区表的记录
以下为引用的内容
SQL update dinya_test partition(part_ ) t set em_description= DESK where
t transaction_id= ;
row updated
SQL mit;
Commit plete
SQL
这里将第一个分区中的交易ID= 的记录中的item_description字段更新为 DESK 可以看到已经成功更新了一条记录 但是当更新的时候指定了分区 而根据查询的记录不在该分区中时 将不会更新数据 请看下面的例子 以下为引用的内容
SQL update dinya_test partition(part_ ) t set em_description= DESK where
t transaction_id= ;
rows updated
SQL mit;
Commit plete
SQL
指定了在第一个分区中更新记录 但是条件中限制交易ID为 而查询全表 交易ID为 的记录在第三个分区中 这样该条语句将不会更新记录
删除分区表记录
以下为引用的内容
SQL delete from dinya_test partition(part_ ) t where t transaction_id= ;
row deleted
SQL mit;
Commit plete
SQL
上面例子删除了第二个分区part_ 中的交易记录ID为 的一条记录 和更新数据相同 如果指定了分区 而条件中的数据又不在该分区中时 将不会删除任何数据
分区表索引的使用
分区表和一般表一样可以建立索引 分区表可以创建局部索引和全局索引 当分区中出现许多事务并且要保证所有分区中的数据记录的唯一性时采用全局索引
局部索引分区的建立
以下为引用的内容
SQL create index dinya_idx_t on dinya_test(item_id)
local
(
partition idx_ tablespace dinya_space
partition idx_ tablespace dinya_space
partition idx_ tablespace dinya_space
);
Index created
SQL
看查询的执行计划 从下面的执行计划可以看出 系统已经使用了索引
以下为引用的内容
SQL select * from dinya_test partition(part_ ) t where em_id= ;
Execution Plan
SELECT STATEMENT Optimizer=CHOOSE (Cost= Card= Bytes= )
TABLE ACCESS (BY LOCAL INDEX ROWID) OF DINYA_TEST (Cost=
Card= Bytes= )
INDEX (RANGE SCAN) OF DINYA_IDX_T (NON UNIQUE) (Cost=
Card= )
Statistics
recursive calls
db block gets
consistent gets
physical reads
redo size
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts (memory)
sorts (disk)
rows processed
SQL
全局索引分区的建立
全局索引建立时global 子句允许指定索引的范围值 这个范围值为索引字段的范围值
以下为引用的内容
SQL create index dinya_idx_t on dinya_test(item_id)
global partition by range(item_id)
(
partition idx_ values less than ( ) tablespace dinya_space
partition idx_ values less than ( ) tablespace dinya_space
partition idx_ values less than (maxvalue) tablespace dinya_space
);
Index created
SQL
本例中对表的item_id字段建立索引分区 当然也可以不指定索引分区名直接对整个表建立索引 如
以下为引用的内容
SQL create index dinya_idx_t on dinya_test(item_id);
Index created
SQL
同样的 对全局索引根据执行计划可以看出索引已经可以使用
以下为引用的内容
SQL select * from dinya_test t where em_id= ;
Execution Plan
SELECT STATEMENT Optimizer=CHOOSE (Cost= Card= Bytes= )
TABLE ACCESS (BY GLOBAL INDEX ROWID) OF DINYA_TEST (Cost
= Card= Bytes= )
INDEX (RANGE SCAN) OF DINYA_IDX_T (NON UNIQUE) (Cost=
Card= )
Statistics
recursive calls
db block gets
consistent gets
physical reads
redo size
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts (memory)
sorts (disk)
rows processed
SQL
分区表的维护
了解了分区表的建立 索引的建立 表和索引的使用后 在应用的还要经常对分区进行维护和管理 日常维护和管理的内容包括 增加一个分区 合并一个分区及删除分区等等 下面以范围分区为例说明增加 合并 删除分区的一般操作
增加一个分区:
以下为引用的内容
SQL alter table dinya_test
add partition part_ values less than(to_date( yyyy mm dd ))
tablespace dinya_spa
ce ;
Table altered
SQL
增加一个分区的时候 增加的分区的条件必须大于现有分区的最大值 否则系统将提示ORA partition bound must collate higher than that of the last partition 错误
合并一个分区
以下为引用的内容
SQL alter table dinya_test merge partitions part_ part_ into partition part_ ;
Table altered
SQL
在本例中将原有的表的part_ 分区和part_ 分区进行了合并 合并后的分区为part_ 如果在合并的时候把合并后的分区定为part_ 的时候 系统将提示ORA cannot reuse lower bound partition as resulting partition 错误
删除分区
以下为引用的内容
SQL alter table dinya_test drop partition part_ ;
Table altered
SQL
删除分区表的一个分区后 查询该表的数据时显示 该分区中的数据已全部丢失 所以执行删除分区动作时要慎重 确保先备份数据后再执行 或将分区合并
总结
lishixinzhi/Article/program/Oracle/201311/17329
【oracle如何对表操作 oracle 操作】oracle如何对表操作的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于oracle 操作、oracle如何对表操作的信息别忘了在本站进行查找喔 。

    推荐阅读