日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle表参数,Oracle 表的创建 及相关参数

發布時間:2024/7/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle表参数,Oracle 表的创建 及相关参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、創建表完整語法

CREATE TABLE [schema.]table

(column datatype [, column datatype] … )

[TABLESPACE tablespace]

[PCTFREE integer]

[PCTUSED integer]

[INITRANS integer]

[MAXTRANS integer]

[STORAGE storage-clause]

[LOGGING | NOLOGGING]

[CACHE | NOCACHE] ];

說明:

?Schema:表所在的方案名(所屬用戶名)

?Table:表名

?Column:字段名

?Datatype:字段的數據類型

?Tablespace:表所在的表空間名

控制數據空間使用的參數:

?Pctfree:為了行長度增長而在每個塊中保留的空間的量(以占整個空間減去塊頭部后所剩余空間的百分比形式表示),當剩余空間不足pctfree時,不再向該塊中增加新行。

?Pctused:在塊剩余空間不足pctfree后,塊已使用空間百分比必須小于pctused后,才能向該塊中增加新行。

控制并發性參數:

?INITRANS:在塊中預先分配的事務項數,INITRANS對數據段的缺省值為1,對索引段的缺省值為2,以保證最低程度的并發。當事務訪問表中的一個數據塊時,該事務會在oracle塊的頭部中記錄一個值,用于標記該事務正在使用這個oracle塊。該事務結束時,會刪除對應的條目。例如,如果INITRANS設為3,則保證至少3個事務可以同時對塊進行更改。如果需要,也可以從塊空閑空間內分配其它事務位置,以允許更多的事務并發修改塊內的行。

?MAXTRANS:限定可以分配給每個塊的最大事務項數,缺省值為255。設置后,該值限制事務位置對空間的使用,從而保證塊內有足夠的空間供行或者索引數據使用。

?STORAGE:標識決定如何將區分配給表的存儲子句

i.INITIAL:初始區的大小

ii.NEXT:下一個區的大小

iii.PCTINCREASE:以后每個區空間增長的百分比

iv.MINEXTENTS:段中初始區的數量

v.MAXEXTENTS:最大能擴展的區數

?LOGGING:指定表的創建將記錄到重做日志文件中。它還指定所有針對該表的后續操作都將被記錄下來。這是缺省設置。

?NOLOGGING:指定表的創建將不被記錄到重做日志文件中。

?CACHE:指定即使在執行全表掃描時,為該表檢索的塊也將放置在緩沖區高速緩存的LRU列表最近使用的一端。

?NOCACHE:指定在執行全表掃描時,為該表檢索的塊將放置在緩沖區高速緩存的LRU列表最近未使用的一端。

?案例1

?通過設置表的NOLOGGING來產生更少的REDO

ORACLE數據庫會對產生改變的操作記錄REDO,比如DDL語句、DML語句,這些操作首先會放在redo buffer中,然后由LGER進程根據觸發條件寫到聯機日志文件,如果數據庫開啟歸檔的話,還要在日志切換的時候歸檔。在這樣一個完整的鏈條上的每一個環節,都可能會成為性能的瓶頸,所以需要引起DBA和數據庫應用人員的注意。

下面案例中,當把一個表設置成NOLOGGING模式的時候,通過一定的插入操作,可以讓oracle產生較少的REDO。

SQL> conn / as sysdba

SQL> archive log list --此時為歸檔模式

SQL> create table tj as select * from dba_objects where 1=2;

SQL> select count(*) from tj;

SQL> select table_name,logging from user_tables where table_name='TJ';

--觀察logging屬性值

SQL> set autotrace on stat

SQL> insert into tj select * from dba_objects; --觀察redo size的統計值

SQL> rollback;

SQL> insert /*+append*/ into tj select * from dba_objects; --觀察redo size的統計值

SQL> rollback;

SQL> alter table tj nologging;

SQL> select table_name,logging from user_tables where table_name='TJ';

--觀察logging屬性值

SQL> insert into tj select * from dba_objects; --觀察redo size的統計值

SQL> rollback;

SQL> insert /*+append*/ into tj select * from dba_objects; --觀察redo size的統計值

補充說明:設置Autotrace的命令

用法: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

--關閉跟蹤執行計劃和統計信息功能(默認關閉)。

SQL> set autotrace off;

--執行計劃和統計信息都顯示

SQL> set autotrace on ;

