<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-13  評(píng)論-28  文章-63  trackbacks-0
      2006年8月24日

    在Linux系統(tǒng)中我一般采用編譯源碼的方式來(lái)安裝Apache,有兩種方法可以讓Apache在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)。

    1. 在/etc/rc.d/rc.local中增加啟動(dòng)apache的命令,例如:/usr/local/httpd/bin/apachectl start

    2. 將apache注冊(cè)為系統(tǒng)服務(wù)

    首先將apachectl命令拷貝至/etc/rc.d/init.d目錄下,改名為httpd

    使用編輯器打開httpd文件,并在第一行#!/bin/sh下增加兩行文字如下

    # chkconfig: 35 70 30
    # description: Apache

    接著注冊(cè)該服務(wù)

    chkconfig --add httpd

    一切OK了,啟動(dòng)服務(wù)

    service httpd start

    其中所增加的第二行中三個(gè)數(shù)字第一個(gè)表示在運(yùn)行級(jí)別3和5下啟動(dòng)apache,第二、三是關(guān)于啟動(dòng)和停止的優(yōu)先級(jí)配置,無(wú)關(guān)緊要。

    posted @ 2008-08-07 16:51 七匹狼 閱讀(298) | 評(píng)論 (0)編輯 收藏
    70EW-TH17Q1-PM-C01-S1W2QD-MEM-NUYY
    posted @ 2006-11-02 13:51 七匹狼 閱讀(582) | 評(píng)論 (0)編輯 收藏
    當(dāng)使用9205以前版本的exp程序去9205及以上的數(shù)據(jù)庫(kù)中去導(dǎo)出帶LOB字段的表時(shí), 會(huì)遇到一個(gè)錯(cuò)誤, 錯(cuò)誤信息為"EXP-00003 : 沒找到段的存貯定義 .....", 事實(shí)上這是一個(gè)Oracle的Bug, 可以通過(guò)監(jiān)時(shí)地更改視圖"exu9tne"的定義來(lái)臨時(shí)解決問(wèn)題, 如下所示:

    ? ? 在導(dǎo)出前, 連接到SYS用戶, 運(yùn)行以下SQL:

    CREATE OR REPLACE VIEW exu9tne (
    tsno, fileno, blockno, length) AS
    SELECT ts#, segfile#, segblock#, length
    FROM sys.uet$
    WHERE ext# = 1
    UNION ALL
    SELECT * FROM SYS.EXU9TNEB
    /

    ? ? 導(dǎo)出完成后, 運(yùn)行以下命令來(lái)還原視圖的定義, 下面貼的是Oracle 9用的, 10g的還是請(qǐng)?jiān)L問(wèn)Metalink來(lái)確定, 或者在運(yùn)行前一個(gè)命令之前, 從USER_VIEWS中將原視圖的定義查出來(lái), 這樣做也是DBA一個(gè)很好的習(xí)慣.

    CREATE OR REPLACE VIEW exu9tne (
    tsno, fileno, blockno, length) AS
    SELECT ts#, segfile#, segblock#, length
    FROM sys.uet$
    WHERE ext# = 1
    /
    posted @ 2006-09-07 11:35 七匹狼 閱讀(600) | 評(píng)論 (0)編輯 收藏
    ?????????1) 創(chuàng)建用戶 :

       create user username identified by pwd default tablespace users Temporary TABLESPACE Temp;

       2) 用戶授權(quán)

       grant connect,resource,dba to business;???
    ?????
    ???????? 3) 提交

       commit;

    創(chuàng)建角色:
    ???1:CREATE ROLE role_name IDENTIFIED BY password
    ?????????CREATE ROLE role_name IDENTIFIED EXTERNALLY
    ?????????CREATE ROLE role_name IDENTIFIED GLOBALLY

    ?????????缺省情況下建立的角色沒有password或者其他的識(shí)別。如果使用IDENTIFIED BY 子句建立,那么角色不會(huì)自動(dòng)響應(yīng),必須用SET ROLE激活。

    SET ROLE role_name IDENTIFIED BY password

    EXTERNALLY和GLOBALLY類型的角色由操作系統(tǒng)和ORACLE Service server驗(yàn)證。通常用戶需要權(quán)限修改應(yīng)用程序中使用的表單中的數(shù)據(jù),但是只有在應(yīng)用程序運(yùn)行時(shí)而不是在使用ad hoc工具時(shí),這種上下文敏感安全可以通過(guò)有PASSWORD的角色來(lái)實(shí)現(xiàn)。當(dāng)用戶在應(yīng)用程序內(nèi)部連結(jié)數(shù)據(jù)庫(kù)時(shí),代碼將執(zhí)行SET ROLE命令,通過(guò)安全驗(yàn)證。所以用戶不需要知道角色的password,也不需要自己輸入SET ROLE命令。

    對(duì)象權(quán)限

      對(duì)象權(quán)限就是指在表、視圖、序列、過(guò)程、函數(shù)或包等對(duì)象上執(zhí)行特殊動(dòng)作的權(quán)利。有九種不同類型的權(quán)限可以授予給用戶或角色。如下表:
    權(quán)限ALTERDELETEEXECUTEINDEXINSERTREAD REFERENCESELECT UPDATE
    Directoryno no no no no yesnono no
    functionnonoyesno nonononono
    procedureno noyesnonono nonono
    packagenonoyesnononononono
    DB Objectno no yesnono nononono
    Libary nonoyes nonono no nono
    Operation no no yesno no no no no no
    Sequenceyes no no no no no no no no
    Table yes yes noyesyes no yes yes yes
    Typeno no yes no no no no no no
    View no yes no no yes no no yes yes
     對(duì)象由不止一個(gè)權(quán)限,特殊權(quán)限ALL可以被授予或撤銷。如TABLE的ALL權(quán)限就包括:

    系統(tǒng)權(quán)限

      系統(tǒng)權(quán)限需要授予者有進(jìn)行系統(tǒng)級(jí)活動(dòng)的能力,如連接數(shù)據(jù)庫(kù),更改用戶會(huì)話、建立表或建立用戶等等。你可以在數(shù)據(jù)字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統(tǒng)權(quán)限。對(duì)象權(quán)限和系統(tǒng)權(quán)限都通過(guò)GRANT語(yǔ)句授予用戶或角色。需要注意的是在授予對(duì)象權(quán)限時(shí)語(yǔ)句應(yīng)該是WITH GRANT OPTION子句,但在授予系統(tǒng)權(quán)象時(shí)語(yǔ)句是WITH ADMIN OPTION,所以在你試圖授予系統(tǒng)權(quán)限時(shí),使用語(yǔ)句WITH GRANT OPTION系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤:ONLY ADMIN OPTION can be specified。在考試中要特別注意這個(gè)語(yǔ)法和錯(cuò)誤信息。

    posted @ 2006-09-03 16:33 七匹狼 閱讀(2121) | 評(píng)論 (1)編輯 收藏

    一、系統(tǒng)環(huán)境:

    (1)、操作系統(tǒng):Windows 2000 professional,機(jī)器內(nèi)存512M

    (2)、數(shù)據(jù)庫(kù): Oracle 8i R2 (8.1.6) for 2000 企業(yè)版

    (3)、安裝路徑:D:\ORACLE

    二、卸載步驟:

    (1)、開始->設(shè)置->控制面板->管理工具->服務(wù)

    停止所有Oracle服務(wù)。

    (2)、開始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer

    卸裝所有Oracle產(chǎn)品

    (3)、運(yùn)行regedit,選擇HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del鍵刪除這個(gè)入口。

    (4)、運(yùn)行regedit,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滾動(dòng)這個(gè)列表,刪除所有Oracle入口

    (5)、從桌面上、STARTUP(啟動(dòng))組、程序菜單中,刪除所有有關(guān)Oracle的組和圖標(biāo)

    (6)、重新啟動(dòng)計(jì)算機(jī),重起后才能完全刪除Oracle所在目錄

    (7)、刪除與Oracle有關(guān)的文件,選擇Oracle所在的缺省目錄C:\Oracle,刪除這個(gè)入口目錄及所有子目錄,

      并從Windows 2000目錄(一般為C:\WINNT)下刪除以下文件

      ORACLE.INI、oradim80.INI

    (8)、WIN.INI文件中若有[ORACLE]的標(biāo)記段,刪除該段

    注:第8步可有可無(wú)

    如果是在unix或linux下那就更方便了,只要?jiǎng)h除$ORACLE_HOME下的所以文件,以及所有數(shù)據(jù)文件,最后刪除日志文件就可以了

    posted @ 2006-09-03 14:52 七匹狼 閱讀(348) | 評(píng)論 (0)編輯 收藏
    本文所涉及到的Oracle_Database_10g運(yùn)行在操作系統(tǒng)Red Flag Linux DC 4.1下。
    ??? 8月1日至8月19日,CALIS第三期系統(tǒng)管理員培訓(xùn)班在上海交通大學(xué)閔行校區(qū)圖書館成功舉行。作為這期培訓(xùn)班的管理人員之一,筆者旁聽了紅旗Linux 和Oracle Database 10g的全部講課。10g的培訓(xùn)內(nèi)容基本涉及到了該數(shù)據(jù)庫(kù)的各個(gè)方面,但是在實(shí)際部署CALIS產(chǎn)品的時(shí)候,除了要了解Red Flag Linux DC 4.1下有方便10g安裝的Oracle Install Navigator(系統(tǒng)命令oranavi),以下三個(gè)問(wèn)題值得注意。一、RESOURCE角色的UNLIMITED TABLESPACE權(quán)限問(wèn)題
    ??? 在10g中,RESOURCE角色包含了CREATE TRIGGER、CREATE INDEXTYPE和CREATE PROCEDURE等常用的系統(tǒng)權(quán)限,因此在10g中創(chuàng)建新用戶的時(shí)候除了默認(rèn)的CONNECT角色,一般還要賦予RESOURCE角色。
    ??? 現(xiàn)在,使用Enterprise Manager(EM)或者下面的SQL語(yǔ)句創(chuàng)建一個(gè)新用戶:
    ??? CREATE USER "TEST" PROFILE "DEFAULT" IDENTIFIED BY "TESTPASS" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
    ??? GRANT "CONNECT" TO "TEST";
    ??? GRANT "RESOURCE" TO "TEST";
    ??? 下邊,在SQL*PLUS中以該用戶身份登錄:
    ??? [liuxg@localhost liuxg]$ su - oracle
    ??? [oracle@localhost oracle]$ sqlplus /nolog
    ??? SQL> connect test/testpass
    ??? 查詢?cè)撚脩羲鶕碛械娜繖?quán)限:
    ??? SQL> select * from session_privs;
    ??? PRIVILEGE
    ??? --------------------------------------------------------------------------------
    ??? CREATE SESSION
    ??? ALTER SESSION
    ??? UNLIMITED TABLESPACE
    ??? CREATE TABLE
    ??? CREATE CLUSTER
    ??? CREATE SYNONYM
    ??? CREATE VIEW
    ??? CREATE SEQUENCE
    ??? CREATE DATABASE LINK
    ??? CREATE PROCEDURE
    ??? CREATE TRIGGER
    ??? PRIVILEGE
    ??? --------------------------------------------------------------------------------
    ??? CREATE TYPE
    ??? CREATE OPERATOR
    ??? CREATE INDEXTYPE
    ??? 14 rows selected.
    ??? 從結(jié)果中可以看到,該用戶擁有UNLIMITED TABLESPACE系統(tǒng)權(quán)限。但是如果使用select privilege from role_sys_privs where role='CONNECT'以及select privilege from role_sys_privs where role='RESOURCE'查詢CONNECT和RESOURCE角色卻找不到UNLIMITED TABLESPACE這個(gè)系統(tǒng)權(quán)限。
    ??? 從Oracle MetaLink得知,UNLIMITED TABLESPACE是為了使10g保持向后兼容性而隱含在RESOURCE角色中的一個(gè)系統(tǒng)權(quán)限。從安全性的角度來(lái)考慮,在創(chuàng)建用戶并且授予RESOURCE角色之后應(yīng)該回收UNLIMITED TABLESPACE這個(gè)系統(tǒng)權(quán)限。這里推薦創(chuàng)建一個(gè)新角色,比如CALIS_RESOURCE,該角色擁有select privilege from role_sys_privs where role='RESOURCE'查詢語(yǔ)句所列出的全部系統(tǒng)權(quán)限,而在創(chuàng)建新用戶的時(shí)候則將賦予這個(gè)新角色。二、8080端口和2100端口被占用問(wèn)題
    ??? 很多用戶發(fā)現(xiàn),在10g運(yùn)行的時(shí)候,如果啟動(dòng)默認(rèn)端口為8080的Tomcat,不能訪問(wèn)Tomcat所提供的Web應(yīng)用程序,通過(guò)命令lsof -i:8080會(huì)發(fā)現(xiàn)該端口已經(jīng)被10g占用;同樣,如果啟動(dòng)默認(rèn)端口為2100的CALIS Z-Server,該服務(wù)也不能夠被訪問(wèn),再通過(guò)lsof -i:2100會(huì)發(fā)現(xiàn)該端口也是被10g占用。
    ??? 當(dāng)然可以通過(guò)改變Tomcat和CALIS Z-Server默認(rèn)端口的方式來(lái)避免端口沖突。通過(guò)調(diào)查發(fā)現(xiàn)10g中是XML DB在使用8080和2100,而XML DB目前在CALIS各項(xiàng)產(chǎn)品中還未使用到,因此,建議通過(guò)關(guān)閉XML DB來(lái)解決問(wèn)題。具體可參考如下幾步操作:
    ??? [liuxg@localhost liuxg]$ su - oracle
    ??? [oracle@localhost oracle]$ sqlplus /nolog
    ??? SQL> connect / as sysdba
    ??? SQL> alter system set dispatchers='' scope=both;
    ??? SQL> shutdown immediate
    ??? SQL> startup 三、 Enterprise Manager(EM)的使用問(wèn)題
    ??? 10g提供了使用瀏覽器以Web方式訪問(wèn)數(shù)據(jù)庫(kù)的工具Enterprise Manager,EM極大的方便了數(shù)據(jù)庫(kù)管理員對(duì)數(shù)據(jù)庫(kù)的管理。與此同時(shí),EM默認(rèn)使用的協(xié)議是HTTP,數(shù)據(jù)庫(kù)用戶密碼以及對(duì)數(shù)據(jù)庫(kù)進(jìn)行的各項(xiàng)操作都是在網(wǎng)絡(luò)上明文傳輸,這無(wú)疑是極大的安全隱患。針對(duì)這個(gè)問(wèn)題,建議使用安全性較高的HTTPS協(xié)議使用EM。具體可參考如下幾步操作:
    ??? [liuxg@localhost liuxg]$ su - oracle
    ??? [oracle@localhost oracle]$ emctl stop dbconsole
    ??? [oracle@localhost oracle]$ secure dbconsole
    ??? [oracle@localhost oracle]$ emctl start dbconsole
    ??? 其中為10g中sysman用戶的密碼。需要說(shuō)明的是,在這之后,用Microsoft Internet Explorer和Red Flag Linux DC 4.1自帶的Mozilla可以正常通過(guò)HTTPS協(xié)議訪問(wèn)EM,但是使用Firefox則會(huì)出現(xiàn)invalid certificate的提示,無(wú)法正常訪問(wèn),需要進(jìn)一步試驗(yàn)來(lái)解決。
    ??? 對(duì)于EM的中文界面出現(xiàn)亂碼的情況,解決方法請(qǐng)參考這個(gè)網(wǎng)址:
    ??? http://www.dbanotes.net/Oracle/Oracle-10g-font.properties.htm。由于EM的中文界面有很多翻譯不夠準(zhǔn)確的地方,因此最好是設(shè)置瀏覽器的默認(rèn)語(yǔ)言為英文,使用英文操作界面。
    ??? 另外,如果使用DBCA新建立了一個(gè)庫(kù)并配置了EM,那么訪問(wèn)該庫(kù)的EM的時(shí)候端口不再是5500,而是5501。如果再新建立另外的多個(gè)庫(kù),則端口號(hào)依次增加1,iSQL*PLUS等具有相同的規(guī)律
    posted @ 2006-09-01 15:34 七匹狼 閱讀(323) | 評(píng)論 (0)編輯 收藏
    1:打包:
    ??????tar -c (文件名.tar.gz) (要被打包的目錄)
    2:解壓:
    ??????tar -xvzf? file.tar.gz
    3:傳輸文件到另臺(tái)機(jī)器上:
    ??????scp filename compname:/directory
    4:復(fù)制文件和目錄
    ????? cp 文件名或目錄 文件名稱或目錄/路徑
    5:刪除文件或目錄
    ??????rm -rf? file/directory
    6:文字編輯
    ??????vi filename
    7:查看進(jìn)程
    ?????? ps -a
    8:查看開放的端口
    ?????? netstat -a
    9:讓程序永遠(yuǎn)后臺(tái)運(yùn)行
    ???nohup /root/test.php &

    posted @ 2006-09-01 00:50 七匹狼 閱讀(407) | 評(píng)論 (4)編輯 收藏
    1:> 用root用戶登陸:
    ?a:?jiǎn)?dòng)ftp:
    ????? 目錄:/etc/init.d
    ????? 命令: ./vsfrpd start
    ?b:?jiǎn)?dòng)apatch:
    ????? 目錄:/usr/local/apache2/bin
    ????? 命令:/apachectl start
    ?c:關(guān)閉防火墻:
    ???? 命令:iptables -F

    2:> 切換用戶,啟動(dòng)oracle數(shù)據(jù)庫(kù)
    ??? a:切換用戶
    ????? 命令:su 用戶名。
    ??? b:啟動(dòng)oracle數(shù)據(jù)庫(kù)
    ????? 目錄:/usr/app/oracle/product/10.1.0/db-1/bin
    ????? 命令:startup
    ?? c:關(guān)閉oracle數(shù)據(jù)庫(kù)?
    ?????????命令:shutdown
    ?? d:?jiǎn)?dòng)監(jiān)聽器
    ?????????命令:lsnrctl

    3:> 啟動(dòng)tomcat
    a:切換用戶到common
    ??? 目錄:/usr/local/tomcat/bin
    ??? 命令:./startup.sh
    ?b:關(guān)閉tomcat
    ??? 命令:./shutdown.sh

    4:>
    ???重啟Linux服務(wù)器
    ?????? a:命令:reboot

    5>
    ???啟動(dòng)oracle 10g的em
    ?????????emctl start dbconsole
    ?? 停止oracle 10g的em
    ?????????emctl stop dbconsole
    posted @ 2006-08-28 10:42 七匹狼 閱讀(704) | 評(píng)論 (0)編輯 收藏
    在診斷數(shù)據(jù)庫(kù)系統(tǒng)性能的過(guò)程中,總會(huì)涉及到跟蹤效率低下的sql語(yǔ)句,現(xiàn)在就如何跟蹤sql語(yǔ)句來(lái)做一個(gè)簡(jiǎn)單的總結(jié)。權(quán)做拋磚引玉之用。   如果我們可以修改應(yīng)用系統(tǒng)的源代碼,則可以直接在程序中加入如下的語(yǔ)句:

    1)alter session set timed_statistics=true; /*適用于Oracle 7.3以后的版本*/
    2)alter session set max_dump_file_size=unlimited ; /*適用于Oracle 7.3以后的版本*/
    3)alter session set tracefile_identifier='POX20031031a'; /*適用于Oracle 8.1.7以后的版本*/
    4)alter session set events '10046 trace name context forever, level 8'; /*在這里編寫應(yīng)用程序的代碼*/
    5)alter session set events '10046 trace name context off';   

    在上述語(yǔ)句中,
    語(yǔ)句1)是把該會(huì)話的時(shí)間統(tǒng)計(jì)打開,該參數(shù)默認(rèn)為false.在Oracle 7.3之前的版本中,不能在會(huì)話級(jí)設(shè)置該參數(shù),只能修改初始化文件然后重新啟動(dòng)數(shù)據(jù)庫(kù),這樣將在實(shí)例級(jí)打開時(shí)間統(tǒng)計(jì)。
      
    語(yǔ)句2)是把跟蹤文件的大小設(shè)置成操作系統(tǒng)所允許的最大尺寸,這樣可以防止跟蹤文件在完成所需要的跟蹤之前被填充滿,此外需要注意的是確保存放跟蹤文件的目錄要有足夠的空間,否則將會(huì)收到“文件系統(tǒng)已滿”錯(cuò)誤。  

    語(yǔ)句3)的作用是使生成的跟蹤文件名稱中包含'POX20031031a'字符串,這樣可以使你很容易的找到所需的跟蹤文件,該參數(shù)在Oracle 8.1.7之后可用。  語(yǔ)句4)和語(yǔ)句5)的作用分別是打開和關(guān)閉跟sql跟蹤,你可以在這兩個(gè)語(yǔ)句之間寫入應(yīng)用程序的代碼,這些代碼的執(zhí)行情況都將被跟蹤。需要注意的是語(yǔ)句4)的level關(guān)鍵字,它用來(lái)指定跟蹤級(jí)別,一共有0,1,2,4,8,12六個(gè)級(jí)別可以設(shè)置,0相當(dāng)于關(guān)閉跟蹤;1是輸出一般的跟蹤信息,不包括綁定變量和等待信息;2和1相同;4是在級(jí)別1的基礎(chǔ)上增加綁定變量信息;8是在級(jí)別1的基礎(chǔ)上增加等待信息;級(jí)別12是輸出包含級(jí)別1,4,8的所有信息。
    ?  如果應(yīng)用程序的代碼無(wú)法修改或者是不想去修改,則可以在其他會(huì)話中打開對(duì)特定會(huì)話的跟蹤,方法如下:  
    1)sys.dbms_system.set_bool_param_in_session(:sid, :serial,'timed_statistics', true); 
     
    2)sys.dbms_system.set_int_param_in_session( :sid, :serial,'max_dump_file_size', 2147483647);  打開和關(guān)閉跟蹤的第一種方法(oracle推薦):
     
    3.1)sys.dbms_support.start_trace_in_session(:sid, :serial,waits=>true, binds=>false);  /* 在此期間運(yùn)行要跟蹤的應(yīng)用程序*/   

    4.1)sys.dbms_support.stop_trace_in_session(:sid, :serial);  
    打開和關(guān)閉跟蹤的第二種方法:  
    3.2)sys.dbms_system.set_ev(:sid, :serial, 10046, 8, '');  /*在此期間運(yùn)行要跟蹤的應(yīng)用程序*/   
    3.2)sys.dbms_system.set_ev(:sid, :serial, 10046, 0, '');  
     
    以上語(yǔ)句中的:sid和:serial分別代表所要跟蹤的會(huì)話的ID和序列號(hào),這些信息可以從V$SESSION視圖的SID和SERIAL#列獲得。打開關(guān)閉跟蹤中第一種方法的好處是你不用自己寫10046這個(gè)事件號(hào),這樣可以減少錯(cuò)誤,但是dbms_support程序包在你的數(shù)據(jù)庫(kù)中可能會(huì)不存在,這樣就只有用第二種方法了。   到現(xiàn)在為止,我們已經(jīng)生成了所需要的跟蹤文件,然后我們需要找到該文件來(lái)進(jìn)行分析。跟蹤文件的存放位置只有兩種可能,Oracle參數(shù)USER_DUMP_DEST 或者BACKGROUND_DUMP_DEST或者是oracle_home\udump指定的目錄;文件名稱根據(jù)不同的平臺(tái)會(huì)有所不同,但是在文件名中都會(huì)包含會(huì)話所對(duì)應(yīng)的操作系統(tǒng)進(jìn)程(線程)號(hào),也就是V$PROCESS的SPID列(V$PROCESS.SPID) ,該信息可以通過(guò) v$process.addr和v$session.paddr做表連接查詢得到。例如:select spid from v$process p,v$session s where p.addr=s.paddr and s.sid=:sid and s.serial#=:serial.   本文只對(duì)Oracle在使用專用服務(wù)器進(jìn)程(Dedicated Server)模式做了總結(jié),至于的共享服務(wù)器(Shared Server)模式和在應(yīng)用級(jí)使用連接池的情況下,收集sql跟蹤信息的方法會(huì)比較復(fù)雜,希望有相關(guān)經(jīng)驗(yàn)的高手來(lái)總結(jié)。
    posted @ 2006-08-28 00:19 七匹狼 閱讀(438) | 評(píng)論 (0)編輯 收藏
    視圖 作用
    ALL_COL_PRIVS 表示列上的授權(quán),用戶和PUBLIC是被授予者
    ALL_COL_PRIVS_MADE 表示列上的授權(quán),用戶是屬主和被授予者
    ALL_COL_RECD 表示列上的授權(quán),用戶和PUBLIC是被授予者
    ALL_TAB_PRIVS 表示對(duì)象上的授權(quán),用戶是PUBLIC或被授予者或用戶是屬主
    ALL_TAB_PRIVS_MADE 表示對(duì)象上的權(quán)限,用戶是屬主或授予者
    ALL_TAB_PRIVS_RECD 表示對(duì)象上的權(quán)限, 用戶是PUBLIC或被授予者
    DBA_COL_PRIVS 數(shù)據(jù)庫(kù)列上的所有授權(quán)
    DBA_ROLE_PRIVS 顯示已授予用戶或其他角色的角色
    DBA_SYS_PRIVS 已授予用戶或角色的系統(tǒng)權(quán)限
    DBA_TAB_PRIVS 數(shù)據(jù)庫(kù)對(duì)象上的所有權(quán)限
    ROLE_ROLE_PRIVS 顯示已授予用戶的角色
    ROLE_SYS_PRIVS 顯示通過(guò)角色授予用戶的系統(tǒng)權(quán)限
    ROLE_TAB_PRIVS 顯示通過(guò)角色授予用戶的對(duì)象權(quán)限
    SESSION_PRIVS 顯示用戶現(xiàn)在可利用的所有系統(tǒng)權(quán)限
    USER_COL_PRIVS 顯示列上的權(quán)限,用戶是屬主、授予者或被授予者
    USER_COL_PRIVS_MADE 顯示列上已授予的權(quán)限,用戶是屬主或授予者
    USER_COL_PRIVS_RECD 顯示列上已授予的權(quán)限,用戶是屬主或被授予者
    USER_ROLE_PRIVS 顯示已授予給用戶的所有角色
    USER_SYS_PRIVS 顯示已授予給用戶的所有系統(tǒng)權(quán)限
    USER_TAB_PRIVS 顯示已授予給用戶的所有對(duì)象權(quán)限
    USER_TAB_PRIVS_MADE 顯示已授予給其他用戶的對(duì)象權(quán)限,用戶是屬主
    USER_TAB_PRIVS_RECD 顯示已授予給其他用戶的對(duì)象權(quán)限,用戶是被授予者
    posted @ 2006-08-28 00:04 七匹狼 閱讀(644) | 評(píng)論 (1)編輯 收藏
    1:先在oracle數(shù)據(jù)庫(kù)中找到鎖住的對(duì)象:
    select xidusn, object_id, session_id, locked_mode from v$locked_object;

    2:得到session_id。再根據(jù)session_id找到v$session對(duì)應(yīng)的sid號(hào)和serial#:
    select username,sid,serial# from v$session where sid=session_id;

    3:用oracle的slq kill掉相關(guān)的session sql語(yǔ)句:
    ???alter system kill session 'sid,serial#';

    4:如果不能kill掉,報(bào)ora-00031錯(cuò):說(shuō)明之前有kill過(guò),這樣找到這個(gè)進(jìn)程spid slq語(yǔ)句:
    ???select pro.spid from v$session ses,v$process pro where ses.sid=129 and ses.paddr=pro.addr;

    5:根據(jù)這個(gè)spid對(duì)應(yīng)linux下的進(jìn)程pid
    ???linux命令:
    ???ps -ef? | gre | 'ora' (找到所有ora開頭的進(jìn)程)

    ?? kill? -9 (pid)

    6:搞定收工。



    ???
    posted @ 2006-08-25 10:46 七匹狼 閱讀(2451) | 評(píng)論 (3)編輯 收藏
    DML會(huì)產(chǎn)生行鎖,只有該行的鎖解開后才可繼續(xù)對(duì)改行進(jìn)行其他的DML,若新的DML和舊的DML操作的行相同,且舊DML以把行改變,則新DML不起作用

    準(zhǔn)備工作:
    SQL>create table lck (a number, b number);
    SQL>insert into lck values (1,1);
    SQL>insert into lck values (2,2);
    SQL>insert into lck values (3,3);
    SQL>insert into lck values (4,4);
    SQL>insert into lck values (5,5);
    SQL>insert into lck values (6,6);
    SQL>insert into lck values (7,7);
    SQL>commit;

    實(shí)驗(yàn)過(guò)程:

    步 驟Session 14Session 10說(shuō)明
    1SQL> select sid from v$session
    where audsid=
    userenv('SESSIONID');

    SID
    ----------
    14
    SQL> select sid from v$session
    where audsid=
    userenv('SESSIONID');

    SID
    ----------
    10
    獲得當(dāng)前session的SID
    2SQL> insert into lck values (1000,1001);

    1 row created.
     未提交
    3SQL> select sid,type,id1,lmode,request from v$lock
    where sid in (10,14);

    SID TY ID1 LMODE REQUEST
    ---------- -- ---------- ---------- ----------
    14 TX 262153 6 0
    14 TM 4145 3 0
     因?yàn)镾ession14的DML未提交,因此在v$lock里產(chǎn)生2個(gè)鎖,一個(gè)為:transaction lock(TX),另一個(gè)為:DML/table lock(TM).LMODE=3代表:行排它.LMODE=6代表:對(duì)象排它
    4SQL> insert into lck values (1001,1000);

    1 row created.
     未提交
    5SQL> select sid,type,id1,lmode,request from v$lock
    where sid in (10,14);

    SID TY ID1 LMODE REQUEST
    ---------- -- ---------- ---------- ----------
    14 TX 262153 6 0
    14 TM 4145 3 0
    SQL> select * from lck;

    A B
    ---------- ----------
    1 2
    2 4
    3 6
    4 8
    5 3
    6 5
    7 7

    7 rows selected.
    v$lock中并不會(huì)因?yàn)閷?duì)該表的再一次DML且未提交而新生成鎖
    6 SQL>update lck set a=2000,b=2001
    where a=1;

    1 row updated.
    未提交
    7SQL> select * from lck;

    A B
    ---------- ----------
    1 2
    2 4
    3 6
    4 8
    5 3
    6 5
    7 7
    1000 1001
    1001 1000

    9 rows selected.
    SQL> select sid,type,id1,lmode,request from v$lock
    where sid in (10,14);

    SID TY ID1 LMODE REQUEST
    ---------- -- ---------- ---------- ----------
    10 TX 327698 6 0
    10 TM 4145 3 0
    14 TX 262153 6 0
    14 TM 4145 3 0
    v$lock中對(duì)另外session10的DML產(chǎn)生了鎖
    8SQL>update lck set a=4000,b=2001
    where a=1;
     session10發(fā)出更新a=1行的SQL后,session14也發(fā)出更新a=1行的SQL,則后者的SQL懸在那里,無(wú)法結(jié)束
    9SQL> select event, seconds_in_wait, sid from v$session_wait where sid in (10,14);

    EVENT SECONDS_IN_WAIT SID
    ---------------------------------------------------------------- --------------- ----------
    enq: TX - row lock contention 1593 14
    SQL*Net message from client 2862 10
    v$session_wait中可以看到哪個(gè)session在等待,等待原因和已經(jīng)等待的時(shí)間
    100 rows updated.
     
    SQL>commit;

    Commit complete.
    只有在session10提交該DML后,session14才執(zhí)行完,但更新為0行
    11SQL> select * from lck;

    A B
    ---------- ----------
    1 2
    2 4
    3 6
    4 8
    5 3
    6 5
    7 7
    1000 1001
    1001 1000

    9 rows selected.
    SQL> select * from lck;

    A B
    ---------- ----------
    1 2
    2 4
    3 6
    4 8
    5 3
    6 5
    7 7
    1000 1001
    1001 1000

    9 rows selected.
     

    筆記來(lái)源: http://www.adp-gmbh.ch/ora/concepts/lock.html

    posted @ 2006-08-24 13:14 七匹狼 閱讀(1863) | 評(píng)論 (2)編輯 收藏
    我們?cè)诓僮鲾?shù)據(jù)庫(kù)的時(shí)候,有時(shí)候會(huì)由于操作不當(dāng)引起數(shù)據(jù)庫(kù)表被鎖定,這么我們經(jīng)常不知所措,不知怎么給這些表解鎖,在pl/sql Developer工具的的菜單“tools”里面的“sessions”可以查詢現(xiàn)在存在的會(huì)話,但是我們很難找到那個(gè)會(huì)話被鎖定了,想找到所以被鎖的會(huì)話就更難了,下面這叫查詢語(yǔ)句可以查詢出所以被鎖的會(huì)話。如下:

    SELECT?? sn.username, m.SID,sn.SERIAL#, m.TYPE,
    ???????? DECODE (m.lmode,
    ???????????????? 0, 'None',
    ???????????????? 1, 'Null',
    ???????????????? 2, 'Row Share',
    ???????????????? 3, 'Row Excl.',
    ???????????????? 4, 'Share',
    ???????????????? 5, 'S/Row Excl.',
    ???????????????? 6, 'Exclusive',
    ???????????????? lmode, LTRIM (TO_CHAR (lmode, '990'))
    ??????????????? ) lmode,
    ???????? DECODE (m.request,
    ???????????????? 0, 'None',
    ???????????????? 1, 'Null',
    ???????????????? 2, 'Row Share',
    ???????????????? 3, 'Row Excl.',
    ???????????????? 4, 'Share',
    ???????????????? 5, 'S/Row Excl.',
    ???????????????? 6, 'Exclusive',
    ???????????????? request, LTRIM (TO_CHAR (m.request, '990'))
    ??????????????? ) request,
    ???????? m.id1, m.id2
    ??? FROM v$session sn, v$lock m
    ?? WHERE (sn.SID = m.SID AND m.request != 0)????????
    ????? OR (??? sn.SID = m.SID???????????????????????
    ????????? AND m.request = 0
    ????????? AND lmode != 4
    ????????? AND (id1, id2) IN (
    ??????????????????????? SELECT s.id1, s.id2
    ????????????????????????? FROM v$lock s
    ???????????????????????? WHERE request != 0 AND s.id1 = m.id1
    ?????????????????????????????? AND s.id2 = m.id2)
    ???????? )ORDER BY id1, id2, m.request;
    通過(guò)以上查詢知道了sid和 SERIAL#就可以開殺了
    ?? alter system kill session 'sid,SERIAL#';
    posted @ 2006-08-24 11:32 七匹狼 閱讀(2752) | 評(píng)論 (1)編輯 收藏
    主站蜘蛛池模板: 18禁无遮挡无码国产免费网站| 亚洲精品资源在线| 好吊妞视频免费视频| 免费视频一区二区| 污网站免费在线观看| 麻豆狠色伊人亚洲综合网站| 久久精品国产亚洲AV果冻传媒| 四虎免费久久影院| 成年女人18级毛片毛片免费| 人妻无码一区二区三区免费| A毛片毛片看免费| 国产精品偷伦视频免费观看了| 亚洲精品国产第一综合99久久| 亚洲av无码专区在线| 99精品一区二区免费视频| 怡红院免费的全部视频| 一级中文字幕乱码免费| 手机永久免费的AV在线电影网| 国产精品亚洲一区二区在线观看| 亚洲AV无码专区在线亚| 亚洲人成在线精品| 亚洲一区动漫卡通在线播放| 亚洲黑人嫩小videos| 亚洲小视频在线观看| 亚洲综合婷婷久久| 水蜜桃亚洲一二三四在线| 亚洲av永久无码精品漫画| 黑人精品videos亚洲人| 亚洲国产精品乱码一区二区 | 亚洲理论片在线观看| 婷婷精品国产亚洲AV麻豆不片| 亚洲AV无码专区电影在线观看| 亚洲精品成人无码中文毛片不卡| 中文字幕亚洲日韩无线码| 亚洲精品国产成人片| 亚洲成Av人片乱码色午夜| 亚洲av无码一区二区乱子伦as| 亚洲国产精品久久久久网站| 亚洲综合婷婷久久| 四虎必出精品亚洲高清| 色偷偷尼玛图亚洲综合|