oracle 11g 配置机器名,Oracle 11g R2 配置管理

Oracle 11g R2网络侦听器实验

单实例环境(不是RAC),侦听器和实例必须要在同一台机器上。两台机器通信必须使用一个网络协议才能进行通信,假如浏览网页需要使用http协议,远程连接需要使用RDP/ssh/telnet等等。

有一台oracle服务器,有个客户端要连接到oracle服务器上,两台机器通信就要使用oracleNET协议,和以上的协议是一样的。有协议就要有相应的端口,所以oracleNET有个默认的侦听端口1521.

其实配置oracle网络就是配置oracle侦听器,侦听器很重要,如果没有配置侦听器,客户端是无法连接到oracle服务器上面的。其实即使是在本地连接oracle服务器,侦听器也是必须要运行的。客户端远程连接到oracle服务器时使用oracleNet协议,是被封装到了tcp/ip

协议中。如果是直接在本地连接数据库用的是IPC。IPC是指。

侦听器是用来接收外面的请求,在将外面的请求通过服务器进程交给实例,所以实例必须要向侦听器注册。如果监听器不知道有相应的实例肯定是不行的--即让侦听器知道有

实例可以连接。oracle默认侦听器的端口是1521。

侦听器的配置文件存放在:$ORACLE_HOME/network/admin/中的instener.ora是侦听器的配置文件

1433b87c2c734ea568114c2d2896dc17.png

如果listerner的端口使用默认的1521的话,可以没有listener.ora,但是建议最好不要删除这个文件。

1.1.创建侦听器

可以通过修改listener.ora来配置侦听器以外,还可以使用其他工具来配置侦听器

1.netca

2.netmgr

使用netca添加侦听器的方法

e64231bfec4977106df27ebcacefdec8.png

09a85e54740c89a33f695609b9df06ce.png

c5787ef3341e5f511021a41e2b479c8c.png

71a5549b00eb7602f301c1abdf73a007.png

bec314648e0e1a23b2be96a165e62e28.png

b7a0c29c2e04ee77def243ee627d0355.png

6bf79189cf9fa665077d2ebc3970b101.png

5cc77469b1b6d567201afdbd484aac01.png

f80f3885d4acf155e75e01fe6ff8f88e.png

74fb3b946b00cdc62dd5b4d19d90ca7b.png

60b229345a07096a77ff7464a42b28fd.png

查看默认侦听器的状态

46d396a120f00f287d20028f53f67c97.png

查看LISTENER1的状态

fd5747065bbcbf5f98666f0a0a74e4fd.png

b52b0147ec5c9c7a9e5ac229a8aa1ef9.png

现在侦听器已经配置好了,如何通过远程客户端连接到oracle服务器呢?

1.2.远程客户端连接方式

远程客户端连接oracle服务器可以使用以下两个方式:

1.easy connect: conn user/password@ip:port/orcl as sysdba

2.tnsnames: conn user/password@XX

使用easy connect方式远程连接oracle服务器

客户端是win7系统,需要安装oracle客户端程序

114b0997d3143d5aae5a2120a1e883b9.png

f03fe5e22a17e77c7eb2844aa11778b4.png

删除listener.ora文件中的标识的行

86f6884825afa198ae0e81dc23aac8fc.png

停止侦听器服务

[oracle@orclsrv admin]$ lsnrctl stop

启动侦听器服务

[oracle@orclsrv admin]$ lsnrctl start

再去连接实例时,就无法连接,提示没有listener.

c5d12b6fd9426d4b448296e45f9e23db.png

将侦听器还原到没有删除之前的状态,然后重启服务lsnrctl stop/start

使用netmgr工具

删除listener1侦听器,单击左侧“X”按钮

b88e52ecda61627aeba50dac56d83ef1.png

cd822d85e5005129c4e4e2b510b8c7b5.png

4d7264a5ec924b017fbd2a57c67f96ad.png

可以使用easy connect和tnsnames的方式连接

13790b3d4af363838eedf8b282edca4c.png

Tnsnames连接方法:conn user/password@XX

Tnsnames涉及到一个文件:tnsnames.ora是一个客户端的工具,将tnsnames.ora拷贝到oracle客户端安装目录中。

393dd1388d2ca18a0cf6f9502613193a.png

9aca6f4ef4f1231344477f8da467db99.png

使用记事本打开tnsnames.ora文件,原始内容如下

6f4c623f25617e147994edc62925ee73.png

对原始内容中如图所示部分复制并粘贴到tnsnames.ora中的空白位置,进行修改

e3292af669d4700b5a96fc02c2975b9b.png