--只顯示執行計劃和統計信息,不顯示sql執行結果。

SQL> set autotrace traceonly;

--只顯示執行計劃

SQL> set autotrace on explain;

--只顯示統計信息

SQL> set autotrace on statistics;

補充說明:歸檔模式與非歸檔模式間的轉換命令

--1)關閉數據庫

SQL>shutdown immediate

--2)把數據庫啟動到mount的模式

SQL>startup mount

--3)把數據庫改為非歸檔模式 /歸檔模式

SQL>alter database noarchivelog;

或者

SQL>alter database archivelog;

--4)打開數據庫

SQL>Alter database open;

--5)查看數據庫歸檔模式的狀態

SQL> archive log list

備注:如果在關閉歸檔日志時出現ORA-38774錯誤,請關閉flash閃回數據庫模式。

SQL> alter database flashback off

?案例2

?創建一張基本表

Create tablespace exampletb

Datafile 'E:\ examp01.dbf' reuse;

CREATE TABLE scott.student

(id NUMBER(5) CONSTRAINT st_id_pk PRIMARY KEY,

name VARCHAR2(10) CONSTRAINT st_name NOT NULL,

phone VARCHAR2(11),

school_time DATE DEFAULT SYSDATE,

sex CHAR(1),

CONSTRAINT st_sex_ck CHECK (sex IN('F','M')),

CONSTRAINT st_ph_uk UNIQUE (name))

INITRANS 1 MAXTRANS 255

PCTFREE 20 PCTUSED 50

STORAGE( INITIAL 1024K NEXT 1024K PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 5)

TABLESPACE exampletb

2、修改表結構

Alter table 表名 add (列名 類型); --添加新列

Alter table 表名 modify (列名 類型); --修改列定義

Alter table 表名 drop column 列名; --刪除列

Rename 表名 to 新表名 --改表名(表名前不能加方案名)

ALTER TABLE 表名 RENAME COLUMN 當前列名 TO 新列名; --修改列名

?修改表結構案例

SQL> Alter table scott.student add (QQ number(10));

--為student表增加列存放QQ號

SQL> Alter table scott.student modify (QQ number(12));

--修改student表中名為QQ的列

SQL> Alter table scott.student rename COLUMN QQ to QQ_num;

--將student表中名為QQ的列改名QQ_num

SQL> Alter table scott.student drop column QQ_num;

--刪除student表中名為QQ_num的列

SQL> insert into scott.student(id,name) values(1, 'lucy');

--向student表中插入一條記錄

SQL> Alter table scott.student modify (sex char(1) default 'M');

--修改sex列的定義

SQL> insert into scott.student(id,name) values(2, 'Dell');

--向student表中插入一條記錄

SQL> Alter table scott.student modify (sex char(1) default null);

--修改sex列的定義

SQL> insert into scott.student(id,name) values(3, 'Mary');

--向student表中插入一條記錄

思考:oracle中列的默認值設置與修改。

3、表的約束

Alter table 表名 add constraint 約束 ; --增加一個約束

Alter table 表名 drop constraint 約束名; --刪除一個約束

alter table表名enable [validate/novalidate] constraint約束名;

--啟用一個約束,validate/novalidate代表啟用約束時是否對表中原有數據作檢查。

alter table表名disable constraint約束名; --禁用一個約束

?修改表約束案例

SQL> Alter table scott.student disable constraint st_sex_ck;

--禁用st_sex_ck約束

SQL> insert into scott.student(id,name,sex) values(4, 'Lily', 'N');

SQL> Alter table scott.student enable novalidate constraint st_sex_ck;

--啟用st_sex_ck約束,但不檢查已有數據。

SQL> select * from scott.student;

SQL> insert into scott.student(id,name,sex) values(5, 'Mark', 'N');

SQL>@$ORACLE_HOME/rdbms/admin/utlexpt1.sql --建立異常數據保存表

或者

@ G:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlexpt1.sql

--具體路徑可以通過搜索utlexpt1.sql獲取

SQL>alter table scott.student enable validate constraint st_sex_ck exceptions into exceptions; -- 將異常數據裝入異常表

SQL> select * from scott.student where rowid in(select row_id from exceptions);

--查看對應的原表中的異常數據

SQL>Alter table scott.student drop constraint st_sex_ck; --刪除約束st_sex_ck

總結

以上是生活随笔為你收集整理的oracle表参数,Oracle 表的创建 及相关参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。