下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
韓順平—玩轉(zhuǎn)oracle筆用法:conn用戶名/@網(wǎng)絡服務名[assysdba/s例如:connsystem當用戶用戶連接時,必須帶上(例如sys的登錄)assysdba或是assysoper顯示當前用戶showuser;說明:該命令用于修改用戶的,如果想修改其他用戶的,需要用sys/system登錄show
說明:該命令會斷開與數(shù)據(jù)庫的連接,同時會退出start和說明:運行sql案例:sql>@d:\a.sql或者sql>start說明:該命令可以編輯指定的sql案例:sql>edit說明:該命令可以將sql*plus屏幕上的內(nèi)容輸出到指定文件中去案例:sql>spoold:\b.sql并輸入sql>spooloff概述:可以用來控制輸出的格式,setshow如果希望永久的保存相關(guān)的設置,可以去修改glogin.sql80Sql>showlinesizeSql>setlinesize9014linesize一樣概述:在oracle中要創(chuàng)建一個新的用戶使用createuser案例:createuserxiaomingidentifiedbym123;給修改用戶概述:如果給自己修改可以直接使Sql>password如果給別人修改則需要具有dba的權(quán)限,或者擁有alteruser的系統(tǒng)權(quán)Sql>alteruseridentifiedby新概述:一般以dba的去刪除某個用戶,如果用其它用戶去刪除用戶則需要具有dropuser的權(quán)限。比如:dropusercascade】,在刪除用戶時用戶:alteruseruser_nameaccount需要為指定相印的權(quán)限。給一個用戶賦權(quán)限使用命令grant,回收權(quán)限使用令是revoke希望xiaoming這個用戶可以去查詢emp希望xiaoming這個用戶可以去查詢scottemp表命令是:grantselectonemptoxiaoming希望xiaoming用戶可以去修改scott的emp表命令是:grantupdateonemptoxiaoming希望xiaoming用戶可以修改/刪除、查詢、添加scott的emp表命令是:grantallonemptoxiaomingScott希望收回xiaoming對emp表的查詢權(quán)限.命令是:revokeselectonempfromxiaoming//對權(quán)限的希望xiaoming這個用戶可以去查詢scottemp表/還希望xiaoming可如果是對象權(quán)限,就加入withgrant命令是:grantselectonemptoxiaomingwithgrant如果是系統(tǒng)權(quán)限(和對象權(quán)限類似System給xiaoming命令是:grantconnecttoxiaomingwithadmin如果ccott把xiaoming對emp表的查詢權(quán)限,那么xiaohongXiaohong的權(quán)限也被回收了使用profile概述:profile是口令限制,資源限制令集合,當簡歷數(shù)據(jù)庫時,oracle會自動建立名稱為defaultprofile.當建立用戶沒有指定profile選項,那么oracle就會將default概述:指定該賬戶(用戶)登錄時最多可以輸入的次數(shù),也是可以指定用戶鎖定的時間(天)一般用dba的去執(zhí)行該命令例子:指定scott32天,讓我們看創(chuàng)建profilesql>creatcprofilelock_accountlimitfailed_login_attempts3password_lock_time2;sql>alteruserscottprofilelock_account;給賬戶(用戶)Sqlalteruserscottaccountunlock;(dba權(quán)限才能操作為了讓用戶定期修改可以使用終止口令的指令來完成,同樣這個命令也需要dba來操作.例子:給前面創(chuàng)建的用戶scott創(chuàng)建一個profile10天要修改自家的登錄,寬限期限為2天。如下Sql>creatprofilemyprofilelimitpassword_life_time10password_grace_timeSql>alteruserscottprofile概述:如果希望用戶在修改時,不能使用以前使用過的,可使用命令歷史,這樣oracle就會將口令修改的信息存放到數(shù)據(jù)字典中,這樣當用戶修改時,oracle就會對新舊進行比較,當發(fā)現(xiàn)新舊一樣時,就提示用戶重新輸入。建立Sql>createprofilepassword_historylimitpassoword_life_time10password_grace_time2password_reuse_time10Password_reuse_time10天后就可以重用刪除profile概述:當不需要某個profile文件時,可以刪除該文件Sqldropprofilepassword_history【cascadeOracle的表的管理表名和列名原則長度過30字符不能使用oracle的保留字Oracle支持的數(shù)據(jù)的類型 2000字符例子:char(10)‘小韓’前符放‘小韓’,后添6個空格不全‘小 Varchar2(20)4000例子:varchar2(2)‘小寒’oracle分配符.這樣可以節(jié)省空Clob(characterlarge Number范圍-10381038次方例:Number(5,2)5位有效數(shù),2位小數(shù)位,范圍-Number(5)5位數(shù)整數(shù)范圍為-99999DateTimestamp這個ora9i對數(shù)據(jù)類型的擴展 二進制數(shù)據(jù)可以存放/聲音處于音頻的安全性考慮可以直接存放到數(shù)據(jù)庫中。一般的話只是存放Sql>createtablestudent表名Xhnumber(4),–學號Xmvarchar2(20),-Birthdaydate,出生日期Salnumber(7,2)-獎金刪除表命令:droptableSql>altertablestudentadd(claSql>altertablestudentmodifyxmvarchar2(30));Sql>altertablestudentmodify(xmchar(30));Sql>altertablestudentdropcolumnsal;(一般工作中不用Sql>droptablestudent;Sql>droptableinsertintostudentvalues(2,'2','男','2-12月-注意:oracle中默認的日期格式’dd-mon-yydd日子(天)mon月份yy2位年’09-3Altersessionsetnls_date_format=’yyyy-mm-insertintostudentvalues(2,'2','男','1996-12-Insertintostudent values(‘a(chǎn)003’,john’,’女’)Insertintostudent(xh,xm,,birthdayvalues(‘a(chǎn)004’,’martin’,’男Select*fromstudentwherebirthdayisnull;Updatestudentset=’女’whereUpdatestudentset=’男’,birthday=’1980-04-01’where修改含有nullDeletefromDroptablestudentDeletefromstudentwherexh=’A001’;Truncatetablestudent;刪除表中的所有記錄,表結(jié)構(gòu)還在,不寫日志,無法找設置保存點:savepoint回滾保存點:rollbacktoSql>descSelect*fromdept;Selectename,sal,job,deptno,fromSelectdistinctdeptno,jobfromSMITH的薪水,工作,所在部門設置執(zhí)行時間開啟命令:settimingSelectSAL,JOB,DEPTfromempwhereInsertintousers(userid,username,userpass)select*fromSelectsal*13+nvl(comm,0)*13“年工資enamefromSelectename“”,sal*12as“年收入”from如何處理null使用nvl函數(shù)來處理如何連接字符串Selectename||‘isa’||jobfrom使用where3000Selectename,salfromempwhere?如何查找1982.1.1職的員Selectename,hiredatefromempwhere20002500Selectename,salfromempwheresal>2000and如何使用like%0到多個字符,_?如何顯示首字符為S的員工和工Selectename,salfromempwhereenamelike?如何顯示第三個字符為大寫O的所有員工的和工Selectename,salfromempwhereenamelike‘在where條件中使用?如何顯示empno123,345,678…的雇員的情況Selectename,salfromempwhereempnoin(123,345,678);使用isnull的操作符Selectename,salfromempwheremgris?查詢工資高于500或是崗位為manager的雇員,同時還要滿足他們的首寫字母為大寫的Jselectename,job,salfromempwhere(sal>500orjob='manager')andename使用orderbyselect*fromemporderbysal;?按照部門號升序而雇員的工資降序排列(默認為升序,降序的時候用desc).select*fromemporderbydept,saldesc;selectenamesal+nvl(comm,0))*12年薪fromemporderby年薪"desc;Selectename,sal*12“年薪”fromemporderby“年薪”asc;別名需要使用”O(jiān)racle據(jù),現(xiàn)在我們給大家介紹較為復雜的select語句selectmax(sal),min(sal)fromselectavg(sal),sum(sal)fromselectcount(ename)fromselectename,sal,jobfromempwheresal=(selectmax(sal)fromselect*fromempwheresalselectavg(salfromemp);groupby和having子句groupbyhavingselectavg(sal),max(sal),deptfromempgroupbyselectavg(sal),max(sal),dept,jobfromempgroupbydept,joborderby2000SQL>selectavg(sal),deptfromempgroupbydepthavingavg(sal)>2000;AVG(SAL)2175 SQL>selectavg(sal),deptfromempgroupbydepthavingavg(sal)>2000orderbyavg(sal)desc;AVG(SAL) 2175selectgroupby,having,orderbygroupby,having,ordergroupbyselectdeptavg(sal),max(salfromempgroupbydepthavingavg(sal)<2000;dept就一定要出現(xiàn)在groupby中.單個表中可能不能滿足你的需求,(如顯示sales部門位置和員工的),這種情況下需要使用到(dept表和emp表)【集SQL>selecta1.*,a2.*fromempa1,depta2whereEMPNO MGR COMMDEPTDEPRNO 20303020303010NEW2010NEW3020302010NEW10SQL>selecta1.ename,a1.sal,a2.dnamefromempa1,depta2wherea1.dept=a2.deprnoand SAL 2450.00 5000.00 1300.00SQL>selecta1.ename,a1.sal,a2.dnamefromempa1,depta2wherea1.dept=a2.deprnoanda1.dept=10; SALDNAME 2450.00 5000.00 1300.00?顯示各個員工的,工資及其工資的級SQL>selecta1.ename,a1.sal,a2.gradefromempa1,salgradea2wherea1.salbetweena2.losaland 11122233444445SQL>selecta1.ename,a1.sal,a2.dnamefromempa1,depta2wherea1.dept=a2.deprnoorderby SAL 2450.00 5000.00 1300.00 2975.00 3000.00 1100.00 800.00 3000.00 1250.00 1500.00 1600.00 950.00 2850.00 1250.00自連接是指在同一張表的連接查詢
SQL>selectwork.ename,boss.enamefromempwork,empbosswherework.mgr=boss.empnoand 子查詢是指嵌入在其它sql語句中的select語句,也叫嵌套查詢
SMITH同一部門的所有員工?(數(shù)據(jù)庫在掃描的時候是從左到右,執(zhí)行sqlSQL>select*fromempwheredept=(selectdeptfromempwhereEMPNO MGR COMM79027839756676880.00756610SQL>select*fromempwherejob2(selectdistinctjobfromempwhereEMPNO MGR COMMall30SQL>select*fromempwheresal>all(selectsalfromempwhereEMPNO MGR COMMSQL>select*fromempwheresal>(selectmax(sal)fromempwhereMGR783975667566any30的任意員工的工資高的員工的信息。SQL>select*fromempwheresal>any(selectsalfromempwhereEMPNO MGR COMM78397902756677887566756678397698783977827839749976987844769879347782752176987654769878767688SQL>select*fromempwheresal>(selectmin(sal)fromempwhereEMPNO MGR COMM74997698752176987566783976547698769878397782783977887566783978447698787676887902756679347782SMITHSQL>select*fromempwhere(dept,job)=(selectdept,jobfromempwhereEMPNO MGR COMM79027688在from在這里需要說明的當在from子句中使用子查詢時,該子查詢被作為一個視圖來對待,因此叫做內(nèi)嵌視圖,當在from子句中使用子查詢時,SQL>select*fromempa1,(selectdept,avg(sal)mysalfromempgroupbydept)a2wherea1.dept=a2.deptandEMPNO MGR COMMDEPT 7839 107902 7566 分頁查按雇員的idSQL>selecta1.*,rownumrnfrom(select*fromemp)EMPNO MGR COMM 123456789SQL>select*from(selecta1.*,rownumrnfrom(selectenamesal,deptfromemporderbydept)a1wherebywhere456789用查詢的結(jié)果創(chuàng)建新表這個命令是一種快捷的建表的方式SQL>createtable2id,ename,sal)asselectempno,ename,salfromemp;TablecreatedSQL>descName NullableDefault ENAMEVARCHAR2(7)Y NUMBER(7,2)YSQL>select*fromID 14rows有時候在應用中,為了合并多個select語句的結(jié)果,可以使用集合操作符號union,unionSQL>SELECTENAME,SAL,JOBFROMEMPWHERESAL>25002SELECTENAME,SAL,JOBFROMEMPWHEREJOB='MANAGER'; SALJOBunion該操作賦予unionSQL>SELECTENAME,SAL,JOBFROMEMPWHERESAL>2500UNIONallSELECTENAME,SAL,JOBFROMEMPWHEREJOB= SAL8rowsSQL>SELECTENAME,SAL,JOBFROMEMPWHERESAL>2500intersectSELECTENAME,SAL,JOBFROMEMPWHEREJOB= SAL 2850.00 2975.00SQL>SELECTENAME,SAL,JOBFROMEMPWHERESAL>2500minusSELECTENAME,SAL,JOBFROMEMPWHEREJOB= SAL 通過oracle我們可以用手工步驟直接創(chuàng)建java程序如何操作如何在oracleOracleSql
Java操作Java連接前面在plsql中操作oracle,那么如何在java程序中操作數(shù)據(jù)庫呢?下面我們舉例說明,SHOWEMP.JAVA,emp表的信息.Javapackageimportimportimportimport//演 如何使用jdbc_odbc橋連接方publicclass TestOracle{ { 1. { 1. 2.Connection 從下面開始,和 Server一模一 Statement ResultSet sm.executeQuery("select (rs.next()) System.out.println("用戶名 1}} }}在得到連接那里,要去配置數(shù)據(jù)源,點擊控制面板-->系統(tǒng)和安全-->管理工具-->數(shù)據(jù)源(ODBC),OracleinOraDb10g_home1Oracle這樣配好后基本就可以了,但為了安全起見,建議大家測試一下,點擊TestConnectionok,jdbc.odbc:這里要注意:jdbcodbc能不能連接呢?不能連接,也就是你這樣寫的話就意味著java程序和oracle數(shù)據(jù)庫應該是在同一臺機器上,因為這里沒有指定IP地址,肯定默認就是本地。如果要連,就用jdbc,jdbc是可以連的。TestOracle.java,java.sql.SQLException:Nosuitabledriverfoundforjdbc.odbc:testConnectOracleatjava.sql.DriverManager.getConnection(UnknownSource)atjava.sql.DriverManager.getConnection(UnknownSource)atcom.sp.TestOracle.main(TestOracle.java:18)Javapackageimportimportimportimport//使用jdbcpublicclass TestOracle2{ static main(String[]args)try 1. 2.Connectionct 20.("jdbc:oracle:thin:@:1521:orcl","scott","tiger"); 從下面開始,和 Server一模一 Statement ResultSet sm.executeQuery("select (rs.next()) System.out.println("用戶名 1}} }}記得要把驅(qū)動包引入java.sql.SQLException:Io異常:TheNetworkAdaptercouldnotestablishatoracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)atatatoracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:418)atoracle.jdbc.driver.OracleDriver.getConnectionInstanceatoracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:325)atjava.sql.DriverManager.getConnection(UnknownSource)atjava.sql.DriverManager.getConnection(UnknownSource)atcom.sp.TestOracle2.main(TestOracle2.java:18)webproject,oracleoracleto_dateinsertintoempvalues (9998,'xiaohong','MANAGER',7782,to_date('1988-12-12','yyyy-mm- insertintoemp (9998,'xiaohong','MANAGER',7782,'12-12月-1988', valusinsetemp10createtablekkk(myIdnumber(4),myNamevarchar2(50),myDeptinsertintokkk(myId,myName, selectempno,ename,deptnofromempwheredeptno=update問題:希望員工SCOTT的崗位、工資、與SMITH員工一樣。updateempset(job,sal,comm)=(selectjob,sal,commfromempwhereename='SMITH')where使用to_dateSQL>INSERTINTOEMPVALUES1rowSQL>select*fromEMPNO MGR COMM7902769876987839介紹當使用values子句時,一次能插入一行數(shù)據(jù),當使用子查詢插入數(shù)據(jù)時,一條insert語句可以大量的數(shù)據(jù),當處理行遷移或者裝載外部SQL>INSERTINTOUSERS(ED,ENAME,SAL)SELECTDEPT,ENAME,SALFROMEMPWHERE4rowsSQL>SELECT*FROMEMPNO MGR COMM15rowsSQL>SELECT*FROMED 10 使用update語句更新數(shù)據(jù)時,既可以使用表達式或者數(shù)值直接修改數(shù)據(jù),也可以使用子查詢修改數(shù)據(jù)?希望員工scott的崗位,工資,與smith員工一SQL>updateempset(empno,mgr,sal)=(selectempno,mgr,salfromempwhereename='SMITH')WHERE1row
ORACLE事務處事務用于保證數(shù)據(jù)的一致性,它由一組相關(guān)的dml語句組成,該組的dml語句要么全部成功,要么全部失敗.當執(zhí)行事務操作時(dml語句),oracle會被作用的表上加鎖,防止其它用戶該表的表的結(jié)構(gòu).這里對我們用戶來講是非常重要的.當執(zhí)使用commit語句可以提交事務.commit語句子句,commit語句結(jié)束事務子句,其它會話將可以查看到事務變化后的新數(shù)據(jù)務時,會自動的刪除該定義的保存點.當執(zhí)行rollback時,通過指定保存點可以回退到指定的點這里我們作圖說明(這個回退事務必須在commit之前,exit也是自動commit)。SavepointaRollbacktoacommitcommit,exitJavajava操作數(shù)據(jù)庫時,為了保證數(shù)據(jù)的一致性,比如轉(zhuǎn)賬操作(1)10¥,(2)10¥,我們看看如Javapackageimportimportimportimportpublicclass TestTrans{ static main(String[]args)try 1. 2.Connection "jdbc:oracle:thin:@:1521:orcl","scott", Statementsm scottsal sm.executeUpdate("updateemp whereename='SCOTT'"); = smithsal } (Exception } 運行,會出現(xiàn)異常,查看數(shù)據(jù)庫,SCOTTsal100,SMITHsalJavapackageimportimportimportimport { 1. { 1. 2. static {Connection = "jdbc:oracle:thin:@:1521:orcl","scott", mit(false);// Statementsm scottsal sm.executeUpdate("updateemp whereename='SCOTT'"); = smithsal } (Exception catch(SQLException }}}只讀事務是指只允許執(zhí)行查詢的操作,而不允許執(zhí)行的任何其它ml操作的事務,數(shù)據(jù).假定機票點每天8點開始統(tǒng)計今天的銷售情況,這時可以使用只讀事務,在設置讀事務后,盡管其它回話可能會提交新的事務,但是只讀事務將不會取得數(shù)據(jù)的變化從而可以保證取得特定時間點的數(shù)據(jù)信息.ScttransactionreadSql函數(shù)的使用-字符函數(shù)是oracle中最常用的函數(shù)SQL>selectlower(ename),salfrom SQL>selectupper(ename),salfrom ?5SQL>select*fromempwhereEMPNO MGR COMM?顯示所有員工的前三個字符(注意下面括號里面的1表示從第幾個開始,3表示三個字符,不是第三個字符SQL>selectsubstr(ename,1,3)from14rowsSQL>selectupper(substr(ename,1,1))from14rowsSQL>selectlower(substr(ename,2,length(ename)))from14rowsSQL>selectupper(substr(ename,1,1))||lower(substr(ename,2,length(ename)))from14rowsSQL>selectlower(substr(ename,1,1))||upper(substr(ename,2,length(ename)))from14rowsRece函數(shù)字符函數(shù)是oracle中最常用的函數(shù),(這里的char1是需要替換的字段,search_string需要替換的字符串,rece是替換成那個字符串)?顯示所有員工的,用’我是A’替換所有SQL>selectrece(ename,'A','我是A')from我是14rows數(shù)學函數(shù)的輸入?yún)?shù)和返回值的數(shù)據(jù)類型都是數(shù)字類型的,數(shù)學函數(shù)包括cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round,Round(char1,[m])該函數(shù)用于執(zhí)行四舍五入,m,則四舍五入到整數(shù);如果m是正數(shù),則四舍五入到小數(shù)點的m位后.如果是負數(shù),則四舍五入到小數(shù)點的m位前SQL>SELECT*FROMEMPNO MGR COMM15rowsSQL>SELECTROUND(SAL),SALFROMEMPWHEREENAME='JLJK'; 1000SQL>SELECTROUND(SAL),SAL,ROUND(COMM),COMMFROMEMPWHEREENAME='JLJK'; SALROUND(COMM) 1000 SQL>SELECTROUND(SAL,1),SAL,ROUND(COMM,1),COMMFROMEMPWHERE SAL 1000.5 SQL>SELECTROUND(SAL,-1),SAL,ROUND(COMM,-1),COMMFROMEMPWHERE SALROUND(COMM,- Trunc(char1,[m])該函數(shù)用于截取數(shù)字.m,就截去掉小數(shù)部分,如果m是正數(shù)就截取到小數(shù)點的mm是負數(shù),則截取到小數(shù)點的前m位SQL>SELECTtrunc(SAL),SAL,trunc(COMM),COMMFROMEMPWHERE SAL 1000 SQL>SELECTtrunc(SAL,1),SAL,trunc(COMM,1),COMMFROMEMPWHERE SAL 1000.4 Mod(m,n)在做oracle測試,可以使用dualSQL>selectmod(10,2)from0SQL>selectmod(10,3)fromdual;1SQL>selectmod(11,3)fromdual;2Floor(CHAR1)nSQL>SELECTfloor(SAL),SAL,FLOOR(COMM),COMMFROMEMPWHERE SAL 1045 Ceil(CHAR1)nSQL>SELECTCEIL(SAL),SAL,CEIL(COMM),COMMFROMEMPWHERE SAL 1046 案例數(shù)據(jù):235.56?30天的情況所有員工的日薪金,忽略余數(shù)SQL>SELECTENAME,TRUNC(SAL/30),SAL/30,TRUNC(COMM/30),COMM/30FROM SAL/30 2653411699414681 26 166000000333416rowsSQL>SELECTENAME,FLOOR(SAL/30),SAL/30,FLOOR(COMM/30),COMM/30FROM SAL/30 1646000000333416rowsAbs(n)n的絕對值()此處的nSelectabs(-13)fromdual;Exp(n):e的nSQL>selectexp(3)fromSQL>selectlog(100,10)fromSQL>selectlog(10,100)fromdual;2Power(m,n):mnSQL>selectpower(10,3)fromSQL>selectpower(10,2)fromdual;日期函數(shù)用于處理date類型的數(shù)據(jù)dd-mon-yy12-7月-sysdate:SQL>selectsysdatefromSQL>select*fromempwheresysdate>add_months(hiredate,320);EMPNO MGR COMM7698769878397698783978397698768875667782793576887935768813rowsSQL>select*fromempEMPNO MGR COMM16rowsSQL>hiredate,;17/10/198116rows?8?顯示滿10年服務年限的員工的和受雇日SQL>select*fromempwhereCOMM769876887688756677827688768816rowsSQL>selecttrunc(sysdate-hiredate),enamefromTRUNC(SYSDATE-HIREDATE)16rowsSQL>selectsysdate-hiredate,enamefromSYSDATE-HIREDATE8273.93012731481 9246.93012731481 9212.93012731481 16rowsSQL>select*fromempwherelast_day(hiredate)-EMPNO MGR COMM7654MARTIN 7698 1400.00轉(zhuǎn)換函數(shù)用于將數(shù)據(jù)類型從一種轉(zhuǎn)為另一種,在某些情況下,oracleserver允許值的數(shù)據(jù)類型和實際的情況不一樣,這是oracleCreatetablet1(idInsertintot1 ——>這樣oracle會自動的將Createtablet2(idInsertintot2values(1→這樣oracle我們要說的是盡管oracle可以進行隱含的數(shù)據(jù)類型轉(zhuǎn)換,但是它并不能所有的情況,為了提高程序的可靠性,我們應該使用轉(zhuǎn)換你可以使用selectename,hiredate,salfromempwheredept=10;?/分/SQL>selectto_char(hiredate,'yyyy-mm-ddhh24:mi:ss')from1987-04-191981-11-171981-09-081987-05-231981-12-031981-12-031982-01-231981-10-171981-10-172012-08-1117rowsSQLselectto_char(hiredate,'yyyy-mm-ddhh24:mi:ss')to_char(sal,'l9999.99'fromemp;TO_CHAR(HIREDATE,'YYYY-MM-DDHHTO_CHAR(SAL,'L9999.99')(本地的貨幣符號)17rows?1981SQL>select*fromempwhereEMPNO MGR COMM76987698783976987839783912rows?12SQL>select*fromempwhereEMPNO MGR COMM76887566函數(shù)to_datedate類型的數(shù)據(jù).(前面已經(jīng)做過)language:Selectsys_context(‘userenv’,’db_name’)fromdual;SQL>selectsys_context('userenv','language')fromSQL>selectsys_context('userenv','db_name')fromdual;每個oracle數(shù)據(jù)庫應該至少有一名數(shù)據(jù)庫管理員(dba)dba就夠了,但是對于一個大的數(shù)據(jù)庫可能dba分擔負不同的管理職責.那么一個數(shù)據(jù)庫管理員主要工作是什么呢?安裝和升級oracle建庫,表空間,表,視圖,索引對于高級dba,要求能參與項目開發(fā),會編寫sql語句、過程、觸發(fā)器、規(guī)則、約束、(dba也是編程高手管理數(shù)據(jù)庫的用戶主要是sys和system(sys可以比喻董事長,system比喻為總經(jīng)理)最重要的區(qū)別,的數(shù)據(jù)的重要性不Sys:所有oracle的數(shù)據(jù)字典的基本表和視圖都存放在sys用戶中,這些基表和視圖對于oracle的運行是至關(guān)重要的,由數(shù)據(jù)庫自己維護,任何用戶都不能手動更改。Sysdba,sysdba,sysoper角色或權(quán)限,是oracle權(quán)限最高的用戶。System:用于存放次一級的內(nèi)部數(shù)據(jù),如oracle的一些特性或工具的管理信息。Systemdba,sysdbaSysassysdbaassysoper形式登錄。不能以normalSystemdbaassysdba登錄,其結(jié)果實際上它是作為sys用戶登錄的,從登初始化參數(shù)用于設置實例或是數(shù)據(jù)庫的特征.oracle9i200多個初始化參數(shù),并且每個初始化參數(shù)都有默認值.Showparameter命令需要說明的如果你希望修改這些初始化的參數(shù),可以到文件D:\ORACLE\ADMIN\MYORAL\PFILE\INIT.ORA文件中去修改比如修改實例的名數(shù)據(jù)庫(表)的邏輯備份與恢邏輯備份是指使用工具export將數(shù)據(jù)對象的結(jié)構(gòu)和數(shù)據(jù)導出到文件的過程,邏輯恢復是指當數(shù)據(jù)庫對象被誤操作而損壞后使用工具import利用備份的文件把數(shù)據(jù)對象導入到數(shù)據(jù)庫的過程.物理備份即可在數(shù)據(jù)庫open的狀態(tài)下進行也可在關(guān)閉數(shù)據(jù)庫后進行,但是邏輯備份和恢復只能在open的狀態(tài)下進行.導出使用exp命令來完成的,該命令常用的選項有:(特別說明:在導出和導入的時候,要到oracle 的bin Expuserid=scott/tiger()@myora(實例)ltables=(emp)dba的權(quán)限或是exp_full_database的權(quán)限,比如system就可以導出scottExp tables=(emp)file=d:\e3.dmpExpuserid- table-(emp)file-d:e3.dmpdirect-導出數(shù)據(jù)庫是指利用export導出所有數(shù)據(jù)庫中的對象及數(shù)據(jù),dba的權(quán)限或是exp_full_databaseExpuserid-system/manger@myorfull=y pletefile=D:\A.dmp(數(shù)據(jù)量不較大,需要較長的時間Impuserid=scott/manager@myortables=(emp)dba的權(quán)限,或是Impuserid=system/manager@myortables=(emp)file=d:\emp.dmp Impuserid=scott/tiger@myortables=(emp)file=d:\emp.dmpImpuserid=scott/tiger@myortables=(emp)file=d:\emp.dmp導入方案是指使用import工具將文件中的對象和數(shù)據(jù)導入到一個或是多個方案中.dba的權(quán)限,或是imp_full_databaseImpuserid=scott/tigerdbaImpuserid=system/managerfile=d:\xxx.dmpfromuser=systemImpuserid=system/managerfull=y
數(shù)據(jù)字典和動態(tài)性能數(shù)據(jù)啊你是oracle數(shù)據(jù)庫中最重要的組成部分,它提供了數(shù)據(jù)庫的一些系統(tǒng)信息.sys用戶用戶只能在數(shù)據(jù)字典上執(zhí)行查詢操作(select語句),而其和修改是由系統(tǒng)自動完成的,User_xxx,all_xxx,dba_xxx三種類型SQL>selecttable_namefromuser_tables;7rowsSQL>selecttable_namefrom106rowsdba角色或是有selectanytable系統(tǒng)權(quán)限,例如:當用system用戶查詢數(shù)據(jù)字典視圖dba_tables時,會返回syetem,sys,scott…方案所對應的數(shù)據(jù)庫表,SQL>desc NullableDefaultNameoftheIDnumberoftheYDeprecatedfrom11.2--useAUTHENTICATION_TYPEYYDefaulttablespaceforDefaulttablespacefortemporaryUsercreationUserresourceprofileINITIAL_RSRC_CONSUMER_GROUPVARCHAR2(30) User'sinitialconsumergroup VARCHAR2(4000)Y Userexternalname Versionsofencryptedpasswords Whethereditionsareenabledforthis在建立用戶時,oracle會把用戶的信息存放到數(shù)據(jù)字典中,當給用戶授予權(quán)限或是角色時,oracle會將權(quán)限和角色的信息存放到通過查詢dba_usersSQL>selectusernamefrom37rows通過查詢數(shù)據(jù)字典視圖dba_sys_privs,SQL>desc NullableDefaultGranteeName,UserorRoleSystemADMIN_OPTIONVARCHAR2(3) GrantwaswiththeADMINSQL>select*fromdba_sys_privswhere CREATE UNLIMITED CREATEDATABASE CREATE CREATE ALTER CREATE 7rows通過查詢數(shù)據(jù)字典視圖dba_tab_privsSQL>desc NullableDefault Usertowhomaccesswas OwneroftheTABLE_NAME Nameofthe NameoftheuserwhoperformedthegrantPRIVILEGEVARCHAR2(40) TablePrivilegeGRANTABLEVARCHAR2(3) PrivilegeisHIERARCHYVARCHAR2(3) Privilegeiswithhierarchy通過查詢數(shù)據(jù)字典視圖dba_col_privsSQL>desc NullableDefault VARCHAR2(30)Y GranteeName,UserorRolereceivingthegrantGRANTED_ROLEVARCHAR2(30) GrantedrolenameADMIN_OPTIONVARCHAR2(3) GrantwaswiththeADMINDEFAULT_ROLEVARCHAR2(3) RoleisdesignatedasaDEFAULTROLEforthe通過查詢數(shù)據(jù)字典視圖dba_role_privsSQL>desc NullableDefault VARCHAR2(30)Y GranteeName,UserorRolereceivingthegrantGRANTED_ROLEVARCHAR2(30) GrantedrolenameADMIN_OPTIONVARCHAR2(3) GrantwaswiththeADMINDEFAULT_ROLEVARCHAR2(3) RoleisdesignatedasaDEFAULTROLEfortheSQL>select*fromdba_role_privswhere ADMIN_OPTION 這里給大家再講講角色和權(quán)限的關(guān)系SQLSELECT*FROMDBA_SYS_PRIVSWHEREGRANTEE='CONNECT'; CREATESESSION SQL>SELECT*FROMDBA_SYS_PRIVSWHEREGRANTEE='RESOURCE'; 另外亦可以這樣查看:select*fromrole_sys_privswhereroleSELECT*FROMDBA_TAB_PRIVSWHERE查詢oracleSQL>select*fromsystem_privilege_maporderbyPRIVILEGE 00CREATE0ALTER0RESTRICTED0CREATE0ALTER0MANAGE0DROP0UNLIMITED0CREATE0E0ALTER0DROP0CREATEROLLBACK0ALTERROLLBACK0DROPROLLBACK0CREATE0CREATEANY0ALTERANY0PRIVILEGE BACKUPANY0DROPANY0LOCKANY0COMMENTANY0SELECTANY0INSERTANY0UPDATEANY0DELETEANY0CREATE0CREATEANY0ALTERANY0DROPANY0CREATEANY0ALTERANY0DROPANY0CREATE0CREATEANY0DROPANY000CREATEPUBLIC0PRIVILEGE DROPPUBLIC0CREATE0CREATEANY0DROPANY0CREATE0CREATEANY0ALTERANY0DROPANY0SELECTANY0CREATEDATABASE0CREATEPUBLICDATABASE0DROPPUBLICDATABASE0CREATE0DROPANY0GRANTANY0ALTERANY0AUDIT0ALTER0TRANSACTION0ANYTRANSACTION0CREATE0PRIVILEGE -141CREATEANY ALTERANY0DROPANY0EXECUTEANY0CREATE0CREATEANY0ALTERANY0DROPANY0CREATE0ALTER0DROP0ALTERRESOURCE0YZE0GRANTANY0CREATEMATERIALIZED0CREATEANYMATERIALIZED0ALTERANYMATERIALIZED0DROPANYMATERIALIZED0CREATEANY0DROPANY0CREATE0PRIVILEGE -181CREATEANY -182ALTERANY DROPANY0EXECUTEANY0UNDERANY0CREATE0CREATEANY0ALTERANY0DROPANY0EXECUTEANY0CREATE0CREATEANY0ALTERANY0DROPANY0EXECUTEANY0CREATE0CREATEANY0ALTERANY0DROPANY0UNDERANY0QUERY0PRIVILEGE GLOBALQUERY0EXECUTEANY0UNDERANY0CREATE0CREATEANY0ALTERANY0DROPANY0MANAGEANY1ENQUEUEANY1DEQUEUEANY1CREATEANY0DROPANY0CREATEANY0ALTERANY0DROPANY0ADMINISTER1ADMINISTER0MERGEANY0ONCOMMIT0EXEMPT00PRIVILEGE -237SELECTANY DEBUGCONNECT0DEBUGANY0FLASHBACKANY0GRANTANYOBJECT0CREATEEVALUATION1CREATEANYEVALUATION1ALTERANYEVALUATION1DROPANYEVALUATION1EXECUTEANYEVALUATION1CREATERULE1CREATEANYRULE1ALTERANYRULE1DROPANYRULE1EXECUTEANYRULE1EXPORTFULL0IMPORTFULL0CREATE1CREATEANY1ALTERANY1DROPANY1PRIVILEGE 100CREATE0CREATEANY0EXECUTEANY0EXECUTEANY0MANAGE0SELECTANY0DROPANYSQL0ALTERANYSQL0ADMINISTERSQLTUNING0ADMINISTERANYSQL0CREATEANYSQL0EXEMPTIDENTITY0MANAGEFILE1MANAGEANYFILE1READANYFILE1CHANGE0CREATEEXTERNAL0CREATEANY0PRIVILEGE DROPANY0ALTERANY0CREATE0CREATEANY0ALTERANY0DROPANY0EXECUTEANY0EXECUTE0CREATEMINING0CREATEANYMINING0DROPANYMINING0SELECTANYMINING0ALTERANYMINING0COMMENTANYMINING0CREATECUBE0ALTERANYCUBE0CREATEANYCUBE0DELETEANYCUBE0DROPANYCUBE0INSERTANYCUBE0SELECTANYCUBE0PRIVILEGE 0ALTERANY0CREATEANY0DROPANY0SELECTANY0UPDATEANY0CREATEMEASURE0CREATEANYMEASURE0DELETEANYMEASURE0DROPANYMEASURE0INSERTANYMEASURE0CREATECUBEBUILD0CREATEANYCUBEBUILD0DROPANYCUBEBUILD0UPDATEANYCUBEBUILD0UPDATEANYCUBE0ADMINISTERSQLMANAGEMENT0ALTERPUBLICDATABASE0ALTERDATABASE0FLASHBACKARCHIVE0208rows查詢oracle中所有對象權(quán)限,一般為dbaSelectdistinctprivilegefromdba_tab_privs;SQL>selectdistinctprivilegefromdba_tab_privsorderbyONCOMMITREFRESHQUERYREWRITEMERGE17rowsOracle52.Select*from53.SQL>select*fromdba_roles;55. 119.rowsSelecttablespace_namefromSQL>Selecttablespace_namefromSELECT*FROMDBA_ROLE_PRIVSWHEREGRANTEE=’用戶名SQL>SELECT*FROMDBA_ROLE_PRIVSWHERE ADMIN_OPTION 顯示當前用戶可以的所有數(shù)據(jù) *fromdictwherecommentslikeSQL>Select*fromdictwherecommentslike'%grant%'; Audittrailrecordsconcerninggrant,revoke,audit,noauditandaltersystem InformationregardingwhichusersaregrantedCONNECT Allgrantsoncolumnsinthe Rolesgrantedtousersand Usersgrantedtheprivilegestobeastreamsadministrator Systemprivilegesgrantedtousersandroles Allgrantsonobjectsinthe Audittrailrecordsconcerninggrant,revoke,audit,noauditandaltersystem Grantsoncolumnsforwhichtheuseristheowner,grantororgrantee Allgrantsoncolumnsofobjectsownedbytheuser Grantsoncolumnsforwhichtheuseristhegrantee Rolesgrantedtocurrentuser Systemprivilegesgrantedtocurrent Grantsonobjectsforwhichtheuseristheowner,grantororgrantee Allgrantsonobjectsownedbytheuser Grantsonobjectsforwhichtheuseristhe Grantsoncolumnsforwhichtheuseristhegrantor,grantee,owner,oranenabledroleorPUBLICisthegrantee Grantsoncolumnsforwhichtheuserisowneror Grantsoncolumnsforwhichtheuser,PUBLICorenabledroleisthegrantee Grantsonobjectsforwhichtheuseristhegrantor,grantee,owner,oranenabledroleorPUBLICisthe User'sgrantsandgrantsonuser's Grantsonobjectsforwhichtheuser,PUBLICorenabledroleisthegrantee Grantsoncolumnsforwhichtheuseristhegrantor,grantee,owner,oranenabledroleorPUBLICisthe Roleswhicharegrantedto Systemprivilegesgrantedto Tableprivilegesgrantedto Grantsonobjectsforwhichtheuseristhegrantor,grantee,owner,oranenabledroleorPUBLICisthegrantee27rowsSQL>select*from數(shù)據(jù)字典記錄有oracle但是因為這些信息,可以通過pl/sqldevelopment工具查詢得到,動態(tài)性能視圖用于記錄當前例程的活定信息,當啟動oracleserver時,系統(tǒng)會建立動態(tài)性能視圖;當停止oracleserver時,系統(tǒng)會刪除動態(tài)性能視圖,oracle為每個動態(tài)性能視圖都提供了相應的同義詞,并且其同義詞是已v$開始的,例如v_$datafile的同義詞為$datafile;動態(tài)性能視圖的所有者為sye,一般情況下,由dba或是用戶來查詢動態(tài)性能視圖。管理表空間和數(shù)據(jù)文介表空間是數(shù)據(jù)庫的邏輯組成部分,從物理上講,數(shù)據(jù)庫數(shù)據(jù)存放在數(shù)據(jù)文件中;從邏輯上講,數(shù)據(jù)庫則是存放在表空間中,表空間由一個或是多個數(shù)據(jù)文件組成。Oracleoracle以提高數(shù)據(jù)庫的效率.Dba可以將不同數(shù)據(jù)類型部署到不同的位置,這樣有利于提高i/o建立表空間是使用createtablesapce命令完成的,需要注意的是,一般情況下,建立表空間是洪湖或是dba來執(zhí)行的,如果用其它用戶來創(chuàng)建表空間,則用戶必須要具有createtablespace的系統(tǒng)權(quán)限.Createtablespacesp001datafile‘d:\sp001’size20muniformsizeSQL>createtablespacesp001datafile'd:\sp001.dbf'size20muniformsizeTablespace說明:執(zhí)行完上述命令后,會建立名稱為sp001的表空間,并且為該表空間建立名稱為sp001.dbfCreatetablemypart(deptnonumber(2),dnamevarchar2(14),locvarchar(13))tablespace當建立表空間時,表空間處于聯(lián)機的狀態(tài),此時該表空間是可以的,并且該表空間是可以讀寫的,即可以查詢該表空間的數(shù)據(jù),而且還可以在表空間執(zhí)行各種語句。但是在進行或是數(shù)據(jù)時,可能需要改變表空間的狀態(tài)。一般情況下,又用戶或dba來操作.Altertablespace表空間名Altertablespace表空間名當建立表空間時,表空間可以讀寫,如果不希望在該表空間上執(zhí)行update,delete,insert操作,那么可以將表空間修改為altertablespace表空間名readonlyaltertablespace表空間名readSelect*fromall_tableswheretablespace_name=’表空間名知道表名,Selecttablespace_name,table_namefromuser_tableswhereSQL>SELECTTABLESPACE_NAME,TABLE_NAMEFROM2WHERE SQL>SELECTTABLESPACE_NAME,TABLE_NAMEFROMUSER_TABLESWHERETABLE_NAME='MYPART'; 2)我們可以知道scott.emp是system這個表空間上,現(xiàn)在我們可以將system改為只讀的是我們不會成功,因為system是系統(tǒng)一般情況下,由用戶或是dba來操作,如果是其它用戶來操作,那么要求用戶具有droptablespace系統(tǒng)的權(quán)限D(zhuǎn)roptablespace‘表空間’including 說明:includingcontent表示刪除表空間時,刪除該表空間的所有數(shù)據(jù)庫對象,而datafiles表示將數(shù)據(jù)庫文件也刪除.1、使用droptablespaceincludingcontents;方式直接來刪除.SQL>setlinesizeSQL>setpagezie0SQL>settimingSQL>droptablespaceTBS_TESTincluding已用時間0335:2Locala、把TBS_TESTb、把TBS_TEST轉(zhuǎn)化為LocalSQL>settimingSQL>execsys.dbms_space_admin.tablespace_migrate_to_local(’TBS_TEST’)已用時間0006:SQL>droptablespaceTBS_TESTincludingcontents2/已用時間0000:7a、把TBS_TEST通過恢復回來。SQL>setlinesizeSQL>setpagezie0SQL>settimingSQL>spoolSQL>SELECT’Droptable’||TABLE_name||’;’FROMdba_tablesWHERESQL>spool20秒。SQL>settimingSQL>droptablespaceTBS_TESTincluding已用時間0007:8(local)8i以后的版本中才沒有簡單的方法來刪除表空間的數(shù)據(jù)文件,唯一如果數(shù)據(jù)庫運行在非歸檔模式MOUNT數(shù)據(jù)庫startup刪除數(shù)據(jù)文件alterdatabasedatafilexxxoffline打開(OPEN)alterdatabase查看屬于該表空間的所有對象selectowner,segment_name,segment_typefromdba_segmentswhere導出該表空間的所有對 用exp命令來droptablespacetbs_nameincluding刪除這個表空間的所有物理的數(shù)據(jù)文件Deletethephysicaldatafilesbelongingtothe重建表空間,導入前面導出的DMP文件如果數(shù)據(jù)庫是運行在歸檔模式MOUNT數(shù)據(jù)庫startup刪除數(shù)據(jù)文件alterdatabasedatafilexxx(Note:offline這個數(shù)據(jù)文件,此數(shù)據(jù)文件還是屬于這個數(shù)據(jù)庫的一部分,只是在控制文件中將它的狀態(tài)標記為打開(OPEN)alterdatabaseMOUNTOFFLINE數(shù)據(jù)文件:alterdatabasedatafilexxx將備份的數(shù)據(jù)文件拷貝到原來數(shù)據(jù)文件的位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河北滄州醫(yī)學高等??茖W校選聘博士2名考試參考題庫附答案
- 2025廣東廣州南沙人力資源發(fā)展有限公司招聘編外工作人員1人備考題庫附答案
- 2025年南陽唐河縣屬國有企業(yè)招聘工作人員13名考試備考題庫附答案
- 2025年黃石市市直和城區(qū)國有企事業(yè)單位人才引進162人模擬試卷附答案
- 2025廣東廣州市南沙東涌中學招收編外高中語文、數(shù)學教師2人考試題庫附答案
- 2025廣東廣州市從化區(qū)衛(wèi)生健康局所屬事業(yè)單位招聘事業(yè)編制工作人員7人(第二次)考試備考題庫附答案
- 2025廣東汕頭市市屬醫(yī)療衛(wèi)生機構(gòu)下半年招聘工作人員132人(公共基礎(chǔ)知識)測試題附答案
- 2026中央統(tǒng)戰(zhàn)部直屬事業(yè)單位高校畢業(yè)生招聘34人筆試備考試題及答案解析
- 2025貴州畢城開發(fā)集團有限公司第十三屆貴州人才博覽會部分崗位取消筆試參考題庫及答案解析
- 2025秋人教版道德與法治八年級上冊2.1人的社會化教學設計
- 幼兒園大班班本課程-邂逅水墨課件
- 智慧農(nóng)貿(mào)市場解決方案-智慧農(nóng)貿(mào)市場系統(tǒng)
- 借款服務費合同
- 2023-2024學年成都市金牛區(qū)九年級上英語(一診)期末考試題(含答案)
- 出生證明與預防接種聯(lián)辦
- 土石方工程冬季施工方案
- 全球十大嚴重核事故課件
- 天貓超市考試題及答案
- ADS中文入門教程
- JJF 1366-2012溫度數(shù)據(jù)采集儀校準規(guī)范
- GB/T 13912-2020金屬覆蓋層鋼鐵制件熱浸鍍鋅層技術(shù)要求及試驗方法
評論
0/150
提交評論