一個表空間只能屬于一個數(shù)據(jù)庫
每個數(shù)據(jù)庫最少有一個控制文件(建議3個,分別放在不同的磁盤上)
每個數(shù)據(jù)庫最少有一個表空間(SYSTEM表空間)
建立SYSTEM表空間的目的是盡量將目的相同的表存放在一起,,以提高使用效率,,只應(yīng)存放數(shù)據(jù)字典
每個數(shù)據(jù)庫最少有兩個聯(lián)機(jī)日志組,每組最少一個聯(lián)機(jī)日志文件
一個數(shù)據(jù)文件只能屬于一個表空間
一個數(shù)據(jù)文件一旦被加入到一個表空間中,,就不能再從這個表空間中移走,,也不能再加入到其他表空間中
建立新的表空間需要建立新的數(shù)據(jù)文件
數(shù)據(jù)文件被ORACLE格式化為ORACLE塊,Oracle9i以前版本中,,ORACLE塊的大小是在第一次創(chuàng)建數(shù)據(jù)庫時設(shè)定的,,并且以后不能改變,要想改變,,只能重建數(shù)據(jù)庫
一個段segment只能屬于一個表空間,,但可以屬于多個數(shù)據(jù)文件
一個區(qū)extent只能屬于一個數(shù)據(jù)文件,即區(qū)間(extent)不能跨越數(shù)據(jù)文件
PCTFREE和PCTUSED總和不能大于等于100
單獨(dú)一個事務(wù)不能跨越多個回滾段
索引表不含ROWID值
擁有不同大小的回滾段沒有任何益處
COMMIT后,,數(shù)據(jù)不一定立即寫盤(數(shù)據(jù)文件)
一個事務(wù)即使不被提交,,也會被寫入到重做日志中。
Oracle 8.0.4中,,在初始安裝時建立的缺省數(shù)據(jù)庫,,實(shí)例名為ORCL
一個塊的最大長度為16KB(有2K,、4K、8K,、16K)
每個數(shù)據(jù)庫最大文件數(shù)(按塊大?。?br>2K塊20000個文件
4K塊40000個文件
8K塊或以上 65536個文件
oracle server可以同時啟動多個數(shù)據(jù)庫
一套操作系統(tǒng)上可以安裝多個版本的ORACLE數(shù)據(jù)庫系統(tǒng)(UNIX可以,NT不可以)
一套ORACLE數(shù)據(jù)庫系統(tǒng)中可以有多個ORACLE數(shù)據(jù)庫及其相對應(yīng)的實(shí)例
每個ORACLE數(shù)據(jù)庫擁有一個數(shù)據(jù)庫實(shí)例(INSTANCE)(OPS除外)所以,,一套操作系統(tǒng)上同時可以有多個oracle數(shù)據(jù)庫實(shí)例啟動
//Oracle8 數(shù)據(jù)類型
char(n) n=1 to 2000字節(jié) 定長字符串,,n字節(jié)長,如果不指定長度,,缺省為1個字節(jié)長(一個漢字為2字節(jié))
varchar2(n) n=1 to 4000字節(jié) 可變長的字符串,,具體定義時指明最大長度n,
這種數(shù)據(jù)類型可以放數(shù)字,、字母以及ASCII碼字符集(或者EBCDIC等數(shù)據(jù)庫系統(tǒng)接受的字符集標(biāo)準(zhǔn))中的所有符號,。
如果數(shù)據(jù)長度沒有達(dá)到最大值n,Oracle 8i會根據(jù)數(shù)據(jù)大小自動調(diào)節(jié)字段長度,,
如果你的數(shù)據(jù)前后有空格,,Oracle 8i會自動將其刪去。VARCHAR2是最常用的數(shù)據(jù)類型,。
可做索引的最大長度3209,。
number(m,n) m=1 to 38
n=-84 to 127 可變長的數(shù)值列,允許0,、正值及負(fù)值,,m是所有有效數(shù)字的位數(shù),n是小數(shù)點(diǎn)以后的位數(shù),。
如:number(5,2),,則這個字段的最大值是99,999,如果數(shù)值超出了位數(shù)限制就會被截取多余的位數(shù),。
如:number(5,2),,但在一行數(shù)據(jù)中的這個字段輸入575.316,則真正保存到字段中的數(shù)值是575.32,。
如:number(3,0),,輸入575.316,真正保存的數(shù)據(jù)是575,。
date 無 從公元前4712年1月1日到公元4712年12月31日的所有合法日期,,
Oracle 8i其實(shí)在內(nèi)部是按7個字節(jié)來保存日期數(shù)據(jù),在定義中還包括小時,、分、秒,。
缺省格式為DD-MON-YY,,如07-11月-00 表示2000年11月7日,。
long 無 可變長字符列,最大長度限制是2GB,,用于不需要作字符串搜索的長串?dāng)?shù)據(jù),,如果要進(jìn)行字符搜索就要用varchar2類型。
long是一種較老的數(shù)據(jù)類型,,將來會逐漸被BLOB,、CLOB、NCLOB等大的對象數(shù)據(jù)類型所取代,。
raw(n) n=1 to 2000 可變長二進(jìn)制數(shù)據(jù),,在具體定義字段的時候必須指明最大長度n,Oracle 8i用這種格式來保存較小的圖形文件或帶格式的文本文件,,如Miceosoft Word文檔,。
raw是一種較老的數(shù)據(jù)類型,將來會逐漸被BLOB,、CLOB,、NCLOB等大的對象數(shù)據(jù)類型所取代。
long raw 無 可變長二進(jìn)制數(shù)據(jù),,最大長度是2GB,。Oracle 8i用這種格式來保存較大的圖形文件或帶格式的文本文件,如Miceosoft Word文檔,,以及音頻,、視頻等非文本文件。
在同一張表中不能同時有l(wèi)ong類型和long raw類型,,long raw也是一種較老的數(shù)據(jù)類型,,將來會逐漸被BLOB、CLOB,、NCLOB等大的對象數(shù)據(jù)類型所取代,。
blob
clob
nclob 無 三種大型對象(LOB),用來保存較大的圖形文件或帶格式的文本文件,,如Miceosoft Word文檔,,以及音頻、視頻等非文本文件,,最大長度是4GB,。
LOB有幾種類型,取決于你使用的字節(jié)的類型,,Oracle 8i實(shí)實(shí)在在地將這些數(shù)據(jù)存儲在數(shù)據(jù)庫內(nèi)部保存,。
可以執(zhí)行讀取、存儲,、寫入等特殊操作,。
bfile 無 在數(shù)據(jù)庫外部保存的大型二進(jìn)制對象文件,,最大長度是4GB。
這種外部的LOB類型,,通過數(shù)據(jù)庫記錄變化情況,,但是數(shù)據(jù)的具體保存是在數(shù)據(jù)庫外部進(jìn)行的。
Oracle 8i可以讀取,、查詢BFILE,,但是不能寫入。
大小由操作系統(tǒng)決定,。
SQL(Structured Query Language)語句分類
DDL,、數(shù)據(jù)定義語言:create、alter,、drop,、truncate(創(chuàng)建、修改結(jié)構(gòu),、刪除,、截?cái)啵ㄆ渌簉ename)
DML、數(shù)據(jù)操縱語言:insert,、delete,、select、update(增,、刪,、查、改)
DCL,、數(shù)據(jù)控制語言:grant,、revoke(授權(quán)、回收),、set role
事務(wù)控制:commit,、rollback、savepoint(其他:lock table,、set constraint(s),、set transaction)
審計(jì)控制:audit、noaudit
系統(tǒng)控制:alter system
會話控制:alter session
其他語句:comment(添加注釋),、explain plan,、analyze(收集統(tǒng)計(jì))、validate,、call
//SQL*Plus中運(yùn)行的幾種命令
1. SQL*Plus命令 一般用來格式化查詢輸出,、設(shè)置環(huán)境、編輯存儲SQL命令和PL/SQL塊
SQL> show user
SQL> select user from dual;
2. SQL命令
SQL> select * from tab;
3. PL/SQL塊
SQL> BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World!');
END;
//Oracle中實(shí)現(xiàn)某一字段自動增加1
create sequence 序列名
increment by 1
start with 1
maxvalue 999999999
cycle;
當(dāng)向表中插入數(shù)據(jù)時,SQL語句寫法如下:
SQL> insert into 表名 values(序列名.nextval,列1值,列2值);
//如何用SQL生成SQL批處理文件,?
軟件環(huán)境:
1,、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安裝路徑為:C:\ORANT
問題提出:
1,、用戶需要對數(shù)據(jù)庫用戶下的每一張表都執(zhí)行一個相同的SQL操作,這時,,一遍,、一遍的鍵入SQL語句是很麻煩的
實(shí)現(xiàn)方法:
SQL> set heading off --禁止輸出列標(biāo)題
SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息
列出當(dāng)前用戶下所有同義詞的定義,可用來測試同義詞的真實(shí)存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查詢當(dāng)前用戶下所有表的記錄數(shù)
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合條件的表的select權(quán)限授予為public
select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
刪除用戶下各種對象
select 'drop '||tabtype||' '||tname from tab;
刪除符合條件用戶
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速編譯所有視圖
----當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建),,需要將視圖重新編譯一遍,,
----因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會出現(xiàn)問題,可以利用PL/SQL的語言特性,,快速編譯,。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然后執(zhí)行ON.SQL即可。
SQL> @ON.SQL
當(dāng)然,,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB (完)