修改为

1cc8994191f3e1acabe8b0efb8cb3543.png

然后保存退出。

连接实例

56f0a5efcdd39cab20f0dda631e58989.png

使用netmgr添加监听器

808f9e20e0093ecc5d38f4f80a4b56e3.png

89c271242acbddb52b7b5e17d04eb7e0.png

eb17a02bcf575cbb0d825ac30f0c5e28.png

29be787472d7dc07f8870dbd6138e17a.png

931a0263007e5dbc84830a9f90a83a27.png

使用listener1侦听器连接实例,结果是无法连接到实例,因为实例orcl并没有在listener1侦听器上注册。默认情况下orcl实例注册到了默认的侦听器1521上面,所以目前只能使用1521来连接。

6f5f8355f629cf43878be3dbd7602292.png

实例注册到侦听器的方法有:

2静态注册:在listener.ora文件中手工指定

2动态注册:pmon进程每隔一分钟将服务名和实例名注册到侦听器上面

将实例注册到侦听器的方法

79a2690a82d63ee3f91db9bd634de143.png

使用alter system register可以将实例注册到侦听器上。这个命令将实例注册到哪个侦听器上了呢?这条命令将实例注册到了默认的侦听器上面了。

2801dbc63c649885d04bd042fc64d2f6.png

edb4ace227ea5990ad50a77308e7440a.png

ORCL是tnsnames中的解析名:即使用ORCL就能够解析出(ADDRESS = (PROTOCOL = TCP)(HOST = orclsrv)(PORT = 1521))这个地址。

SQL>alter system set local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST = orclsrv)(PORT = 1521))";与alter system set local_listener=ORCL是等价的。

将实例注册到listener1上面

SQL>alter system set local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST = orclsrv)(PORT = 1522))";

467a82f38faa5ee29508a687e327aa36.png

此时使用默认的侦听器就无法连接到实例了。

57865835bc3afb6f800a23a67106b13e.png

修改tnsnames.ora中的文件

839830f87e4ed7a5d57893d16e2f5492.png

SQL>alter system set local_listener=LISTENER2;

系统已更改。

查看实例注册到了哪个侦听器上面:show parameter local;

1.3.管理控制文件

oracle数据库控制文件是非常重要的文件,它是数据库创建的时候自动生成的二进制文件,其中记录了数据库的状态信息,主要包括以下内容

数据库的名称,一个控制文件只能属于一个数据库

数据库创建时间

数据文件的名称、位置、联机、脱机状态信息

重做日志文件的名称、位置及归档信息

所有表空间信息

当前日志序列号

最近检查点信息

控制文件在数据库启动的Mount阶段被读取,在数据库启动时首先使用默认规则找到并打开参数文件,在参数文件中含有控制文件的位置信息,打开控制文件后,会通过控制文件中记录的各种数据库文件的位置打开数据库,从而启动数据库到可用状态。当成功启动数据库后,在数据库的运行过程中,数据库服务器可以不断的修改控制文件中的内容,所以在数据库被打开的阶段,控制文件必须是可读写的。但是其他任何用户都无法修改控制文件,只有数据库的实例才可以修改控制文件中的信息。

查看控制文件信息,可以从V$controlfile视图中查看控制文件信息,控制文件名称

6bd1ce9923d08c811fffefadbe0d89b9.png

除了从V$controlfile视图查看控制文件信息外,还可以从V$parameter视图中查看

77a034b20eae10f44d820f71cf77ff0e.png

如何查看控制文件中所存的内容信息

可以使用V$controlfile_record_section

a10dc8e86e8a0b18f762b5d1ac4fa0f4.png

查看V$controlfile_record_section中type,record_size,records_total,records_used

56ceba6b250fbf3194ad48d1dbb15c44.png

从截图当中可可以看到控制文件中存放了创建数据库的信息、重做日志信息、数据文件及归档日志文件记录等信息。这些有价值的信息用于数据维护和管理,很多数据字典视图是从控制文件中获得的信息。

1.3.1.存储多重控制文件

由于控制文件非常重要,所以要求控制文件不能只有一个,通常数据库中控制文件要多于3个,并且存放在不同的磁盘上,这种使用控制文件的方法也称为控制文件的多路复用。实现多重的一个方法就是通过复制控制文件到多个位置并修改初始化参数文件中的CONTROL_FILES参数,使之包含所有控制文件名称。需要注意,当存在多个控制文件时,oracle会同时更新所有的控制文件,但是仅对CONTROL_FILES中所列举的第一个控制文件进行读取操作。

举例说明实现多路复用控制文件的方法:

