Oracle12.2怎么用对象数据类型来重定义表
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容介绍了"Oracle12.2怎么用对象数据类型来重定义表"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2025年02月06日Oracle12.2怎么用对象数据类型来重定义表
本篇内容介绍了"Oracle12.2怎么用对象数据类型来重定义表"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Oracle 12.2使用对象数据类型来重定义表,下面的例子将重定义表将列改变为对象属性,原始表为customer,定义如下:
SQL> create table jy.customer( 2 cid number not null, 3 name varchar2(30), 4 street varchar2(100), 5 city varchar2(30), 6 state varchar2(2), 7 zip number(5) 8 );Table createdSQL> alter table jy.customer add constraint customer_pk primary key(cid);Table altered
创建新的对象类型
SQL> create type jy.addr_t as object 2 ( 3 street varchar2(100), 4 city varchar2(30), 5 state varchar2(2), 6 zip number(5,0) 7 ); 8 9 /Type created
联机重定义操作如下:
1.用要执行联机重定义操作的用户登录数据库
SQL> conn jy/jy@jypdbConnected.
2.验证表是否可以执行联机重定义,可以使用主键或伪主键来执行验证操作。
SQL> begin 2 dbms_redefinition.can_redef_table( 3 uname => 'jy', 4 tname =>'customer', 5 options_flag => DBMS_REDEFINITION.CONS_USE_PK); 6 end; 7 /PL/SQL procedure successfully completed
3.创建中间表jy.int_customer
SQL> create table jy.int_customer 2 ( 3 cid number, 4 name varchar2(30), 5 addr addr_t 6 );Table created
4.因为customer是一个非常大的表,为了让下一步操作启用并行执行以下语句:
SQL> alter session force parallel dml parallel 4;Session alteredSQL> alter session force parallel query parallel 4;Session altered
5.使用主键来执行重定义操作
SQL> begin 2 dbms_redefinition.start_redef_table( 3 uname => 'jy', 4 orig_table => 'customer', 5 int_table => 'int_customer', 6 col_mapping => 'cid cid, name name, 7 addr_t(street, city, state, zip) addr'); 8 end; 9 /PL/SQL procedure successfully completed
6.复制依赖对象
SQL> declare 2 num_errors pls_integer; 3 begin 4 dbms_redefinition.copy_table_dependents( 5 uname => 'jy', 6 orig_table => 'customer', 7 int_table => 'int_customer', 8 copy_indexes => DBMS_REDEFINITION.CONS_ORIG_PARAMS, 9 copy_triggers => TRUE, 10 copy_constraints => TRUE, 11 copy_privileges => TRUE, 12 ignore_errors => FALSE, 13 num_errors => num_errors, 14 copy_statistics => TRUE); 15 end; 16 /PL/SQL procedure successfully completed
7.可选操作同步中间表
SQL> begin 2 dbms_redefinition.sync_interim_table( 3 uname => 'jy', 4 orig_table => 'customer', 5 int_table => 'int_customer'); 6 end; 7 /PL/SQL procedure successfully completed
8.完成重定义操作
SQL> begin 2 dbms_redefinition.finish_redef_table( 3 uname => 'jy', 4 orig_table => 'customer', 5 int_table => 'int_customer'); 6 end; 7 /PL/SQL procedure successfully completed
SQL> select dbms_metadata.get_ddl(object_type =>'TABLE',name =>'CUSTOMER',schema => 'JY') from dual;DBMS_METADATA.GET_DDL(OBJECT_TYPE=>'TABLE',NAME=>'CUSTOMER',SCHEMA=>'JY')-------------------------------------------------------------------------------- CREATE TABLE "JY"."CUSTOMER" ( "CID" NUMBER NOT NULL ENABLE, "NAME" VARCHAR2(30), "ADDR" "JY"."ADDR_T" , CONSTRAINT "CUSTOMER_PK" PRIMARY KEY ("CID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TEST" ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TEST"1 row selected.
可以看到表jy.customer已经成功能联机重定义
9.等待任何查询中间表的语句执行完成后将其删除
SQL> desc jy.customerName Type Nullable Default Comments---- ------------ -------- ------- --------CID NUMBERNAME VARCHAR2(30) YADDR ADDR_T YSQL> drop table jy.customer purge;Table dropped
到此重定义操作就完成了。
"Oracle12.2怎么用对象数据类型来重定义表"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
对象
数据
类型
内容
更多
知识
语句
验证
原始
实用
学有所成
接下来
例子
功能
困境
实际
属性
情况
数据库
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
揭阳通讯软件开发销售厂
电子支付网络安全论文
体系国家网络安全
软件开发项目毕业设计
交通行业网络安全解决方案费用
炸了服务器
龙城网络安全非标机箱定制
软件开发消息接口方式
福建佰万网络技术有限公司
asp.net建数据库
镇江个人软件开发资费
邮件对方服务器未响应
软件开发主要工作业绩总结
空当接龙软件开发如何
sql备份数据库恢复
网络安全重保怎么做
奉贤软件开发设计
关于网络安全的课本剧台词
军工桌面软件开发
网络安全教研记录
联想R630服务器管理ip
与服务器的连接意外终止
服务器分布式部署是什么意思
金蝶软件开发人天价格
自治县网络安全工作建设经费
服务器桥
阿里云管理控制台服务器搭建
安卓社交app软件开发教程
网络技术员如何开展工作
计算机三级网络技术速成