oracle中添加多路复用控制文件出现拒绝访问

oracle中添加多路复用控制文件出现拒绝访问,第1张

SQL>shutdown immediate

SQL>create pfile from spfile

改pfile文件控制文件参数

*.control_files='/u01/oracle/oradata/ORCL/control01.ctl','/u01/oracle/oradata/ORCL/control02.ctl',

'/u01/oracle/毁缓oradata/ORCL/control03.ctl','/u01/oracle/oradata/ORCL/control04.ctl'

SQL>create spfile from pfile

B 拷贝控制文件

[oracle@oracle dbs]$ cd /u01/oracle/oradata/肆渣ORCL/

[oracle@oracle ORCL]$ cp control01.ctl control04.ctl

C 启动数纤雹模据库

SQL>startup

一 重建控制文件 SQL>alter database backup controlfile to trace as '/home/oracle/cc050四.ctl' 编辑trace文件cc050四.ctl,获创建控制文件脚本 二 修改控制文件参数 (一):修改控制文件名称或路径通参兄源数文件修改: spfile: alter system set control_files = '[value]' scope = bothpfile: 直接用文本编辑器修改 (二):修改控制文件其信息比修改记录控制文件某数据文件名称及路径 主要步骤: 一、offline表空间:alter tablespace tablespace_name offline二、复制数据文件胡孝新目录;三、rename修改表空间并修改控制文件; alter tablespace test rename datafile '/opt/oracle/oradata/TEST0一.DBF'裤尘稿 to '/home/oracle/oradata/TEST000一.DBF'四、online表空间

我拿咐们通常使用read或者write来请求IO读写,通常IO *** 作都是阻塞IO,当我们调用read时,如果没有数据准备好就会导致线程或进程被挂起,直到有数据到来,能满足IO请求才会被唤醒。

所以在进程或者线程等待数据的过程是阻塞的。

但我们调用read时,如果没有数据带来就直接返回错误信念芦息,而不是一直等待,这样就不会阻塞线程或者进程了,但是需要你不断的去轮询是否有数据到来或者是否能写。

上面两种方式都是不完美的,所以出现了IO多路复用的概念,多路复用就是使用一个线程来检查所有的文件描述符的就绪状态,如果有一个文件描述符准备就绪就返回,得知这些sockt中有准备就绪的后对该文件描述符的 *** 作就可以在一个线程中执行,也可以启动新的线程来执行。

在同一个线程中,哪一个socket准备好就把开关放在哪个socket上实现数据的读写。所有的连接好像共享一条仔敏带路。

select:

该函数允许进程指示内核等待多个时间中的任意一个事件发生,并只在有一个或多个事件发生才唤醒进程。

调用select函数会传入一个数组,数组存放所有监听的文件描述符,需要从用户态拷贝到内核态,如果这个文件描述符很多的话,系统开销会增大。

select会返回已经准备就绪的socket个数,但是不会告诉你是哪一个socket准备就绪,这个时候就需要遍历所有的socket来找到就绪的socket,如果是上万个socket都找一遍需要消耗很多时间。

select监听的socket数量最大是1024。

poll:

poll和select很像,改进就是没有了1024个连接的限制。

epoll:

epoll修复了select和poll的很多问题,比如:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11979101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存