Oracle安装与详解

Oracle安装与详解

安装步骤

1.安装依赖包

操作用户:root

yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

注:中途若有碰到选择的(y/n),直接输入y就行

2.验证依赖包

操作用户:root

rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel

正常所有包都会显示已安装,自己注意是否有未安装的包

3.创建oracle用户

操作用户:root

groupadd -g 502 oinstall
groupadd -g 503 dba
groupadd -g 504 oper
groupadd -g 505 asmadmin
useradd -u 502 -g oinstall -G oinstall,dba,asmadmin,oper -s /bin/bash -m oracle
passwd oracle

到最后一步会提示设置密码

注:500之后为普通用户

4.解压Oracle安装包

操作用户:oracle
注:使用 su - 用户名,切换操作用户
存放目录自己随便选,我的在根目录下 /oradata

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

可能会提示没操作权限,使用

chown -R oracle:oinstall /oradata

就可以了

解压后会得到一个database的目录

5.修改系统配置

操作用户:root

vi /etc/security/limits.conf

在文件的末尾添加如下配置项

oracle          soft      nproc   2047
oracle          hard      nproc   16384
oracle          soft      nofile  1024
oracle          hard      nofile  65536
oracle          soft      stack   10240

6.创建Oracle安装目录

操作用户:oracle
根据分区大小自己选,我在的 /oradata/soft/oracle11g

7.修改环境变量

操作用户:oracle

vi /etc/profile

在文件末尾添加如下配置项

export ORACLE_BASE=/oradata/soft/oracle11g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/dbhome_1
export ORACLE_SID=prod
export ORACLE_UNQNAME=prod
export NLS_LANG=.AL32UTF8
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64

使得环境变量生效

source /etc/profile

8.修改oracle配置文件

操作用户:oracle
操作目录:/oradata
复制文件模板

cp /oradata/database/response/db_install.rsp .

最后还有一个 . 不能漏了。会把 db_install.rsp文件从拷贝到当前目录

对db_install.rsp文件进行编辑

vi db_install.rsp

需要修改的配置项如下所示

oracle.install.option=INSTALL_DB_AND_CONFIG
ORACLE_HOSTNAME=localhost #实际上可以修改成你自己的主机名或者域名(IP)
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/oradata/soft/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/oradata/soft/oracle11g/product/11.2.0.3/dbhome_1
ORACLE_BASE=/oradata/soft/oracle11g
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=prod
oracle.install.db.config.starterdb.SID=prod
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=1024
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.password.ALL=oracle  #也可不设置
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=test@qq.com #可以填写你自己的邮箱地址
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/oradata/soft/oracle11g/data
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/oradata/soft/oracle11g/fast_recovery_area
oracle.install.db.config.starterdb.automatedBackup.enable=false
DECLINE_SECURITY_UPDATES=true

9.安装数据库
操作用户:oracle

操作目录:/oradata/database

./runInstaller -silent -ignoreSysPrereqs -responseFile /oradata/db_install.rsp -ignorePrereq

注:有些警告会终止安装,-ignoreSysPrereqs和-ignorePrereq可以跳过警告

现在就等待它自己安装好了,可以根据提示,使用tail -f 命令另开一个界面看安装进度。其实就是看看有没有卡死

待出现下面的情况,就说明已经安装好了

/oradata/soft/oraInventory/orainstRoot.sh
/oradata/soft/oracle11g/product/11.2.0.3/dbhome_1/root.sh
To execute the configuration scripts:

        1. Open a terminal window
         2. Log in as "root"
         3. Run the scripts
         4. Return to this window and hit "Enter" key to continue

Successfully Setup Software.

10.安装完成
操作用户:root

根据上一步完成信息提示,执行以下两行命令,具体位置需要根据你的安装位置决定

/oradata/soft/oraInventory/orainstRoot.sh
/oradata/soft/oracle11g/product/11.2.0.3/dbhome_1/root.sh

11.验证安装结果

