ORACLE手工建库
admin
2023-04-20 21:22:48
0次

手动建库:
找到官方文档,打开主索引
找到管理--create database
停止现有的数据库,释放内存

1.设置环境变量--ORACLE_SID
2.建立密码文件
3.建立文本的参数文件
4.建立二进制参数文件
5.建立参数文件中描述的路径
6.启动数据库到nomount
7.create database...
8.运行脚本: @$ORACLE_HOME/rdbms/admin/catalog 建立数据字典
@$ORACLE_HOME/rdbms/admin/catproc 建立应用的包
9.建立示例方案
conn system/a@$ORACLE_HOME/sqlplus/admin/pupbld
br/>@$ORACLE_HOME/sqlplus/admin/pupbld
@$ORACLE_HOME/rdbms/admin/utlsampl.sql

打开官方文档
Supporting Documentation
Administratior's Guide
2 creating and configuring an Oracle Database
第三项:Creating a Database with the CREATE DATABASE Statement
Step 9: Issue the CREATE DATABASE Statement

1.关闭其他所有的数据库。
2.建立新数据库(yy)的密码文件
ORACLE用户执行
cd $ORACLE_HOME/dbs
rapwd file=orapwyy password=a

3.建立文本的参数文件
strings spfileqq.ora (找一个已经存在的参数文件,将内容粘贴修改即可)
修改对应的数据库名和文件路径。
具体见本文档下第3步详情。

4.设置环境变量:ORACLE_SID=yy
export ORACLE_SID=yy

5.建立二进制参数文件
conn / as sysdba
create spfile from pfile;

6.建立参数文件中描述的路径
cd /u01/app/oracle/admin
cp -r qq yy 进入到该目录下将qq目录复制重命名为yy
建立数据文件存放目录
cd /u01/app/oracle/oradata
mkdir yy
7.修改官方文档的手动建库脚本,改数据库名,路径,密码等。
具体见本文下面第7步详情

8.启动数据库到nomount,启动数据库到nomount阶段会写日志到$ORACLE_BASE/admin/实例名/adump目录
startup
报205错误
运行第7步修改后的 create database脚本创建数据库。
脚本执行完毕后数据库创建完成,建成一个裸库,没有数据字典

9.运行脚本: @$ORACLE_HOME/rdbms/admin/catalog 建立数据字典
@$ORACLE_HOME/rdbms/admin/catproc 建立应用的包

10.创建示例方案
SYS用户执行
alter user system identified by a;
conn system/a@$ORACLE_HOME/sqlplus/admin/pupbld
br/>@$ORACLE_HOME/sqlplus/admin/pupbld
@$ORACLE_HOME/rdbms/admin/utlsampl.sql

第3步详情:
.audit_file_dest='/u01/app/oracle/admin/yy/adump'
.audit_trail='db'
.compatible='11.2.0.0.0'
.control_files='/u01/app/oracle/oradata/yy/control01.ctl','/u01/app/oracle/oradata/yy/control02.ctl'
.db_block_size=8192
.db_domain=''
.db_name='yy'
.diagnostic_dest='/u01/app/oracle'
.open_cursors=300
.pga_aggregate_target=308281344
.processes=150
.remote_login_passwordfile='EXCLUSIVE'
.sga_target=924844032
.undo_tablespace='UNDOTBS1'

第7步详情:
CREATE DATABASE yy
USER SYS IDENTIFIED BY a
USER SYSTEM IDENTIFIED BY a
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/yy/redo01.log') SIZE 20M,
GROUP 2 ('/u01/app/oracle/oradata/yy/redo02.log') SIZE 20M,
GROUP 3 ('/u01/app/oracle/oradata/yy/redo03.log') SIZE 20M
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/yy/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/yy/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/yy/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/yy/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/yy/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

实验2:掌握数据库启动3阶段
删除yy数据库的参数文件,将yy数据库的控制文件、数据文件、日志文件移动到其他位置。
原来的目录 $ORACLE_BASE/oradata/yy 新的目录:$ORACLE_BASE/oradata/tt
1.查看数据库位置
select name from v$datafile
union all
select name from v$controlfile
union all
select name from v$tempfile
union all
select member from v$logfile;

路径:/u01/app/oracle/oradata/tt/

2.关闭数据库
shutdown immediate;

3.删除数据库的参数文件,将数据库的数据文件、日志文件、控制文件移动到其他目录。
cd $ORACLE_HOME/dbs
rm -rf inityy.ora
rm -rf spfileyy.ora
cd $ORACLE_BASE/oradata
mv yy tt

4.指定实例名,启动数据库
startup
报错:ORA-01078找不到参数文件
根据 /u01/app/oracle/diag/rdbms/yy/yy/trace下的log文件创建新的参数文件。
cd $ORACLE_HOME/dbs
vi inityy.ora 将刚才所看log文件的以下部分粘贴到该文本中,保存退出。

processes = 150
sga_target = 884M
control_files = "/u01/app/oracle/oradata/yy/control01.ctl"
control_files = "/u01/app/oracle/oradata/yy/control02.ctl"
db_block_size = 8192
compatible = "11.2.0.0.0"
undo_tablespace = "UNDOTBS1"
remote_login_passwordfile= "EXCLUSIVE"
db_domain = ""
audit_file_dest = "/u01/app/oracle/admin/yy/adump"
audit_trail = "DB"
db_name = "yy"
open_cursors = 300
pga_aggregate_target = 294M
diagnostic_dest = "/u01/app/oracle"
注:该步骤说明在数据库启动到numount阶段就需要参数文件。

