日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 基础1

發(fā)布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 基础1 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目??? 錄

?

一. 數(shù)據(jù)庫基礎(chǔ)部分??

第一章?????? oracle基礎(chǔ)介紹????????????????????????????

第二章? 數(shù)據(jù)查詢語言(QL)???????????????????????????

?? 第三章? 數(shù)據(jù)定義語言(DDL)??????????????????????????

?? 第四章? Oracle數(shù)據(jù)分區(qū)表??????????????????????????

?? 第五章? PL/SQL程序設(shè)計(Procedual Language)????????

?? 第六章? Oracle權(quán)限設(shè)置????????????????????????????

?? 第七章? 存儲過程與函數(shù)??????????????????????????????

?? 第八章? 動態(tài)SQL??????????????????????????????

?

二、體系結(jié)構(gòu)/數(shù)據(jù)庫管理

?? 第一章? Oracle9i 體系結(jié)構(gòu)與物理結(jié)構(gòu)管理?????????????

?? 第二章? Oracle9i邏輯結(jié)構(gòu)管理???????????????????????

?? 第三章? Oracle9i 內(nèi)存結(jié)構(gòu)管理????????????????????

?? 第四章? Oralce9i實(shí)例及進(jìn)程結(jié)構(gòu)???????????????????

?? 第五章? Oracle9i表空間管理????????????????? ???????

?? 第六章? Oralce9i數(shù)據(jù)庫用戶管理?????????????????????

?? 第七章? Oracle9i數(shù)據(jù)庫備份與恢復(fù)???????????????????

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

第一部分?? 數(shù)據(jù)庫基礎(chǔ)部分????????????????? 回目錄

?

第一章??????????????????? oracle基礎(chǔ)介紹

?

??? 1、Oracle9i數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)與產(chǎn)品組成

???????????????? 67% Oralce

??????????????? /

?????? Internet

??????????????? \

????????????? ???????? 9% sql server

?

?????? 中大型網(wǎng)站: Unix + Oracle + jsp

?????? 小型網(wǎng)站:?? NT + sql server + asp

?????????????? ?50% Oralce

?????? ???? ??????/

?? ????DBMS --? 17% DB2(針對IBM機(jī)器)

?????? ???? ??????\

?????? ?????? ?????5% sql server

?

???? ORALCE應(yīng)用系統(tǒng)開發(fā)工具:

?

????????????????????? form -> *.form

???????????????????? /

?????? ??? Develop200 --? report -> *.rdf

?????? ???????????????? \

?????? ?? ? ??????????????graphics -> *.ogd

????????????? oralce application server

?

?????? 用戶數(shù): 不會影響并發(fā)數(shù),沒有限制 ,只有企業(yè)版才有用戶數(shù)概念。

?????? 會話數(shù):

?????? 進(jìn)程數(shù): 操作系統(tǒng)的進(jìn)程數(shù)應(yīng)該是Oracle進(jìn)程數(shù)的兩倍

?

?

????? 登陸sql*plus

????? 用戶:/as sysdba

????? 查詢數(shù)據(jù)庫選件產(chǎn)品:

????? sql > select * from v$option;

????? sql > set linesize 1000? --設(shè)置行寬

????? sql > set pagesize 100?? --設(shè)置頁寬

????? sql > Clear scr????????? --清屏

????? sql > /????????????????? --重復(fù)執(zhí)行sql

?

sql > show parameter processes 進(jìn)程數(shù)

?

????? 1)關(guān)于Oracle9i數(shù)據(jù)庫的數(shù)據(jù)庫管理員用戶

??????? Sys: 在Oracle9i 9.0.1之前的數(shù)據(jù)庫中,默認(rèn)口令字為:change_on_install; 在9.2.0中無默認(rèn)口令字

?????? ??? System: 在Oracle9i 9.0.1之前的數(shù)據(jù)庫中,默認(rèn)口令字為manager;在9.2.0中無默認(rèn)口令字

?

?????? 安裝結(jié)束后,可以更改:

?????? SQL>grant connect to system identified by "1234";

?????? SQL>password --需要原口令

?

?????? Sys用戶登陸數(shù)據(jù)庫方法:

?????? $sqlplus "/as sysdba"??????? --sys用戶無口令字要求(缺省)

?????? $sqlplus "sys/xx@cc as sysdba"? --sys用戶有口令要求

???????

??????

?????? ???????????????????? 操作系統(tǒng)認(rèn)證 (進(jìn)入oracle不許要口令字)只限于本地(8i/9i/10g)

?????? ??????????????? ????/

?????? sys用戶口令認(rèn)證方式:

????????????? ???????? ???????\

????????????? ???????????????? oracle認(rèn)證 (7i/8)

?

??????? unix: oinstall (oracle8i/9i)

?????? ??? dba

???????

?????? 修改sys用戶口令字的方法:

?????? A 修改認(rèn)證方法。

?????? ? D:\oracle\ora92\network\admin\sqlnet.ora

?????? ? SQLNET.AUTHENTICATION_SERVICES= (NTS)

?????? ? unix 中要加上這一行。

?????? ? NTS? - 操作系統(tǒng)認(rèn)證

?????? ? NONE? - ORACLE 認(rèn)證

?

?????? B 修改口令字

?????? ? c:\>orapwd file=d:\oracle\oracle\roa92\database\pwdSID.ora password=abcd entries=30?? --Windows

?

?????? ? $orapwd file=/u01/app/oracle/product/9.2.0/dbs orapwSID password=abcd entries=30????? --Unix

?

?????? C 重新啟動oracle服務(wù)(Windows)

?????? ? 重新啟動數(shù)據(jù)庫(Unix)

?

?????? ? tkprof:跟蹤文件整理命令,將跟蹤文件轉(zhuǎn)換為文本文件

?????? ? 語法:

?????? ?? D:\>tkprof 跟蹤文件 文本文件

?????? ?? 跟蹤文件存貯目錄:

?????? ?? D:\>oracle\admin\db_name\udump\*.trc? (trace)

?????? ?? 跟蹤文件需要定期清理。(bdump 和 udump 目錄)

?

?????? ?? 跟蹤每一條命令:

?????????? sql>alter session set sql_trace=true;|false 立刻生效,當(dāng)前session生效。

?????? ?????? sql>exec dbms_session.set_sql_trace(true);|false?? 以包的形式執(zhí)行。

??????????

?????? ?????? sql>alter system set sql_trace=true scope=spfile; 永久修改,重起生效。

?

????? 2)分布式數(shù)據(jù)庫 (必須是企業(yè)版)

?????? ???? 分布式數(shù)據(jù)庫的組成:

?????? ?????? 全局?jǐn)?shù)據(jù)庫管理系統(tǒng):GDBMS

?????? ?????? 局部數(shù)據(jù)庫管理系統(tǒng):LDBMS

?????? ?????? 通訊驅(qū)動程序:CM

?????? ?????? 全局?jǐn)?shù)據(jù)庫字典:DICITIONARY

?

?????? ????? SQL*NET 網(wǎng)絡(luò)驅(qū)動程序

?????? ????? sql*net v1.0??????????????? oracle 7.3.4

?????? ????? sql*net v2.0??????????????? oracle 7.3

?????? ????? net8??????????????????????? oracle 8??? \

?????? ????? net8i?????????????????????? oracle 8i?? - connect pool

?????? ????? oracle net services???????? oracle 9i?? / 斷掉后自動重新連接

?

?????? ?Oracle 運(yùn)行的過程

?????? ?http://www.oracle.com

?????? ?http://www.oracle.com:234/cgi-hie/gun.go/

?????? ????????????????????????? /虛擬路徑/包名.過程/???????????????????????????

?????

????? 3)Oracle的網(wǎng)絡(luò)配置

?

?????????????????????? 協(xié)議

?????????????????? ??/

???????? 主機(jī)字符串 --? IP地址或服務(wù)器

?????? ????????? ???????\

?????? ????????????????? \??? 數(shù)據(jù)庫實(shí)例名(oracle7/8)

??????????????????? ????- /

????????????????? ???????\

????????????? ?????????????????? 數(shù)據(jù)庫服務(wù)名(oracle8i/9i/10g)

?

???????? 8i以上盡可能用數(shù)據(jù)庫服務(wù)名。

????????

???????? 數(shù)據(jù)庫標(biāo)準(zhǔn)參數(shù)

?????? ??? 數(shù)據(jù)庫名:db_name

?????? ??? 數(shù)據(jù)庫實(shí)例名:instance_name

?????? ??? 數(shù)據(jù)庫域名:db_domain? 區(qū)分同名數(shù)據(jù)庫

?????? ??? 數(shù)據(jù)庫服務(wù)名:service_names

?????? ??? 全局?jǐn)?shù)據(jù)庫名:global_db_name? 查詢遠(yuǎn)程表,用在鏈路上

?

?????? ??? ORACLE_SID?? --操作系統(tǒng)環(huán)境變量。

?

??????????? 實(shí)例名和數(shù)據(jù)庫名是一一對應(yīng)關(guān)系(大部分情況;雙機(jī)熱備系統(tǒng)是一對二關(guān)系,共享磁盤陣列)

??????????? 兩個同名數(shù)據(jù)庫不能遠(yuǎn)程傳數(shù)據(jù)。

?????? ??????? 數(shù)據(jù)庫名相同時,可以加上域名,來區(qū)分?jǐn)?shù)據(jù)庫。

??????????? 當(dāng)數(shù)據(jù)庫名加上域名不相同時,可以進(jìn)行遠(yuǎn)程數(shù)據(jù)傳輸。

?

?????? ??? cats.hn.gov.cn

?????? ??? ----? --------

????????? |?????? |

?????? ????? |?????? |-------db_domain

?????? ????? |

?????? ????? |------db_name

?

?????? ?題目:

?????? ?一個數(shù)據(jù)庫全局?jǐn)?shù)據(jù)庫名是:prod.us.oracle.com

?????? ? 問:該數(shù)據(jù)庫名:prod

?????? ???? 域名:無

?????? ???? 服務(wù)名:prod

????

???????????? 數(shù)據(jù)字典

?????? ???? 查詢數(shù)據(jù)庫名:? ????

?????? ???? sql>select name from v$database;

?????? ???? sql>show parameter db_name

?

?????? ???? 查詢數(shù)據(jù)庫實(shí)例名:

?????? ???? sql>select instance_name from v$instance;

?????? ???? sql>show parameter instance_name

?

?????? ???? 查詢數(shù)據(jù)庫域名:

?????? ???? sql>select value from v$parameter where name='db_domain';

?????? ???? sql>show parameter db_domain

?

?????? ???? 查詢數(shù)據(jù)庫服務(wù)名:

?????? ???? sql>select value from v$parameter where name='service_anmes';

?????? ???? sql>show parameter service_names

?

?????? ???? 查詢?nèi)謹(jǐn)?shù)據(jù)庫名:

?????? ???? sql>select * from global_name;

?

?????? ???? v打頭的是動態(tài)數(shù)據(jù)字典

?

?????? ? Unix 下網(wǎng)絡(luò)配置工具

?????? ? $netlasst(Orale8i)

?????? ? $netca(Oracle9i/10g)

??????????

?

?????? ?? 以sys用戶連接遠(yuǎn)程數(shù)據(jù)庫:

?????? ?? $sqlplus "sys/xx@unix01 as sysdba"

?

?????? ? 啟動Net configuration Assistant

?????? ???? 選擇版本,遠(yuǎn)端服務(wù)名,ip地址,重新設(shè)置連接名(在原名后加01等),重新登陸sql*plus. 使用用戶名遠(yuǎn)程登陸。

?????? ???? 從sql*plus 進(jìn)入命令行:host

?

?

????????? 手工配置:

?????? ???? Oracle網(wǎng)絡(luò)連接解析文件:tnsnames.ora

?????? ???? D:\oracle\ora92\network\admin\tnsnames.ora??? ?????????????-windows

?????? ???? /u01/app/oracle/product/9.2.0/network/admin/tnsnames.ora?? -unix

?

?????? ???? Oracle檢聽進(jìn)程配置文件:listener.ora

?????? ???? D:\oracle\ora92\network\admin\listener.ora???????????????? -windows

?????? ???? /u01/app/oracle/product/9.2.0/network/admin/listener.ora?? -unix

?

?????? ???? $lsnrctl start??? -啟動監(jiān)聽進(jìn)程

?????? ???? $lsnrctl status?? -顯示監(jiān)聽進(jìn)程狀態(tài)

?????? ???? $lsnrctl stop???? -停止監(jiān)聽進(jìn)程

?

???????????? 查詢當(dāng)前在先用戶

?????? ???? sql>select username,sid,serial#,machine from v$session;

?????? ???? 刪除用戶會話:

?????? ???? sql>alter system kill session 'sid,serial#';

?????? ???? 查詢用戶所使用的sql:

?????? ???? sql>select user_name,sql_text from v$open_cursor;

?

?????? ???? 查詢sql區(qū)的sql語句:

?????? ???? sql>select sql_text from v$sqlarea;

?

???????????? 方便客戶端連接。

?????? ???? 將主機(jī)字符串寫入注冊表:

?????? ???? regedit.exe->Local Machine->Software->ORACLE->HOMEO

?????? ???? 增加關(guān)鍵字:local

?????? ???? 鍵???? 值:主機(jī)字符串

?????? ???

?

????? 3)、Oracle9i 相關(guān)的數(shù)據(jù)庫語言

?????????? sql 標(biāo)準(zhǔn)化數(shù)據(jù)庫語言

?????????? sql*plus 數(shù)據(jù)庫接口語言

?????????? pl/sql 過程化語言

?

????? 4)、數(shù)據(jù)分區(qū)技術(shù)(相對于數(shù)據(jù)集中)

???????? list分區(qū)表-不能比大小

?????? ???? range -可以比大小

???????? LOB數(shù)據(jù)類型

?????? ???? BLOB:存儲二進(jìn)制數(shù)據(jù)。例如:圖象、聲音、視頻等、以代替LONG RAW類型(oracle里面已經(jīng)淘汰)。

???????? CLOB:存儲大字符類型數(shù)據(jù)。例如:網(wǎng)上論壇,個人簡歷,說明信息等等以代替LONG 類型。

?????? ???? NCLOB:

?????? ???? nls(National Language Support)字符集,oracle中n打頭的基本上和國家有關(guān)。

?????????? A、數(shù)據(jù)庫核心字符集設(shè)置參數(shù):

?????? ?????? nls_characterset:zhs16cgb231280 (支持版本:oracle7.3以上,不支持繁體字)

?????? ? ???????????????????zhs16gbk????? (支持版本:oracle8.0以上,包括韓文、日文)

???????????????????? ???????????? zhs32gb18030? (支持版本:oracle9i以上,在上一個上支持蒙文、維吾而文等)

?

?

????????????? 查詢核心字符集:

?????? ????? sql>select * from nls_database_parameters;

?????????? B、客戶端字符集設(shè)置參數(shù):

?????? ????? nls_lang:simplified chinese_china.zhs16gbk

?????? ????? Windows下注冊表中的NLS_LANG項(xiàng)的鍵值

?

?????? ????? Unix下設(shè)置字符集方法:

?????? ????? $NLS_LANG="simplified chinese"_china.zhs16gbk

?????? ????? $export NLS_LANG

?

?????? ????? 兩個機(jī)器的ORACLE核心字符集不同,ORACLE拒絕遷移。

?????? ????? 如果本機(jī)的ORACLE不是中文,需要設(shè)置字符集,再進(jìn)行遷移。

?

?????? ?? C、修改數(shù)據(jù)庫核心字符集的方法。

?????? ????? sql>update props$

?????? ????????? set value$='ZHS16GBK'

????????????? ? ????where name='NLS_CHARACTERSET';

?????? ????? sql>commit;

?????? ????? 修改后,重新啟動數(shù)據(jù)庫即可。

?

????????????? 核心字符集和客戶端一致的話,也可以顯示中文。

?????? ????????? BFILE:外部存儲,將數(shù)據(jù)存儲在服務(wù)器外部磁盤。

?????? ????????? 只存路徑,不管格式。

?

????? 5)、Oracle9i數(shù)據(jù)庫改變及新增功能。

????????? sql>set com v7????? --設(shè)置數(shù)據(jù)庫為oracle7.0,臨時型設(shè)置。不支持V6。

?????? ? OLTP 數(shù)據(jù)庫和前端交互較多,回退空間較大。

?????? ? 數(shù)據(jù)倉庫,改動較少,回退空間較小。

?

????? 6)、Oracle9i數(shù)據(jù)庫語言設(shè)計:

????????? sql*plus? => sql? 、 sql*plus 、 pl/sql

?

?????? ? SQL語言:

?????? ???????? 查詢語言(QL):????? Query Language

????????????? ?數(shù)據(jù)操縱語言(DML):Data Manpulation Language

????????????? ?數(shù)據(jù)控制語言(DCL):Data Control Language

????????????? ?數(shù)據(jù)定義語言(DDL):Data Definition Language

?

?

?

?

?

?

?

?

?

第二章? 數(shù)據(jù)查詢語言(QL)????????????????? 回目錄

2006-4-5

??? 一、數(shù)據(jù)字典:

????????? 數(shù)據(jù)字典是一組存儲系統(tǒng)信息的表、視圖、同義詞等,由系統(tǒng)自動維護(hù),用戶可以查詢。

?

????????? 數(shù)據(jù)字典分類:

?????? ????? user_xxx: 存儲用戶創(chuàng)建的數(shù)據(jù)庫實(shí)體,例如:user_tables,user_indexes,user_db_links等。

?????? ????? all_xxx:? 存儲用戶可以存取的數(shù)據(jù)庫實(shí)體,例如:all_tables,all_indexes,all_links等。

?????? ?????????????? sql>select table_name from all_tables;

????????? dba_xxx:? 數(shù)據(jù)庫管理員數(shù)據(jù)字典。例如:dba_tables,dba_indexes,dba_links等。

?????? ?????????????? sql>select owner,table_name,tablespace_name from dba_tables;

????????? v$xxx:動態(tài)數(shù)據(jù)庫字典。例如:v$database,v$session,v$sga(內(nèi)存數(shù)),v$license(最大會話數(shù)),v$sgastat(內(nèi)存使用狀況)等。

