外键约束保证参照完整性。外键约束限定了一个列的取值范围。一个例子就是限定州名缩写在一个有限值集合中,这个值集合是另外一个控制结构——一张父表
下面我们创建一张参照表,它提供了完整的州缩写列表,然后使用参照完整性确保学生们有正确的州缩写。第一张表是州参照表,State作为主键
CREATE TABLE state_lookup
(state VARCHAR2(2),
state_desc VARCHAR2(30)) TABLESPACE student_data;
ALTER TABLE state_lookup
ADD CONSTRAINT pk_state_lookup PRIMARY KEY (state);
然后插入几行记录:
INSERT INTO state_lookup VALUES ('CA', 'California');
INSERT INTO state_lookup VALUES ('NY', 'New York');
INSERT INTO state_lookup VALUES ('NC', 'North Carolina');
我们通过实现父子关系来保证参照完整性,图示如下
--------------- 外键字段存在于Students表中
|State_lookup | 是State字段
--------------- 一个外键必须参照主键或Unique字段
| &n ......
分区表、分区索引和全局索引:
在一个表的数据超过过2000万条或占用2G空间时,建议建立分区表。
create table ta(c1 int,c2 varchar2(16),c3 varchar2(64),c4 int constraint pk_ta primary key (c1)) partition by range(c1)(partition p1 values less than (10000000),partition p2 values less than (20000000),partition p3 values less than (30000000),partition p4 values less than (maxvalue));
增加分区,删除分区
alter table ta add partition p_xx values less than (90000000000);
alter table ta drop partition p_xx [update global indexes] ;
create table AAA
(
ID NUMBER not null,
AREAID VARCHAR2(128),
VCHAR6 VARCHAR2(300)
) partition by list (vchar6)
(
partition p_0 values (default), --在建list分区表时候要指定落不到其他分区的数据
partition p_1 values ('1','2','3'),
partition p_2 values ('4,5,6,7,8,9,10')
);
分区索引和全局索引:
分区索引就是在所有每个区上单独创建索引,它能自动维护,在drop或truncate ......
用户的管理
一、ORACLE的安全域
1、TABLESPACE QUOTAS:表空间的使用定额
2、DEFAULT TABLESPACE:默认表空间
3、TEMPORARY TABLESPACE:指定临时表空间。
4、ACCOUNT LOCKING:用户锁
5、RESOURCE LIMITE:资源限制
6、DIRECT PRIVILEGES:直接授权
7、ROLE PRIVILEGES:角色授权先将应用中的用户划为不同的角色,
二、创建用户时的清单:
1、选择一个用户名称和检验机制:A,看到用户名,实际操作者是谁,业务中角色。
2、选择合适的表空间:
3、决定定额:
4、口令的选择:
5、临时表空间的选择:先建立一个临时表空间,然后在分配。不分配,使用SYSTEM表空间
6、CREATE USER
7、授权:A,用户的工作职能
B,用户的级别
三、用户的创建:
1、命令:
CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE 默认表空间名 TEMPOARAY
TABLESPACE 临时表空间名
QUOTA 15M ON 表空间名
[PASSWORD EXPIRE]:当用户第一次登陆到ORACLE,创建时所指定的口令过期失效,强迫用户自己定义一个新口令。
[ACCOUNT LOCK]:加用户锁
QUOTA UNLIMITED ON TABLESPACE:不限制,有多少有多少。
[PROFILE 名称]:受PROFILE文件的 ......
Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,原因是该表的空间大了,查询起来很慢。解决的方法是把该表所占用的表空间缩小,或者说释放表空间。
alter table XXXX move; 这样处理后就释放了表空间了。但是释放表空间后,表的行号rowid会发生变化,而基于rowid的索引则会变成无效。因此该操作后必须重建索引。否则会提示“ORA-01502: 索引'SMP.ITEMLOG_MID_IDX'或这类索引的分区处于不可用状态” 而重建索引的方法当然可以先drop掉再create ,但是这样太麻烦了,用alter index XXX rebuild 这样最快了,不会改变原来的索引结构。
来源:http://hi.baidu.com/bbz_dd_a/blog/item/1c962bf4b69666dff2d38588.html
......
停止数据库,停止服务。
然后在运行升级程序时出现Error:OUI-10133:Invalid stageing area. there
are no top level components
错误,半天不得其解。终于发现是因为升级包解压不完全造成的。重新复制一份完整解压过的,升级。OK. ......
景:在windows xp server上安装了Oracle 9.2.0.1,现使用p4547809_92080_WINNT.zip将其升级到9.2.0.8版本,并打上最
新的安全补丁April 2008版。
1.升级oracle(administrator用户权限)(下载p4547809_92080_WINNT.zip网址:
ftp://updates.oracle.com/4547809/p4547809_92080_WINNT.zip)
(1)、压缩包名称为 p4547809_92080_WINNT.zip,for windows 32bit,解压缩zip,下边包含一个Disk1和readme.html文件
。安装升级补丁之前,在管理中停掉所有的oracle相关服务(在服务中停止)
(2)、双击解压后文件夹下的setup.exe,安装时目标选项里,在名称里下拉选择,就可以指定出原来的安装名称和路径,自
动升级到9.2.0.8,命令提示符提示安装完成后,说明组件已经安装上。
(3)、以sysdba身份登录数据库后,确保init.ora中的参数SHARED_POOL_SIZE 和JAVA_POOL_SIZE 为150m。方法是查看现有
两个参数值的大小
SQL>SHOW PARAMETER SHARED_POOL_SIZE
SQL>SHOW PARAMETER JAVA_POOL_SIZE
如果大小不是150m,进行设置:
SQL> Alter SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;
SQL> Alter SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE= ......