11gOracleStartup,命令行打开oracle的方法
1、打开命令行:窗口键+R键;
2、输入cmd,进入DOS系统,即"Disk Operating System"的缩写>>意思是“磁盘操作系统”
3、检查监听器状态:lsnrctl status
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-9月 -2015 22:22:26
Copyright (c) 1991, 2010, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=USER-20150310XO)(PORT=1521)))
TNS-12541: TNS: 无监听程序
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监听程序
64-bit Windows Error: 61: Unknown error
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
TNS-12541: TNS: 无监听程序
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监听程序
64-bit Windows Error: 61: Unknown error
4、启动监听器 lsnrctl start
5、启动服务: C:\net start OracleServiceOrcl (oracle11g)
C:\Users\Administrator.USER-20150310XO> net start OracleServiceOrcl
OracleServiceORCL 服务正在启动 .....................
OracleServiceORCL 服务已经启动成功。
6、尝试登陆本地数据库: sqlplus /nolog
sqlplus,进入sqlplus环境。
Oracle的sqlplus是与oracle进行交互的客户端工具,借助sqlplus可以查看、修改数据库记录。
在sqlplus中,可以运行sqlplus命令与sql语句。类别:客户端工具;作用:与oracle进行交互
/nolog是不登录到数据库服务器的意思,如果没有/nolog参数,sqlpuls会提示你输入登录账号和密码。
7、监听打开后试图连接到数据库 conn sys/newer as sysdba(conn scott/tiger@orcl)
已连接。链接之后用startup打开数据库
8、查询数据 SQL>select * from emp
这里发现一个问题 返回的只有2
后来查询得知一般是刚接触Oracle时才会遇到的问题。
可能是使用sql server的习惯,sql server中句末可以不用输入分号就可以执行。
解决方法:而使用Oracle的SQLPlus或者是在命令行下使用时,如果没有在语句的后面加一个分号,就按回车键后,
是不会执行的,而是光标跳到下一行,2表示行号,可以继续输入 语句,直到输入分号后按回车才执行:
所以输入查询语句SQL>select * from emp; 即可。
9、关闭数据库:SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
如果在sqlplus环境中使用shutdown命令关闭了数据库,现在要启动数据库的话,必须先用不登陆到数据库服务器的方式进入sqlplus环境,再用startup命令启动数据库。因为数据库没有启动的话,不能登陆数据库,也无法验证用户名和密码。
几种连接用到的命令形式
1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程
2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程
3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。
平时排错可能会用到的
1.lsnrctl status查看服务器端listener进程的状态。
LSNRCTL> help
The following operations are available
An asterisk (*) denotes a modifier or extended command:
start stop status
services version reload
save_config trace change_password
quit exit set*
show*
LSNRCTL> status
2.tnsping 查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。
C:\>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 16-8月 -
2005 09:36:08
Copyright (c) 1997, 2003, Oracle. All rights reserved.
Used parameter files:
E:\oracle\product\10.1.0\Db_2\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_
NAME = orcl)))
OK (20 msec)
3.
SQL>show sga 查看instance是否已经启动
SQL> select open_mode from v$database; 查看数据库是打开还是mount状态。
OPEN_MODE
----------
READ WRITE
#-----------------
使用hostname访问数据库而不是tnsname的例子
使用tnsname访问数据库是默认的方式,但是也带来点问题,那就是客户端都是需要配置tnsnames.ora文件的。如果你的数据库服务器地址发生改变,就需要重新编辑客户端这个文件。通过hostname访问数据库就没有了这个麻烦。
需要修改
服务器端listener.ora
#监听器的配置文件listener.ora
#使用host naming则不再需要tnsname.ora文件做本地解析
# listener.ora Network Configuration File: d:\oracle\product\10.1.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
# (SID_NAME = PLSExtProc)
(SID_NAME = orcl)
(GLOBAL_DBNAME = boway)
(ORACLE_HOME = d:\oracle\product\10.1.0\db_1)
# (PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
)
)
客户端sqlnet.ora 如果确认不会使用TNSNAME访问的话,可以去掉TNSNAMES
# sqlnet.ora Network Configuration File: d:\oracle\product\10.1.0\db_1\NETWORK\ADMIN\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (HOSTNAME)
Tnsnames.ora文件不需要配置,删除也无所谓。
下面就是网络和操作系统的配置问题了,怎么样能够解析我的主机名的问题了
可以通过下面的方式连接
sqlplus sys/oracle@boway
这样的话,会连接boway这台服务器,并且listener来确定你所要连接的service_name。
oracle提示ORA-28002,密码7天后过期
解决ORA-28002: 密码7天之后过期办法
问题:打开oracle正常登陆之后提示我 ERROR:ORA-28002: the password will expire within 7 days
原来我的oracle是11g的 SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
通过这条sql语句查出,该版本默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”。
而原来10g之前的版本默认的UNLIMITED,即无限制。
所以将密码有效期由默认的180天修改成“无限制”:sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后,没有被提示过这条警告的用户就不会再碰到这个问题了。
已经被提示过的用户必须要改一次密码: sql> alter user (scott) identified by tiger;(修改用户密码需要管理员身份登录 as sysdba)