?????????

?????? ? sql>set timing on? --設(shè)置跟蹤,顯示執(zhí)行時間。

?????? ? sql>select * from all_objects;所有的數(shù)據(jù)字典,大概有3萬多個。

?????? ?

??? 二、日歷及日期顯示格式的設(shè)置

?????? ? 1、設(shè)置日歷顯示格式參數(shù):nls_calendar?

?????? ? sql>alter session set nls_calendar="Japaness Imperial";

?????? ? sql>alter session set nls_calendar="ROC Official";

?????? ? sql>alter session set nls_calendar="Gregorian";

?

? ????????2、設(shè)置日期顯示格式參數(shù):nls_date_format

?????? ???? sql>alter session set nls_date_format='格式';

?????? ???? 常用日期格式組合方法:

?????? ???? yyyy.mm.dd??? yy.mm.dd? yyyy/mm/dd? yy/mm/dd? yyyy-mm-dd?? yy-mm-dd

?????? ???? yyyy"年"mm"月"dd"日dy hh24:mi:ss AM" 加AM時24要去掉

???????????? 周的話加dy --星期

?

?????? ???? sql>select sysdate+2+2/24+20/1440 from dual;? --過兩天兩小時20分鐘

?????? ???? 查詢5年11個月之后的時間:

?????? ???? sql>select sysdate+to_yminterval('05-11') from dual;

?????? ???? 查詢5年11個月之前的時間:

???????????? sql>select sysdate+to_yminterval('-05-11') from dual;

?

?????? ???? 查詢年度:

?????? ???? sql>select extract(year from sysdate) from dual;

?????? ???? 查詢月度:

?????? ???? sql>select extract(month from sysdate) from dual;

?????? ???? 查詢?nèi)掌?#xff1a;

?????? ???? sql>select extract(day from sysdate) from dual;

?

?????? ?? 3、將日期顯示格式寫入注冊表

?????? ???? Local Machine->Software->ORACLE->HOMEO

?????? ???? 增加關(guān)鍵字:nls_date_format

?????? ???? 鍵??? 值 :日期格式(注意:無單引號)

?????? ???? unix下設(shè)置:

?????? ???? $NLS_DATE_FORMAT=“格式”

?????? ???? $export NLS_DATE_FORMAT

?

?????? ???? 也可以將日期格式設(shè)置寫入ORACLE的登陸自動執(zhí)行文件:glogin.sql

?????? ???? D:\oracle\ora92\sqlplus\admin\glogin.sql (windows)

?????? ???? /U01/app/oracle/product/9.2.0/sqlplus/admin/glogin.sql? (nuix)

?

?????? ?? 4、時區(qū)(Time Zones)

?????????? 查詢當(dāng)前時區(qū):

?????? ????? sql>select sessiontimezone from dual;

?????? ????? 設(shè)置時區(qū):

?????? ????? sql>alter session set time_zone='-7:00';

?????? ????? 查詢當(dāng)前時間:

?????? ????? sql>select sysdate,current_date from dual;

?????? ????? 2006-04-05 2006-04-04

?????? ????? current_date:當(dāng)?shù)貢r間。

?????? ????? sysdate:當(dāng)前時間。

?

??? 三、謂詞

?????? ???? A、 IN(NOT IN):等于或不等于列表中的任意表達(dá)式

?????? ???????? sql>select * from emp

?????? ???????????? where deptno in(20,30,40)

?????? ???? B、 (NOT)BETWEEN AND:表示從小到大的一個范圍

?????? ???????? sql>select * from emp

????????????? ???? where sal between 1000 and 2000;

?????? ???? C、(NOT)LIKE :字符型數(shù)據(jù)匹配查詢

?????? ???????? sql>select * from emp

????????????? ???? where ename like 'S%';

????????????? ?-:表示一個字符;

????????????? ?%:表示任意字符串;

?????? ???? D、偽例

?????? ??????? rowid:唯一行標(biāo)識

????????????? rownum:行號

?

?????? ???? 問題:

?????? ???????? 試查詢EMP表中工資最高的5名員工及工資值及序號。

????????????? ?sql>select ename,sal,rownum from(select ename,sal from emp order by sal desc)

????????????? ?where rownum<=5;

?

????????????? ?http://fh_sw:7778/isqlplus

?

?????? ????? E、空值(NULL)

?????? ???????? 判斷以下語句是否正確:

????????????? ?sql>select ename,sal,comm,sal+nvl(comm,0) from emp;

???????????????? nvl(c1,c2)=c1 c1 不是空值,

????????????? ?????????? =c2 c1 是空值。

?????? ???????? 類似函數(shù):

????????????? ?? nvl2(c1,c2,c3)=c2 c1不是空值

????????????? ???????????????? =c3 c1是空值

?

?????????? 有獎金的加100,沒獎金的直接給500

????????????? ??? sql>select ename,nvl2(comm,comm+100,500) from emp;

?

????????????? ??? coalesce(c1,c2,c3,,,)=c1??????????????????? c1不是空值

????????????? ???? ????????????????=coalesce(c2,c3,c4,,,) c1是空值。返回第一個不為空的值。

????????????? ??? sql>select * from emp where comm is null;

?

????????????? ? case:

????????????? ??? sql>select ename,(case when sal<1500 then '低收入'

????????????? ?????????????????????? when sal>=1500 and sal<=3000 then '中等收入'

?????????????????????????????????? ?????????? when sal>3000 then '高收入'

??????????????????????????? ?????????? else '收入狀況不詳'

??????????????????????????? ?????????? end) "收入狀態(tài)",sal?

????????????? ??????? from emp;

??????????????????????????? ????

????????????? ?? decode:

????????????? ?? sql>select ename,job,

????????????? ?????????????? decode(job,'MANAGER',sal+300,'SALESMAN',sal+200,'CLERK',sal+100,sal) R_sal

????????????? ??????? from emp;

???????????????????? 違法字符用雙引號,字符型和日期型用單引號。

?

??? 四、匯總與統(tǒng)計

?????? ?? 常用聚組函數(shù):

?????? ???? sum,max,min,avg,count,count distinct,stddev(標(biāo)準(zhǔn)差)

?????? ???? sql>select count(*),count(comm)

?????? ???????? from emp;????????????????????? 空不記數(shù)。

?????? ???? sql>select count(distinct job)

?????? ???????? from emp;????????????????????? 工作崗位有幾個。

?

?????? ?? 分組統(tǒng)計:服務(wù)對職工工資進(jìn)行合計。

?????? ???? 分部門、

?????? ???? sql>select deptno,job,sum(sal)

?????? ???????? from emp

????????????? ???? group by deptno,job;

?

?????? ???? 分部門、職務(wù)對工資進(jìn)行合計,并計算工資總合。

?????? ???? sql>select deptno,job,sum(sal)

?????? ???????? from emp

????????????? ???? group by rollup(deptno,job);

?

???????????? 分別按部門、職務(wù)對工資進(jìn)行合計

?????? ???? sql>select deptno,job,sum(sal)

?????? ???????? from emp

????????????? ???? group by grouping sets(deptno,job);

?

???? 題目:

?????? ?? 分別按年度、部門、職務(wù)對工資進(jìn)行合計。同一個年度的在一起,同一部門的在一起,同一個職務(wù)的在一起。

????????????? ? sql>select to_char(hiredate,'yyyy'),deptno,job,sum(sal)

????????????? ????? from emp

????????????? ????? group by grouping sets(to_char(hiredate,'yyyy'),deptno,job);

?

?? 五、連接查詢(Join)

????? 1、等值連接

???????? 問:SMITH在哪里工作?

?????? ???? sql>select ename,loc

?????? ?????????? from emp,dept

?????? ????????? where emp.deptno = dept.deptno and ename='SMITH';

??????????

?????? ???? 查詢出員工姓名、工作地點(diǎn)、所在部門(要求列出公司所有部門)

????????????? ?? sql>select ename,loc,dept.deptno

?????????????????????? from dept left outer join emp on dept.deptno=emp.deptno;

?

????????????? ?? sql>select ename,loc,dept.deptno

????????????? ?????? from emp left join dept on dept.deptno=emp.deptno;

?

????????????? ?? sql>select ename,loc,dept.deptno

????????????? ?????? from emp,dept

????????????? ?????? where emp.deptno(+)=dept.deptno;

?

?? 六、子查詢(Subqueries)

?????? 1、多級子查詢

????????? 哪些員工的工作與SMITH相同,或者工資比他高?

?????? ? ????select * from emp

????????? where ename<>'TURNER'

?????? ?? ?????and (sal > (select sal from emp where ename='TURNER' )

?????? ??? ?????or deptno=(select deptno from emp where ename='TURNER'));

?

?????? 2、哪個員工最早受雇?

????????? sql>select ename

?????? ?????? ???from emp

?????? ????? ????where hiredate=(select min(hiredate) from emp);

?

?????? 3、當(dāng)查詢結(jié)果返回值不止一個時,可以使用all,any,in,not in 等

????????? 題目:

?????? ????? 查詢出其他部門中比部門30中某一個員工工資高員工?

?????? ????? sql>select ename,sal

?????? ??????????? from emp

????????????? ?? ??where deptno !=30

????????????? ???? and sal > any (select sal from emp

????????????? ???????????????????? where deptno=30); 相當(dāng)于min(sal)

?

?????? 4、當(dāng)查詢返回結(jié)果多個一列時,主查詢語句的where可以使用括號括起來。

????????? 題目:

?????? ????? 查詢與FORD具有相同職務(wù)與工資的員工?

?????? ????? sql>select ename,job,sal

?????? ??????????? from emp

????????????? ?? where (job,sal)=(select job,sal from emp where ename='FORD');

?

?????? dml 和 dcl部分暫時不講。

?

?

????? ????????????????????

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

第三章 數(shù)據(jù)定義語言 (DDL) ???????????回目錄

?? 一、創(chuàng)建基表

????? 語法:

????????? sql>Create table 表名(

?????? ????? 列名1 數(shù)據(jù)類型 約束條件,

?????? ????? 列名2 數(shù)據(jù)類型 約束條件,

?????? ????? ,,,,)

?????? ? sql>Create table product(

?????? ????? p_name varchar2(20) unique,

?????? ????? p_id number(5) primary key,

?????? ????? p_date date not null,

?????? ????? p_loc char(30) default '鄭州',

?????? ????? constraint uk_p_name unique(p_name),

?????? ????? constraint pk_i_id primary key(p_id));

?????????????? /*(constraint nn_p_date not null,)*/

?????? ?????? check(p_id>11110 and p_id<99999)

?????? ?????? 以上sql有點(diǎn)問題

?????? ?? 查詢表約束:

?????? ?? sql>select * from user_constraints

?????? ?????? where table_name='PRODUCT';

?

?????? ?? 查詢列的默認(rèn)值:

?????? ?? sql>select column_name,data_default

?????? ???????? from user_tab_columns

?????? ???? ???where table_name='PRODUCT';

?

?????? ?? save c:\p1;

?????? ?? get c:\p1;

?

?????? ?? sql>insert into product(p_name,p_id,p_loc)

?????? ?????? values('計算機(jī)',12221,sysdate,default)

?

?????? ?? 約束條件的修改:

?????? ?? 刪除約束:

?????? ???? sql>alter table product drop primary key;?????????? --刪除主鍵約束

????????? ???sql>alter table product drop unique(p_name);??????? --刪除唯一性約束

?????? ???? sql>alter table product modify(p_date null) ;?????? --取消非空約束

?????? ???? sql>alter table product modify(p_loc default null); --取消默認(rèn)值

?

?????? ?? 增加約束條件:

?????? ???? sql>alter table product add primary key(p_id);

?????? ???? sql>alter table product add unique(p_name);

?????? ???? sql>alter table product add modify(p_date not null);

?????? ???? sql>alter table product add modify(p_loc default '河南');

?

??

?

二、數(shù)據(jù)類型

????? 字符型 varchar2(n)? n<=4000??? --空間不滿的時候回退空間

??????????? char(n)????? n<=2000??? --占滿空間

?

????? 數(shù)字型 number(n)????? 0-9.99(e125) 最大38位

??????????? number(n,d)???

?????? ??? int????????? 最大38位數(shù)

?

????? 日期型 date

?

????? 二進(jìn)制 long raw

?

????? 大對象 LOB

???????????? BLOB:存儲二進(jìn)制數(shù)據(jù)

?????? ??????? CLOB:存儲大字符數(shù)據(jù)

?????? ??????? NCLOB:外部數(shù)據(jù)

?

?

?????? ??? 創(chuàng)建含有LOB列的基表:

?????? ??? sql>Create table employee(

?????? ??????? name varchar(30),

????????????? id?? int primary key,

????????????? photo blob,

????????????? resume clob) lob(photo,resume)

????????????? store as(tablespace users chunk 2048 cache);

??????????? 說明:

?????? ??????? Chunk 表示讀取LOB列時的數(shù)據(jù)量。默認(rèn)2K

????????????? 經(jīng)常查詢LOB列時可以增加Cache,默認(rèn)NoCache

2006-4-6

?????? ??? BFILE數(shù)據(jù)類型的使用方法:

?????? ??? A:創(chuàng)建相應(yīng)的物理存儲路徑

?????? ??? B:使用Create directory創(chuàng)建目錄與物理路徑連接。

?????? ??? C:為用戶授予Read on directory 權(quán)限

?

?????? ??? 例如:D:\video

?????? ???????? sql>Create or Replace directory video as 'd:\video';

????????????? ?sql>grant read on directory video to stud20;

?

????????????? ?sql>Create table b_video(

????????????? ???? bname varchar2(20),

????????????? ???? bid int primary key,

????????????? ???? bvideo bfile);

?

???????????????? sql>Insert into b_video

????????????? ???? values('影象資料',1001,bfilename('video','2.bmp'));

?

?

?

?????? ??? 查詢基表原代碼:

?????? ??? sql>select dbms_metadata.get_ddl('TABLE','B_VIDEO') from dual;? --輸出SQL;

?????? ??? sql>select dbms_metadata.get_xml('TABLE','PRODUCT') from dual;? --輸出SQL;

?

?????? ??? sql>set long 1000

?

?? 三、創(chuàng)建臨時表(Temporary Table)

?????? sql>Create global temporary table temp_data(

?????????? name varchar2(20),

?????? ?? id int,

?????? ?? hdate date)

?????? ?? on commit delete rows 或

?????? ?? on commit preserve rows

?????? 其中,on commit delete rows:表示提交后數(shù)據(jù)被刪除

??????????? on commit preserve rows:表示會話中斷后被刪除

??????

?????? sql>set autocommit on 自動提交

?????? sql>set autocommit 5? 5次事務(wù)

?

?????? 查詢是否創(chuàng)建了臨時表:

?????? sql>select table_name,temporary from user_tables;

?

?

?? 四、創(chuàng)建聚集(Clusters)

????? 幾個表有關(guān)連,經(jīng)常做聯(lián)合查詢時,使用Clusters,比較節(jié)省空間,增加查詢速度。

????? 創(chuàng)建Cluster

????? sql>Create cluster prod_sales(p_id int);

????? 創(chuàng)建主表,指定Cluster關(guān)鍵字

????? sql>Create table prod(

????????? p_name varchar2(20),

?????? ? p_id int primary key) cluster prod_sales(p_id);

????? 創(chuàng)建子表,指定外鍵及Cluster關(guān)鍵字

????? sql>Create table sales(

????????? sname varchar2(20),

?????? ? p_id int,

?????? ? constraint fk_p_id foreign key(p_id) references

?????? ? prod(p_id)) cluster prod_sales(p_id);

?

????????? sql>select extent_id,bytes,blocks,segment_name from user_extents; 查看表的存儲空間

??

?? 五、創(chuàng)建對象類型表(Objects)

????? 創(chuàng)建對象類型:

????? sql>Create or Replace type emp_other as object(

????????? emp_id number(7),

?????? ? emp_name varchar2(20),

?????? ? emp_sal number(7,2));

?????? ? 需要使用'/'來執(zhí)行。

?

????? 創(chuàng)建含有對象類型的基表:

????? sql>Create table e_info(

????????? job varchar2(20),

????????? hdate date,

?????? ? other emp_other);

?????? 數(shù)據(jù)插入:

?????? sql>Insert into e_info

?????????? values('工程師',sysdate,emp_other(1234,'李大力',1500));

?????? 數(shù)據(jù)查詢:

?????? sql>select job,hdate,p1.other.emp_name,p1.other.emp_sal

?????????? from e_info p1;

?

?? 六、修改表結(jié)構(gòu)

????? 1、增加新列

??????? sql>alter table product add(

?????? ??? p_list number(7) constraint uk_p_list unique,

?????? ??? p_no int);

????? 2、刪除列 (支持版本:Oracle8i以上版本)

??????? sql>alter table product drop(p_list,p_no);

????? 3、修改表名

??????? sql>rename 原名 to 新名;

????? 4、修改列名 (支持版本:Oracle9i 9.2.0以上)

??????? sql>alter table prodctuct rename column p_name

?????? ??? to product_name;

????? 5、修改列寬

???????? sql>alter table product

?????? ???? modify(p_name varchar2(40));

?????? ???? 要求整列為空,才可以從大到小修改列寬。

????? 6、回收表中未使用空間

???????? sql>alter table product deallocate unused keep 80k; ----回收表中部分未使用空間。

?????? ?sql>alter table product deallocate unused; ----回收表中全部未使用空間。

?

?????? ?表中未使用空間:delete from emp; 刪除后不釋放空間。

?????? ????????????? 數(shù)據(jù)刪除后產(chǎn)生未使用空間。

????????????? ????? truncate table emp;傾空表,回收空間。

?????? ?

?????? ? HWM(high water mark 水印)

?????? ? 查詢表所占用空間大小:

?????? ? sql>select sum(bytes),sum(blocks)

?????? ????? from user_extents

?????? ????? where segment_name='EMP';

?????? ? sql>Create table payment as select ename,sal from emp;

?????? ? sql>Insert into payment select * from payment;

?

?? 七、創(chuàng)建序列(Sequences)

????? 創(chuàng)建序列的語法:

????? sql>Create sequence 序列名

????????? start with 起始編碼

?????? ? increment by 步長

?????? ? maxvalue 終止編碼;

