当前位置:文档之家› Oracle 11g 学习笔记

Oracle 11g 学习笔记

Oracle 11g 学习笔记
Oracle 11g 学习笔记

Oracle 11g 学习笔记

(一)

Oracle 数据库有其它数据库所没有的Schema,亦即某个用户user1 建立的table,专属于该用户的Schema。别的用户要存取,必须在table 前面加上「建立的用户名称」,如:select * from user1.table1; 若要让https://www.doczj.com/doc/1e6610062.html, 能顺利联机,最简单的方式,就是建立table、联机账号,都用同一个Oracle 的用户。如此一来,SQL 语句的每个table 前面,即不用再加上「建立的用户名称」,如:

select * from table1;

即使最高权限的System, Sys 用户,要读取一般用户建的table 亦然。

另外一种解决方式,就是授予该table 一个所有人可共享的「synonym (同义字;别名)」,如:create public synonym 别名名称for 建立表的用户.表名称;

drop public synonym 别名名称;

(二)

设定让某个Oracle 的用户,具有存取某个或全部table 的权限:

grant select any table to 使用者;

grant select on 建立表的用户.表名称to 用户名称;

grant all on 表名称to public;

但这和之前(一) 的Schema 无关。亦即在Oracle 中,某个用户建立的表,别的用户即使有权限读取,仍要在表的前面加上「建立的用户名称」,如:

select * from user1.table1;

(三)

Web.config 可用的Oracle 联机设定:

(1) Visual Studio 内建的OracleClient、OleDb:

providerName="System.Data.OleDb" />

providerName="System.Data.OracleClient" />

(2) 要另外从Oracle 网站下载的:

但要注意,Visual Studio 2005 / https://www.doczj.com/doc/1e6610062.html, 2.0 内建的OleDb for Oracle 无法正确显示、写入特殊字符和他国文字,必须改用OracleClient,或用Oracle 官方提供的OleDb 才能处理Unicode 中的特殊字符。

一些https://www.doczj.com/doc/1e6610062.html, + Oracle 11g 系统边写边学的随笔,包括Oracle 的「批次更新」,以及将Oracle 内部编码设定为Unicode 字符集。

(四) Oracle 的「批次(batch) 更新」、「批次新增」、「批次删除」语法

Oracle 仍可如SQL Server、Sybase 数据库,用「分号(;)」隔离多个SQL statement,只是Oracle 前后要再加上begin、end 关键词,例如:

string strSql = "begin insert into table01(id,name) values(99,'test'); insert into table01(id,name) values(99,'test'); end;";

string strSql = "begin update table01 set name='test2' where id=99; update table01 set name='test2' where id=99; end;";

string strSql = "begin delete from table01 where id=99; delete from table01 where id=19; end;";

因Oracle 语法较严谨,不能直接在SQL 语句中,出现「;」等特殊符号。

(五) 让Oracle 支持Unicode 处理

Oracle 11g 刚装好时,预设的字符集,会无法处理他国语言的文字。若您在SqlPlus 输入指令:

SELECT parameter, value FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET';

会看到以下的NLS_LANG 信息:

--------------

NLS_CHARACTERSET

ZHT16MSWIN950 (繁体中文) 或

ZHS16GBK (简体中文)

NLS_NCHAR_CHARACTERSET

AL16UTF16

--------------

接下来,我们要透过「ALTER DATABASE CHARACTER SET」这个指令,去更改Oracle 内部的字符集编码方式。

请先在sqlplus 程序中,用sysdba 角色进入,指令如下:

connect sys/密码as sysdba;

接着再输入下列指令,执行完后即会自动执行转换的工作:

shutdown immediate;

STARTUP MOUNT;

ALTER SESSION SET SQL_TRACE=TRUE;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE character set INTERNAL_USE AL32UTF8;

ALTER SESSION SET SQL_TRACE=FALSE;

shutdown immediate;

startup;

这种方式可能会造成Oracle 内,既有的存储数据错乱和遗失,在执行上述指令前,最好要先做备份数据的工作。

接下来,再执行一次下列指令,察看NLS_LANG 信息:

SELECT parameter, value FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET';

NLS_LANG 信息已经变成:

--------------

NLS_CHARACTERSET

AL32UTF8

NLS_NCHAR_CHARACTERSET

AL16UTF16

--------------

此外,网络上广为流传的用这种方法是不正确的:

update props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';

透过前述正确的「ALTER DATABASE CHARACTER SET」指令,去更改characterset 后,Oracle 至少会更改12 张data dictionary;但若透过这种直接更新props$ 表的方式,则只完成了其中十二分之一的工作,其潜在的完整性及隐忧可想而知。

若我们要用https://www.doczj.com/doc/1e6610062.html, 应用程序去撷取、写入Oracle 时,若有日文字、他国文字时,除了要先如上述把Oracle 内部的字符集改成Unicode 外,

在https://www.doczj.com/doc/1e6610062.html, 的联机方式也要注意。以Visual Studio 2005 来说,其内建的OleDb Data Provider 用来联机Oracle 11g 时,并无法正确处理Unicode 中的特殊字符和他国文字,甚至在写入Oracle 时,会出现以下错误:

因为正负号不符合或数据溢位之外的原因,无法转换命令parameter[1]'' 资料值。id: 0

解决方式,是改用OracleClient Data Provider,或用Oracle 官方的OleDb Data Provider,下载点为:

https://www.doczj.com/doc/1e6610062.html,/technology/software/tech/windows/ole_db/index.html https://www.doczj.com/doc/1e6610062.html,/technology/software/tech/windows/odpnet/index.html

=================

参考文件:

https://www.doczj.com/doc/1e6610062.html,/archives/471

https://www.doczj.com/doc/1e6610062.html,/jute/post/view?bid=21&id=137350&sty=1&tpg=2& age=0

https://www.doczj.com/doc/1e6610062.html,/mywork/archives/6198547.html

=================

一些https://www.doczj.com/doc/1e6610062.html, + Oracle 11g 系统边写边学的随笔,包括Oracle 的「ROWNUM」、「Sequence 流水号」。

(六) Oracle 的ROWNUM,等同其它数据库的SELECT TOP

Oracle 不支持SELECT TOP 语法,若要撷取最大的几笔、或最小的几笔记录,必须用ROWNUM 关键词并搭配Subquery。

例如要取最小的10 笔,可用如下语句:

SELECT id, name, ROWNUM FROM (SELECT id, name FROM table ORDER BY id)

WHERE ROWNUM <= 10;

若要取最大的10 笔,就再加上DESC:

SELECT id, name, ROWNUM FROM (SELECT id, name FROM table ORDER BY id DESC) WHERE ROWNUM <= 10;

此外,还可以做一些变化应用:

SELECT a.id, https://www.doczj.com/doc/1e6610062.html,, ROWNUM FROM (SELECT id, name FROM table ORDER BY id) a WHERE ROWNUM <= 10 ORDER BY ROWNUM DESC;

要注意的是,包含有ROWNUM 的WHERE 条件式,一定要包含1,例如:WHERE ROWNUM >0

WHERE ROWNUM >=1

WHERE ROWNUM <10

若不包含1 的话,所下的查询会永远查无数据。

Oracle 的ROWNUM、Top-N Query 官方教学(英文):

https://www.doczj.com/doc/1e6610062.html,/technology/oramag/oracle/06-sep/o56asktom.html

https://www.doczj.com/doc/1e6610062.html,/technology/oramag/oracle/07-jan/o17asktom.html

此外,Oracle 还有两种ROW_NUMBER() OVER 和RANK() OVER 语法,亦可将已查询出来的全部数据,再给予连续的流水号。虽然它们无法像ROWNUM 一样给WHERE 条件式,但适

