知识大全 Oracle管理及常用基础脚本

Posted 数据库

篇首语:同时赶两只兔,一只也捉不到。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle管理及常用基础脚本相关的知识,希望对你有一定的参考价值。

Oracle管理及常用基础脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   性能监控

   检测数据库中的事件和等待

  SELECT event total_waits total_timeouts time_waited average_wait

  FROM v$system_event

   查询会话中的事件和等待时间

  select sid event total_waits average_wait

  from v$session_event where sid= ;

   查询等待进程

  SELECT sid seq# event wait_time state

  FROM v$session_wait;

   监控全局区的性能

  select * from v$sgastat;

   查询命中率

  select gethitratio

  from v$librarycache

  where namespace = SQL AREA ;

   当前 sql 语句

  select sql_text users_executing

  executions loads

  from v$sqlarea;

   查询高速缓存中的命中率

  select sum(pins) Executions sum(reloads) Cache Misses

  sum(reloads)/sum(pins)

  from v$librarycache;

   查询全局字典中的有效装载次数

  select namespace pins reloads invalidations

  from v$librarycache;

   回滚段的争用情况

  select name waits gets waits/gets Ratio

  from v$rollstat a v$rollname b

  where a usn = b usn;

   监控表空间的 I/O 比例

  select df tablespace_name name df file_name file f phyrds pyr

  f phyblkrd pbr f phywrts pyw f phyblkwrt pbw

  from v$filestat f dba_data_files df

  where f file# = df file_id

  order by df tablespace_name;

   监控文件系统的 I/O 比例

  select substr(a file# ) # substr(a name ) Name

  a status a bytes b phyrds b phywrts

  from v$datafile a v$filestat b

  where a file# = b file#;

   在某个用户下找所有的索引

  select user_indexes table_name user_indexes index_name uniqueness column_name

  from user_ind_columns user_indexes

  where user_ind_columns index_name = user_indexes index_name

  and user_ind_columns table_name = user_indexes table_name

  order by user_indexes table_type user_indexes table_name

  user_indexes index_name column_position;

   监控 SGA 中字典缓冲区的命中率

  select parameter gets Getmisses getmisses/(gets+getmisses)* miss ratio

  ( (sum(getmisses)/ (sum(gets)+sum(getmisses))))* Hit ratio

  from v$rowcache

  where gets+getmisses <>

  group by parameter gets getmisses;

   监控 SGA 中共享缓存区的命中率 应该小于 %

  select sum(pins) Total Pins sum(reloads) Total Reloads

  sum(reloads)/sum(pins) * libcache

  from v$librarycache;

  select sum(pinhits reloads)/sum(pins) hit radio sum(reloads)/sum(pins) reload percent

  from v$librarycache;

   显示所有数据库对象的类别和大小

  select count(name) num_instances type sum(source_size) source_size

  sum(parsed_size) parsed_size sum(code_size) code_size sum(error_size) error_size

  sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required

  from dba_object_size

  group by type order by ;

   监控 SGA 中重做日志缓存区的命中率 应该小于 %

  select name gets misses immediate_gets immediate_misses

  Decode(gets misses/gets* ) ratio

  Decode(immediate_gets+immediate_misses

  immediate_misses/(immediate_gets+immediate_misses)* ) ratio

  FROM v$latch WHERE name IN ( redo allocation redo copy );

   监控内存和硬盘的排序比率 最好使它小于 增加 sort_area_size

  SELECT name value FROM v$sysstat WHERE name IN ( sorts (memory) sorts (disk) );

   监控字典缓冲区

  select (sum(pins reloads)) / sum(pins) lib cache from v$librarycache;

  select (sum(gets getmisses usage fixed)) / sum(gets) row cache from v$rowcache;

  select sum(pins) executions sum(reloads) cache misses while executing from v$librarycache;

  后者除以前者 此比率小于 % 接近 % 为好

  select sum(gets) dictionary gets sum(getmisses) dictionary cache get misses

  from v$rowcache

   找 ORACLE 字符集

  select * from sys props$ where name= NLS_CHARACTERSET ;

   监控 MTS

  select busy/(busy+idle) shared servers busy from v$dispatcher;

  此值大于 时 参数需加大

  select sum(wait)/sum(totalq) dispatcher waits from v$queue where type= dispatcher ;

  select count(*) from v$dispatcher;

  select servers_highwater from v$mts;

  servers_highwater 接近 mts_max_servers 时 参数需加大

   碎片程度

  select tablespace_name count(tablespace_name) from dba_free_space group by tablespace_name

  having count(tablespace_name)> ;

  alter tablespace name coalesce;

  alter table name deallocate unused;

  create or replace view ts_blocks_v as

  select tablespace_name block_id bytes blocks free space segment_name from dba_free_space

  union all

  select tablespace_name block_id bytes blocks segment_name from dba_extents;

  select * from ts_blocks_v;

  select tablespace_name sum(bytes) max(bytes) count(block_id) from dba_free_space

  group by tablespace_name;

  查看碎片程度高的表

  SELECT segment_name table_name COUNT(*) extents

  FROM dba_segments WHERE owner NOT IN ( SYS SYSTEM ) GROUP BY segment_name

  HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);

   表 索引的存储情况检查

  select segment_name sum(bytes) count(*) ext_quan from dba_extents where

  tablespace_name= &tablespace_name and segment_type= TABLE group by tablespace_name segment_name;

  select segment_name count(*) from dba_extents where segment_type= INDEX and owner= &owner

  group by segment_name;

   找使用 CPU 多的用户 session

   是 cpu used by this session

  select a sid spid status substr(a program ) prog a terminal osuser value/ / value

  from v$session a v$process b v$sesstat c

  where c statistic#= and c sid=a sid and a paddr=b addr order by value desc;

   空间管理

   察看数据库的大小 和空间使用情况

  SQL> col tablespace format a     在显示中指明列的输出格式

  SQL> select b file_id    文件 ID

  b tablespace_name   表空间

  b file_name      物理文件名

  b bytes         总字节数

  (b bytes sum(nvl(a bytes )))     已使用

  sum(nvl(a bytes ))         剩余

  sum(nvl(a bytes ))/(b bytes)*   剩余百分比

  from dba_free_space a dba_data_files b

  where a file_id=b file_id

  group by b tablespace_name b file_name b file_id b bytes

  order by b tablespace_name

  /

  dba_free_space 表空间剩余空间状况

  dba_data_files 数据文件空间占用情况

   查看现有回滚段及其状态

  select segment_name owner tablespace_name segment_id file_id status from dba_rollback_segs;

   表空间大小

  select tablespace_name count(*) sum(blocks) sum(bytes)/ /

  from dba_data_files

  group by tablespace_name;

   表空间使用情况

  select df tablespace_name 表空间名 totalspace 总空间 M freespace 剩余空间 M round(( freespace/totalspace)* ) 使用率 %

  from  (select tablespace_name round(sum(bytes)/ / ) totalspace

  from dba_data_files

  group by tablespace_name) df

  (select tablespace_name round(sum(bytes)/ / ) freespace

  from dba_free_space

  group by tablespace_name) fs

  where df tablespace_name=fs tablespace_name;

   删除表空间

  select t name d name from v$tablespace t v$datafile d where t name= DATA_HOST_A and t ts#=d ts#;alter tablespace DATA_HOST_A offline;

  drop tablespace DATA_HOST_A including contents;

   查看数据文件的位置

  select tablespace_name file_id bytes/ / file_name from dba_data_files order by file_id;

   为这个表空间增加一个数据文件

  alter tablespace 表空间名 add datafile /u /oradata/userdata_ ora size m;    Unix

  alter tablespace 表空间名 add datafile c:\\oradata\\userdata_ ora size m;    Windows NT

   重新调整数据文件的大小

  alter database datafile /u /oradata/userdata_ ora resize M;   Unix

  alter database datafile c:\\oradata\\userdata_ ora resize M;    Windows NT

   临时表空间和排序表空间的使用状态

  select substr(vses username ) ORA_USER substr(osuser ) OS_USER

  substR(sql_text ) SQL_STMT

  from

  V$sqlarea vsql V$session vses V$sort_usage vsort

  where

  vsort tablespace = TEMP and  vsort sqladdr=vses sql_address and vsql address=vsort sqladdr

  select tablespace_name extent_size total_extents used_extents free_extents max_used_size

  from  v$sort_segment;

   确定盘区和盘区内容及表或者空间的碎片程度

  select segment_name exten from  dba_extents 确定盘区的内容

  desc dba_segments 确定段的内容

   返回了结果表明碎片的严重

  select segment_name tablespace_name extents segment_type from dba_segments where extents>

   空间碎片严重程度

  select tablespace_name count(tablespace_name) from dba_free_space group by tablespace_name

  having count(tablespace_name) >

   基本知识

   为一个事务指定一个回滚段

  set transaction use rollback segment rollback_segment_name 指定回滚段

   如何创建和使用光标

   光标的使用

  declare @name char( )

  declare @homebase char( )

  declare @style char( )

  declare @arttist_id int

  create artist_cursor cursor

  for select * from dim_age

  open artist_cursor

  fetch artist_cursor into @arttist_id @homebase @style

  while (@@sqlstatus= )

  begin

  print @homebase

  print @style

  print @arttist_id

  end

  close artist_cursor

  deallocate cursor artist_cursor

  go

   如何导出和导入数据

   数据导出导入

  exp dss/dss@oralce query=\\ where day_id > \\ tables=(customer) file= d:\\sample dmp log=

  rows=n

  full=y  tables=()  owner=    三种导出方式

  imp userid/pwd@oracle_sid fromuser =( dss dwh) touser =(dss dwh) dwh file=sample dmp

   分区表的到导出 user table_name:px  分区 px

  exp user_id/pwd@oracle_sid tables=(user table_name:px)  file=sample dmp

   如何使数据库运行于归档模式

   打开 ini ora 文件

   修改文件内容

  log_archive_start = true

  log_archive_dest_ = location=D:\\Oracle\\oradata\\ORACLE\\archive

  log_archive_format = %%ORACLE_SID%%T%TS%S ARC

   进入服务管理器输入

  shutdown

  startup mount

  alter database archivelog

  alter database open

  此时数据库运行与归档模式下可以查询输入

  archive log list

   如何做数据库的热备份和恢复

   要对数据库做热备份需要数据库运行在归档模式下 :

     首先使表空间处于备份状态

     拷贝数据文件

     使表空间回复到正常状态

     进入 sqlplus 输入

  alter tablespace users begin backup ;

  $ copy d:\\oracle_home\\usr ora d:\\backup\\user dbf;

  alter tablespace users end backup ;

  alter system checkpoint ;

   恢复数据库需要做如下的步骤

   将映像备份文件拷贝到各个表空间对应的正确的位置

  svrmgrl

  connect internal

  startup mount

  alter database open

  recover database

   如何查看所有的表和创建结构相同的表

   查看当前所有对象

  SQL> select * from tab;

   建一个和 a 表结构一样的空表

  SQL> create table b as select * from a where = ;

  SQL> create table b(b b b ) as select a a a from a where = ;

   如何查看当前日期

  SQL> select to_char(sysdate yyyy mm dd hh :mi:ss ) from dual;

   如何在用户间复制数据

  SQL> copy from user to user create table using select * from table ;

   视图中不能使用 order by 但可用 group by 代替来达到排序目的

  SQL> create view a as select b b from b group by b b ;

   通过授权的方式来创建用户

  SQL> grant connect resource to test identified by test default tablespace users;

  SQL>alter user test quota M on users 在指定的表空间中为某个用户分配资源

  SQL> conn test/test

  如果不给用户 connect 和 resource 角色的话那么他们在指定的表空间中将

  无法创建对象 比如 create table

   如何锁定用户的账号和密码

  alter user test account unlock/lock;

   如何在命令行安装

  runInstaller responsefile filename [ silent] [ nowele]

   如何使用操作系统认证

  Set REMOTE_LOGIN_PASSWORDFILE to NONE

  CONNECT / AS SYSDBA

  CONNECT / AS SYSOPER

   如何通过密码文件认证

  $orapwd file=$ORACLE_HOME/dbs/orapw SID password=admin entries=

  Set REMOTE_LOGIN_PASSWORDFILE to EXCLUSIVE or SHARED

  CONNECT INTERNAL/CONNECT

   如何进行管理例程

  STARTUP PFILE=/DISK /initU ora

  STARTUP[FORCE][RESTRICT][PFILE=filename][OPEN RECOVER][ database]|MOUNT|NOMOUNT]

  ALTER DATABASE database MOUNT;

  ALTER DATABASE database OPEN READ

  ALTER DATABASE database OPEN READ ONLY;

  ALTER DATABASE MOUNT | OPEN

  ALTER DATABASE OPEN [READ WRITE| READ ONLY]

   如何创建物化视图

  CREATE MATERIALIZED VIEW LOG ON sales

  WITH SEQUENCE ROWID

  (prod_id cust_id time_id channel_id promo_id quantity_sold amount_sold)

  INCLUDING NEW VALUES;   首先创建视图日志

  CREATE MATERIALIZED VIEW sum_sales

  PARALLEL

  BUILD IMMEDIATE

  REFRESH FAST ON MIT

  AS

  SELECT s prod_id s time_id COUNT(*) AS count_grp SUM(s amount_sold) AS sum_dollar_sales

  COUNT(s amount_sold) AS count_dollar_sales SUM(s quantity_sold) AS sum_quantity_sales

  COUNT(s quantity_sold) AS count_quantity_sales

  FROM sales s

  GROUP BY s prod_id s time_id;    然后创建视图

   分区表的创建 更改和删除等管理

   创建表空间

  create tablespace space_name datafile /oradata/space_name dbf size m

   创建分区表

  create table mx_xsmx (cat char( ) product varchar( ))

  partition by range(cat)  有 range  hash   list 三种分区方法

  (partition xsmx_ values less than ( B ) tablespace space_name

  partition xsmx_ values less than (maxvalue) tablespace space_name )

   添加分区

  alter table mx_xsmx add partition xsmx_ values less than ( Z )

   将某一个分区割裂

  alter table mx_xsmx split partition xsmx_ at ( G ) into (partition xsmx_ partition xsmx_ )

   删除分区

  alter table mx_xsmx drop partition xsmx_

  alter table mx_xsmx truncate partition xsmx_

  alter table mx_xsmx rename partition xsmx_ to xsmx_

  alter table mx_xsmx modify partition xsmx_

  storage (next m pctincrease )

   分区表的导出 某个分区

  exp sales/sales_password tables=mx_xsmx:xsmx_ rows=Y

  file=sales _q dmp

   IMPORT 分区

   ORACLE 的 IMPORT 工具可在表的分区以及导入数据 例如在 年 用户要查看 年的数据 DBA 必须导入 年的数据 使之在线 操作如下 STEP 建立表的 年的四个表空间和相应的分区 参照( ) STEP 导入数据

  oracle$ imp sales/sales_password FILE =sales _q dmp

  TABLES = (sales:sales _q ) IGNORE=y

   选择指定的分区来查询结果

  select * from mx_xsmx partition (xsmx_ ) where DeptNo beeen and

   对分区表来作索引

  create index index_name on table_name(DeptNO 列名 )

  local  (partition part tablespace space_idx partition part tablespace space_idx )

   创建表的语句中参数的含义

  创建表及其参数含义

  CREATE TABLE MB_CPZ (

  YWFWDM  VARCHAR ( )

  CPZDM   VARCHAR ( ))

  TABLESPACE DWSDATA

  PCTFREE       本参数设置为非零的时候后台 SMON 进程会自动合并相邻的自由范围

  PCTUSED       为恢复 INSERT 操作而设定的

  INITRANS

  MAXTRANS

  STORAGE (

  INITIAL      初始范围为 个字节就是 K oracle 的块大小我们设定为 K 这也是 Oracle 给出的默认值

  NEXT             Oracle 将不会考虑这个设置的值

  MINEXTENTS      最少 个范围

  MAXEXTENTS 最大范围 Oracle 将不会考虑这个设置的值

  FREELISTS FREELIST GROUPS )

  NOCACHE; 不放入高速缓存

  [LOGGING|NOLOGGING] 所有的对表的操作都要记入 REDOLOG ORACLE 建议使用 NOLOGGING

  手动修改表的参数

  ALTER TABLE 名称 PCTFREE PCTUSED STOAGE ( MAXEXTENTS )

  手工分配空间

  ALTER TABLE 名称 ALLOCATE EXTENT ( SIZE K DATAFILE     )

   索引的基本知识

  一 索引的分类

   逻辑上

  单列索引 复合索引   唯一索引 非唯一索引

   物理上

  B TREE OR BITMAP

  B TREE ( NORMAL 和反向索引)

  二 CREATE INDEX

  CREATE INDEX 名称 ON  表名(列名) PCTFREE STORAGE ( ) TABLESPACE 名称没有定义 PCTUSED 索引是按照一定存储的 如果通过 PCTUSED 允许恢复对 BLOCK 的 INSERT 操作 可能影响 INDEX 的效率

  三 建立索引的注意事项

   索引对查询性能有提高 但对 DML 语句有影响

   索引也应该放在一个专用的表空间

   定义索引的 EXTENT 的大小时 = *DB BLOCK

   建立索引时 应采用 NOLOGGING 方式

  四 修改索引

  ALTER INDEX 名称 STORAGE (新值)

  五 分配空间给索引

   ALTER INDEX 名称 ALLOCATE EXTENT ( SIZE K DATAFILE )

  六 重建索引

   提高查询性能

   当一个索引重建时 老的索引会在新索引建立完成后 被删除

   新索引建立过程中 老的索引仍可用于查询

   硬盘的开销大

  七 DROP 一个索引

  DROP INDEX 名称

  八 信息获取

   DBA_INDEXES: 建索引的参数

   DBA_IND_COLUMNS:

   ORACLE 中用户管理

  一 ORACLE 的安全域

   TABLESPACE QUOTAS 表空间的使用定额

   DEFAULT TABLESPACE 默认表空间

   TEMPORARY TABLESPACE 指定临时表空间

   ACCOUNT LOCKING 用户锁

   RESOURCE LIMITE 资源限制

   DIRECT PRIVILEGES 直接授权

   ROLE PRIVILEGES 角色授权先将应用中的用户划为不同的角色

  二 创建用户时的清单

   选择一个用户名称和检验机制 A 看到用户名 实际操作者是谁 业务中角色

   选择合适的表空间

   决定定额

   口令的选择

   临时表空间的选择 先建立一个临时表空间 然后在分配 不分配 使用 SYSTEM 表空间

   CREATE USER

   授权 A 用户的工作职能 B 用户的级别

  三 用户的创建

   命令

  CREATE USER 名称 IDENTIFIED BY 口令   DEFAULT TABLESPACE 默认表空间名 TEMPOARAY  TABLESPACE 临时表空间名 QUOTA M ON 表空间名

  [PASSWORD EXPIRE] 当用户第一次登陆到 ORACLE 创建时所指定的口令过期失效 强迫用户自己定义一个新口令 [ACCOUNT LOCK] 加用户锁

  QUOTA UNLIMITED ON TABLESPACE 不限制 有多少有多少

  [PROFILE 名称 ] 受 PROFILE 文件的限制

  四 如何控制用户口令和用户锁

   强迫用户修改口令 ALTER USER 名称 IDENTIFIED BY 新口令 PASSWORD EXPIRE

   给用户加锁 ALTER USER 名称 ACCOUNT [LOCK|UNLOCK]

   注意事项

  A 所有操作对当前连接无效

  B 的操作适用于当用户忘记口令时

  五 更改定额

   命令 ALTER USER 名称 QUOTA ON 表空间名

  ALTER USER 名字 QUOTA (数值) K|M|UNLIMITED ON 表空间名

   使用方法

  A 控制用户数据增长

  B 当用户拥有一定的数据 而管理员不想让他在增加新的数据的时候

  C 当将用户定额设为零的时候 用户不能创建新的数据 但原有数据仍可访问

  六 DROP 一个 USER

   DROP USER 名称   适合于删除一个新的用户

   DROP USER 名称 CASCADE 删除一个用户 将用户的表 索引等都删除

   对连接中的用户不好用

  七 信息获取

   DBA_USERS: 用户名 状态 加锁日期 默认表空间 临时表空间

   DBA_TS_QUOTAS: 用户名 表空间名 定额

  两个表的连接字段 USERNAME

  GRANT CREATE SESSION TO 用户名

   PROFILE 的管理(资源文件的管理)

  一 PROFILE 的管理内容

   CPU 的时间

   I/O 的使用

   IDLE TIME (空闲时间)

   CONNECT TIME (连接时间)

   并发会话数量

   口令机制

  二 DEFAULT PROFILE

   所有的用户创建时都会被指定这个 PROFILE

   DEFAULT PROFILE 的内容为空 无限制

  三 PROFILE 的划分

   CALL 级 LIMITE

  对象是语句

  当该语句资源使用溢出时

  A 该语句终止

  B 事物回退

  C SESSION 连接保持

   SESSION 级 LIMITE

  对象是 整个会话过程

  溢出时 连接终止

  四 如何管理一个 PROFILE

   CREATE PROFILE

   分配给一个用户

   象开关一样打开限制

  五 如何创建一个 PROFILE

   命令 CREATE PROFILE 名称

  LIMIT

  SESSION_PER_USER

  CPU_PER_SESSION

  IDLE_TIME

  CONNECT_TIME

  六 限制参数

   SESSION 级 LIMITE

  CPU_PER_SESSION: 定义了每个 SESSION 占用的 CPU 的时间 ( / 秒)

   SESSION_PER_USER: 每个用户的并发连接数

   CONNECT_TIME: 一个连接的最长连接时间(分钟)

   LOGICAL_READS_PER_SESSION:  一次读写的逻辑块的数量

   CALL 级 LIMITE

  CPU_PER_CALL: 每个语句占用的 CPU 时间

  LOGICAL_READS_PER_CALL:

  七 分配给一个用户

  CREATE USER 名称

  PROFILE 名称

  ALTER USER 名称 PROFILE 名称

  八 打开资源限制

   RESOURCE_LIMT: 资源文件中含有

   ALTER SYSTEM SET RESOURCE_LIMIT=TRUE

   默认不打开

  九 修改 PROFIE 的内容

   ALTER PROFILE 名称参数      新值

   对于当前连接修改不生效

  十 DROP 一个 PROFILE

   DROP PROFILE 名称

  删除一个新的尚未分配给用户的 PROFILE

   DROP PROFILE 名称 CASCADE

   注意事项

  A 一旦 PROFILE 被删除 用户被自动加载 DEFAULT PROFILE

  B 对于当前连接无影响

  C DEFAULT PROFILE 不可以被删除

  十一 信息获取

   DBA_USERS:

  用户名 PROFILE

   DBA_PROFILES:

  PROFILE 及各种限制参数的值

  每个用户的限制 PROFILE (关键字段)

  十二 PROFILE 的口令机制限制

   限制内容

  A 限制连续多少次登录失败 用户被加锁

  B 限制口令的生命周期

  C 限制口令的使用间隔

   限制生效的前提

  A  RESOURCE_LIMIT:=TRUE

  B  ORACLE\\RDBMS\\ADMIN\\UTLPWDMG SQL

   如何创建口令机制

  CREATE PROFILE 名称

  SESSIONS_PER_USER

  

  password_life_time

  failed_log_attempts

  password_reuse_time

   参数的含义

  A  FAILED_LOGIN_ATTEMPTS:

  当连续登陆失败次数达到该参数指定值时 用户加锁

  B  PASSWORD_LOCK_TIME: 加锁天数

  C  PASSWORD_LIFE_TIME: 口令的有效期(天)

  D  PASSWORD_GRACE_TIME: 口令修改的间隔期(天)

  E  PASSWORD_REUSE_TIME: 口令被修改后原有口令隔多少天被重新使用

  F  PASSWORD_REUSE_MAX: 口令被修改后原有口令被修改多少次被重新使用

   ORACLE 的权限管理

  一授权的两种分类 :

   SYSTEM 授权 : 允许特定的用户对特定的一类对象做特定的操作 可操作的对象 :TABLES INDEXES PROCEDURES SEGMENTS; 系统授权是对某一类对象

  GRANT SELECT ANY TABLE TO ZT

   OBJECT( 对象授权 ):

  A 允许一个特定的用户对一个特定的对象做特定的操作 对象 :TABLE INDEX SEGMENT

  GRANT UPDATE ON EMP TO ZT

  二系统授权的特点

   ORACLE 中有超过 种以上的 SYSTEM 授权

   几乎所有的 SYSTEM 授权包含 ANY 关键字

   SYSTEM 授权 :GRANT 授权

   SYSTEM 授权 :REVOKE 回收

   允许用户做系统一级的操作 建表空间 建 SESSION

   最常用的系统授权 :

  INDEX:CREATE ANY INDEX

  ALTER ANY INDEX

  DROP ANY INDEX

  TABLE:CREATE ANY TABLE

  ALTER

  DROP 

  SELECT

  UPDATE

  SESSION:CREATE SESSION

  ALTER SESSION

  RESTRICTED SESSION

  TABLESPACE: CREATE TABLESPACE

  ALTER TABLESPACE

  DROP  TABLESPACE

  三如何授权 :

   命令格式

  GRANT CREATE SESSION SELECT ANY TABLE TO [USERNAME|PUBLIC|ROLE]

   带有转授权限 :

  A 转授 : 当 A 用户得到系统授权后 如果可以将这个权限授给别人 称转授

  GRANT CREATE SESSION SELECT ANY TABLE

  TO [USERNAME|PUBLIC|ROLE] WITH ADMIN OPTION

  举例 :

   SYSTEM >ZT

  GRANT CREATE SESSION TO ZT WITH ADMIN OPTION

  ZT 用户可以拥有 CREATE SESSION 权限

   ZT >OLM

  GRANT CREATE SESSION TO OLM

  ZT OLM 也有了

  四 SYSDBA 和 SYSOPER 系统权限

     SYSOPER:SYSTEM OPERATOR: 系统操作员

  STARTUP SHUTDOWN;

  ALTER DATABASE[MOUNT|OPEN];

  RECOVER TABLESPACE

  BACKUP  DATABASE

  ARCHIVELOG OR NOARCHIVELOG;

   SYSDBA

  SYSTEM DABASE ADMIN: 数据库管理员

  SYSOPER WITH ADMIN OPTION

  RECOVER DATABASE

  CREATE DATABASE

  五信息获取

  DBA_SYS_PRIVS

  GRANTEE: 得到权限的人

  PRIVILEGE: 得到何种权限

  ADMIN OPTION: 是否可以转授

  想知道 SCOTT 有多少权限

  SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE= SCOTT

  六回收权限 :

  REVOKE 权限 FROM [USERNAME|PUBLIC|ROLE]

  举例 :

  SYSTEM >ZT(CREATE SESSION  WITH ADMIN OPTION)

  ZT >OLM(CREATE SESSION)

  七对象授权

  TABLE: ALTER DELETE SELECT UPDATE INSERT

  INDEX:DELETE INSERT SELECT UPDATE

  CREATE 对象是已经存在的事物 授权者是所有者

  一 授权 :

  GRANT UPDATE(ENAME) ON EMP TO ZT  WITH GRANT OPTION

  二信息获取

   DBA_TAB_PRIVS:

  GRANTEE: 得到者

  GRANTOR: 授权者

  PRIVILEGE: 权限

  GRANTABLE: 是否可以转授

  OWNER: 所有者

  三 回收对象授权

   REVOKE 权限 FROM 用户

  第十五章 : 角色管理

  一 角色及其特点 :

   角色实际上是若干权限的集合体

   DBA 通过为应用中的不同用户 不同职责 定义不同的角色 可以达到减少工作量的目的

   角色的使用同授权一样 可以用   GRANT 授权 REVOKE 回收

   角色可以象开关一样打开关闭

   角色的使用可以提高性能

   角色的使用可以大大减少工作量

  二 建立角色

   CREATE ROLE 名

   CREATE ROLE 名

  IDENTIFIED BY 口令

  三 修改角色

   ALTER ROLE 名称 IDENTIFIED BY 口令

  将没有口令的加一个口令

   ALTER ROLE  名称 NOT IDENTIFIED

  将有口令的变为没有口令

  三 分配一个角色

  GRANT  ROLE 名 TO 用户名

  四 回收一个角色

  REVOKE ROLE 名 FROM 用户名

  五 如何创建一个默认角色

  只有设为默认角色 才可以在用户登录时 使角色所含有的权限生效

   ALTER USER SCOTT

  DEFAULT ROLE 角色 角色

     ATLER USR SCOTT

  DEFAULT ROLE ALL

   ALTER USER SCOTT DEFAULT ROLE ALL EXCEPT 角色名

   ALTER USER SCOTT  DEFAULT ROLE NONE

  六 打开和关闭角色 :

   SET ROLE 名称

   SET ROLE IDENTIFIED BY 口令 ( 建立角色时 带口令 )

   SET  ROLE NONE

  七 删除角色

  DROP ROLE 名称

  八 信息获取

  DBA_ROLE:

  DBA_ROLE_PRIVS:

  九 如何向角色里加权限 :

  GRANT 权限 TO 角色名

  REVOKE 权限 FROM 角色名

  角色 : 不能跟用户名重复

   ROLE 的 ALTER 和其他对象的 ALTER 不一样 ROLE 的 ALTER 不能修改 ROLE 的内容 只可以修改角色的认证方式

   如何创建数据库连接 database link

  如果服务器的初始化参数中 global_names 的值为 TRUE 那么就要求你创建的连接名称必须与 SID 相同 如果改成 FALSE 就可以按如下的方式创建了

  create public database link link_name connect to user_name identified by passwd using connecting_string

  然后可以创建一个同义词为使用方便起见

  create synonyms synonyms_name for @ link_name

   回滚段的管理

   回滚段概述

  回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值) 回滚段的头部包含正在使用的该回滚段事务的信息 一个事务只能使用一个回滚段来存放它的回滚信息 而一个回滚段可以存放多个事务的回滚信息

   回滚段的作用

  事务回滚 当事务修改表中数据的时候 该数据修改前的值(即前影像)会存放在回滚段中 当用户回滚事务( ROLLBACK )时 ORACLE 将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值

  事务恢复 当事务正在处理的时候 例程失败 回滚段的信息保存在重做日志文件中 ORACLE 将在下次打开数据库时利用回滚来恢复未提交的数据

  读一致性 当一个会话正在修改数据时 其他的会话将看不到该会话未提交的修改 而且 当一个语句正在执行时 该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性) 当 ORACLE 执行 SELECT 语句时 ORACLE 依照当前的系统改变号( SYSTEMCHANGENUMBER SCN )来保证任何前于当前 SCN 的未提交的改变不被该语句处理 可以想象 当一个长时间的查询正在执行时 若其他会话改变了该查询要查询的某个数据块 ORACLE 将利用回滚段的数据前影像来构造一个读一致性视图

  事务级的读一致性

  ORACLE 一般提供 SQL 语句级( SQLSTATEMENTLEVEL )的读一致性 可以用以下语句来实现事务级的读一致性

  SET TRANSACTION READONLY

  或

  SET TANNSACTION SERIALIZABLE

  以上两个语句都将在事务开始后提供读一致性 需要注意的是 使用第二个语句对数据库的并发性和性能将带来影响

   回滚段的种类

  系统回滚段 当数据库创建后 将自动创建一个系统回滚段 该回滚段只用于存放系统表空间中对象的前影像

  非系统回滚段 拥有多个表空间的数据库至少应该有一个非系统回滚段 用于存放非系统表空间中对象的数据前影像 非系统回滚段又分为私有回滚段和公有回滚段 私有回滚段应在参数文件的 ROLLBACKSEGMENTS 参数中列出 以便例程启动时自动使其在线( ONLINE ) 公有回滚段一般在 OPS ( ORACLE 并行服务器)中出现 将在例程启动时自动在线

  DEFERED 回滚段 该回滚段在表空间离线( OFFLINE )时由系统自动创建 当表空间再次在线( ONLINE )时由系统自动删除 用于存放表空间离线时产生的回滚信息

   回滚段的使用

  分配回滚段 当事务开始时 ORACLE 将为该事务分配回滚段 并将拥有最少事务的回滚段分配给该事务 事务可以用以下语句申请指定的回滚段

  SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment

  事务将以顺序 循环的方式使用回滚段的区( EXTENTS ) 当当前区用满后移到下一个区 几个事务可以写在回滚段的同一个区 但每个回滚段的块只能包含一个事务的信息

  例如(两个事务使用同一个回滚段 该回滚段有四个区)

   事务在进行中 它们正在使用回滚段的第三个区

   当两个事务产生更多的回滚信息 它们将继续使用第三个区

   当第三个区满后 事务将写到第四个区 当事务开始写到一个新的区时 称为翻转( WRAP )

   当第四个区用满时 如果第一个区是空闲或非活动(使用该区的所有事务完成而没有活动的事务)的 事务将接着使用第一个区

  回滚段的扩张( EXTEND )

  当当前回滚段区的所有块用完而事务还需要更多的回滚空间时 回滚段的指针将移到下一个区 当最后一个区用完 指针将移到第一个区的前面 回滚段指针移到下一个区的前提是下一个区没有活动的事务 同时指针不能跨区 当下一个区正在使用时 事务将为回滚段分配一个新的区 这种分配称为回滚段的扩展 回滚段将一直扩展到该回滚段区的个数到达回滚段的参数 MAXEXTENTS 的值时为止

  回滚段的回收和 OPTIMAL 参数

  OPTIMAL 参数指明回滚段空闲时收缩到的位置 指明回滚段的 OPTIMAL 参数可以减少回滚段空间的浪费

   创建回滚段

  语法

  CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment

  [TABLESPACE tablespace]

  [STORAGE ([INITIAL integer[K|M]] [NEXT integer[K|M]]

  [MINEXTENTS integer]

  [MAXTENTS integer|UNLIMITED]

  [OPTIMAL integer[K|M]|NULL]) ]

  注

  回滚段可以在创建时指明 PRIVATE 或 PUBLIC 一旦创建将不能修改

  MINEXTENTS 必须大于等于

  PCTINCREASE 必须是

  OPTIMAL 如果要指定 必须大于等于回滚段的初始大小(由 MINEXTENTS 指定)

  建议

  一般情况下 INITIAL=NEXT

  设置 OPTIMAL 参数来节约空间的使用

  不要设置 MAXEXTENTS 为 UNLIMITED

  回滚段应创建在一个特定的回滚段表空间内

  CREATE ROLLBACK SEGMENT rbs

  TABLESPACE rbs

  STORAGE ( INITIAL K NEXT K MINEXTENTS

  MAXEXTENTS OPTIMAL K);

   回滚段的信息

  DROP ROLLBACK SEGMENT rbs ;

  查询回滚段的信息

  所用数据字典 DBA_ROLLBACK_SEGS

  可以查询的信息 回滚段的标识 (SEGMENT_ID) 名称 (SEGMENT_NAME) 所在表空间 (TABLESPACE_NAME) 类型 (OWNER) 状态 (STATUS)

  例

  SQL>SELECT segment_name tablespace_name owner status FROM dba_rollback_segs;

  回滚段的统计信息

  数据字典 V$ROLLNAME V$ROLLSTAT

  SELECT n name s extents s rssize s optsize s hwmsize s xacts s status

  FROM v$rollname n v$rollstat s

  WHERE n usn=s usn;

  回滚段的当前活动事务

  数据字典 V$SESSION V$TRANSACTION

  SQL>SELECT s username t xidusn t ubafil t ubablk t used_ublk

  FROM v$session s v$transaction t

  WHERE s saddr=t ses_addr;

   函数用法

   时间函数

  select add_months(sysdate ) from dual

  select last_day(sysdate) from dual

  select next_day(sysdate FRIDAY ) from dual

  select months_beeen( MAY add_months(sysdate )) duration from dual

   字符函数

  select chr( ) from dual

  select concat( asf af ) /  列 || 列   from dual

  select initcap( sample ) from dual

  select lower( SSD )/upper( ssd ) from dual

  select lpad( myname * ) from dual  左边填充指定长度的字符

  select rpad( myname * ) from dual

  select ltrim( myname m ) /rtrim( myname m )  from dual

  select replace( myname yn * ) from dual

  select substr( myname ) from dual

  select instr( myname n ) from dual

  select length( myname ) from dual

   转换函数

  select to_char(sysdate)|| Is good day! from dual

  select to_number( ) from dual

  select least( ) / greatest( ) from dual

  select user from dual 查询当前用户

   decode 函数

  select decode(columnname first second other ) from table_name

   如果 columnname 等于 那么取 first 值 如果等于 取 second 否则等于 other 实现逻辑控制

   连接的用法

  select last_name d dept_id

  from employees e

  RIGHT OUTER JOIN departments d

  ON (e department_id = d department_id);

   常见问题

   .字符集问题

  错误现象

   有的时候 服务器数据先导出 重装服务器 再导入数据 结果 发生数据查询成 ???

   有时 服务器设置就有问题 字符集设成单字节了

  错误原因

  一般 是因为字符集设置不对照成的 如果两台服务器上的字符设置不同就造成数据不能通讯 那么最简单的方法就是将字符集设置成一样的格式

  解决方法

   检查服务器上 Oracle 数据库的字符集

  SQL> conn sys/change_on_install

  连接成功

  SQL> desc props$

  列名                            可空值否    类型

  

  NAME                            NOT NULL VARCHAR ( )

  VALUE$                                   VARCHAR ( )

  MENT$                                 VARCHAR ( )

  SQL> col value$ format a

  SQL> select name value$ from props$;

  NAME                           VALUE$

  

  DICT BASE                     

  NLS_LANGUAGE                   AMERICAN

  NLS_TERRITORY                  AMERICA

  NLS_CURRENCY                   $

  NLS_ISO_CURRENCY               AMERICA

  NLS_NUMERIC_CHARACTERS        

  NLS_DATE_FORMAT                DD MON YY

  NLS_DATE_LANGUAGE              AMERICAN

  NLS_CHARACTERSET               ZHS GBK

  NLS_SORT                       BINARY

  NLS_CALENDAR                   GREGORIAN

  NLS_RDBMS_VERSION             

  GLOBAL_DB_NAME                 ORACLE WORLD

  EXPORT_VIEWS_VERSION          

  查询到 记录

  NLS_CHARACTERSET 这个参数应该是 ZHS GBK 如不是 改为它

  SQL*Plus 中修改方法

  SQL> update props$ set value$= 新字符集 where name= NLS_CHARACTERSET ;

  操作系统中修改方法

  connect internal

  alter database ORCL character set ZHS GBK;

  alter database ORCL national character set ZHS GBK;

   检查操作系统级 Oracle 汉字显示的字符集

  运行 regedit 定位到

  HKEY_LOCAL_MACHINE\\SOFARE\\ORACLE

  找到以下字符串

  NLS_LANG

  检查是否以下内容 如不是 改之

  SIMPLIFIED CHINESE_CHINA ZHS GBK

   .回滚段太旧问题

   .备份与恢复

  一 非归档备份

  执行 testsql txt

  关闭系统 利用 oracle backup manager 备份数据

  打开数据库 执行 testsql txt 关闭数据库系统

  删除 ts_test 文件

  重新启动数据库时出现 错误 处理方法

   利用 oracle recovery manager 恢复数据

   :alter database datafile d:\\orant\\database\\ts_test offline drop;

  然后打开数据库即可(丢失 ts_test 文件内容)

  注意

   :alter database datafile d:\\orant\\database\\ts_test offline 只能在 archivelog

  模式下时才可使用 删除文件后 建议把表空间删除后重建

   : 删除表空间 drop tablespace ts_test including contents;

   : 重建表空间

  二 丢失没有回滚段的非 SYSTEM 数据文件(在归档模式下运行)

  A 使用 recover database 恢复 要求数据库安装但没有打开 即脱机备份

  B 使用 recover datafile 恢复 要求数据文件要脱机但数据库是打开的

  C 使用 recover tablespace 恢复 要求表空间脱机且数据库是打开的

  问题产生过程

  svrmgrl

  connect internal

  insert into myinfo values( myname no );

  

  mit;

  alter system switchlogfile;

  shutdown abort

  ( 删除 ts_test 文件 拷贝旧的 ts_test 文件 )

  startup

  启动时出现如下错误

  ora :file needs media recovery

  ora :data file :d:\\orant\\database\\ts_test

  恢复方法 A

   : startup mount

   : recover database;

  ( 提示恢复方式 选择 auto 即可 )

   : alter database open

  恢复方法 B

   :startup mount;

   : alter database archivelog;

   : alter database datafile d:\\orant\\database\\ts_test offline

   : alter database open;

   : recover datafile d:\\orant\\database\\ts_test

  ( 提示恢复方式 选择 auto 即可 )

   : alter database datafile d:\\orant\\database\\ts_test online

  恢复方法 C

   : startup mount;

   : alter database archivelog;

   : alter database open;

  ( 提示出现 ora ora 错误 )

   : alter database datafile d:\\orant\\database\\ts_tes offline;

   : alter database open;

   : alter tablespace ts_test offline;

   : recover tablespace ts_test;

  ( 提示恢复方式 选择 auto 即可 )

   : alter tablespace ts_test online;

  三 丢失有回滚段的非 SYSTEM 数据文件

  如果系统含有其他的回滚段 处理方法等同于非回滚段的处理方法 如果没有其他回滚段

  则需要先建立回滚段信息

  产生过程

   : svrmgr

   : connect internal

   : create table test(s number) tablespace ts_test

   : select * from test;

  ( 结果为空 )

   : set transaction use rollback segment tr_rbs;

  (tr_rbs 必须为 online)

   shutdown

   : 删除 tr_rbs 对应的数据文件 然后拷贝旧的文件到当前目录下

   重新启动数据库时出现错误

  ora :file needs media recovery

  ora :data file :d:\\orant\\database\\ts_rbs

  恢复方法

   svrmgr

   : connect internal

   : startup mount

   : alter database datafile d:\\orant\\database\\ts_rbs offline;

   : alter database open;

   : create rollback segment temp tablespace system;

   : create rollback segment temp tablespace system;

   : alter rollback segment temp online;

   : alter rollback segment temp online;

   : select * from test;

  错误信息 :ora :file cannot be read at this time

  ora_ :data file d:\\orant\\database\\ts_rbs

   : recover tablespace tr_rbs

   : select * from test;

  错误信息 等同

   alter tablespace ts_rbs online;

   : select * from test

  提示信息 没有数据

   : alter rollabck segment tr_rbs online;

   : alter rollback segment temp offline;

   : alter rollback segment temp offline;

   : drop rollback segment temp ;

   : drop rollback segment temp ;

  恢复方法也可采用文件恢复的方式进行 处理方法与情况 处理方法等同

  四 丢失未归档的联机日志文件

  产生过程

   shutdown abort

   : 删除日志文件 ( 可从 v$logfile 得到日志文件信息 )

   : 拷贝原日志文件信息

  恢复过程 :

   startup mount

   : recover database until cancel;

   : alter database open resetlogs;

   : shutdown

  说明 recover database until change 或 recover database until time 等方法恢复

  五 热备份期间的数据库崩溃

  产生过程

   : connect internal

   : startup

   : archive log list( 处于归档状态并且自动归档为 enabled)

   : alter tablespace ts_test begin backup;

   : host

  ( 备份数据文件 如果有多个数据文件 所有数据文件都做备份 )

   : create table test(c number) tablespace ts_test;

   : insert into test values( );

   : mit;

   : alter system switch logfile;

   : shutdown abort( 用 shutdown 提示有备份文件 不许 shutdown)

  完成以上工作后 用 startup 命令启动数据时出现 ora 和 ora 错误

  恢复方法 A:

   : startup mount

   : alter database datafile d:\\orant\\database\\ts_test end backup;

   : alter database datafile d:\\orant\\database\\ts_test end backup;

   : alter database open;

   : select * from test;( 可看到原来已经插入的数据 恢复完成 )

  恢复方法 B:

   : 删除数据文件 del d:\\orant\\database\\ts_test 与 ts_test

   : 拷贝原来的数据文件 ( 即第 步拷贝的数据 )

   : alter database datafile d:\\orant\\database\\ts_test end backup;

  alter database datafile d:\\orant\\database\\ts_test end backup;

   : recover database

   : alter database open;

   : select * from test;( 可看到原来已经插入的数据 恢复完成 )

  说明 当数据库打开时 出现 ora 与 ora 错误 无法判断是由于数据文件丢失或备份引起的

  错误 如果想查询是否处于热备份 可查看数据字典 select file# status from v$backup

  六 数据文件丢失

  产生过程

   : connect internal

   : startup

   : archive log list( 处于归档状态并且自动归档为 enabled)

   : 删除一个数据文件 ( 表空间的一个文件 ) 假设为 d:\\orant\\database\\ts_test

  恢复方法

   : startup mount

   : alter database create datafile d:\\orant\\database\\ts_test

   : recover datafile d:\\orant\\database\\ts_test

   : alter database open;

   : select * from test;( 测试数据 恢复已完成 )

   不能登陆 OEM ( Oracle 的企业管理器)

  这是需要首先创建一个资料库 你提供数据库的帐号 然后选择一个表空间 资料库创建完毕用工具登陆 OEM 初始密码 sysman/oem_temp 提示你修改然后就 OK 了

   提示凭证索引集失败

  将 Sqlnet ora 文件中的验证方式屏蔽掉

   参数配置

         查看基本信息

  显示数据库的有关信息

  SELECT * from v$database

  显示实例的信息

  select * from v$instance

  显示所有的参数设置

  select * from v$parameter

  显示版本信息

  select * from v$version

  在 SQLPLUS 下查看一些基本的参数

  show parameter 参数名称

  SELECT name FROM v$parameter WHERE name LIKE %control% ;

   基本全局参数及含义

  sga

  系统全局区( SGA )是一个分配给 Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段

  主要包括数据库高速缓存 (the database buffer cache)

  重演日志缓存( the redo log buffer )

  共享池( the shared pool )

  数据字典缓存( the data dictionary cache )以及其它各方面的信息

  db_block_buffers

   数据高速缓冲区

   访问过的数据都放在这一片内存区域 该参数越大 Oracle 在内存中找到相同数据的可能性就越大 也即加快了查询速度

   db_block_buffers 以块为单位 假如 DB_BLOCK_SIZE= K db_block_buffers= 则占用内存 = * K= K

  share_pool_size

   SQL 共享缓冲池

   该参数是库高速缓存和数据字典的高速缓存

  log_buffer

   重演日志缓冲区

  sort_area_size

   排序区

  processes

   同时连接的进程数

  global_names

   如果 数据库链路名 和它所要连接的 数据库 拥有相同的名字 则设置 global_names = TRUE 否则 设置 global_names = FALSE

  db_block_size

   数据库块大小

   Oracle 默认块为 KB 太小了 因为如果我们有一个 KB 的数据 则 KB 块的数据库要读 次盘 才能读完 而 KB 块的数据库只要 次就读完了 大大减少了 I/O 操作

   数据库安装完成后 就不能再改变 db_block_size 的值了 只能重新建立数据库并且建库时 要选择手工安装数据库

  open_links

   同时打开的链接数

  dml_locks

   用户一次可对表设定锁的最大数目

   如果有三个用户修改6个表 则需18个 DML 锁来实现并行操作 如果设定 DML_LOCKS 不够大 操作时执行将中断 你可以通过你的应用程序的操作规模和最大的并行使用的用户数来估算系统所需要的 DML_LOCKS 的值 但该值的大小对数据库的其他性能没有影响 所以一般都把它设得很大 远超过实际中可能达到的值 如果在系统运行中经常发生表锁死的现象 就应该考虑加大该值

  open_cursors

   打开光标数

   这个参数可以同时被每个用户进程拥有 这个参数的最大值依操作系统不同而不同

   在创建一个包含很多表的合成视图时 如果此参数很小 则视图创建会不成功

  dbwr_io_slaves

   后台写进程数

   启动或者停止Oracle

   startup nomount

  非安装启动 这种方式启动下可执行 重建控制文件 重建数据库

  读取 init ora 文件 启动 instance 即启动 SGA 和后台进程 这种启动只需要 init ora 文件

   startup mount dbname

  安装启动 这种方式启动下可执行

  数据库日志归档

  数据库介质恢复

  使数据文件联机或脱机

  重新定位数据文件 重做日志文件

  执行 nomount 然后打开控制文件 确认数据文件和联机日志文件的位置

  但此时不对数据文件和日志文件进行校验检查

   startup open dbname

  先执行 nomount 然后执行 mount 再打开包括 Redo log 文件在内的所有数据库文件

  这种方式下可访问数据库中的数据

   startup 等于以下三个命令

  startup nomount

  alter database mount

  alter database open

   startup restrict

  约束方式启动

  这种方式能够启动数据库 但只允许具有一定特权的用户访问

  非特权用户访问时 会出现以下提示

  ERROR

  ORA : ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用

   startup force

  强制启动方式

  当不能关闭数据库时 可以用 startup force 来完成数据库的关闭

  先关闭数据库 再执行正常启动数据库命令

   startup pfile= 参数文件名

  带初始化参数文件的启动方式

  先读取参数文件 再按参数文件中的设置启动数据库

  例 startup pfile=E:\\Oracle\\admin\\oradb\\pfile\\init ora

   startup EXCLUSIVE

  有三种关闭方式

   shutdown normal

  正常方式关闭数据库

   shutdown immediate

  立即方式关闭数据库

  在 SVRMGRL 中执行 shutdown immediate 数据库并不立即关闭

  而是在 Oracle 执行某些清除工作后才关闭(终止会话 释放会话资源)

  当使用 shutdown 不能关闭数据库时 shutdown immediate 可以完成数据库关闭的操作

   shutdown abort

  直接关闭数据库 正在访问数据库的会话会被突然终止

  如果数据库中有大量操作正在执行 这时执行 shutdown abort 后 重新启动数据库需要很长时间

