受限模式
今天看书偶尔看到以受限模式(restrict)打开资料库,或者把数据库处于受限模式,这样可以很方便地在特殊情况对数据库进行操作。所谓受限就是只有拥有权限的人才能访问数据库。使数据库处于受限模式,有以下二种方法1) STARTUP RESTRICT2) ALTER SYSTEM ENABLE RESTRICTED SESSION;对于第二种情况,只能使发布命令后的登陆生效,因此如果对于这种情况,一般会杀掉前面已经登陆的进程![@more@]-- STARTUP RESTRICT 方式 SYS@HUIYI>shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SYS@HUI
命令行啟動Oracle(windows)
在Windows下用Net Start serverName啟動Oracle服務,Oracle服務啟動以後是否自動啟動資料庫受ORA_HUIYI_AUTOSTART影響。 ORA_HUIYI_AUTOSTART 在註冊表(測試机為9i)HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0[@more@] -- ORA_HUIYI_AUTOSTART = TRUE G:A9Idatabase>set oracle_sid=huiyi G:A9Idatabase>net start oracleservicehuiyi The OracleServiceHUIYI service is starting........... The OracleServiceHUIYI service was started successfully. G:A9Idatabase>sqlplus "/ as sysdba" SQL*Plus:
Dump(轉儲)數据塊[ZT]
Dump(轉儲)數据塊[ZT] 在看了网友《DUMP數据塊》,覺得對深入學習ORACLE比較有幫助,所以自己做了個測試,本文屬轉貼,記不太清楚原文出處,請原文作者見諒! 首先要确定DUMP的BLOCK在哪個數据文件上,可以通過DBA_EXTENTS或ROWID等信息得到。 ROWID: BBBBBBBB.RRRR.FFFF:Block Number & Row Number File Number Oracle 8 Rowid OOOOOO.FFF.BBBBBB.SSS:Data Object Number & Relative File Number & Block Number & Slot Number(Row#) Rowid的定義規則,7-9位是表示數据文件,而10-15位
oracle和sqlserver互訪(透明网關)
前几天由於工作的原因查找了oracle中查找sqlserver數据的資料,現測試成功,整理一下貼出! 要求:從Oracle中能取SqlServer的數据 環境: OracleDb: Linux + Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production IP:192.168.1.52(TOPPROD) MSQLDB: Windows2000 + SqlServer2000 IP:192.168.1.50(ERPSQL),測試用戶:sa/pass 測試數据表:EK.ACPTA 网關: WindowsXp + Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production IP:192.168.1.221(S0504027),因為暫在測試階段,所以网關裝在我用的机器,网
JOB是否会重新执行
在网上看到有人问,在Oracle中如果JOB执行的时候数据库处于关闭状态,重新开启的时候是否会执行,没具体的测试过,但总觉得是会重新执行的,所以做了个测试,让事实来说话。[@more@] SYS@HUIYI>create table t2 2 ( 3 col1 date 4 ) 5 / Table created. SYS@HUIYI>create or replace procedure pro_01 is 2 begin 3 insert into t2 values(sysdate); 4 commit; 5 end; 6 / Procedure created. SYS@HUIYI>select sysdate from dual; SYSDATE ---------------
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
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
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
利用觸發器監控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');