操作用户:oracle

sqlplus / as sysdba

能成功进入SQL命令行

12.启动数据库
安装好后监听和数据库都是已经打开的,若服务器重启,则使用 lsnrctl start 启动监听,管理员登录后使用 startup 打开数据库

Oracle使用

SELECT table_name FROM user_tables;

SELECT * FROM dba_users;

ALTER USER scott account unlock;

---修改scott用户密码
ALTER USER scott IDENTIFIED BY tiger;

---删除表空间
DROP tablespace ts1;

---创建表空间
CREATE tablespace ts1 datafile '/opt/oracleTableSpace/ts1.dbf' SIZE 50M;

---修改默认表空间
ALTER DATABASE DEFAULT tablespace users;

---创建表
CREATE TABLE kgc(id NUMBER,name varchar2(32));
SELECT * FROM kgc;

---创建序列
CREATE SEQUENCE user_seq;
SELECT user_seq.nextval FROM dual;
CREATE SEQUENCE user_seq2 START WITH 100;
SELECT user_seq2.nextval FROM dual;
CREATE SEQUENCE user_seq3 MINVALUE 5 MAXVALUE 100;
SELECT user_seq3.nextval FROM dual;
CREATE SEQUENCE user_seq4 INCREMENT BY 3;
SELECT user_seq4.nextval FROM dual;



CREATE SEQUENCE kgc_seq MINVALUE 1 nomaxvalue INCREMENT BY 1 START WITH 1 nocache;

---创建触发器
CREATE OR REPLACE TRIGGER kgc_trigger_insertid BEFORE INSERT ON KGC FOR EACH ROW
BEGIN
	SELECT kgc_seq.nextval INTO:NEW.id FROM dual;
END;

INSERT INTO KGC(name) VALUES('lisi');


------------创建俩张表和id自增触发器--------------------

CREATE SEQUENCE tbook_seq MINVALUE 1 nomaxvalue INCREMENT BY 1 START WITH 1 nocache;

CREATE OR REPLACE TRIGGER tbook_trigger_insertid BEFORE INSERT ON T_BOOK FOR EACH ROW
BEGIN
	SELECT tbook_seq.nextval INTO:NEW.id FROM dual;
END;

CREATE SEQUENCE tbooktype_seq MINVALUE 1 nomaxvalue INCREMENT BY 1 START WITH 1 nocache;

CREATE OR REPLACE TRIGGER tbooktype_trigger_insertid BEFORE INSERT ON T_BOOKTYPE FOR EACH ROW
BEGIN
	SELECT tbooktype_seq.nextval INTO:NEW.id FROM dual;
END;


CREATE TABLE T_BOOK(
id NUMBER,
bookName varchar(32),
typeId NUMBER,
PRIMARY KEY(id)
);

CREATE TABLE T_BOOKTYPE(
id NUMBER,
typeName varchar2(32),
PRIMARY KEY(id)
);

INSERT INTO T_BOOKTYPE(typeName) VALUES('计算机');

SELECT * FROM T_BOOKTYPE;

INSERT INTO T_BOOK(bookName,TYPEID) VALUES('朗博英语',1);
INSERT INTO T_BOOK(bookName,TYPEID) VALUES('30天精通Java',2);
SELECT * FROM T_BOOK;

SELECT * FROM v$session;

CREATE OR REPLACE TRIGGER tr_book BEFORE DELETE ON T_BOOK FOR EACH ROW
BEGIN
	IF USER!='ZHANGPENG' THEN
		raise_application_error(-20001,'权限不足');
	END IF;
END;

CREATE TABLE T_BOOK_OPLOG(
actionuser varchar2(32),
actionname varchar2(32),
actiontime DATE
);

