1. 程式人生 > >oracle課堂隨筆--第十六天

oracle課堂隨筆--第十六天

tlist 重新 ron mat 打開數據庫 事務 主動 font export

實例管理

監聽

啟動監聽:

$ netstat -tlnp | grep 1521

$ lsnrctl

LSNRCTL> help

$ lsnrctl status

$ lsnrctl stop

$ netstat -tln | grep 1521

快速動態註冊:(可選)

$ sqlplus / as sysdba

SQL> alter system register;

$ lsnrctl status

em

啟動EM:

$ netstat -tlnp | grep 1158

$ echo $ORACLE_SID

orcl

$ echo $ORACLE_UNQNAME

orcl

如果沒有設置ORACLE_UNQNAME:

$ export ORACLE_UNQNAME=orcl

$ vi .bash_profile

export ORACLE_UNQNAME=orcl

$ . .bash_profile

確保主機名正常解析:

$ cat /etc/hosts

$ emctl status dbconsole

$ emctl stop dbconsole

$ emctl start dbconsole

查看oem的端口:

$ find /u01 -name portlist.ini

重新配置em:

$ emca

$ emca -deconfig dbcontrol db 刪掉

$ emca -config dbcontrol db 重新配置

啟動實例:

$ ls $ORACLE_HOME/dbs/spfileorcl.ora

SQL> shutdown immediate

SQL> startup nomount 初始化

SQL> select status from v$instance; 查看實例 可以查詢內存中信息

SQL> select * from v$sgainfo;

SQL> select * from hr.employees;

SQL> conn hr/hr

SQL> startup mount或alter database mount; 到了nomount階段用

SQL> show parameter control_files

SQL> select status from v$instance;

SQL> select * from v$controlfile;

SQL> select name from v$datafile; 動態視圖 都是來自控制文件 因為還沒打開數據庫(數據文件)

SQL> select * from hr.employees;

SQL> conn hr/hr

SQL> startup或alter database open; 根據控制文件記錄 逐一定位數據文件

SQL> select status from v$instance;

SQL> select * from hr.employees;

SQL> conn hr/hr

關閉數據庫:

SQL> shutdown normal 不連接新用戶 等待 不會主動關閉當前會話

SQL> shutdown transactional 不連接新用戶 等當前用戶完畢 沒有運行 就主動關閉會話 事務性關閉

SQL> shutdown immediate 立即關閉

SQL> shutdown abort

控制腳本:

$ vi /etc/oratab

$ vi $ORACLE_HOME/bin/dbstart

$ vi $ORACLE_HOME/bin/dbshut

重啟數據庫:

SQL> startup force

startup force = shutdown abort + startup

startup force mount = shutdown abort + startup mount

練習:

熟悉3個服務的啟動和關閉

參數管理

參數文件:

$ ls $ORACLE_HOME/dbs/spfileorcl.ora

預先備份:

$ cp spfileorcl.ora spfileorcl.ora.bak

不可以通過vi直接修改!

查看參數:

SQL> show parameter

SQL> select NAME, VALUE from v$parameter;

修改參數:

動態參數:立即生效

$ strings $ORACLE_HOME/dbs/spfileorcl.ora|grep resource_limit

SQL> show parameter RESOURCE_LIMIT

SQL> alter system set RESOURCE_LIMIT=true;

SQL> show parameter RESOURCE_LIMIT

$ strings $ORACLE_HOME/dbs/spfileorcl.ora|grep resource_limit

當前內存值改 寫入參數文件

不管靜態動態都是系統修改。

靜態參數:重啟後才能生效

$ strings $ORACLE_HOME/dbs/spfileorcl.ora|grep processes

*.processes=150

SQL> show parameter processes 值為150

SQL> alter system set processes=300 scope=spfile; 只改文件

SQL> show parameter processes 值為150

$ cat $ORACLE_HOME/dbs/spfileorcl.ora

*.processes=300

重啟數據庫,靜態參數修改生效:

SQL> shutdown immediate

SQL> startup

SQL> show parameter processes 值為300

動態

session級別修改參數:

SQL> select sysdate from dual;

SQL> alter session set nls_date_format=‘dd-mon rr‘;

SQL> select sysdate from dual; 只影響當前會話,不影響系統

SQL> conn / as sysdba

SQL> select sysdate from dual; 恢復默認設置

pfile/spfile格式轉換:

SQL> create pfile=‘/home/oracle/initorcl.ora‘ from spfile;

$ cat /home/oracle/initorcl.ora

$ mv $ORACLE_HOME/dbs/spfileorcl.ora $ORACLE_HOME/dbs/spfileorcl.ora.bak

SQL> shutdown immediate

SQL> create spfile from pfile=‘/home/oracle/initorcl.ora‘; 二進制 文本文件轉換二進制

$ strings $ORACLE_HOME/dbs/spfileorcl.ora

指定參數文件啟動數據庫:

SQL> startup pfile=‘/home/oracle/initorcl.ora‘

練習:

修改resource_limit和processes參數。並在alert log中找到對應的信息。

警告日誌和後臺進程的轉儲文件

$ find /u01 -name alert_*.log

$ vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

SQL> show parameter dump

oracle課堂隨筆--第十六天