管理Oracle实例----数据库启动与关闭、警告日志、表空间、权限

本篇博文是我在刚学习完之后整理的东西,可能比较的浅,只是一些基础的知识,但这也是入门之前应该有的功底,希望有错误的地方能有大神指点。




1

 Oracle Enterprise Manager :图形化管理监控工具,管理监控数据库。

1

配置Oracle Enterprise Manager



(1)在终端输入命令sqlplus / as sysdba;
输入sql语句查询实例名:select instance_name fro
m v$instance;

(2)输入emca -config dbcontrol db -repos recreate

   提示输入数据库SIDinstanceName

    输入sysdbsnmpsysman的口令

(3)显示数据库主目录,本地主机名,监听程序、端口号,数据库SID等信息,输入y继续


(4)开始配置enterprise manager


(5)输入emctl status dbconsole查看database control的状态,看是否启动,如未启动,输入emctl start dbconsole启动


(6)打开浏览器,输入地址进入Oracle enterprise manager 11g database control  


(7) emctl stop dbconsole---------停止Database Control


oem使用图像化管理监控数据库。架构分别的的是databases control(管数据的接口)repositery(资料库)repos在本地的表空间sysaux中 emca创建oem:config all db [-repos (create | recreate)],没有repos就create ,存在repos就recreate.自动把repos放在当所在数据库的console中,要启动oem就需要先启动数据库。 database control一个oem只能监听一台数据库。

2


 4fiao9AQm7LvcAAAAASUVORK5CYII=


3

   

                                                                  

YUr7tRyxgk8AAAAASUVORK5CYII=



2





1

Shell 脚本调用 SQL*Plus 通过调用 sqlplus 和使用操作系统脚本语法来传递参数,可从 shell 脚本或 BAT 文件调 用 SQL*Plus。

2

新建了一个脚本后执行操作sh vim 1.sh     sqlplus  /as sysdba  <<aaa-------输入重定向,可以在操作系统运行时,进入sqlplus执行 select * from t1; select * from t1; aaa ls -l /home/oracle  运行sh 1.sh就能执行sh这个文件,执行完后这个文件执行了sqlplus的命令和ls的命令; 或者 sqlplus   /as sysdba  select * from t1; select * from t1; ls -l /home/oracle ------也可以执行完sqlplus后直接进入操作系统进行相关的操作,!的使用,是在sqlplus中调用操作系统的命令。 </a<>


3

数据库启动与关闭

1

SQL> startup   ; --------  该命令启动实例,将数据库文件与该实例关联,然后装载并打开数据库

SQL> startup nomount ------开启实例(读取parameter files) 该命令启动实例,但不装载数据库,没有关联数据库,先放出资源  

SQL> alter database mount;-------- 该命令装载处于 NOMOUNT 状态的数据库。把实例与数据库联系起来-------->读取control_files(属于数据库)------>在参数文件中查找。                   

SQL> alter database open;--------该命令打开处于 MOUNT 状态的数据库。open状态是找相对应的数据库文件


启动到nomount阶段需要读取参数文件,数据库只要是静态参数文件启动了nomount阶段就不能动态修改参数文件,需要修改就需要关闭修改静态参数文件。spfileoracl.ora动态参数文件。init.ora静态参数文件。 mount状态时,找到了相对应的控制文件就能启动mount,不能少一个控制文件,有几个就要找到几个,否则无法启动 mount,把实例和控制文件连接起来了。


动态参数文件(spfile)

所谓的动态,就是说你可以在不关实例的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有3scope选项.

1

scope=both:必须以下两项都满足

 2

scope=memory:仅仅更改内存,不改spfile。也就是重新启动就失效了,就会恢复原值++ scope=both 内存和spfil_e都更改++ 不指定scope参数,等同于scope=both.



3

scope= spfile:仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,必须重启实例才能生效

静态参数文件(pfile )

不可以进行修改,必须得关闭实例了才能进行修改。

注:

动态参数文件什么都不加的时候,scope默认的是both


静态参数文件什么都不加的时候默认,scope 默认的是memory


指定静态参数文件开启:startup pfile=/u01/app/……../initprod1.ora


select NAME,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$system_parameter;





cd /u01/app/oracle/diag/rdbms 后台控制文件位置--------->log.xml文件为告警日志--------->ls-------->显示prod2为db_unique_name -------->显示prod2为db_unique_name --------->log.xml文件为告警日志 动态参数文件 ------->alter system set open_cursors=500 (默认为scope为both);动态参数文件什么都不加的时候,scope默认的是both   ------------->alter system set open_cursors=500等于alter system set open_cursors=500 scope=memory(静态参数文件什么都不加的时候默认,scope 默认的是memory)


 参数文件有动态参数文件先读动态没有再读静态。 要是存在动静态参数文件,要想读静态可以 startup file=<静态参数文件位置>。 静态参数文件不能更改位置,动态文件可以修改文件位置. 可以做个实验,将动态参数文件移至别处,然后可以在静态参数设置一个spfile=<动态参数文件的位置>,这样我们就可以修改动态参数文 件的位置并通过这种方式进行访问,但是反过来,换了静态参数文件的位置,这么指向就不可行了.


查看参数文件:SQL>show  parameter_pfile;

 cd $ORACLE_HOME

 pwd---->查看当前路径

 cd  /dbs

 


修改动态参数文件(spfile):