cha138/Article/program/Oracle/201311/16523

相关参考

知识大全 ORACLE DBA常用SQL脚本工具-管理篇(1)

ORACLEDBA常用SQL脚本工具-管理篇(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 关于Oracle一些常用脚本的汇总(2)

关于Oracle一些常用脚本的汇总(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  碎片检查

知识大全 Windows下的Oracle导出脚本

Windows下的Oracle导出脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  导出脚本内

知识大全 oracle设置环境变量脚本

  #!/bin/bash  #centosoracleg前期安装环境检查脚本  #将所需要安装的包(rpm格式)与脚本放在一个目录下  ss=$PWD  cd$ss  rpmivh*rpm  #OR

知识大全 Oracle冷备和热备脚本

Oracle冷备和热备脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  冷备脚本  setfe

知识大全 在Linux下的Oracle 用脚本建库实录

在Linux下的Oracle用脚本建库实录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先写

知识大全 Oracle导出SQL脚本的spool实现

Oracle导出SQL脚本的spool实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面介

知识大全 Oracle 数据库表空间容量调整脚本

Oracle数据库表空间容量调整脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  (表空间缩容

知识大全 使用 Window 脚本宿主自动化 Oracle 工具

使用Window脚本宿主自动化Oracle工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随

知识大全 Oracle10g在solaris10下的自动运行脚本

Oracle10g在solaris10下的自动运行脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