ORA-30553
建立函數索引時,如果函數是自定義函數,則會報ORA-30553錯誤,在自定義函數中加上DETERMINISTIC可以解決這個問題![@more@] --模擬問題 SCOTT@HUIYI>select empno,ename,sal from emp; EMPNO ENAME SAL ---------- -------------------- ---------- 7369 SMITH 800 7499 ALLEN 1600 7521 WARD 1250 7566 JONES 2975 7654 MARTIN 1250 76
第八章 導入導出
如果只希望把數据庫的數据和對象拷入或拷出一個Oracle 數据庫,又該處理呢?可以把一个数据库的逻辑内容拷贝到一个Oracle二制格式的转储文件中,这个二进制文件的内容可以读入一个Oracle数据库中以重新创建其中包含的对象。这种数据对象的逻辑转移可以在同一个Oracle数据库上进行,也可以在不同的Oracle数据库之间进行,即使这些数据库位于不同的硬件和不同的软件配置上。用于完成逻辑转移的两个Oracle 应用程序是Export & Import。 当在一个Oracle数据库上运行Export时,所有的非数据字典对象(例如表)都被提取到一个文件中。I
AUTHID CURRENT_USER
在Oracle的存儲過程中,如果涉及到操作不同schema下的對象的時候,可以在不同的schema下寫相同的procedure,但這樣帶來的問題是維護和同步帶來了麻煩,可以在procedure中加上authid current_user,來說明procedure中操作的對象是當前連接用戶的對象而并不是procedure所屬用戶下的對象。[@more@] -- USER01 USER01@HUIYI>create table t 2 ( 3 col1 varchar2(10) 4 ) 5 / Table created. USER01@HUIYI>insert into t values(user); 1 row created. USER01@HUIYI>commit; Commit compl
第六章 複製數据庫
當系統停机和用戶正在等待時,常常就不必進行數据庫恢复。事實上一些恢复可以預先做好計划 複製數据庫可以被稱為副本或克隆數据庫。數据庫的副本名稱与原數据庫相同,克隆數据庫則与原數据庫名稱不同。當同時創建一個副本和一個克隆時,數据庫將被複製到相同的主机以及不同的主机上。 複製帶來的好處: 1) 開發小組擁有一個用於編程和測試的模擬數据庫。 2) 可以難証當前數据庫備份的質量。 3) 可以衡量,驗証備份和恢复存儲過程。 4) 可以練習數据庫恢复技能。 複製數据庫可以從一個主數据庫創
第五章 從打開的數据庫進行備份与恢复三(不完全恢复)
本篇主要練習利用打開時的備貨進行不完全恢复。[@more@]-- 備份前數据 SYS@HUIYI>select * from t; COL ------------------ 09-Mar-07 10:42:05 -- 備份 SYS@HUIYI>@open_backup; -- 備份後的數据 SYS@HUIYI>insert into t values(sysdate); 1 row created. SYS@HUIYI>commit; Commit complete. SYS@HUIYI>select * from t; COL ------------------ 09-Mar-07 10:42:05 09-Mar-07 16:22:55 -- 刪除 還原 SYS@HUIYI>drop tablespace tbs01 including contents an
第五章 從打開的數据庫進行備份与恢复二(完全恢复)
在出現故障時,可以用打開數据庫備份并應用重做信息,來完全恢复數据庫。當使用用戶管理的熱備份修复損坏了的數据庫時,常常不得不恢复已經還原的數据文件。 本篇任務,在刪除的數据文件的情況下進行完全恢复![@more@] -- 備份前數据 SYS@HUIYI>select t.name,f.name from v$tablespace t,v$datafile f where t.ts#=f.ts#; NAME NAME ---------------------------------------- ---------------------------------------- SYSTEM G:A9IORAD
第五章 從打開的數据庫進行備份与恢复
一致備份的嚴重弊端在於:數据庫必須關閉(冷備份)。由於戶及應用程序一直在使用資料庫,因此不可能關閉數据庫。如果你的數据庫必須一直保持可用狀態,那么關閉數据庫備份就不可取了。只能採用熱備份方式。數据庫打開時,數据庫文件的狀態一直是變化。數据文件和控制文件被更新,重做日誌被寫入并歸檔。對於備份一個已經打開的數据庫,用戶管理的辦法是把每一個表空間都置於備份模式,然後備份數据文件。在備份完數据文件之後,再把表空間恢复到正常狀態。 創建了一個打開數据庫的備份之後(也稱熱備份),就擁有了一個可以在數据庫出
第四章 關閉數据庫的備份与恢复(不完全恢复二)
上一篇中進行不完全恢复的練習,但這個并不實用,因為對於刪表沒有記錄時間,對於這樣的問題可以通過LogMiner來挖掘日誌文件,但更多時候是根据相關人員确定大概的時候,本篇練習刪除表空間的不完全恢复,恢复到刪除表空間之前,因為對數据庫的操作如刪除表空間,會記錄在alert.log中的,因為刪除表空間時控制文件中已經刪除的數据文件的信息,所以還原時要還要所有的數据文件以及控制文件,還原過來的控制文件時間小於要恢复的時候,為了要使以恢复的時間為准應該以recover database until time using backup controlfile的命令來恢
current_schema
在Oracle中user代碼連接數据庫的帳號,schema代表user下所有對象的集合,默認情況下當前操作的當前user下的schema,可以通過設置current_schema這個參數來改變當前訪問的schema。 USER02@HUIYI>create table t 2 ( 3 col1 varchar2(10) 4 ) 5 / Table created. USER02@HUIYI>create table user01.t 2 ( 3 col1 varchar2(10) 4 ) 5 / Table created. USER02@HUIYI>insert into t values('user02'); 1 row created. USER02@HUIYI>insert into user01.t values('user0
第四章 關閉數据庫的備份与恢复(不完全恢复)
到目前為止,已經完成了一個成功的數据庫還原和一次數据庫完全恢复. 不完全恢复使用一個數据庫備份,并將其回退到此前的某個時間點。採用的不是最近的備份之後的所有重做記錄,而是截止到某一特定時間點的重做日誌。 在以下情況可能會需要對整個數据庫進行不完全恢复: 1) 由於失誤而丟失了一個數据庫對象。 2) 丟失了部分或全部聯机重做日誌。 3) 在恢复過程中丟失了一個已歸檔的重做日誌。 4) 錯誤地刪除了表空間。注意: 不完全恢复只能採用歸檔重做日誌。[@more@] -- 檢查備份前的數据 SYS@HUIYI>create table
利用觸發器監控schema上的變化
USER01@HUIYI>create or replace trigger ddl_schema 2 after alter or drop or create on schema 3 begin 4 dbms_output.put_line('Object Name:'||ora_dict_obj_name); 5 dbms_output.put_line('Object Owner:'||ora_dict_obj_owner); 6 dbms_output.put_line('Object Type:'||ora_dict_obj_type); 7 end; 8 / Trigger created. USER01@HUIYI>create table tmp1 2 ( 3 col number 4 ) 5 / Table created. USER01@HUIYI>call dbms_output.put_line(''); O
Oracle 誤刪 DUAL 的解決方法
Solution 1 ) Error 980 during db open is causing the shut down of the database 2 ) Need to create the Dual Table to resolve the issue (which was not possible in the mount stage) Workaround ========= 3 ) Set the following parameter in the init.ora replication_dependency_tracking = FALSE 4 ) Startup the database 5 ) Create the Dual Table and Dual Public Synonym CREATE TABLE "SYS"."DUAL" ( "DUMMY" VARCHAR2(1) ) PCTFREE 10 PCTUSED 4; Insert I
在 Oracle 中漢字的排序
在9i 之前,對於中文oracle是用二進制進行排序的(binary)在9i中新增了拼音,部首,筆劃排序.SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序) 排序SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序SCHINESE_PINYIN_M 按照拼音排序[@more@] -- 當前session的排序方式 SYS@HUIYI>select * from nls_session_parameters where parameter like 'NLS_SORT%'; PARAMETER VALUE ---------- ------------------------------ NLS_SORT BINARY SYS@HUIYI>select gen01,gen02,dump(gen02) gen022 from gen or
Oracle 中的NLS
NLS: Nation Language SessionNLS_LANG: 語言別以及字符集NLS_DATE_FORMAT: 日期的顯示格式NLS_DATE_LANGUAGE: 日期的語言別[@more@]-- 查看當前SESSION NLS_LANG SYS@HUIYI>select * from nls_session_parameters where parameter='NLS_LANGUAGE'; PARAMETER VALUE -------------------- ------------------------------ NLS_LANGUAGE TRADITIONAL CHINESE -- 查看數据庫NLS_LANG SYS@HUIYI>select * from nls_database_parameters 2 where parameter in('NLS_LANGUAGE','NLS_CHARACTERSET');
第四章 關閉數据庫的備份与恢复(完全恢复)
保護數据庫最簡單的方法就是把所有的數据文件複製到另一個地方。一旦出現故障,可以把所有文件還原到原來的位置上進行恢复,然後啟動數据庫,這种操作叫做完全(或全部)一致數据庫備份与恢复。 當進行數据庫還原或恢复時,使用的是在一致(關閉/冷備份)或非一致(打開/熱備份)數据庫上生成的備份。一致數据庫是正常關閉的,并包含經過同步的文件。文件的是一致是看各個文件的SCN號是否一樣! 一致性備份稱為冷備份(關閉狀態),非一致性備份稱為熱備份(打開狀態)! 備份文件包括:數据文件,控制文件,重做日誌文件 注
第三章 專項練習
本章主要練習數据庫的一些基本操作,包括安裝軟件,創建數据庫
第二章 備份与恢复選項
作為數据庫管理員,首要目標是:保護數据。 使數据庫恢复到正常工作狀態叫做數据庫還原(Restoration)和數据恢复(Recovery),要恢复一個數据庫,必須保存數据內容的拷貝,這個拷貝就稱為備份。數据庫備份与恢复分為二种: 用戶管理和服務器管理。[@more@]Oracle數据庫用戶管理備份策略意味著由管理員來實施備份和恢复操作。可以使用OS命令備份与恢复數据庫文件,使SQL*Plus Recover 語句或 sql alter database recover 語句來恢复數据庫。Oracle 數据庫中包含的文件都是相互關聯的。數据文件与控制文件同步,重做日誌文件包含了數据文件
第一章 保護數据
公司把數据保在計算机和磁帶上,數据庫的軟件管理著這些數据。如果數据庫失效,公司就可能丟失它的數据。恢复這些數据几乎是不可能的。大多數情況,即使有可能恢复數据,那也是一個艱難和冗長乏味的過程。因為數据庫損坏而導致的生產率降低,會使公司損失一大筆金錢。[@more@] Oracle 服務器包含Oracle數据庫和Oracle實例。Oracle數据庫是存儲在文件中作為一個單元來處理的數据的集合。Oracle實例是後台進程和內存結构的集合。Oracle實例的系統標識符是SID。 加入到Oracle管理員隊伍的DBA首要學習任務之一就是了解SGA(System Global A
前言
如果希望成為一名优秀的DBA,那么就需要學好如何优化SQL,配置數据庫,編寫出色的PL/SQL,實現并測試一個 很好的備份与恢复策略.如果希望成為一個糟糕的DBA,那么就不必備份數据庫,或者備份了以後,而不學習如何從備份中恢复.另一個糟糕的事情是不測試你的備份是否可以用於恢复.[@more@]