9i提供了联机重定义表的方法,可以让你在基本不影响原表的DML情况下修改表结构。
实际上,联机重定义表并不是完全的联机重定义,
在最后交换表名的时候会短暂地锁定原表和中间表,但这个过程很短暂。
重定义表主要有以下四步:
1.判断表是否可以在线重定义,
begin dbms_redefinition.can_redef_table(uname =>
'syslogusr',tname => 'test',options_flag =>
dbms_redefinition.cons_use_pk);end;
如果过程顺利完成,进行2.
2.创建中间表. 中间表基本上就是你重定义后的表结构.
3.开始重定义.
begin dbms_redefinition.start_redef_table(uname => 'syslogusr',orig_table => 'test',int_table =>'in_test');end;
如果顺利进行4.
4. 结束重定义
begin dbms_redefinition.finish_redef_table(uname => 'syslogusr',orig_table => 'test',int_table => 'in_test');end;
在第4步之前,可执行同步,begin dbms_redefinition.sync_interim_table(uname =>
'syslogusr',orig_table => 'test',int_table => 'in_test');end;
这样可以降低finish_redef_table的时间.
最后你可DROP掉中间表.
第一步可能报:ORA-12089: 不能联机重新定义无主键的表 "SYSLOGUSR"."TEST" , 这时需要为TEST添加主键.
第二步可能报:ORA-12091: 不能联机重新定义具有实体化视图的表 "SYSLOGUSR"."TEST"。
Remove the snapshot log and materialized view created during the
unsuccessfull first execution of the DBMS_REDEFINITION.START_REDEF_TABLE
procedure。去除首次执行START_REDEF_TABLE 产生的快照日志.
SQL> select log_table from user_snapshot_logs;
LOG_TABLE
-------------------------
MLOG$_EMP
SQL> drop snapshot log on emp;
Materialized view log dropped.
SQL> select TABLE_NAME , status from user_snapshots;
TABLE_NAME STATUS
------------------------------ -------
INT_EMP INVALID
SQL> select mview_name, compile_state from user_mviews;
MVIEW_NAME COMPILE_STATE
------------------------------ -------------------
INT_EMP ERROR
SQL> drop materialized view int_emp;
Materialized view dropped.
即可继续.
分享到:
相关推荐
- **对包含实体化视图和视图日志的表的支持**: 在Oracle Database 11g中,可以直接对包含实体化视图和视图日志的表进行联机重新定义,无需先手动禁用这些实体化视图和视图日志。 - **支持带有FOLLOWS子句的触发器*...
视图是从一个或多个基本表或视图导出的虚拟表,仅保存其定义,不存储实际数据,方便用户以不同的角度查看和操作数据。 在数据定义方面,SQL提供了创建、删除和修改表的能力,同时也支持视图和索引的定义。创建表是...
答:实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为...
基本表是存储实际数据的实体,视图是虚拟表,基于基本表或视图生成,不存储实际数据,但提供了一种查看数据的不同方式。约束和断言则用来限制和验证数据的有效性,确保数据库中的数据符合预设规则。 【总结】 SQL是...
实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。主要包括select, update, insert, alter, index, delete, all其中all包括所有权限。 授予实体权限 用法:grant 实体权限1...
用户是在Oracle实例下创建的,每个用户有自己的权限和对象,如表、视图、索引等。不同的实例可以创建同名的用户,但用户与数据库是直接关联的,而不是与实例。用户通过SQL语句来查询和操作数据,他们的数据存储在...
6. **视图更新法则**:可更新的视图应能被系统更新。 7. **高级操作**:插入、更新和删除操作应视为单个操作处理。 8. **物理独立性**:数据存储变化不影响应用程序。 9. **逻辑独立性**:表结构改变不影响应用程序...
SQL Server Express 可以根据协议重新进行发布,并可作为客户端数据库以及基本服务器数据库使用。SQL Server Express 是独立软件供应商 (ISV)、服务器用户、非专业开发人员、Web 应用程序开发人员、网站宿主以及...
《 Essbase 中文联机丛书》是针对 Essbase 数据仓库和分析平台的重要参考资料,该书系为官方出版,适用于版本 11.2。Essbase 是一款由 Oracle 公司提供的高级联机分析处理(OLAP)和多维数据库管理系统,广泛应用于...
3. 空值处理:支持空值,并提供系统化的处理机制,不受数据类型限制。 4. 动态联机目录:数据库的结构信息应自描述,用户可以通过查询获取。 5. 统一的数据子语言:至少一种语言支持所有数据库操作,如SQL。 6. 视图...
视图可以提高数据查询效率,提供数据的逻辑独立性,但视图的定义语句通常不包含数据更改语句,所以选项B正确。 关系模式中的插入异常是指在数据库的某些情况下,合法的数据无法被插入到数据库中,这通常是由于数据...
18. **宏的使用**:宏不应用于表,但可用于窗体、报表和模块以实现自动化操作。 19. **变量定义**:在VBScript或VBA中,Dim、Public和Private用于定义变量,而Declare通常用于声明外部函数。 20. **计算机部件**:...
视图则是一个虚拟表,只存储其定义,不存储实际数据。用户可以通过SQL的DDL(Data Definition Language)命令来创建、修改或删除这些表和视图,例如CREATE TABLE、ALTER TABLE和DROP TABLE。此外,索引可以通过...
视图(View)则是一种虚拟表,不存储数据,而是根据查询定义生成的结果集。 13. **存储过程(Procedure)**:存储在数据库中的预编译SQL语句集合,用于执行特定任务,如`P_GET_EMPLOYEE_INFO_BY_ID`示例所示。 14....
在数据库设计时,涉及到多种数据模型,因为目前商用化 DBMS 没有一个能够同时满足 3 项要求,因此人们不得不走折中路线,设计一些中间的数据模型。 5. 数据库系统中的用户类型: 数据库系统中的用户类型有最终用户...
第1章 建立和配置数据库...9.1.3 实体化视图 9.1.4 利用 DBMS_STATS 收集性能统计 数据 9.2 新索引类型 9.2.1 基于函数的索引 9.2.2 反向键索引 9.2.3 降序索引 9.2.4 索引编排表 9.2.5 管理索引的新特性 9.3 ...
- **视图**: 在数据库中,视图是一种虚拟表,它并不实际存储数据,而是根据用户的视角或需求从一个或多个实际存在的表中派生出来的数据集合。 - **数据字典**: 是一种特殊的数据库对象,用于存储关于数据库本身的元...
- 分别设计每个实体的局部视图,然后集成这些视图,形成全局ER图。 - 通过合并和简化,去除冗余,确保概念模型的简洁性和无歧义性。 **3. 逻辑结构设计** 逻辑设计阶段,将概念结构转换为具体数据库管理系统(如...