跳至主要内容

Oracle学习笔记20071225

建立临时表从公共表中建立临时表
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_tablesdba_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

评论

此博客中的热门博文

Python学习笔记20100117

映射list   Dictionary 是用{}. list 是一那个[]. turple是用() 当你定义过dictionary后,你可以使用d.keys(), d.values(),d.items()将定义后的时候分别显示出来 当然可以将list里的值加减乘除,也可以如一般的定义直接重新复制这个list. 链接与分割字符串的 li=";", join(li) 则显示的就是 分隔符为;的数 如果使用li=li.split(";")则将刚刚;的分隔符删除,而split里也可定义域,如li.split(";",1)   自省 <---这是啥 之前在使用的时候发觉有些书本上的模块不能调用,很多是py脚本定义过的函数。 下载该脚本s,然后上传至指定位置。 >>>import sys >>>sys.path >>>sys.path.append("绝对位置")然后就能调用这些脚本和参数了。 删除 >>>sys.path.pop() 定义一个参数是 def info(test, test1=10.test2=12): info是函数名,test是必备参数,因为没有定义值,test1和test2是可选参数,定义了初始值   以上是外部函数的调用,下面转到内部函数 内部函数有type,str,dir及其他   ---type 返回任意字符的类型,模块也可以。types模块 >>> type(1) <type 'int'> >>> li=[] >>> type(li) <type 'list'> >>> import odbchelper >>> type(odbchelper) <type 'module'> >>> type(sys) <type 'module'> >>> import types ...

Python学习笔记20100128

methodList = [method for method in dir(object) if callable(getattr(object, method))] ###插一句, ifconfig pcn0 unplumb 去禁solaris的网卡plumb起网卡   and, or  已经and-or一起用。 and 两者为真,print第二个数,一个为假一个为真返回假,三者为真返回最后一个真。 or 两个为真,返回第一个, 一个为假一个为真返回真,三者为假返回最后一个假   lambda可快速定义最小值函数   g = lambda x:x*2 g(3) 6 (lambda x:x*2)(3)   doc string print getattr(object,mothod).__doc__   ljust ljust 用空格填充字符串以符合指定的长度。info 函数使用它生成了两列输出并将所有在第二列的 doc string 纵向对齐。 如果小于的话不会从中截断   -----面向对象 首先导入,你可以选择import module or from module import module 如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import。 如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import。 如果模块包含的属性和方法与你的某个模块同名,你必须使用 import module 来避免名字冲突   -----类的定义 class Lofs    pass   这个类的名字是 Loaf,它没有从其它类继承。 类名通常是第一个字母大写,如:EachWordLikeThis,但这只是一个习惯,不是一个必要条件。   这个类没有定义任何方法或属性,但是从语法上,需要在定义中有些东西,所以你使用 pass。这是一个 Python 保留字,仅仅表示 “向前走,不要往这看”。它是一条什么都不做的语句,当你删空函数或类时,它是一个很好的占位符。   你可能猜...

Back to Blog again

     My last blog was almost 6 years again.  lots of things happening those years. like marriage, and move to another country, simply relocation, something is very big in my life.      Back to now,  I guess it is a very good time to start with the blog again. no matter daily life or the tech parts.      These blog may or will contains various languages, Chinese, English or Few Japanese. The first thing, I change the profile to Kamata life, Kamata is Japanese words. "鎌田"  as Kanji. why this change happened, due to we will move from Tamagawa "玉川" to Kamata very soon. I hope I can start to write this not daily, but I hope I can do this continuously.