合用来撰写https://www.doczj.com/doc/1e6610062.html, GridView 控件的「分页」功能的Stored Procedure。有关其用法,可参考:

https://www.doczj.com/doc/1e6610062.html,/gaoxiaoqing2003/blog/p_8/

https://www.doczj.com/doc/1e6610062.html,/blog/138632

(七) Oracle 的Sequence,等同其它数据库的Identity

Oracle 不支持SQL Server 和Sybase 都支持的Identity 自动增号字段,也不支持INSERT INTO 以后立即取得最新一笔记录Identity 号码的「SELECT @@identity;」语法,

要达成上述功能,必须改用Sequence (流水号)。

Sequence 不包含在table 中,某一个Sequence 亦不和table 做一对一的对应。要用Sequence,必须先自己手动建立,语法为:

CREATE SEQUENCE seq_name;

CREATE SEQUENCE seq_name

INCREASE BY 1

START WITH 1

MAXV ALUE 9999

NOCACHE

NOCYCLE;

若不下参数,预设从 1 开始,每次增号1,最大值为10 的27 次方,存储值达到MAXV ALUE 不会自动重新编号(若对应至table 的Primary Key,此值应采默认值NOCYCLE);

CACHE 选项的默认值,会在memory 产生20 笔数据。

执行以下语句,可看到所有Sequence 的设定及存储内容。其中的LAST_NAME 为其下一个将要产生的值。

select * from user_sequences;

要看某一个Sequence 的当前值、下一个值,可用如下语句:

select table1_seq.CURRV AL from dual;

select table1_se1.NEXTV AL from dual;

需注意第二个语句NEXTV AL 只要一被执行到,该个Sequence 的内部编号,就会自动增加一个号码,而不仅只是select 撷取而已。

若要搭配Sequence,新增一笔记录到table,可用如下语法:

INSERT INTO table1 (id, name) V ALUES (table1_seq.NEXTV AL, 'name1');

在Oracle 10g 以前的版本,或您用的是OleDb 联机方式(OracleClient 亦可),当您想在INSERT INTO 记录时,Primary Key 希望能写入Sequence 的值,可用如下写法(亦可在新增完成后,立即传回该笔记录最新的Sequence 值):

using System.Data.OleDb;

OleDbConnection odConn = null;

OleDbCommand odCmd = null;

Int64 intDA TA_ID_AfterInserted = 0;

string strSql = "BEGIN SELECT table1_seq.NEXTV AL INTO:id FROM dual; INSERT INTO table1(id, name) V ALUES(:id, :name); END;";

...中间略...

OleDbParameter p;

p = odCmd.Parameters.Add(":id", OleDbType.Double, 7);

p.Direction = ParameterDirection.Output;

odCmd.Parameters.Add(":name", OleDbType.VarWChar, 30).Value = TextBox1.Text; odCmd.ExecuteNonQuery();

intDA TA_ID_AfterInserted = Convert.ToInt64(p.Value); // 立即传回该笔记录最新的Sequence 值

若您用的是Oracle 10g 及以后的版本,且用的是OracleClient Data Provider,则可用以下的「RETURNING INTO」更简洁写法。但须注意,OleDb 联机方式若用此种写法,在写

入时并不会造成error 或引发exception,但写入值会不正常。

string strSql = "INSERT INTO table1(id, name) V ALUES(table1_seq.NEXTV AL, :name) RETURNING id INTO :id";

---------------------------------------------

本帖第(七) 点的https://www.doczj.com/doc/1e6610062.html, 2.0 + Oracle 11g 示例下载点(批次新增+ 新增后马上取得最新Sequence 值):

附件: 您所在的用户组无法下载或查看附件

---------------------------------------------

若您执行本示例的操作系统中,并未安装Oracle 11g server-side 软件(数据库安装在别台主机),则当您用Visual Studio 执行本示例时,可能会出现类似以下的错误讯息:“OraOLEDB.Oracle.1”未在本地计算机注册

解决方式,是去Oracle 官方网站,下载Data Provider 和Client-side 程序并安装,下载网址如下:

https://www.doczj.com/doc/1e6610062.html,/technology/software/tech/windows/odpnet/index.html (较新)

https://www.doczj.com/doc/1e6610062.html,/technology/software/tech/dotnet/utilsoft.html (较旧)

安装完后,即能以Visual Studio 执行本示例。但若改以IIS 执行时,仍会出现上述的错误信息,因为您还要再设定一些让IIS / https://www.doczj.com/doc/1e6610062.html, 的用户,有写入伺服端Oracle 所在文件夹的权限。有关其设定,其参考本站下一篇帖子「Oracle 11g 学习笔记(4)」。(八) 引用Oracle 官方的Data Provider

在上一篇帖子「Oracle 11g 学习笔记(3)」的最后,有提供一个https://www.doczj.com/doc/1e6610062.html, 2.0 的示例给大家下载。但该帖最后有提到,若您执行示例的操作系统中,并未安装Oracle 11g 的server-side 程序(例如Oracle 安装在别台主机),则当您用Visual Studio 执行本示例时,可能会出现下列的错误讯息:

“OraOLEDB.Oracle.1”未在本地计算机注册

OraOLEDB.Oracle' 提供者并未登录于本机计算机上

The OraOLEDB.Oracle provider is not registered on the local machine

解决方式,是去Oracle 官方网站,下载Data Provider 和Oracle 的client-side 程序并安装,下载网址如下:

https://www.doczj.com/doc/1e6610062.html,/technology/software/tech/windows/odpnet/index.html(较新)

https://www.doczj.com/doc/1e6610062.html,/technology/software/tech/dotnet/utilsoft.html (较旧)

安装完后,即能以Visual Studio 执行本示例。但您若改用IIS 执行示例时,仍可能会出现上述的错误信息,因为若您用的是Windows 操作系统,必须在NTFS 分区上,再设定一些让IIS / https://www.doczj.com/doc/1e6610062.html, 的用户,有写入IIS 所在主机的Oracle 主程序目录的权限。会出现这种错误,是因为Oracle 和IIS 安装在不同的主机上。

(1)

以版工而言,我用的是Windows Server 2003 操作系统,我是将下列两个目录,开放文件夹的权限,让「https://www.doczj.com/doc/1e6610062.html, 用户」、「IIS_WPG 群组」、「NETWORK SERVICE 群组」有写入和修改的权限(是设定IIS 或Visual Studio 所在的主机,而非Oracle server-side 程序所在的主机):

C:\app

C:\Program Files\Oracle

再于Windows 中执行「gpupdate /force」迫使设定马上生效(若仍不行就重开机)。

(2)

网络上并有几篇文章,提到还要做一些设定:

https://www.doczj.com/doc/1e6610062.html,/blog.php?do=showone&itemid=687411&typ=blog https://www.doczj.com/doc/1e6610062.html,/t/20050428/09/3972494.html

https://www.doczj.com/doc/1e6610062.html,/t/20040510/17/3050699.html

https://www.doczj.com/doc/1e6610062.html,/board/show.asp?subcde=BRD20050513132850F5H &fumcde=FUM20041006161839LRJ&rplcnt=16

例如对Oracle server-side 程序所在的主机,对sqlnet.ora 这个档案,做以下的设定:SQLNET.AUTHENTICATION_SERVICES=(NTS)

改成

SQLNET.AUTHENTICATION_SERVICES=(NONE)

以版工而言,sqlnet.ora 是位在下列目录:

C:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN

(3)

网络上还提到,若仍出现先前提到的错误,就再对Oracle client-side 程序所在的主机(即IIS 所在的主机),做以下的Registry 注册动作:

regsvr32 ..\ORACLE_HOME\bin\OraOLEDB11.dll

