很多人一谈到数据库,就会想到数据,想到数据就会想无非怎样查询怎样编写sql脚本呀,其实基本的数据库的报错信息和启动个人觉得就像基础般同样需要知道;就如我最近配置了数据库可是就是不知道是否配置成功直接CONNECT还总是连不上,一直没有头绪不知如何处理,就如之前説的安装和监听配置,觉得安装配置都好了,就是不知道怎么入门;下面谈一谈数据库基本链接;
启动oracle数据库步骤:
首先使用oracle用户登录Linux,然后在shell命令行中执行下面的命令:
第一步:打开Oracle监听
$ lsnrctl start
第二步:进入sqlplus
$ sqlplus /nolog
SQL>
第三步:使用sysdab角色登录sqlplus
SQL> conn /as sysdba
第四步:启动数据库
SQL> startup
经过上面的四个步骤,oracle数据库就可以启动了。
关闭数据库用 shutdown 是要等待事物结束才关闭,强制关闭用 shutdown abort。
这里是顺利的时候,可是我就没有这么顺利了,第一理所当然的启动监听时候就提示监听程序不可用,为什么呢,个人最后分析原因得出:最大可能就是我的服务器端只有一个实例就是装的时候预留的空置实例,这个实例其实就是基本必须带的就像mysql中你进去会有三个数据库一样,这种情况下启动失败怎么办呢?
01.回去重新配监听:
具体用小字标出:
启动ORACLE监听器,结尾报 The listener supports no services ,数据库实例services没被注册监听,前几天装aix的11.2.0.3 rac的时候没这毛病,很奇怪~
2种方法解决:
一、手工注册,每次重启监听都需要手工注册:
SQL> alter system register;
System altered.
二、修改 listener.ora,一劳永逸解决问题
在LISTENER里添加内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
)
)
另,感觉这是个bug,google下·看到:http://www.askmaclean.com/archives/11gr2-rac-add-listener-static-register.html
原来在11gr2新建和修改监听后,不会自动静态注册,需要退出netca 界面,启动netmgr界面,为监听加入静态注册的信息:
点选方才创建的监听器,选择Database Services菜单
填入Global Database Name和本地实例的SID信息,并确认ORACLE HOME Directory(应是Grid Infrastructure的Home目录)正确后点选Save Network Configuration。
重启监听即可
02,监听配的没有问题或者安装时候写好的,懒得再走一遍,有信心的话,你就可以继续进行第二步了;
直接输入 sqlplus /nolog
系统提示输入密码,这里记住密码需要输入实例的密码会进入sql>输入命令地方
在这里直接启动空闲实例
输入:startup
直接启动数据库,然后conn sys/密码 as sysdba
回提示已连接,进行操作,操作会记录在空闲的数据库实例中;
在有多个数据库实例情况下可以采用在sqlplus /nolog处做相应更改即可,进入后:
可以通过不同选项来启动数据库不同启动步骤:
1.startup nomount
nomount 选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID设置,不一定要与打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如下所示:
SQL> startup nomount
ORACLE
instance started.
Total System Global Area 35431692 bytes
Fixed Size 70924 bytes
Variable Size 18505728 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
2、startup mount:
该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和redo log文件的内容,但并不打开这些文件。这种打开方式常在数据库维护操作时使用,如对数据文件的更名、改变redo log以及打开归档方式、执行数据库的full database recovery。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出" Database mounted. "的提示。
3、startup
该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和redo log文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前面Startup Mount方式下的所有提示外,还会给出一个" Database opened. "的提示。此时,数据库系统处于正常工作状态,可以接受用户请求。
如果采用STARTUP NOMOUNT或者是STARTUP MOUNT的数据库打开命令方式,必须采用ALTER DATABASE命令来执行打开数据库的操作。例如,如果你以STARTUP NOMOUNT方式打开数据库,也就是说实例已经创建,但是数据库没有安装和打开。这时必须运行下面的两条命令,数据库才能正确启动。
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
而如果以STARTUP MOUNT方式启动数据库,则只需要运行下面一条命令即可以打开数据库:
ALTER DATABASE OPEN;
4、其他打开方式:
(1)、startup restrict
这种方式下,数据库将被成功打开,但仅仅允许一些特权用户(具有DBA角色的用户)才可以使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出操作时不希望有其他用户连接到数据库操作数据、数据装载、特定的迁移或者升级操作等。
(2)、startup force
该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库遇到问题不能关闭数据库时采用。
(3)、alter database open read only;
该命令在创建实例以及安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库可以采用这种方式打开。
数据库的关闭:
1、shutdown normal;
这是数据库关闭SHUTDOWN命令的确省选项。也就是说如果输入SHUTDOWN这样的命令,也就是执行SHUTDOWN NORNAL命令。
发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复。但需要注意的是,采用这种方式,也许关闭一个数据库需要几天时间,或者更长。
2、 shutdown immediate
这是常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。
当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。如果系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的所有用户退出系统,强行回滚当前所有的活动事务,然后断开所有的连接用户。
3、shutdown transactional;
该选项仅在Oracle 8i后才可以使用。该命令常用来计划关闭数据库,它使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在所有活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。
4、shutdown abort
这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。如果下列情况出现时可以考虑采用这种方式关闭数据库。
1、 数据库处于一种非正常工作状态,不能用shutdown normal或者shutdown immediate这样的命令关闭数据库;
2、 需要立即关闭数据库;
3、 在启动数据库实例时遇到问题;
所有正在运行的SQL语句都将立即中止。所有未提交的事务将不回滚。Oracle也不等待目前连接到数据库的用户退出系统。下一次启动数据库时需要进行实例恢复,因此,下一次启动可能比平时需要更多的时间。
下表为上述四种不同关闭数据库的区别和联系。
关闭方式 | Abort | Immediate | Transaction | Nornal |
允许新的连接 | × | × | × | × |
等待直到当前会话中止 | × | × | × | √ |
等待直到当前事务中止 | × | × | √ | √ |
强制CheckPoint,关闭所有文件 | × | √ | √ | √ |