数据库状态为打开状态,修改SPFILE中的CONTROL_FILES参数745ff8987e5614c9d8d79a1915cbea7c.png

527cf81b98ff3bbc61afcaa937d0ae80.png

关闭数据库

88def464b3492fea9eb866d36489c195.png

使用操作系统命令将文件复制到新的位置

b3343d050cc7e84da2f3db71f4a74f47.png

重新启动实例

7fafcbc410ded47ef85ee4cc6166d19f.png

1.3.2.备份控制文件

备份控制文件

为了确保数据库的安全,在数据文件或日志文件位置信息发生变化时,例如新增数据文件到表空间时,对控制文件进行备份。有两种备份方式:备份为二进制文件和备份为脚本文件

举例说明备份为二进制文件的方法:

备份控制文件之前先查看当前系统中存在几个控制文件

7dda64fec7d65a85dff13aa0911f5ae2.png

备份控制文件

4e481e851c546e881fe61e0ed6337fd6.png

修改系统参数文件

294ff1a7f3a78c36a13365be3f0ebd75.png

关闭数据库之后启动数据库之后报ORA-00214错误,原因是控制文件版本不一致导致的,control01.ctl控制文件版本是817, control02.ctl的版本是806.

169eb996239aa0949bad29781b2eadfd.png

使用control01.ctl覆盖control03.ctl,使得控制文件版本保持一致即可。

17003a9e9022530a4ded270ead1597a4.png

关闭数据库

4ec0010a1d53fc58274292530e2f2264.png

在重新启动数据库就可以了

434f85215165709ebddc21ebcd718dbe.png

1.3.3.恢复控制文件

假设CONTROLD_FILES所指定的控制文件已经损坏,但在数据字典中还能访问控制文件,则可以采用下面的步骤进行恢复:

关闭数据库实例

3e06197378a271718c4cb8122a50d5e0.png

删除控制文件

cbaa5205e17a0790915ea01d7cf949f7.png

启动数据库

4826c1f4207a239dd56cc83b9ce79de2.png

此时数据库的状态是

1110f9d4cfa08091f17ff4b3838e3a75.png

用操作系统将完好的控制文件覆盖掉损坏的控制文件

bb52f6653bc594d089eb3bcce08b4fc1.png

关闭当前数据库

462a76317fc770375e4fcadf41339829.png

重新启动数据库实例

c719def667d63f1f1539d41b26cf7e7e.png

1.4.管理重做日志文件

重做日志也称联机重做日志。引入重做日志的目的是数据恢复。在数据库运行过程中,用户更改的数据会暂时存放在数据库的高速缓冲区中。为了提高写数据的速度,并不是一旦有数据变化,就把变化的数据写到数据文件中。频繁的读写磁盘文件会使数据库系统效率降低,所以要等到数据库高速缓冲区中的数据达到一定的量或者满足一定的条件时,DBWR进程才会将变化了的数据写到数据文件中。这种情况下如果在DBWR把变化了的更改写到数据文件之前发生了宕机,那么数据高速缓冲区中的数据就会全部丢失。如果在数据库重新启动后无法恢复这部分用户更改的数据,显然是不可以的。

重做日志就是把变化了数据首先保存起来,其中LGWR进程负责把用户更改的数据写到重做日志文件中,这样数据库启动时,数据库系统从重做日志文件中读取这些变化了的数据,将用户更改的数据提交到数据库中,写入数据文件。

为提高磁盘效率和防止重做日志文件的损坏,oracle使用特殊的重做日志文件结构,是由3个重做日志组,每组包含两个重做日志组成员,当第一个日志组写满后,就会停止写入,向第二个日志组写入,第二个日志组写满后,向第二个日志组写入,第三个日志组写满后向第一个日志组写入,oracle使用这种循环方式使用重做日志组。

oracle规定每个数据库至少有两个日志组,每组至少包含一个或多个日志成员。oracle循环的使用重做日志组,当一个重做日志组写满后进行日志切换,切换到它可以找到的其他重做日志组。使用新的重做日志组之前,DBWR进程需要将所有的数据更改写入到数据文件中。如果数据库处于归档模式下,当发生日志切换时,归档进程(ARCH)会把当前已满的重做日志文件中的数据复制到归档日志中。

设计成多个日志成员的目的是在日志组内某个日志文件损坏后及时提供备份,所以同一组的日志成员一般内容信息相同,但是存放位置不同。

1.4.1.读取重做日志文件信息

数据字典视图V$log记录当前数据库的日志组序号,日志序列号,每个日志文件大小,每个日志组的成员数量,以及日志组的当前状态。

