对于create我们知道这是一个ddl语句,另外还有一些操作,其实对于数据库来说也是ddl操作。当发生ddl操作时,有关对象的sql语句都会出现重新解析的情况,所以在生产环境下要注意此类操作。
1.在表上创建对象、在线重建索引
SQL> create table dayu0718 as select * from dba_objects; Table created. SQL> commit; Commit complete. SQL> alter session set nls_date_format='yyyymmdd hh24:mi'; Session altered. SQL> select last_ddl_time from dba_objects where object_name='DAYU0718'; LAST_DDL_TIME -------------- 20180718 13:37 SQL> create index dayu0718_ind on dayu0718(object_id); Index created. SQL> select last_ddl_time from dba_objects where object_name='DAYU0718'; LAST_DDL_TIME -------------- 20180718 13:39 SQL> alter index dayu0718_ind rebuild online; Index altered. SQL> select last_ddl_time from dba_objects where object_name='DAYU0718'; LAST_DDL_TIME -------------- 20180718 13:41
2.添加、删除列
SQL> alter table DAYU0718 add column_new varchar(30); Table altered. SQL> select last_ddl_time from dba_objects where object_name='DAYU0718'; LAST_DDL_TIME -------------- 20180718 13:50 SQL> alter table DAYU0718 drop column column_new; Table altered. SQL> select last_ddl_time from dba_objects where object_name='DAYU0718'; LAST_DDL_TIME -------------- 20180718 13:51
3.增加、调整约束
SQL> alter table dayu0718 add constraint pk_object_id primary key(object_id); Table altered. SQL> select last_ddl_time from dba_objects where object_name='DAYU0718'; LAST_DDL_TIME -------------- 20180718 14:06
4.若表为分区表,truncate分区表