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:表所在的方案名(所属username)
?	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

原文地址:https://www.cnblogs.com/ldxsuanfa/p/10659266.html

时间: 2024-08-01 19:09:28

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] ]; 说明:

Spark 性能相关參数配置具体解释-任务调度篇

作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 随着Spark的逐渐成熟完好, 越来越多的可配置參数被加入到Spark中来, 本文试图通过阐述这当中部分參数的工作原理和配置思路, 和大家一起探讨一下怎样依据实际场合对Spark进行配置优化. 因为篇幅较长.所以在这里分篇组织,假设要看最新完整的网页版内容.能够戳这里:http://spark-config.readthedoc

oracle表空间创建及管理

一.数据文件和数据库逻辑存储结构: 一个表空间包含一个或多个数据文件,一个表空间包含一个或多个段,一个段包含一个或多个区,一个区包含一个或多个连续的数据库块,一个数据库块包含一个或多个操作系统块.段是对象存储基本单元,段中的区总是在同一个表空间中,可以跨数据文件.区是空间分配的基本单元,连续的数据块,不能跨数据文件.块是I/O 的基本单元,不能跨数据文件. 表空间的分类永久表空间 存放永久性数据,如表,索引等.临时表空间 不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据.UNDO表空

微信公众号开发系列-微信企业号开发相关參数

微信企业号出来之后,本人也抱着前面开发订阅号和服务号的经验来探究了一番,这里整理了下再开发企业号时候碰到的一些接口參数.企业号开发文档详见http://qydev.weixin.qq.com/wiki/index.php?title=首页 1.创建自己定义菜单參数解释: 菜单管理的创建操作.官方定义例如以下所看到的. 请求说明 Https请求方式: POST https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_T

Spark 性能相关參数配置具体解释-shuffle篇

作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 随着Spark的逐渐成熟完好, 越来越多的可配置參数被加入到Spark中来, 在Spark的官方文档http://spark.apache.org/docs/latest/configuration.html 中提供了这些可配置參数中相当大一部分的说明. 可是文档的更新总是落后于代码的开发的, 另一些配置參数没有来得及被加入到这

Oracle表的创建及管理

对于数据库而言实际上每一张表都表示的是一个数据库的对象,而数据库对象指的就是DDL定义的所有操作,例如:表.视图.索引.序列.约束等等,都属于对象的操作,所以表的建立就是对象的建立,而对象的操作主要分为以下三类语法: 创建对象:CREATE 对象名称 -: 删除对象:DROP 对象名称 -: 修改对象:ALTER 对象名称 -: 一.常用的数据字段 每一张数据表实际上都是由若干个字段所组成,而每一个字段都会有其对应的数据类型,而在Oracle之中,常用的数据类型有如下几种: № 数据类型 关键字

oracle表空间创建

/*分为四步 *//*第1步:创建临时表空间  */create temporary tablespace user_temp  tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m  autoextend on  next 50m maxsize 20480m  extent management local;   /*第2步:创建数据表空间  */create tablespace user_data  logging  d

oracle表空间创建与用户授权

创建表空间(tbs_school)create tablespace tbs_schooldatafile 'D:\oracle\product\11.1.0\oradata\schooldb\school01.dmp'size 10m autoextend on;创建用户(用户名:abc 密码:abc)create user abc identified by abcdefault tablespace tbs_schooltemporary tablespace temp;分配用户权限首先通

第三节 数据表的创建和相关的一些指令

1 -- 创建数据表,指定字段的数据类型和约束等 2 CREATE TABLE t_student( 3 id INT UNSIGNED NOT NULLl AUTO_INCREMENT PRIMARY KEY, 4 name VARCHAR(30), 5 age TINYINT UNSIGNED FEFAILT 0, 6 high DECIMAL(5,2), 7 gender ENUM('男','女','保密') DEFAULT '保密', 8 cls_id INT UNSIGNED 9 );