ORACLE常用基础

一、oracle常用sql语句

1)手动oracle开机启动流程
su - oracle
lsnrctl start
lsnrctl status
sqlplus / as sysdba
startup

 linux 下ORACLE 配置单机开机自启

记下这两个值
echo $ORACLE_HOME
echo $ORACLE_SID

find  / -iname dbstart
find  / -iname dbshut

/opt/oracle/product/19c/dbhome_1/bin/dbstart
/opt/oracle/product/19c/dbhome_1/bin/dbshut

 有报错信息,提示ORACLE_HOME不识别,如下解决方案,修改dbstart和dbstut,有的版本dbstut找不到不存在,可以忽略。

vim /opt/oracle/product/19c/dbhome_1/bin/dbstart
vim /opt/oracle/product/19c/dbhome_1/bin/dbshut

将 
ORACLE_HOME_LISTNER =$1
改成 
ORACLE_HOME_LISTNER=$ORACLE_HOME

 修改oratab和rc.local

 vim /etc/oratab


 

vim /etc/rc.d/rc.local


su oracle -lc "/opt/oracle/product/19c/dbhome_1/bin/dbstart  start"
su oracle -lc "/opt/oracle/product/19c/dbhome_1/bin/dbshut "


#加执行权限
chmod +x /etc/rc.d/rc.local

换成另外一种方式

1.启动数据库实例的shell脚本

启动Oracle数据库的脚本为 /opt/oracle/product/19c/dbhome_1/dbstart.sh

cd /opt/oracle/product/19c/dbhome_1/bin

touch dbstart.sh
vim  dbstart.sh
vim  dbrestart.sh
vim  dbshut.sh

#!/bin/sh
lsnrctl start
sqlplus / as sysdba <<EOF
startup;
EOF

2. 启数据库实例的shell脚本

重启Oracle数据库的脚本为/opt/oracle/product/19c/dbhome_1/dbrestart.sh

#!/bin/sh
sqlplus / as sysdba <<EOF
shutdown immediate;
startup;
EOF

3.关闭数据库实例的shell脚本

关闭Oracle数据库的脚本为/opt/oracle/product/19c/dbhome_1/dbshut.sh

#!/bin/sh
sqlplus / as sysdba <<EOF
shutdown immediate;
EOF

#建好之后给三个文件授权
chmod +x  /opt/oracle/product/19c/dbhome_1/bin/dbstart.sh
chmod +x  /opt/oracle/product/19c/dbhome_1/bin/dbrestart.sh
chmod +x  /opt/oracle/product/19c/dbhome_1/bin/dbshut.sh



4.配置两个启动服务 【oracle.service】和【lsnrctl.service】

cd /usr/lib/systemd/system/

# 创建当前目录下的 oracle.service 文件 vim ./oracle.service

# 内容为:
[Unit]
Description=Oracle RDBMS
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/dbstart.sh >> /tmp/oracle.log"
ExecReload=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/dbrestart.sh >> /tmp/oracle.log"
ExecStop=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/dbshut.sh \>\> /tmp/oracle.log"
RemainAfterExit=yes


[Install]
WantedBy=multi-user.target

# 查询 oracle 的安装目录
echo $ORACLE_HOME
# 创建当前目录下的 lsnrctl.service 文件
vim ./lsnrctl.service

# 内容为:
[Unit]
Description=Oracle lsnrctl
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start >> /tmp/lsnrctl.log"
ExecReload=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl reload >> /tmp/lsnrctl.log"
ExecStop=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl stop >> /tmp/lsnrctl.log"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

刷新服务配置文件

systemctl daemon-reload

5.测试 启动/停止/重启

在root账号下测试oracle和lsnrctl服务

1.直接先执行脚本检查是否有问题:
su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl status >> /tmp/lsnrctl.log"

 

su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/dbshut.sh \>\> /tmp/oracle.log"

 

2.命令测试
# 切换 root 账号
su root
# 启动oracle服务
systemctl start oracle
# 重启oracle服务
systemctl restart oracle
# 关闭oracle服务
systemctl stop oracle

# 启动lsnrctl服务
systemctl start lsnrctl
# 重启lsnrctl服务
systemctl restart lsnrctl
# 关闭lsnrctl服务
systemctl stop lsnrctl


# 将 oracle 和 lsnrctl 服务设置为开机/关机自动启动/停止
# 把oracle实例服务设置为开机自启动
systemctl enable oracle

# 把oracle监听服务设置为开机自启动
systemctl enable lsnrctl

# 执行 systemctl stop oracle ,避免 oracle 因为异常关闭,而导致开机启动异常。
systemctl stop oracle
# 关机
reboot


 

chmod 777 /usr/lib/systemd/system/oracle.service
systemctl enable /usr/lib/systemd/system/oracle.service
systemctl is-enabled oracle.service

 

开机重启看看(在关机之前请先执行systemctl stop oracle,避免Oracle异常关闭导致开机启动异常)

2)如何查看数据库版本

select * from v$version; 

 

3)如何查看用户从那个设备连接的数据库

SELECT DISTINCT  machine , terminal FROM V$SESSION; 

4)如何查看表结构

方法一、

select * from all_tables where table_name like '%'  #查询名为 'YZH_ORACLE' 的表的列信息,包括列名、数据类型、约束等。


select * from all_tab_columns where table_name='table_name'  #查询名为 'YZH_ORACLE' 的表的列注释信息。

select * from all_tables where table_name like '%YZH_ORACLE' 
select * from all_tab_columns where table_name='YZH_ORACLE' 

方法二、


select uc.table_name   表名,
       utc.comments    表说明,
       uc.column_name  字段名,
       ucc.comments    字段说明,
       uc.data_type    数据类型,
       uc.data_length  长度,
       uc.nullable     是否为空,
       uc.data_default 默认值
  from cols uc, user_col_comments ucc, user_tab_comments utc
 
 where uc.table_name = ucc.table_name
      
   and uc.column_name = ucc.column_name
      
   and uc.table_name = utc.table_name
      
 ----  and uc.table_name='XXX(一定要注意表名大写)'
   and uc.table_name='YZH_ORACLE'
 order by uc.table_name, uc.column_id

 

 5)如何查看最大会话数

SELECT * FROM V$PARAMETER WHERE NAME LIKE 'proc%'; 

show parameter processes;

 

 数据库记录中曾经最大会话数

select * from v$license; 

6)如何查询事务被锁时间

select * from v$locked_object ; 

 7)如何查询那些用户正在使用数据库

select username from v$session; 

8)如何查得数据库的SID、以及是否归档

select * from v$database; 

 9)如何查询用户权限

SELECT * FROM DBA_SYS_PRIVS; 

10)何查询被锁对象

select *from V$LOCKED_OBJECT
select *from V$SESSION

 11)如何生成随机数

select DBMS_RANDOM.RANDOM  from dual;

12)查询当前用户对象

SELECT * FROM USER_OBJECTS; 

SELECT * FROM DBA_SEGMENTS; 

13)如何获取错误信息

SELECT * FROM USER_ERRORS; 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值