当前位置:  数据库>oracle

Oracle 表的创建 及相关参数

    来源: 互联网  发布时间:2017-06-05

    本文导语: 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:...

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:appAdministratorproduct11.2.0dbhome_1RDBMSADMINutlexpt1.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

Linux下安装Oracle的常用设置参数及环境变量说明


    
 
 

您可能感兴趣的文章:

  • oracle 视图权限 oracle 创建视图权限不足
  • oracle 创建表空间步骤代码
  • Linux系统下创建第二个oracle数据库
  • oracle 创建数据库小知识
  • Oracle新手教程 手工创建数据库的全部脚本及说明
  • Oracle创建用户权限的过程
  • Oracle WebLogic Server 安装并创建域
  • Oracle 10g创建表空间和用户并指定权限
  • linux redhat5.6安装oracle11g在自动创建实例时停住不动,有图
  • oracle 创建表空间详细介绍
  • 在RedHat Advance Server下安装Oracle9i R2不能创建数据库问题
  • 在oracle数据库里创建自增ID字段的步骤
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • Oracle使用配置文件创建口令管理策略
  • oracle命令行删除与创建用户的代码
  • oracle删除主键查看主键约束及创建联合主键
  • Oracle 10g表空间创建的完整步骤
  • Oracle创建主键自增表(sql语句实现)及触发器应用
  • Linux Oracle RAC内核参数 iis7站长之家
  • Oracle11.2 命令行手工最简创建数据库的过程
  • 深入解析Oracle参数及参数文件
  • Oracle数据库访问参数文件的顺序
  • Oracle初始参数与当前用户
  • Oracle中serveroutput参数一次设置永久保存方法
  • Oracle的spfile参数文件
  • Linux Oracle RAC内核参数
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • Sun Solaris运行Oracle数据库所需的内核参数
  • Linux下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结果
  • Oracle Streams存储过程中的一些参数
  • 快速修复Oracle参数文件的另类方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ORACLE日期相关操作
  • Linux下如何用C语言操作Oracle数据库相关的图书推荐
  • Oracle 11g 相关工具netca,dbca乱码之解决
  • Oracle相关基础知识教程集锦
  • Linux下Oracle数据库相关知识集粹
  • 如何在REDHAT9下安装ORACLE9I,,有相关文档吗??
  • Linux中Oracle使用相关知识集锦
  • Linux(Oracle系统在上面)系统无缘无故死机 , 可能是由于应用程序引起 , 可是由于重新启动查不到相关信息 , 不知道在哪里有记录系统CPU Lo
  • oracle 数据库闪回相关语句介绍
  • 与Oracle RAC相关的连接配置写法实例
  • Oracle的几个相关重要概念简述
  • Unix/Linux Oracle相关shell
  • Unix/Linux之Oracle相关Shell
  • Oracle相关:Rman Crosscheck删除失效归档
  • oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .
  • Oracle与连接相关知识
  • Oracle数据库相关知识
  • 探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句
  • oracle安装出现乱码等相关问题
  • Oracle 存储过程总结 二、字符串处理相关函数
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,