本篇博文是我在刚学习完之后整理的东西,可能比较的浅,只是一些基础的知识,但这也是入门之前应该有的功底,希望有错误的地方能有大神指点。
|
1
|
Oracle Enterprise Manager :图形化管理监控工具,管理监控数据库。
|
(1)
|
配置Oracle
Enterprise Manager
|
|
|
(1)在终端输入命令sqlplus / as sysdba;
输入sql语句查询实例名:select instance_name from v$instance;
(2)输入emca -config dbcontrol db -repos recreate
提示输入数据库SID:instanceName
输入sys、dbsnmp、sysman的口令
(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)
|
|
|
(3)
|

|
|
|
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里面。更改参数的时候,有3种scope选项.
|
|
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字段为immediate和deferred的表示这个参数可以使用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;
|
|
|
连接到测试用户enmo,查看当前用户的系统权限;
SQL>select
* from session_privs;
|
|
|
8
|
对象权限:
|
1
|
Alter table;delete 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更新hr的jobs表的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博客 ” ,链接:https://blog.itpub.net/30606702/viewspace-1874771/
,如需转载,请注明出处,否则将追究法律责任。