熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle管理及常用基礎腳本

2013-11-13 12:45:21  來源: Oracle 

   性能監控

   檢測數據庫中的事件和等待

  SELECT event total_waits total_timeoutstime_waited average_wait

  FROM v$system_event

   查詢會話中的事件和等待時間

  select sid event total_waitsaverage_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 namespacepinsreloadsinvalidations

  from v$librarycache;

   回滾段的爭用情況

  select name waits gets waits/gets Ratio

  from v$rollstat a v$rollname b

  where ausn = busn;

   監控表空間的 I/O 比例

  select dftablespace_name namedffile_name filefphyrds pyr

  fphyblkrd pbrfphywrts pyw fphyblkwrt pbw

  from v$filestat f dba_data_files df

  where ffile# = dffile_id

  order by dftablespace_name;

   監控文件系統的 I/O 比例

  select substr(afile#) # substr(aname) Name

  astatus abytes bphyrds bphywrts

  from v$datafile a v$filestat b

  where afile# = bfile#;

   在某個用戶下找所有的索引

  select user_indexestable_name user_indexesindex_nameuniqueness column_name

  from user_ind_columns user_indexes

  where user_ind_columnsindex_name = user_indexesindex_name

  and user_ind_columnstable_name = user_indexestable_name

  order by user_indexestable_type user_indexestable_name

  user_indexesindex_name column_position;

   監控 SGA 中字典緩沖區的命中率

  select parameter getsGetmisses 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(pinhitsreloads)/sum(pins) hit radiosum(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(getsmisses/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 getssum(getmisses) dictionary cache get misses

  from v$rowcache

   找 ORACLE 字符集

  select * from sysprops$ 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_namecount(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_nameblock_idbytesblocksfree space segment_name from dba_free_space

  union all

  select tablespace_nameblock_idbytesblockssegment_name from dba_extents;

  select * from ts_blocks_v;

  select tablespace_namesum(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_namesum(bytes)count(*) ext_quan from dba_extents where

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

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

  group by segment_name;

   找使用 CPU 多的用戶 session

   是 cpu used by this session

  select asidspidstatussubstr(aprogram) progaterminalosuservalue// value

  from v$session av$process bv$sesstat c

  where cstatistic#= and csid=asid and apaddr=baddr order by value desc;

   空間管理

   察看數據庫的大小和空間使用情況

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

  SQL> select bfile_id    文件 ID

  btablespace_name   表空間

  bfile_name      物理文件名

  bbytes         總字節數

  (bbytessum(nvl(abytes)))     已使用

  sum(nvl(abytes))         剩余

  sum(nvl(abytes))/(bbytes)*   剩余百分比

  from dba_free_space adba_data_files b

  where afile_id=bfile_id

  group by btablespace_namebfile_namebfile_idbbytes

  order by btablespace_name

  /

  dba_free_space 表空間剩余空間狀況

  dba_data_files 數據文件空間占用情況

   查看現有回滾段及其狀態

  select segment_nameownertablespace_namesegment_idfile_idstatus from dba_rollback_segs;

   表空間大小

  select tablespace_namecount(*)sum(blocks)sum(bytes)//

  from dba_data_files

  group by tablespace_name;

   表空間使用情況

  select dftablespace_name 表空間名 totalspace 總空間 Mfreespace 剩余空間 Mround((freespace/totalspace)*) 使用率 %

  from  (select tablespace_nameround(sum(bytes)//) totalspace

  from dba_data_files

  group by tablespace_name) df

  (select tablespace_nameround(sum(bytes)//) freespace

  from dba_free_space

  group by tablespace_name) fs

  where dftablespace_name=fstablespace_name;

   刪除表空間

  select tnamedname from v$tablespace tv$datafile d where tname=DATA_HOST_A and tts#=dts#;alter tablespace DATA_HOST_A offline;

  drop tablespace DATA_HOST_A including contents;

   查看數據文件的位置

  select tablespace_namefile_idbytes//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(vsesusername) ORA_USER substr(osuser) OS_USER

  substR(sql_text) SQL_STMT

  from

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

  where

  vsorttablespace = TEMP and  vsortsqladdr=vsessql_address and vsqladdress=vsortsqladdr

  select tablespace_name extent_size total_extents used_extents free_extents max_used_size

  from  v$sort_segment;

   確定盤區和盤區內容及表或者空間的碎片程度

  select segment_nameexten from  dba_extents 確定盤區的內容

  desc dba_segments 確定段的內容

   返回了結果表明碎片的嚴重

  select segment_name tablespace_nameextentssegment_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:\sampledmp log=

  rows=n

  full=y  tables=()  owner=    三種導出方式

  imp userid/pwd@oracle_sid fromuser =( dssdwh) touser =(dssdwh) dwh file=sampledmp

   分區表的到導出 usertable_name:px  分區 px

  exp user_id/pwd@oracle_sid tables=(usertable_name:px)  file=sampledmp

   如何使數據庫運行於歸檔模式

   打開 iniora 文件

   修改文件內容

  log_archive_start = true

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

  log_archive_format = %%ORACLE_SID%%T%TS%SARC

   進入服務管理器輸入

  shutdown

  startup mount

  alter database archivelog

  alter database open

  此時數據庫運行與歸檔模式下可以查詢輸入

  archive log list

   如何做數據庫的熱備份和恢復

   要對數據庫做熱備份需要數據庫運行在歸檔模式下 :

    首先使表空間處於備份狀態

    拷貝數據文件

    使表空間回復到正常狀態

    進入 sqlplus 輸入

  alter tablespace users begin backup ;

  $ copy d:\oracle_home\usrora d:\backup\userdbf;

  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(bbb) as select aaa from a where =;

   如何查看當前日期

  SQL> select to_char(sysdateyyyymmddhh: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 bb from b group by bb;

   通過授權的方式來創建用戶

  SQL> grant connectresource 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] [nowelcome]

   如何使用操作系統認證

  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/initUora

  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 COMMIT

  AS

  SELECT sprod_id stime_idCOUNT(*) AS count_grpSUM(samount_sold) AS sum_dollar_sales

  COUNT(samount_sold) AS count_dollar_salesSUM(squantity_sold) AS sum_quantity_sales

  COUNT(squantity_sold) AS count_quantity_sales

  FROM sales s

  GROUP BY sprod_id stime_id;    然後創建視圖

   分區表的創建更改和刪除等管理

   創建表空間

  create tablespace space_name datafile /oradata/space_namedbf 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_qdmp

   IMPORT 分區

   ORACLE 的 IMPORT 工具可在表的分區以及導入數據例如在 用戶要查看 年的數據 DBA 必須導入 年的數據使之在線操作如下 STEP 建立表的 年的四個表空間和相應的分區參照( STEP 導入數據

  oracle$ imp sales/sales_password FILE =sales_qdmp

  TABLES = (sales:sales_q) IGNORE=y

   選擇指定的分區來查詢結果

  select * from mx_xsmx partition (xsmx_) where DeptNo between 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    

   索引的基本知識

  一索引的分類

   邏輯上

  單列索引 復合索引   唯一索引 非唯一索引

   物理上

  BTREE OR BITMAP

  BTREE ( 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\UTLPWDMGSQL

   如何創建口令機制

  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 授權 : 允許特定的用戶對特定的一類對象做特定的操作 可操作的對象 :TABLESINDEXESPROCEDURESSEGMENTS; 系統授權是對某一類對象

  GRANT SELECT ANY TABLE TO ZT

   OBJECT( 對象授權 ):

  A 允許一個特定的用戶對一個特定的對象做特定的操作 對象 :TABLEINDEXSEGMENT

  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 SESSIONSELECT ANY TABLE TO [USERNAME|PUBLIC|ROLE]

   帶有轉授權限 :

  A 轉授 : 當 A 用戶得到系統授權後 如果可以將這個權限授給別人 稱轉授

  GRANT CREATE SESSIONSELECT 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

  ZTOLM 也有了

  四 SYSDBA 和 SYSOPER 系統權限

    SYSOPER:SYSTEM OPERATOR: 系統操作員

  STARTUPSHUTDOWN;

  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 依照當前的系統改變號( SYSTEMCHANGENUMBERSCN )來保證任何前於當前 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_nametablespace_nameownerstatus FROM dba_rollback_segs;

  回滾段的統計信息

  數據字典 V$ROLLNAMEV$ROLLSTAT

  SELECT nnamesextentssrssizesoptsizeshwmsizesxactssstatus

  FROM v$rollname nv$rollstat s

  WHERE nusn=susn;

  回滾段的當前活動事務

  數據字典 V$SESSIONV$TRANSACTION

  SQL>SELECT susernametxidusntubafiltubablktused_ublk

  FROM v$session sv$transaction t

  WHERE ssaddr=tses_addr;

   函數用法

   時間函數

  select add_months(sysdate) from dual

  select last_day(sysdate) from dual

  select next_day(sysdateFRIDAY) from dual

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

   字符函數

  select chr() from dual

  select concat(asfaf) /  列 || 列   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(mynamem) /rtrim(mynamem)  from dual

  select replace(mynameyn*) from dual

  select substr(myname) from dual

  select instr(mynamen) 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(columnnamefirstsecondother ) from table_name

   如果 columnname 等於 那麼取 first 值如果等於 取 second 否則等於 other 實現邏輯控制

   連接的用法

  select last_name ddept_id

  from employees e

  RIGHT OUTER JOIN departments d

  ON (edepartment_id = ddepartment_id);

   常見問題

   .字符集問題

  錯誤現象

   有的時候服務器數據先導出重裝服務器再導入數據結果發生數據查詢成 ???

   有時服務器設置就有問題字符集設成單字節了

  錯誤原因

  一般是因為字符集設置不對照成的 如果兩台服務器上的字符設置不同就造成數據不能通訊那麼最簡單的方法就是將字符集設置成一樣的格式

  解決方法

   檢查服務器上 Oracle 數據庫的字符集

  SQL> conn sys/change_on_install

  連接成功

  SQL> desc props$

  列名                            可空值否    類型

  

  NAME                            NOT NULL VARCHAR()

  VALUE$                                   VARCHAR()

  COMMENT$                                 VARCHAR()

  SQL> col value$ format a

  SQL> select namevalue$ from props$;

  NAME                           VALUE$

  

  DICTBASE                     

  NLS_LANGUAGE                   AMERICAN

  NLS_TERRITORY                  AMERICA

  NLS_CURRENCY                   $

  NLS_ISO_CURRENCY               AMERICA

  NLS_NUMERIC_CHARACTERS        

  NLS_DATE_FORMAT                DDMONYY

  NLS_DATE_LANGUAGE              AMERICAN

  NLS_CHARACTERSET               ZHSGBK

  NLS_SORT                       BINARY

  NLS_CALENDAR                   GREGORIAN

  NLS_RDBMS_VERSION             

  GLOBAL_DB_NAME                 ORACLEWORLD

  EXPORT_VIEWS_VERSION          

  查詢到 記錄

  NLS_CHARACTERSET 這個參數應該是 ZHSGBK 如不是改為它

  SQL*Plus 中修改方法

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

  操作系統中修改方法

  connect internal

  alter database ORCL character set ZHSGBK;

  alter database ORCL national character set ZHSGBK;

   檢查操作系統級 Oracle 漢字顯示的字符集

  運行 regedit 定位到

  HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

  找到以下字符串

  NLS_LANG

  檢查是否以下內容如不是改之

  SIMPLIFIED CHINESE_CHINAZHSGBK

  .回滾段太舊問題

   .備份與恢復

  一非歸檔備份

  執行 testsqltxt

  關閉系統利用 oracle backup manager 備份數據

  打開數據庫執行 testsqltxt 關閉數據庫系統

  刪除 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(mynameno);

  

  commit;

  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;

  ( 提示出現 oraora 錯誤 )

  : 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();

  : commit;

  : 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 了

   提示憑證索引集失敗

  將 Sqlnetora 文件中的驗證方式屏蔽掉

   參數配置

        查看基本信息

  顯示數據庫的有關信息

  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

  非安裝啟動這種方式啟動下可執行重建控制文件重建數據庫

  讀取 initora 文件啟動 instance 即啟動 SGA 和後台進程這種啟動只需要 initora 文件

   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\initora

   startup EXCLUSIVE

  有三種關閉方式

   shutdown normal

  正常方式關閉數據庫

   shutdown immediate

  立即方式關閉數據庫

  在 SVRMGRL 中執行 shutdown immediate 數據庫並不立即關閉

  而是在 Oracle 執行某些清除工作後才關閉(終止會話釋放會話資源)

  當使用 shutdown 不能關閉數據庫時 shutdown immediate 可以完成數據庫關閉的操作

   shutdown abort

  直接關閉數據庫正在訪問數據庫的會話會被突然終止

  如果數據庫中有大量操作正在執行這時執行 shutdown abort 後重新啟動數據庫需要很長時間

  在 i 中在命令行輸入 svrmgrl 而在 i 中是 dgmgrl 然後 connect username/password 現在已經廢除了 internal 的內部連接


From:http://tw.wingwit.com/Article/program/Oracle/201311/16523.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.