使用V$LOG查看重做日志信息

输出结果有三个日志组,每个日志组分别有一个日志文件。日志组2为当前正在使用的重做日志组,称为当前日组,当前日志文件还没有归档,其他非活动重做日志文件已经归档。

数据字典V$LOGFILE记录了当前日志组号,该日志组的状态、类型和日志组成员信息。

使用V$LOGFILE查看重做日志组信息

其中,status参数的含义如下:

空白:此文件正在使用。

stale:该文件内容是不完整的

invalid:该文件不可以被访问,如刚建立

deleted:该文件已不再有用

根据上面输出结果可以知道,数据库有3个重做日志组,每个日志组有1个重做日志文件。

1.4.2.重做日志组及其成员管理

创建重做日志组:

一个oracle数据库日志组太少,可能导致日志文件切换频繁,影响系统性能,所以有时需要增加新的日志组。如果日志组内只有一个日志成员,为避免损坏则需要增加新的日志成员。

使用v$log查看重做日志信息

8aeced5473a8f55213b89ff4bec7fc8a.png

使用v$logfile查看重做日志组信息

70e67762ff73e3ef5520fbcd261730db.png

创建重做日志组的方法:98ae8de65afa8ad6b1532f8d9e282f11.png

删除重做日志组

fc1eca590e81bdb8d26e1522420cea8f.png

添加删除重做日志文件

eefaadddf87181d7b5ff8bdc81d59786.png

会发现新添加的日志文件redo33.log是无效状态,三个日志组的日志成员还没有写满,所以redo33.log是无效状态,只要做两次强制日志切换就可以发现是ONLINE状态了

b0d6d0b7f588141066046113f88094ad.png

删除重做日志文件

37aef056c8ce0047265624ca55b0b2bf.png

到操作系统日志文件存放目录上查看是否还存在redo33.log

5a80901d600bf3c17114f01a882aaae4.png

查看重做日志信息,group 3是当前日志组

3b77534ec89b562fd7605a68346b7fd3.png

删除日志组3中的日志文件redo33.log,会发现当前日志组中的日志文件是没有办法删除的

d1c98cc855c1c1d017980199aff05903.png

强制切换日志后,就可以删除新添加的日志文件了。

66d5134ffe8744545a07f29128eb08f6.png

删除重做日志文件的限制条件如下

不能删除当前组的成员,若要删除则先执行强制性切换重做日志的命令:alter system switch logfile

活动日志成员不可以删除

没有归档的日志成员不可删除

当前日志组中只有一个成员是也不能删除

1.4.3.日志组切换和检查点事件

日志切换就是停止写当前日志组,转向另一个新的日志组。系统可以自动切换,也可以手动切换。当发生日志切换时,系统会在后台完成检查点操作,以减少实例的恢复时间。

检查点是一个事件,用于减少实例恢复的时间。当检查点发生时,它会出发DBWR进程,把数据高速缓冲区中变化了的数据写入数据文件,同时检查点进程更新控制文件和数据文件头部,保证数据的一致性。检查点其实是一个后台进程,用来保证所有修改过的数据库缓冲区的数据写入数据文件。

检查点事件越频繁,则一旦数据库发生故障,需要数据恢复的重做日志中的数据就越少(因为在恢复时,就不必检查恢复检查点之前的重做日志中的数据),所以就减少实例的恢复时间。

强制日志切换并强制产生检查点事件。

强制日志切换

5a9e2ccf052019efe88c57075ac1fa21.png

强制产生检查点事件

71b5a58564a6e1bb2fe8f7dada81ae96.png

1.5.管理归档日志文件

oracle数据库有两种运行方式:归档(ARCHIVELOG)方式和非归档(NO ARCHIVELOG)方式。在非归档模式下,日志切换时直接覆盖以前的重做日志文件,不产生归档日志。数据库在归档方式下运行,在日志切换后,ARCH进程会对已写满的重做日志文件进行存档,默认情况下,oracle采用非归档模式下运行,主要因为归档方式会给系统带来一定的性能问题。只有当数据库运行在归档方式时,ARCH进程才存在。ARCH进程是oracle的可选后台进程,将日志存档,以便保存对数据库的所有更改。这样即使在数据文件磁盘损坏的情况系下,数据库管理员也能将数据库恢复到故障发生时的状态。

1.5.1.配置数据库归档日志

配置数据库归档日志的方式包括以下3个步骤:

查询数据库的归档方式,确定当前不处于归档方式

以sys用户作为SYSDBA连接目标数据库,然后执行ARCHIVE LOG LIST命令查看数据库归档模式:

042327a8cfb2c05b4911903cc486d632.png

关闭数据库并启动数据库到mount状态

8b3183026930fb536325897a73ea299c.png

使用ALTER DATABASE ARCHIVELOG命令将数据库设置为归档模式,并验证数据库的归档模式是否改变

b2a11af4508d4b5aa0bf740f6417f35e.png

1.5.2.获取归档日志信息

数据字典视图可帮助用户获取数据库配置信息。用户通过使用V$ARCHIVE_DEST和V$ARCHIVE_LOG视图获取归档日志信息

V$ARCHIVE_DEST:显示当前所有归档日志存储位置及其状态

V$ARCHIVE_LOG:显示历史归档日志信息

如何查看所有有效的归档日志文件存储目录

19e15c3b9abc67236abdc46573d3fe0d.png

获取已归档的日志文件的信息,归档进程会在每次日志切换后将联机重做日志文件复制到一个归档日志文件,从而生成一串连续的且能用于恢复一个备份的日志文件。这些日志文件的名称和位置由若干初始化参数控制。

16f2f84453c2d779d0be21a44a9a15ae.png

1.6.数据字典

数据字典是oracle存储关键信息的表和视图的集合。oracle进程会在sys模式中维护这些表和视图,也就是说数据字典的所有者为sys用户,数据存放在system表空间中,数据字典描述了实际数据是如何组织的,如一个表的创建者者信息,创建时间信息,所属的表空间信息,用户访问权限等等。对数据字典可以向处理其他数据库和表或试图一样进行查询,但不能进行任何修改。

oracle数据字典通常是在创建和安装数据库时被创建的。oracle数据字典是oracle数据库系统工作的基础。没有数据字典的支持,oracle数据库系统就不能进行任何工作。

数据字典的构成:数据字典分为数据字典表和数据字典视图。数据字典中的表不可以直接被访问,但是可以访问数据字典中的视图。数据字典视图分为两类:静态数据字典视图和动态数据字典视图。数据字典视图分为两类:静态数据字典视图和动态数据字典视图;

数据字典表:数据字典表中的数据是oracle系统存放的系统数据,而普通表存放的是用户的数据,为了方便的区别这些表,这些表的名称都是用“$”结尾,这些表属于SYS用户。

为了方便用户对数据字典表的查询,oracle对这些数据字典分别建立了用户视图,这样既容易记住,还隐藏了数据字典表之间的关系。

1.6.1.静态数据字典视图

静态数据字典中的视图分为3类:他们分别有3个前缀构成:USER_*、ALL_*、DBA_*

USER_*:该视图存储了当前用户的所拥有的对象的信息(即所有在该用户模式下的对象)

ALL_*:该视图存储了当前用户的能够访问的对象的信息(与USER_*相比,ALL_*并不需要拥有该对象,只需要具有访问该对象的权限即可);

DBA_*:该视图存储了数据库中所有对象的信息(前提是当前用户具有访问权限,一般来说必须具有管理员权限)

列举常用的数据字典视图

user_tables:主要描述当前用户所拥有的所有表的信息,主要包括表名,表空间等信息,使用SCOTT用户连接数据库实例,查看SCOTT用户下的所有表的信息。

f6900f78911a8d512e50cd0df8fb10a9.png

查看SCOTT用户拥有哪些索引

f3e27f1b4e1cf674a2bc733bfc8dca61.png

查看SCOTT用户所拥有的数据库对象

f129c64a4db4542ef9a1f306fc09fcc3.png

查看SCOTT用户能够访问的所有表,过程,函数等信息

5d7e60fa468691675097f8d469fecaa0.png

查看数据字典:如果需要了解每个视图更多的信息,可以通过DICTIONARY命令来查看所有的视图和其他描述,该表只有两个字段,表名和描述

3661c6bf20cb36f97c5cb385894a3a14.png

1.6.2.动态数据字典视图及使用

除了静态数据字典中有3类视图,其他的字典视图中主要是V$视图,之所以这样命名是因为这些视图会不断的进行更新,可以以反映出当前实例和数据库的运行状况。动态性能表用于记录当前数据库的活动,只存在于数据库运行期间,实际的信息都取自内存和控制文件。DBA可以使用动态视图来监视和维护数据库。

举例说明动态数据字典的使用

24dc56917b5fcc329e2549d4590e77bd.png

从结果中可以看出,当前数据库正在使用的日志组是GROUP 3,数据库运行在非归档模式下,该日志组有一个日志成员,存储目录为/u01/app/oracle/oradata/orcl/,日志文件名为redo03.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值