但版工我并不用做到这个动作,IIS 即可用https://www.doczj.com/doc/1e6610062.html, 应用程序,联机到另一台主机上的Oracle 11g。

另须注意,若您用的是Oracle 提供的OleDb Data Provider,当透过Visual Studio 2005 的图形设定界面,设定数据库联机后,SQL 语句中的数据表名称前后,会被自动加上「中括号[ ] 」,如下:

SELECT * FROM [t04]

当您一执行时,这组「中括号」却会引发下列的错误:

ORA-00903: 表格名称无效

解决之道,是手动把「中括号」拿掉即可。若您用的是OracleClient Data Provider,则不会有此问题。但若透过Visual Studio 2005 的图形界面,设定OracleClient 数据库联机后,仍会在数据表的名称前后,自动加上「双引号" "」,如下:

SELECT * FROM "T04"

------------------------------------------------------------------------------------------

(九) 更改Oracle 的日期格式

Oracle 在中文的操作系统中安装好后,在Date 类型中,预设的日期格式为「03-3月-03」。此时透过https://www.doczj.com/doc/1e6610062.html, 应用程序,虽仍能正常「读、写」Oracle 的Date 类型,但若要透过SQL Plus 写入数据库,就必须在「月份」的数字后面,再加上一个中文字「月」,才能正确写入数据库。

若您在SQL Plus 中输入下列指令:

select * from nls_session_parameters;

会看到

NLS_DATE_FORMAT参数,其值为:DD-MON-RR

NLS_LANGUAGE参数,其值为:TRADITIONAL CHINESE (以繁体中文Windows 操作系统为例)

有些情况,我们可能希望更改Oracle 中存储的日期格式,若在Windows 操作系统下,我们

就必须去修改「注册表(Registry)」。若您用的是其它操作系统,亦可参考下列这几篇文章:https://www.doczj.com/doc/1e6610062.html,/658698/viewspace-265000

https://www.doczj.com/doc/1e6610062.html,/t/20030320/16/1555747.html

https://www.doczj.com/doc/1e6610062.html,/archiver/tid-228974.html

以Windows Server 2003 操作系统,以及Oracle 11g 为例,我们要先在Oracle server-side 程序所在主机的Windows 中,输入「regedit」指令进入Registry,接着进入到:

HKEY_LOCAL_MACHINE →SOFTWARE →ORACLE →KEY_OraDb11g_home1

(1) 修改既有的NLS_LANGUAGE 参数,将存储月份的格式,从中文「月」改成英文:

进入Registry 上述的目录后,将既有的NLS_LANGUAGE 参数,从原本的「TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950」,改成「American_America.ZHT16MSWIN950」即可;简体中文的操作系统亦同,把前半段的字符串,改成「American_America」即可。

(2) 新增一个NLS_DATE_FORMAT 参数,将存储格式依我们的需求修改:

进入Registry 上述的目录后,新建一个「字符串值」,命名为「NLS_DATE_FORMAT」,并设置其值为:

YYYY-MM-DD:HH24:MI:SS

如此即成功地修改了Oracle 的默认时间格式。此时若您再于SQL Plus 输入指令:

select * from nls_session_parameters;

会看到

NLS_DATE_FORMAT 参数,其值已经变为:YYYY-MM-DD:HH24:MI:SS

上述两种修改,不论修改与否,都仍可用https://www.doczj.com/doc/1e6610062.html, 等应用程序,正常以「2008/1/3」或「2008/01/03 12:30:30」这类的格式去写入Oracle 数据库。

但应注意,若您在Oracle server-side 内建的,或从Oracle 网站独立下载的「Oracle SQL Developer」这套图形界面工具,若在里面输入「select * from

nls_session_parameters;」这项指令,所看到的语系信息,并不是真正在Oracle 11g server-side 的设定,而是「Oracle SQL Developer」工具其本身自己的语系设定。

在Oracle 中,不管是透过SQL Plus,还是Oracle SQL Developer 这套工具,只要是对数据做INSERT、UPDATE,都要再下一个Commit; 或Rollback; 的指令。之前版工我发现透过Oracle SQL Developer 写入数据库的记录,透过SQL Plus 或https://www.doczj.com/doc/1e6610062.html, 一直读不出来,原本以为是两者的日期格式、语系各自独立,且设定不同的原因,事实上并不是,而是要在写入数据库后,再下一次「Commit;」指令,才算真正完成写入的动作。

此外,在网络上流传的另一项指令:

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

只能暂时性地修改语系设定。因此若要修改语系,最好还是修改Oracle server-side 程序所安装主机的Registry,才是永久性的解决方案。

(十) Oracle 小技巧

* 在SQL Plus 中,用「desc」指令,可浏览数据表的schema,如:desc table1;

* 不论是用SQL Plus,还是Oracle SQL Developer 工具,在执行完INSERT、UPDATE、DELETE 语句后,都必须再执行一次「Commit;」指令,才会真正写入数据库,这点和他牌的数据库不同;但若是透过https://www.doczj.com/doc/1e6610062.html, 应用程序写入Oracle,则不必加上此一动作。若某个人透过SQL Plus 或Oracle SQL Developer 写入Oracle 之后,未再执行「Commit;」或「Rollback;」指令,会造成该笔记录被锁住,别人都无法「修改」该笔记录(用户的应用程序或浏览器会一直处于等待状态),但仍可「读取」。

------------------------------------------------------------------------------------------

(十一) Oracle 里没有「空字符串」这种东西

Oracle 里根本没有「空字符串('')」这种东西,而会将空字符串视为Null,但在SQL Server、其它厂牌的数据库和ANSI SQL 92 的定义却并非如此。

当您将Oracle 里一个表的varchar2 字段,更新成空字符串时,如下:

UPDATE table1 SET col1='' [WHERE id=80];

在Oracle 中会等同于:

UPDATE table1 SET col1=NULL [WHERE id=80];

此时,当您用如下的SQL 语句去SELECT 时,会查不出任何数据(但用其它厂牌的数据库则查得到):

SELECT * FROM table1 WHERE col1='';

若改成如下,用IS NULL 去当查询条件,才查得到数据(但用其它厂牌的数据库则查不到):SELECT * FROM table1 WHERE col1 IS NULL;

即使您改用https://www.doczj.com/doc/1e6610062.html, 的OracleDataReader.IsDBNull 方法,写 .NET 应用程序去判断,结果也是一样。

此时,当您用LENGTH 函数去判断col1 字段的长度,会返回Null,而不是0,如下:SELECT LENGTH(col1) FROM table1 WHERE id=80;

这些Oracle 的「空字符串」特性,和其它厂牌的数据库,以及ANSI SQL 92 的定义都不同。

参考文件:

http://www.adp-gmbh.ch/ora/misc/null.html

https://www.doczj.com/doc/1e6610062.html,/blogs/darkthreadtw/archive/2008/04/01/empty-string -in-oracle.aspx

------------------------------------------------------------------------------------------

(十二) Oracle 的「Transaction (事务;交易)」隔离层级

SQL Server 的Isolation Level (事务隔离层级) 有七种,并可和https://www.doczj.com/doc/1e6610062.html, 做搭配;而Oracle 的Isolation Level 只有两种,分别为:ReadCommitted、Serializable,但Oracle 的ReadCommitted,和SQL Server 的ReadCommitted,名称虽然相同,但在功能和定义上皆不同。Oracle 的ReadCommitted,类似于SQL Server 2005 的「快照隔离(Snapshot)」。

ReadCommitted 是SQL Server 默认的Isolation Level,其特性为当某一笔记录在「修改(Edit;Update)」时,别人都无法「读取」;ReadCommitted 也是Oracle 默认的Isolation Level,但其特性和SQL Server 的版本完全不同,Oracle 的版本为,当某一笔记录在「修改」时,别人仍可以「读取」,但不能「修改」(该笔记录会被锁定,直到正在修改的那个人Commit 或Rollback)。

