title: Altering primary key
body: <p>I have seen 2 approaches to alter a primary key. the approach 1, is something in which i delete the primary key (it deletes corresponding index as well) and then create the primary key with a new index with in it i.e.</p>
  
  <pre><code>alter table TABLE_NAME drop constraint PK_TABLE_NAME drop index;
  alter table TABLE_NAME
  add constraint PK_TABLE_NAME PRIMARY KEY ("COL1") 
    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) 
    TABLESPACE "USERS" ENABLE;
  COMMIT;
  /
  </code></pre>
  
  <p>The second approach is doing all steps indiviually i.e.</p>
  
  <pre><code>alter table TABLE_NAME drop constraint PK_TABLE_NAME;
  drop index PK_TABLE_NAME;
  
  CREATE UNIQUE INDEX PK_TABLE_NAME ON TABLE_NAME
  (COL1)
  LOGGING
  TABLESPACE USERS
  PCTFREE    10
  INITRANS   2
  MAXTRANS   255
  STORAGE    (
              INITIAL          64K
              MINEXTENTS       1
              MAXEXTENTS       UNLIMITED
              PCTINCREASE      0
              BUFFER_POOL      DEFAULT
              FLASH_CACHE      DEFAULT
              CELL_FLASH_CACHE DEFAULT
             )
  NOPARALLEL;
  
  alter table TABLE_NAME add constraint PK_TABLE_NAME PRIMARY KEY ("COL1") USING INDEX PK_TABLE_NAME;
  COMMIT;
  /
  </code></pre>
  
  <p>So now my questions are</p>
  
  <ol>
  <li>are these 2 approaches has anything different at the backend except for the fact that the steps are splitted up? </li>
  <li>I see that we can mention column name wihtin quotes i.e. <strong>"COL1"</strong> or without quotes i.e. <strong>COL1</strong>. Are these 2 approaches would make any difference? </li>
  <li>Consider these steps are being executed on a table which has TRILLION OF DATA, do any of these has any performance gain on other? </li>
  </ol>