CREATE OR REPLACE TRIGGER tr_op_tbook AFTER INSERT OR UPDATE OR DELETE ON T_BOOK FOR EACH ROW
BEGIN
	IF updating THEN
		INSERT INTO T_BOOK_OPLOG VALUES(USER,'update',SYSDATE);
	ELSE IF inserting THEN
		INSERT INTO T_BOOK_OPLOG VALUES(USER,'insert',SYSDATE);
	ELSE IF deleting THEN
		INSERT INTO T_BOOK_OPLOG VALUES(USER,'delete',SYSDATE);
	END IF;
	END IF;
	END IF;
END;


INSERT INTO T_BOOK(bookName,TYPEID) VALUES('7天精通scala',2);
UPDATE T_BOOK SET BOOKNAME='3天精通scala' WHERE ID=3;
DELETE FROM T_BOOK WHERE ID=3;

SELECT * FROM T_BOOK_OPLOG;

---创建函数
CREATE OR REPLACE FUNCTION GETOPCOUNT RETURN NUMBER AS
BEGIN		
	DECLARE OP_COUNT NUMBER;
	BEGIN
		SELECT COUNT(*) INTO OP_COUNT FROM T_BOOK_OPLOG WHERE actionname='insert';
		RETURN OP_COUNT;
	END;	
END GETOPCOUNT;

CREATE OR REPLACE FUNCTION GETOPCOUNTBY(opName varchar2) RETURN NUMBER AS
BEGIN		
	DECLARE OP_COUNT NUMBER;
	BEGIN
		SELECT COUNT(*) INTO OP_COUNT FROM T_BOOK_OPLOG WHERE actionname= + opName;
		RETURN OP_COUNT;
	END;	
END GETOPCOUNTBY;

CREATE OR REPLACE FUNCTION GETOPCOUNTBY2(opName varchar2) RETURN NUMBER AS
BEGIN		
	DECLARE OP_COUNT NUMBER;
	query_sql varchar2(300);
	BEGIN
		query_sql:='SELECT COUNT(*) FROM T_BOOK_OPLOG WHERE actionname=' || ''''||opName ||'''';
		EXECUTE IMMEDIATE query_sql INTO OP_COUNT;
		RETURN OP_COUNT;
	END;	
END GETOPCOUNTBY2;

SELECT GETOPCOUNTBY2('insert') num FROM dual;


SELECT * FROM KGC;

------------------------------------------------------字符串函数--------------------------------------------------------------

---向左补齐
SELECT name,LPAD(NAME,6,'a') FROM KGC;

---向右补齐
SELECT name,RPAD(NAME,5,'0') FROM KGC;

---转大写
SELECT name,UPPER(NAME) FROM KGC;

---转小写
SELECT LOWER('ASD') FROM dual;

---首字母大写
SELECT name,INITCAP(NAME) FROM KGC;

---字符串长度
SELECT name,LENGTH(NAME) FROM KGC;

---字符串截取
SELECT name,SUBSTR(NAME,1,3) FROM KGC;

---字符串包含(返回包含字符串的位置)
SELECT name,INSTR(NAME,'s') FROM KGC;

---去空格(两端)
SELECT TRIM(' aabb ') FROM dual;

---左边去空格
SELECT LTRIM(' aabb') FROM dual;

---右边去空格
SELECT RTRIM('aabb ') FROM dual;

---字符串拼接
SELECT CONCAT('hello ',name) FROM KGC;

---字符反转
SELECT REVERSE(name) FROM KGC;


----------------------------------------------------数学函数----------------------------------------------------------

---四舍五入
SELECT ROUND(3.1415926,2) FROM dual;

---向上取整
SELECT CEIL(123.456) FROM dual;

---向下取整
SELECT FLOOR(123.556) FROM dual;

---取模
SELECT MOD(32,7) FROM dual;

---与零比较,大于零为1,小于零为-1,等于零为0
SELECT SIGN(-12) FROM dual;
SELECT SIGN(12) FROM dual;
SELECT SIGN(0) FROM dual;

---次幂函数
SELECT POWER(3,2) FROM dual;

--开放
SELECT SQRT(9) FROM dual;