Oracle 的ReadCommitted,其特性为,当一笔记录在被「修改」时,若有别人刚好也来「读

取」这一笔记录,Oracle 会将这笔记录上一次被Commit 的版本先取出来给其它人读取,避免造成「共享锁定」,亦即避免让其它人的浏览器或应用程序一直处于等待中,而无法进行其它的工作。

https://www.doczj.com/doc/1e6610062.html, / Visual Studio 中用来联机Oracle 的Data Provider,不论是OleDb、OracleClient、https://www.doczj.com/doc/1e6610062.html, 皆是如此,和SqlClient 的Isolation Level 完全不同。

参考文件:

https://www.doczj.com/doc/1e6610062.html,/pc2020v5/forum/ShowSameTitleN.asp?URL=N &board_pc2020=oracle&index=3&id=3985&mode=&type_pc2020=sametitleLevel -2

https://www.doczj.com/doc/1e6610062.html,/viewthread.php?tid=54983&extra=page%3D109%26a mp%3Bfilter%3D0%26amp%3Borderby%3Ddateline%26amp%3Bascdesc%3DDE SC

https://www.doczj.com/doc/1e6610062.html,/blog/183229

https://www.doczj.com/doc/1e6610062.html,/zh-tw/library/system.data.oracleclient.oracletransacti on.isolationlevel.aspx

https://www.doczj.com/doc/1e6610062.html,/technology/global/cn/pub/articles/price_dbtrans_dotnet.h tml

https://www.doczj.com/doc/1e6610062.html,/blogs/darkthreadtw/archive/2007/6/22.aspx

------------------------------------------------------------------------------------------

(十三) Oracle 的备份、还原方式

Oracle 的「备份、还原」,有下列四种方式:

* Cool Backup (Offline Backup)

* Hot Backup (Online Backup)

* RMAN

* Exp / Imp

到了Oracle 10g 时,引入了新的Data Pump 工具,且性能比旧的Exp / Imp 要好,因其不必经由Session 进行,但使用上较麻烦,必须先建立备份用的相关目录。其指令如下:expdp userid=system/密码tables=xxx,yyy directory=abc_dir => abc_dir: 此为Oracle 目录,要先建立

impdp userid=system/密码dumpfile=EXPDAT.DMP directory=abc_dir

而另一种最古老的Emp / Imp 只能算是一种转存储工具,执行速度慢,只适合小型数据库。版工我测试结果,用Export 指令备份Oracle 11g 的整个orcl 数据库,里面只有十八个新建的数据表(每个表只有十多笔,到最多一两百笔记录),就花了半个多小时;Import 还原指令更慢,跑了一个多小时还没跑完,跑到隔天到公司上班才跑完。其指令如下,但它不是在SQL Plus 里下指令,以Windows 而言,是要在「命令提示字符(cmd.exe)」里去下指令(指令最后面不用加「分号」):

exp system/密码@orcl file=c:\orcl_081207.dmp full=y

imp system/密码@orcl full=y ignore=y file=c:\orcl_081207.dmp

如此即会汇出整个orcl 数据库,包括:Index、Sequence、…等等。其中的参数,ignore=y

表示当汇入时,要覆盖同名的数据表;若没加此参数,则同名的表就不会汇入。

若要让Exp / Imp 跑快一点,就不要下full=y 的参数,改用user mode (指定owner=xxxx ) 的备份会比较快。此外,亦可只汇出或汇入某一个或某几个数据表,如下(最后面不用加「分号」):

exp system/密码@orcl file=c:\orcl_081207.dmp tables=(table1,table2)

imp system/密码@orcl file=c:\orcl_081207.dmp tables=(table1)

若想看到指令的help,可用如下的help 参数:

exp -help

imp -help

此外,要执行Emp / Imp 前,TNS (tnsnames.ora) 必须先正确设定。以Windows Server 2003、Oracle 11g 而言,该档案位于下列目录:

C:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN

tnsnames.ora 我的设定如下:

ORCL_S =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))

)

(CONNECT_DATA =

(SID = ORCL)

)

)

亦可透过Oracle 内建的图形界面工具「Net Manager」做设定。注意上述的SID 一定要设定(设成数据库的名称),但Oracle 刚安装好时,SID 不一定会自动加上。设定好后,可用「tnsping 服务名称」指令,来测试是否有设定正确,以上述的tnsnames.ora 而言,可在Windows 操作系统的「命令提示字符」里,像这样下tnsping 指令(最后面不用加「分号」):tnsping ORCL_S

参考文件:

https://www.doczj.com/doc/1e6610062.html,/article/21/20961_print.htm

https://www.doczj.com/doc/1e6610062.html,/board/show.asp?subcde=BRD20081202144229DSV &fumcde=FUM200410061527578K1&rplcnt=11

------------------------------------------------------------------------------------------

(十四) Oracle 的存储过程,与https://www.doczj.com/doc/1e6610062.html, 的「分页」应用程序撰写

过去版工在用SQL Server 和Sybase 数据库,搭配https://www.doczj.com/doc/1e6610062.html, 2.0 程序撰写时,为了应付GridView 控件的「分页」功能处理,都会写一种用来处理「分页」的Stored Procedure,可参考本站的几篇系列文章- https://www.doczj.com/doc/1e6610062.html, 的数据分页:

https://www.doczj.com/doc/1e6610062.html,/WizardWu/archive/2008/09/28/1301616.html

https://www.doczj.com/doc/1e6610062.html,/WizardWu/archive/2008/09/07/1286270.html

https://www.doczj.com/doc/1e6610062.html,/WizardWu/archive/2008/08/06/1261589.html

https://www.doczj.com/doc/1e6610062.html,/WizardWu/archive/2008/08/02/1258832.html

