PLSQL登录
1、查看集群是否正常
一般只有 ora.gsd OFFLINE 是离线,其余全部处于ONLINE在线状态,才是正常的集群状态。
#正常如下只有gsd是OFFLINE离线状态表示集群正常
[grid@rac1 ~]$ crs_stat -t | grep OFFLINE
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac2.gsd application OFFLINE OFFLINE
#结果错误如下
[grid@rac-1 ~]$ crs_stat -t | grep OFFLINE
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora.rac-1.gsd application OFFLINE OFFLINE
ora....-2.lsnr application ONLINE OFFLINE
ora.rac-2.gsd application OFFLINE OFFLINE
ora.rac-2.vip ora....t1.type ONLINE OFFLINE
有2个异常
ora....-2.lsnr application ONLINE OFFLINE
ora.rac-2.vip ora....t1.type ONLINE OFFLINE
由于以前能正常使用,所以重启一下,看能不能解决问题。
要用到 crsctl 命令,使用root用户查询crsctl 命令位置。
[root@rac-1 ~]# find / -name crsctl
/u01/app/11.2.0/grid/bin/crsctl
一、关闭集群
使用root用户操作
1、停止has服务
两个节点都要执行
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop has -f
[root@rac-2 ~]# /u01/app/11.2.0/grid/bin/crsctl stop has -f
2、停止crs服务
两个节点都要执行
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs -f
[root@rac-2 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs -f
3、停止节点集群服务
两个节点都要执行
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster
[root@rac-2 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster -all
[root@rac-2 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster -all
二、启动集群
使用root用户操作
1、启动has服务
两个节点都要执行,启动has如果没有安装补丁,会卡住。
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl start has
[root@rac-2 ~]# /u01/app/11.2.0/grid/bin/crsctl start has
启动has如果没有安装补丁,会卡住,新开一个窗口,以 root 用户执行以下命令
[root@rac-1 ~]# /bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
[root@rac-2 ~]# /bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
2、启动crs服务
两个节点都要执行
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs
[root@rac-2 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs
启动crs服务有点慢,需要多等一会,使用下面的命令检查是否正常
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl check crs
[root@rac-2 ~]# /u01/app/11.2.0/grid/bin/crsctl check crs
正常如下,如果不行就按上面步骤关闭,多重启重试几次。
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
3、启动节点集群服务
等一会,等上面检查结果全部为online
只需要在一个节点执行。
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -all
CRS-4690: Oracle Clusterware is already running on 'rac-1'
CRS-4690: Oracle Clusterware is already running on 'rac-2'
CRS-4000: Command Start failed, or completed with errors.
4、检查,只有gsd为OFFLINE 为正常。
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/crs_stat -t | grep OFFLINE
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora.rac-1.gsd application OFFLINE OFFLINE
ora.rac-2.gsd application OFFLINE OFFLINE
三、scan IP地址错误
查询 scan ip地址为 192.168.111.333,而实际我的 scan ip地址为 192.168.111.222
[grid@rac-1 ~]$ srvctl config scan
SCAN name: rac-scan, Network: 1/10.102.44.0/255.255.255.0/ens192
SCAN VIP name: scan1, IP: /rac-scan/192.168.111.333
修改SCAN信息,增加SCAN监听的IP(用root进行修改)
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/srvctl modify scan -n rac-scan
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/srvctl modify scan_listener -u
重启SCAN服务和监听(用root进行修改)
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/srvctl start scan
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/srvctl start scan_listener
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/srvctl stop scan_listener
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/srvctl stop scan
[root@rac-1 ~]# /u01/app/11.2.0/grid/bin/srvctl status scan_listener
四、连接数据库
1、查询数据库实例名和服务名
#查询配置文件位置(一般在节点1上)
[root@rac-1 ~]# find / -name dbca.rsp
/u01/software/database/response/dbca.rsp
#根据配置文件查看 服务名GDBNAME 实例名SID
[root@rac-1 ~]# cat /u01/software/database/response/dbca.rsp | grep -v ^.*# | grep -v ^$ |grep -E "GDBNAME|SID"
GDBNAME = "sqms"
SID = "sqms"
根据上面的查询结果知道,服务名为sqms ,实例名为 sqms1 和 sqms2
查询访问ip(SCAN IP)
[grid@rac-1 ~]$ srvctl config scan
SCAN name: rac-scan, Network: 1/10.102.44.0/255.255.255.0/ens192
SCAN VIP name: scan1, IP: /rac-scan/192.168.111.222
查看监听端口
[grid@rac-1 ~]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
2、创建用户
要使用 oracle 用户,不要使用 grid 用户。
[oracle@rac-1 ~]$ sqlplus / as sysdba
##创建一个新用户test和密码test_2024
SQL> create user test identified by test_2024;
##授予DBA权限。
SQL> grant connect,resource,dba to test;
3、使用plsql连接
jdbc连接oracle有2种方式:
jdbc:oracle:thin:@ip:port:SID
jdbc:oracle:thin:@ip:port/Server_Name
我们已经通过第一步知道了,服务名Server_Name为sqms ,实例名SID为 sqms1 和 sqms2
#服务名连接方式
jdbc:oracle:thin:@192.168.111.222:1521/sqms
#实例名连接方式
jdbc:oracle:thin:@192.168.111.222:1521:sqms1
jdbc:oracle:thin:@192.168.111.222:1521:sqms2
五、创建表空间和扩容
1、查询原数据库默认的表空间和默认的临时表空间
-- 查询默认的表空间
SELECT DEFAULT_TABLESPACE FROM USER_USERS;
-- 查询默认的临时表空间
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
--查询表空间文件路径
SELECT TABLESPACE_NAME "表空间名", BYTES/1024/1024 "表空间大小(M)", FILE_NAME "文件路径" FROM DBA_DATA_FILES order by TABLESPACE_NAME,FILE_NAME;
--查询临时表空间文件路径
SELECT TABLESPACE_NAME "临时表空间名",BYTES/1024/1024 "表空间大小(M)",FILE_NAME "文件路径" FROM DBA_TEMP_FILES order by TABLESPACE_NAME,FILE_NAME;
查询到默认表空间位置:+DATA/sqms/datafile/users.268.1172934471
后面创建表空间,要放到同一个路径下,设置不同的文件名。
--创建表空间
create tablespace TBS_SSCP
datafile '+DATA/sqms/datafile/tbs_sscp01.dbf'
size 30G; --表空间初始的文件大小。
--表空间手动扩容
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp02' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp03' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp04' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp05' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp06' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp07' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp08' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp09' size 30G;
alter tablespace TBS_SSCP add datafile '+DATA/sqms/datafile/tbs_sscp10' size 30G;
--设置默认的表空间
alter database default tablespace TBS_SSCP;
--表空间剩余大小
SELECT a.tablespace_name "表空间名",
round(total / (1024 * 1024 * 1024), 2) "表空间大小(G)",
round(free / (1024 * 1024 * 1024), 2) "表空间剩余大小(G)",
round((total - free) / (1024 * 1024 * 1024), 2) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;