熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫開發的一些經驗積累(二)

2013-11-13 12:48:53  來源: Oracle 

  三LINUX和UNIX下
  轉到操作系統下執行:kill spid (以上語句所查出的)
  
  ORACLE中檢查表是否被鎖的語句
  
  SELECT AOWNER
  AOBJECT_NAME
  BXIDUSN
  BXIDSLOT
  BXIDSQN
  BSESSION_ID
  BORACLE_USERNAME
  BOS_USER_NAME
  BPROCESS
  BLOCKED_MODE
  CMACHINE
  CSTATUS
  CSERVER
  CSID
  CSERIAL#
  CPROGRAM
  FROM ALL_OBJECTS A
  V$LOCKED_OBJECT B
  SYSGV_$SESSION C
  WHERE ( AOBJECT_ID = BOBJECT_ID )
  AND (BPROCESS = CPROCESS )
  ORDER BY
  殺掉alter system kill session sid serial#
  ORACLE的登錄問題用戶名和密碼
  
  可以直接輸入
  internal/oracle@serivce_name
  sys/change_on_install@serivce_name
  system/manager@serivce_name
  scott/tiger@serivce_name
  注意
  i中沒有internal/oracle
  如果選擇典型安裝則有 scott用戶
  如果自定義可以不安裝  scott用戶
  如果是本機則可以省略@serivce_name
  
  oem:(ORACLE ENTERPRISE MANAGER)
  sysman/oem_temp
  
  修改表的列名
  
  Oraclei:
  alter table xxx rename column xx to yy;
  
  Oraclei & lower version
  connect sys/passed;
  update col$ set name=xx where obj#=對象id and name = 字段
  (一般不要這樣用會造成意想不到的結果)
  注最好是刪除再建立新的列
  
  把用戶模式對象所在的表空間移到新的表空間
  () create the new tablesapce
  () alter user test default tablespace test_data;
  () alter user test quota unlimited on test_data;
  () alter table the_table_name move tablespace test_data;
  生成腳本
  select alter table||tname|| move tablespace test_date;
  from tab
  where tabtype=TABLE
  () rebuild the indexes;
  
  使用OEM備份或者EXP的步驟
  WIN
  
  () 控制面板――>管理工具―― >計算機管理――>本地用戶和組――>用戶――>新建用戶sys和sysman(sys和sysman 的帳號要和登陸數據庫的帳號相同)
  ().控制面板――>管理工具―― >本地安全策略――>本地策略――>用戶權利指派――>
  作為批處理作業登陸――>添加sys和sysman兩個帳號
  ().使用Enterprise Manager配置輔助工具
  開始→程序→Oracle OraHome→Enterprise Manager→Configuration Assistant
  a使用Configuration Assistant工具來創建一個新的資料檔案庫
  
  ().控制面板――>管理工具―― > 服務查看OracleOraHomeManagementServer是否啟動如果沒有啟動則手動啟動該服務
  ().以sysman/oem_temp(default)登陸DBA Studio
  (第二個選項登陸到Oracle Management Server)立即修改密碼為你剛才在NT下建的用戶sysman的密碼
  (). 以sysman/ *** (bluesky) 從開始→程序→Oracle OraHome→Console 登陸到 控制台
  在 系統→首選項→首選身份證明(我的首選身份設置如下
  DEFAULT節點name:sysman
  DEFAULT數據庫name:sys
  (). 在搜索/添加結點後以sysman/ *** 登陸到該結點以sys/ *** as sysdba登陸數據庫(也就是在首選身份設置的結果)
  (). 在工具→備份管理→向導→預定義備份策略(自定義備份策略)→提交備份計劃
  ().從開始→程序→Oracle OraHome→Console 登陸到 控制台查看活動(歷史記錄)可以看到你的備份是否成功如果不成功可以點擊備份看明細(我第一次也沒成功後來我修改系統的臨時目錄C:\WINNT\Temp→c:\temp\systmp重新啟動機器就ok了)
  
  如何修改INTERNAL的口令
  
  以下是oraclei你可以仿照來做
  
  ()進入DOS下
  
  ()默認internal密碼文件在c:\orant\database下是隱藏屬性文件名稱與數據庫實例名有關
  
  如默認ORACLE實例名為ORCL則internal密碼文件名為pwdorclora
  
  ()建立新的internal密碼文件起個新名字為pwdoraora
  
  orapwd file=pwdoraora password=B entries=     password項一定要用大寫並且不要用單引號
  
  ()拷貝pwdoraora文件到c:\orant\database目錄下
  
  ()運行regedit修改口令文件指向
  
  ()找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE項
  
  定位ORA_ORCL_PWFILE子項改變其值為c:\orant\database\pwdoraora
  
  ()關閉ORACLE數據庫重新啟動
  
  ()進入svrmgr服務程序測試internal密碼是否更改成功
  
  憑證檢索失敗的決絕方法
  
  原因: 由於Oracle不能應用OS認證而導致憑證檢索失敗
  
  解決辦法:
  
  ()打開network/admin下的sqlnetora
  修改SQLNETAUTHENTICATION _SERVICES=(NONE)
  
  ()啟動Net configuration assistant>選第三項本地網絡服務名配置
  >刪除(刪除原來的本地網絡服務名)
  
  ()重復第二步
  >添加 (新建本地網絡服務名)
  
  ()restart oracle
  
  注意NTS是WinNT的認證方式
  
  命令行編譯存儲過程
  
  ALTER PROCEDURE procedure_name COMPILE;
  
  關於如何建立數據庫鏈接(DBlink)
  
  可以通過建立客戶機數據庫網絡服務名的辦法將服務器的名字或是IP地址設置為你需要連接的那個機器就行
  
  如果你要在一個應用中連接它現在做好上步工作然後按如下處理
  
  建立數據庫連接
  CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING NetServiceName;
  DBaseLinkName 是建立的數據連接名稱
  UserName    是可以連接到的用戶名
  Password    是可以連接到的用戶的密碼
  NetServiceName 是可以連接的數據庫網絡服務名或是數據庫名
  
  查詢建立數據連接的表實例
  Select * From TableName@ DBaseLinkName;
  
  注意如果在CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING NetServiceName;中NetServiceName 是數據庫名修改initora中global_names = true
  否則global_names = false
  initora中global_names = false
  
  Object Browser中文版的破解方法
  
  到OBJECT BROWSER的目錄裡找到DeIsLisu文件用記事本打開看到的是亂碼吧?沒關系將Stirling Technologies Inc 這個字符串前面的亂碼去掉(如果有的話)讓後在Stirling之前加一個空格(一定要加的)保存退出重新運行一下看看雖然還有提示輸入驗證信息但是不用管他直接確定就行是不是可以用了呢?保證好使
  
  錯誤號ORA:space quota exceeded for table space ALCATEL的解決辦法
  
  三個解決辦法任你選擇
  () alter user USERNAME quota M on TABLESPACENAME;
  () alter user USERNAME quota unlimited on TABLESPACENAME;
  () grant unlimited tablespace to USERNAME;
  
  如何在Oracle中捕獲到SQL語句的全部操作內容
  
  SELECT osuser username sql_text from v$session a v$sqltext b
  where asql_address =baddress order by address piece;
  
  ORACLE中如何實現自增字段
  
  ()第一種方法
  ORACLE一般的做法是同時使用序列和觸發器來生成一個自增字段
  CREATE SEQUENCE SEQname
  INCREMENT BY 
  START WITH 
  MAXVALUE 
  /
  CREATE TRIGGER TRGname
  BEFORE INSERT ON table_name
  REFERENCING
  NEW AS :NEW
  FOR EACH ROW
  Begin
  SELECT SEQnameNEXTVAL
  INTO :NEWFIELDname
  FROM DUAL;
  End;
  
  ()第二種方法
  CREATE OR REPLACE TRIGGER TR
  BEFORE INSERT ON temp_table
  FOR EACH ROW
  declare
  com_num NUMBER;
  BEGIN
  SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;
  :NEWID:=COM_NUM+;
  END TR;
  
  job的使用
  
  修改initsidora參數
  job_queue_processes =       ii (允許同時執行的JOB數)
  job_queue_interval =       i
  job_queue_keep_connections=true    i
  
  DBMS_JOBSUBMIT(:jobno//job號
  your_procedure;//要執行的過程
  trunc(sysdate)+///下次執行時間
  trunc(sysdate)+/+//每次間隔時間
  );
  刪除job:dbms_jobremove(jobno);
  修改要執行的操作:dbms_jobwhat(jobnowhat);
  修改下次執行時間dbms_jobnext_date(jobnext_date);
  修改
From:http://tw.wingwit.com/Article/program/Oracle/201311/16627.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.