概覽:
1.Oracle 內存管理
1.1內存自動管理
11g:AMM 10g:ASMM
1.2修改sga大小
SQL> alter system set sga_target=1M; System altered. SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 748M sga_target big integer 4M --說明粒度最小為4M.
1.3修改pga大小
SQL> alter system set pga_aggregate_target = 1M; System altered. SQL> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 1M
1.4查看當前數據庫內存設定情況
SQL> show parameter memory NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ hi_shared_memory_address integer 0 memory_max_target big integer 748M memory_target big integer 748M shared_memory_address integer 0 SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 748M sga_target big integer 4M SQL> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 1M
此時,sga和pga自動調整,sga_target最小為4M,pga_aggregate_target最小為1M;
如果,pga_aggregate_target = 0,sga_target = 0,則sga和pga也是自動調整,sga占用60%,pga占用40%。
2.Oracle 數據庫啟動關閉
2.1Oracle監聽的啟動
SQL>!lsnrctl start
2.2Oracle數據庫正常啟動
SQL>startup
2.3Oracle數據庫正常關閉
SQL>shutdown immediate
3.Oracle 參數文件
3.1參數文件pfile和spfile互相切換
需要重啟庫才可以切換。 startup默認以spfile參數文件啟動庫;startup pfile='$ORACLE_HOME/dbs/initjyzhao.ora'以pfile參數文件啟動庫。
3.2通過spfile創建pfile
SQL> create pfile from spfile; File created. SQL> ! [oracle@JY-DB ~]$ cd $ORACLE_HOME/dbs [oracle@JY-DB dbs]$ ls -lh total 11M -rw-rw----. 1 oracle oinstall 1.6K Jun 17 21:57 hc_jyzhao.dat -rw-r--r--. 1 oracle oinstall 2.8K May 15 2009 init.ora -rw-r--r--. 1 oracle oinstall 1.1K Jun 17 22:00 initjyzhao.ora -rw-r-----. 1 oracle oinstall 24 Apr 8 19:40 lkJYZHAO -rw-r-----. 1 oracle oinstall 1.5K Apr 8 21:17 orapwjyzhao -rw-r-----. 1 oracle oinstall 11M Jun 17 20:40 snapcf_jyzhao.f -rw-r-----. 1 oracle oinstall 3.5K Jun 17 21:57 spfilejyzhao.ora [oracle@JY-DB dbs]$ initjyzhao.ora 是剛創建的pfile參數文件。
3.3通過pfile創建spfile
SQL> startup pfile='$ORACLE_HOME/dbs/initjyzhao.ora'; ORACLE instance started. Total System Global Area 780824576 bytes Fixed Size 2232432 bytes Variable Size 629149584 bytes Database Buffers 142606336 bytes Redo Buffers 6836224 bytes Database mounted. Database opened. SQL> create spfile from pfile; File created.
4.Oracle 控制文件
4.1備份控制文件到trace
SQL> alter database backup controlfile to trace as '/tmp/control.ctl'; Database altered.
4.2重建控制文件
根據/tmp/control.ctl文件的內容提取重建控制文件的sql。
5.Oracle redo日志文件
5.1添加redo組
SQL> alter database add logfile group 5 ('/home/oradata/JYZHAO/onlinelog/redo05a.log','/home/oradata/JYZHAO/onlinelog/redo05b.log') size 50M; Database altered.
5.2刪除redo組
SQL> alter database drop logfile group 5; Database altered.
5.3從redo組添加文件
SQL> alter database add logfile member '/home/oradata/JYZHAO/onlinelog/redo05c.log' to group 5; Database altered.
5.4從redo組刪除文件
SQL> alter database drop logfile member '/home/oradata/JYZHAO/onlinelog/redo05c.log'; Database altered.
5.5修改redo文件大小
刪除老日志組,新建日志組。
參見隨筆:http://www.cnblogs.com/jyzhao/p/3781016.html
6.Oracle undo表空間管理
6.1新建undo表空間
SQL> create undo tablespace undo_jingyu datafile '/home/oradata/JYZHAO/datafile/undo_jingyu01.dbf' size 30G autoextend off; Tablespace created.
6.2切換undo表空間
SQL> set linesize 150 SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1 SQL> alter system set undo_tablespace=undo_jingyu; System altered. SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDO_JINGYU
6.3ORACLE在線切換undo表空間其他注意事項:
參見轉載文章:http://www.cnblogs.com/jyzhao/articles/3793643.html
6.4undo表空間的真實使用情況:
SELECT DISTINCT STATUS, SUM(BYTES)/1024/1024 "Size(MB)", COUNT(*) FROM DBA_UNDO_EXTENTS GROUP BY STATUS;
7.Oracle 普通表空間和數據文件
7.1新建表空間
SQL> create tablespace dbs_d_jingyu datafile '/home/oradata/JYZHAO/datafile/dbs_d_jingyu01.dbf' size 20G autoextend off; Tablespace created.
7.2表空間增加數據文件
SQL> alter tablespace dbs_d_jingyu add datafile '/home/oradata/JYZHAO/datafile/dbs_d_jingyu02.dbf' size 30G autoextend off; Tablespace altered.
7.3表空間刪除數據文件
SQL> alter tablespace dbs_d_jingyu drop datafile '/home/oradata/JYZHAO/datafile/dbs_d_jingyu02.dbf'; Tablespace altered.
7.4修改數據文件的大小
SQL> alter database datafile '/home/oradata/JYZHAO/datafile/dbs_d_jingyu01.dbf' resize 30G; Database altered.
7.5刪除表空間及其包含的數據文件
SQL> drop tablespace dbs_d_jingyu including contents and datafiles; Tablespace dropped.
8.Oracle 臨時表空間
8.1新建臨時表空間
SQL> create temporary tablespace temp_jingyu tempfile '/home/oradata/JYZHAO/datafile/temp_jingyu01.tmp' size 30G; Tablespace created.
8.2臨時表空間增加臨時文件
SQL> alter tablespace temp_jingyu add tempfile '/home/oradata/JYZHAO/datafile/temp_jingyu02.tmp' size 30G; Tablespace altered.
8.3切換數據庫臨時表空間為temp_jingyu
SQL> col property_value for a30 SQL> set linesize 180 SQL> select property_value, property_name from database_properties where property_name like '%TABLESPACE'; PROPERTY_VALUE PROPERTY_NAME ------------------------------ ------------------------------ TEMP DEFAULT_TEMP_TABLESPACE USERS DEFAULT_PERMANENT_TABLESPACE SQL> alter database default temporary tablespace temp_jingyu; Database altered. SQL> select property_value, property_name from database_properties where property_name like '%TABLESPACE'; PROPERTY_VALUE PROPERTY_NAME ------------------------------ ------------------------------ TEMP_JINGYU DEFAULT_TEMP_TABLESPACE USERS DEFAULT_PERMANENT_TABLESPACE
9.Oracle 鎖管理
9.1確定鎖進程的sid
select t2.username, t2.sid, t2.serial#, t2.logon_time from v$locked_object t1, v$session t2 where t1.session_id = t2.sid order by t2.logon_time;
9.2通過sid獲得它的sql,看是哪一條sql導致鎖的占用
SELECT sql_text FROM v$sql t1, v$session t2 WHERE t1.address = t2.sql_address AND t2.sid = &sid; --&sid 就是上一條sql中查到的sid
9.3如有記錄則表示有lock,記錄下SID和serial# ,執行下面的sql,即可解除鎖
alter system kill session 'SID,serial#';
10.Oracle用戶管理
10.1新建用戶
SQL> create user jingyu identified by jyzhao default tablespace dbs_d_jingyu; User created.
10.2授權
SQL> conn /as sysdba Connected. SQL> grant connect, resource to jingyu; Grant succeeded. SQL> grant dba to jingyu; Grant succeeded.
查看用戶當前擁有的角色:
SQL> conn jingyu/jyzhao Connected. SQL> select * from user_role_privs; USERNAME GRANTED_ROLE ADM DEF OS_ ------------------------------ ------------------------------ --- --- --- JINGYU CONNECT NO YES NO JINGYU DBA NO YES NO JINGYU RESOURCE NO YES NO
10.3密碼永不過期
SQL> alter profile default limit PASSWORD_LIFE_TIME unlimited; Profile altered.
10.4錯誤密碼不鎖定
SQL> alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited; Profile altered.
11.Oracle等待事件
select event, count(1) from v$session group by event order by 2 desc;
select event, WAIT_CLASS, count(1) from v$session group by event, WAIT_CLASS order by 2,3 desc;
關於Oracle的等待事件可參見隨筆:Oracle Tuning 基礎概述01 - Oracle 常見等待事件