天天看點

Oracle基本知識

一個表空間隻能屬于一個資料庫

每個資料庫起碼有一個節制檔案(首倡3個,分袂放在差異的磁盤上)

每個資料庫起碼有一個表空間(system表空間)

設立建設system表空間的目标是盡管将目标相反的表寄存在一起,以提高應用服從,隻應寄存資料字典

每個資料庫起碼有兩個聯機日記組,每組起碼一個聯機日記檔案

一個資料檔案隻能屬于一個表空間

一個資料檔案一旦被參加到一個表空間中,就不克不及再從這個表空間中移走,也不克不及再參加到其他表空間中

設立建設新的表空間需求設立建設新的資料檔案

資料檔案被oracle花式化為oracle塊,oracle9i過去版本中,oracle塊的巨細是在第一次設立建設資料庫時設定的,而且目前不克不及改動,要想改動,隻能重建資料庫

一個段segment隻能屬于一個表空間,但可以屬于多個資料檔案

一個區extent隻能屬于一個資料檔案,即區間(extent)不克不及淩駕資料檔案

pctfree和pctused總和不克不及大于即是100

零丁一個事件不克不及淩駕多個復原段

索引表不含rowid值

擁有差異巨細的復原段沒有任何益處

commit後,資料不消定趕忙寫盤(資料檔案)

一個事件縱然不被送出,也會被寫入到重做日記中。

oracle 8.0.4中,在初始安裝時設立建設的預設資料庫,執行個體名為orcl

一個塊的最大長度為16kb(有2k、4k、8k、16k)

每個資料庫最大檔案數(按塊巨細)

2k塊20000個檔案

4k塊40000個檔案

8k塊或以上 65536個檔案

oracle server可以同時啟動多個資料庫

一套操縱瑣屑上可以安裝多個版本的oracle資料庫瑣屑(unix可以,nt不可以)

一套oracle資料庫瑣屑中可以有多個oracle資料庫及其絕對應的執行個體

每個oracle資料庫擁有一個資料庫執行個體(instance)(ops除外)以是,一套操縱瑣屑上同時可以有多個oracle資料庫執行個體啟動 

//oracle8 資料規範

char(n) n=1 to 2000位元組 定長字元串,n位元組長,若是不指定長度,預設為1個位元組長(一個漢字為2位元組)

varchar2(n) n=1 to 4000位元組 可變長的字元串,詳細定義時指明最大長度n,

這種資料規範可以放數字、字母以及ascii碼字元集(也許ebcdic等資料庫瑣屑經受的字元集尺度)中的統統标記。

若是資料長度沒有抵達最大值n,oracle 8i會依據資料巨細主動調理字段長度,

若是你的資料前後有空格,oracle 8i會主動将其删去。varchar2是最常用的資料規範。

可做索引的最大長度3209。

number(m,n) m=1 to 38

n=-84 to 127 可變長的數值列,允許0、正值及負值,m是統統無效數字的位數,n是小數點目前的位數。

如:number(5,2),則這個字段的最大值是99,999,若是數值淩駕了位數限定就會被截取多餘的位數。

如:number(5,2),但在一行資料中的這個字段輸出575.316,則真正保留到字段中的數值是575.32。

如:number(3,0),輸出575.316,真正保留的資料是575。  

date 無 從公元前4712年1月1日到公元4712年12月31日的一吻公道日期,

oracle 8i真實在外部是按7個位元組來保留日期資料,在定義中還網羅小時、分、秒。

預設花式為dd-mon-yy,如07-11月-00 暗示2000年11月7日。  

long 無 可變長字元列,最大長度限定是2gb,用于不需求作字元串搜尋的長串資料,若是要停止字元搜尋就要用varchar2規範。

long是一種較老的資料規範,将來會逐漸被blob、clob、nclob等大的對象資料規範所交換。  

