kxbin
          成功留給有準(zhǔn)備的人
          posts - 10,  comments - 35,  trackbacks - 0
          1.oracle服務(wù)器包括一個(gè)oracle例程和一個(gè)oracle數(shù)據(jù)庫(kù)。oracle例程是后臺(tái)進(jìn)程和內(nèi)存結(jié)構(gòu)的組合,只有啟動(dòng)例程后,才能訪問數(shù)據(jù)庫(kù)中的數(shù)據(jù);oracle數(shù)據(jù)庫(kù)包括數(shù)據(jù)庫(kù)文件,提供實(shí)際的物理存儲(chǔ)。
          2.oracle安裝會(huì)自動(dòng)生成sys用戶和system用戶。sys用戶是超級(jí)用戶,具有最高權(quán)限,具有sysdba角色。有create database的權(quán)限,該用戶默認(rèn)密碼是manager;system用戶是管理操作員,具有sysoper角色,沒有create database的權(quán)限,默認(rèn)密碼 change_on_install;對(duì)數(shù)據(jù)庫(kù)的維護(hù)一般用system用戶就可以了。
          3.sql*plus常用命令:
           1)連接命令
              conn 用戶名/密碼@網(wǎng)絡(luò)服務(wù)名 [as sysdba/sysoper],當(dāng)用特權(quán)用戶身份連接時(shí),必須帶上as sysdba或是as sysoper;
              disc[onnect],用于斷開與當(dāng)前數(shù)據(jù)庫(kù)的連接;
              passw[ord],用于修改用戶的密碼,如果要想修改其他用戶的密碼,需要用sys/system登錄;
              show user 顯示當(dāng)前用戶名;
              exit 斷開與數(shù)據(jù)庫(kù)的連接,同時(shí)退出;
           2)文件操作命令
              start和@,運(yùn)行sql腳本。例如:start d:\a.sql
              edit,編輯指定的sql腳本
              spool,將sql*plus屏幕上的內(nèi)容輸出到指定文件中去。例如 spool d:\aa.sql ,并輸入 spool off。
           3)顯示和設(shè)置環(huán)境變量
               linesize,設(shè)置顯示行的寬度,默認(rèn)是80個(gè)字符。例如:show linesize,set linesize 90;
               pagesize,設(shè)置每頁(yè)顯示的行數(shù)目,默認(rèn)是14。
          4.用戶管理
           1)創(chuàng)建用戶 create user xiaohuang identified by m123,xiaohuang用戶名,m123密碼,密碼不能以數(shù)字開頭。具有dba的權(quán)限才能創(chuàng)建用戶;
           2)修改密碼 如果給自己修改密碼直接用 password 用戶名;如果給別人修改密碼 alter user xiaohuang indentified by m345,必須具有dba權(quán)限的人才能修改。
           3)刪除用戶,需具有drop user 權(quán)限,drop user 用戶名 cascade。cascade級(jí)聯(lián)刪除,如果已經(jīng)創(chuàng)建表則一并刪除。
          5.權(quán)限管理分為系統(tǒng)權(quán)限和對(duì)象權(quán)限
           1)系統(tǒng)權(quán)限,用戶對(duì)數(shù)據(jù)庫(kù)的相關(guān)權(quán)限(執(zhí)行特定類型sql命令的權(quán)利,用于控制用戶執(zhí)行一個(gè)或一組數(shù)據(jù)庫(kù)操作。常見系統(tǒng)權(quán)限包括create session 連接數(shù)據(jù)庫(kù);create view 創(chuàng)建視圖;create procedure 創(chuàng)建過程、函數(shù)、包;create table 創(chuàng)建表);查詢數(shù)據(jù)字典視圖system_privilege_map,獲得權(quán)限信息;收回系統(tǒng)權(quán)限 revoke create session from 用戶名1,收回用戶名1的連接數(shù)據(jù)庫(kù)的權(quán)限;
           2)對(duì)象權(quán)限,用戶對(duì)其他用戶的數(shù)據(jù)對(duì)象操作的權(quán)限。常見對(duì)象權(quán)限包括alter修改表結(jié)構(gòu);delete刪除數(shù)據(jù);update修改數(shù)據(jù);select 查詢數(shù)據(jù);insert插入數(shù)據(jù);index在表上建立索引;references 引用;execute執(zhí)行;
             對(duì)用戶訪問權(quán)限更加精細(xì)控制 grant update on emp(sal) to 用戶名;回收權(quán)限r(nóng)evoke select on emp from 用戶名
           3)對(duì)象權(quán)限的傳遞 grant select on emp to 用戶名1 with grant option
           4)系統(tǒng)權(quán)限的傳遞 grant connect to 用戶名1 with admin option
          6.角色,一組權(quán)限的集合。分為預(yù)定義角色和自定義角色。建立權(quán)限的管理
           1)預(yù)定義角色分類:dba擁有全部權(quán)限,是系統(tǒng)最高權(quán)限,只有dba才可以創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu);resource只可以創(chuàng)建實(shí)體,不可以創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu);connect可以登錄oracle,不可以創(chuàng)建實(shí)體,也不可以創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)。對(duì)于普通用戶,授予connect,resource權(quán)限;對(duì)于dba管理用戶,授予connect,resource,dba權(quán)限。
           2)自定義角色。建立角色(不驗(yàn)證),如果角色是公用的角色,可以采用不驗(yàn)證的方式建立角色 create role 角色名 not identified;建立角色(數(shù)據(jù)庫(kù)驗(yàn)證),采用這樣的方式,角色名、口令存放在數(shù)據(jù)庫(kù)中。當(dāng)激活該角色時(shí),必須提供口令。在建立這種角色時(shí),需要為其提供口令 create role 角色名 identified by shunping.
            3)自定義角色授權(quán),當(dāng)建立角色時(shí),角色沒有任何權(quán)限;給角色授予權(quán)限和給用戶授予權(quán)限沒有太多區(qū)別,但是要注意,系統(tǒng)權(quán)限的unlimited tablespace和對(duì)象權(quán)限的with grant option 選項(xiàng)不能授予角色的。grant select on scott.emp to 角色名;grant create session to 角色名 with admin option;
            4)把角色賦給用戶 grant 角色名 to 用戶名 with admin option;
            5)刪除角色 drop role 角色名
          7.profile管理用戶口令
           1)profile是口令限制,資源限制的命令集合,當(dāng)建立數(shù)據(jù)庫(kù)時(shí),oracle會(huì)自動(dòng)建立名稱為default的profile。當(dāng)建立用戶沒有指定profile選項(xiàng),那oracle會(huì)將default分配給用戶。
           2)賬號(hào)鎖定,指定該賬戶登錄時(shí)最多可以輸入密碼的次數(shù),也可以指定用戶鎖定的時(shí)間(天)一般用dba的身份去執(zhí)行該命令;例如指定tea這個(gè)用戶最多只能嘗試3次登錄,鎖定時(shí)間為2天。創(chuàng)建profile文件,create profile lock_account limit failed_login_attempts 3 password_lock_time 2; alter user tea profile lock_account.
           3)給賬號(hào)解鎖 alter user tea account unlock;
           4)終止口令
                為了讓用戶定期修改密碼可以使用終止口令的指令來(lái)完成,同樣這個(gè)命令也需要dba身份來(lái)操作。
                例如,給用戶tea創(chuàng)建一個(gè)profile文件,要求改用戶每隔10天要修改自家的登錄密碼,寬限期為2天。create profile myprofile limit password_left_time 10 password_grace_time 2;alter user tea profile myprofile。
           5)口令歷史
               如果希望用戶在修改密碼時(shí),不能使用以前使用過的密碼,可使用口令歷史,這樣oracle就會(huì)將口令修改的信息存放到數(shù)據(jù)字典中,這樣當(dāng)用戶修改密碼時(shí),oracle就會(huì)對(duì)新舊密碼進(jìn)行比較,當(dāng)發(fā)現(xiàn)新舊密碼一樣時(shí),就提示用戶重新輸入密碼。
               例子:create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10。password_reuse_time //指定口令可重用時(shí)間即10天后就可以重用。
           6)刪除profile drop profile password_history [cascade] 級(jí)聯(lián)刪除。
          8.oracle數(shù)據(jù)類型
             1.char,定長(zhǎng),最大2000字符,漢字占2個(gè)字符。查詢效率比varchar類型;插入的數(shù)據(jù)不足則自動(dòng)補(bǔ)全;
             2.varchar,變長(zhǎng),最大4000字符;
             3.clob,字符型大對(duì)象,最大4G;
          9.保存點(diǎn)
             1)savepoint aa 創(chuàng)建保存點(diǎn);
             2)rollback to aa 回滾。如果已經(jīng)提交commit,則保存點(diǎn)不存在,不能再使用回滾。rollback 回滾所有事務(wù);
          10.刪除數(shù)據(jù)
             1)delete from student。刪除所有記錄,表結(jié)構(gòu)還在,寫日志,可以恢復(fù)的。速度慢;
             2)drop table student。刪除表的結(jié)構(gòu)和數(shù)據(jù);
             3)truncate table student 刪除表中的所有記錄,表結(jié)構(gòu)還在,不寫日志,無(wú)法找回刪除的記錄,速度快;
          11.只讀事務(wù)
              指只允許執(zhí)行查詢的操作,而不允許執(zhí)行任何其他dml操作的事務(wù)。使用只讀事務(wù)可以確保用戶只能取得某時(shí)間點(diǎn)的數(shù)據(jù) set transaction read only。
          12.sys用戶和system用戶區(qū)別
            1)存儲(chǔ)的數(shù)據(jù)的重要性不同。
               sys:所有oracle的數(shù)據(jù)字典的基表和視圖都存放在sys用戶中,這些基表和視圖對(duì)于oracle的運(yùn)行時(shí)至關(guān)重要,由數(shù)據(jù)庫(kù)自己維護(hù),任何用戶都不能手動(dòng)更改。sys用戶擁有dba,sysdba,sysoper角色或權(quán)限,是oracle權(quán)限最高用戶。
               system:用于存放次一級(jí)的內(nèi)部數(shù)據(jù),如oracle的一些特性或工具的管理信息。system用戶擁有dba,sysdba角色或系統(tǒng)權(quán)限。
            2)權(quán)限的不同
               sys用戶必須以as sysdba或assysoper形式登錄,不能以normal方式登錄數(shù)據(jù)庫(kù)。
               system如果正常登錄,它其實(shí)就是一個(gè)普通的dba用戶,但是如果以as sysdba登錄,其結(jié)果實(shí)際上它是作為sys用戶登錄的。
          13.sysdba和sysoper權(quán)限區(qū)別
             系統(tǒng)權(quán)限        sysdba                                               sysoper
                                 startup(啟動(dòng)數(shù)據(jù)庫(kù))                          startup 
                                 Shutdown(關(guān)閉數(shù)據(jù)庫(kù))                      shutdown
                                 alter database open/mount/backup     alter database open/mount/backup
                                 改變字符集                                           不能
                                 create database                                  不能創(chuàng)建數(shù)據(jù)庫(kù)
              區(qū)別             drop database                                     不能刪除數(shù)據(jù)庫(kù)
                                 create spfile                                        create spfile
                                 alter database archivelog(歸檔日志)  alter database archivelog
                                 alter database recover(恢復(fù)數(shù)據(jù)庫(kù))      只能完全恢復(fù),不能執(zhí)行不完全恢復(fù)
                                 擁有 restricted session(會(huì)話限制)       擁有restricted session權(quán)限
                                 可以讓用戶作為sys用戶連接                    可以進(jìn)行一些基本的操作,
                                                                                           但不能查看用戶數(shù)據(jù)

                                 登錄之后用戶是sys                                登錄之后用戶public
          14.邏輯備份
              邏輯備份是指使用工具export將數(shù)據(jù)對(duì)象的結(jié)構(gòu)和數(shù)據(jù)導(dǎo)出到文件的過程,邏輯恢復(fù)是指當(dāng)數(shù)據(jù)庫(kù)對(duì)象被誤操作而損壞后使用工具import利用備份的文件把數(shù)據(jù)對(duì)象導(dǎo)入到數(shù)據(jù)庫(kù)的過程。物理備份即可在數(shù)據(jù)庫(kù)open的狀態(tài)下進(jìn)行也可在關(guān)閉數(shù)據(jù)庫(kù)進(jìn)行,但是邏輯備份和恢復(fù)只能在open的狀態(tài)下進(jìn)行。
          15.oracle導(dǎo)出,分為導(dǎo)出表,導(dǎo)出方案,導(dǎo)出數(shù)據(jù)庫(kù)方式。
               導(dǎo)出使用exp命令來(lái)完成,該命令常用的選項(xiàng)有:
                userid:用于指定執(zhí)行導(dǎo)出操作的用戶名,口令,連接字符串;
                tables:用于指定執(zhí)行導(dǎo)出操作的表;
                owner:用于指定執(zhí)行導(dǎo)出操作的方案;
                full=y:用于指定執(zhí)行導(dǎo)出操作的數(shù)據(jù)庫(kù);
                inctype:用于指定執(zhí)行導(dǎo)出操作的增量類型
                rows:用于指定執(zhí)行導(dǎo)出操作是否要導(dǎo)出表中的數(shù)據(jù);rows=n只導(dǎo)出表的結(jié)構(gòu)
                file:用于指定導(dǎo)出文件名。
          16.導(dǎo)出表 需要切換到oracle安裝目錄下的bin目錄
             1)導(dǎo)出自己的表 exp userid=scott/tiger@oracle tables=(emp) file=d:\e1.dmp
             2)導(dǎo)出其他方案的表。如果用戶要導(dǎo)出其他方案的表,則需要dba的權(quán)限或是exp_full_database的權(quán)限,比如system就可以導(dǎo)出scott的表。exp userid=system/manager@oracle tables=(scott.emp) file=d:\e2.dmp
             3)導(dǎo)出表的結(jié)構(gòu)   exp userid=scott/tiger@oracle tables=(emp) file=d:\e3.dmp rows=n
             4)使用直接導(dǎo)出方式 exp userid=scott/tiger@oracle tables=(emp) file=d:\e3.dmp direct=y,這種方式比默認(rèn)的常規(guī)方式速度要快,當(dāng)數(shù)據(jù)量大時(shí),可以考慮使用這樣的方式,這時(shí)需要數(shù)據(jù)庫(kù)的字符集要與客戶端字符集完全一致,否則會(huì)報(bào)錯(cuò)。
          17.oracle導(dǎo)出方案,導(dǎo)出方案是指使用export工具導(dǎo)出一個(gè)方案或是多個(gè)方案中的所有對(duì)象(表,索引,約束...)和數(shù)據(jù)。并存到文件中
            1)導(dǎo)出自己的方案 exp scott/tiger@oracle owner=scott file=d:\scott.dmp
            2)導(dǎo)出其他方案 如果用戶要導(dǎo)出其他方案,則需要dba的權(quán)限或是exp_full_database的權(quán)限,例如system用戶就可以導(dǎo)出任何方案。 exp system/manager@oracle owner=(system,scott) file=d:\system.dmp。
          18.oracle導(dǎo)出數(shù)據(jù)庫(kù)
            1)導(dǎo)出數(shù)據(jù)庫(kù)是是指利用export導(dǎo)出所有數(shù)據(jù)庫(kù)中的對(duì)象及數(shù)據(jù),要求改用戶具有dba的權(quán)限或是exp_full_database權(quán)限。 exp userid=system/manager@oracle full=y inctype=complete file=x.dmp。注意:因?yàn)閿?shù)據(jù)量大,所以好用的時(shí)間會(huì)較長(zhǎng)。
          19.導(dǎo)入,導(dǎo)入就是使用工具import將文件中的對(duì)象和數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中,但是導(dǎo)入要使用文件必須是export所到處的文件。與導(dǎo)出相似,導(dǎo)入也分為導(dǎo)入表,導(dǎo)入方案,導(dǎo)入數(shù)據(jù)庫(kù)三種方式。
              userid:用于指定執(zhí)行導(dǎo)入操作的用戶名,口令,連接字符串;
              tables:用于指定執(zhí)行導(dǎo)入操作的表;
              fromuser:用于指定源用戶;
              touser:用于指定目標(biāo)用戶;
              file:用于指定導(dǎo)入文件名;
              full=y:用于指定執(zhí)行導(dǎo)入整個(gè)文件
              inctype:用于指定執(zhí)行導(dǎo)入操作的增量類型
              rows:指定是否到導(dǎo)入表行(數(shù)據(jù))
              ignore:如果表存在,則只導(dǎo)入數(shù)據(jù)
          20.oracle導(dǎo)入表
            1)導(dǎo)入自己表 imp userid=scott/tiger@oracle tables=(emp) file=d:\e.dmp
            2)導(dǎo)入表到其它用戶 要求該用戶具有dba的權(quán)限,或是imp_full_database
                  imp userid=system/manager@oracle tables=(emp) file=d:/e.dmp touser=scott
             3)導(dǎo)入表的結(jié)構(gòu)(只導(dǎo)入表的結(jié)構(gòu)而不導(dǎo)入數(shù)據(jù))
                  imp userid=scott/tiger@oracle tables=(emp) file=d:/e.dmp rows=n
             4)導(dǎo)入數(shù)據(jù) 如果對(duì)象(如比表)已經(jīng)存在可以只導(dǎo)入表的數(shù)據(jù)
                  imp userid=scott/tiger@oracle tables=(emp) file=d:\e.dmp ignore=y
          21.oracle導(dǎo)入方案
            1)導(dǎo)入自身的方案 imp userid=scott/tiger file=d:\e.dmp
            2)導(dǎo)入其它方案(要求該用戶具有dba的權(quán)限或是imp_full_database權(quán)限)
                 imp userid=system/manager file=d:\e.dmp fromuser=system touser=scott
          22.oracle導(dǎo)入數(shù)據(jù)庫(kù),在默認(rèn)情況下,當(dāng)導(dǎo)入數(shù)據(jù)庫(kù)時(shí),會(huì)導(dǎo)入所有對(duì)象結(jié)構(gòu)和數(shù)據(jù)。
              imp userid=system/manager@oracle full=y file=d:\e.dmp
          23.數(shù)據(jù)字典和動(dòng)態(tài)性能視圖
            1)數(shù)據(jù)字典是oracle數(shù)據(jù)庫(kù)中最重要的組成部分,它提供了數(shù)據(jù)的一些系統(tǒng)信息;記錄了數(shù)據(jù)的系統(tǒng)信息,它是只讀表和視圖的集合,數(shù)據(jù)字典的所有者為sys用戶,用戶只能在數(shù)據(jù)字典上執(zhí)行查詢操作,而其維護(hù)和修改由系統(tǒng)自動(dòng)完成。
            2)動(dòng)態(tài)性能視圖記載了例程啟動(dòng)后的相關(guān)信息。
            3)數(shù)據(jù)字典包括數(shù)據(jù)字典基表和數(shù)據(jù)字典視圖,其中基表存儲(chǔ)數(shù)據(jù)庫(kù)的基本信息,普通用戶不能直接訪問數(shù)據(jù)字典的基表,數(shù)據(jù)字典視圖是基于數(shù)據(jù)字典基表所建立的視圖,普通用戶可以通過查詢數(shù)據(jù)字典視圖取得系統(tǒng)信息。數(shù)據(jù)字典視圖主要包括:user_xxx,all_xxx,dba_xxx三種類型。
            4)user_tables,用于顯示當(dāng)前用戶所擁有的所有表,它只返回用戶所對(duì)應(yīng)方案的所有表。例如:select table_name from user_tables;
             5)all_tables,用于顯示當(dāng)前用戶可以訪問的所有表,它不僅會(huì)返回當(dāng)前用戶方案的所有表,還會(huì)返回當(dāng)前用戶可以訪問的其他方案的表;
             6)dba_tables,它會(huì)顯示所有方案擁有的數(shù)據(jù)庫(kù)表,但是查詢這種數(shù)據(jù)庫(kù)字典視圖,要求用戶必須是dba角色或是有select_any_table系統(tǒng)權(quán)限。例如:當(dāng)用system用戶查詢數(shù)據(jù)字典視圖dba_tables時(shí),會(huì)返回system,sys,scott...方案所對(duì)應(yīng)的數(shù)據(jù)庫(kù)表。
          24.oracle用戶名,權(quán)限,角色
              在建立用戶時(shí),oracle會(huì)把用戶的信息存放到數(shù)據(jù)字典中,當(dāng)給用戶授予權(quán)限或是角色時(shí),oracle會(huì)將權(quán)限和角色的信息存放到數(shù)據(jù)字段。通過查詢
          dba_users可以顯示所有數(shù)據(jù)庫(kù)用戶的詳細(xì)信息;通過查詢數(shù)據(jù)字典視圖dba_sys_privs,可以顯示用戶所擁有的系統(tǒng)權(quán)限;通過查詢數(shù)據(jù)字典視圖dba_tab_privs可以顯示用戶具有的對(duì)象權(quán)限;通過查詢數(shù)據(jù)字典視圖dba_col_privs可以顯示用戶具有的列權(quán)限;通過查詢數(shù)據(jù)字典視圖dba_role_privs可以顯示用戶所具有的角色;通過查詢所有的角色dba_roles;查詢數(shù)據(jù)庫(kù)的表空間dba_tablespaces;簡(jiǎn)化權(quán)限的管理。
          25.如何查詢一個(gè)角色,包括的權(quán)限
              1)一個(gè)角色包含的系統(tǒng)權(quán)限 select * from dba_sys_privs where grantee='CONNECT' 或者 select * from role_sys_privs where role='CONNECT'
              2)一個(gè)角色包含的對(duì)象權(quán)限 select * from dba_tab_privs where grantee='CONNECT'
          26.查詢某個(gè)用戶具有怎樣的角色
              select * from dba_role_privs where grantee='用戶名'
          27.顯示當(dāng)前用戶可以訪問的所有數(shù)據(jù)字典視圖
               select * from dict where comments like '%grant%';
          28.顯示當(dāng)前數(shù)據(jù)庫(kù)的全稱
               select * from global_name;
          29.
          查詢?cè)撚脩魮碛心男┧饕?/span>

            select index_name from user_indexes;

            查詢?cè)撚脩魮碛心男┮晥D

            select view_name from user_views;

            查詢?cè)撚脩魮碛心男?shù)據(jù)庫(kù)對(duì)象,對(duì)象包括表、視圖、存儲(chǔ)過程、觸發(fā)器、包、索引、序列、JAVA文件等。

            select object_name from user_objects;

            主要描述當(dāng)前用戶的信息,主要包括當(dāng)前用戶名、帳戶id、帳戶狀態(tài)、表空間名、創(chuàng)建時(shí)間等。

            select * from user_users;
          30.數(shù)據(jù)字典分為靜態(tài)數(shù)據(jù)字典和動(dòng)態(tài)數(shù)據(jù)字典。
            1)靜態(tài)數(shù)據(jù)字典:主要是在用戶訪問數(shù)據(jù)字典時(shí)不會(huì)發(fā)生改變的。主要由表和視圖組成;
            2)動(dòng)態(tài)數(shù)據(jù)字典:是依賴數(shù)據(jù)庫(kù)運(yùn)行的性能的,反映數(shù)據(jù)運(yùn)行的一些內(nèi)在信息。oracle中這些動(dòng)態(tài)性能視圖都是以v$開頭的視圖;
            3)v$access

            該視圖顯示數(shù)據(jù)庫(kù)中鎖定的數(shù)據(jù)庫(kù)對(duì)象以及訪問這些對(duì)象的會(huì)話對(duì)象(session對(duì)象)。

            select * from v$access

            v$session

            該視圖列出當(dāng)前會(huì)話的詳細(xì)信息。

            v$active_instance

            該視圖主要描述當(dāng)前數(shù)據(jù)庫(kù)下的活動(dòng)的實(shí)例的信息。依然可以使用select語(yǔ)句來(lái)觀察該信息。

            v$context

            該視圖列出當(dāng)前會(huì)話的屬性信息。比如命名空間、屬性值等
          31.oracle表空間和數(shù)據(jù)文件
             1)表空間是數(shù)據(jù)庫(kù)的邏輯組成部分。從物理上講,數(shù)據(jù)庫(kù)數(shù)據(jù)存放在數(shù)據(jù)文件中;從邏輯上講,數(shù)據(jù)庫(kù)則存放在表空間中,表空間由一個(gè)或多個(gè)數(shù)據(jù)文件組成。
             2)oracle中邏輯結(jié)構(gòu)包括表空間、段、區(qū)、塊。數(shù)據(jù)庫(kù)由表空間構(gòu)成,而表空間由段構(gòu)成,而段由區(qū)構(gòu)成,而區(qū)又是由oracle塊構(gòu)成,提高數(shù)據(jù)庫(kù)的效率。
             3)表空間用于從邏輯上組織數(shù)據(jù)庫(kù)的數(shù)據(jù)。數(shù)據(jù)庫(kù)邏輯上是由一個(gè)或多個(gè)表空間組成。通過表空間可以達(dá)到以下作用:控制數(shù)據(jù)庫(kù)占有的磁盤空間;dba可以將不同數(shù)據(jù)類型部署到不同的位置,這樣有利于提高I/O性能,同時(shí)利于備份和恢復(fù)等管理操作。
          32.管理表空間和數(shù)據(jù)文件
             1)建立表空間
               建立表空間是使用create tablespace命令完成,需要注意是,一般情況下,建立表空間是特權(quán)用戶或是dba來(lái)執(zhí)行的,如果用其他用戶來(lái)創(chuàng)建表空間,則用戶必須要具有create tablespace 的系統(tǒng)權(quán)限。
             2)創(chuàng)建數(shù)據(jù)表空間
               在建立數(shù)據(jù)庫(kù)后,為便于管理表,最好建立自己的表空間 create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k。在執(zhí)行完命令后,會(huì)建立名稱為data01的表空間,并為該表空間建立名稱為data01.dbf的數(shù)據(jù)文件,區(qū)的大小128k
              3)使用數(shù)據(jù)表空間
                create table mypart (deptno number(3),dname varchar2(14)) tablespace data01;
              4)改變表空間的狀態(tài)
                當(dāng)建立表空間時(shí),表空間處于聯(lián)機(jī)的(online)狀態(tài),此時(shí)該表空間是可以訪問的,并且該表空間是可以讀寫的。但是在進(jìn)行系統(tǒng)維護(hù)或是數(shù)據(jù)庫(kù)維護(hù)時(shí),可能需要改變表空間的狀態(tài),一般由特權(quán)用戶或是dba來(lái)操作。
              5)使表空間脫機(jī) alter tablespace users offline;
              6)使表空間聯(lián)機(jī) alter tablespace users online;
              7)只讀表空間 當(dāng)建立表空間時(shí),表空間可以讀寫,如果不希望在該表空間上執(zhí)行update,delete,insert操作,那么可以將表空間修改為只讀 allter tablespace read only或者 read write 。
              8)知道表空間名,顯示該表空間包括的所有表 select * from all_tables where tablespace_name='表空間名'
              9)知道表名,查看該表屬于那個(gè)表空間 select * from user_tables where table_name='emp'。
              10)刪除表空間 
                drop tablespace '表空間名' including contents and datafiles;
                說(shuō)明:including contents表示刪除表空間時(shí),刪除該空間的所有數(shù)據(jù)庫(kù)對(duì)象,而datafiles 表示將數(shù)據(jù)庫(kù)文件也刪除。
          33.oracle 擴(kuò)展表空間的方式
             1)增加數(shù)據(jù)文件 alter tablespace data01 add datafile 'd:\test\data01.dbf' size 20m;
             2)增減數(shù)據(jù)文件的大小 alter database datafile 'd:\test\data01.dbf' resize 20m;注意是數(shù)據(jù)文件的大小不要超過500m;
             3)設(shè)置文件的自動(dòng)增長(zhǎng) alter database datafile 'd:\test\data01.dbf' autoextend on next 10m maxsize 500m;
          34.oracle移動(dòng)數(shù)據(jù)文件
              如果數(shù)據(jù)文件所在的磁盤損壞時(shí),該數(shù)據(jù)文件將不能再使用,為了能夠重新使用,需要將這些文件的副本移動(dòng)到其它的磁盤,然后恢復(fù)。下面以移動(dòng)數(shù)據(jù)文件sp01.dbf為例來(lái)說(shuō)明:
             1)確定數(shù)據(jù)文件所在的表空間 select tablespace_name from dba_data_files where file_name='d:\test\sp01.dbf';
             2)使表空間脫機(jī) alter tablespace sp01 offline;
             3)使用命令移動(dòng)數(shù)據(jù)文件到指定的目標(biāo)位置 host move d:\test\sp01.dbf c:\test\sp01.dbf
             4)執(zhí)行alter tablespace 命令
               在物理上移動(dòng)了數(shù)據(jù)后,還必須執(zhí)行alter tablespace 命令對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行邏輯修改。 alter tablespace sp02 rename datafile 'd:\test\sp01.dbf' to 'c:\test\sp01.dbf';
             5)使得表空間聯(lián)機(jī)
               在移動(dòng)了數(shù)據(jù)文件后,為了使用戶可以訪問該表空間,必須將其轉(zhuǎn)變?yōu)閛nline狀態(tài) alter tablespace data01 online;
          35.索引
             用于加速數(shù)據(jù)存取的數(shù)據(jù)對(duì)象。合理的使用索引可以大大降低I/O次數(shù),從而提高數(shù)據(jù)訪問性能。
          36.顯示角色信息
           1)顯示所有角色信息 select * from dba_roles;
           2)顯示角色所具有的系統(tǒng)權(quán)限 select * from role_sys_privs;
           3)顯示角色具有的對(duì)象權(quán)限 select * from dba_tab_privs;
           4)顯示用戶具有的角色及默認(rèn)角色。當(dāng)以用戶的身份連接到數(shù)據(jù)庫(kù)時(shí),oracle會(huì)自動(dòng)的激活默認(rèn)的角色,通過查詢數(shù)據(jù)字典視圖dba_role_privs可以顯示某個(gè)用戶具有的所有角色及當(dāng)前默認(rèn)角色。
          37.oracle精細(xì)訪問控制
            是指用戶可以使用函數(shù)、策略實(shí)現(xiàn)更加細(xì)微的安全訪問控制。如果使用精細(xì)訪問控制,則當(dāng)在客戶端發(fā)出sql語(yǔ)句(select,insert,update,delete),oracle會(huì)自動(dòng)在sql語(yǔ)句后追加謂詞(where 子句),并執(zhí)行新的sql語(yǔ)句。通過這樣的控制,可以使得不同的數(shù)據(jù)庫(kù)用戶在訪問相同表時(shí),返回不同的數(shù)據(jù)信息。
          38.pl/sql(procedural language/sql)是oracle在標(biāo)準(zhǔn)的sql語(yǔ)言上的擴(kuò)展。pl/sql不僅允許嵌入sql語(yǔ)言,還可以定義變量和常量,允許使用條件語(yǔ)句和循環(huán)語(yǔ)句,允許使用例外處理各種錯(cuò)誤,這樣使得它的功能變得更加強(qiáng)大。
           1)作用。提高應(yīng)用程序的運(yùn)行性能;模塊化得設(shè)計(jì)思想;減少網(wǎng)絡(luò)傳輸量;提高安全性;不足:移植性不好;
          39.執(zhí)行簡(jiǎn)單的pl/sql塊
           set serveroutput on -- 打開輸出選項(xiàng)
           begin
              dbms_output.put_line('hello'); -- 是oracle所提供的包
           end;
          40.pl/sql示例
           declare
              v_ename varchar2(5); -- 定義字符串變量
           begin  
              select ename into v_ename from emp where empno=&no;
              dbms_output.put_line('');
           end;
            -- 表示要接收從控制臺(tái)輸入的變量
          41.過程
            過程用于執(zhí)行特定的操作,既可以制定輸入?yún)?shù),也可以制定輸出參數(shù)。通過在過程中使用輸入?yún)?shù),可以將數(shù)據(jù)傳遞到執(zhí)行部分;通過使用輸出參數(shù),可以將執(zhí)行部分的數(shù)據(jù)傳遞到應(yīng)用環(huán)境。在sqlplus中可以使用create procedure命令建立過程。
          42. 函數(shù)
            函數(shù)用于返回特定的數(shù)據(jù),當(dāng)建立函數(shù)時(shí),在函數(shù)頭部必須包含return 子句,而在函數(shù)體內(nèi)必須包含return語(yǔ)句返回的數(shù)據(jù)。create function來(lái)建立函數(shù)。
          43. 包
           包用于在邏輯上組合過程和函數(shù),它由包規(guī)范和包體兩部分組成。
           1)可以使用 create package 命令來(lái)創(chuàng)建包。
               create package sp_package is
                      procedure update_sal(name varchar2,newsal number);
                      function annual_income(name varchar2) return number;
               end;
           2)建立包體可以使用create package body
          44.觸發(fā)器
           是指隱含的執(zhí)行的存儲(chǔ)過程。當(dāng)定義觸發(fā)器時(shí),必須要指定觸發(fā)的時(shí)間和觸發(fā)的操作。常用的觸發(fā)事件包括insert,update,delete語(yǔ)句,而觸發(fā)操作實(shí)際就是一個(gè)pl/sql塊。可以使用create trigger來(lái)建立觸發(fā)器。

          posted on 2012-08-06 20:56 kxbin 閱讀(340) 評(píng)論(0)  編輯  收藏 所屬分類: ORACLEMYSQL
          你恨一個(gè)人是因?yàn)槟銗鬯荒阆矚g一個(gè)人,是因?yàn)樗砩嫌心銢]有的;你討厭一個(gè)人是因?yàn)樗砩嫌心阌械臇|西;你經(jīng)常在別人面前批評(píng)某人,其實(shí)潛意識(shí)中是想接近他。

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(5)

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          J2EE

          java技術(shù)網(wǎng)站

          Linux

          平時(shí)常去的網(wǎng)站

          數(shù)據(jù)庫(kù)

          電影網(wǎng)站

          網(wǎng)站設(shè)計(jì)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 霍林郭勒市| 台南县| 新沂市| 百色市| 盘锦市| 灵川县| 甘德县| 宁安市| 佳木斯市| 八宿县| 武胜县| 泸州市| 正宁县| 斗六市| 金川县| 博兴县| 长春市| 万载县| 麻城市| 铜鼓县| 岢岚县| 台东市| 平度市| 甘孜| 鹤壁市| 晋州市| 德州市| 丰城市| 开远市| 迁安市| 阜南县| 石棉县| 江达县| 河北省| 漠河县| 松阳县| 华容县| 成都市| 璧山县| 城步| 贵德县|