SQL Server 和Sybase 数据库的存储过程,都可直接return 一个ResultSet 格式的数据(亦即有多行多列的表格式数据,如同https://www.doczj.com/doc/1e6610062.html, 中的DataT able),给呼叫(调用) 它的应用程序,如下所示,但Oracle 却不能直接这样return:

CREATE PROCEDURE dbo.pager_SqlServer2005

AS

SET @sqlDataT able = 'SELECT * FROM table1'

exec (@sqlDataT able)

RETURN

Oracle 有它另一套做法,只能透过REF CURSOR 类型,去处理和返回「结果集」,但听说这样的性能并不好。不知为何Oracle 干麻要这样自己搞另一套(包括先前提到的「空字符串」和Null),非得和其它厂牌的数据库与众不同才高兴,也搞得所有程序员得另外学习一套标准。有关Oracle 的Stored Procedure 和REF CURSOR,可参考下列文件:

https://www.doczj.com/doc/1e6610062.html,/zh-cn/library/ms971506.aspx

https://www.doczj.com/doc/1e6610062.html,/zh-cn/library/4s2zbbsz(VS.80).aspx

https://www.doczj.com/doc/1e6610062.html,/zh-tw/library/4s2zbbsz(VS.80).aspx(同上,但此为繁体中文版本)

https://www.doczj.com/doc/1e6610062.html,/kb/308072/zh-tw

https://www.doczj.com/doc/1e6610062.html,:88/https://www.doczj.com/doc/1e6610062.html,/Program/.NET/0H512HH007.html https://www.doczj.com/doc/1e6610062.html,/oracle/oracle-stored-procedure-tutorial.html

https://www.doczj.com/doc/1e6610062.html,/Article/sjk/oracle/200709/6126.html

https://www.doczj.com/doc/1e6610062.html,/dacula/archive/2005/03/01/306566.aspx

至于https://www.doczj.com/doc/1e6610062.html, 的GridView「分页」功能,版工我是放弃Oracle 的存储过程,改自己写一个 .NET 的函数,去接收ObjectDataSource 控件传来的参数(要撷取第几笔到第几笔的记录),将原本可在存储过程中处理的工作,搬到 .NET App_Code 文件夹里的DAL Layer 来处理。

------------------------------------------------------------------------------------------

Oracle 11g静默安装最全文档

Oracle 11g静默安装过程——linux环境 一、硬件环境 1.操作系统及Oracle版本 Linux版本:Redhat 6.4 Oracle版本:Oracle Database 11g Release 2 (11.2.0.1.0) for Linux x86-64 (linux.x64_11gR2_database_1of2.zip、linux.x64_11gR2_database_2of2.zip) 上传到/home下 2.硬件检测: 物理内存不少于1G 硬盘可以空间不少于5G swap分区空间不少于2G 支持256色以上显卡 cpu主频不小于550mHZ cat /etc/issue uname -r grep MemTotal /proc/meminfo grep SwapTotal /proc/meminfo grep "model name" /proc/cpuinfo free df -k /tmp df -k 二、安装操作系统依赖的具体包 以下为Asianux 3, Oracle Linux 5, Red Hat Enterprise Linux 5, CentOS 5 操作系统依赖的包 binutils-2.20.51.0.2-5.11.el6 (x86_64) compat-libcap1-1.10-1 (x86_64) compat-libstdc++-33-3.2.3-69.el6 (x86_64) compat-libstdc++-33-3.2.3-69.el6.i686 gcc-4.4.4-13.el6 (x86_64)

gcc-c++-4.4.4-13.el6 (x86_64) glibc-2.12-1.7.el6 (i686) glibc-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6.i686 ksh libgcc-4.4.4-13.el6 (i686) libgcc-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6.i686 libstdc++-devel-4.4.4-13.el6 (x86_64) libstdc++-devel-4.4.4-13.el6.i686 libaio-0.3.107-10.el6 (x86_64) libaio-0.3.107-10.el6.i686 libaio-devel-0.3.107-10.el6 (x86_64) libaio-devel-0.3.107-10.el6.i686 make-3.81-19.el6 sysstat-9.0.4-11.el6 (x86_64) 1.上传依赖包 mkdir /home/rpm 安装依赖包,把Linux安装盘中的rpm包文件传到/home/rpm,Redhat中是Packages文件下。 cd /home/rpm 2.检查安装依赖系统包 rpm -ivh glibc-common*.rpm rpm -ivh kernel-headers*.rpm rpm -ivh libgcc*.rpm rpm -ivh glibc-*.rpm rpm -ivh libgomp-*.rpm rpm -ivh nscd*.rpm rpm -ivh glibc-headers*.rpm rpm -ivh glibc-devel-*.rpm rpm -ivh mpfr*.rpm rpm -ivh ppl*.rpm rpm -ivh cloog-ppl*.rpm rpm -ivh cpp*.rpm rpm -ivh gcc-*.rpm rpm -ivh libstdc++*.rpm rpm -ivh libstdc++-devel*.rpm

Linux系统(X64)安装Oracle11g完整安装教程

Linux系统(X64)安装Oracle11g完整安装图文教程1修改操作系统核心参数(Root用户) 1)修改用户的SHELL的限制,修改 /etc/security/ 文件 输入命令:vi /etc/security/,按i键进入编辑模式,将下列内容加入该文件。 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 编辑完成后按Esc键,输入“:wq”存盘退出 2)修改/etc/login 文件,输入命令:vi /etc/login,按i键进入编辑模式,将下列内容加入该文件。 session required /lib/security/ session required 编辑完成后按Esc键,输入“:wq”存盘退出 3)修改linux内核,修改/etc/文件,输入命令: vi /etc/ ,按i键进入编辑模式,将下列内容加入该文件 = 6815744 = 1048576 = 2097152 = 48 = 4096 = 250 32000 100 128 = 1024 65500 = 4194304 = 4194304 = 262144 = 1048576 编辑完成后按Esc键,输入“:wq”存盘退出。 注意: = 9000 65500 网络默认9000 65500 4)要使 /etc/ 更改立即生效,执行以下命令。输入:sysctl -p显示如下: linux:~ # sysctl -p = 1 = 1 = 6815744 = 1048576 = 2097152 = 48 = 4096 = 250 32000 100 128 = 1024 65500

文档-oracle11g-物理DG日常巡检手册

文件编号: ORACLE11g Dataguard物理Standby 日常巡检操作手册 编写:_____________ 校对:_____________ 日期:_____________

目录 1、DG环境的日常巡检 (4) 1.1、主库环境检查 (4) 1.1.1、主库实例启动状态检查 (4) 1.1.2、主库启动模式检查 (4) 1.1.3、主库DG环境的保护模式检查 (4) 1.1.4、主库用于控制日志同步的参数检查 (4) 1.1.5、主库查看是否开启强制日志功能 (5) 1.1.6、主库上查看设置的归档日志路径是否可用 (5) 1.1.7、主库上查询归档日志的应用情况 (6) 1.1.8、主库上查看DG环境进程的状态 (6) 1.1.9、主库上查看DG的状态信息 (7) 1.1.10、主库SWITCH OVER角色和状态的检查 (7) 1.2、备库环境检查 (7) 1.2.1、备库实例的启动状态检查 (7) 1.2.2、备库启动模式检查 (7) 1.2.3、备库DG环境的保护模式检查 (8) 1.2.4、备库用于控制日志同步的参数检查 (8) 1.2.5、备库上查看同步过来的归档日志的应用情况 (8) 1.2.6、备库上查看归档日志有没有裂缝(同操作2.5部分类似) (9) 1.2.7、备库上查看DG环境特有进程的状态 (9) 1.2.8、备库上查看DG环境的状态信息 (10) 1.2.9、备库SWITCH OVER角色和状态的检查 (10) 2、DG环境的启动与关闭 (11) 2.1、DG环境的关闭 (11) 2.1.1、检查DG环境主备库的日志使用情况 (11) 2.1.2、停主库的监听程序 (11) 2.1.3、停备库的监听程序 (11) 2.1.4、关闭主数据库 (11) 2.1.5、查看备库的开启模式 (11) 2.1.6、关闭备数据库的归档应用程序 (12) 2.1.7、关闭备数据库 (12)

oracle11g安装图解

Oracle11G安装图解 进入oracle安装界面,我们选择高级安装 出现选择安装类型,我们选择企业版,至于语言我们不用选择

Oracle 基目录:用于安装各种与ORACLE软件和配置有关的文件的顶级目录。 软件位置:用于存放安装具体ORACLE产品的主目录和路径。在此我们使用默认的配置。 在此ORACLE会选择剩余空间最多的盘作为基目录和安装目录的所在盘。 可以输入一个电子邮件或是metalink接收安全问题通知,在此我直接输入一个 电子邮件,当然也可以是metalink用户信息!

在此是因为我的内存不足,所以会报此提示,那么我们在此调整内存,以满足条件后再继续安装。

装到这个界面,这个问题直接选是,不会影响之后的安装,出现这个问题的原因是因为我的电脑没连接到网络 在此选择安装数据库。 如果是“配置自动存储管理”,则自动存储管理(ASM)可用来自动化和简化对数据文件、控制文件和日志文件的优化布局。自动存储管理(ASM)将每个文件切割成许多小扩展文件,并将它们平均分散在一个磁盘组的所有磁盘上。一旦自动存储管理(ASM)磁盘组建立,创建和删除文件的时候,Oracle数据库都会从磁盘组自动分配存储空间。如果是“仅安装软件”,则只安装ORACLE软件,

