RAC下用户资源的分配:下面是实际生产环境下给准备上线的业务的分配资源。
(1)创建操作系统下面用来expdp导数据的目录,确保这个目录所在的磁盘有足够的空间。
[root@RAC1 ~]# mkdir -p /archive/dumpdir/zc
[root@RAC1 ~]# chown -R oracle:oracle /archive/dumpdir/zc
chown: invalid group: `oracle:oracle'
(2)创建业务的服务,即对应业务的服务,业务通过这个服务连接到数据库上(主有一节点,备二节点,当一节点宕机服务飘到二节点)
[oracle@RAC1 ~]$ srvctl add service -d oradb -s zc_service -r oradb1 -a oradb2 -P basic -m
basic -z 10 -e select
-d选项是db_name,-s是要添加的服务,-r是主服务所在的主节点instance_name,-s是服务所在的备节点instance_name。
[oracle@RAC1 ~]$ srvctl start service -d oradb -s zc_service
因为服务是主一备二,这个服务只在一节点不会在二节点,业务连接跑的业务也只在一节点,如果一节点宕机了,zc_service就会在二节点,业务也会切换到二节点。
[oracle@RAC1 ~]$ srvctl config service -d oradb --RAC下面将服务是主备的方式列出来
Service name: zc_service
Service is enabled
Server pool: oradb_zc_service
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: SELECT
Failover method: BASIC
TAF failover retries: 10
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition:
Preferred instances: oradb1 --可以看到服务是在一节点,只有一节点出现故障才会到二节点
Available instances: oradb2
如果一节点宕机了,后面服务都在二节点了,之后拉起一节点了,使用下面命令将服务切回到一节点。
[grid@RAC2 ~]$ srvctl relocate service -d oradb -s zc_service -i oradb2 -t oradb1 -- -i选项是服务所在备节点的instance_name,-t选项是主节点的instance_name。
(3)创建用户的表空间
SQL> create tablespace zc datafile '+DATA/oradb/datafile/zc01.dbf' size 50m autoextend off;
Tablespace created.
删除表空间,包括属于它的数据文件(物理上也同时删除)
SQL> drop tablespace qiu including contents and datafiles;
(4)创建数据库用户,记得分配一些权限
SQL> create user zc identified by "zc" default tablespace zc quota unlimited on zc;
User created.
SQL> grant resource,create session,connect to zc;
Grant succeeded.
SQL> grant execute on DBMS_LOCK to zc;
Grant succeeded.
SQL> grant execute on DBMS_RANDOM to zc;
Grant succeeded.
SQL> grant execute on DBMS_JOB to zc;
Grant succeeded.
(5)给业务用户创建导入导出的目录,这个目录就是给业务登入上面分配的普通用户的家目录,这样业务就可以使用zc用户来导入导出数据。
SQL> create directory zc_dir as '/archive/dumpdir/zc';
Directory created.
SQL> grant all on directory zc_dir to zc;
Grant succeeded.
测试是否可以导入导出数据
[root@RAC1 ~]# chown oracle:oinstall -R /archive/dumpdir/zc
[root@RAC1 ~]# su - oracle
[oracle@RAC1 ~]$ expdp zc/zc directory=zc_dir dumpfile=testmy.dmp tables=zc.test
Export: Release 11.2.0.4.0 - Production on Mon Oct 22 15:52:52 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
Starting "ZC"."SYS_EXPORT_TABLE_01": zc/******** directory=zc_dir dumpfile=testmy.dmp tables=zc.test
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "ZC"."TEST" 5.015 KB 1 rows
Master table "ZC"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ZC.SYS_EXPORT_TABLE_01 is:
/archive/dumpdir/zc/testmy.dmp
Job "ZC"."SYS_EXPORT_TABLE_01" successfully completed at Mon Oct 22 15:53:11 2018 elapsed 0 00:00:17
最后别忘记给业务连接串了,服务是主一备二,使用failover机制,当一个节点宕机了,连到另外一个节点上的服务,下面写的顺序不要写错了。TNSNAME:
TNS =
(DESCRIPTION_LIST =
(LOAD_BALANCE = off)
(FAILOVER = on)
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE=OFF)
(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.212.219.173)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = zc_service)
(INSTANCE_NAME = oradb1)
(FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE=OFF)
(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.212.219.174)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = zc_service)
(INSTANCE_NAME = oradb2)
(FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))
)
)
)
JDBC连接串:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.212.219.173)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.212.219.174)(PORT=1521))(FAILOVER=on))(CONNECT_DATA=(SERVICE_NAME= zc_service)))