?

????? sql>Create sequence id_code

????????? start with 11111

?????? ? increment by 1

?????? ? maxvalue 9999999 cycle cache;

?????? ? cycle 循環(huán),Nocycle不循環(huán)

?????? ? Nocache.

?

????? 使用序列的方法:

????????? id_code.currval? --取當(dāng)前值

?????? ? id_code.nextval? --取下一個值

?

?????? ? 首次使用時,應(yīng)使用nextval.

?

????????? sql>Create table icode(

?????? ????? code int primary key);

?????? ? sql>Insert into icode values(id_code.nextval);

?

?????? ? 查詢數(shù)據(jù)庫中的序列:

?????? ? sql>select sequence_name,increment_by,max_value

?????? ????? from user_sequences;

?????? ? 刪除序列:

?????? ? sql>drop sequence id_code;

?

?? 八、數(shù)據(jù)庫鏈路(Database Link)

????? 數(shù)據(jù)庫鏈路是分布式數(shù)據(jù)庫中的一種數(shù)據(jù)庫實(shí)體,通過鏈路可以實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸。

?

????? 創(chuàng)建數(shù)據(jù)庫鏈路的語法:

????? sql>Create database link 鏈路名 對方數(shù)據(jù)庫的全局?jǐn)?shù)據(jù)庫名。(同名數(shù)據(jù)庫不能建鏈路,同名數(shù)據(jù)庫加域名可以建鏈路)

????????? connect to 用戶名 identified by 口令字

?????? ? using '主機(jī)字符串';

????? sql>Create database link swora.us.oracle.com

????????? connect to stud20 identified by stud20

?????? ? using 'swora01';

?

????? 數(shù)據(jù)庫鏈路的使用:

????? sql>select * from tab@swora.us.oracle.com;

????? 刪除鏈路:

????? sql>drop database link swora.us.oracle.com;

????? 查詢數(shù)據(jù)鏈路:

????? sql>select db_link,username,password,host from user_db_links;

????? sql>column db_link format a20

????? sql>column host format a10

?

????? DDL操作不允許使用鏈路

?

????? 使用數(shù)據(jù)庫鏈路實(shí)現(xiàn)數(shù)據(jù)實(shí)時傳輸:

????? 數(shù)據(jù)插入觸發(fā)器:

????? sql>Create or Replace trigger Insert_dept

????????? before insert on dept

?????? ? for each row

?????? ? Begin

?????? ???? insert into dept@swora.us.oracle.com

?????? ???? values(:new.deptno,:new.dname,:new.loc);

?????? ? End Insert_dept;

????? 查詢錯誤:

????? sql>show error

????? 查詢觸發(fā)器:

????? sql>select trigger_name from user_triggers;

????? 查詢觸發(fā)器原代碼:

????? sql>select trigger_body from user_triggers

????????? where trigger_name='INSERT_DEPT';

????? sql>drop trigger 觸發(fā)器名;

?

????? 數(shù)據(jù)更新觸發(fā)器:

????? sql>Create or Replace trigger Update_dept

????????? before update on dept

?????? ? for each row

?????? ? Begin

?????? ??? update dept@swora.us.oracle.com

?????? ??? set deptno=:new.deptno,dname=:new.dname,loc=:new.loc

?????? ??? where deptno=:old.deptno and

?????? ????????? dname=:old.dname?? and

????????????? ? loc? =:old.loc;

?????? ? End Update_dept;

?

?

????? 數(shù)據(jù)刪除觸發(fā)器:

????? sql>Create or Replace trigger Delete_dept

????????? before delete on dept

?????? ? for each row

?????? ? Begin

?????? ??? delete from dept@swora.us.oracle.com

?????? ??? where deptno=:old.deptno;

?????? ? End Delete_dept;

?

????? 使用數(shù)據(jù)庫鏈路實(shí)現(xiàn)數(shù)據(jù)定時傳輸:

????? 快照是從主節(jié)點(diǎn)傳向輔節(jié)點(diǎn),兩個數(shù)據(jù)庫要分主節(jié)點(diǎn)和輔節(jié)點(diǎn)。

????? 創(chuàng)建快照(Snapshots)語法:

????? sql>Create snapshots 快照名

????????? refresh 刷新方式

?????? ? next??? 時間間隔

?????? ? with parmary key

?????? ? as select 子句:

?

????? 語法說明:

??????? 刷新方式:? complete?? ---完全刷新? 比較主/副節(jié)點(diǎn)的表,不同的話,刷新

?????? ????????? fast?????? ---快速刷新?

????????????? ? force????? ---強(qiáng)制刷新

??????? 時間間隔:? 以天為單位

????????????????? sysdate + 1/24 一小時加一次

????????????? ? Next_Day(trun(sysdate),'星期日')+22/24 每周日的22點(diǎn)

??????? with parmary key: 要求傳輸?shù)谋硪兄麈I

?

?????? 創(chuàng)建快照步驟:

?????? ?A、授予用戶創(chuàng)建快照權(quán)限(輔節(jié)點(diǎn))

?????? ??? sql>grant create snapshot to 用戶名; 需要系統(tǒng)管理員授權(quán)。

???????? B、創(chuàng)建快照(輔節(jié)點(diǎn))

?????? ?C、創(chuàng)建快照日志(主節(jié)點(diǎn))

?????? ??? sql>Create snapshot log on 表名;

?

?????? ??? sql>Create snapshot c_dept

?????? ??????? refresh force

??????????????? next sysdate +1/1440

??????????????? with primary key

????????????? as select * from dept@swora.us.oracle.com;

????????????

?????? ???? sql>drop snapshot c_dept;

????????? 建立、刪除日志要單獨(dú)進(jìn)行。

????????? 查找快照信息(輔節(jié)點(diǎn)查詢):

?????? ? sql>select name,master_owner,master,type,next,master_link

?????? ????? from user_snapshots;

?????? ? 其中:name? --快照名

?????? ?????? master_owner ---主節(jié)點(diǎn)用戶名

?????? ?????? master?????? ---主節(jié)點(diǎn)表名

?????? ?????? type:??????? --刷新方式

?????? ?????? next:??????? --時間間隔

?????? ?????? master_link? ---數(shù)據(jù)庫鏈路名

?

?????? ? 創(chuàng)建公共數(shù)據(jù)庫鏈路:

?????? ? 同名用戶的對聯(lián)。管理員創(chuàng)建,大家使用。

?????? ? sql>create public database link swora.us.oracle.com

?????? ????? using 'swora01';

?????? ? 查詢公共鏈路:

?????? ? sql>select owner,db_link,username,host

?????? ????? from all_db_links;

?

?? 九、創(chuàng)建視圖(Views)

????? 1、視圖的特點(diǎn)

???????? 不存儲數(shù)據(jù)

?????? ?數(shù)據(jù)來源于基表

?????? ?不能數(shù)據(jù)復(fù)制

?????? ?在同一個表上可以建多個視圖

????? 2、創(chuàng)建視圖的語法

???????? sql>Create or Replace view 視圖名 as select 子句

?????? ?sql>Create or Replace view manager

?????? ???? as select * from emp

?????? ???? where job='MANAGER';

?????? ?sql>select text from user_views

?????? ???? where view_name='MANAGER';

????? 3、創(chuàng)建視圖時的選項(xiàng):

???????? with read only????? ---創(chuàng)建只讀視圖

???????????? sql>Create or Replace view manager

?????? ???????? as select * from emp

?????? ???????? where job='MANAGER' with read only;

?

?????? ?with check option?? ---在通過視圖修改數(shù)據(jù)時,必須滿足創(chuàng)建視圖時where指出的條件。

?????? ???

?????? ???? sql>Create or Replace view part20

?????? ???????? as select empno,ename,hiredate,deptno

????????????? ?from emp

????????????? ?where deptno=20 with check option;

?????? ???? sql>Insert into part20

?????? ???????? values(1235,'李大力',sysdate,30);

????????????? ?此語句出錯(視圖 WITH CHECK OPTION 違反 where 子句)

?????? ???? sql>select * from part20;

?

?????? 4、為視圖列取別名

????????? 試判斷以下語句是否有錯誤?

?????? ? sql>create or Replace view pay as

?????? ????? select ename,sal,sal*12 sal_year,sal+nvl(comm,0) sal_month

?????? ????? from emp;

?

?????? ? sql>create or Replace view pay(c1,c2,c3,c4) as

?????? ????? select ename,sal,sal*12 ,sal+nvl(comm,0)

?????? ????? from emp;

?

?????? ????? %,#,$,\,/ 非法字符

?

?

?

?

?

?

?

?

?

?

第四章?? Oracle數(shù)據(jù)分區(qū)表???????? 回目錄

?

?? 一、什么是數(shù)據(jù)分區(qū)表

?????? 數(shù)據(jù)分區(qū)就是把表劃分為多個存儲區(qū)域。在創(chuàng)建表結(jié)構(gòu)時考慮分區(qū)方案,選取表中一個或多個列作為分區(qū)關(guān)鍵字,該關(guān)鍵字決定在哪些數(shù)據(jù)存儲在哪些分區(qū),所插入數(shù)據(jù)自動存儲到相應(yīng)分區(qū)。

????

?? 二、創(chuàng)建分區(qū)表

????? sql>Create table c_employee(

????????? name varchar2(20),

?????? ? id number(7),

?????? ? sal number(7,2)) partition by range(sal)

?????? ? (partition p1 values less than(500) tablespace users,

?????? ?? partition p2 values less than(800) tablespace indx,

?????? ?? partition p3 values less than(1500) tablespace odm,

?????? ?? partition p4 values less than(maxvalue) tablespace tools);

?????? ?? 不確定的數(shù)據(jù)存入p4。

?

????? 查詢表空間信息:

????? sql>select tablespace_name from dba_tablespaces;

????? 其中,temp,undotbs1不得使用。

????? 使用sql>c/100/200可以替換

?

??? 三、分區(qū)表查詢

?????? sql>select * from c_employee;

?????? sql>select * from c_employee partition(p1);

?????? sql>Create table c_part2

?????????? as select * from c_employee partition(p2);

?

??????? 查詢是否為分區(qū)表:

?????? sql>select table_name,partitioned from user_tables;

?????? 查看分區(qū)表結(jié)構(gòu):

?????? sql>select partition_name,high_value,tablespace_name

?????? ??? from user_tab_partitions

?????? ??? where table_name='C_EMPLOYEE';

?

2006-4-7

?

??? 四、分區(qū)表結(jié)構(gòu)的修改

??????? 1、刪除分區(qū)

?????? ?? sql>alter table c_employee drop partition p3;

?????? 2、增加分區(qū)

?????? ?? 如果有maxvalue區(qū),則不能增加區(qū),需要先刪除,如果有數(shù)據(jù)就比較麻煩,所以一般不設(shè)置maxvalue區(qū)。

?????? ?? 必須增加在最后一個區(qū)后面

?????? ?? sql>alter table c_employee add partition p3

?????? ?????? values less than(1500) tablespace users;

?????? 3、分區(qū)數(shù)據(jù)移動:將分區(qū)數(shù)據(jù)從一個表空間移動到另外一個表空間,將結(jié)構(gòu)和數(shù)據(jù)全部移動。

?????? ?? sql>alter table c_employee move partition p1

?????? ?????? tablespace tools;

?????? 4、修改分區(qū)名稱

?????? ?? sql>alter table c_employee rename partition p1 to part1;

?????? 5、分區(qū)的拆分(Split)在兩個區(qū)之間增加區(qū)。

?????? ?? sql>alter table c_employee split partition p3

?????? ?????? at(1000) into (partition p21,partition p31);

?????? 6、合并(Merge)必須向高的一方合并。

?????? ?? sql>alter table c_employee merge partitions p21,p31

?????? ?????? into partition p3;

?

??? 五、創(chuàng)建List分區(qū)表

?????? 用于數(shù)據(jù)不能比較大小的時候

?????? sql>Create table list_prod(

?????????? pname varchar2(20),

?????? ?? pid int,

?????? ?? ploc varchar2(20))partition by list(ploc)

?????? ?? (partition p1 values('廣東') tablespace users,

?????? ??? partition p2 values('河南') tablespace tools,

?????? ??? partition p3 values('陜西','河北') tablespace odm,

?????? ??? partition p4 values(null) tablespace indx,

?????? ??? partition p5 values(default) tablespace example);

?

?????? ??? null 沒有產(chǎn)地

?????? ??? default 其它情況

?????? ??? List分區(qū)表的使用和上面的一樣。

?

??????? 工具介紹

??????? Oracle Management Server(Oracle管理服務(wù)器配置) 可以把網(wǎng)上的多個數(shù)據(jù)庫放在Oracle上使用。

?????? 服務(wù):機(jī)器名:1521:SID

?????? SID實(shí)例名

???

??????? Oracle Enterprise Manager Console

??????? 管理員:sysman

?????? 口令字:oem_temp (default)

?

?

?

?

?

?

?

?

?

?

?

?

?

???????????????????????????? 第五章? Oracle權(quán)限設(shè)置?????????????????? 回目錄

??? 一、Oralce權(quán)限分類

?????? 系統(tǒng)權(quán)限:系統(tǒng)限制用戶在數(shù)據(jù)庫中的操作權(quán)限(用戶)

?????? 實(shí)體權(quán)限:某種權(quán)限用戶對于其他用戶實(shí)體的存取權(quán)限(實(shí)體)

?

??? 二、系統(tǒng)權(quán)限的管理

?????? 1、系統(tǒng)權(quán)限的分類

????????? DBA:權(quán)限組合,擁有全部特權(quán),是系統(tǒng)最高權(quán)限,只有DBA才可以創(chuàng)建數(shù)據(jù)庫

?????? ? RESOURCE:擁有RESOURCE權(quán)限的用戶可以登陸數(shù)據(jù)庫。可以創(chuàng)建數(shù)據(jù)庫實(shí)體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。

?????? ? CONNECT:擁有CONNECT權(quán)限的用戶可以登陸數(shù)據(jù)庫。(會話權(quán)),不可以創(chuàng)建數(shù)據(jù)庫實(shí)體。

?????? 2、系統(tǒng)權(quán)限的授權(quán)命令

??? ??????sys/system:

?????? ? sql>Create user acc01 identified by acc01;

?????? ? sql>grant connect,resource to acc01;

?????? ? 查詢用戶擁有的權(quán)限:

????????? sql>select * from user_role_privs;

?????? ? ADM:是否允許權(quán)限傳遞

?????? ? sql>select * from role_sys_privs;

?????? ? sql>select * from dba_role_privs;

?? ????3、系統(tǒng)權(quán)限傳遞

????????? sys/system:

?????? ? sql>grant connect,resource to acc01 with admin option;

?????? 4、系統(tǒng)權(quán)限回收

????????? sql>revoke connect,resource from acc01;

?????? ? DBA權(quán)限不要輕易授權(quán)

?????? ? 系統(tǒng)權(quán)限之間無級聯(lián):授出權(quán)限可以跨級收回

?????? ? 實(shí)體權(quán)限之間有級聯(lián):收回一個全部收回,不能跨用戶收取權(quán)限。

?

??? 三、實(shí)體權(quán)限管理

?????? 1、實(shí)體權(quán)限分類

????????? select,update,insert,delete,alter,index,execute,references,all.

?????? 2、實(shí)體權(quán)限授權(quán)命令

????????? scott:

?????? ? sql>grant select,update,delete on product to acc01;

?????? ? sql>grant select,update,delete on product to public;? --授權(quán)給public

?????? ? acc01:

?????? ? sql>select * from scott.product;

????????? 查詢用戶創(chuàng)建的基表:

?????? ? sql>select table_name from user_tables;

?????? ? 查詢用戶可以存取的基表:

?????? ? sql>select owner,table_name from user_tables;

?????? ? 查詢授出權(quán)限的表:

?????? ? sql>select grantee,owner,table_name,privilege

?????? ????? from user_tab_privs;

?????? 3、實(shí)體權(quán)限傳遞:with grant option

????????? scott:

?????? ? sql>grant select,update,delete on emp

?????? ????? to acc01 with grant option;

?????? ? acc01:

?????? ? sql>grant select on scott.emp to acc02;

??????? 3、實(shí)體權(quán)限的回收:

?????? ?? scott:

?????? ?? sql>revoke select,update on emp from acc01;

?????? ?? DBA可以管理實(shí)體用戶

?

??? 四、同義詞(Synonyms)

?????? 1、創(chuàng)建私有同義詞:

????????? acc01:

?????? ? sql>select * from scott.emp;

????????? sql>Create synonym emp

?????? ????? for scott.emp;

?????? ? sql>select * from emp;

????????? 創(chuàng)建同義詞代替數(shù)據(jù)鏈路

????????? sql>select * from dept@swora.us.oracle.com;

?????? ??sql>Create synonym y_dept

????????????? for dept@swora.us.oracle.com;

?

?????? 2、創(chuàng)建公共同義詞:

????????? 由DBA創(chuàng)建,所有用戶共同使用

?????? ? 語法:sql>Create public synonym 公共同義詞名 for 代替項(xiàng);

?????? ? scott:

?????? ? sql>Create table e_sal as select ename,sal from emp;

?????? ? sql>grant select on e_sal to public;

?????? ? system:

?????? ? sql>Create public synonym e_sal for scott.e_sal;

?????????

????????? 查詢私有同義詞:

?????? ? sql>select synonym_name ,table_owner,table_name,db_link

?????? ????? from user_synonyms;

?????? ? sql>column synonym_name format a10;

?????? ? sql>column db_link format a10;

?

?????? ? 查詢公共同義詞:

?????? ? sql>select synonym_name ,table_owner,table_name,db_link

?????? ????? from dba_synonyms;

?????? ? sql>column synonym_name format a10;

?????? ? sql>column db_link format a10;

?????? ? db_link:遠(yuǎn)程表

?

?????? ? 刪除公共同義詞:

?????? ? sql>drop public synonym e_sal;?? --管理員刪除

?

????????? 刪除私有同義詞:

?????? ? sql>drop synonym e_sal;????????? --用戶刪除

?

?????? ?????????? 第六章???? PL/SQL程序設(shè)計(Procedual Language)?? ??????? 回目錄?

??? 一、PL/SQL概述

