SQL>CREATE GLOBAL TEMPORARY TABLE hr.employees_temp AS SELECT * FROM hr.employees;
修改表的存贮参数
SQL>ALTER TABLE hr.employees PCTFREE 30 PCTUSED 50 STORAGE(NEXT
500K MINEXTENTS 2 MAXEXTENTS 100);
手动分配允许的extent
SQL>ALTER TABLE hr.employees ALLOCATE EXTENT(SIZE 500K DATAFILE '/DISK3/DATA01.DBF';
不分割表进行重组(Nonpartitioned Table Reorganization)
SQL>ALTER TABLE hr.employees MOVE TABLESPACE data1;
(上个礼拜五做这个重新分割移动表的时候,出现了错误,由于先前的错误导致了半灾难性的后果,所以对于目前来说整体的复习也是比较重要的。
例如这个语句,上次就可以写成SQL>ALTER TABLE A MOVE TABLESPACE atu;)
删除表(Truncating a Table)
SQL>TRUNCATE TABLE hr.employees;
这个删除表的意思是删除表的所有行并不是所有表,包括所有索引,具体的语句可以在sql三合一中找到
删除表(Dropping a Table)
SQL>DROP TABLE hr.department CASCADE CONSTRAINTS;
这个语句才是删除表,包括所有定义的语句。
删除列(Dropping a Column)
SQL>ALTER TABLE hr.employees DROP COLUMN comments CASCADE CONSTRAINTS CHECKPOINT 1000;
使用UNUSED选项将comments设为unused,因为comments有constraints
SQL>ALTER TABLE hr.employees SET UNUSED COLUMN comments CASCADE CONSTRAINTS;
删除unused列
SQL>ALTER TABLE hr.employees DROP UNUSED COLUMNS CHECKPOINT 1000;
继续删除unused列
SQL>ALTER TABLE hr.employees DROP COLUMNS CONTINUE CHECKPOINT 1000;
具体的信息查找可以在dba_tables和dba_objects中找到。
管理索引(index)索引分类逻辑(单个列或者连锁列,唯一或非唯一,基于函数,基于域)物理(分割或未分割,B数列,位图)
建立B树形的INDEX
SQL>CREATE INDEX hr.employees_last_name_idx ON hr.employees(last_name)PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;
建立bitmap型index
SQL>CREATE BITMAP INDEX orders_region_id_idx ON orders(region_id)PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;
改变index的存贮函数
SQL>ALTER INDEX employees_last_name_idx STORAGE(NEXT 400K MAXEXTENTS 100);
允许使用index space
SQL>ALTER INDEX orders_region_id_idx ALLOCATE EXTENT (SIZE 200KDATAFILE '/DISK6/indx01.dbf');
不允许使用index space
SQL>ALTER INDEX orders_id_idx DEALLOCATE UNUSED;
重建索引(rebuilding index)使用alter index,将一个index引到另外个不同的表空间,提高空间利用,改变在B树形INDEX的坏的index.使用下列语句:
SQL>ALTER INDEX orders_region_id_idx REBUILD TABLESPACE indx02;
在线rebuilding index
SQL>ATLER INDEX orders_region_id_idx REBUILD ONLINE;
联合index(coalsecing index)
SQL>ALTER INDEX orders_region_id_idx COALESCE;
检查index的有效性(check index validity)
SQL>ANALYZE INDEX orders_region_id_idx VALIDATE STRUCTURE;
删除index
SQL>DROP INDEX hr.deptartments_name_idx;
检验unused索引(identifying Unused Indexes)开始监视usage of an index
SQL>ALTER INDEX summit.orders_id_idx MONITORING USAGE
停止监视
SQL>ALTER INDEX summit.orders_id_idx NOMONITORING USAGE
关于INDEX的几个表DBA_INDEXES,DBA_IND_COLUMNS,DBA_IND_EXPRESSIONS,V$OBJECT_USAGE
作为一个DBA,需要保证数据的正确性(Maintaining Data Integrity),所以来学习下面的课:
首先是数据完整约束(constraint):包括有not null,unique,primary key,foreign key,check立刻或者延期定义约束:使用set constraints命令进行deferred或者immediate,其他的话用ALTER SESSION命令来set constraints
建表时可以直接定义约束:
SQL>CREATE TABLE hr.employee( id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX STORAGE(INITIAL 100K NEXT 100K)TABLESPACE indx, last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL, dept_id
NUMBER(7))TABLESPACE users;
开启约束Enable Novalidate:No locks on table,Primary and unique keys must use nonunique indexes
SQL>ALTER TABLE hr.departments ENABLE NOVALIDATE CONSTRAINT dept_pk;
Enable Validate:Locks table,Can use unique or nonunique indexes,Needs valid table data
SQL>ALTER TABLE hr.employees ENABLE VALIDATE CONSTRAINT emp_dept_fk;
使用特别的exceptions TABLE 貌似没啥用。
涉及到约束的两张表DBA_CONSTRAINTS DBA_CONS_CONLUMNS
管理密码安全和资源
ProfilesProfile是密码和资源限制,Profile用create user或者alter user,可以被开启和关闭,可以和默认相关联
开启Password管理锁定PASSWORD帐户参数:
Failed_login_attempts 登录失败次数
Password_lock_time:登录失败后锁定的天数
password_life_time:密码的有效天数
password_grace_time:从第一登录到修改密码的时间
password_reuse_time:密码能被重新使用的天使
password_reuse_max:Maximum number of times a password can be
reusedPASSWORD_VERIFY_FUNCTION:需要用到VERIFY_FUNCTION
建立一个PROFILE
SQL>CREATE PROFILE grace_5 LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 30 PASSWORD_VERIFY_FUNCTION
verify_function PASSWORD_GRACE_TIME 5;
修改PROFILE
SQL>ALTER PROFILE default FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10;
删除PROFILEDROP PROFILE developer_prof CASCADE;
资源管理:可以控制等级,限制可在create profile的时候定义,开启定义用resource_limit,使用alter system命令开启资源管理
SQL>ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
所拥有的RESOURCECPU_PER_SESSION,SESSIONS_PER_USER,CONNECT_TIME,IDLE_TIME,
LOGICAL_READS_PER_SESSION,PRIVATE_SGA,CPU_PER_CALL,LOGICAL_READS_PER_CALL
LIMIT的例子
SQL>CREATE PROFILE developer_prof LIMIT SESSIONS_PER_USER 2CPU_PER_SESSION 10000 IDLE_TIME 60 CONNECT_TIME 480;
所对应的表DBA_USERS DBA_PROFILES
评论