---取小数点后几位
SELECT TRUNC(1234.5678,3) FROM dual;
SELECT TRUNC(1234.5678,0) FROM dual;
SELECT TRUNC(1234.5678,-1) FROM dual;

---将数字转为字符串
SELECT TO_CHAR(123.45) FROM dual;
SELECT TO_CHAR(123.45'000.00') FROM dual;
SELECT TO_CHAR(123123123.45,'999,999,999.99') FROM dual;

--------------------日期------------------------
SELECT SYSDATE FROM dual;

SELECT SYSTIMESTAMP FROM dual;

SELECT ADD_MONTHS(SYSDATE,3) FROM dual;

SELECT LAST_DAY(SYSDATE) FROM dual;


-----视图创建调用
SELECT * FROM T_BOOK_OPLOG;

CREATE OR REPLACE VIEW v_tbook_log AS
SELECT * FROM T_BOOK_OPLOG WHERE ACTIONNAME='update' WITH READ ONLY;

SELECT * FROM v_tbook_log;


CREATE OR REPLACE FUNCTION myfunction RETURN varchar AS
BEGIN
	DECLARE num NUMBER:=1000;
		v varchar(32):='hello oracle';
	BEGIN
		dbms_output.put_line('hello '||num||v);
		RETURN 'hello '||num||v;
	END;
END;

SELECT myfunction() FROM dual;

SELECT * FROM SCOTT.EMP WHERE SAL>=3000;


CREATE OR REPLACE FUNCTION getEmpCountBy(salary NUMBER) RETURN varchar AS
BEGIN
	DECLARE emp_count NUMBER;
		query_sql varchar2(500);
	BEGIN
		SELECT COUNT(*) INTO emp_count FROM SCOTT.EMP WHERE SAL>=salary;
		---query_sql:='SELECT COUNT(*) FROM SCOTT.EMP WHERE SAL>='||salary;
		---EXECUTE IMMEDIATE query_sql INTO emp_count;
		IF emp_count>0 THEN
			RETURN '有'|| emp_count|| '名员工薪资大于等于'|| salary;
		ELSE	
			RETURN '没有薪资大于等于'|| salary|| '的员工';
		END IF;
	END;
END;

SELECT getEmpCountBy(3000) FROM dual;

DECLARE emp_count NUMBER;
		RESULT_str varchar2(200);
		salValue NUMBER:=4000;
BEGIN
	SELECT COUNT(*) INTO emp_count FROM SCOTT.EMP WHERE SAL>=4000;
	IF (emp_count=1) THEN
		dbms_output.put_line('有一名薪资大于'||salValue);
	ELSIF (emp_count>1) THEN
		dbms_output.put_line('有'||emp_count||'名薪资大于'||salValue);
	ELSE
		dbms_output.put_line('没有');
	END IF;
	END IF;
END;

DECLARE orinum NUMBER:=1;
		sumvalue NUMBER:=0;
BEGIN
	LOOP
		IF (orinum>5) THEN
			EXIT;
		END IF;
		sumvalue:=sumvalue+orinum;
		orinum:=orinum+1;
		dbms_output.put_line(sumvalue);
	END LOOP;
END;

DECLARE emp_count NUMBER;
		salvalue NUMBER:=3000;
BEGIN
	SELECT COUNT(*) INTO emp_count FROM SCOTT.EMP WHERE SAL>= + salvalue;
	CASE emp_count
	WHEN 0 THEN
		dbms_output.put_line('没有员工薪资大于'||salvalue);
	WHEN 1 THEN
		dbms_output.put_line('有一名员工薪资大于'||salvalue);
	WHEN 2 THEN
		dbms_output.put_line('有两名员工薪资大于'||salvalue);
	WHEN 3 THEN
		dbms_output.put_line('有三名员工薪资大于'||salvalue);
	ELSE
		dbms_output.put_line('有三名以上员工薪资大于'||salvalue);	
	END CASE;
END;


DECLARE orinum NUMBER:=1;
		sumvalue NUMBER:=0;
