国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle數(shù)據(jù)庫常見問題答疑一

2024-08-29 13:42:42
字體:
供稿:網(wǎng)友
   Oracle數(shù)據(jù)庫以其強大的功能和穩(wěn)定性而著稱,但同時,在開發(fā)和治理方面也存在很多困難,筆者在此總結(jié)了一些Oracle數(shù)據(jù)庫開發(fā)和治理的常見問題,希望能對大家有所幫助。
  
  問:假如發(fā)現(xiàn)表中有壞塊,如何檢索其它未壞的數(shù)據(jù)?
  
  答:首先需要找到壞塊的ID(可以運行dbverify實現(xiàn)),假設(shè)為1234。運行下面的查詢查找段名:
  
  select segment_name, segment_type, block_id, blocks
  
  from dba_extents
  
  where (1234 between block_id and (block_id + blocks - 1));
  
  一旦找到壞段名稱,若段是一個表,則最好建立一個臨時表,存放好的數(shù)據(jù)。若段是索引,則刪除它,再重建。
  
  create table good_table
  
  as
  
  select  from bad_table where rowid not in
  
  ( select /+index(bad_table, any_index)/ rowid
  
  from bad_table where substr( rowid, 1, 8 ) = 1234)
  
  問:如請問如何關(guān)閉FORM調(diào)用REPORT時的小窗口?
  
  答:在利用Oracle數(shù)據(jù)庫的Develop 2000設(shè)計開發(fā)界面的過程中,當FORM調(diào)用REPORT時,會顯示一個背景窗口REPORT BACKGROUD ENGINE,等待FORM對REPORT的調(diào)用,當FORM調(diào)用其它REPORT時,也使用這個后臺服務(wù)器,不論調(diào)用多少個REPORT,這個后臺服務(wù)器存在且只有一個。但當FORM與REPORT全部退出后,該窗口仍處于等待狀態(tài),不會關(guān)閉,這時,我們需要手工將其關(guān)閉。
  
  我們可以使用以下參數(shù)在FORM調(diào)用REPORT時不顯示這個小窗口:
  
  Add_Parameter( pl_id, 'ORACLE_SHUTDOWN',TEXT_Parameter, 'Yes' );
  
  需要注重的是,該參數(shù)必須加在所有參數(shù)的前面,即它必須為第一個參數(shù)。
  
  問:請問如何根據(jù)查詢條件在REPORT中動態(tài)顯示記錄?
  
  答:1. 在REPORT的“數(shù)據(jù)模型”下面的“用戶參數(shù)”中,創(chuàng)建用戶自定義參數(shù)W_CLAUSE,W_CLAUSE為從FORM傳遞過來的查詢條件,數(shù)據(jù)類型為字符型,缺省值為NULL。
  
  2. 修改查詢Q_1,將SQL查詢語句修改為select  from dept &&w_clause。
  
  3. 在運行報表時,報表會自動將符合&&w_clause的查詢條件記錄顯示出來。
  
  假如從FORM傳遞過來的w_clause為where dept=1,本報表的SQL查詢自動轉(zhuǎn)換為select  from dept where dept=1,并在報表運行結(jié)果中顯示符合該查詢條件的記錄,假如從FORM傳遞過來的w_cluase為where to_char(年度,'YYYY.MM')='2000.03',則在報表運行結(jié)果中自動顯示2000年3月份的記錄。
  
  問:在Oracle中,我們?nèi)绾尾榭茨潮砩系募s束?
  
  答:我們可以使用下面語句從all_constraints視圖中查看某表上的約束:
  
  SELECT constraint_name, table_name, r_owner, r_constraint_name
  
  FROM all_constraints
  
  WHERE table_name = 'table_name' and owner = 'owner_name';
  
  另一個視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。
  
  問:如何將數(shù)據(jù)庫從noarchivelog方式改變?yōu)閍rchivelog方式?
  
  答:首先打開Init.ora文件,確保存檔日志目標指向一有效目錄。
  
  然后啟動Server Manager
  
  svrmgrl〉 shutdown immediate
  
  svrmgrl〉 startup mount
  
  svrmgrl〉 alter database archivelog;
  
  svrmgrl〉 alter database open;
  
  svrmgrl〉 archive log list;
  
  在init.ora中設(shè)置參數(shù)archive_log_start=TRUE,它設(shè)置存檔日志為自動啟動。在Oracle 8i中支持多個存檔日志的目標,因此參數(shù)修改為log_archive_dest[n],其中n為1到5。
  
  問:在Oracle數(shù)據(jù)庫中,我們?nèi)绾卧黾颖砜臻g的大小?
  
  答: 在開發(fā)Oracle數(shù)據(jù)庫中,我們有兩種方法增加表空間的大小:
  
  1.增加額外的數(shù)據(jù)文件到表空間中
  
  例如:alter tablespace users add datafile '/u01/oradata/orcl/users02.dbf' size 25m;
  
  2.修改表空間當前的數(shù)據(jù)文件
  
  例如:alter database datafile
  
  '/u01/oradata/orcl/users01.dbf' resize 50M;
  
  問:請問如何在REPORT中設(shè)置動態(tài)顯示域?
  
  答:在REPORT中設(shè)置動態(tài)顯示域的方法如下:
  
  1. 在REPORT的“數(shù)據(jù)模型”下面的“用戶參數(shù)”中,創(chuàng)建用戶自定義參數(shù),如RQ,RQ是從FORM傳遞過來的顯示日期,數(shù)據(jù)類型為字符型。
  
  2. 在布局模型中,創(chuàng)建一個顯示域F_1,在屬性選項板中修改該顯示域的源為用戶自定義參數(shù)RQ,并且設(shè)為“不可見的”。
  
  3. 在動態(tài)預覽中,創(chuàng)建一個文本域D_1,調(diào)整該文本域的位置和寬度,在該域的內(nèi)容中輸入&&F_1,則該域會動態(tài)顯示用戶定義參數(shù)RQ的值。
  
  問:有關(guān)口令
  
  我在Solaris系統(tǒng)上運行 Oracle8i 8.1.7企業(yè)版。我創(chuàng)建了兩個數(shù)據(jù)庫:SUGAR和TestDb。將兩者的remote_login_passWordfile都設(shè)置為 “獨占(exclusive)”。我試圖以SYSDBA身份連接到TestDb,但未能成功。下面是我的做法:
  
  $sqlplus /nolog
  
  SQL> conn sys/change_on_install@testdb
  
  Connected.(已連接)
  
  SQL> select * from v$pwfile_users;
  
  username sysdb sysop
  
  -----------------------------------------
  
  internal true true
  
  sys true true
  
  SQL> conn sys/change_on_install@testdb as
  
  sysdba
  
  ERROR(錯誤)
  
  ORA-01017: invalid username/password; logon
  
  denied(無效的用戶名/口令,登錄被拒絕)
  
  Warning: You are on longer connected to
  
  ORACLE(警告:你已經(jīng)與ORACLE斷開連接)
  
  問:我為什么不能以SYSDBA身份連接到TestDb?
  
  答:通常Oracle中的SYS口令與INTERNAL口令是同步的,SYS口令存儲于口令文件中。在上述情況下你建立了包含有一個口令的口令文件,而不是使用缺省的 “change_on_install,”這就是問題之所在。
  
  希望下面的方法對你有所幫助。首先,建立一個口令文件,其中包含一個口令,這個口令不要與系統(tǒng)口令匹配:
  
  $ orapwd file=orapw password=Foobar
  
  entries=40
  
  然后,進入服務(wù)器,啟動數(shù)據(jù)庫:
  
  $ svrmgr
  
  SVRMGR> connect internal
  
  Connected.(已連接)
  
  SVRMGR> startup
  
  ORACLE instance started.(ORACLE 實例已啟動)
  
  Tot
  
  al System Global Area (系統(tǒng)全局區(qū)域大小)
  
  193073136 bytes
  
  Fixed Size (固定大小)
  
  69616 bytes
  
  Variable Size (可變大小)
  
  141639680 bytes
  
  Database Buffers (數(shù)據(jù)庫緩沖區(qū))
  
  45056000 bytes
  
  Redo Buffers (重做緩沖區(qū))
  
  6307840 bytes
  
  Database mounted. (數(shù)據(jù)庫已加載)
  
  Database opened.數(shù)據(jù)庫已打開。
  
  現(xiàn)在使用SYS用戶的口令,以SYS身份連接:
  
  SVRMGR> connect sys/change_on_install@ora81
  
  Connected.(已連接)
  
  成功了。現(xiàn)在試著以SYSDBA身份連接:
  
  SVRMGR> connect sys/change_on_install@ora81
  
  as sysdba;
  
  ORA-01017: invalid username/password; logon
  
  denied(無效的用戶名/口令;登錄被拒絕)
  
  這里出現(xiàn)了你所說的錯誤。你的SYS口令為:change_on_install,但口令文件中的口令卻是foobar。SYS用戶是專用的,以SYSDBA身份連接就像是以INTERNAL連接,你必須使用口令文件中的口令。試試這樣做:
  
  SVRMGR— connect sys/foobar@ora81 as sysdba;
  
  Connected.(已連接)
  
  并不是每個人都需要使用口令文件中的口令;用戶需要使用他們自己的口令。通過授權(quán)SYSDBA給SCOTT,你就可以明白這一點:
  
  SVRMGR> grant sysdba to scott;
  
  Statement PRocessed.(已處理)
  
  這個命令將SCOTT以SCOTT的憑證加入到口令文件中。假如你改變了SCOTT的口令,口令文件也會自動同步改變。現(xiàn)在,你可以試試以SYSDBA身份連接SCOTT了:
  
  SVRMGR> connect scott/tiger@ora81 as sysdba;
  
  Connected.(已連接)
  
  一切正常。現(xiàn)在可以使用ALTER USER 命令來改變SYS用戶的口令。
  
  SVRMGR> alter user sys identified by
  
  change_on_install;
  
  Statement processed.(已成功更改)
  
  SVRMGR≫ connect sys/change_on_install@ora81
  
  as sysdba;
  
  Connected.(已連接)
  
  你還可以用change_on_install,因為改變SYS用戶口令將同時改變口令文件中的口令。當你建立了口令文件后,Oracle數(shù)據(jù)庫在其中放入兩個賬號:SYS和INTERNAL,并將你在命令行中提供的口令作為這兩個賬戶的口令。當你改變數(shù)據(jù)庫中的SYS用戶口令時,數(shù)據(jù)庫將沖掉口令文件中的SYS和INTERNAL口令。下面操作將顯示口令foobar已經(jīng)是無效的了:
  
  SVRMGR> connect sys/foobar@ora81 as sysdba;
  
  ORA-01017: invalid username/password; logon
  
  denied(無效的用戶名/口令,登錄被拒絕)
  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜宾市| 石柱| 荣昌县| 安化县| 涿鹿县| 南通市| 高邑县| 璧山县| 红桥区| 长兴县| 盐城市| 阿瓦提县| 平果县| 临江市| 滨海县| 东兴市| 金寨县| 上林县| 邛崃市| 宁津县| 灵璧县| 达拉特旗| 延安市| 福清市| 山西省| 双桥区| 互助| 松江区| 奉节县| 长顺县| 嘉义市| 吉隆县| 军事| 安新县| 金阳县| 沁阳市| 漾濞| 溧阳市| 河源市| 河东区| 三河市|