涂抹Oracle笔记2:数据库的连接-启动-关闭

一、数据库的连接
sqlplus <username>[/<password>][@<connect_idertifier>]|/[as sysdba| as sysoper]|/nolog
1.C:UsersAdministrator>sqlplus / as sysdba; ---这是典型的操作系统认证,不需要listener进程
2.C:UsersAdministrator>sqlplus /nolog ----不以用户身份登录,先进入SQLPlus环境,再通过connetc命令连接。
3.C:UsersAdministrator>sqlplus

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 11月 23 11:28:53 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
请输入用户名: scott
输入口令:
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options.

4.SQL> conn scott/tiger@orcl; ----这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
已连接。
5.SQL> conn sys/rusky2014@orcl as sysdba;
6.SQL> conn / as sysdba;-----不用输入用户名和密码直接连接。
已连接。
说明:第1和第6种连接方式,as sysdba 或是as sysoper,如果是操作系统认证,甚至可以不用输入用户名和密码直接登录。
ORACLE的管理员账号登录认证有以下两种方式:
操作系统认证
口令文件认证(必须以oracle的管理员账号登录,默认sys用户)
启用哪种方式认证由$ORACLE_HOME etworkadminsqlnet.ora文件中的参数SQLNET.AUTHENTICATION_SERVICES决定。
在Windows,该参数设置为NTS或ALL才能使用操作系统认证。
在LINUX/UNIX平台下,该参数设置为ALL或者不设置的情况下,才可使用操作系统认证。
不能使用操作系统认证时,使用如下方式连接数据库则报错。
SQL> conn / as sysdba;
ERROR:
ORA-01031: 权限不足
SQL> conn sys/rusky2014 as sysdba; ---非操作系统认证时必须指明用户名和密码。连接当前实例,可不用指定SID.
已连接。
SQL>
以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。
============
二、启动和停止数据库
1.数据库的启动
sqlplus以sysdba身份连接进入,执行STARTUP即可启动数据库。如果数据库已启动,则会报错。
STARTUP命令的几个选项:
(1)NOMOUNT:只启动数据库实例
(2)MOUNT:启动实例并加载数据文件
(3)OPEN:启动实例,加载数据库文件,并打开(默认情况下,如果不加任何参数即是启动到OPEN状态)
------OPEN也有两个选项:
------------A.OPEN READ ONLY:只读模式打开数据库
------------B.OPEN READ WRITE:读写模式打开数据库(STARTUP 默认就是READ WRITE)
(4)FORCE:可以理解为RESTART.如果当前数据库已启动,并不会报错,而是自动SHUTDOWN ABOUT,然后再启动。
(5)RESTRICT:可以理解为有限制条件的启动数据库,以这种方式启动数据库后,只有拥有RESTRICTED SESSION权限的用户才能登录数据库。
(6)PFILE:指定PFILE初始化参数启动数据库。
====================
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup nomount;-------------也可以先nomount,再mount,然后再open.
ORACLE 例程已经启动。

Total System Global Area 647204864 bytes
Fixed Size 2178536 bytes
Variable Size 436208152 bytes
Database Buffers 201326592 bytes
Redo Buffers 7491584 bytes
SQL> alter database mount;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL>

==================
2.数据库的停止
sqlplus以sysdba身份连接进入,执行SHUTDOWN即可关闭数据库。
SHUTDOWN命令也有几个参数可选。
(1)NORMAL:正常关闭数据库。SHUTDOWN不加任何参数时,默认就是使用该选项关闭数据库。
---该方式关闭数据库会执行以下操作:
-----A.禁止用户创建连接
-----B.等待正常连接的用户主动断开连接,如果用户不主动连接,SHUTDOWN会一直等待。
-----C.关闭数据库-->卸载数据库-->关闭实例
该方式很被动,因此实际应用中一般不会使用这种方式关闭数据库。
(2)IMMEDIATE:立即执行关闭。
---执行SHUTDOWN IMMEDIATE会执行以下操作:
-----A.所有未提交的事务全部回滚。
-----B.不允许创建新连接
-----C.已经创建的连接,如果正在执行SQL语句,则等待其执行完成,如果没有则断开连接。
-----D.关闭数据库--->卸载数据库-->关闭实例
这种方式安全,快速,高效,也是最常用的关闭数据库的方式。
(3)TRANSACTIONAL:以事务为准的关闭方式。介于NORMAL和IMMEDIATE之间。
---该方式会执行下列操作:
-----A.不允许创建新连接
-----B.已经创建的连接,不允许创建新的事务
-----C.等待未提交的事务提交,然后断开连接
-----D.关闭数据库-->卸载数据库-->关闭实例
该方式在实际应用中也很少用。
(4)ABORT:中止数据库
---该方式关闭数据库会执行以下操作:
-----A.中止当前所有SQL.
-----B.所有连接全部断开
-----C.未提交的事务不进行回滚(等到下次启动时,进行实例恢复)
-----D.关闭数据库--->卸载数据库-->关闭实例
这种方式显然有点暴力。也是最快速的关闭数据库方式。但是下次启动时,必须进行实例恢复,而且由于回滚段数据与数据文件可能不致,因此这种方式也容易出问题。并且下次启动时很慢。

三、连接到远端数据库
本地作为客户端连接到远端数据库时,必须要配置NET服务名。使用Net Configuration Assistant工具进行配置。或者是手工修改配置文件:$ORACLE_HOME etworkadmin nsnames.ora
==========================================

# tnsnames.ora Network Configuration File: D:appAdministratorproduct11.2.0dbhome_1NETWORKADMIN	nsnames.ora
# Generated by Oracle configuration tools.

rusky =
(DESCRIPTION =
   (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = testpc)(PORT = 1521))
   )
   (CONNECT_DATA =
       (SERVICE_NAME = orcl)
    )
 )

=============================================
使用刚刚创建的服务名进行连接至远端数据库:

C:UsersAdministrator>sqlplus scott@rusky

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 24 21:25:55 2014

Copyright (c) 1982, 2010, Oracle. All rights reserved.

输入口令:

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>