我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ORACLE手工建库

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ORACLE手工建库

手动建库:
找到官方文档,打开主索引
找到管理--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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ORACLE手工建库

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle 11g如何进行手工建库

这篇文章给大家介绍oracle 11g如何进行手工建库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。工作环境: ORE 6.5手工建库是作为dba必须掌握的一个基本技能,它使清楚的认识oracle的目录结构、oracl
2023-06-06

怎样手工方式建立 ORACLE数据库

这篇文章将为大家详细讲解有关怎样手工方式建立 ORACLE数据库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。通过dbca方式创建Oracle数据库是最常见的方法,除此之外如果对数据库的创建
2023-06-06

oracle手工建库后rman无法启用该怎么办

oracle手工建库后rman无法启用该怎么办,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。oracle手工建库后rman无法启用,报RMAN-04015错误解
2023-06-06

Oracle手动建库安装部署的方法

这篇文章主要介绍了Oracle手动建库安装部署的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。步骤1 指定SIDOracle_SID是用于区别数据库实例的环境变量。ORA
2023-06-14

编程热搜

目录