BEGIN
	WHILE orinum<6 LOOP
		sumvalue:=sumvalue+orinum;
		dbms_output.put_line(sumvalue);
		orinum:=orinum+1;
	END LOOP;
END;


DECLARE orinum NUMBER:=1;
		sumvalue NUMBER:=0;
BEGIN
	FOR orivalue IN 1..5 LOOP
		sumvalue:=sumvalue+orivalue;
		dbms_output.put_line(sumvalue);
	END LOOP;
END;


-------------游标----------------
DECLARE
	--定义游标
	CURSOR c_job IS 
	SELECT empno,ename,job,sal FROM SCOTT.EMP WHERE JOB='MANAGER';
	--定义游标变量,用来接受c_job中每行的数据
	c_row c_job%rowtype;
BEGIN
	FOR c_row IN c_job LOOP
		dbms_output.put_line(c_row.empno||'--'||c_row.ename||'--'||c_row.job||'--'||c_row.sal);
	END LOOP;
END;
-------------------------------------------------------------------------------
DECLARE
	--定义游标
	CURSOR c_job IS 
	SELECT empno,ename,job,sal FROM SCOTT.EMP WHERE JOB='MANAGER';
	--定义游标变量,用来接受c_job中每行的数据
	c_row c_job%rowtype;
BEGIN
	OPEN c_job;  ---打开游标
		LOOP
			--抓取游标中一行数据,赋值给c_row
			FETCH c_job INTO c_row;
			EXIT WHEN c_job%notfound;
			dbms_output.put_line(c_row.empno||'--'||c_row.ename||'--'||c_row.job||'--'||c_row.sal);
		END LOOP;
	CLOSE c_job; ---关闭游标
END;
-------------------------------------------------------------------------------
BEGIN
	IF SQL%isopen THEN
		dbms_output.put_line('sql游标已打开');
	ELSE
		dbms_output.put_line('sql游标未打开');
	END IF;
END;



CREATE TABLE SCOTT.EMP1 AS SELECT * FROM SCOTT.EMP;

DECLARE
	CURSOR csr_update IS
	SELECT * FROM SCOTT.EMP1 FOR UPDATE OF SAL;
	empInfo csr_update%rowtype;
	salInfo SCOTT.EMP1.sal%TYPE;
BEGIN
	FOR empInfo IN csr_update LOOP
		IF empInfo.sal<1500 THEN
			salInfo:=empInfo.sal*1.2;
		ELSE IF empInfo.sal<2000 THEN
			salInfo:=empInfo.sal*1.5;
		ELSE IF empInfo.sal<3000 THEN
			salInfo:=empInfo.sal*2;
		END IF;
		END IF;
		END IF;
		--UPDATE SCOTT.EMP1 SET sal=salInfo WHERE empno=EMPINFO.empno;
		UPDATE SCOTT.EMP1 SET sal=salInfo WHERE CURRENT OF CSR_UPDATE;
	END LOOP;
END;

SELECT * FROM SCOTT.EMP;
SELECT * FROM SCOTT.EMP1;

-----------存储过程--------------
CREATE OR REPLACE PROCEDURE testloop(num IN NUMBER,sumvalue OUT NUMBER) AS
BEGIN
	DECLARE orinum NUMBER:=0;
		sumVal NUMBER:=0;
	BEGIN
		LOOP
			IF orinum>num THEN
				sumvalue:=sumVal;
				EXIT;
			END IF;
			sumVal:=sumVal+orinum;
			orinum:=orinum+1;
		END LOOP;
	END;
END;

DECLARE sumVal NUMBER;
BEGIN
	testloop(5,sumVal);
	dbms_output.put_line('结果:'||sumVal);
END;

CREATE OR REPLACE PROCEDURE addBook(bookName IN varchar2,typeID IN NUMBER) AS
BEGIN
	DECLARE maxID NUMBER;
	BEGIN
		SELECT MAX(id) INTO maxID FROM T_BOOK;
		INSERT INTO T_BOOK(id,bookname,typeid) VALUES(maxID+1,bookName,typeID);
	END;