在安装之后还需要再运行数据库配置助手创建数据库。 一般用途/事务处理:适合各种用途的预配置数据库。 数据仓库:创建适用于特定需求并运行复杂查询环境。常用于存储并快速访问大量记录数据。 高级:安装结束后运行ORACLE DBCA后,用户才可以配置数据库。 在此我们选择“一般用途/事务处理” 步骤8:单独下一步后,出现“指定数据库配置选项”

Oracle11g安装

小布老师在LINUX系统中安装ORACLE11g的安装文档 2009-11-26 01:03 在说正文之前,也讲些题外的废话. 由于公司ERP系统的平台为RedHat Linux ES4+ORACLE10g,暂时交由我进行维护,所以想借此机会学习一下linux,对自己的要求不高,就是能在LINUX上安装成功ORACLE,然后会备份和恢复数据库.首先就在当当网上买了一本<基于LINUX平台的Oracel Database 10g管理>的书,由清华出版社翻译的,经过一段时间的阅读,可以说对我的学习没有任何实质性的帮助,建议初学者不要买这本书. 我首先尝试的是在红帽LINUX ES4安装ORACLE10g,经过若干天的尝试,同时也下载了许多的资料一步一步的做,最后都是不成功,最主要的是在进入oracle安装的时候,老是检查出来安装的一些RPM包版本不对,人搞得很烦燥,并且本人对LINUX也是一菜鸟,因此在这之后的好长一段时间都没再去尝试了. 最后在https://www.doczj.com/doc/1e6610062.html,的论坛上看到了小布老师专门给菜鸟制作的视频讲座,才又开始新的学习.终于按照视频里的一步一步,安装成功了11g.其实我的文章就是根据视频里的步骤再复述了一遍,我的最大目的是温习一下安装的过程,让自己更熟练一些.,同时也给同级别的菜鸟一些学习的信心. 操作平台:VMWARE6.0+CentOS4.5.(可在https://www.doczj.com/doc/1e6610062.html,下载).大家注意,LINUX 版本的不同会给菜鸟带来很多纳闷的困扰,我建议如果想按照这篇文章安装,就一定要下载这个LINUX版本,它是免费的,不会像红帽一样涉及到版权的问题.可以说等于红帽的ES4版本. 数据库版本:ORACLE11G R1(我是在emule上下载的) 辅助软件:SecureCRT Filezella AdobeAcrobatReader 硬件:内存 1GB 硬盘空间>18GB 我下载的是DVD版本的OS,在虚拟机软件中先将OS载入到了光驱中. 在LINUX中,一定要注意大小写.特别是命令. 首先在虚拟机软件中安装CentOS,在安装时, 1 SWAP分区我设置了2048MB即内存的2倍,其它空间都装载到了"/"根目录,共计两个分区 2 配置好静态IP地址 3 选择"自定义安装",安装必需的软件包"GNOME图形界面

Oracle_11g 安装图解(详细版)

Oracle 11g安装图文攻略 呵呵,花了一个多小时,左右把11g安装折腾好了。其中折腾SQL Developer 花了好长时间,总算搞定了。好了,先总结下安装步骤,希望给后面的童鞋提高安装效率。呵呵。 一、Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。路径名称中,最好不要出现中文,也不要出现空格等不规则字符。 官方下地址: https://www.doczj.com/doc/1e6610062.html,/technetwork/database/enterprise-edition/downloads/ index.html以下两网址来源此官方下载页网。 win 32位操作系统下载地址: https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win32_11gR2_database_ 1of2.zip https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win32_11gR2_database_ 2of2.zip win 64位操作系统下载地址: https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win64_11gR2_database_ 1of2.zip https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win64_11gR2_database_ 2of2.zip 二、Oracle安装 1. 解压缩文件,将两个压缩包一起选择,鼠标右击 -> 解压文件如图

oracle11g客户端for-linux安装文档

oracle11g client for linux x64 安装文档 1、以root用户登录服务器,新建oinstall组和oracle用户,并为oracle用户设置密码. #groupadd -g 1000 oinstall #useradd -u 1000 -g 1000 -s /bin/csh -d /opt/oracle oracle 2、将客户端安装包linux.x64_11gR1_client.zip上传至服务器剩余空间较大的目录下,解压后的目录为 client,通过root用户授予oracle读取此文件夹的权限。 3、修改服务器配置,以便xmanager登陆. a)用户rcxdm命令查看xdmcp状态是否running # rcxdm status b)编辑“/etc/opt/kde3/share/config/kdm/kdmrc”文件: 在[XDMCP]节中,将“Enable=false”改为“Enable=true”;并且将“port=177”前的屏蔽取消。 c)编辑文件“/etc/sysconfig/displaymanager”: 将DISPLAYMANAGER_REMOTE_ACCESS=“no” 改为DISPLAYMANAGER_REMOTE_ACCESS=“yes”; d)在suse8中需要新建文件/etc/rc.config,在文件中添加一行: ROOT_LOGIN_REMOTE="yes" e)而在suse9中,编辑文件“/etc/sysconfig/displaymanager”: 将DISPLAYMANAGER_ROOT_LOGIN_REMOTE=“no” 改为DISPLAYMANAGER_ROOT_LOGIN_REMOTE=“yes” f)重新启动xdmcp服务 #rcxdm restart g)需要注意:更改登录的上面4、5两条不一样。 4、修改oracle用户环境变量 export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/11g export ORACLE_SID=icd export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib export PATH=$PATH:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/lib/java/bin:/usr/local/bin/:$ORACLE_HOME/bin:$ORACL E_HOME/OPatch export TNS_ADMIN=$ORACLE_HOME/network/admin export ORA_CRS_HOME=$ORACLE_HOME/crs export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" export LANG=en_US export DISPLAY=远程xmanager运行主机:0.0 5、以oracle通过xmanager登陆服务器,进入client安装目录

oracle11g删除操作

完全卸载oracle11g步骤 步骤1、 开始->控制面板->管理工具->服务停止所有Oracle服务。 (图:停掉所有oracle服务) 步骤2、 开始->所有程序->Oracle –OraDb11g_home1->Oracle Installation Products->Universal Installer,单击“卸载产品”-“全部展开”,选中除“OraDb11g_home1”外的全部目录,删除。

步骤3、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。

步骤4、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口(以oracle或OraWeb开头的键)。 步骤5、 运行refedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。

步骤6、 删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。 步骤7、 删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs中所有以oracle开头的键。(未找到) 步骤8、 删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。(此步骤没有操作!)

Oracle 11g 64位下载及安装教程(图文并茂)

1、下载Oracle 11g R2 for Windows的版本 下载地址:https://www.doczj.com/doc/1e6610062.html,/technetwork/database/enterprise-edition/downloads/index.html 其中包括两个压缩包:win64_11gR2_database_1of2.zip,win64_11gR2_database_2of2.zip 2、将两个压缩包解压到同一个目录下,即“database”,然后单击解压目录下的“setup.exe”文件: 3、在出现的“配置安全更新”窗口中,取消“我希望通过My Oracle Support接受安全更新”,单击“下一步”:

4、在“安装选项”窗口中,选择“创建和配置数据库”,单击“下一步”: 5、在“系统类”窗口中,选择“桌面类”,单击“下一步”:

6、在“典型安装”窗口中,选择Oracle的基目录,选择“企业版”和“默认值”并输入统一的密码为:Oracle11g,单击“下一步”: 7、在“先决条件检查”窗口中,单击“下一步”:

8、在“概要”窗口中,单击“完成”,即可进行安装: 9、出现的安装过程如下:

数据库创建完成后,会出现如下“Database Configuration Assistant”界面: 选择“口令管理”,查看并修改以下用户:

