Ø 简介
本文主要记录 Oracle 12c 日常的一些常见操作。包括以下内容:
1. 基本操作
2. 配置监听
3. 设置开机自启动
4. 创建数据库对象
1. 基本操作
1) 连接数据库
[oracle@abeam150 ~]$ sqlplus / as sysdba #不加引号
# 如果连接出现以下:
1. 检查 .bash_profile 文件中的数据库名是否正确;
2. 检查数据库是否启动;
2) 查看当前用户
SQL> show user;
USER is "SYS"
3) 查看日志路径
SQL> select * from v$diag_info;
1 Diag Trace
/opt/oracle/app/oracle/diag/rdbms/devzxsm/devzxsm/trace
[oracle@abeam150 ~]$ ls -lsa /opt/oracle/app/oracle/diag/rdbms/devzxsm/devzxsm/trace/al*
56 -rw-r-----. 1 oracle dba 54469 8月 26 21:18 /opt/oracle/app/oracle/diag/rdbms/devzxsm/devzxsm/trace/alert_devzxsm.log #日志警告文件(主要关注 ORA 开头的报错信息)
4) 查看数据文件
SQL> select name from v$datafile;
/opt/oracle/app/oracle/oradata/devzxsm/system01.dbf
/opt/oracle/app/oracle/oradata/devzxsm/sysaux01.dbf
/opt/oracle/app/oracle/oradata/devzxsm/undotbs01.dbf
/opt/oracle/app/oracle/oradata/devzxsm/users01.dbf
5) 启动数据库
[oracle@abeam150 ~]$ sqlplus "/as sysdba" #加引号
SQL> startup; #启动
SQL> exit;
[oracle@abeam150 ~]$ lsnrctl start #开启监听
[oracle@abeam150 ~]$ lsnrctl status #查看监听状态
6) 关闭数据库
SQL> shutdown immediate; #需要一定时间
SQL> exit;
[oracle@abeam150 ~]$ lsnrctl stop #停止监听
2. 检查/配置监听
cd $ORACLE_HOME/network/admin
vi tnsnames.ora #编辑配置文件
#ping 监听(成功返回OK)
tnsping devzxsm
3. 设置开机自启动
1) 修改 dbstart、dbshut 脚本,否则启动和停止 Oracle 数据库时会提示以下信息:
ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener
su - oracle #切换为 oracle 用户
修改 dbstart 脚本,将 ORACLE_HOME_LISTNER=$1 的$1改为 $ORACLE_HOME
cp $ORACLE_HOME/bin/dbstart $ORACLE_HOME/bin/dbstart.bak_20083001
vi $ORACLE_HOME/bin/dbstart
再修改 dbshut 脚本,将 ORACLE_HOME_LISTNER=$1 的$1改为 $ORACLE_HOME
cp $ORACLE_HOME/bin/dbshut $ORACLE_HOME/bin/dbshut.bak_20083001
vi $ORACLE_HOME/bin/dbshut
2) 编辑 /etc/oratab 文件
# vi /etc/oratab #将最后一位 N 改为 Y
3) 创建用于启动和停止 oracle 的脚本
su - root #切换为 oracle 用户
vi /etc/init.d/dbora #添加以下内容:
#! /bin/sh
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORACLE_HOME.
ORA_HOME=/opt/oracle/app/oracle/product/12.2.0/dbhome_1 #注意:这里为实际的 oracle 安装路径
ORA_OWNER=oracle
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
# Remove "&" if you don't want startup as a background process.
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
touch /var/lock/subsys/dbora
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME" &
rm -f /var/lock/subsys/dbora
;;
esac
4) 修改脚本执行权限
chown oracle /etc/init.d/dbora #将所有者改为 oracle 用户
chmod 750 /etc/init.d/dbora #只有 oracle 用户和 root 组具备执行权限
5) 设置开机自启动
创建软链接文件,到三个运行级别的服务目录下:
ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora
说明:软件连接文件不用考虑权限,类似 Windows 中的快捷方式,已源文件为准。
# 检查创建结果
ll /etc/rc.d/rc0.d /etc/rc.d/rc3.d /etc/rc.d/rc5.d | grep ora
说明:启动和日志可以分别在以下两个文件中查看:
tail -100 /opt/oracle/app/oracle/product/12.2.0/dbhome_1/startup.log
tail -100 /opt/oracle/app/oracle/product/12.2.0/dbhome_1/shutdown.log
4. 创建数据库对象
1) 查看当前实例名
SQL> show parameter instance_name;
instance_name string devzxsm
2) 查看当前用户
SQL> show user
USER is "SYS"
3) 创建表空间
create tablespace zxsm01 datafile '/opt/oracle/app/oracle/oradata/devzxsm/zxsm01.dbf' size 128m;
4) 创建用户(data)
create user data identified by data123 default tablespace zxsm01;
grant dba to data; #不建议直接授权dba
5) 切换用户登录
SQL> conn data/data123@devzxsm;
SQL> show user;
USER is "DATA"
SQL> conn / as sysdba;
SQL> show user;
USER is "SYS"
6) 写入测试数据
[oracle@abeam150 admin]$ sqlplus "data/data123@devzxsm"
SQL> create table table01(id number(2) primary key, name varchar2(100));
SQL> insert into table01 values(1, '你想咋咋');
SQL> commit;
SQL> select * from table01;