当前位置:   article > 正文

Oracle客户端安装与配置_oracle客户端下载安装

oracle客户端下载安装

1、掌握安装oracle客户端方法

第一步  在Oracle官网搜索“oracle 19c”

第二步 选择第一个并下载

第三步 下载完成之后解压,注意暂时需要关闭腾讯管家和一些安全保护的软件,然后右击setup.exe,“以管理员身份运行”

第四步 稍等一下会出现如下所示界面,选择“创建并配置单实例数据库”单选项,再点击“下一步”按钮

第五步 再选择该界面中的“桌面类”单选项,再点击“下一步”按钮

第六步 再选择“使用Windows内置账户”单选项,点击“下一步”按钮

第七步 在弹出的对话框中选择“是”

第八步 选择“数据库版本”为“标准版”,“全局数据库名”可以任意取,“口令”就是设置密码,(全局数据库名和口令要记住,我自己的全局数据库名是orcl,口令是Sa123456)取消勾选“创建为容器数据库”

第九步 记住“Oracle系统标识符(SID)”,(使用Oracle连接工具的时候需要用到),最后点击安装按钮

 2、掌握配置oracle客户方法

第一步 打开开始菜单,找到“Net Configuration Assistant”并点击

选择“命名方法配置”,然后点击“下一步”

此时确保“选定的命名方法”一栏中包含“本地命名”和“轻松连接命名“,然后点击下一步

第二步 选择“本地Net服务名配置”,点击下一步

选择“添加”选项,点击下一步

设置服务名为sorcl,点击下一步

选择TCP,点击下一步

在主机名处填写需要远程连接的IP地址(老师的是10.6.19.227),选择“使用标准端口号1521”,点击下一步

点击“是,进行测试”,下一步

点击“更改登录”,输入用户名和密码(我的用户名和密码都是s加学号),输入之后,显示“==测试成功==”后,点击下一步

设置网络服务名(可以自己任意取,我的是sorcl,要记住这个服务名,之后使用命令连接服务器的时候要用到),再点击下一步,然后会出现一个“是否配置另一个服务器”的界面,点击“”。最后点击下一步,完成。

3、通过简单操作验证死锁现象

3.1利用sqlplus连接上服务器

输入“sqlplus”后要求输入用户名和口令,用户名是s加学号@之前取的网络服务器名,口令是s加学号,(输入口令时光标不会移动,建议先写在记事本里再复制粘贴过来,粘贴之后口令不会有显示,直接回车即可),显示如下图所示即成功登录。

3.2进行简单查询操作

select table_name from user_tables;

desc emp;

3.3死锁现象

执行导致死锁的语句:

1、用sqlplus连接数据库,执行

UPDATE dept SET loc='LOUDI' WHERE deptno = 40;

2、用SQL DEVELOPER连接数据库,执行

UPDATE emp SET deptno =40 WHERE ename LIKE 'S%';

UPDATE dept SET loc = 'BEIJING' WHRE deptno = 40;

3、返回SQLPLUS ,执行

UPDATE emp SET deptno=10 WHERE ename LIKE 'S%';

分析死锁原因:

两个不同的会话(一个通过sqlplus,另一个通过SQL DEVELOPER)执行了以下操作:

  1. 会话A (sqlplus) 执行了 UPDATE dept SET loc='LOUDI' WHERE deptno = 40; 这将锁定部门编号为40的DEPT记录。

  2. 会话B (SQL DEVELOPER) 首先执行了 UPDATE emp SET deptno=40 WHERE ename LIKE 'S%'; 这将更新ename以'S'开头的员工的deptno字段为40。由于emp表中的deptno字段是外键,引用了dept表的deptno,因此在修改emp表时,Oracle数据库可能会获取dept表上deptno=40的一些行级锁(具体取决于数据库的隔离级别和外键约束设置),以确保参照完整性。

  3. 紧接着,会话B试图执行 UPDATE dept SET loc='BEIJING' WHERE deptno = 40; 这个操作需要对同一个deptno=40的DEPT记录进行更新,但由于会话A已经锁定了这条记录,所以会话B会被阻塞,等待会话A释放锁。

  4. 同样地,当会话A尝试执行 UPDATE emp SET deptno=10 WHERE ename LIKE 'S%'; 时,它需要再次访问已经被会话B修改过的那些emp记录,并可能需要获得与会话B持有的那些emp记录相关的锁。这时,因为会话B未提交事务且持有emp表的部分锁,会话A也会被阻塞,等待会话B释放相关资源锁。

这样就形成了循环等待:会话A等待会话B释放DEPT表的锁以便完成其事务,而会话B又等待会话A释放EMP表的锁以便完成其事务。这就构成了死锁。

避免此类死锁的方法包括:

  • 资源排序策略:确保所有事务按照同一顺序访问资源可以减少死锁的发生。例如,所有事务都首先更新EMP表再更新DEPT表,或者反之亦然。

  • 事务最小化:尽量减小事务的范围和执行时间,尽快提交或回滚事务,减少持有锁的时间。

  • 使用适当的隔离级别:选择较低的隔离级别可能允许更多的并发,但也可能导致更多的锁竞争和数据不一致性;选择较高的隔离级别可能降低死锁的可能性,但可能会增加锁的数量和持续时间。

  • 死锁检测与自动解决:大多数现代数据库管理系统如Oracle都有内置的死锁检测机制,一旦检测到死锁,会选择其中一个事务进行回滚以打破死锁循环。

  • 显式锁定:在某些情况下,通过显式控制锁定模式和范围也可以帮助管理死锁风险,但这种方法通常更复杂,并需要谨慎设计和实现。

  • 预定义事务执行顺序:如果业务逻辑允许,可以通过预定义并发进程的执行顺序来避免特定的死锁情况。

  • 定期检查和超时处理:设置事务超时,在超时时自动回滚事务,这有助于防止长期存在的死锁。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/502028
推荐阅读
相关标签
  

闽ICP备14008679号