(1)普通用户:SCOTT(密码:tiger) (2)普通管理员:SYSTEM(密码:manager) (3)超级管理员:SYS(密码:change_on_install) 修改完成后,单击“确定”。 10、在“完成”窗口中,单击“关闭”即可。 安装完成界面中的内容: Enterprise Manager Database Control URL - (orcl) : https://localhost:1158/em 数据库配置文件已经安装到C:\app\Administrator,同时其他选定的安装组件也已经安装到C:\app\Administrator\product\11.2.0\dbhome_1。 Oracle完成安装后,会在系统中进行服务的注册,在注册的这些服务中有以下两个服务必须启动,否则Oracle将无法正常使用: (1)OracleOraDb11g_home1TNSListener:表示监听服务,如果客户端要想连接到数据库,此服务必须打开。在程序开发中该服务也要起作用。 (2)OracleServiceORCL:表示数据库的主服务,命名规则:OracleService数据库名称。此服务必须打开,否则Oracle根本无法使用。 附: A、32位Oracle 11g Client(win32_11gR2_client.zip)的安装注意点: 在选择安装类型时,选择“管理员”,如下图:

Oracle 11g安装及验证图文攻略

服务器磁盘分配 一般C盘100G装系统、D盘80G放ORACLE基目录和软件位置、E盘剩余空间(最大)放数据库目录。 Oracle 11g安装图文攻略 注意用administrator用户登录 一、Oracle 下载注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。路径名称中,最好不要出现中文,也不要出现空格等不规则字符。二、Oracle安装1. 解压缩文件,将两个压缩包一起选择,鼠标右击- 解压文件如图2.两者解压到相同的 一、Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。路径名称中,最好不要出现中文,也不要出现空格等不规则字符。 二、Oracle安装 1. 解压缩文件,将两个压缩包一起选择,鼠标右击-> 解压文件如图 2.两者解压到相同的路径中,如图:

3. 到相应的解压路径上面,找到可执行安装文件【setup.exe 】双击安装。如图: 4. 安装第一步:配置安全更新,这步可将自己的电子邮件地址填写进去(也可以不填写,只是收到一些没什么用的邮件而已)。取消下面的“我希望通过My Oracle Support接受安全更新(W)”。如图:

5. 安全选项,直接选择默认创建和配置一个数据库(安装完数据库管理软件后,系统会自动创建一个数据库实例)。如图:

6. 系统类,直接选择默认的桌面类就可以了。(若安装到的电脑是,个人笔记本或个人使用的电脑使用此选项) 服务器类直接点击这里跳转如图:

7. 典型安装。重要步骤。建议只需要将Oracle基目录更新下,目录路径不要含有中文或其它的特殊字符。全局数据库名可以默认,且口令密码,必须要牢记。密码输入时,有提示警告,不符合Oracel建议时不用管。(因Oracel建议的密码规则比较麻烦,必须是大写字母加小写字母加数字,而且必须是8位以上。麻烦,可以输入平常自己习惯的短小密码即可) 如图:

Linux系统最全Oracle11g安装文档

Linux系统(X64)安装Oracle11g基本操作 一、修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件,输入命令:vi /etc/security/limits.conf,按i键进入编辑模式,将下列内容加入该文件。 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 2)修改/etc/pam.d/login 文件,输入命令:vi /etc/pam.d/login,按i键进入编辑模式,将下列内容加入该文件。(用户限制配置文件。要使 /etc/security/limits.conf 文件配置生效,必须要确保 PAM验证模块 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so,64位地址是: /lib64/security/pam_limits.so 否则本地即使输入正确密码也无法登陆。)(PS我们平常登陆实际上是运行一个程序login来判断我们是不是这个用户,如果是的话就给我们shell;不是的话就进不去。而/etc/pam/login这件文件就是我们验证过程中需要经过哪些模块的认证。根据设定来叛断我们的帐号密码是不是正确,当这个文件有问题的时候,验证就会出错,尽管我的帐号密码是正常的,也进不去。) session required /lib/security/pam_limits.so session required pam_limits.so 编辑完成后按Esc键,输入“:wq”存盘退出 3)修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件 fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128

oracle 11g 安装图解

oracle 11g 安装图解 启动OUI后出现“选择安装方式”窗口,我们选择:高级安装 步骤3:出现“选择安装类型”窗口,选择我们需要安装的版本。我们在此肯定是选择企业版。

至于产品语言不用选择,它会根据当前系统的语言自动调整!步骤4:出现“安装位置”窗口

Oracle 基目录:用于安装各种与ORACLE软件和配置有关的文件的顶级目录。 软件位置:用于存放安装具体ORACLE产品的主目录和路径。在此我们使用默认的配置。 在此ORACLE会选择剩余空间最多的盘作为基目录和安装目录的所在盘。 可以输入一个电子邮件或是metalink接收安全问题通知,在此我直接输入一个电子邮件,当然也可以是metalink用户信息!

步骤5:再向下就是对安装环境进行检测,如果不满足条件则会给出相应的提示,如图所示: 在此是因为我的内存不足,所以会报此提示,那么我们在此调整内存,以满足条件后再继续安装。

步骤6:出现“选择配置选项”如图:

在此选择安装数据库。 如果是“配置自动存储管理”,则自动存储管理(ASM)可用来自动化和简化对数据文件、控制文件和日志文件的优化布局。自动存储管理(ASM)将每个文件切割成许多小扩展文件,并将它们平均分散在一个磁盘组的所有磁盘上。一旦自动存储管理(ASM)磁盘组建立,创建和删除文件的时候,Oracle数据库都会从磁盘组自动分配存储空间。 如果是“仅安装软件”,则只安装ORACLE软件,在安装之后还需要再运行数据库配置助手创建数据库。 步骤7:出现“选择数据库配置”窗口,在此需要选择在安装过程中创建的数据库类型。 一般用途/事务处理:适合各种用途的预配置数据库。 数据仓库:创建适用于特定需求并运行复杂查询环境。常用于存储并快速访问大量记录数据。 高级:安装结束后运行ORACLE DBCA后,用户才可以配置数据库。

Oracle 11g安装图解

Oracle 11g安装 安装图解 图解 图解 下载 Oracle e下载 一、Oracl 注意:Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。 路径名称中,最好不要出现中文,也不要出现空格等不规则字符。 官方下地址: win 32位操作系统 下载地址: https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win32_11gR2_databa se_1of2.zip https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win32_11gR2_databa se_2of2.zip win 64位操作系统 下载地址: https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win64_11gR2_databa se_1of2.zip https://www.doczj.com/doc/1e6610062.html,/otn/nt/oracle11g/112010/win64_11gR2_databa se_2of2.zip 安装 二、Oracle安装 1. 解压缩文件,将两个压缩包一起选择, 鼠标右击 -> 解压文件 如图1所示。 图1 解压文件

2.两者解压到相同的路径中,如图2所示。 图2 解压路径 3. 到相应的解压路径上面,找到可执行安装文件【 setup.exe 】双击安装。如图3所示。 图3 安装文件 4. 安装第一步:配置安全更新(电邮可填可不填)。取消下面的“我希望通过My Oracle Support接受安全更新(W)”,如图4所示。

Oracle11G日常维护手册

Oracle Database 日常维护手册 目录 1. 登陆到数据库 (3) . 服务器端配置Listener (3) . 客户端tnsnames (4) . 检查Oracle Listener (5) . 登陆数据库的方式 (5) . 数据库的启动 (5) . 关闭数据库 (6) 2. 用户管理 (6) . 检察用户profile (6) . 查看用户profile参数 (6) 3. 检查数据库基本状况 (7) . 检查数据库创建日期 (7) . 检查数据库版本信息 (7)