SQL>create pfile  from spfile;

         vim  initPROD1 .ora

SQL>create  spfile  from pfile;



修改初始化参数

SQL>show parameter processes;

SQL>show parameter db_files;

SQL>alter system set  processes=500 scope=spfile;

SQL>alter system set job_queue_processes=500;

SQL>alter system set db_files=500b scop=spfile;

SQL>shutdown immiediate;

SQL>startup

SQL>show  parameter processes;

SQL>show parameter db_files;

 

SQL>startup  force;---->重启



 关闭实例:

Shutdown nomoral

1

可以建立新的连接

2

oracle服务器在完成关闭之前先等待所有用户断开连接

3

数据库和重做缓冲区被写入磁盘当中

4

后台进程已经终止,从内存中删除了SGA

5

oracle服务器在关闭实例之前先关闭数据库

6

下一次启动的时候不需要进行实例恢复


Shutdown transactiona

1

采用事物处理的关闭方式可防止客户机数据丢失

2

不能启动新事物处理

3

会等待客户机结束正在进行的事物处理后断开客户机

4

完成所有事物后立即执行关闭

5

下一次启动的时候不需要进行实例恢复

shutdown immediate

18

执行立即关闭数据库

2

oracle数据库正在处理的当前的SQL语句未完成

3

oracle服务器不等待当前连接到数据库的用户断开连接

4

oracle服务器会回退活动的事物处理,而且会断开所有用户连接

5

oracle服务器在关闭实例之前关闭并断开数据库

6

下一次启动不需要进行实例恢复

shutown abort

1

相当于直接断电的方式

2

oracle数据库正在处理的当前的SQL语句会立即终止

3

oracle服务器不等待当前连接到数据库的用户断开连接

4

数据库和重做缓冲区并没有写入磁盘

5

不回退未提交的事物处理

6

实例已经关闭,但是并没有关闭文件

7

数据库没有关闭

8

下一次启动时要进行实例恢复,实例恢复是自动进行的



4

警告日志;

用命令行得到警告日志的路径:

oracle10g的查询方法:show parameter background_dump_dest

Oracle11g的查询方法:show parameter background_dump_dest

                                              select value  from  v$diag_info where name='Diag Trace';

                                              select value  from  v$diag_info where name='Diag Alert';

5

创建表空间:SQL>create  tablespace  enmo datafile '/u01/app/oracle/oradata/ENMO11G/enmo_01.dbf'  size 10m;

修改表空间:SQL>alter tablespace enmo add datafile'/u01/app/oracle/oradata/ENMO11G/enmo_01.dbf'size 20;

修改文件:SQL>alter database   datafile '/u01/app/oracle/oradata/ENMO11G/enmo_01.dbf'size 20;

alter session是在会话级别对某些参数进行更改,在v$parameter视图中的ISSES_MODIFIABLE字段为true的表示这个参数可以使用alter session修改;


alter system是在系统级别对某些参数进行更改,它的影响不仅仅是某个会话,而是整个实例。在v$parameter视图中的ISSYS_MODIFIABLE字段为immediatedeferred的表示这个参数可以使用alter system命令修改。


alter system命令在中,如果你的scope指定如下的指,它们分别代表不同的含义:

j/

scope=spfile表示会在spfile中修改这个参数,在正在运行的实例的内存中不进行修改,那么只有数据库的实例重启以后,对这个参数的修改才会起作用;


scope=memory表示在当前实例的内存中修改这个参数,而不在spfile中修改,那么这个参数的修改会影响到当前实例的运行,而如果数据库重新启动以后,你这次对这个参数的修改是没有起作用的。


scope=both以上两种情况都得满足

6

创建用户:SQL>create user enmo identified by enmo;

赋权限:SQL>grant create session to enmo;

                  SQL>grant create  table to enmo;

                  SQL>grant  unlimited tablespace to enmo;----->给插入数据赋权限

7

系统权限:

1

Create  table;create user;create session;create view;drop user; drop  table。。。。。。。。。

1

创建测试环境,创建用户enmo,赋予create session权限(即connect角色中的唯一权限)及resource角色

SQL>create user  enmo identified by enmo;

SQL>grant create session,resource  to  enmo;

  1.  

连接到测试用户enmo,查看当前用户的系统权限;

SQL>select * from session_privs;



8

对象权限:

1

Alter tabledelete table;update ; select ;index

(1)

hr用户的jobs表的查询权限赋予scott

SQL>conn hr/hr

SQL>grant  select on jobs to scott;

SQL>conn scott/oracle

SQL>select count(*) from  hr.jobs;

(2)

查看当前用户下所有的对象权限

SQL>select  * from  user_tab_privs_recd;


(3)

通过SCOTT更新hrjobs表的max_salary字段,更新条件为job_id='ST_MAN';max_salary更新为9000

SQL>select * from hr.jobs  where job_id='ST_MAN';

SQL>update hr.jobs  set max_salary=9000  where job_id='ST_MAN';---------发生错误!

原因:因为scott没有更新hr.jobs的对象权限

SQL>conn hr/hr

SQL>grant update(max_salary) on jobs to scott;----在赋予对象权限的时候,可以只赋予更新某个字段的更新权限

SQL>conn scott/oracle

SQL>select * from hr.jobs where job_id='ST_MAN';








来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30606702/viewspace-1874771/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30606702/viewspace-1874771/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值