实例管理
监听
启动监听:
$ 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