. 检查实例状态 (7) . 查看前台进程 (7) . 查看数据库连接的session (8) . 查看连接到数据库的模式 (8) . 查看并发连接数 (8) . 查看最大的连接'processes' (8) . 监控系统后台进程 (8) . 查看数据库初始化参数 (8) . 检查PGA使用情况 (8) . 检查SGA状态 (8) . 检查Oracle服务进程 (8) . 检查Oracle监听状态 (9) . 检查监听进程是否存在 (10) . 检查操作系统日志文件 (10) . 检查oracle日志文件 (10)

. 检查Oracle核心转储目录 (10) . 检查Root用户和Oracle用户的email (11) 4. 检查Oracle对象状态 (11) . 检查Oracle控制文件状态 (11) . 检查Oracle在线日志状态 (11) . 检查Oracle表空间的状态 (12) . 检查Oracle所有数据文件状态 (12) . 检查无效对象 (12) . 检查所有回滚段状态 (13) . 检查用户下的表 (13) . 检查用户默认表空间 (13) . 检查当前用户角色及权限 (13) . 检查用户下的各个表的大小 (13) . 检查一个表的创建时间 (13) . 检查某个表的大小 (13)

Oracle 11g安装文档

Oracle 11g数据库安装1.数据库安装 1.1.安装准备 选择Oracle 11g安装程序,进行数据库安装. 安装程序启动后,将会对计算机环境进行检测,将会出现如(图1)的界面 (图1)

1.2.安装方法 Oralce检测完计算机环境后,如果该计算机环境能够安装Oralce 11g, 即会进入Oralce 11g的程序安装界面,如(图2): (图2) 此处, 我们选择高级安装, 以便于稍后的安装过程中,对于我们需要的数据库配置进行相关配置. 选择好了后,点击”下一步”,进入下一步安装操作.

安装方法选择高级安装后, 进入到下一步将要选择数据库的安装类型. (图3) 如(图3)所示,此处,我们选择企业版,该版本具有更好的可靠性,伸缩性以及更好的性能 选择好了后,点击”下一步”,进入下一步安装操作.

接下来,我们需要选择Oracle 11g数据库程序文件的安装位置. (图4) 我们仅需要修改Oracle基目录即可,软件位置中的”名称”以及”路径”会根据Oralce基目录的修改对应自动修改. 注: 在服务器上安装Oracle的时候, Oracle基目录建议选择为C盘,并为Oracle 建立独立的文件目录,如(图4)所示

1.5.先决条件检查 接下来, Oracle安装程序将会对产品特定的先决条件进行自动检查 (图5) 先决条件检查后,部分检查的状态可能会出现”错误”,”未执行”或者”警告”等非正常状态,如(图5)所示. 对于这些状态的检查,我们将其前面的复选框打勾选中,进行手动验证即可,手动验证后,将会如(图6)所示, 状态变为”用户已验证”, 然后,点击”下一步”. (图6)

oracle11g基本操作

Oracle11g的驱动的位置 D:\app\Administrator\product\11.1.0\db_1\jdbc\lib\ 下的ojdbc6.jar文件。 ?ODBC:开放数据库互连,微软提出的,被计算机界广泛接受的一种数据访问方式,它把应用程序从具体的数据库调用中隔离开来,驱动程序管理器向应用程序提供统一的标准接口。 1,建立ODBC数据源 2,使用连接字符串连接ODBC数据源。 ?JDBC-ODBC桥:为JA V A应用程序提供了一种把JDBC调用映射为ODBC调用的方法,其底层还是ODBC访问数据源的方式,现在不怎么使用了。 ?JDBC:JA V A与数据库的接口规范,SUN公司提出的,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成,现在使用的比较广泛。 1,使用连接字符串连接JDBC数据源。 事务(TRANSACTION)是作为单个逻辑工作单元执行的一 系列操作。 这些操作作为一个整体一起向系统提交,要么都执行、要 么都不执行。 事务是一个不可分割的工作逻辑单元。 例如: 银行转账过程就是一个事务。它需要两条UPDATE语句来完 成,这两条语句是一个整体,如果其中任一条出现错误,则整 个转账业务也应取消,两个账户中的余额应恢复到原来的数 据。 事务必须具备以下四个属性,简称ACID 属性: ?原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行 ?一致性(Consistency):当事务完成时,数据必须处于一致状态 ?隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务 ?永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性 Sql Server中使用下列语句来管理事务: 开始事务:BEGIN TRANSACTION 提交事务:COMMIT TRANSACTION 回滚(撤销)事务:ROLLBACK TRANSACTION

Linux下oracle11g安装手册

Linux下oracle11g安装手册 Oracle安装前准备工作:(很重要) 1、创建Oracle用户 root用户:创建Oracle安装组oinstall,数据库管理员组dba,及oracle用户 # /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba # /usr/sbin/useradd -g oinstall -G dba oracle(主组oinstall,其它组:dba)给权限 # passwd oracle 2、修改内核参数 root用户:修改/etc/sysctl.conf文件,输入命令vi /etc/sysctl.conf,按i键进入编辑模式,加上如下参数fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 编辑完成后按Esc键,输入“:wq”存盘退出 为使上述配置生效而不重启系统,执行如下命令 # /sbin/sysctl -p 3、修改用户限制 root用户:修改vi /etc/security/limits.conf文件,加上下面的参数 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 4、修改用户验证选项 root用户下:修改/etc/pam.d/login文件加上如下参数

Linux操作系统中Oracle11g数据库安装步骤

Linux操作系统中Oracle11g数据库安装步骤 Linux操作系统中Oracle11g数据库安装规范 一:数据库安装软件(含补丁)的下载说明 Oracle数据库安装软件获得途径: 1、可以通过ftp的方式上传至服务器 2、Oracle官方网站下载:(从11.2.0.2开始ORACLE不再提供升级patch,只提供完整的安装包) 二:数据库版本规定 本安装规范所针对的Oracle数据库版本为:Oracle 11.2.0.3.0 三:安装环境需求 1、系统硬件需求 系统必须满足下列最小硬件要求 内存需求 系统架构要求 磁盘空间需求 显示需求 硬件系统基本需求参照表

2、操作系统版本及补丁矩阵 Oracle 11gR2要求OS至少为RHEL4.7,内核为Kernel 2.6.9 作为生产系统,我们要求使用RHEL 5.6 64位版本,即: Red Hat Enterprise Linux AS release 5 Update 5 x86_64 需要安装以下RPM软件包(加32bit括号注解的是该软件包32位版本,对应同名未加注解的则是该软件包64位版本。在64位版本平台上,两种版本都要安装): 1 binutils-2.17.50.0.6

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 (32 bit) elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.2 gcc-c++-4.1.2 glibc-2.5-24 glibc-2.5-24 (32 bit) glibc-common-2.5 glibc-devel-2.5 glibc-devel-2.5 (32 bit) glibc-headers-2.5 ksh-20060214 libaio-0.3.106 libaio-0.3.106 (32 bit) libaio-devel-0.3.106 libaio-devel-0.3.106 (32 bit) libgcc-4.1.2 libgcc-4.1.2 (32 bit) libstdc++-4.1.2 libstdc++-4.1.2 (32 bit) libstdc++-devel 4.1.2 make-3.81 sysstat-7.0.2

Oracle11g数据库基础教程-参考答案

Oracle11g数据库基础教程 参考答案

第1章Oracle 11g数据库安装与配置1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) ● OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) ● OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据库都属于远程访问)。(必须启动) ● OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非 必须启动) ● OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非 必须启动) ● OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) ● OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) ● OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) ● OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+ 对象和分布式环境下的事务资源管理器的服务。

相关主题
文本预览
相关文档 最新文档