raw(n) n=1 to 2000 可變長二進制資料,在詳細定義字段的時辰必需指明最大長度n,oracle 8i用這種花式來保留較小的圖形檔案或帶花式的文本檔案,如miceosoft word文檔。

raw是一種較老的資料規範,将來會逐漸被blob、clob、nclob等大的對象資料規範所交換。  

long raw 無 可變長二進制資料,最大長度是2gb。oracle 8i用這種花式來保留較大的圖形檔案或帶花式的文本檔案,如miceosoft word文檔,以及音頻、視訊等非文本檔案。

在統一張表中不克不及同時有long規範和long raw規範,long raw也是一種較老的資料規範,将來會逐漸被blob、clob、nclob等大的對象資料規範所交換。  

blob

clob

nclob 無 三種大型對象(lob),用來保留較大的圖形檔案或帶花式的文本檔案,如miceosoft word文檔,以及音頻、視訊等非文本檔案,最大長度是4gb。

lob有幾品種型,取決于你應用的位元組的規範,oracle 8i實真實在地将這些資料存儲在資料庫外部保留。

可以實驗讀取、存儲、寫入等出格操縱。  

bfile 無 在資料庫外部保留的大型二進制對象檔案,最大長度是4gb。

這種外部的lob規範,經由資料庫紀錄變革情況,然則資料的詳細保留是在資料庫外部停止的。

oracle 8i可以讀取、究诘bfile,然則不克不及寫入。

巨細由操縱瑣屑選擇。  

sql(structured query language)語句分類

ddl、資料定義言語:create、alter、drop、truncate(設立建設、批改結構、删除、截斷)(其他:rename)

dml、資料操縱言語:insert、delete、select、update(增、删、查、改)

dcl、資料節制言語:grant、revoke(受權、給與)、set role

事件節制:commit、rollback、savepoint(其他:lock table、set constraint(s)、set transaction)

審計節制:audit、noaudit

瑣屑節制:alter system

會話節制:alter session

其他語句:comment(添加注釋)、explain plan、analyze(網絡統計)、validate、call

//sql*plus中運轉的幾種号令

1. sql*plus号令          普通用來花式化究诘輸出、設定情況、編輯存儲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中完成某一字段主動增進1

create sequence 序列名

increment by 1

start with 1

maxvalue 999999999

cycle;

當向表中拔出資料時,sql語句寫法如下:

sql> insert into 表名 values(序列名.nextval,列1值,列2值);

//怎樣用sql生成sql批處置檔案?軟體情況:

1、windows nt4.0 oracle 8.0.4

2、oracle安裝途徑為:c:orant

标題問題提出:

1、使用者需求對資料庫使用者下的每一張表都實驗一個相反的sql操縱,這時,一遍、一遍的鍵入sql語句是很費事的

完成方法:

sql> set heading off --克制輸出列标題問題

sql> set feedback off --克制顯現最月朔行的計數反應資訊

列出目前使用者下統統同義詞的定義,可用來測試同義詞的真實存在性

select 'desc '||tname from tab where tabtype='synonym';

究诘目前使用者下統統表的紀錄數

select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='table';

把統統相宜前提的表的select權限賦予為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;

疾速編譯統統視圖

----當在把資料庫倒入到新的伺服器上後(資料庫重建),需求将視圖重新編譯一遍,

----由于該表空間視圖到另外表空間的表的銜接會出現标題問題,可以利用pl/sql的言語特性,疾速編譯。

sql> spool on.sql

sql> select'alter view '||tname||' compile;' from tab;

sql> spool off

然後實驗on.sql即可。

sql> @on.sql

固然,受權和設立建設同義詞也可以疾速停止,如:

sql> select 'grant select on '||tname||' to 使用者名;' from tab;

sql> select 'create synonym '||tname||' for 使用者名.'||tname||';' from tab

版權聲明:

原創作品,允許轉載,轉載時請務必以超連結方法标明文章 原始情由 、作者資訊和本聲明。否則将追查功令責任。