END;

BEGIN
addBook('30天精通scala',2);
END;

SELECT  * FROM T_BOOK;

----------范围分区-----------

CREATE TABLE range_table(
id NUMBER,
done_date DATE,
DATA varchar2(32)
)
PARTITION BY RANGE(done_date)
(
PARTITION part_1 VALUES less than(TO_DATE('20200712','yyyymmdd')),
PARTITION part_2 VALUES less than(TO_DATE('20210712','yyyymmdd')),
PARTITION part_3 VALUES less than(MAXVALUE)
)

INSERT INTO RANGE_TABLE VALUES(1,TO_DATE('20200611','yyyymmdd'),'hehe');
INSERT INTO RANGE_TABLE VALUES(2,TO_DATE('20210612','yyyymmdd'),'hello');
INSERT INTO RANGE_TABLE VALUES(3,TO_DATE('20210713','yyyymmdd'),'world');
I
SELECT * FROM user_tab_partitions WHERE table_name='HASH_TABLE';

SELECT * FROM RANGE_TABLE;

------删除分区----------
ALTER TABLE RANGE_TABLE TRUNCATE PARTITION part_2;


--------散列分区---------
CREATE TABLE hash_table(
id NUMBER,
done_date DATE,
DATA varchar2(32)
)
PARTITION BY hash(done_date)
(
	PARTITION part_1,
	PARTITION part_2
)

---------列表分区----------
CREATE TABLE list_table(
id NUMBER,
name varchar2(32),
DATA varchar2(32)
)
PARTITION BY list(id)
(
	PARTITION part_1 VALUES(1,3,5,7),
	PARTITION part_2 VALUES(2,4,6,8),
	PARTITION part_default VALUES(DEFAULT)
);

SELECT * FROM user_tab_partitions WHERE table_name='LIST_TABLE';

----------范围散列分区------------
CREATE TABLE range_hash_table(
id NUMBER,
done_date DATE,
DATA varchar2(32)
)
PARTITION BY RANGE(done_date) ---按日期进行一级范围分区
subpartition BY hash(id)      ---再按id值进行二级分区
(
	PARTITION part_1 VALUES less than (TO_DATE('20200710','yyyymmdd'))
	(
		SUBPARTITION part_1_sub_1,
		SUBPARTITION part_1_sub_2
	),
	PARTITION part_2 VALUES less than (TO_DATE('20210710','yyyymmdd'))
	(
		SUBPARTITION part_2_sub_1,
		SUBPARTITION part_2_sub_2
	),
	PARTITION part_3 VALUES less than (MAXVALUE)
	(
		SUBPARTITION part_3_sub_1,
		SUBPARTITION part_3_sub_2
	)
	
);

SELECT * FROM user_tab_partitions WHERE table_name='RANGE_HASH_TABLE';

---------范围列表分区---------
CREATE TABLE range_list_table(
id NUMBER,
done_date DATE,
DATA varchar2(32)
)
PARTITION BY RANGE(done_date)
subpartition BY list(id)
(
	PARTITION part_1 VALUES less than (TO_DATE('20200710','yyyymmdd'))
	(
		SUBPARTITION part_1_sub_1 VALUES(1,3,5),
		SUBPARTITION part_1_sub_2 VALUES(2,4,6)
		
	),
	PARTITION part_2 VALUES less than (TO_DATE('20210710','yyyymmdd'))
	(
		SUBPARTITION part_2_sub_1 VALUES(11,13,15),
		SUBPARTITION part_2_sub_2 VALUES(12,14,16)
	),
	PARTITION part_3 VALUES less than (MAXVALUE)
	(
		SUBPARTITION part_3_sub_1 VALUES(21,23,25),
		SUBPARTITION part_3_sub_2 VALUES(22,24,26)
	)
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值