?????? ROWTYPE? %rowtype 行類型

?????? 用于存儲表中的一行記錄

?????? Declare

?????? v_empno emp.empno%type:=&empno;

?????? r emp%rowtype;

?????? Begin

??????? select * into r from emp where empno=v_empno;

?????? dbms_output.put_line('姓名:'||r.ename||' |工資:'||r.sal||' |工作時間:'||r.hiredate);

?????? End;

?

?????? &:表示接收鍵盤輸入。

??????

?????? 打開屏幕打印開關(guān):

?????? SQL> set serveroutput on

??????

??????

?????? Rocode:記錄類型

??????? Declare

???????? v1 emp.empno%type:=&empno;

?????? ?type r_record is record(

?????? ??????? v1 varchar2(20),

????????????? v2 number(7,2),

????????????? v3 date);

?????? ?r r_record;

?????? Begin

?????? ?? select ename,sal,hiredate into r from emp

?????? ?? where empno=v1;

?????? ?? dbms_output.put_line('姓名:'||r.v1||' |工資:'||r.v2||' |工作時間:'||r.v3);

?????? End;

?

??????? Type: 表類型

?????? ?Declare

?????? ?? v1 emp.empno%type:=&v1;

?????? ?? type t_emp is table of varchar2(20) index by binary_integer;

?????? ?? t1 t_emp;

?????? ?? v_i integer;

?????? ?Begin

?????? ?? select 1 into v_i from dual;

?????? ?? select ename,sal into t1(v_i),t1(v_i+1) from emp where empno=v1;

?????? ?? dbms_output.put_line('編碼:'||v1||' |姓名:'||t1(v_i)||' |工資:'||t1(v_i+1));

?????? ?End;

?

??? 二、條件判斷語句

??????? Declare

???????? v1 emp.empno%type:=&empno;

?????? ?v2 number(7,2);

?????? ?v3 varchar2(20);

??????? Begin

?????? ?? select sal,ename into v2,v3 from emp

?????? ?? where empno=v1;

?????? ?? if v2<2000 then

?????? ???? Begin

?????? ?????? update emp set sal=sal+100

?????? ??????? where empno=v1;

????????????? dbms_output.put_line('員工:'||v3||' 工資已經(jīng)增加!');

?????? ???? End;

?????? ?? else dbms_output.put_line('員工:'||v3||' 工資已經(jīng)超過規(guī)定值,不增加!');

?????? ?? end if;

??????? End;

?

?

??? 三、循環(huán)語句

?????? Declare

???????? i int :=0;

?????? Begin

???????? loop

?????? ??? i:=i+1;

?????? ??? dbms_output.put_line('i的當(dāng)前值為i='||i);

?????? ??? exit when i=10;

?????? ?end loop;

?????? End;

?

?????? Declare

???????? i int :=0;

?????? Begin

???????? while i<10 loop

?????? ??? i:=i+1;

?????? ??? dbms_output.put_line('i的當(dāng)前值為i='||i);

?????? ?end loop;

?????? End;

?

?????? Declare

???????? i int :=0;

?????? Begin

???????? for i in 1..10 loop

?????? ??? dbms_output.put_line('i的當(dāng)前值為i='||i);

?????? ?end loop;

?????? End;

?

?? 四、光標(biāo)

????? 查詢結(jié)果一對多(多條記錄)的情況,需要光標(biāo)。

????? Declare

???????? v1 number(4);

?????? ?v2 varchar2(20);

?????? ?v3 number(7,2);

?????? ?cursor c is select empno,ename,sal from emp;

????? Begin

???????? open c;

?????? ?loop

?????? ?? fetch c into v1,v2,v3;

?????? ?? if v3<3000 then

?????? ???? Begin

?????? ?????? update emp set sal=sal+100 where empno=v1;

?????? ?????? dbms_output.put_line(v2||'工資已經(jīng)增加!');

?????? ???? End;

?????? ?? end if;

?????? ?exit when c%notfound;

?????? ?end loop;

?????? ?close c;

?????? End;

?????? ???

?????? 題目:

?????????? 請將EMP表中工資最高的前幾名員工姓名及工資值查詢出來,存儲到基表topsal中。要求:

?????? ?? 1、基表topsal結(jié)構(gòu)如下

?????? ????? sql>Create table topsal(

?????? ????????? name varchar2(20),

????????????? ? sal number(7,2));

?????????? 2、員工個數(shù)由鍵盤輸入確定。

?

?????? ?? Declare

?????? ???? i? int:=&i;

?????? ???? j? int :=0;

?????? ???? v2 varchar2(20);

?????? ???? v3 number(7,2);

?????? ???? cursor c is select ename,sal from emp order by nvl(sal,0) DESC;

?????? ?? Begin

?????? ???? open c;

?????? ???? loop

?????? ?????? j:=j+1;

?????? ?????? fetch c into v2,v3;

?????? ?????? insert into topsal

?????? ?????? values (v2,v3);

?????? ?????? exit when (i=j or c%notfound);

?????????? ??end loop;

?????? ???? close c;

?????? ??? End;

?????? ??? 空值永遠(yuǎn)在前面排。

???????????

?????? ??? 光標(biāo)變量使用方法:

?????? ??? Declare

?????? ????? type row_cursor is ref cursor;

?????? ????? c row_cursor;

?????? ????? r emp%rowtype;

?????? ??? Begin

?????? ????? open c for select * from emp;

????????????? loop

?????? ??????? fetch c into r;

??????????????? dbms_output.put_line(r.ename||'--'||r.sal||'--'||r.hiredate);

????????????? if c%notfound then exit;

????????????? end if;

?????? ?????? end loop;

?????? ????? close c;

?????? ???? End;

?????? ???

?????? ??? 用于光標(biāo)的for循環(huán)語句:

?????? ??? Declare

?????? ????? cursor c is select empno,ename,sal from emp;

?????? ??? Begin

?????? ????? for i in c loop

?????? ??????? dbms_output.put_line(i.empno||'--'||i.ename||'--'||i.sal);

?????? ????? end loop;

?????? ??? End;

?????? ??????

?????? ??? Declare

?????? ????? cursor c is select ename,sal from emp

?????? ????? for update of sal nowait; --鎖住

?????? ??? Begin

?????? ????? for i IN c loop

??????????????? if i.sal<2000 then

????????????? ?? Begin

????????????? ???? update emp set sal=i.sal +100

????????????? ???? where current of c;? --光標(biāo)當(dāng)前行

????????????? ???? dbms_output.put_line('員工:'||i.ename||'已經(jīng)增加工資!');

????????????? ?? End;

????????????? ?end if;

?????? ????? end loop;

?????? ??? End;

?

??????????? Declare

?????? ????? v_empno emp.empno%type=:=&empno;

?????? ??? Begin

?????? ????? delete from emp

?????? ????? where empno=v_empno;

?????? ????? if sql%NOTFOUND then

?????? ???????? dbms_output.put_line('刪除失敗,無編碼為'||v_empno||'的員工!');

?????? ????? else

?????? ???????? dbms_output.putline('成功刪除編碼為'||v_empno||'的員工!');

?????? ????? end if;

?????? ??? End;

?

2006-4-8

?? 五、例外處理(Exception)

????????????? Exception

?????? ??????? when NO_DATA_FOUND then

????????????? ?? dbms_output.put_line('無這樣的員工');

????????????? when TOO_MANY_ROWS then

????????????? ?? dbms_output.put_line('查詢結(jié)果出現(xiàn)多行,請定義光標(biāo)!');

?????? ??????? when VALUE_ERRORS then

????????????? ?? dbms_output.put_line('員工編碼為4位數(shù)!');

????????????? when INVALID_NUMBER then

????????????? ?? dbms_output.put_line('員工位數(shù)!');

????????????? when OTHERS then

????????????? ?? dbms_output.put_line('程序運(yùn)行出錯!');

?

????????????? ?? 有例外時,附值要在Begin后。

?????? ?

??????? Declare

?????????? v1 emp.empno%type;

?????? ?? v2 number(7,2);

?????? ?? v3 varchar2(20);

??????? Begin

?????? ?? v1:=&empno;

?????? ?? select sal,ename into v2,v3 from emp

?????? ?? where empno=v1;

?????? ?? if v2<2000 then

?????? ???? Begin

?????? ?????? update emp set sal=sal+100

?????? ??????? where empno=v1;

????????????? dbms_output.put_line('員工:'||v3||' 工資已經(jīng)增加!');

?????? ???? End;

?????? ?? else dbms_output.put_line('員工:'||v3||' 工資已經(jīng)超過規(guī)定值,不增加!');

?????? ?? end if;

?????? ?? Exception

?????? ??????? when NO_DATA_FOUND then

????????????? ?? dbms_output.put_line('無這樣的員工');

????????????? when TOO_MANY_ROWS then

????????????? ?? dbms_output.put_line('查詢結(jié)果出現(xiàn)多行,請定義光標(biāo)!');

?????? ??????? when VALUE_ERROR then

????????????? ?? dbms_output.put_line('員工編碼為4位數(shù)!');

????????????? when INVALID_NUMBER then

????????????? ?? dbms_output.put_line('NUMBER型非法!');

????????????? when OTHERS then

????????????? ?? dbms_output.put_line('程序運(yùn)行出錯!');

??????? End;

?

?????? 用戶自定義例外的使用方法:

?????? A、定義例外

?????? B、使用raise引起

?????? C、作為Exception統(tǒng)一使用

?

?????? 試指出以下語句是否有錯誤?

?????? 錯誤用法:

?????? Declare

?????? ? v1 emp.empno%type :=&empno;

?????? Begin

?????? ? delete from emp where empno=v1;

?????? ? Exception

?????? ??? when SQL%NOTFOUND then? --SQL%NOTFOUND是屬性,不能作為例外,但開始使用用戶自定義例外。

?????? ?????? dbms_output.put_line('為無編碼'||v1||'的員工!');

?????? End;

??????? 正確用法:

??????? Declare

?????? ? v1 emp.empno%type;

?????? ??if_delete exception;

?????? Begin

?????? ? v1:=&empno;

?????? ? delete from emp where empno=v1;

?????? ? if SQL%NOTFOUND then raise if_delete;

?????? ? end if;

?????? ? Exception??

?????? ??? when if_delete then?

?????? ?????? dbms_output.put_line('為無編碼'||v1||'的員工!');

?????? ??? when VALUE_ERROR then

????????????? ?? dbms_output.put_line('員工編碼為4位數(shù)!');

??????????? when others then

?????? ?????? dbms_output.put_line('為無編碼'||v1||'的員工!');

?????? End;

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

第七章? 存儲過程與函數(shù)??????????????????????? 回目錄

?? 一、什么存儲過程(函數(shù))

?????? 存儲過程(函數(shù))就是把一個PL/SQL程序塊存到數(shù)據(jù)庫中,作為一個數(shù)據(jù)庫實(shí)體,可以在其他PL/SQL程序、過程中調(diào)用。

?? 二、存儲過程的調(diào)用:

????? 在SQL*PLUS中調(diào)用

??????? sql>exec 過程名;

????? 在PL/SQL及過程中調(diào)用

??????? 過程名;

?? 三、創(chuàng)建存儲過程的語法:

????? IN

????? Create or Replace procedure DelEmp(v1 number) is

????? Begin

??????? delete from emp where empno=v1;

?????? if sql%found then

?????? ?? dbms_output.put_line('編碼:'||v1||'的員工成功刪除!');

??????? else

?????? ?? dbms_output.put_line('無編碼為:'||v1||'的員工!');

?????? end if;

?????? End DelEmp;

?

?????? 在SQL*PLUS中調(diào)用存儲過程:

?????? sql>exec EdlEmp(7788);

?????? 在PL/SQL中調(diào)用:

?????? Begin

???????? DelEmp(7923);

?????? ?DelEmp(7369);

?????? End;

?

????? 查詢存儲過程:

????? sql>select text from user_source

????????? where name='DELEMP';

?

????? OUT

????? Create or Replace Procedure QueryEmp(v1 number,v2 out varchar2,v3 out number)

????? is

?????? Begin

???????? select ename,sal into v2,v3 from emp

?????? ?where empno=v1;

???????? Exception

?????????? when NO_DATA_FOUND then

?????? ???? dbms_output.put_line('無編碼為:'||v1||'的員工!');

?????? End QueryEmp;

?

?????? 調(diào)用方法:

???????? Declare

?????? ?? v1 varchar2(20);

?????? ?? v2? number;

???????? Begin

?????? ?? QueryEmp(7369,v1,v2);

?????????? dbms_output.put_line(v1||'=='||v2);

?????? ?End;

?

??????? IN OUT

?????? Create or Replace Procedure ChangeName(

?????? ?? v_name in out varchar2) is

?????? Begin

?????? ?? v_name:=SubStr(v_name,1,3);

?????? End ChangeName;

?????? 調(diào)用方法:

?????? Declare

?????? ? v_name varchar2(20);

?????? Begin

?????? ? v_name:='SMITH';

?????? ? ChangeName(v_name);

?????? ? dbms_output.put_line(v_name);

?????? End;

?

??????? 存儲過程權(quán)限管理:

?????? sql>grant execute on DelEmp to 用戶名; ---使用的時候要加用戶名前綴。

?????? 刪除存儲過程:

?????? sql>drop procedure 過程名;

?????? 收回權(quán)限:

?????? sql>revoke execute on DelEmp from 用戶名;

?????? 查詢存儲過程權(quán)限:

??????? sql>select owner,name,type

?????? ??? from all_source

?????? ??? where owner='SCOTT'

?????? ????? AND type='PROCEDURE';

?

?

??? 四、函數(shù)(Function)

?????? Create or Replace Function GetSal(v1 number)

?????? return number

?????? is

???????? v_sal emp.sal%type;

?????? Begin

???????? select sal into v_sal from emp where empno=v1;

?????? ?return v_sal;

?????? End GetSal;

?????

?????? 函數(shù)的調(diào)用:

?????? sql>select GetSal(7369) from dual;

?????? sql>exec dbms_output.put_line(GetSal(7369));

?

?????? 題目: 試編寫一個n!的函數(shù)。

?????? Create or Replace Function fn(n number)

?????? return number

?????? is

???????? v_h number;

?????? ?v_i number;

?????? Begin

???????? v_i:=1;

?????? ?v_h:=1;

???????? for v_i in 1..n loop

?????? ??? v_h:=v_h*v_i;

?????? ?end loop;

???????? return v_h;

?????? End A1;

?

?????? Create or Replace Function fn(n number)

?????? return number

?????? is

?????? Begin

???????? if n=1 then

?????? ?? return 1;

???????? else

?????????? return n*fn(n -1);

???????? end if;

?????? End A2;

?

?

??? 五、包(Package)

????? 1、什么是包

???????? 把一些相關(guān)的存儲過程、函數(shù)、光標(biāo)、例外等組合在一起形成包,包由包的說明及包體組成,定義在包的說明部分的元素

????? 叫做公共元素,定義在包體部分的元素叫私有元素。

????? 2、包的優(yōu)點(diǎn)

???????? 規(guī)范化程序設(shè)計

?????? ?便于過程及函數(shù)的管理:整個包的授權(quán)只需一次完成

?????? ?包作為一個整體一次性調(diào)入內(nèi)存,減少I/O

????? 3、創(chuàng)建包的語法

???????? 刪除包:

?????? ?sql>drop package 包名;

?????? ?sql>drop package body 包體;

?

?

?

?

?

第八章? 動態(tài)SQL?????????????????????? 回目錄

?

??? 一、什么是動態(tài)SQL

?????? 在應(yīng)用程序中動態(tài)創(chuàng)建基表、視圖、索引等

?????? 動態(tài)生成SQL、DML語句

?????? 在PL/SQL中使用DDL語句

?

??? 二、動態(tài)SQL應(yīng)用實(shí)例

?????? 1、動態(tài)創(chuàng)建基表:

????????? Declare

?????? ??? v_table varchar2(20):='&v_table';? --在此加單引號,輸入的時候就不用再加了。

?????? ??? stm varchar2(200);

?????? ? Begin

?????? ??? stm:='Create table '||v_table||'(

?????? ????????? id number(7),

????????????? ? name varchar2(20),

????????????? ? sal number(7,2))';

??????????? execute immediate stm;

?????? ? End;

??????? 2、動態(tài)刪除基表

?????? ?? Declare

?????? ???? v_table varchar2(20):='&v_table';

?????? ???? stm varchar2(200);

?????????? Begin

?????? ??? stm:='Drop table '||v_table;

??????????? execute immediate stm;

?????? ??? dbms_output.put_line('表'||v_table||'已經(jīng)被刪除!');

?????? ?? End;

??????? 3、動態(tài)生成SQL

?????? ?? Create or Replace procedure TableRows(

?????? ?? table_name varchar2,

?????? ?? wherestr varchar2:=null) is

?????? ?? rownums number;

?????? ?? stm varchar2(200);

?????? ?? Begin

?????? ???? stm:='select count(*) from '||table_name||' where '||nvl(wherestr,'2=2');

?????? ???? execute immediate stm into rownums;

????????? ???dbms_output.put_line('表'||table_name||'有'||rownums||'行符合要求');

?????? ?? End TableRows;

??????????

?????? ?? sql>exec TableRows('EMP')

?????? ?? sql>exec TableRows('EMP','sal>1500')

?????? ?? sql>exec TableRows('EMP','deptno=10')

?

?????? ?4、動態(tài)生成QL語句

?????? ??? 多行查詢語句:使用光標(biāo)

?????? ????? Create or Replace procedure DisEmp(

?????? ??????????????? wherestr varchar2:=null)

?????? ????? is

?????? ??????? type c is ref cursor;

????????????? r_c c;

?????? ??????? v_empno emp.empno%type;

?????? ??????? v_ename emp.ename%type;

?????? ??????? v_job emp.job%type;

?????? ??????? stm varchar2(200);

?????? ????? Begin

?????? ??????? stm:='select empno,ename,job from emp where '||nvl(wherestr,'2=2');

????????????? open r_c for stm;

????????????? loop

????????????? ? fetch r_c into v_empno,v_ename,v_job;

????????????? ? exit when r_c%notfound;