5.在第四步创建好文本参数文件后,以SYS身份连接到数据库,创建二进制参数文件,启动数据库。
export ORACLE_SID=yy
sqlplus / as sysdba
create spfile from pfile;
startup
报错:ORA-00205 控制文件错误
查看数据库的状态:数据库处于STARTED状态。
该步骤说明:在启动到nomount阶段时,只要参数文件无误即可。
在mount数据库时,需要用到控制文件。

6.修改参数文件中控制文件的位置:
alter system set control_files='/u01/app/oracle/oradata/tt/control01.ctl',
'/u01/app/oracle/oradata/tt/control02.ctl' scope=spfile;

7.上一步修改完成后关闭数据库,再次启动。
shutdown abort;
startup nomount; 成功
alter database mount; 成功
alter database opne; 报错
报错:ORA-01157不能找到数据文件,原因是数据文件已经被移动到其他路径。

8.修改数据库,重新指定数据库的数据文件的位置:(所有的数据文件和日志文件均要执行,可以写脚本来完成)
alter database rename file '/u01/app/oracle/oradata/tt/undotbs01.dbf'
to'/u01/app/oracle/oradata/yy/undotbs01.dbf';

9.重新指定路径成功后打开数据库
alter database open;

dump目录/u01/app/oracle/diag/rdbms/yy/yy/trace

修改参数control_files=新路径

启动数据库 mount成功 open报错

修改数据文件,临时文件,数据文件

/u01/app/oracle/oradata/rr/control01.ctl
/u01/app/oracle/oradata/rr/control01.ctl

select 'alter database rename file '''||name||''''||chr(10)||' to''' ||
replace(name,'tt','yy')||''';' from v$datafile
union all
select 'alter database rename file '''||name||''''||chr(10)||' to''' ||
replace(name,'tt','yy')||''';' from v$tempfile
union all
select 'alter database rename file '''||member||''''||chr(10)||' to''' ||
replace(member,'tt','yy')||''';' from v$logfile ;

select 'alter database rename file '''||name||''''||chr(10)||' to '''||
'/newdb'||substr(name,instr(name,'/',-1))||';' from v$datafile;

段 segment

范围 extend
一次分配的,连续的,ORACLE块
一个段最少有一个范围,可以有很多个范围
范围有3种模式
1.建立对象时,分配的叫做初始范围
2.数据增长时,分配额外的范围
3.手工分配范围

conn / as sysdba
grant select any dictionary to scott
conn scott/tiger
select from dba_free_space where tablespace_name='USERS';
2.create table t1 as select
from emp;
create table t2 as select from emp;
3.select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T1';
4.insert into t1 select
from t1;
insert into t2 select * from t2;
select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T1';

select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T2';

手动分配空间:
alter table t1 allocate extent; 不指定大小,系统根据表已有大小分配。
alter table t1 allocate extent(size 2G); 指定大小
块 block

SET LONG 1000
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','T2') FROM DUAL;

CREATE TABLE T1 SEGMENT CREATION IMMEDIATE AS SELECT * FROM EMP where 0=9;

SHOW PARAMETER SEGMENT

ALTER SYSTEM SET deferred_segment_creation=FALSE;

范围回收3模式
1.手工回收未使用的范围(崭新的)
alter table t1 allocate extent(size 10m);
alter table t1 deallocate unused;

tabs=user_tables

select table_name,initial_extent from tabs where table_name='T2';
create table t2 storage(initial 1m) as select * from emp;

2.truncate table t1;(保留初始范围)
3.drop table t1 purge;(彻底删除空间)

alter table t2 allocate extent(size 10m);

select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T2';

DELETE
1.DML
2.产生大量的回退
3.产生大量日志
4.可以rollback
5.手工commit;
6.不回收空间
7.不回收高水位
8.可以有条件删除

TRUNCATE
1.DDL
2.产生少的回退
3.产生少量日志
4.不可以rollback
5.自动commit;
6.回收空间
7.回收高水位
8.不可以有条件删除

show parameter rec
alter system set recyclebin=off scope=spfile;

块:
数据库存储的基本空间,默认是8K,建库时指定

rowid行标识
是根据数据存在的位置计算出来的
18位64进制字符串

AAASdN AAE AAAACr AAA
对象 文件 块 行

select rowid,ename,dbms_rowid.rowid_block_number(rowid) block# from emp;

ROWID_BLOCK_NUMBER
ROWID_OBJECT
ROWID_RELATIVE_FNO
ROWID_ROW_NUMBER

select rowid,ename,dbms_rowid.rowid_block_number(rowid) a,
dbms_rowid.ROWID_OBJECT(rowid) o,
dbms_rowid.ROWID_RELATIVE_FNO(rowid) f,
dbms_rowid.ROWID_ROW_NUMBER(rowid) r from emp;

select dbms_rowid.rowid_create(0,75335,4,151,0),
dbms_rowid.rowid_create(1,75335,4,151,0) from dual;

conn scott/123456;
drop table t1 purge;
create table t1 as select from emp;
insert into t1 select
from emp where deptno=10;
commit;
select ename,sal from t1 order by 1;
delete from t1 wai where rowid<(select max(rowid) from t1 nei where wai.ename=nei.ename);

ERROR:
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
ORA-01075: you are currently logged on

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...