准备从零开始学习oracle。
我说过2016年坚持每周写一篇技术博客。那么从现在开始。
今天遇到一个弱爆了的问题:
前几天换了一台笔记本,在新笔记本上面安装了oracle 11g R2。使用dbca安装完数据库没有报错,就关电脑睡觉了,今天想着开始学习oracle,实现OCP进阶,结果刚开始就犯了一个低级错误。
我登陆服务器,
[root@oracle ~]# su - oracle [oracle@oracle ~]$
切换到oracle用户之后,启动数据库
[
oracle@oracle ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期一 1月 11 19:58:132016 Copyright (c) 1982, 2009, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 839282688 bytes Fixed Size 2217992 bytes Variable Size 494929912 bytes Database Buffers 339738624 bytes Redo Buffers 2396160 bytes 数据库装载完毕。 数据库已经打开。
之后查看1521端口状态
[oracle@oracle ~]$ netstat -nat | grep 1521 [oracle@oracle ~]$
奇怪,1521端口没监听。想了半天定位是监听没起来,于是启动监听
[oracle@oracle ~]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 -Production on 11-1月 -2016 20:43:10 Copyright (c) 1991, 2009, Oracle. All rights reserved. 启动/u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: 请稍候... TNSLSNR for Linux: Version 11.2.0.1.0 -Production 系统参数文件为/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora 写入/u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml的日志信息 监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521))) 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNRfor Linux: Version 11.2.0.1.0 - Production 启动日期 11-1月 -201620:43:10 正常运行时间 0 天 0 小时 0 分 20 秒 跟踪级别 off 安全性 ON: LocalOS Authentication SNMP OFF 监听程序参数文件 /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora 监听程序日志文件 /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521))) 监听程序不支持服务 命令执行成功
重新查看端口状态:
oracle@oracle ~]$ netstat -nat | grep 1521 tcp 0 0 172.20.0.20:64165 172.20.0.20:1521 TIME_WAIT tcp 0 0 :::1521 :::* LISTEN
好了,端口启动起来了,由于我是学习oracle,肯定要查看当前数据库有哪些用户:
SQL> select username fromall_users; USERNAME ------------------------------ BI PM SH IX OE HR SCOTT OWBSYS_AUDIT OWBSYS APEX_030200 APEX_PUBLIC_USER USERNAME ------------------------------ FLOWS_FILES MGMT_VIEW SYSMAN SPATIAL_CSW_ADMIN_USR SPATIAL_WFS_ADMIN_USR MDDATA MDSYS SI_INFORMTN_SCHEMA ORDPLUGINS ORDDATA ORDSYS USERNAME ------------------------------ OLAPSYS ANONYMOUS XDB CTXSYS EXFSYS XS$NULL WMSYS APPQOSSYS DBSNMP ORACLE_OCM DIP USERNAME ------------------------------ OUTLN SYSTEM SYS 已选择36行。
于是切换到普通用户,想要学习一些对数据库表的基本增删改查,问题来了
SQL> alter user scott identified by"123456"; 用户已更改。 SQL> conn scott/scott ERROR: ORA-28000: 帐户已被锁定 警告: 您不再连接到 ORACLE。 SQL> alter user scott account unlock; SP2-0640: 未连接 SQL> exit
奇怪,为什么一直报这个错呢?我已经解锁并且重置了密码呀,而且后面不管我执行什么样的命令都报SP2-0640: 未连接
数据库重启问题依然存在,怀疑自己的实例是不是创建的有问题,从日志排查吧,看看日志里面有没有报错,奇怪的是,当我切换到ORACLE_HOME目录下想要查看日志时,报错出现了
[oracle@oracle db_1]$ cd network/admin/ [oracle@oracle admin]$ ls listener.ora samples shrept.lst [oracle@oracle admin]$ cd ../ [oracle@oracle network]$ ls admin doc install jlib lib log mesg tools trace [oracle@oracle network]$ cd trace/ [oracle@oracle trace]$ ls [oracle@oracle trace]$ cd ../log/ [oracle@oracle log]$ ls sqlnet.log [oracle@oracle log]$ less sqlnet.log Directory does not exist for read/write[/u01/app/oracle/product/11.2.0/db_1/log] [/u01/app/oracle/product/11.2.0/db_1/log/diag/clients]
问题原因找到了,原来是目录不存在,奇怪,按理说安装数据库的时候这些目录应该自动创建的,先不管了,手动创建这些目录。
[oracle@oraclelog]$ pwd /u01/app/oracle/product/11.2.0/db_1/network/log [oracle@oracle log]$ cd ../log/ [oracle@oracle log]$ ls sqlnet.log [oracle@oracle log]$ mkdir diag [oracle@oracle log]$ ls diag sqlnet.log [oracle@oracle log]$ cd diag/ [oracle@oracle diag]$ ls [oracle@oracle diag]$ mkdir client [oracle@oracle diag]$ ls client
重启数据库
[oracle@oracle ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期一 1月 11 20:51:212016 Copyright (c) 1982, 2009, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise EditionRelease 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Miningand Real Application Testing options SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
为了保险起见,先将数据库启动到mount状态,(实际这里应该是先启动到nomount状态,再启动到mount状态,之后再打开数据库,手抖打错了,将错就错吧)
SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 839282688 bytes Fixed Size 2217992 bytes Variable Size 494929912 bytes Database Buffers 339738624 bytes Redo Buffers 2396160 bytes 数据库装载完毕。 SQL> alter database open; 数据库已更改。
之前登陆失败,用户已经被锁住,解锁用户并重置密码为tiger
SQL> alter user scott account unlockidentified by tiger; 用户已更改。 SQL> alter user scott account unlock; 用户已更改。 SQL> conn scott/tiger; 已连接。 查看当前用户: SQL> show user; USER 为 "SCOTT"
查看当前用户下有哪些表:
SQL> select TABLE_NAME from user_tables; TABLE_NAME ------------------------------ SALGRADE BONUS EMP DEPT SQL>
问题解决。