????????????? ? dbms_output.put_line(v_empno||'\'||v_ename||'\'||v_job);

????????????? end loop;

????????????? close r_c;

?????????????? End;

?

????????? sql>exec DisEmp('sal>1500')

?????? ? sql>exec DisEmp

????????

????????????? Create or Replace procedure DisEmp(

?????? ??????????????? wherestr varchar2:=null)

?????? ????? is

?????? ??????? type c is ref cursor;

????????????? r_c c;

?????? ??????? r1 emp%rowtype;

?????? ??????? stm varchar2(200);

?????? ????? Begin

?????? ??????? stm:='select * from emp where '||nvl(wherestr,'2=2');

????????????? open r_c for stm;

????????????? loop

????????????? ? fetch r_c into r1;

????????????? ? exit when r_c%notfound;

????????????? ? dbms_output.put_line(r1.empno||'\'||r1.ename||'\'||r1.job);

????????????? ? end loop;

????????????? close r_c;

?????????????? End;

?

?

??????? 4、動態(tài)生成DML語句

?????? ?? Create or Replace Procedure UpdateTable(

?????? ???? table_name in varchar2,

?????? ???? column_name in varchar2,

?????? ???? column_value in varchar2,

?????? ???? wherestr in varchar2:=null) is

?????? ??? stm varchar2(200);

?????? ??? Begin

?????? ????? stm:='update '||table_name||' set '||column_name||'='||column_value||' where '||nvl(wherestr,'1=1');

?????? ????? execute immediate stm;

?????? ????? dbms_output.put_line('更新行數(shù):'||sql%rowcount);

?????? ??? End UpdateTable;

?

?????? ??? sql>exec UpdateTable('EMP','sal',2000,'sal<1000');

?

???????? 觸發(fā)器:補(bǔ)充

?????? ??? 語句級觸發(fā)器:只執(zhí)行一次。 --for each row? --行級

?????? ??? Create or Replace trigger ChangeEmp

?????? ??? before insert or update or delete on emp

?????? ??? Begin

?????? ????? if(to_char(sysdate,'dy') in ('星期六','星期日') or

?????? ??????? to_number(to_char(sysdate,'hh24'))

????????????? not between 8 and 18)

?????? ????? then

?????? ???????? Raise_Application_Error(-20500,'非工作時間,不得更改數(shù)據(jù)!');

?????? ????? end if;

?????? ??? End ChangeEmp;

?????????

?????? ? Oracle錯誤代碼范圍:ORA-20000 至 ORA-2009999;

?

?????? ? 系統(tǒng)事件觸發(fā)器:

?????? ? 系統(tǒng)事件指:after logon,before logoff,after startup,before shutdown

????????? sysdba:

?????? ? sql>Create table log_tab(

?????? ????? user_name varchar2(20),

?????? ????? log date,

?????? ????? log_info varchar2(20));

?????? ? sql>Create or Replace trigger logon_trigger

?????? ????? after logon on database

?????? ????? Begin

?????? ??????? insert into log_tab values(user,sysdate,'成功登陸');

?????? ????? End;

?????? ? sql>Create or Replace trigger logoff_tirgger

?????? ????? before logoff on database

?????? ????? Begin

?????? ???????? insert into log_tab values(user,sysdate,'退出系統(tǒng)');

?????? ????? End;

?

?????? ? DDL觸發(fā)器:

?????? ?? 觸發(fā)事件: Create,Alter,Drop

?????? ?? sql>Create table ddl_tab(

?????? ?????? user_name varchar2(20),

?????? ?????? ddl_date date,

?????? ?????? ddl_info varchar2(20));

?????? ?? sql>Create or Replace trigger Create_trigger

?????? ?????? before create on database

?????? ?????? begin

?????? ???????? insert into ddl_tab values(user,sysdate,'創(chuàng)建基表');

?????? ?????? End;

?????? ?? sql>Create or Replace trigger Alter_trigger

?????? ?????? before alter on database

?????? ?????? begin

?????? ???????? insert into ddl_tab values(user,sysdate,'修改基表結(jié)構(gòu)');

?????? ?????? End;

?????? ??? sql>Create or Replace trigger Drop_trigger

?????? ?????? before Drop on database

?????? ?????? begin

?????? ???????? insert into ddl_tab values(user,sysdate,'刪除基表');

?????? ?????? End;

2006-4-9

??????????? (DBA)(Database Administrator)

?

???????????????? Oracle9i 數(shù)據(jù)庫體系結(jié)構(gòu)

????????????? ?物理結(jié)構(gòu)

????????????? ?邏輯結(jié)構(gòu)

????????????? ?內(nèi)存結(jié)構(gòu)

????????????? ?進(jìn)程結(jié)構(gòu)

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?????????????????? 第二部分? 體系結(jié)構(gòu)/數(shù)據(jù)庫管理?????????????????? 回目錄

第一章 Oracle9i 體系結(jié)構(gòu)與物理結(jié)構(gòu)管理

???

?? 一、數(shù)據(jù)庫物理結(jié)構(gòu)

????? 數(shù)據(jù)庫是由構(gòu)成數(shù)據(jù)庫的操作文件所組成。

????? c:\oracle\oradata\db_name\*.*???????? --windows 安裝時的選擇

????????

????? /u01/app/oracle/oradata/db_name/*.*?? --unix

?

????? 每一個數(shù)據(jù)庫物理結(jié)構(gòu)文件包括:數(shù)據(jù)文件、日志文件、控制文件及參數(shù)文件。

?

??? 二、數(shù)據(jù)文件管理(Data Files)

?????? 存儲數(shù)據(jù)庫數(shù)據(jù)的文件

?????? 查詢數(shù)據(jù)文件信息:

?????? sql>select bytes,blocks,file_name

?????????? from dba_data_files;

?????? 查看臨時文件信息:

?????? sql>select bytes,blocks,file_name

?????????? from dba_temp_files;

?????? Oracle數(shù)據(jù)文件不顯示數(shù)據(jù)大小,只顯示空間大小。

?????? 查看空閑空間大小:

?????? sql>select tablespace_name,sum(bytes)

?????????? from dba_free_space

?????? ?? group by rollup(tablespace_name);

?????? 查看臨時表空間空閑空間

?????? sql>select * from v$temp_space_header;? ---Oracle9i

?

?????? 數(shù)據(jù)塊(Data Blocks):db_block_size=2k~32k

?????????????????????????? (2k,4k,8k,16k,32k)

?????? 默認(rèn)值如下:

???????? Oracle7,Oracle8,Oracle8i 8.1.5?????? ????2k 2048

?????? ???? Oracle8i 8.1.6/8.17????????????????? ???8k 8192

?????? ???? Oracle9i 9.0.1?????????????????????? ??4k 4096

?????? ???? Oracle9i 9.2.0?????????????????????? ??8k 8192

?????? ???? Oracle10g??????????????????????????? 8k 8192

?

?????? 查詢數(shù)據(jù)塊大小:

?????? sql>show parameter db_block_size;

?????? A、修改數(shù)據(jù)文件大小

????????? sql>alter database datafile '數(shù)據(jù)文件名及路徑'

?????? ????? resize xxM;

?????? ? $df -k?? --unix下看空間大小

????????? sql>alter database datafile 'D:\ORACLE\ORADATA\HF\SYSTEM01.DBF'

?????? ????? resize 500M;

?

?????? B、數(shù)據(jù)文件自動擴(kuò)展屬性(Autoextend)

????????? 查詢數(shù)據(jù)文件自動擴(kuò)展屬性

?????? ? sql>select bytes,autoextensible,maxbytes,file_name

?????? ????? from dba_data_files;

?????? ? 修改數(shù)據(jù)庫自動擴(kuò)展屬性

?????? ? sql>alter database datafile '數(shù)據(jù)文件名及路徑'

?????? ????? autoextend on;?? ---打開數(shù)據(jù)文件自動擴(kuò)展屬性。

?????? ? sql>alter database datafile '數(shù)據(jù)文件名及路徑'

?????? ????? autoextend off;? ---關(guān)閉數(shù)據(jù)文件自動擴(kuò)展屬性。

?????? ?

?????? ? 設(shè)置數(shù)據(jù)文件每次擴(kuò)展大小:

?????? ? sql>alter database datafile "數(shù)據(jù)文件名及路徑'

?????? ????? autoextend on next 100M maxsize 2000m;? --unlimited 無限

?????? ? sql>select bytes,increment_by,file_name

?????? ????? from dba_data_files;

?

?????? ? create table sa(

?????? ? s1 char(20)) storage(initial 80m) tablespace users; ---空表初始80m.

???

??? 三、日志文件管理(Redo Log Files)

??????? 存儲數(shù)據(jù)庫修改前后信息。用于數(shù)據(jù)庫恢復(fù)。--必須要有備份和日志。

?????? 每個數(shù)據(jù)庫實(shí)例至少有兩個日志文件組,每組有一個或多個日志成員。

??????? sql>select log_mode from v$database;

?????? sql>archive log list;

??????? 查詢在線日志信息:

?????? sql>select * from v$log;

?????? 查詢?nèi)罩疚募畔?#xff1a;

?????? sql>select * from v$logfile;

?????? 查詢歸檔日志:

?????? sql>select * from v$archived_log; 在日志切換時,寫到磁盤或磁帶上的日志。

?????? 查詢歷史日志:

?????? sql>select * from v$log_history;

?????? sql>alter session set nls_date_format='yyyy.mm.dd h24:mi:ss';

?

?????? 日志文件不宜太小,一般幾十兆即可。

?????? 日志成員最少要有2個,9i里面缺省最多5個。

??????? DBA強(qiáng)制日志切換命令:

?????? sql>alter system switch logfile;

?????? A、增加日志文件組命令:

?????? ?? sql>alter database add logfile group n

?????? ?? ('第一個日志成員文件名及路徑',

?????? ??? '第二個日志成員文件名及路徑',,,) size xxM;

?

?????? ?? sql>alter database add logfile group 4(

?????????????? 'd:\oracle\oradata\hf\redo41.log',

?????????????? 'd:\oracle\oradata\hf\redo42.log')

?????????????? size 10m;

?

?????? B、刪除日志文件組:

?????? ?? sql>alter database drop logfile group n;

?????? ?? 注意:當(dāng)前組Current,Active組不得刪除

?????? ??????? 數(shù)據(jù)庫只有兩個組時,不得刪除

????????????? 先邏輯刪除,后物理刪除

?

??????????? sql>select * from v$logfile;

?

?????? C、增加日志成員文件:

?????? ?? sql>alter database add logfile member

?????? ?????? '日志成員文件名及路徑','日志成員文件名及路徑' to group n;

?

?????? ?? sql>alter database add logfiel group 1

?????? ?????? ('日志成員文件名及路徑') reuse;???? --邏輯文件拿掉了,物理文件未刪除。

??????? D、刪除日志成員文件:

?????? ?? sql>alter database drop logfile member

?????? ?????? '日志成員文件名及路徑';

?????? ?? 注意:Current組中成員不得刪除

?????? ?? ?????組中只有一個成員時,不得刪除成員

????????????? 先邏輯刪除,后物理刪除。

?

???????? 題目:請將系統(tǒng)默認(rèn)安裝產(chǎn)生的3個日志文件的大小全部由100M改為1M。

?

?? 四、參數(shù)文件

????? 在Oracle9i數(shù)據(jù)庫中,可以使用兩個不同類型的參數(shù)文件,一個為文本類型Pfile,一個為服務(wù)器類型Spfile。

????? Spfile默認(rèn)存儲路徑

????? d:\oralce\ora92\database\spfileSID.ora? --windows

????? /u01/app/oracle/product/9.2.0/dbs/spfileSID.ora? ---unix

????? Spfile修改方式:

????? sql>alter system set db_cache_size=8m

????????? comment='Changed By TYC,2006.04.09';

?

????? Pfile默認(rèn)存儲路徑

????? d:\oralce\admin\db_name\pfile\init.ora??????? --windows

????? /u01/app/oracle/admin/db_name/pfile/initSID.ora? --Unix

?

????? 建立連接關(guān)系:

????? 創(chuàng)建initSID.ora

????? d:\oracle\ora92\database\initSID.ora=>

????? 增加下面一行:

????? ifile='d:/oracle/admin/db_name/pfile/init.ora'

?

????? Nuinx:

????? /u01/app/oracle/product/9.2.0/dbs/initSID.ora

????? ln:

????? /u01/app/oracle/admin/db_name/pfile/initSID.ora

?

????? 兩個參數(shù)文件同時存在時,系統(tǒng)啟動時,優(yōu)先使用Spfile,如果未找到Spfile,則以Pfile啟動。

????? 查詢數(shù)據(jù)庫所使用的參數(shù)文件:

????? sql>show parameter spfile;

????? 兩個參數(shù)文件可以相互轉(zhuǎn)換

????? sql>Create spfile from pfile;

????? sql>Create pfile from spfile;

?

????? c:\oradim -startup -sid hf?????? ---在操作系統(tǒng)中啟動數(shù)據(jù)庫

?

?? 五、控制文件(Control Files)

????? 控制文件用于存儲數(shù)據(jù)庫結(jié)構(gòu)

????? 查詢警告文件信息,了解修改數(shù)據(jù)庫結(jié)構(gòu)的操作:

????? D:\oracle\admin\db_name\bdump\alert_SID.log

?

????? 控制文件的主要信息如下:

??????? 數(shù)據(jù)庫名稱

??????? 數(shù)據(jù)庫創(chuàng)建的時間

??????? 數(shù)據(jù)庫中全部日志文件及路徑、全部數(shù)據(jù)文件及路徑

?????? 數(shù)據(jù)庫恢復(fù)時所需同步信息

?????? 查詢數(shù)據(jù)文件同步號:

?????? sql>select file#,checkpoint_change#,name

?????? ??? from v$datafile;

?????? 查詢控制文件同步號:

?????? sql>select checkpoint_change# from v$database;

?

????? 控制文件鏡象方法:

????? A、關(guān)閉數(shù)據(jù)庫

????? B、復(fù)制控制文件

????? C、改參數(shù)文件

????? D、重啟數(shù)據(jù)庫

?

????? 查看控制文件:

? ????select * from v$controlfile;

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

????? 2006-4-10???? 第二章? Oracle9i邏輯結(jié)構(gòu)管理??????????????????????? 回目錄

?? 數(shù)據(jù)庫邏輯結(jié)構(gòu)組成:

????? 表空間(Tablespaces)

????????????????????????? 數(shù)據(jù)段: 存儲基表數(shù)據(jù)的段 --私有

???????????????????????? /????

????? 段(Segments)? ------ 索引段: 存儲索引數(shù)據(jù)的段 --私有

???????????????????????? \

???????????????????? ?? 臨時段:用于排序?? ---公有

???????????????????????? \

???????????????????? ?? 回退段:用于事務(wù)的回退 --- 公有

?

????? 區(qū)(Extents)

????? 數(shù)據(jù)塊(Data Blocks)

?

?? 一、表空間(Tablespaces)

????? 控制數(shù)據(jù)庫數(shù)據(jù)磁盤分配

????? 表空間與數(shù)據(jù)文件相對應(yīng),表空間大小等于構(gòu)成該表空間的所有數(shù)據(jù)文件大小和。??

????? 查詢表空間與數(shù)據(jù)文件對應(yīng)關(guān)系:

????? sql>select tablespace_name,bytes,file_name

????????? from dba_data_files;

????? 表空間屬性:read only,read write,online,offline

????? 修改表空間:

????? sql>alter tablespace users read only;

????? sql>select tablespace_name,status

????????? from dba_tablespaces;

????? 其中:System,Undotbs1,Temp 不得設(shè)置為read only,offilne

????

??? 二、段(Segments)

?????? A、數(shù)據(jù)段:存儲基表數(shù)據(jù)的段。

????????? 查詢表與該表的表空間對應(yīng)關(guān)系:

????????? sql>select table_name,tablespace_name

?????? ????? from user_tables;

?????? ? 將表從一個表空間移動到另外一個表空間:

?????? ? sql>alter table dept move tablespace users;

?

????????? 創(chuàng)建基表時,可以指定表空間:

?????? ? sql>Create table t_data(

?????? ????? tname varchar2(20),

?????? ????? tdate date) tablespace users;

?????? ? sql>select username,default_tablespace

?????? ????? from dba_users;

?

?????? B、索引段:存儲索引數(shù)據(jù)的段。

?????? ? 查詢索引與存儲該索引表空間對應(yīng)關(guān)系:

?????? ? sql>select index_name,table_name,tablespace_name

?????? ????? from user_indexes;

?????? ? 在創(chuàng)建索引時,可以指定表空間:

?????? ? sql>Create index d_dname on dept(dname)

?????? ????? tablespace indx;

?????? ??

?????? C、臨時段:用于排序

?????? ?? Oracle9i 后,只能使用臨時表空間來排序。

?????? ?? 查詢臨時表空間:

?????? ?? sql>select tablespace_name,contents

?????? ?????? from dba_tablespaces;

?????????? 查詢用戶所使用的臨時表空間:

?????? ?? sql>select username,temporary_tablespace

?????? ?????? from dba_users;

?????? ?D、回退段:用于事務(wù)管理

?????? ??? Oracle9i后由Oracle自己管理。

?????? ??? 查詢回退段信息:

?????? ??? sql>select * from dba_rollback_segs;

?????? ??? oralce 的事務(wù)由事務(wù)終結(jié)來分,Transaction -----> 回退段。 如:

??????????? sql>delete from --

?????? ??? sql>update ---

?????? ??? sql>create table ---

?????? ??? sql>insert ---

?????? ??? sql>alter ---

?????? ??? 以上有兩個事務(wù),設(shè)置兩個回退段。

?????? ??? SavePoint 點(diǎn):

?????? ????? ….

?????? ????? …

??????????? SavePoint a;

?????? ???? ?…

?????? ????? …

?????? ??? rollback to a;

?

??????????? 檢控回退段的狀態(tài):

?????? ??? sql>select * from v$rollstat;

?????? ??? sql>select * from v$rollname;

?

??? 三、區(qū)(Extents)

?????? 區(qū)是磁盤空間分配最小單位。一個段包含多個區(qū)。

?????? 查詢段與區(qū)的關(guān)系:

?????? sql>select extent_id,bytes,blocks

?????????? from user_extents

?????? ?? where segment_name='PAYMENT';

?????? 區(qū)大小設(shè)置參數(shù)(磁盤存儲參數(shù)):

?????? Initial:初始區(qū)大小? 8.0(2k) 8i(5*db_block_size) 9i(64k)

?????? Next:增長區(qū)大小???? 8.0(2k) 8i(5*db_block_size) 9i(64k)

?????? Minextents:區(qū)最小個數(shù)? 1

?????? Maxextents:區(qū)最大個數(shù)? 8.0(121) 8i(505) 9i(unlimit)

?????? Pctincrease:區(qū)增長百分比? 8.0(50) 8i(50) 9i(0)

?

?????? sql>Create table sales(

?????????? s1 char(20),

?????? ?? s2 char(20));

?????? 如果磁盤無限大,這張表能存多少數(shù)據(jù)?

?????? 這個表的缺省參數(shù):Storage(initial?????? 64k,

??????????????????????????? next?????????? 64k,

???????????????????? ??? minextents???? 1,

???????????????????? ??? maxextents???? unlimit,

???????????????????? ??? pctincrease??? 0);

?

?????? sql>Create table sales(

?????????? s1 char(20),

?????? ?? s2 char(20))storage(initial 200k next 400k minextents 2 maxextents 20000 prtincrrease 0);

?????? 查詢可以用于以下對象

??????? 表空間

??????? 回退段

??????? 表

??????? 索引

?????? 存儲參數(shù)優(yōu)先原則:實(shí)體級參數(shù)>表空間級參數(shù)

?

??? 四、數(shù)據(jù)塊(Data Blocks)

?????? 數(shù)據(jù)塊是數(shù)據(jù)文件存儲空間單位,是I/O最小單位

??????? 在Oracle9i中,可以使用標(biāo)準(zhǔn)數(shù)據(jù)塊及非標(biāo)準(zhǔn)數(shù)據(jù)塊,其大小為 2k,4k,8k,16k,32k。

?????? 標(biāo)準(zhǔn)塊大小由參數(shù)db_block_size設(shè)置,非標(biāo)準(zhǔn)塊在創(chuàng)建表空間時,由參數(shù)blocksize設(shè)置。

?????? 標(biāo)準(zhǔn)塊用于系統(tǒng)表空間及臨時表空間、非標(biāo)準(zhǔn)塊數(shù)據(jù)塊用于用戶數(shù)據(jù)表空間。

?????? 查詢表空間大小:

?????? sql>select tablespace_name,block_size

?????? ??? from dba_tablespaces;

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

第三章? Oracle9i 內(nèi)存結(jié)構(gòu)管理?????????????????????? 回目錄

??? 一、SGA(System Global Area)系統(tǒng)全局區(qū)

????? 1、數(shù)據(jù)緩沖區(qū)(Database Buffer Cache):存儲由磁盤數(shù)據(jù)文件讀入的數(shù)據(jù),全體用戶共同使用。

???????? 數(shù)據(jù)緩沖區(qū)的參數(shù):

?????? ?db_block_buffers (Oracle8i/8/7)

?????? ?db_cache_size??? (Oracle9i/10g)

?

?????? ?非標(biāo)準(zhǔn)塊緩沖區(qū)設(shè)置參數(shù):db_nk_cache_size(其中:n=2,4,8,16,32)

?????? ?在數(shù)據(jù)庫中,可以同時設(shè)置多個數(shù)據(jù)緩沖區(qū)。例如:

?????? ?db_cache_size=128m

?????? ?db_2k_cache_size=64m

?????? ?db_2k_cache_size=32m

?????? ?試判斷以下設(shè)置是否正確:

?????? ??? ...

??????????? db_block_size=8k????? --標(biāo)準(zhǔn)塊設(shè)置

?????? ??? db_4k_cache_size=8m

?????? ??? db_cache_size=128m

?????? ??? db_8k_cache_size=16m (x) 和標(biāo)準(zhǔn)塊設(shè)置重復(fù)

?????? ??? db_16k_cache_size=64m

?????? ??? ...???

?????? ???

?????? ? oracle資源占用以庫為單位,一個庫要占用資源50-57%,所以一臺機(jī)子最好只裝一個數(shù)據(jù)庫。

????????? 解決方法:同一個數(shù)據(jù)庫,多個表空間。 一個實(shí)例相當(dāng)于一個數(shù)據(jù)庫,oracle的表空間級相當(dāng)于sqlserver的數(shù)據(jù)庫級。

????????? 可以在表空間級定義用戶,密碼。

?

?????? 2、共享池(Shared Pool)

????????? 共享池用于對SQL、PL/SQL程序進(jìn)行語法分析及編譯。

?????? ? 共享池大小設(shè)置參數(shù):shared_pool_size

?

?????? 3、日志緩沖區(qū)(Redo Log Buffer)

????????? 存儲數(shù)據(jù)庫修改信息。

?????? ? 在日志緩沖區(qū)寫滿時,由LGWR(日志寫入程序)寫入磁盤日志文件組。

?????? ? 日志緩沖區(qū)大小設(shè)置:log_buffer

?????? ? 查詢?nèi)罩揪彌_區(qū)大小:

?????? ? sql>show parameter log_buffer

?????? ? 顯示SGA區(qū)大小:

????????? sql>show sga

?????? ? sql>show parameter sga_max_size

?????? ? sql>show parameter db

?????? ? sql>show parameter log

?????? ? sql>show parameter

?????? ? sql>select * from v$sga;

?????? ? sql>select * from v$sgastat;

??? 二、PGA(rogram Global Area)

??????? 程序全局區(qū)用于變量及程序設(shè)計

?????? 程序全局區(qū)設(shè)置參數(shù):pga_aggregate_target

?

??? 三、SORT AREA:排序區(qū):

??????? 用于order by,group by ,distinct等排序

??????? 排序區(qū)大小設(shè)置參數(shù):sort_area_size

?????? 內(nèi)存使用完后,ORALCE使用磁盤臨時空間,會造成臨時空間的增長。

?

??? 四、LARGE POOL大池:

??????? 用于Rman數(shù)據(jù)庫備份工具。

?????? 大池設(shè)置參數(shù):large_pool_size

?

??? 五、JAVA POOL:

?????? 用于Java語言

?????? 設(shè)置參數(shù):java_pool_size

?????

?????

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

第四章? Oralce9i實(shí)例及進(jìn)程結(jié)構(gòu)??????????? 回目錄

??? 一、什么是Oralce實(shí)例

?????? 每一個運(yùn)行的數(shù)據(jù)庫都與一個實(shí)例相聯(lián)系。數(shù)據(jù)庫啟動時將分配SGA并啟動后臺數(shù)據(jù)庫進(jìn)程。該SGA與后臺進(jìn)程合成Instance.

?????

????? Unix 下設(shè)置實(shí)例方法:

????? $CRACLE_SID=HF

????? $export ORACLE_SID

?

????? Windows下設(shè)置實(shí)例方法:

????? c:\>set oracle_sid=hf

?

??? 二、Oracle進(jìn)程結(jié)構(gòu)

?

????????????????????????????? 用戶進(jìn)程

????????????????? ??????????/

????????????????????? 多進(jìn)程 - 服務(wù)器進(jìn)程

??????????????????? /?????? \

????? Oracle 主要進(jìn)程?????????? 后臺進(jìn)程

??????????????????? \

????????????? ????? 單進(jìn)程

????? 查詢后臺進(jìn)程信息:

????? sql>select name,description

????????? from v$bgprocess;

???

??? 三、用戶進(jìn)程和服務(wù)器進(jìn)程

???????????? ????CBO (Cost_Based optionmizer)基于成本的規(guī)劃器

???????????? ??/

?????? 執(zhí)行計劃

???????????? ??\

?????? ???????????? RBO (rule_Based optionmizer)基于規(guī)則的規(guī)劃器

?

?

?????????? Oralce 的優(yōu)化 -- 減少分析和編譯

?????? ?

??? 四、后臺進(jìn)程

?????? A、DBWR 數(shù)據(jù)寫入進(jìn)程(Database Writer)

????????? 將數(shù)據(jù)由數(shù)據(jù)緩沖區(qū)寫入磁盤數(shù)據(jù)文件。

?????? ? 采取LRU(least Recently Used)最近最少使用原則,將最近數(shù)據(jù)保留在內(nèi)存,以減少I/O操作。

?????? ? DBWR進(jìn)程設(shè)置參數(shù):

?????? ? db_writer_processes=1~10 (Oracle8i)

?????? ???????????????????? =1~20 (Oracle9i/10g)

?????? ? dbwr_io_salvers

?????? B、LGWR

?????? C、ARCH:歸檔進(jìn)程。在日志切換時,將日志信息寫入磁盤或磁帶,用于數(shù)據(jù)庫恢復(fù)。

????????? ARCH進(jìn)程設(shè)置參數(shù):log_archive_start=ture|false

?????? ???????????? 默認(rèn):false

?????? ? sql>show log_archive_start

?????? D、CKPT:檢驗(yàn)點(diǎn)進(jìn)程(checkpoint)

????????? DBA強(qiáng)制產(chǎn)生檢驗(yàn)點(diǎn)命令:

?????? ? sql>alter system checkpoint;

?????? ? sql>show parameter log_checkpoint_timeout

????????? sql>show parameter log_checkpoint_interval

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

第五章 Oracle9i表空間管理???????????????????? 回目錄

一、Oracle9i表空間概述

?? 查詢數(shù)據(jù)庫中的碎片:

?? sql>select * from dba_free_space;

二、表空間分類

?? 1、按照表空間中區(qū)的管理方式不同,表空間分為數(shù)據(jù)字典管理類型及本地化管理類型。

????? 查詢表空間中區(qū)的管理方式:

????? sql>select tablespace_name,extent_management,allocation_type

????????? from dba_tablespaces;

?

????? 其中:?? UNIFORM --每個區(qū)的大小一樣。

????????????? SYSTEM? --每個區(qū)有數(shù)據(jù)庫管理,動態(tài)分配。

2006-4-11

?

?? 2、在數(shù)據(jù)字典管理表空間中,區(qū)的大小由參數(shù)initial,next,minextents,maxextents,pctincrease設(shè)置。

????? 在本地化管理表空間中區(qū)的管理分為uniform及autoallocate兩種。

?

?? 3、數(shù)據(jù)字典管理表空間主要用于Oracle8i及之前的數(shù)據(jù)庫;本地化管理表空間主要用于Oracle9i及以后版本數(shù)據(jù)庫中。

?

?三、創(chuàng)建數(shù)據(jù)字典管理表空間(Oracle7/8/8i)

??? sql>Create tablespace s_date datafile

??????? 'd:\oracle\oradata\ora8i\s_data01.dbf' size 100m

?????? default storage (initial 100k

?????? ???????????????? next??? 100k

???????????????????? ?minextents 1

???????????????????? ?maxextens 2000

???????????????????? ?pctincrease 0);

?四、創(chuàng)建本地化管理表空間(Oracle8i/9i/10g)

??? 1、Uniform:區(qū)大小一律相同

?????? sql>Create tablespace product datafile

?????????? 'd:\oracle\oradata\hf\prod01.dbf' size 100m

?????? ?? autoextend on next 100m maxsize 2000m,

?????? ?? 'd:\oracle\oradata\hf\prod02.dbf' size 100m

?????? ?? autoextend on next 100m maxsize 2000m

?????? ?? extent management local uniform size 100k;

?????? 查詢表空間情況:

?????? sql>select tablespace_name,extent_management,allocation_type

???? ??????from dba_tablespaces;

?????? sql>select tablespace_name,initial_extent,next_extent,min_extents,max_extents,pct_increase

?????????? from dba_tablespaces;

?????? 刪除表空間:

?????? sql>drop tablespace product including contents and datafiles;

?????? 如果表是空的可以直接刪除:

?????? sql>drop tablespace product including contents;? (Oracle8i只能這樣寫,并手工刪除文件)

?

??? 2、Autoallocate:表空間中區(qū)的大小由系統(tǒng)自動動態(tài)分配

?????? sql>Create tablespace account datafile

?????????? 'd:\oracle\oradata\hf\acc01.dbf' size 100m,

?????? ?? 'd:\oracle\oradata\hf\acc02.dbf' size 100m

?????? ?? extent management local autoallocate;

?????? sql>select maxbytes,file_name,bytes,tablespace_name

?????????? from dba_data_files;

?

?五、修改表空間:

??? 為表空間增加數(shù)據(jù)文件

??? sql>alter tablespace account add datafile

??????? 'd:\oracle\oradata\hf\acc03.dbf' size 100m

?????? autoextend on next 100m maxsize 2000m;

?

??? 數(shù)據(jù)文件移動:將數(shù)據(jù)文件從一個磁盤移動到另一個磁盤;

??? 移動步驟:

??? A、將表空間設(shè)置為offline

?????? sql>alter tablespace account offline;

??? B、物理移動

??? C、邏輯移動

?????? sql>alter tablespace account rename datafile

??????????? '原數(shù)據(jù)文件名及路徑' to '目標(biāo)數(shù)據(jù)文件名及路徑';

??? D、將表空間設(shè)置為online

?????? sql>alter tablespace account online;

?

?????? sql>startup restrict? --數(shù)據(jù)庫以限制方式運(yùn)行

?????? sql>grant restricted session to 指定用戶;

?

? 注意:System,undotbs1,temp數(shù)據(jù)文件不得移動

?

?六、創(chuàng)建Undo表空間(撤消表空間)

??? sql>Create undo tablespace undotbs datafile

??????? 'd:\oracle\oradata\hf\undo01.dbf' size 100m

?????? autoextend on next 100m maxsize unlimited

?????? extent management local autoallocate;

????

??? 設(shè)置參數(shù):undo_tablespace=undotbs

??? 重新啟動數(shù)據(jù)庫。

?

?

?

?

?

?

第六章?? Oralce9i數(shù)據(jù)庫用戶管理????????????????? 回目錄

?二、創(chuàng)建資源限制文件(Profile)

??? sql>alter system set resource_limit=true;

??? 創(chuàng)建資源限制文件:

??? sql>Create profile acc limit

??????? failed_login_attempts 2

?????? password_lock_time 1

?????? sessions_per_user 2

?????? idle_time 2;

?

三、創(chuàng)建用戶:

?? sql>Create user acc03 identified by acc03

?????? default tablespace users

?????? temporary tablespace temp

?????? profile acc

?????? quota 50m on users;? --如果不限制,這行不要

??? sql>grant connect,resource to acc03;

??? 為用戶解鎖:

??? sql>alter user acc03 account unlock;

?

?四、修改用戶:

??? 修改口令字:

??? sql>alter user acc03 indentified by '123';

??? 修改用戶缺省表空間

??? sql>alter user acc03 default tablespace example;

??? 取消資源限制:

??? sql>alter user acc03 profile default;

??? 取消空間使用限制

??? sql>alter user acc03 quota unlimited on users;

?

?五、刪除用戶

? ??sql>drop user acc03 | cascade;??? --cascade用在此用戶有實(shí)體。

?

?

?

?

?

?

?

?

第七章 Oracle9i數(shù)據(jù)庫備份與恢復(fù)??????????????? 回目錄

?一、數(shù)據(jù)庫歸檔模式

?二、數(shù)據(jù)庫歸檔模式的配置

??? 設(shè)置參數(shù):

??? log_archive_start=true

??? log_archive_dest=目錄名

??? log_archive_format=%t-%s.arc???? --日志存儲格式%t線程號 %s日志號

??? log_archive_duplex_dest=鏡像目錄名

?

??? sql>shutodwn immediate

??? sql>startup mount?????? --mount只打開控制文件,不打開數(shù)據(jù)庫文件。

??? sql>alter database archivelog;

??? sql>alter database open;

?

??? sql>select log_mode from v$database;

??? sql>archive log list

??? sql>alter system switch logfile

?

?三、物理備份

??? 1、完全數(shù)據(jù)庫脫機(jī)備份(ARCHIVELOG/NOARCHIVELOG)

??? 2、聯(lián)機(jī)部分?jǐn)?shù)據(jù)庫備份(ARCHIVELOG)

?????? A、確認(rèn)數(shù)據(jù)庫運(yùn)行在ARCHIVELOG模式

?????? B、設(shè)置要備份的表空間為備份狀態(tài)

????????? sql>alter tablespace 表空間 begin backup;

?????? C、操作系統(tǒng)備份相應(yīng)的數(shù)據(jù)文件

?????? D、設(shè)表空間結(jié)束標(biāo)志:

????????? sql>alter tablespace 表空間名 end backup;

?????? ? begin 和 end 為了下次從哪里恢復(fù)而做的標(biāo)記。期間的數(shù)據(jù)不保存。

?

?????? ? sql>Create tablespace account datafile

?????? ????? 'd:\oracle\oradata\hf\acc01.dbf' size 10m;

?????? ? sql>alter tablespace account begin backup;

?????? ? sql>alter tablespace account end backup;

?????? ? sql>Create table account(

?????? ????? s1 char(20)) tablespace account;

?????? ? sql>insert into account values('計算技術(shù)');

?????? ? sql>insert into account select * from account;

?

?????? ? 數(shù)據(jù)文件恢復(fù)命令:

?????? ? sql>alter database datafile '數(shù)據(jù)文件名及路徑'; --日志自動讀取

?????? ? 或

?????? ? sql>recover datafile '數(shù)據(jù)文件名及路徑';? --交互式,可以輸路徑

?????? ? sql>alter database open;

?

?????? ? 基于時間的數(shù)據(jù)庫恢復(fù):

?????? ? sql>alter database recover database until time '2006-04-11 13:00:00';

?????? ? 將數(shù)據(jù)庫向回倒。

?

?四、邏輯備份

??? c:\>exp scott/tiger tables=(dept,emp) file=d:1? --表方式卸出

??? c:\>exp scott/tiger file=d:\f2? --用戶方式

??? c:\>exp system/manager full=y file =d:\f3? --全部數(shù)據(jù)庫方式

?

??? 其他關(guān)鍵字:

????? C:\>exp scott/tiger direct=y file =d:\f2? --直接路徑卸出,不經(jīng)過內(nèi)存,直接從文件卸出,適合大表。

????? C:\>exp scoot/tiger tables=(emp) query=\"where sal>1500\" file=d:\f2 --條件卸出

????? C:\>exp system/manager full=y filesize=100m? --限制卸出文件大小

????? C:\>exp system/manager full=y inctype=complete? --為增量設(shè)基準(zhǔn)

????? C:\>exp system/manager full=y inctype=incremental?? --增量卸出

?

??? 實(shí)際中以物理備份為好,當(dāng)需要數(shù)據(jù)遷移時,用邏輯備份。邏輯備份不許要日志,但速度較慢。

?

?五、Rman恢復(fù)管理器

?? Unix中創(chuàng)建數(shù)據(jù)庫的圖形界面工具:

?? $dbca (Oracle9i/10g)

?? 1、創(chuàng)建恢復(fù)目錄

????? 創(chuàng)建Rman數(shù)據(jù)庫

????? 創(chuàng)建Rman用戶

????? sql>Create user rman identified by rman

????????? default tablespace users

????????? temporary tablespace temp;

????? sql>grant connect,resource,recovery_catalog_owner? to rman;

?

????? c:\>set oracle_sid=rman? --確定進(jìn)rman庫

????? 因?yàn)閛racle為rman庫默認(rèn)建立的rman用戶,限制太多。

????? 所以刪除默認(rèn)rman用戶,自己建立用戶。

????? sql>drop user rman cascade;

????? 創(chuàng)建用戶,授權(quán)給新用戶。

????? 創(chuàng)建恢復(fù)目錄

????? c:\>set oracle_sid=rman

????? c:\>rman catalog rman/rman

????? RMAN>Create catalog; (刪除命令:drop catalog) 在rman中建表,

????? c:\rman catalog rman/rman

?

??? 2、將Rman連接到目標(biāo)數(shù)據(jù)庫

????? c:\>set oracle_sid=hf

????? c:\>rman target sys/abcd catalog rman/rman@rman --target表示目標(biāo)庫,catalog表示rman庫,@表示連接到rman上

????? 注冊數(shù)據(jù)庫:在Rman恢復(fù)目錄中寫入目標(biāo)庫信息。

????? RMAN>register database;

????????? >report schema;? 應(yīng)該顯示目標(biāo)數(shù)據(jù)庫中的表空間和數(shù)據(jù)文件,Rman配置成功。

?

??? 3、使用Rman備份數(shù)據(jù)庫

?????? COPY:復(fù)制文件(數(shù)據(jù)文件和控制文件)只能copy到磁盤。

?????? RMAN>copy datafile 9 to 'c:\oracle\back\9.cf';

?????? 顯示備份文件信息:

?????? RMAN>list copy of datafile 9;

?????? 備份控制文件:

?????? RMAN>copy current controlfile to 'c:\oracle\back\control.cf';

?????? RMAN>list copy of controlfile;

?????? 刪除備份文件:

?????? RMAN>delete copy of datafile 9;

?????? RMAN>delete copy of controlfile;

?????? 復(fù)制多個文件:

?????? RMAN>run {

???????????????? copy

????????????? ?datafile 9 to 'c:\oralce\back\9.cf,

????????????? ?datafile 8 to 'c:\oracle\back\8.cf,

????????????? ?current controlfile to 'c:\oracle\back\control.cf';

????????????? ?}

?????? RMAN>host "cls";

?

?????? BACKUP:可以備份數(shù)據(jù)庫、表空間、數(shù)據(jù)文件,可以備份到磁盤和磁帶,并對備份文件進(jìn)行壓縮。

?????? RMAN>backup datafile 9,8,7

??????????? format='c:\oracle\back\%T_%U';? %T系統(tǒng)當(dāng)前時間,%U系統(tǒng)唯一型,備份文件不會重復(fù)。

?????? 顯示:

?????? RMAN>list backup of datafile 9;

?????? 刪除:

?????? RMAN>delete backup of datafile 9;

?????? 刪除所有文件:

?????? RMAN>delete backup;

?????? 備份表空間:

?????? RMAN>backup tablespace users,indx,odm

??????????? format='c:\oracle\back\'%T_%U';

?????? 全部備份:

?????? RMAN>backup tablespace database

??????????? format='c:\oracle\back\'%T_%U';

?

??? 4、使用RMAN恢復(fù)數(shù)據(jù)庫

?????? RMAN>restore |datafile,tablespace,database? --向回考,物理性恢復(fù)

?????? RMAN>recover |datafile,tablespace,database? --同步恢復(fù)。

?

??? 5、Rman恢復(fù)實(shí)例

?????? A、恢復(fù)數(shù)據(jù)文件

????????? RMAN>startup mount

?????? ????? >restore datafile 9;

?????? ????? >recover datafile 9;

?????? ????? >alter database open;

?????? B、恢復(fù)表空間

????????? RMAN>startup mount

?????? ???? ?>restore tablespace users,

?????? ????? >recover tablespace users;

?????? ????? >alter database open;

?

其它:

在Windows下清除Oracle8i/9i/10g運(yùn)行環(huán)境

1、刪除Oracle注冊表

??? regedit.exe->Local Machine->Software->ORACLE

?

2、刪除Oracle服務(wù)

? regedit.exe->Local Machine->System->CurrentControlSet->Services->ORA*

?

3、刪除Oracle事件日志

? regedit.exe->Local Machine->System->CurrentControlSet->Services->Eventlog->Application->ORA*

?

4、刪除NT安裝磁盤\Program Files\Oracle目錄

?

5、刪除Oracle環(huán)境變量

?? 控制面板->系統(tǒng)->高級->環(huán)境變量

?

6、刪除Oracle菜單

?1

7、重新啟動操作系統(tǒng)

?

8、刪除Oracle主目錄

?

注意: oracle用于unix時,長時間不重起,重啟一次時間非常長。

?

《Oracle數(shù)據(jù)庫系統(tǒng)管理》(上、下冊)???????????? --清華大學(xué)出版社

《Oracle Developer/2000開發(fā)實(shí)例與應(yīng)用技術(shù)》??? --清華大學(xué)出版社

《Oracle9i數(shù)據(jù)庫系統(tǒng)管理大全》???????????????? --清華大學(xué)出版社

《Oracle10g數(shù)據(jù)庫系統(tǒng)管理》??????????????????? --機(jī)械工業(yè)出版社

?

轉(zhuǎn)載于:https://www.cnblogs.com/we1700/archive/2012/02/21/2361485.html

總結(jié)

以上是生活随笔為你收集整理的oracle 基础1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

波多野结衣精品在线 | 亚洲女在线 | 国产中文字幕在线播放 | 日韩欧美国产免费播放 | 美女黄频 | 色婷婷综合视频在线观看 | 97国产精品 | www.亚洲黄色 | 激情电影影院 | 婷婷婷国产在线视频 | 黄色一级在线视频 | 成人一区在线观看 | 精品色综合 | 日韩三级一区 | 日韩欧美视频一区二区 | 超碰在线97免费 | 国产精品免费视频网站 | 午夜色婷婷 | 国产在线观看地址 | 永久免费毛片 | 国产99精品| 日日天天干 | 久久无码精品一区二区三区 | av免费看在线 | 人人爽人人爽人人爽人人爽 | 黄色aa久久 | 国产精品久久久久久久久久白浆 | 性色在线视频 | av一级网站 | 天天射天天色天天干 | 久久免费视频2 | 丁香六月网 | 久久精品视频在线免费观看 | 日本久久电影 | 久久久久久久综合色一本 | 免费成人av电影 | 日韩黄色一级电影 | 国产一级小视频 | 狠狠色丁香久久婷婷综合丁香 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲理论在线观看电影 | 久久亚洲福利视频 | 超碰在线资源 | 丝袜美女在线观看 | 五月花激情 | 精品视频免费播放 | 欧美精品一区二区三区一线天视频 | 天天综合导航 | 国产在线精| 国产99久久久久久免费看 | 久久看片网站 | 九九涩涩av台湾日本热热 | 久久电影国产免费久久电影 | 日韩高清成人 | 精品婷婷| 日本在线视频一区二区三区 | 久久国产露脸精品国产 | 成人h动漫在线看 | 天天色天天操综合网 | 国产日韩视频在线观看 | 国际精品久久久久 | 国产视频一区二区在线播放 | 97香蕉视频 | 99久久精品视频免费 | 中文字幕一区2区3区 | 日本精品一区二区在线观看 | 精品国产伦一区二区三区观看体验 | 成年人免费看片网站 | 天天插天天干天天操 | 色综合久久66 | 人人干干人人 | 最近高清中文字幕在线国语5 | 国产免费影院 | 国产在线精品视频 | 免费黄色av电影 | 亚洲视频精品 | 在线国产专区 | 国产精品久久久久久久久久妇女 | av中文字幕av | 国产亚洲精品久久久久5区 成人h电影在线观看 | 一区二区中文字幕在线观看 | 91精品国产自产在线观看 | 色婷av| 一区二区视频电影在线观看 | 久久视频精品在线观看 | 成年人网站免费观看 | 日韩av网站在线播放 | 免费观看xxxx9999片 | 国产日韩精品视频 | 日韩av在线不卡 | 久久精品成人 | 亚洲精品乱码久久久久久蜜桃动漫 | 在线你懂的视频 | 欧美日韩中文字幕在线视频 | 亚洲最大免费成人网 | 视频福利在线 | 色婷婷一区 | 成人午夜剧场在线观看 | 久久黄色免费视频 | 一级一级一片免费 | 91精彩视频 | 免费在线电影网址大全 | bbbbb女女女女女bbbbb国产 | 中文字幕一区在线观看视频 | 美女久久久| 青青河边草免费 | 精品久久久网 | 亚洲欧美日韩国产一区二区 | 69久久夜色精品国产69 | 欧美一区二区精品在线 | 91成品人影院| 国产亚洲在线 | 97精品国自产拍在线观看 | 人人干网站 | 又黄又爽的免费高潮视频 | 国产精品一区免费在线观看 | 国产亚洲精品美女久久 | 国产成人一区二区啪在线观看 | 日韩美女免费线视频 | 色婷婷六月 | 最新国产在线 | 国产91国语对白在线 | av大全免费在线观看 | 欧美午夜a | 天天综合网在线观看 | 久色小说 | 国产精品手机视频 | 五月天激情视频在线观看 | 日韩国产高清在线 | 欧美99精品 | 国产视频欧美视频 | 日韩精品一区二区久久 | 久久99网站| 午夜精品一区二区三区在线观看 | 久操视频在线观看 | 精品国精品自拍自在线 | 婷婷在线精品视频 | 欧美日韩视频一区二区 | 久久精品久久精品久久 | 在线观看亚洲专区 | 久久久久久久免费观看 | 黄色三级免费观看 | 黄色视屏免费在线观看 | 搡bbbb搡bbb视频 | 亚洲一区二区三区91 | 日韩高清一二区 | 高潮久久久久久 | 日日夜色 | 五月丁婷婷| 99精品偷拍视频一区二区三区 | 黄色免费电影网站 | 免费精品人在线二线三线 | 韩国三级一区 | 激情视频二区 | 免费情趣视频 | 一区二区三区三区在线 | 91女子私密保健养生少妇 | 国产精品9999久久久久仙踪林 | 国产成人a亚洲精品v | 在线91网 | 亚洲一区二区视频在线播放 | 欧美日韩首页 | 色偷偷88888欧美精品久久 | 在线观看日本高清mv视频 | 久久国产精品免费视频 | 国产精品白浆 | 久在线 | 国产精品99久久久久久久久 | 国产3p视频 | 日韩免费区| 国产精久久久久久妇女av | 色狠狠狠| 日韩理论片在线 | 天天舔天天射天天操 | 日本夜夜草视频网站 | 免费99精品国产自在在线 | 六月丁香婷婷在线 | 午夜黄色| 天天干亚洲 | 色在线免费视频 | 九九免费精品视频 | 国产91在线 | 美洲 | 日韩在线免费视频观看 | 91亚洲狠狠婷婷综合久久久 | 五月婷婷丁香综合 | 欧美 亚洲 另类 激情 另类 | 日韩欧美高清一区二区 | 在线国产黄色 | 九九久久久久久久久激情 | 91成人观看 | 日韩久久精品一区二区三区下载 | 黄色在线视频网址 | www.干| 91久久精品一区二区二区 | 91看片淫黄大片一级在线观看 | 人人擦 | 丁香五月亚洲综合在线 | 美女av电影 | 中文字幕一区二区三区在线播放 | 伊人久久精品久久亚洲一区 | 激情欧美国产 | 久久久久福利视频 | 久久天天躁夜夜躁狠狠躁2022 | 99日精品 | 不卡国产视频 | 91看片看淫黄大片 | 有没有在线观看av | www.久久色 | 国产在线视频一区二区三区 | 在线激情网| 国产亚洲精品久久久网站好莱 | 色婷婷狠狠五月综合天色拍 | 色婷婷综合久久久中文字幕 | 欧美成年人在线视频 | 久久天天躁狠狠躁夜夜不卡公司 | 中文字幕av在线播放 | 久久久精品国产一区二区电影四季 | 久久久精品福利视频 | 91视频电影| 国产福利一区在线观看 | 又黄又刺激 | 国产视频2| 成人h动漫在线看 | 久精品在线 | 精品国产亚洲一区二区麻豆 | 欧美日韩性 | 伊人亚洲精品 | 日韩成人精品一区二区 | 黄色毛片在线 | 久久精品一区二区 | 国产综合在线视频 | 国产淫a | 涩涩网站免费 | 在线免费观看麻豆视频 | 午夜精品视频在线 | 午夜天使| 在线天堂中文www视软件 | 日韩欧美在线一区 | 欧美嫩草影院 | 黄色软件在线观看 | 天天搞天天干天天色 | 一区二区精品国产 | 久久大片 | 丁香网婷婷 | 黄网站大全 | 射射射综合网 | av官网 | 在线国产欧美 | 国产91区 | 国产va精品免费观看 | 在线黄色国产 | 高清一区二区三区av | 99人成在线观看视频 | 97在线观视频免费观看 | 国产高清视频免费观看 | 99久久99热这里只有精品 | 日韩性色 | 国产黄网在线 | av片在线看 | 色综合久久久久网 | 日韩成人免费在线观看 | 97成人免费 | 国产一区在线视频播放 | 国产精品久久久久久欧美 | 色多视频在线观看 | 国产小视频91 | 天天视频亚洲 | 精品国产乱码久久久久久久 | 九色自拍视频 | 免费观看v片在线观看 | 日韩一区二区三区高清在线观看 | 久久久久网址 | 久久伦理电影网 | 国产精品福利无圣光在线一区 | 婷婷精品国产一区二区三区日韩 | 国产99区| 久久亚洲热 | 精品国内 | 国产精品二区在线 | a久久久久 | 国产成人精品一区二区在线 | 九九九九九九精品任你躁 | 91精品在线免费观看视频 | 国产美女在线精品免费观看 | 日韩av不卡播放 | 麻豆一区二区三区视频 | 国产不卡精品视频 | 国产亚洲精品久久久久久久久久久久 | 一级做a视频 | 欧美精品做受xxx性少妇 | 在线成人免费电影 | 99热最新地址 | 免费看的黄色的网站 | 国产成人在线网站 | 国产成人免费观看久久久 | 九九热久久免费视频 | 91精品1区2区| av电影免费在线播放 | 成人久久18免费网站麻豆 | 丁香六月婷婷综合 | 成人国产电影在线观看 | 欧美激情va永久在线播放 | 天堂网一区二区 | av免费观看网址 | 久久人人爽人人爽人人片av软件 | 麻豆国产在线播放 | 日韩高清免费无专码区 | 久草在线免 | 久久精品香蕉 | 国产精品第2页 | 欧美在线99 | 成人精品电影 | 激情五月在线观看 | 韩日精品中文字幕 | 久久久久国产精品一区二区 | 韩日电影在线观看 | 九草视频在线观看 | 久久人人爽人人人人片 | 国产综合91 | 日韩二区三区在线观看 | 99久久毛片 | 五月婷婷综合在线视频 | 91精品免费在线视频 | 久久区二区 | 国产精品尤物 | 探花视频在线观看免费 | 成人小视频在线观看免费 | 91成人在线观看高潮 | bbbbb女女女女女bbbbb国产 | 免费国产在线视频 | 婷婷色中文 | 国产成人精品免高潮在线观看 | 成年人黄色免费网站 | 在线看av的网址 | 国产精品12345 | 精品少妇一区二区三区在线 | 在线免费观看一区二区三区 | 国产精品v a免费视频 | 免费精品人在线二线三线 | av成人在线播放 | 欧美在线资源 | 久久精品亚洲一区二区三区观看模式 | 国产专区视频在线 | 成人黄色小说在线观看 | 手机av在线网站 | 丁香综合网 | 免费国产在线视频 | 一区二区三区精品在线视频 | 天天操天天干天天操天天干 | 色婷婷狠狠18 | 日本在线观看一区二区 | 久久精品在线 | 91一区一区三区 | 日韩中文字幕a | 最近中文字幕视频网 | 在线观看视频黄 | 欧美日韩激情视频8区 | 韩日精品视频 | 日韩免费b| 久久久久黄色 | 日韩免费高清在线 | 国产视频精品免费 | 成人在线观看网址 | 国产精品亚洲视频 | 亚洲六月丁香色婷婷综合久久 | 9免费视频 | 99精品偷拍视频一区二区三区 | 天天拍夜夜拍 | 91av资源网 | 九九热精| 精品免费一区 | 久久 在线 | 精品国产福利在线 | 伊人电影在线观看 | 在线观看久久久久久 | 国产尤物视频在线 | 亚洲欧美日韩精品一区二区 | 国产热re99久久6国产精品 | 国产精品一区二区视频 | 午夜国产福利在线 | 五月天婷婷在线观看视频 | 97综合网| 国产成人av电影 | 日韩 精品 一区 国产 麻豆 | 日本中文字幕在线一区 | ,午夜性刺激免费看视频 | 亚洲婷婷在线视频 | 欧美精品一区二区蜜臀亚洲 | 国产精品免费观看网站 | 国产成人333kkk | 国产一区在线精品 | 我要色综合天天 | 成全在线视频免费观看 | 97在线免费| 日韩成人精品一区二区 | 91视频 - 114av| 麻豆视频免费在线 | av福利网址导航大全 | 一区二区三区免费在线 | 免费av大片 | 亚洲三级毛片 | 久久精品久久久精品美女 | 国产一级电影在线 | 久久久久久久久久免费视频 | 999久久久 | 男女激情免费网站 | 国产成人精品a | 亚洲视频电影在线 | 国产黄色免费 | 欧美日韩国产一区二区三区 | 免费a网址 | 激情导航| 亚洲精品国产精品国自产观看浪潮 | 九九久久在线看 | 91精品免费在线观看 | 狠狠干成人 | 五月综合| 久久午夜电影网 | 日韩午夜大片 | 91视频啊啊啊 | 国产精品手机在线播放 | 亚洲无吗天堂 | 国产日产高清dvd碟片 | 在线精品视频在线观看高清 | 91一区二区在线 | 国产精品99久久久久的智能播放 | 特级黄录像视频 | 亚洲激情视频在线观看 | 丰满少妇高潮在线观看 | 中文字幕在线观看国产 | 天天爽人人爽 | 福利一区二区在线 | 视频三区在线 | 66av99精品福利视频在线 | 亚洲aⅴ乱码精品成人区 | 在线观看中文字幕一区二区 | 日韩精品一区二区在线观看 | 国内精品久久久久影院一蜜桃 | 探花视频在线版播放免费观看 | 国产免费又爽又刺激在线观看 | 日韩精品免费在线播放 | 国产伦精品一区二区三区高清 | 国产成人一区二区三区在线观看 | 亚洲最新av在线网址 | av在线激情| 99久久精品国产一区二区三区 | 中文字幕乱偷在线 | 韩国av免费观看 | 天天干.com | 国产精品18久久久久久久久 | av在线专区| 欧美日韩久久不卡 | 久久精品久久精品久久 | 久久精品精品电影网 | 亚洲永久精品国产 | 国产成人中文字幕 | 97在线视频免费观看 | 久久久久电影网站 | 丁香综合av | 中文字幕av最新更新 | 久久视频一区 | 一区二区三区韩国免费中文网站 | 在线观看中文字幕一区 | 九九热只有这里有精品 | 久久精品国产精品亚洲 | 日韩免费播放 | 久久视频国产精品免费视频在线 | 91精品国产网站 | 亚洲午夜av电影 | 欧美国产日韩在线视频 | 国产99久久久久久免费看 | 99精品在线观看 | 中文字幕有码在线观看 | 99久久精品久久久久久动态片 | 2018亚洲男人天堂 | 亚洲天堂自拍视频 | 人人爱爱人人 | 久久久久色 | 欧美孕妇视频 | 成人高清av在线 | 日韩a级免费视频 | 国产日韩欧美在线一区 | 在线免费观看羞羞视频 | 日韩精品一区二区三区电影 | 国产香蕉视频在线播放 | 精品国产1区二区 | 91中文字幕在线视频 | 国产99自拍 | 日日碰狠狠添天天爽超碰97久久 | 色永久免费视频 | 99精品在线播放 | 久久综合九色欧美综合狠狠 | 国产精品一区二区中文字幕 | 91香蕉视频在线下载 | av电影中文 | 激情婷婷亚洲 | 欧美精品xxx | 麻豆综合网 | 久草在线视频首页 | 91超碰免费在线 | www.97视频| 久久久久久久久久久久国产精品 | 人人看人人做人人澡 | 中文字幕免费播放 | 久久综合色影院 | 久久男人视频 | 国产五月色婷婷六月丁香视频 | 欧美一级特黄aaaaaa大片在线观看 | 中文字幕人成人 | 日韩一级网站 | 午夜性生活| 美州a亚洲一视本频v色道 | 亚洲欧美一区二区三区孕妇写真 | 久久99影院 | 九九九视频在线 | 久久国产福利 | 国产亚洲欧美在线视频 | av一区二区三区在线观看 | 亚洲精品午夜久久久久久久 | 91在线91拍拍在线91 | 中文字幕在线一区二区三区 | 国产福利久久 | 日韩色一区二区三区 | 久久精品99国产精品酒店日本 | 一区在线电影 | 豆豆色资源网xfplay | 黄色三级视频片 | 成人欧美一区二区三区黑人麻豆 | 国产精品自在线拍国产 | 亚洲激情视频在线 | 夜夜干夜夜| 久久9精品 | 亚洲人在线 | 六月丁香婷婷久久 | 亚洲激情在线播放 | 日韩精品观看 | 天天色图 | 麻豆传媒视频在线免费观看 | 亚洲精品av中文字幕在线在线 | 婷婷视频 | 91视频链接 | 免费网站黄 | 在线视频 国产 日韩 | 国产免费中文字幕 | 一级黄色电影网站 | 我要色综合天天 | 亚洲综合精品视频 | 久久久久久久毛片 | 久久麻豆视频 | 伊人手机在线 | 99精品视频在线观看视频 | 91福利国产在线观看 | 成人在线播放av | 成 人 黄 色视频免费播放 | 免费观看视频的网站 | 久久9999久久 | 懂色av懂色av粉嫩av分享吧 | 97视频在线 | 免费观看十分钟 | 人人草在线观看 | 亚洲高清资源 | 99久久久久久久 | 天天色天天干天天 | 亚洲天堂网视频在线观看 | 6080yy精品一区二区三区 | 精品999国产| 五月天色丁香 | 99热高清| 国产精品久久久区三区天天噜 | 99中文在线| 国产韩国精品一区二区三区 | 久久日本视频 | 午夜视频在线观看一区二区三区 | 在线高清一区 | 美女网色 | 国产精品大尺度 | 亚洲国产成人在线观看 | 国产一二区视频 | www.天天操.com | 91网页版在线观看 | 蜜桃视频成人在线观看 | 九九九热精品免费视频观看网站 | 久久精品国产一区二区电影 | 五月天久久婷婷 | 五月亚洲综合 | 色综合小说 | 人人爽人人搞 | 国产在线高清视频 | 久草在线一免费新视频 | 久久天堂精品视频 | 91看片在线观看 | 香蕉网在线播放 | 婷婷亚洲五月 | 日韩网站在线看片你懂的 | 日韩av看片| 麻豆视频观看 | 九九色在线观看 | 国产精品永久久久久久久www | 精品99免费视频 | 国产剧情av在线播放 | 日韩专区一区二区 | 丝袜足交在线 | 狠狠色狠狠综合久久 | 美女视频久久 | 一区二区三区在线影院 | 又黄又爽又无遮挡免费的网站 | 天天干夜夜夜操天 | 久久黄色小说视频 | 公与妇乱理三级xxx 在线观看视频在线观看 | 丁香激情视频 | 色综合久久综合 | 免费高清在线一区 | 免费看特级毛片 | 日本久久久久 | 久久久午夜影院 | 91麻豆国产 | 国内综合精品午夜久久资源 | 免费在线国产视频 | 欧美另类巨大 | 18做爰免费视频网站 | 国产精品视频永久免费播放 | 91爱看片| 婷婷网在线 | 久久在线免费观看视频 | 黄色精品久久 | 操操操天天操 | 久久精品99国产精品日本 | 狠狠干天天| 国产日韩精品一区二区三区在线 | 亚洲五月激情 | 久久久18| 色婷婷激情四射 | 在线亚洲高清视频 | 精品在线观看一区二区三区 | 国产v在线| 香蕉视频日本 | 在线只有精品 | 久久久久久视频 | 欧美a免费| 99久久超碰中文字幕伊人 | 亚州成人av在线 | 91精品视频免费观看 | 久久久久久久久黄色 | 中文字幕亚洲欧美日韩2019 | 美女视频黄色免费 | 人人dvd | 99在线精品免费视频九九视 | 草久在线 | 91九色网站 | 色婷婷伊人 | 综合激情伊人 | 亚洲丁香久久久 | 五月香视频在线观看 | 国产精品久久久久一区二区 | 天天天综合网 | 成人免费在线看片 | 四虎在线永久免费观看 | 日韩av免费一区 | 日韩欧美视频免费观看 | 国产 一区二区三区 在线 | 在线免费观看视频你懂的 | 亚洲精品久久在线 | 亚洲高清国产视频 | 国产精品成人久久 | 中国精品少妇 | 欧美精品乱码99久久影院 | 亚洲h在线播放在线观看h | 色瓜| 欧美人交a欧美精品 | 免费无遮挡动漫网站 | 天天色天天操天天爽 | 久久国产精品免费 | 91亚洲夫妻| 久久久久久久免费观看 | 国内精品视频在线 | 欧美精品久久久久久久久久丰满 | 国产在线观看,日本 | 免费在线一区二区三区 | 久草香蕉在线 | 欧美黑吊大战白妞欧美 | 久二影院 | 韩日电影在线 | 波多野结衣精品视频 | 丁香婷婷射 | 欧美精品亚洲精品日韩精品 | 国产麻豆果冻传媒在线观看 | 国产在线精品区 | 91亚洲精品乱码久久久久久蜜桃 | 国产麻豆精品一区 | 日韩精品一区二区三区中文字幕 | 韩国一区在线 | 久久爱资源网 | 激情av资源| 日韩视频免费观看高清完整版在线 | 亚洲aⅴ一区二区三区 | 午夜18视频在线观看 | 亚洲激情电影在线 | 欧美日韩在线播放 | 国产免费观看高清完整版 | 综合激情 | 天天插天天射 | 四虎永久网站 | 开心色激情网 | 999久久久久 | 国产91精品一区二区麻豆网站 | 亚洲精品91天天久久人人 | 99免费在线播放99久久免费 | 久久久久久久久久久网 | 91在线操| jizzjizzjizz亚洲| 国产精品一区在线观看 | 国产成人精品aaa | 国产资源av | 欧美与欧洲交xxxx免费观看 | 免费久久网站 | 欧美一区二区免费在线观看 | 久草在线资源免费 | 天天操天天是 | 激情网站免费观看 | 天堂网av 在线 | 成人av一区二区三区 | 蜜桃视频在线视频 | 亚洲美女精品区人人人人 | 中日韩在线| 99热精品国产 | 免费观看黄色av | 国产免费又爽又刺激在线观看 | adc在线观看 | 欧美夫妻性生活电影 | 国产玖玖精品视频 | 欧美日韩视频在线观看免费 | 亚洲国产精品久久久久 | 亚洲视频第一页 | 欧美网站黄色 | 中文字幕第一页在线vr | 99久久er热在这里只有精品15 | 久久久久国产精品www | 久久国产精品久久精品 | 国产成人一级电影 | 精品伦理一区二区三区 | 亚洲激情一区二区三区 | 九九国产视频 | 在线观看小视频 | 国产不卡av在线 | 911国产 | 国产福利小视频在线 | 久久久久久久久久久久影院 | 亚洲人成免费网站 | 国产自制av| 四虎亚洲精品 | 日韩免费视频观看 | 日本爱爱片 | 美女免费网视频 | 欧美少妇18p | 园产精品久久久久久久7电影 | 激情欧美国产 | 精品伦理一区二区三区 | 欧美福利视频一区 | av免费在线观看1 | 天天爱天天 | 一色屋精品视频在线观看 | 91黄色小视频 | 欧美日韩二区三区 | 美女很黄免费网站 | 中文字幕第一页在线播放 | se婷婷| 五月香视频在线观看 | 国产精品高清一区二区三区 | 免费日韩视频 | 这里只有精彩视频 | 久久久久久蜜av免费网站 | 午夜在线观看一区 | 91精品啪在线观看国产线免费 | 日韩手机在线 | 国产精品成人av在线 | 91自拍视频在线观看 | 久久婷婷五月综合色丁香 | 亚洲一区视频在线播放 | 日韩精品久久久久久 | 成人91免费视频 | 麻豆mv在线观看 | 91福利社在线观看 | www免费看片com | 91传媒在线看 | 亚洲第一色 | 久视频在线 | 久久99久久久久 | 色婷婷视频 | 日韩在线观看高清 | 国产精品v欧美精品 | 国产伦理一区二区 | 成人av影视观看 | 久久久久免费视频 | 国产偷国产偷亚洲清高 | 婷婷丁香六月 | 色婷婷视频网 | 丁香五婷 | 夜夜躁天天躁很躁波 | 日韩精品久久中文字幕 | av免费看在线 | 亚洲欧洲精品一区二区 | www免费在线观看 | 中文字幕 婷婷 | 伊人亚洲综合网 | 麻豆视频在线播放 | 97人人网| 男女激情网址 | 一本色道久久综合亚洲二区三区 | 国产乱码精品一区二区三区介绍 | 国产精品久久久久久一区二区三区 | 久久久久福利视频 | 日韩一区二区三 | 91麻豆.com | 欧洲激情综合 | 国产乱对白刺激视频在线观看女王 | 久久久精品国产免费观看一区二区 | 婷婷综合影院 | 一区二区三区精品在线视频 | 久久不色 | 91精品国产92久久久久 | 中文字幕一区二区三区乱码在线 | 久久天天躁狠狠躁夜夜不卡公司 | 人人爽爽人人 | 欧美精品v国产精品v日韩精品 | 午夜视频福利 | 国产理伦在线 | 日韩黄色免费在线观看 | 精品麻豆入口免费 | 丁香高清视频在线看看 | 黄色av一区 | 欧美精品三级在线观看 | 国产91全国探花系列在线播放 | 久久久国产精品人人片99精片欧美一 | 亚洲精品免费看 | 精品免费国产一区二区三区四区 | 婷婷国产在线 | 99视频免费在线观看 | 91在线视频观看免费 | 久久亚洲热 | 欧美一区免费观看 | 久久国产系列 | 91精品视频在线 | 国产精品网址在线观看 | 在线观看岛国 | 热久久99这里有精品 | 五月天综合色激情 | 日韩免费视频观看 | 久久久精品国产免费观看同学 | 日韩av一区二区在线 | 亚洲精品在线观看视频 | 免费日韩一区二区三区 | 日韩在线免费播放 | 免费看一级特黄a大片 | 一本色道久久综合亚洲二区三区 | 亚洲国产视频直播 | 国产精品亚洲综合久久 | 伊人夜夜| 91大神精品视频 | 中文字幕一区二区三区四区视频 | 91九色精品 | 色视频在线免费观看 | 日日夜夜天天 | 日本黄色免费在线观看 | 性日韩欧美在线视频 | 国产精品无av码在线观看 | av免费线看 | 一区二区视频播放 | 91视频免费播放 | 日韩av一区二区三区在线观看 | 超碰资源在线 | 精品免费观看视频 | 久久免费国产电影 | 亚洲激情综合网 | 8x成人免费视频 | 亚洲精品免费在线播放 | 99婷婷狠狠成为人免费视频 | 九九电影在线 | 99热最新地址 | 久久视频免费看 | 日韩av午夜 | 日本久久电影网 | 97超碰超碰久久福利超碰 | 久久www免费人成看片高清 | 五月天综合激情网 | 日韩中文字幕免费看 | av女优中文字幕在线观看 | 国产精品系列在线 | 久草免费在线观看视频 | 久久国际影院 | 亚欧日韩av | 成人国产精品一区 | 久久夜av| 午夜精品99久久免费 | 伊人久操 | 亚洲国产成人在线 | 日本三级大片 | 国产日韩欧美网站 | 人人干人人搞 | 日韩素人在线观看 | 三级在线视频观看 | 狠狠色丁香九九婷婷综合五月 | 91麻豆国产 | 91免费高清视频 | 成年人在线电影 | 国产又黄又猛又粗 | 久久久久久久久久久久久久电影 | 天天射天天操天天 | 中文字幕一区在线观看视频 | 日韩视频在线一区 | 中文字幕在 | 午夜av免费在线观看 | www.色午夜.com | 天天色天天射综合网 | 亚洲网站在线看 | 成人免费xxxxxx视频 | 国产免费又粗又猛又爽 | 日韩欧美在线中文字幕 | 在线看av网址 | 国产97在线播放 | 最新色站 | 97视频资源| 成人影片免费 | 天天操月月操 | 久久天天躁狠狠躁亚洲综合公司 | 91精品国产99久久久久久红楼 | 成x99人av在线www | 超碰在线成人 | 国内精品久久天天躁人人爽 | 亚洲国产小视频在线观看 | av免费看在线 | 99这里只有精品视频 | 亚洲精品视频网 | 97精品国自产拍在线观看 | 91看片成人 | 91看片网址| av免费在线播放 | 中文字幕永久免费 | 亚洲精品免费观看视频 | 干综合网| 亚洲欧美在线观看视频 | 免费成人在线视频网站 | av在线免费在线观看 | 大胆欧美gogo免费视频一二区 | 成 人 a v天堂| 久久婷婷综合激情 | 中文字幕一区在线 | 日日夜夜操操操操 | 亚洲视频 一区 | 极品国产91在线网站 | 丁香九月婷婷 | 国内精品久久久久久久久 | 久久久久久网址 | 亚洲免费一级 | 91视频观看免费 | 欧洲亚洲激情 | 成人a视频在线观看 | 精品国产电影一区二区 | 在线观看国产高清视频 | 欧美成人精品欧美一级乱 | 黄色免费在线看 | 国产精品系列在线观看 | 99精品福利 | 免费观看国产精品视频 | 久久久久 免费视频 | 国产三级国产精品国产专区50 | 精品亚洲一区二区三区 | 日韩在线观看第一页 | 欧美激情综合五月色丁香小说 | 中午字幕在线观看 | 久热久草在线 | 不卡国产视频 | 日日爽天天操 | 天天射射天天 | 精品99免费| 久久高清国产视频 | 制服丝袜亚洲 | 国产精品高潮久久av | 国产精品成人一区二区三区吃奶 | 国产在线观看不卡 | 六月丁香婷婷久久 | 欧美激情视频一二区 | 一区二区视频播放 | 色播六月天 | 久久精品这里精品 | 美女视频黄免费的久久 | 亚洲一区二区天堂 | 日韩欧美视频一区二区三区 | 免费三级av| 国模视频一区二区 | 天天干干| 国产精品免费观看网站 | 婷婷丁香七月 | 免费网站在线观看成人 | 亚洲电影第一页av | 婷婷av电影 | 在线小视频 | 欧美人操人 | 亚洲成av人影院 |